Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 | |
|
cshapiro
2012/08/07 22:39:40
Any reason why #!/bin/bash isn't the first line?
jackpal
2012/08/08 00:26:19
This script is designed to be _sourced_ only, rath
| |
| 2 #!/bin/bash | |
| 3 | |
| 4 # Copyright (c) 2012 The Dart Authors. All rights reserved. | |
| 5 # Use of this source code is governed by a BSD-style license that can be | |
| 6 # found in the LICENSE file. | |
| 7 | |
| 8 # Sets up environment for building Dart on Android. Only Android NDK, | |
| 9 # Revision 8b on Linux or Mac is offically supported. | |
| 10 # | |
| 11 # To run this script, the system environment ANDROID_NDK_ROOT must be set | |
| 12 # to Android NDK's root path. | |
| 13 # | |
| 14 # If current path isn't Dart's root directory, DART_ROOT must be set | |
| 15 # to Dart's root directory. | |
| 16 | |
| 17 if [ ! -d "${ANDROID_NDK_ROOT}" ]; then | |
| 18 echo "ANDROID_NDK_ROOT must be set to the path of Android NDK, Revision 6b." \ | |
| 19 >& 2 | |
| 20 echo "which could be installed by" >& 2 | |
| 21 echo "<chromium_tree>/src/build/install-build-deps-android-sdk.sh" >& 2 | |
| 22 return 1 | |
| 23 fi | |
| 24 | |
| 25 if [ ! -d "${ANDROID_SDK_ROOT}" ]; then | |
| 26 echo "ANDROID_SDK_ROOT must be set to the path of Android SDK, Android 3.2." \ | |
| 27 >& 2 | |
| 28 echo "which could be installed by" >& 2 | |
| 29 echo "<chromium_tree>/src/build/install-build-deps-android-sdk.sh" >& 2 | |
| 30 return 1 | |
| 31 fi | |
| 32 | |
| 33 host_os=$(uname -s | sed -e 's/Linux/linux/;s/Darwin/mac/') | |
| 34 | |
| 35 case "${host_os}" in | |
| 36 "linux") | |
| 37 toolchain_dir="linux-x86" | |
| 38 ;; | |
| 39 "mac") | |
| 40 toolchain_dir="darwin-x86" | |
| 41 ;; | |
| 42 *) | |
| 43 echo "Host platform ${host_os} is not supported" >& 2 | |
| 44 return 1 | |
| 45 esac | |
| 46 | |
| 47 TARGET_PRODUCT="x86" | |
| 48 | |
| 49 # The following defines will affect ARM code generation of both C/C++ compiler | |
| 50 # and V8 mksnapshot. | |
| 51 case "${TARGET_PRODUCT-full}" in | |
| 52 "full") | |
| 53 DEFINES=" target_arch=arm" | |
| 54 DEFINES+=" arm_neon=0 armv7=1 arm_thumb=1 arm_fpu=vfpv3-d16" | |
| 55 toolchain_arch="arm-linux-androideabi-4.4.3" | |
| 56 ;; | |
| 57 *x86*) | |
| 58 DEFINES=" target_arch=ia32 use_libffmpeg=0" | |
| 59 toolchain_arch="x86-4.4.3" | |
| 60 ;; | |
| 61 *) | |
| 62 echo "TARGET_PRODUCT: ${TARGET_PRODUCT} is not supported." >& 2 | |
| 63 return 1 | |
| 64 esac | |
| 65 | |
| 66 # If we are building NDK/SDK, and in the upstream (open source) tree, | |
| 67 # define a special variable for bringup purposes. | |
| 68 case "${ANDROID_BUILD_TOP-undefined}" in | |
| 69 "undefined") | |
| 70 DEFINES+=" android_upstream_bringup=1" | |
| 71 ;; | |
| 72 esac | |
| 73 | |
| 74 toolchain_path="${ANDROID_NDK_ROOT}/toolchains/${toolchain_arch}/prebuilt/" | |
| 75 export ANDROID_TOOLCHAIN="${toolchain_path}/${toolchain_dir}/bin/" | |
| 76 | |
| 77 if [ ! -d "${ANDROID_TOOLCHAIN}" ]; then | |
| 78 echo "Can not find Android toolchain in ${ANDROID_TOOLCHAIN}." >& 2 | |
| 79 echo "The NDK version might be wrong." >& 2 | |
| 80 return 1 | |
| 81 fi | |
| 82 | |
| 83 export ANDROID_SDK_VERSION="9" | |
| 84 | |
| 85 # Needed by android antfiles when creating apks. | |
| 86 export ANDROID_SDK_HOME=${ANDROID_SDK_ROOT} | |
| 87 | |
| 88 # Add Android SDK/NDK tools to system path. | |
| 89 export PATH=$PATH:${ANDROID_NDK_ROOT} | |
| 90 export PATH=$PATH:${ANDROID_SDK_ROOT}/tools | |
| 91 export PATH=$PATH:${ANDROID_SDK_ROOT}/platform-tools | |
| 92 # Must have tools like arm-linux-androideabi-gcc on the path for ninja | |
| 93 export PATH=$PATH:${ANDROID_TOOLCHAIN} | |
| 94 | |
| 95 CURRENT_DIR="$(readlink -f ${PWD})" | |
| 96 if [ -z "${DART_ROOT}" ]; then | |
| 97 # If $DART_ROOT was not set, assume current directory is DART_ROOT. | |
| 98 export DART_ROOT="${CURRENT_DIR}" | |
| 99 fi | |
| 100 | |
| 101 if [ "${CURRENT_DIR/"${DART_ROOT}"/}" == "${CURRENT_DIR}" ]; then | |
| 102 # If current directory is not in $DART_ROOT, it might be set for other | |
| 103 # source tree. If $DART_ROOT was set correctly and we are in the correct | |
| 104 # directory, "${CURRENT_DIR/"${DART_ROOT}"/}" will be "". | |
| 105 # Otherwise, it will equal to "${CURRENT_DIR}" | |
| 106 echo "Warning: Current directory is out of DART_ROOT, it may not be \ | |
| 107 the one you want." | |
| 108 echo "${DART_ROOT}" | |
| 109 fi | |
| 110 | |
| 111 if [ ! -d "${DART_ROOT}" ]; then | |
| 112 echo "DART_ROOT must be set to the path of Chrome source code." >& 2 | |
| 113 return 1 | |
| 114 fi | |
| 115 | |
| 116 # Add Dart Android development scripts to system path. | |
| 117 # Must be after DART_ROOT is set. | |
| 118 export PATH=$PATH:${DART_ROOT}/tools/android | |
| 119 | |
| 120 ANDROID_GOMA_WRAPPER="" | |
| 121 if [[ -d $GOMA_DIR ]]; then | |
| 122 ANDROID_GOMA_WRAPPER="$GOMA_DIR/gomacc" | |
| 123 fi | |
| 124 export ANDROID_GOMA_WRAPPER | |
| 125 | |
| 126 export CC_target=$(basename ${ANDROID_TOOLCHAIN}/*-gcc) | |
| 127 export CXX_target=$(basename ${ANDROID_TOOLCHAIN}/*-g++) | |
| 128 export LINK_target=$(basename ${ANDROID_TOOLCHAIN}/*-gcc) | |
| 129 export AR_target=$(basename ${ANDROID_TOOLCHAIN}/*-ar) | |
| 130 | |
| 131 # Performs a gyp_chromium run to convert gyp->Makefile for android code. | |
| 132 # android_gyp() { | |
| 133 # echo "GYP_GENERATORS set to '$GYP_GENERATORS'" | |
| 134 # "${DART_ROOT}/tools/generate_projects.py" "$@" | |
| 135 # } | |
| 136 | |
| 137 export OBJCOPY=$(echo ${ANDROID_TOOLCHAIN}/*-objcopy) | |
| 138 export STRIP=$(echo ${ANDROID_TOOLCHAIN}/*-strip) | |
| 139 | |
| 140 # The set of GYP_DEFINES to pass to gyp. Use 'readlink -e' on directories | |
| 141 # to canonicalize them (remove double '/', remove trailing '/', etc). | |
| 142 DEFINES+=" OS=android" | |
| 143 DEFINES+=" android_build_type=0" | |
| 144 DEFINES+=" host_os=${host_os}" | |
| 145 DEFINES+=" linux_fpic=1" | |
| 146 DEFINES+=" release_optimize=s" | |
| 147 DEFINES+=" linux_use_tcmalloc=0" | |
| 148 DEFINES+=" disable_nacl=1" | |
| 149 DEFINES+=" remoting=0" | |
| 150 DEFINES+=" p2p_apis=0" | |
| 151 DEFINES+=" enable_touch_events=1" | |
| 152 DEFINES+=" build_ffmpegsumo=0" | |
| 153 DEFINES+=" gtest_target_type=shared_library" | |
| 154 DEFINES+=" branding=Chromium" | |
| 155 DEFINES+=\ | |
| 156 " android_sdk=${ANDROID_SDK_ROOT}/platforms/android-${ANDROID_SDK_VERSION}" | |
| 157 DEFINES+=" android_sdk_tools=${ANDROID_SDK_ROOT}/platform-tools" | |
| 158 | |
| 159 export GYP_DEFINES="${DEFINES}" | |
| 160 | |
| 161 # Use the "android" flavor of the Makefile generator for both Linux and OS X. | |
| 162 export GYP_GENERATORS="make-android" | |
| 163 | |
| 164 # Use our All target as the default | |
| 165 export GYP_GENERATOR_FLAGS="${GYP_GENERATOR_FLAGS} default_target=All" | |
| 166 | |
| 167 # We want to use our version of "all" targets. | |
| 168 # export CHROMIUM_GYP_FILE="${DART_ROOT}/build/all_android.gyp" | |
| OLD | NEW |