android_setup.sh revision 21a6d13a2bf1045607eb9fb6bf1da580f5d0ec4b
1#!/bin/bash 2# 3# android_setup.sh: Sets environment variables used by other Android scripts. 4 5# Fail-fast if anything in the script fails. 6set -e 7 8BUILDTYPE=${BUILDTYPE-Debug} 9 10while (( "$#" )); do 11 if [[ "$1" == "-d" ]]; then 12 DEVICE_ID=$2 13 shift 14 elif [[ "$1" == "-s" ]]; then 15 DEVICE_SERIAL="-s $2" 16 shift 17 elif [[ "$1" == "-t" ]]; then 18 BUILDTYPE=$2 19 shift 20 elif [[ "$1" == "--release" ]]; then 21 BUILDTYPE=Release 22 else 23 APP_ARGS=("${APP_ARGS[@]}" "${1}") 24 fi 25 shift 26done 27 28function verbose { 29 if [[ -n $VERBOSE ]]; then 30 echo $@ 31 fi 32} 33 34function exportVar { 35 NAME=$1 36 VALUE=$2 37 verbose export $NAME=\"$VALUE\" 38 export $NAME="$VALUE" 39} 40 41function absPath { 42 (cd $1; pwd) 43} 44 45SCRIPT_DIR=$(absPath "$(dirname "$BASH_SOURCE[0]}")") 46 47if [ -z "$ANDROID_SDK_ROOT" ]; then 48 if ANDROID_SDK_ROOT="$(dirname $(which android))/.."; then 49 exportVar ANDROID_SDK_ROOT $ANDROID_SDK_ROOT 50 else 51 echo "No ANDROID_SDK_ROOT set and can't auto detect it from location of android binary." 52 exit 1 53 fi 54fi 55 56# check to see that gclient sync ran successfully 57THIRD_PARTY_EXTERNAL_DIR=${SCRIPT_DIR}/../third_party/externals 58if [ ! -d "$THIRD_PARTY_EXTERNAL_DIR" ]; then 59 echo "" 60 echo "ERROR: Unable to find the required third_party dependencies needed to build." 61 echo " To fix this add the following line to your .gclient file and run 'gclient sync'" 62 echo " target_os = ['android']" 63 echo "" 64 exit 1; 65fi 66 67# Helper function to configure the GYP defines to the appropriate values 68# based on the target device. 69setup_device() { 70 DEFINES="OS=android" 71 DEFINES="${DEFINES} host_os=$(uname -s | sed -e 's/Linux/linux/;s/Darwin/mac/')" 72 DEFINES="${DEFINES} skia_os=android" 73 DEFINES="${DEFINES} android_base=$(absPath ${SCRIPT_DIR}/..)" 74 if [[ "$GYP_DEFINES" != *skia_shared_lib=* ]]; then 75 DEFINES="${DEFINES} skia_shared_lib=1" 76 fi 77 78 # Setup the build variation depending on the target device 79 TARGET_DEVICE="$1" 80 81 if [ -z "$TARGET_DEVICE" ]; then 82 if [ -f .android_config ]; then 83 TARGET_DEVICE=$(cat .android_config) 84 verbose "no target device (-d), using ${TARGET_DEVICE} from most recent build" 85 else 86 TARGET_DEVICE="arm_v7_thumb" 87 verbose "no target device (-d), using ${TARGET_DEVICE}" 88 fi 89 fi 90 91 case $TARGET_DEVICE in 92 nexus_s) 93 DEFINES="${DEFINES} skia_arch_type=arm arm_neon=1 arm_version=7 arm_thumb=1" 94 DEFINES="${DEFINES} skia_resource_cache_mb_limit=24" 95 ANDROID_ARCH="arm" 96 ;; 97 nexus_4 | nexus_7 | nexus_10) 98 DEFINES="${DEFINES} skia_arch_type=arm arm_neon=1 arm_version=7 arm_thumb=1" 99 ANDROID_ARCH="arm" 100 ;; 101 xoom) 102 DEFINES="${DEFINES} skia_arch_type=arm arm_neon=0 arm_version=7 arm_thumb=1" 103 ANDROID_ARCH="arm" 104 ;; 105 galaxy_nexus) 106 DEFINES="${DEFINES} skia_arch_type=arm arm_neon=1 arm_version=7 arm_thumb=1" 107 DEFINES="${DEFINES} skia_resource_cache_mb_limit=32" 108 ANDROID_ARCH="arm" 109 ;; 110 intel_rhb | razr_i | x86) 111 DEFINES="${DEFINES} skia_arch_type=x86 skia_arch_width=32" 112 DEFINES="${DEFINES} skia_resource_cache_mb_limit=32" 113 ANDROID_ARCH="x86" 114 ;; 115 arm_v7) 116 DEFINES="${DEFINES} skia_arch_type=arm arm_neon_optional=1 arm_version=7 arm_thumb=0" 117 ANDROID_ARCH="arm" 118 ;; 119 arm_v7_thumb | nvidia_logan) 120 DEFINES="${DEFINES} skia_arch_type=arm arm_neon_optional=1 arm_version=7 arm_thumb=1" 121 ANDROID_ARCH="arm" 122 ;; 123 arm) 124 DEFINES="${DEFINES} skia_arch_type=arm arm_neon=0 arm_thumb=0" 125 ANDROID_ARCH="arm" 126 ;; 127 arm_thumb) 128 DEFINES="${DEFINES} skia_arch_type=arm arm_neon=0 arm_thumb=1" 129 ANDROID_ARCH="arm" 130 ;; 131 mips) 132 DEFINES="${DEFINES} skia_arch_type=mips skia_arch_width=32" 133 DEFINES="${DEFINES} skia_resource_cache_mb_limit=32" 134 ANDROID_ARCH="mips" 135 ;; 136 *) 137 echo "ERROR: unknown device $TARGET_DEVICE" 138 exit 1 139 ;; 140 esac 141 142 verbose "The build is targeting the device: $TARGET_DEVICE" 143 exportVar DEVICE_ID $TARGET_DEVICE 144 145 # setup the appropriate cross compiling toolchains 146 source $SCRIPT_DIR/utils/setup_toolchain.sh 147 148 DEFINES="${DEFINES} android_toolchain=${TOOLCHAIN_TYPE}" 149 exportVar GYP_DEFINES "$DEFINES $GYP_DEFINES" 150 151 SKIA_SRC_DIR=$(cd "${SCRIPT_DIR}/../../.."; pwd) 152 DEFAULT_SKIA_OUT="${SKIA_SRC_DIR}/out/config/android-${TARGET_DEVICE}" 153 exportVar SKIA_OUT "${SKIA_OUT:-${DEFAULT_SKIA_OUT}}" 154} 155 156# adb_pull_if_needed(android_src, host_dst) 157adb_pull_if_needed() { 158 159 # get adb location 160 source $SCRIPT_DIR/utils/setup_adb.sh 161 162 # read input params 163 ANDROID_SRC="$1" 164 HOST_DST="$2" 165 166 if [ -d $HOST_DST ]; 167 then 168 HOST_DST="${HOST_DST}/$(basename ${ANDROID_SRC})" 169 fi 170 171 172 if [ -f $HOST_DST ]; 173 then 174 #get the MD5 for dst and src 175 ANDROID_MD5=`$ADB $DEVICE_SERIAL shell md5 $ANDROID_SRC` 176 if [ $(uname) == "Darwin" ]; then 177 HOST_MD5=`md5 -q $HOST_DST` 178 else 179 HOST_MD5=`md5sum $HOST_DST` 180 fi 181 182 if [ "${ANDROID_MD5:0:32}" != "${HOST_MD5:0:32}" ]; then 183 echo -n "$HOST_DST " 184 $ADB $DEVICE_SERIAL pull $ANDROID_SRC $HOST_DST 185 fi 186 else 187 echo -n "$HOST_DST " 188 $ADB $DEVICE_SERIAL pull $ANDROID_SRC $HOST_DST 189 fi 190} 191 192# adb_push_if_needed(host_src, android_dst) 193adb_push_if_needed() { 194 195 # get adb location 196 source $SCRIPT_DIR/utils/setup_adb.sh 197 198 # read input params 199 HOST_SRC="$1" 200 ANDROID_DST="$2" 201 202 ANDROID_LS=`$ADB $DEVICE_SERIAL shell ls -ld $ANDROID_DST` 203 if [ "${ANDROID_LS:0:1}" == "d" ]; 204 then 205 ANDROID_DST="${ANDROID_DST}/$(basename ${HOST_SRC})" 206 fi 207 208 209 ANDROID_LS=`$ADB $DEVICE_SERIAL shell ls -ld $ANDROID_DST` 210 if [ "${ANDROID_LS:0:1}" == "-" ]; then 211 #get the MD5 for dst and src 212 ANDROID_MD5=`$ADB $DEVICE_SERIAL shell md5 $ANDROID_DST` 213 if [ $(uname) == "Darwin" ]; then 214 HOST_MD5=`md5 -q $HOST_SRC` 215 else 216 HOST_MD5=`md5sum $HOST_SRC` 217 fi 218 219 if [ "${ANDROID_MD5:0:32}" != "${HOST_MD5:0:32}" ]; then 220 echo -n "$ANDROID_DST " 221 $ADB $DEVICE_SERIAL push $HOST_SRC $ANDROID_DST 222 fi 223 else 224 echo -n "$ANDROID_DST " 225 $ADB $DEVICE_SERIAL push $HOST_SRC $ANDROID_DST 226 fi 227} 228 229setup_device "${DEVICE_ID}" 230