| OLD | NEW |
| 1 #!/bin/bash | 1 #!/bin/bash |
| 2 | 2 |
| 3 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 3 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 4 # Use of this source code is governed by a BSD-style license that can be | 4 # Use of this source code is governed by a BSD-style license that can be |
| 5 # found in the LICENSE file. | 5 # found in the LICENSE file. |
| 6 | 6 |
| 7 # Defines functions for envsetup.sh which sets up environment for building | 7 # Defines functions for envsetup.sh which sets up environment for building |
| 8 # Chromium on Android. The build can be either use the Android NDK/SDK or | 8 # Chromium on Android. The build can be either use the Android NDK/SDK or |
| 9 # android source tree. Each has a unique init function which calls functions | 9 # android source tree. Each has a unique init function which calls functions |
| 10 # prefixed with "common_" that is common for both environment setups. | 10 # prefixed with "common_" that is common for both environment setups. |
| 11 | 11 |
| 12 ################################################################################ | 12 ################################################################################ |
| 13 # Check to make sure the toolchain exists for the NDK version. | 13 # Check to make sure the toolchain exists for the NDK version. |
| 14 ################################################################################ | 14 ################################################################################ |
| 15 common_check_toolchain() { | 15 common_check_toolchain() { |
| 16 if [[ ! -d "${ANDROID_TOOLCHAIN}" ]]; then | 16 if [[ ! -d "${ANDROID_TOOLCHAIN}" ]]; then |
| 17 echo "Can not find Android toolchain in ${ANDROID_TOOLCHAIN}." >& 2 | 17 echo "Can not find Android toolchain in ${ANDROID_TOOLCHAIN}." >& 2 |
| 18 echo "The NDK version might be wrong." >& 2 | 18 echo "The NDK version might be wrong." >& 2 |
| 19 return 1 | 19 return 1 |
| 20 fi | 20 fi |
| 21 } | 21 } |
| 22 | 22 |
| 23 ################################################################################ | 23 ################################################################################ |
| 24 # Exports environment variables common to both sdk and non-sdk build (e.g. PATH) | 24 # Exports environment variables common to both sdk and non-sdk build (e.g. PATH) |
| 25 # based on CHROME_SRC and ANDROID_TOOLCHAIN, along with DEFINES for GYP_DEFINES. | 25 # based on CHROME_SRC and ANDROID_TOOLCHAIN, along with DEFINES for GYP_DEFINES. |
| 26 ################################################################################ | 26 ################################################################################ |
| 27 common_vars_defines() { | 27 common_vars_defines() { |
| 28 | |
| 29 # Set toolchain path according to product architecture. | 28 # Set toolchain path according to product architecture. |
| 30 toolchain_arch="arm-linux-androideabi" | 29 case "${TARGET_ARCH}" in |
| 31 if [[ "${TARGET_PRODUCT}" =~ .*x86.* ]]; then | 30 "arm") |
| 32 toolchain_arch="x86" | 31 toolchain_arch="arm-linux-androideabi" |
| 33 fi | 32 ;; |
| 33 "x86") |
| 34 toolchain_arch="x86" |
| 35 ;; |
| 36 *) |
| 37 echo "TARGET_ARCH: ${TARGET_ARCH} is not supported." >& 2 |
| 38 print_usage |
| 39 return 1 |
| 40 ;; |
| 41 esac |
| 34 | 42 |
| 35 toolchain_version="4.6" | 43 toolchain_version="4.6" |
| 36 # We directly set the gcc_version since we know what we use, and it should | 44 # We directly set the gcc_version since we know what we use, and it should |
| 37 # be set to xx instead of x.x. Refer the output of compiler_version.py. | 45 # be set to xx instead of x.x. Refer the output of compiler_version.py. |
| 38 gcc_version="46" | 46 gcc_version="46" |
| 39 toolchain_target=$(basename \ | 47 toolchain_target=$(basename \ |
| 40 ${ANDROID_NDK_ROOT}/toolchains/${toolchain_arch}-${toolchain_version}) | 48 ${ANDROID_NDK_ROOT}/toolchains/${toolchain_arch}-${toolchain_version}) |
| 41 toolchain_path="${ANDROID_NDK_ROOT}/toolchains/${toolchain_target}"\ | 49 toolchain_path="${ANDROID_NDK_ROOT}/toolchains/${toolchain_target}"\ |
| 42 "/prebuilt/${toolchain_dir}/bin/" | 50 "/prebuilt/${toolchain_dir}/bin/" |
| 43 | 51 |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 93 | 101 |
| 94 # The order file specifies the order of symbols in the .text section of the | 102 # The order file specifies the order of symbols in the .text section of the |
| 95 # shared library, libchromeview.so. The file is an order list of section | 103 # shared library, libchromeview.so. The file is an order list of section |
| 96 # names and the library is linked with option | 104 # names and the library is linked with option |
| 97 # --section-ordering-file=<orderfile>. The order file is updated by profiling | 105 # --section-ordering-file=<orderfile>. The order file is updated by profiling |
| 98 # startup after compiling with the order_profiling=1 GYP_DEFINES flag. | 106 # startup after compiling with the order_profiling=1 GYP_DEFINES flag. |
| 99 ORDER_DEFINES="order_text_section=${CHROME_SRC}/orderfiles/orderfile.out" | 107 ORDER_DEFINES="order_text_section=${CHROME_SRC}/orderfiles/orderfile.out" |
| 100 | 108 |
| 101 # The following defines will affect ARM code generation of both C/C++ compiler | 109 # The following defines will affect ARM code generation of both C/C++ compiler |
| 102 # and V8 mksnapshot. | 110 # and V8 mksnapshot. |
| 103 case "${TARGET_PRODUCT}" in | 111 case "${TARGET_ARCH}" in |
| 104 "passion"|"soju"|"sojua"|"sojus"|"yakju"|"mysid"|"nakasi") | 112 "arm") |
| 105 DEFINES+=" arm_neon=1 armv7=1 arm_thumb=1" | |
| 106 DEFINES+=" ${ORDER_DEFINES}" | |
| 107 TARGET_ARCH="arm" | |
| 108 ;; | |
| 109 "trygon"|"tervigon") | |
| 110 DEFINES+=" arm_neon=0 armv7=1 arm_thumb=1 arm_fpu=vfpv3-d16" | 113 DEFINES+=" arm_neon=0 armv7=1 arm_thumb=1 arm_fpu=vfpv3-d16" |
| 111 DEFINES+=" ${ORDER_DEFINES}" | 114 DEFINES+=" ${ORDER_DEFINES}" |
| 112 TARGET_ARCH="arm" | 115 DEFINES+=" target_arch=arm" |
| 113 ;; | 116 ;; |
| 114 "full") | 117 "x86") |
| 115 DEFINES+=" arm_neon=0 armv7=0 arm_thumb=1 arm_fpu=vfp" | |
| 116 TARGET_ARCH="arm" | |
| 117 ;; | |
| 118 *x86*) | |
| 119 # TODO(tedbo): The ia32 build fails on ffmpeg, so we disable it here. | 118 # TODO(tedbo): The ia32 build fails on ffmpeg, so we disable it here. |
| 120 DEFINES+=" use_libffmpeg=0" | 119 DEFINES+=" use_libffmpeg=0" |
| 121 | 120 |
| 122 host_arch=$(uname -m | sed -e \ | 121 host_arch=$(uname -m | sed -e \ |
| 123 's/i.86/ia32/;s/x86_64/x64/;s/amd64/x64/;s/arm.*/arm/;s/i86pc/ia32/') | 122 's/i.86/ia32/;s/x86_64/x64/;s/amd64/x64/;s/arm.*/arm/;s/i86pc/ia32/') |
| 124 DEFINES+=" host_arch=${host_arch}" | 123 DEFINES+=" host_arch=${host_arch}" |
| 125 TARGET_ARCH="x86" | |
| 126 ;; | |
| 127 *) | |
| 128 echo "TARGET_PRODUCT: ${TARGET_PRODUCT} is not supported." >& 2 | |
| 129 return 1 | |
| 130 esac | |
| 131 | |
| 132 case "${TARGET_ARCH}" in | |
| 133 "arm") | |
| 134 DEFINES+=" target_arch=arm" | |
| 135 ;; | |
| 136 "x86") | |
| 137 DEFINES+=" target_arch=ia32" | 124 DEFINES+=" target_arch=ia32" |
| 138 ;; | 125 ;; |
| 139 *) | 126 *) |
| 140 echo "TARGET_ARCH: ${TARGET_ARCH} is not supported." >& 2 | 127 echo "TARGET_ARCH: ${TARGET_ARCH} is not supported." >& 2 |
| 128 print_usage |
| 141 return 1 | 129 return 1 |
| 142 esac | 130 esac |
| 143 | 131 |
| 144 DEFINES+=" android_gdbserver=${ANDROID_NDK_ROOT}/prebuilt/\ | 132 DEFINES+=" android_gdbserver=${ANDROID_NDK_ROOT}/prebuilt/\ |
| 145 android-${TARGET_ARCH}/gdbserver/gdbserver" | 133 android-${TARGET_ARCH}/gdbserver/gdbserver" |
| 146 } | 134 } |
| 147 | 135 |
| 148 | 136 |
| 149 ################################################################################ | 137 ################################################################################ |
| 150 # Exports common GYP variables based on variable DEFINES and CHROME_SRC. | 138 # Exports common GYP variables based on variable DEFINES and CHROME_SRC. |
| 151 ################################################################################ | 139 ################################################################################ |
| 152 common_gyp_vars() { | 140 common_gyp_vars() { |
| 153 export GYP_DEFINES="${DEFINES}" | 141 export GYP_DEFINES="${DEFINES}" |
| 154 | 142 |
| 155 # Set GYP_GENERATORS to make-android if it's currently unset or null. | 143 # Set GYP_GENERATORS to make-android if it's currently unset or null. |
| 156 export GYP_GENERATORS="${GYP_GENERATORS:-make-android}" | 144 export GYP_GENERATORS="${GYP_GENERATORS:-make-android}" |
| 157 | 145 |
| 158 # Use our All target as the default | 146 # Use our All target as the default |
| 159 export GYP_GENERATOR_FLAGS="${GYP_GENERATOR_FLAGS} default_target=All" | 147 export GYP_GENERATOR_FLAGS="${GYP_GENERATOR_FLAGS} default_target=All" |
| 160 | 148 |
| 161 # We want to use our version of "all" targets. | 149 # We want to use our version of "all" targets. |
| 162 export CHROMIUM_GYP_FILE="${CHROME_SRC}/build/all_android.gyp" | 150 export CHROMIUM_GYP_FILE="${CHROME_SRC}/build/all_android.gyp" |
| 163 } | 151 } |
| 164 | 152 |
| 165 | 153 |
| 166 ################################################################################ | 154 ################################################################################ |
| 155 # Prints out help message on usage. |
| 156 ################################################################################ |
| 157 print_usage() { |
| 158 echo "usage: ${0##*/} [--target-arch=value] [--help]" >& 2 |
| 159 echo "--target-arch=value target CPU architecture (arm=default, x86)" >& 2 |
| 160 echo "--help this help" >& 2 |
| 161 } |
| 162 |
| 163 ################################################################################ |
| 164 # Process command line options. |
| 165 # --target-arch= Specifices target CPU architecture. Currently supported |
| 166 # architectures are "arm" (default), and "x86". |
| 167 # --help Prints out help message. |
| 168 ################################################################################ |
| 169 process_options() { |
| 170 while [[ $1 ]]; do |
| 171 case "$1" in |
| 172 --target-arch=*) |
| 173 target_arch="$(echo "$1" | sed 's/^[^=]*=//')" |
| 174 ;; |
| 175 --help) |
| 176 print_usage |
| 177 return 1 |
| 178 ;; |
| 179 *) |
| 180 # Ignore other command line options |
| 181 echo "Unknown option: $1" |
| 182 ;; |
| 183 esac |
| 184 shift |
| 185 done |
| 186 |
| 187 # Sets TARGET_ARCH. Defaults to arm if not specified. |
| 188 TARGET_ARCH=${target_arch:-arm} |
| 189 } |
| 190 |
| 191 ################################################################################ |
| 167 # Initializes environment variables for NDK/SDK build. Only Android NDK Revision | 192 # Initializes environment variables for NDK/SDK build. Only Android NDK Revision |
| 168 # 7 on Linux or Mac is offically supported. To run this script, the system | 193 # 7 on Linux or Mac is offically supported. To run this script, the system |
| 169 # environment ANDROID_NDK_ROOT must be set to Android NDK's root path. The | 194 # environment ANDROID_NDK_ROOT must be set to Android NDK's root path. The |
| 170 # ANDROID_SDK_ROOT only needs to be set to override the default SDK which is in | 195 # ANDROID_SDK_ROOT only needs to be set to override the default SDK which is in |
| 171 # the tree under $ROOT/src/third_party/android_tools/sdk. | 196 # the tree under $ROOT/src/third_party/android_tools/sdk. |
| 172 # To build Chromium for Android with NDK/SDK follow the steps below: | 197 # To build Chromium for Android with NDK/SDK follow the steps below: |
| 173 # > export ANDROID_NDK_ROOT=<android ndk root> | 198 # > export ANDROID_NDK_ROOT=<android ndk root> |
| 174 # > export ANDROID_SDK_ROOT=<android sdk root> # to override the default sdk | 199 # > export ANDROID_SDK_ROOT=<android sdk root> # to override the default sdk |
| 175 # > . build/android/envsetup.sh | 200 # > . build/android/envsetup.sh |
| 176 # > make | 201 # > make |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 274 export GYP_DEFINES="${DEFINES}" | 299 export GYP_DEFINES="${DEFINES}" |
| 275 | 300 |
| 276 export GYP_GENERATORS="android" | 301 export GYP_GENERATORS="android" |
| 277 | 302 |
| 278 export GYP_GENERATOR_FLAGS="${GYP_GENERATOR_FLAGS} default_target=All" | 303 export GYP_GENERATOR_FLAGS="${GYP_GENERATOR_FLAGS} default_target=All" |
| 279 export GYP_GENERATOR_FLAGS="${GYP_GENERATOR_FLAGS} limit_to_target_all=1" | 304 export GYP_GENERATOR_FLAGS="${GYP_GENERATOR_FLAGS} limit_to_target_all=1" |
| 280 export GYP_GENERATOR_FLAGS="${GYP_GENERATOR_FLAGS} auto_regeneration=0" | 305 export GYP_GENERATOR_FLAGS="${GYP_GENERATOR_FLAGS} auto_regeneration=0" |
| 281 | 306 |
| 282 export CHROMIUM_GYP_FILE="${CHROME_SRC}/android_webview/all_webview.gyp" | 307 export CHROMIUM_GYP_FILE="${CHROME_SRC}/android_webview/all_webview.gyp" |
| 283 } | 308 } |
| OLD | NEW |