| OLD | NEW |
| 1 #!/bin/bash | 1 #!/bin/bash |
| 2 # | 2 # |
| 3 # android_setup.sh: Sets environment variables used by other Android scripts. | 3 # android_setup.sh: Sets environment variables used by other Android scripts. |
| 4 | 4 |
| 5 # Parse the arguments for a DEVICE_ID. | 5 # Fail-fast if anything in the script fails. |
| 6 DEVICE_ID="" | 6 set -e |
| 7 DEVICE_SERIAL="" | 7 |
| 8 BUILDTYPE=${BUILDTYPE-Debug} |
| 9 |
| 8 while (( "$#" )); do | 10 while (( "$#" )); do |
| 9 if [[ $(echo "$1" | grep "^-d$") != "" ]]; | 11 if [[ "$1" == "-d" ]]; then |
| 10 then | |
| 11 DEVICE_ID=$2 | 12 DEVICE_ID=$2 |
| 12 shift | 13 shift |
| 13 elif [[ "$1" == "-s" ]]; | 14 elif [[ "$1" == "-s" ]]; then |
| 14 then | |
| 15 if [[ $# -lt 2 ]]; | |
| 16 then | |
| 17 echo "ERROR: missing serial number" | |
| 18 exit 1; | |
| 19 fi | |
| 20 DEVICE_SERIAL="-s $2" | 15 DEVICE_SERIAL="-s $2" |
| 21 shift | 16 shift |
| 22 elif [[ $(echo "$1" | grep "^BUILDTYPE=") != "" ]]; | 17 elif [[ "$1" == "-t" ]]; then |
| 23 then | 18 BUILDTYPE=$2 |
| 24 BUILDTYPE=${1##BUILDTYPE=} | 19 shift |
| 20 elif [[ "$1" == "--release" ]]; then |
| 21 BUILDTYPE=Release |
| 25 else | 22 else |
| 26 APP_ARGS=("${APP_ARGS[@]}" "${1}") | 23 APP_ARGS=("${APP_ARGS[@]}" "${1}") |
| 27 fi | 24 fi |
| 28 | |
| 29 shift | 25 shift |
| 30 done | 26 done |
| 31 | 27 |
| 32 function verbose { | 28 function verbose { |
| 33 if [[ -n $SKIA_ANDROID_VERBOSE_SETUP ]]; then | 29 if [[ -n $VERBOSE ]]; then |
| 34 echo $@ | 30 echo $@ |
| 35 fi | 31 fi |
| 36 } | 32 } |
| 37 | 33 |
| 38 function exportVar { | 34 function exportVar { |
| 39 NAME=$1 | 35 NAME=$1 |
| 40 VALUE=$2 | 36 VALUE=$2 |
| 41 verbose export $NAME=\"$VALUE\" | 37 verbose export $NAME=\"$VALUE\" |
| 42 export $NAME="$VALUE" | 38 export $NAME="$VALUE" |
| 43 } | 39 } |
| 44 | 40 |
| 45 SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" | 41 function absPath { |
| 42 (cd $1; pwd) |
| 43 } |
| 46 | 44 |
| 47 # A valid Android SDK installation is required to build the sample app. | 45 SCRIPT_DIR=$(absPath "$(dirname "$BASH_SOURCE[0]}")") |
| 46 |
| 48 if [ -z "$ANDROID_SDK_ROOT" ]; then | 47 if [ -z "$ANDROID_SDK_ROOT" ]; then |
| 49 ANDROID_TOOL=$(which android 2>/dev/null) | 48 if ANDROID_SDK_ROOT="$(dirname $(which android))/.."; then |
| 50 if [ -z "$ANDROID_TOOL" ]; then | 49 exportVar ANDROID_SDK_ROOT $ANDROID_SDK_ROOT |
| 51 echo "ERROR: Please define ANDROID_SDK_ROOT in your environment to point" | 50 else |
| 52 echo " to a valid Android SDK installation." | 51 echo "No ANDROID_SDK_ROOT set and can't auto detect it from location of and
roid binary." |
| 53 exit 1 | 52 exit 1 |
| 54 fi | 53 fi |
| 55 ANDROID_SDK_ROOT=$(cd $(dirname "$ANDROID_TOOL")/.. && pwd) | |
| 56 exportVar ANDROID_SDK_ROOT "$ANDROID_SDK_ROOT" | |
| 57 fi | |
| 58 | |
| 59 # ant is required to be installed on your system and in your PATH | |
| 60 which ant &> /dev/null | |
| 61 if [[ "$?" != "0" ]]; then | |
| 62 echo "ERROR: Unable to find ant. Please install it before proceeding." | |
| 63 exit 1 | |
| 64 fi | 54 fi |
| 65 | 55 |
| 66 # check to see that gclient sync ran successfully | 56 # check to see that gclient sync ran successfully |
| 67 THIRD_PARTY_EXTERNAL_DIR=${SCRIPT_DIR}/../third_party/externals | 57 THIRD_PARTY_EXTERNAL_DIR=${SCRIPT_DIR}/../third_party/externals |
| 68 if [ ! -d "$THIRD_PARTY_EXTERNAL_DIR" ]; then | 58 if [ ! -d "$THIRD_PARTY_EXTERNAL_DIR" ]; then |
| 69 echo "" | 59 echo "" |
| 70 echo "ERROR: Unable to find the required third_party dependencies needed
to build." | 60 echo "ERROR: Unable to find the required third_party dependencies needed
to build." |
| 71 echo " To fix this add the following line to your .gclient file an
d run 'gclient sync'" | 61 echo " To fix this add the following line to your .gclient file an
d run 'gclient sync'" |
| 72 echo " target_os = ['android']" | 62 echo " target_os = ['android']" |
| 73 echo "" | 63 echo "" |
| 74 exit 1; | 64 exit 1; |
| 75 fi | 65 fi |
| 76 | 66 |
| 77 # Helper function to determine and download the toolchain that we will be using. | 67 # Helper function to determine and download the toolchain that we will be using. |
| 78 setup_toolchain() { | 68 setup_toolchain() { |
| 79 API_LEVEL=14 | 69 API_LEVEL=14 |
| 80 | 70 NDK_REV=${NDK_REV-8e} |
| 81 if [[ -z "$NDK_REV" ]]; | 71 ANDROID_ARCH=${ANDROID_ARCH-arm} |
| 82 then | |
| 83 NDK_REV="8e" | |
| 84 fi | |
| 85 | |
| 86 if [[ -z "$ANDROID_ARCH" ]]; | |
| 87 then | |
| 88 ANDROID_ARCH="arm" | |
| 89 fi | |
| 90 | 72 |
| 91 TOOLCHAIN_DIR=${SCRIPT_DIR}/../toolchains | 73 TOOLCHAIN_DIR=${SCRIPT_DIR}/../toolchains |
| 92 if [ $(uname) == "Linux" ]; then | 74 if [ $(uname) == "Darwin" ]; then |
| 93 verbose "Using Linux toolchain." | |
| 94 TOOLCHAIN_TYPE=ndk-r$NDK_REV-$ANDROID_ARCH-linux_v$API_LEVEL | |
| 95 elif [ $(uname) == "Darwin" ]; then | |
| 96 verbose "Using Mac toolchain." | 75 verbose "Using Mac toolchain." |
| 97 TOOLCHAIN_TYPE=ndk-r$NDK_REV-$ANDROID_ARCH-mac_v$API_LEVEL | 76 TOOLCHAIN_TYPE=ndk-r$NDK_REV-$ANDROID_ARCH-mac_v$API_LEVEL |
| 98 else | 77 else |
| 99 verbose "Could not automatically determine toolchain! Defaulting to Linux." | 78 verbose "Using Linux toolchain." |
| 100 TOOLCHAIN_TYPE=ndk-r$NDK_REV-$ANDROID_ARCH-linux_v$API_LEVEL | 79 TOOLCHAIN_TYPE=ndk-r$NDK_REV-$ANDROID_ARCH-linux_v$API_LEVEL |
| 101 fi | 80 fi |
| 102 exportVar ANDROID_TOOLCHAIN ${TOOLCHAIN_DIR}/${TOOLCHAIN_TYPE}/bin | 81 exportVar ANDROID_TOOLCHAIN "${TOOLCHAIN_DIR}/${TOOLCHAIN_TYPE}/bin" |
| 103 | 82 |
| 104 # if the toolchain doesn't exist on your machine then we need to fetch it | 83 # if the toolchain doesn't exist on your machine then we need to fetch it |
| 105 if [ ! -d "$ANDROID_TOOLCHAIN" ]; then | 84 if [ ! -d "$ANDROID_TOOLCHAIN" ]; then |
| 106 # create the toolchain directory if needed | 85 mkdir -p $TOOLCHAIN_DIR |
| 107 if [ ! -d "$TOOLCHAIN_DIR" ]; then | |
| 108 mkdir $TOOLCHAIN_DIR | |
| 109 fi | |
| 110 # enter the toolchain directory then download, unpack, and remove the tarbal
l | 86 # enter the toolchain directory then download, unpack, and remove the tarbal
l |
| 111 pushd $TOOLCHAIN_DIR | 87 pushd $TOOLCHAIN_DIR |
| 112 TARBALL=ndk-r$NDK_REV-v$API_LEVEL.tgz | 88 TARBALL=ndk-r$NDK_REV-v$API_LEVEL.tgz |
| 113 | 89 |
| 114 echo "Downloading $TARBALL ..." | 90 ${SCRIPT_DIR}/download_toolchains.py \ |
| 115 ${SCRIPT_DIR}/download_toolchains.py http://chromium-skia-gm.commondatastora
ge.googleapis.com/android-toolchains/$TARBALL $TOOLCHAIN_DIR/$TARBALL | 91 http://chromium-skia-gm.commondatastorage.googleapis.com/android-toolcha
ins/$TARBALL \ |
| 116 if [[ "$?" != "0" ]]; then | 92 $TOOLCHAIN_DIR/$TARBALL |
| 117 echo "ERROR: Unable to download toolchain $TARBALL." | |
| 118 exit 1 | |
| 119 fi | |
| 120 | |
| 121 echo "Untarring $TOOLCHAIN_TYPE from $TARBALL." | |
| 122 tar -xzf $TARBALL $TOOLCHAIN_TYPE | 93 tar -xzf $TARBALL $TOOLCHAIN_TYPE |
| 123 echo "Removing $TARBALL" | |
| 124 rm $TARBALL | 94 rm $TARBALL |
| 125 popd | 95 popd |
| 126 fi | 96 fi |
| 127 | 97 |
| 128 if [ ! -d "$ANDROID_TOOLCHAIN" ]; then | 98 if [ ! -d "$ANDROID_TOOLCHAIN" ]; then |
| 129 echo "ERROR: unable to download/setup the required toolchain (${TOOLCHAIN_TY
PE})" | 99 echo "ERROR: unable to download/setup the required toolchain (${TOOLCHAIN_TY
PE})" |
| 130 return 1; | 100 return 1; |
| 131 fi | 101 fi |
| 132 | 102 |
| 133 verbose "The build is targeting NDK API level $API_LEVEL for use on Android 4.
0 (NDK Revision $NDK_REV) and above" | 103 verbose "Targeting NDK API $API_LEVEL for use on Android 4.0 (NDK Revision $ND
K_REV) and above" |
| 134 | 104 |
| 135 LS="/bin/ls" # Use directly to avoid any 'ls' alias that might be defined. | 105 GCC=$(command ls $ANDROID_TOOLCHAIN/*-gcc | head -n1) |
| 136 GCC=$($LS $ANDROID_TOOLCHAIN/*-gcc | head -n1) | |
| 137 if [ -z "$GCC" ]; then | 106 if [ -z "$GCC" ]; then |
| 138 echo "ERROR: Could not find Android cross-compiler in: $ANDROID_TOOLCHAIN" | 107 echo "ERROR: Could not find Android cross-compiler in: $ANDROID_TOOLCHAIN" |
| 139 return 1 | 108 return 1 |
| 140 fi | 109 fi |
| 141 | 110 |
| 142 # Remove the '-gcc' at the end to get the full toolchain prefix | 111 # Remove the '-gcc' at the end to get the full toolchain prefix |
| 143 ANDROID_TOOLCHAIN_PREFIX=${GCC%%-gcc} | 112 ANDROID_TOOLCHAIN_PREFIX=${GCC%%-gcc} |
| 144 | 113 |
| 145 if [[ -z "$ANDROID_MAKE_CCACHE" ]]; then | 114 CCACHE=${ANDROID_MAKE_CCACHE-$(which ccache || true)} |
| 146 export CC="$ANDROID_TOOLCHAIN_PREFIX-gcc" | 115 |
| 147 export CXX="$ANDROID_TOOLCHAIN_PREFIX-g++" | 116 exportVar CC "$CCACHE $ANDROID_TOOLCHAIN_PREFIX-gcc" |
| 148 export LINK="$ANDROID_TOOLCHAIN_PREFIX-gcc" | 117 exportVar CXX "$CCACHE $ANDROID_TOOLCHAIN_PREFIX-g++" |
| 149 else | 118 exportVar LINK "$CCACHE $ANDROID_TOOLCHAIN_PREFIX-gcc" |
| 150 export CC="$ANDROID_MAKE_CCACHE $ANDROID_TOOLCHAIN_PREFIX-gcc" | 119 |
| 151 export CXX="$ANDROID_MAKE_CCACHE $ANDROID_TOOLCHAIN_PREFIX-g++" | 120 exportVar AR "$ANDROID_TOOLCHAIN_PREFIX-ar" |
| 152 export LINK="$ANDROID_MAKE_CCACHE $ANDROID_TOOLCHAIN_PREFIX-gcc" | 121 exportVar RANLIB "$ANDROID_TOOLCHAIN_PREFIX-ranlib" |
| 153 fi | 122 exportVar OBJCOPY "$ANDROID_TOOLCHAIN_PREFIX-objcopy" |
| 154 export AR="$ANDROID_TOOLCHAIN_PREFIX-ar" | 123 exportVar STRIP "$ANDROID_TOOLCHAIN_PREFIX-strip" |
| 155 export RANLIB="$ANDROID_TOOLCHAIN_PREFIX-ranlib" | 124 |
| 156 export OBJCOPY="$ANDROID_TOOLCHAIN_PREFIX-objcopy" | 125 # Create symlinks for nm & readelf and add them to the path so that the ninja |
| 157 export STRIP="$ANDROID_TOOLCHAIN_PREFIX-strip" | 126 # build uses them instead of attempting to use the one on the system. |
| 158 | 127 # This is required to build using ninja on a Mac. |
| 159 # create symlinks for nm & readelf and add them to the path so that the ninja | |
| 160 # build uses them instead of attempting to use the one on the system | |
| 161 ln -sf $ANDROID_TOOLCHAIN_PREFIX-nm $ANDROID_TOOLCHAIN/nm | 128 ln -sf $ANDROID_TOOLCHAIN_PREFIX-nm $ANDROID_TOOLCHAIN/nm |
| 162 ln -sf $ANDROID_TOOLCHAIN_PREFIX-readelf $ANDROID_TOOLCHAIN/readelf | 129 ln -sf $ANDROID_TOOLCHAIN_PREFIX-readelf $ANDROID_TOOLCHAIN/readelf |
| 163 export PATH=$ANDROID_TOOLCHAIN:$PATH | 130 exportVar PATH $ANDROID_TOOLCHAIN:$PATH |
| 164 | |
| 165 } | 131 } |
| 166 | 132 |
| 167 # Helper function to configure the GYP defines to the appropriate values | 133 # Helper function to configure the GYP defines to the appropriate values |
| 168 # based on the target device. | 134 # based on the target device. |
| 169 setup_device() { | 135 setup_device() { |
| 170 DEFINES="OS=android" | 136 DEFINES="OS=android" |
| 171 DEFINES="${DEFINES} host_os=$(uname -s | sed -e 's/Linux/linux/;s/Darwin/mac/'
)" | 137 DEFINES="${DEFINES} host_os=$(uname -s | sed -e 's/Linux/linux/;s/Darwin/mac/'
)" |
| 172 DEFINES="${DEFINES} skia_os=android" | 138 DEFINES="${DEFINES} skia_os=android" |
| 173 DEFINES="${DEFINES} android_base=${SCRIPT_DIR}/.." | 139 DEFINES="${DEFINES} android_base=$(absPath ${SCRIPT_DIR}/..)" |
| 174 if [[ "$GYP_DEFINES" != *skia_shared_lib=* ]]; then | 140 if [[ "$GYP_DEFINES" != *skia_shared_lib=* ]]; then |
| 175 DEFINES="${DEFINES} skia_shared_lib=1" | 141 DEFINES="${DEFINES} skia_shared_lib=1" |
| 176 fi | 142 fi |
| 177 | 143 |
| 178 # Setup the build variation depending on the target device | 144 # Setup the build variation depending on the target device |
| 179 TARGET_DEVICE="$1" | 145 TARGET_DEVICE="$1" |
| 180 | 146 |
| 181 if [ -z "$TARGET_DEVICE" ]; then | 147 if [ -z "$TARGET_DEVICE" ]; then |
| 182 if [ -f .android_config ]; then | 148 if [ -f .android_config ]; then |
| 183 TARGET_DEVICE=$(cat .android_config) | 149 TARGET_DEVICE=$(cat .android_config) |
| 184 verbose "INFO: no target device was specified so using the device (${TARGE
T_DEVICE}) from the most recent build" | 150 verbose "no target device (-d), using ${TARGET_DEVICE} from most recent bu
ild" |
| 185 else | 151 else |
| 186 TARGET_DEVICE="arm_v7_thumb" | 152 TARGET_DEVICE="arm_v7_thumb" |
| 187 verbose "INFO: no target device type was specified so using the default '$
{TARGET_DEVICE}'" | 153 verbose "no target device (-d), using ${TARGET_DEVICE}" |
| 188 fi | 154 fi |
| 189 fi | 155 fi |
| 190 | 156 |
| 191 case $TARGET_DEVICE in | 157 case $TARGET_DEVICE in |
| 192 nexus_s) | 158 nexus_s) |
| 193 DEFINES="${DEFINES} skia_arch_type=arm arm_neon=1 arm_version=7 arm_thumb=
1" | 159 DEFINES="${DEFINES} skia_arch_type=arm arm_neon=1 arm_version=7 arm_thumb=
1" |
| 194 DEFINES="${DEFINES} skia_resource_cache_mb_limit=24" | 160 DEFINES="${DEFINES} skia_resource_cache_mb_limit=24" |
| 195 ANDROID_ARCH="arm" | 161 ANDROID_ARCH="arm" |
| 196 ;; | 162 ;; |
| 197 nexus_4 | nexus_7 | nexus_10) | 163 nexus_4 | nexus_7 | nexus_10) |
| 198 DEFINES="${DEFINES} skia_arch_type=arm arm_neon=1 arm_version=7 arm_thumb=
1" | 164 DEFINES="${DEFINES} skia_arch_type=arm arm_neon=1 arm_version=7 arm_thumb=
1" |
| 199 ANDROID_ARCH="arm" | 165 ANDROID_ARCH="arm" |
| 200 ;; | 166 ;; |
| 201 xoom) | 167 xoom) |
| 202 DEFINES="${DEFINES} skia_arch_type=arm arm_neon=0 arm_version=7 arm_thumb=
1" | 168 DEFINES="${DEFINES} skia_arch_type=arm arm_neon=0 arm_version=7 arm_thumb=
1" |
| 203 ANDROID_ARCH="arm" | 169 ANDROID_ARCH="arm" |
| 204 ;; | 170 ;; |
| 205 galaxy_nexus) | 171 galaxy_nexus) |
| 206 DEFINES="${DEFINES} skia_arch_type=arm arm_neon=1 arm_version=7 arm_thumb=
1" | 172 DEFINES="${DEFINES} skia_arch_type=arm arm_neon=1 arm_version=7 arm_thumb=
1" |
| 207 DEFINES="${DEFINES} skia_resource_cache_mb_limit=32" | 173 DEFINES="${DEFINES} skia_resource_cache_mb_limit=32" |
| 208 ANDROID_ARCH="arm" | 174 ANDROID_ARCH="arm" |
| 209 ;; | 175 ;; |
| 210 intel_rhb) | 176 intel_rhb | razr_i | x86) |
| 211 DEFINES="${DEFINES} skia_arch_type=x86 skia_arch_width=32" | 177 DEFINES="${DEFINES} skia_arch_type=x86 skia_arch_width=32" |
| 212 DEFINES="${DEFINES} skia_resource_cache_mb_limit=32" | 178 DEFINES="${DEFINES} skia_resource_cache_mb_limit=32" |
| 213 ANDROID_ARCH="x86" | 179 ANDROID_ARCH="x86" |
| 214 ;; | |
| 215 razr_i) | |
| 216 DEFINES="${DEFINES} skia_arch_type=x86 skia_arch_width=32" | |
| 217 DEFINES="${DEFINES} skia_resource_cache_mb_limit=32" | |
| 218 ANDROID_ARCH="x86" | |
| 219 ;; | 180 ;; |
| 220 arm_v7) | 181 arm_v7) |
| 221 DEFINES="${DEFINES} skia_arch_type=arm arm_neon_optional=1 arm_version=7 a
rm_thumb=0" | 182 DEFINES="${DEFINES} skia_arch_type=arm arm_neon_optional=1 arm_version=7 a
rm_thumb=0" |
| 222 ANDROID_ARCH="arm" | 183 ANDROID_ARCH="arm" |
| 223 ;; | 184 ;; |
| 224 arm_v7_thumb | nvidia_logan) | 185 arm_v7_thumb | nvidia_logan) |
| 225 DEFINES="${DEFINES} skia_arch_type=arm arm_neon_optional=1 arm_version=7 a
rm_thumb=1" | 186 DEFINES="${DEFINES} skia_arch_type=arm arm_neon_optional=1 arm_version=7 a
rm_thumb=1" |
| 226 ANDROID_ARCH="arm" | 187 ANDROID_ARCH="arm" |
| 227 ;; | 188 ;; |
| 228 arm) | 189 arm) |
| 229 DEFINES="${DEFINES} skia_arch_type=arm arm_neon=0 arm_thumb=0" | 190 DEFINES="${DEFINES} skia_arch_type=arm arm_neon=0 arm_thumb=0" |
| 230 ANDROID_ARCH="arm" | 191 ANDROID_ARCH="arm" |
| 231 ;; | 192 ;; |
| 232 arm_thumb) | 193 arm_thumb) |
| 233 DEFINES="${DEFINES} skia_arch_type=arm arm_neon=0 arm_thumb=1" | 194 DEFINES="${DEFINES} skia_arch_type=arm arm_neon=0 arm_thumb=1" |
| 234 ANDROID_ARCH="arm" | 195 ANDROID_ARCH="arm" |
| 235 ;; | 196 ;; |
| 236 mips) | 197 mips) |
| 237 DEFINES="${DEFINES} skia_arch_type=mips skia_arch_width=32" | 198 DEFINES="${DEFINES} skia_arch_type=mips skia_arch_width=32" |
| 238 DEFINES="${DEFINES} skia_resource_cache_mb_limit=32" | 199 DEFINES="${DEFINES} skia_resource_cache_mb_limit=32" |
| 239 ANDROID_ARCH="mips" | 200 ANDROID_ARCH="mips" |
| 240 ;; | 201 ;; |
| 241 x86) | |
| 242 DEFINES="${DEFINES} skia_arch_type=x86 skia_arch_width=32" | |
| 243 DEFINES="${DEFINES} skia_resource_cache_mb_limit=32" | |
| 244 ANDROID_ARCH="x86" | |
| 245 ;; | |
| 246 *) | 202 *) |
| 247 echo -n "ERROR: unknown device specified ($TARGET_DEVICE), valid values: " | 203 echo "ERROR: unknown device $TARGET_DEVICE" |
| 248 echo "nexus_[s,4,7,10] xoom galaxy_nexus razr_i arm arm_thumb arm_v7 arm_v
7_thumb x86" | 204 exit 1 |
| 249 return 1; | |
| 250 ;; | 205 ;; |
| 251 esac | 206 esac |
| 252 | 207 |
| 253 verbose "The build is targeting the device: $TARGET_DEVICE" | 208 verbose "The build is targeting the device: $TARGET_DEVICE" |
| 254 export DEVICE_ID="$TARGET_DEVICE" | 209 exportVar DEVICE_ID $TARGET_DEVICE |
| 255 | 210 |
| 256 # Set up the toolchain. | |
| 257 setup_toolchain | 211 setup_toolchain |
| 258 if [[ "$?" != "0" ]]; then | 212 |
| 259 return 1 | |
| 260 fi | |
| 261 DEFINES="${DEFINES} android_toolchain=${TOOLCHAIN_TYPE}" | 213 DEFINES="${DEFINES} android_toolchain=${TOOLCHAIN_TYPE}" |
| 262 | 214 |
| 263 exportVar GYP_DEFINES "$DEFINES $GYP_DEFINES" | 215 exportVar GYP_DEFINES "$DEFINES $GYP_DEFINES" |
| 264 exportVar SKIA_OUT "out/config/android-${TARGET_DEVICE}" | 216 exportVar SKIA_OUT "out/config/android-${TARGET_DEVICE}" |
| 265 } | 217 } |
| 266 | 218 |
| 267 # adb_pull_if_needed(android_src, host_dst) | 219 # adb_pull_if_needed(android_src, host_dst) |
| 268 adb_pull_if_needed() { | 220 adb_pull_if_needed() { |
| 269 | 221 |
| 270 # get adb location | 222 # get adb location |
| 271 source $SCRIPT_DIR/utils/setup_adb.sh | 223 source $SCRIPT_DIR/utils/setup_adb.sh |
| 272 | 224 |
| 273 # read input params | 225 # read input params |
| 274 ANDROID_SRC="$1" | 226 ANDROID_SRC="$1" |
| 275 HOST_DST="$2" | 227 HOST_DST="$2" |
| 276 | 228 |
| 277 if [ -d $HOST_DST ]; | 229 if [ -d $HOST_DST ]; |
| 278 then | 230 then |
| 279 HOST_DST="${HOST_DST}/$(basename ${ANDROID_SRC})" | 231 HOST_DST="${HOST_DST}/$(basename ${ANDROID_SRC})" |
| 280 fi | 232 fi |
| 281 | 233 |
| 282 echo "HOST: $HOST_DST" | |
| 283 | 234 |
| 284 if [ -f $HOST_DST ]; | 235 if [ -f $HOST_DST ]; |
| 285 then | 236 then |
| 286 #get the MD5 for dst and src | 237 #get the MD5 for dst and src |
| 287 ANDROID_MD5=`$ADB $DEVICE_SERIAL shell md5 $ANDROID_SRC` | 238 ANDROID_MD5=`$ADB $DEVICE_SERIAL shell md5 $ANDROID_SRC` |
| 288 if [ $(uname) == "Darwin" ]; then | 239 if [ $(uname) == "Darwin" ]; then |
| 289 HOST_MD5=`md5 -q $HOST_DST` | 240 HOST_MD5=`md5 -q $HOST_DST` |
| 290 else | 241 else |
| 291 HOST_MD5=`md5sum $HOST_DST` | 242 HOST_MD5=`md5sum $HOST_DST` |
| 292 fi | 243 fi |
| 293 | 244 |
| 294 if [ "${ANDROID_MD5:0:32}" != "${HOST_MD5:0:32}" ]; | 245 if [ "${ANDROID_MD5:0:32}" != "${HOST_MD5:0:32}" ]; then |
| 295 then | 246 echo -n "$HOST_DST " |
| 296 $ADB $DEVICE_SERIAL pull $ANDROID_SRC $HOST_DST | 247 $ADB $DEVICE_SERIAL pull $ANDROID_SRC $HOST_DST |
| 297 # else | |
| 298 # echo "md5 match of android [$ANDROID_SRC] and host [$HOST_DST]" | |
| 299 fi | 248 fi |
| 300 else | 249 else |
| 250 echo -n "$HOST_DST " |
| 301 $ADB $DEVICE_SERIAL pull $ANDROID_SRC $HOST_DST | 251 $ADB $DEVICE_SERIAL pull $ANDROID_SRC $HOST_DST |
| 302 fi | 252 fi |
| 303 } | 253 } |
| 304 | 254 |
| 305 # adb_push_if_needed(host_src, android_dst) | 255 # adb_push_if_needed(host_src, android_dst) |
| 306 adb_push_if_needed() { | 256 adb_push_if_needed() { |
| 307 | 257 |
| 308 # get adb location | 258 # get adb location |
| 309 source $SCRIPT_DIR/utils/setup_adb.sh | 259 source $SCRIPT_DIR/utils/setup_adb.sh |
| 310 | 260 |
| 311 # read input params | 261 # read input params |
| 312 HOST_SRC="$1" | 262 HOST_SRC="$1" |
| 313 ANDROID_DST="$2" | 263 ANDROID_DST="$2" |
| 314 | 264 |
| 315 ANDROID_LS=`$ADB $DEVICE_SERIAL shell ls -ld $ANDROID_DST` | 265 ANDROID_LS=`$ADB $DEVICE_SERIAL shell ls -ld $ANDROID_DST` |
| 316 if [ "${ANDROID_LS:0:1}" == "d" ]; | 266 if [ "${ANDROID_LS:0:1}" == "d" ]; |
| 317 then | 267 then |
| 318 ANDROID_DST="${ANDROID_DST}/$(basename ${HOST_SRC})" | 268 ANDROID_DST="${ANDROID_DST}/$(basename ${HOST_SRC})" |
| 319 fi | 269 fi |
| 320 | 270 |
| 321 echo "ANDROID: $ANDROID_DST" | |
| 322 | 271 |
| 323 ANDROID_LS=`$ADB $DEVICE_SERIAL shell ls -ld $ANDROID_DST` | 272 ANDROID_LS=`$ADB $DEVICE_SERIAL shell ls -ld $ANDROID_DST` |
| 324 if [ "${ANDROID_LS:0:1}" == "-" ]; | 273 if [ "${ANDROID_LS:0:1}" == "-" ]; then |
| 325 then | |
| 326 #get the MD5 for dst and src | 274 #get the MD5 for dst and src |
| 327 ANDROID_MD5=`$ADB $DEVICE_SERIAL shell md5 $ANDROID_DST` | 275 ANDROID_MD5=`$ADB $DEVICE_SERIAL shell md5 $ANDROID_DST` |
| 328 if [ $(uname) == "Darwin" ]; then | 276 if [ $(uname) == "Darwin" ]; then |
| 329 HOST_MD5=`md5 -q $HOST_SRC` | 277 HOST_MD5=`md5 -q $HOST_SRC` |
| 330 else | 278 else |
| 331 HOST_MD5=`md5sum $HOST_SRC` | 279 HOST_MD5=`md5sum $HOST_SRC` |
| 332 fi | 280 fi |
| 333 | 281 |
| 334 if [ "${ANDROID_MD5:0:32}" != "${HOST_MD5:0:32}" ]; | 282 if [ "${ANDROID_MD5:0:32}" != "${HOST_MD5:0:32}" ]; then |
| 335 then | 283 echo -n "$ANDROID_DST " |
| 336 $ADB $DEVICE_SERIAL push $HOST_SRC $ANDROID_DST | 284 $ADB $DEVICE_SERIAL push $HOST_SRC $ANDROID_DST |
| 337 # else | |
| 338 # echo "md5 match of android [${ANDROID_DST}] and host [${HOST_SRC}]" | |
| 339 fi | 285 fi |
| 340 else | 286 else |
| 287 echo -n "$ANDROID_DST " |
| 341 $ADB $DEVICE_SERIAL push $HOST_SRC $ANDROID_DST | 288 $ADB $DEVICE_SERIAL push $HOST_SRC $ANDROID_DST |
| 342 fi | 289 fi |
| 343 } | 290 } |
| 344 | 291 |
| 345 # Set up the device. | |
| 346 setup_device "${DEVICE_ID}" | 292 setup_device "${DEVICE_ID}" |
| 347 if [[ "$?" != "0" ]]; then | |
| 348 exit 1 | |
| 349 fi | |
| OLD | NEW |