17627535b8f968ba135e0ec16d15f30c31fe786d4borenet@google.com#!/bin/bash
27627535b8f968ba135e0ec16d15f30c31fe786d4borenet@google.com#
37627535b8f968ba135e0ec16d15f30c31fe786d4borenet@google.com# android_setup.sh: Sets environment variables used by other Android scripts.
47627535b8f968ba135e0ec16d15f30c31fe786d4borenet@google.com
5a13767579d25a7182d697e93d0df294eccc91507commit-bot@chromium.org# Fail-fast if anything in the script fails.
6a13767579d25a7182d697e93d0df294eccc91507commit-bot@chromium.orgset -e
7a13767579d25a7182d697e93d0df294eccc91507commit-bot@chromium.org
8a13767579d25a7182d697e93d0df294eccc91507commit-bot@chromium.orgBUILDTYPE=${BUILDTYPE-Debug}
9a13767579d25a7182d697e93d0df294eccc91507commit-bot@chromium.org
107627535b8f968ba135e0ec16d15f30c31fe786d4borenet@google.comwhile (( "$#" )); do
11a13767579d25a7182d697e93d0df294eccc91507commit-bot@chromium.org  if [[ "$1" == "-d" ]]; then
127627535b8f968ba135e0ec16d15f30c31fe786d4borenet@google.com    DEVICE_ID=$2
137627535b8f968ba135e0ec16d15f30c31fe786d4borenet@google.com    shift
14a13767579d25a7182d697e93d0df294eccc91507commit-bot@chromium.org  elif [[ "$1" == "-s" ]]; then
15cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.com    DEVICE_SERIAL="-s $2"
16cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.com    shift
17a13767579d25a7182d697e93d0df294eccc91507commit-bot@chromium.org  elif [[ "$1" == "-t" ]]; then
18a13767579d25a7182d697e93d0df294eccc91507commit-bot@chromium.org    BUILDTYPE=$2
19a13767579d25a7182d697e93d0df294eccc91507commit-bot@chromium.org    shift
20a13767579d25a7182d697e93d0df294eccc91507commit-bot@chromium.org  elif [[ "$1" == "--release" ]]; then
21a13767579d25a7182d697e93d0df294eccc91507commit-bot@chromium.org    BUILDTYPE=Release
227627535b8f968ba135e0ec16d15f30c31fe786d4borenet@google.com  else
23cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.com    APP_ARGS=("${APP_ARGS[@]}" "${1}")
247627535b8f968ba135e0ec16d15f30c31fe786d4borenet@google.com  fi
257627535b8f968ba135e0ec16d15f30c31fe786d4borenet@google.com  shift
267627535b8f968ba135e0ec16d15f30c31fe786d4borenet@google.comdone
277627535b8f968ba135e0ec16d15f30c31fe786d4borenet@google.com
281c4015ab14f3d1ca6ec41effcbb72448817688fdmtklein@google.comfunction verbose {
29a13767579d25a7182d697e93d0df294eccc91507commit-bot@chromium.org  if [[ -n $VERBOSE ]]; then
30a13767579d25a7182d697e93d0df294eccc91507commit-bot@chromium.org    echo $@
31a13767579d25a7182d697e93d0df294eccc91507commit-bot@chromium.org  fi
321c4015ab14f3d1ca6ec41effcbb72448817688fdmtklein@google.com}
331c4015ab14f3d1ca6ec41effcbb72448817688fdmtklein@google.com
34dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.comfunction exportVar {
35dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com  NAME=$1
36dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com  VALUE=$2
371c4015ab14f3d1ca6ec41effcbb72448817688fdmtklein@google.com  verbose export $NAME=\"$VALUE\"
38dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com  export $NAME="$VALUE"
39dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com}
40dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com
41a13767579d25a7182d697e93d0df294eccc91507commit-bot@chromium.orgfunction absPath {
42a13767579d25a7182d697e93d0df294eccc91507commit-bot@chromium.org  (cd $1; pwd)
43a13767579d25a7182d697e93d0df294eccc91507commit-bot@chromium.org}
44a13767579d25a7182d697e93d0df294eccc91507commit-bot@chromium.org
45a13767579d25a7182d697e93d0df294eccc91507commit-bot@chromium.orgSCRIPT_DIR=$(absPath "$(dirname "$BASH_SOURCE[0]}")")
46dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com
47dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.comif [ -z "$ANDROID_SDK_ROOT" ]; then
48a13767579d25a7182d697e93d0df294eccc91507commit-bot@chromium.org  if ANDROID_SDK_ROOT="$(dirname $(which android))/.."; then
49a13767579d25a7182d697e93d0df294eccc91507commit-bot@chromium.org    exportVar ANDROID_SDK_ROOT $ANDROID_SDK_ROOT
50a13767579d25a7182d697e93d0df294eccc91507commit-bot@chromium.org  else
51a13767579d25a7182d697e93d0df294eccc91507commit-bot@chromium.org     echo "No ANDROID_SDK_ROOT set and can't auto detect it from location of android binary."
52a13767579d25a7182d697e93d0df294eccc91507commit-bot@chromium.org     exit 1
53dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com  fi
54dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.comfi
55dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com
56d165de44c89f0dcc88f0a196698744e08662e33fdjsollen@google.com# check to see that gclient sync ran successfully
57d165de44c89f0dcc88f0a196698744e08662e33fdjsollen@google.comTHIRD_PARTY_EXTERNAL_DIR=${SCRIPT_DIR}/../third_party/externals
58c772540b4cbf8784e0f97cfa02accbd84181347edjsollen@google.comif [ ! -d "$THIRD_PARTY_EXTERNAL_DIR" ]; then
59d165de44c89f0dcc88f0a196698744e08662e33fdjsollen@google.com	echo ""
60d165de44c89f0dcc88f0a196698744e08662e33fdjsollen@google.com	echo "ERROR: Unable to find the required third_party dependencies needed to build."
61d165de44c89f0dcc88f0a196698744e08662e33fdjsollen@google.com	echo "       To fix this add the following line to your .gclient file and run 'gclient sync'"
62d165de44c89f0dcc88f0a196698744e08662e33fdjsollen@google.com	echo "        target_os = ['android']"
63d165de44c89f0dcc88f0a196698744e08662e33fdjsollen@google.com	echo ""
64d165de44c89f0dcc88f0a196698744e08662e33fdjsollen@google.com	exit 1;
65d165de44c89f0dcc88f0a196698744e08662e33fdjsollen@google.comfi
66d165de44c89f0dcc88f0a196698744e08662e33fdjsollen@google.com
67dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com# Helper function to configure the GYP defines to the appropriate values
68dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com# based on the target device.
69dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.comsetup_device() {
70dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com  DEFINES="OS=android"
71dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com  DEFINES="${DEFINES} host_os=$(uname -s | sed -e 's/Linux/linux/;s/Darwin/mac/')"
72dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com  DEFINES="${DEFINES} skia_os=android"
73a13767579d25a7182d697e93d0df294eccc91507commit-bot@chromium.org  DEFINES="${DEFINES} android_base=$(absPath ${SCRIPT_DIR}/..)"
74d6bab0238655dbab24dfe92bd0b16b464310a8c7rmistry@google.com  if [[ "$GYP_DEFINES" != *skia_shared_lib=* ]]; then
75d6bab0238655dbab24dfe92bd0b16b464310a8c7rmistry@google.com      DEFINES="${DEFINES} skia_shared_lib=1"
76d6bab0238655dbab24dfe92bd0b16b464310a8c7rmistry@google.com  fi
77dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com
78dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com  # Setup the build variation depending on the target device
79dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com  TARGET_DEVICE="$1"
80dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com
81dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com  if [ -z "$TARGET_DEVICE" ]; then
82a61ba109bf1a60c6de8f9ebea043e782497b88ccdjsollen@google.com    if [ -f .android_config ]; then
83a61ba109bf1a60c6de8f9ebea043e782497b88ccdjsollen@google.com      TARGET_DEVICE=$(cat .android_config)
84a13767579d25a7182d697e93d0df294eccc91507commit-bot@chromium.org      verbose "no target device (-d), using ${TARGET_DEVICE} from most recent build"
85a61ba109bf1a60c6de8f9ebea043e782497b88ccdjsollen@google.com    else
8648f9e1f2c1a164128fa3e1fc5e264aab16b2b884mtklein@google.com      TARGET_DEVICE="arm_v7_thumb"
87a13767579d25a7182d697e93d0df294eccc91507commit-bot@chromium.org      verbose "no target device (-d), using ${TARGET_DEVICE}"
88a61ba109bf1a60c6de8f9ebea043e782497b88ccdjsollen@google.com    fi
89dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com  fi
90dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com
91dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com  case $TARGET_DEVICE in
92dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com    nexus_s)
93ef0893191adcc343b5e27664835b11c327025fb9borenet@google.com      DEFINES="${DEFINES} skia_arch_type=arm arm_neon=1 arm_version=7 arm_thumb=1"
944e5559af8947ae7dc3df531b6d7a73323db20c3frobertphillips@google.com      DEFINES="${DEFINES} skia_resource_cache_mb_limit=24"
957627535b8f968ba135e0ec16d15f30c31fe786d4borenet@google.com      ANDROID_ARCH="arm"
96ef0893191adcc343b5e27664835b11c327025fb9borenet@google.com      ;;
97dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com    nexus_4 | nexus_7 | nexus_10)
98ef0893191adcc343b5e27664835b11c327025fb9borenet@google.com      DEFINES="${DEFINES} skia_arch_type=arm arm_neon=1 arm_version=7 arm_thumb=1"
997627535b8f968ba135e0ec16d15f30c31fe786d4borenet@google.com      ANDROID_ARCH="arm"
100ef0893191adcc343b5e27664835b11c327025fb9borenet@google.com      ;;
101dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com    xoom)
102ef0893191adcc343b5e27664835b11c327025fb9borenet@google.com      DEFINES="${DEFINES} skia_arch_type=arm arm_neon=0 arm_version=7 arm_thumb=1"
1037627535b8f968ba135e0ec16d15f30c31fe786d4borenet@google.com      ANDROID_ARCH="arm"
104ef0893191adcc343b5e27664835b11c327025fb9borenet@google.com      ;;
105dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com    galaxy_nexus)
106ef0893191adcc343b5e27664835b11c327025fb9borenet@google.com      DEFINES="${DEFINES} skia_arch_type=arm arm_neon=1 arm_version=7 arm_thumb=1"
1074e5559af8947ae7dc3df531b6d7a73323db20c3frobertphillips@google.com      DEFINES="${DEFINES} skia_resource_cache_mb_limit=32"
1087627535b8f968ba135e0ec16d15f30c31fe786d4borenet@google.com      ANDROID_ARCH="arm"
109ef0893191adcc343b5e27664835b11c327025fb9borenet@google.com      ;;
110a13767579d25a7182d697e93d0df294eccc91507commit-bot@chromium.org    intel_rhb | razr_i | x86)
111ef0893191adcc343b5e27664835b11c327025fb9borenet@google.com      DEFINES="${DEFINES} skia_arch_type=x86 skia_arch_width=32"
1124e5559af8947ae7dc3df531b6d7a73323db20c3frobertphillips@google.com      DEFINES="${DEFINES} skia_resource_cache_mb_limit=32"
1137627535b8f968ba135e0ec16d15f30c31fe786d4borenet@google.com      ANDROID_ARCH="x86"
114ef0893191adcc343b5e27664835b11c327025fb9borenet@google.com      ;;
115dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com    arm_v7)
116ef0893191adcc343b5e27664835b11c327025fb9borenet@google.com      DEFINES="${DEFINES} skia_arch_type=arm arm_neon_optional=1 arm_version=7 arm_thumb=0"
1177627535b8f968ba135e0ec16d15f30c31fe786d4borenet@google.com      ANDROID_ARCH="arm"
118ef0893191adcc343b5e27664835b11c327025fb9borenet@google.com      ;;
1197578b3efc63539cb8140d1f4f5b2773ee9d17c5fcommit-bot@chromium.org    arm_v7_thumb | nvidia_logan)
120ef0893191adcc343b5e27664835b11c327025fb9borenet@google.com      DEFINES="${DEFINES} skia_arch_type=arm arm_neon_optional=1 arm_version=7 arm_thumb=1"
1217627535b8f968ba135e0ec16d15f30c31fe786d4borenet@google.com      ANDROID_ARCH="arm"
122ef0893191adcc343b5e27664835b11c327025fb9borenet@google.com      ;;
123dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com    arm)
124ef0893191adcc343b5e27664835b11c327025fb9borenet@google.com      DEFINES="${DEFINES} skia_arch_type=arm arm_neon=0 arm_thumb=0"
1257627535b8f968ba135e0ec16d15f30c31fe786d4borenet@google.com      ANDROID_ARCH="arm"
126ef0893191adcc343b5e27664835b11c327025fb9borenet@google.com      ;;
127dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com    arm_thumb)
128ef0893191adcc343b5e27664835b11c327025fb9borenet@google.com      DEFINES="${DEFINES} skia_arch_type=arm arm_neon=0 arm_thumb=1"
1297627535b8f968ba135e0ec16d15f30c31fe786d4borenet@google.com      ANDROID_ARCH="arm"
130ef0893191adcc343b5e27664835b11c327025fb9borenet@google.com      ;;
131b6872c06e1b2a441895198f32356fde0f931986acommit-bot@chromium.org    mips)
132b6872c06e1b2a441895198f32356fde0f931986acommit-bot@chromium.org      DEFINES="${DEFINES} skia_arch_type=mips skia_arch_width=32"
133b6872c06e1b2a441895198f32356fde0f931986acommit-bot@chromium.org      DEFINES="${DEFINES} skia_resource_cache_mb_limit=32"
134b6872c06e1b2a441895198f32356fde0f931986acommit-bot@chromium.org      ANDROID_ARCH="mips"
135b6872c06e1b2a441895198f32356fde0f931986acommit-bot@chromium.org      ;;
136dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com    *)
137e3916bfe0e0a030d31c181ea8c9c91cae8229d22commit-bot@chromium.org      if [ -z "$ANDROID_IGNORE_UNKNOWN_DEVICE" ]; then
138e3916bfe0e0a030d31c181ea8c9c91cae8229d22commit-bot@chromium.org          echo "ERROR: unknown device $TARGET_DEVICE"
139e3916bfe0e0a030d31c181ea8c9c91cae8229d22commit-bot@chromium.org          exit 1
140e3916bfe0e0a030d31c181ea8c9c91cae8229d22commit-bot@chromium.org      fi
141e3916bfe0e0a030d31c181ea8c9c91cae8229d22commit-bot@chromium.org      # If ANDROID_IGNORE_UNKNOWN_DEVICE is set, then ANDROID_TOOLCHAIN
142e3916bfe0e0a030d31c181ea8c9c91cae8229d22commit-bot@chromium.org      # or ANDROID_ARCH should be set; Otherwise, ANDROID_ARCH
143e3916bfe0e0a030d31c181ea8c9c91cae8229d22commit-bot@chromium.org      # defaults to 'arm' and the default ARM toolchain is used.
144e3916bfe0e0a030d31c181ea8c9c91cae8229d22commit-bot@chromium.org      DEFINES="${DEFINES} skia_arch_type=${ANDROID_ARCH-arm}"
145e3916bfe0e0a030d31c181ea8c9c91cae8229d22commit-bot@chromium.org      # If ANDROID_IGNORE_UNKNOWN_DEVICE is set, extra gyp defines can be
146e3916bfe0e0a030d31c181ea8c9c91cae8229d22commit-bot@chromium.org      # added via ANDROID_GYP_DEFINES
147e3916bfe0e0a030d31c181ea8c9c91cae8229d22commit-bot@chromium.org      DEFINES="${DEFINES} ${ANDROID_GYP_DEFINES}"
148ef0893191adcc343b5e27664835b11c327025fb9borenet@google.com      ;;
149dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com  esac
150dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com
1511c4015ab14f3d1ca6ec41effcbb72448817688fdmtklein@google.com  verbose "The build is targeting the device: $TARGET_DEVICE"
152a13767579d25a7182d697e93d0df294eccc91507commit-bot@chromium.org  exportVar DEVICE_ID $TARGET_DEVICE
153dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com
1540257ebe4ac7907d0293371cc6a50a0ec0a55f61ccommit-bot@chromium.org  # setup the appropriate cross compiling toolchains
1550257ebe4ac7907d0293371cc6a50a0ec0a55f61ccommit-bot@chromium.org  source $SCRIPT_DIR/utils/setup_toolchain.sh
156a13767579d25a7182d697e93d0df294eccc91507commit-bot@chromium.org
157112215acef55eb6d7fa0ef8c9af0215a78d0e104borenet@google.com  DEFINES="${DEFINES} android_toolchain=${TOOLCHAIN_TYPE}"
158edea842b6a678f8c06d136a808def83880a4ca88commit-bot@chromium.org  exportVar GYP_DEFINES "$DEFINES $GYP_DEFINES"
159105775b82341d7c86986b3fb03698d4e471bc3abcommit-bot@chromium.org
160105775b82341d7c86986b3fb03698d4e471bc3abcommit-bot@chromium.org  SKIA_SRC_DIR=$(cd "${SCRIPT_DIR}/../../.."; pwd)
161105775b82341d7c86986b3fb03698d4e471bc3abcommit-bot@chromium.org  DEFAULT_SKIA_OUT="${SKIA_SRC_DIR}/out/config/android-${TARGET_DEVICE}"
162105775b82341d7c86986b3fb03698d4e471bc3abcommit-bot@chromium.org  exportVar SKIA_OUT "${SKIA_OUT:-${DEFAULT_SKIA_OUT}}"
163dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com}
164dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com
165121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com# adb_pull_if_needed(android_src, host_dst)
166121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.comadb_pull_if_needed() {
167dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com
168121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com  # get adb location
169121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com  source $SCRIPT_DIR/utils/setup_adb.sh
170121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com
171121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com  # read input params
172121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com  ANDROID_SRC="$1"
173121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com  HOST_DST="$2"
174dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com
175121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com  if [ -d $HOST_DST ];
176121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com  then
177121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com    HOST_DST="${HOST_DST}/$(basename ${ANDROID_SRC})"
178121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com  fi
179121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com
180ab4098b4d3ceb952dc7bea7e28a38387830acad6commit-bot@chromium.org
181ab4098b4d3ceb952dc7bea7e28a38387830acad6commit-bot@chromium.org  if [ -f $HOST_DST ];
182121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com  then
183121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com    #get the MD5 for dst and src
184cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.com    ANDROID_MD5=`$ADB $DEVICE_SERIAL shell md5 $ANDROID_SRC`
1853a98ed7658057b8b6c5cc38275b02b63d3091527djsollen@google.com    if [ $(uname) == "Darwin" ]; then
1863a98ed7658057b8b6c5cc38275b02b63d3091527djsollen@google.com      HOST_MD5=`md5 -q $HOST_DST`
1873a98ed7658057b8b6c5cc38275b02b63d3091527djsollen@google.com    else
1883a98ed7658057b8b6c5cc38275b02b63d3091527djsollen@google.com      HOST_MD5=`md5sum $HOST_DST`
1893a98ed7658057b8b6c5cc38275b02b63d3091527djsollen@google.com    fi
190121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com
191a13767579d25a7182d697e93d0df294eccc91507commit-bot@chromium.org    if [ "${ANDROID_MD5:0:32}" != "${HOST_MD5:0:32}" ]; then
192a13767579d25a7182d697e93d0df294eccc91507commit-bot@chromium.org      echo -n "$HOST_DST "
193cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.com      $ADB $DEVICE_SERIAL pull $ANDROID_SRC $HOST_DST
194121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com    fi
195121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com  else
196a13767579d25a7182d697e93d0df294eccc91507commit-bot@chromium.org    echo -n "$HOST_DST "
197cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.com    $ADB $DEVICE_SERIAL pull $ANDROID_SRC $HOST_DST
198cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.com  fi
199cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.com}
200cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.com
201cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.com# adb_push_if_needed(host_src, android_dst)
202cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.comadb_push_if_needed() {
203cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.com
204cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.com  # get adb location
205cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.com  source $SCRIPT_DIR/utils/setup_adb.sh
206cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.com
207cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.com  # read input params
208cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.com  HOST_SRC="$1"
209cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.com  ANDROID_DST="$2"
210cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.com
211cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.com  ANDROID_LS=`$ADB $DEVICE_SERIAL shell ls -ld $ANDROID_DST`
212cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.com  if [ "${ANDROID_LS:0:1}" == "d" ];
213cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.com  then
214cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.com    ANDROID_DST="${ANDROID_DST}/$(basename ${HOST_SRC})"
215cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.com  fi
216cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.com
217cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.com
218cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.com  ANDROID_LS=`$ADB $DEVICE_SERIAL shell ls -ld $ANDROID_DST`
219a13767579d25a7182d697e93d0df294eccc91507commit-bot@chromium.org  if [ "${ANDROID_LS:0:1}" == "-" ]; then
220cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.com    #get the MD5 for dst and src
221cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.com    ANDROID_MD5=`$ADB $DEVICE_SERIAL shell md5 $ANDROID_DST`
2223a98ed7658057b8b6c5cc38275b02b63d3091527djsollen@google.com    if [ $(uname) == "Darwin" ]; then
2233a98ed7658057b8b6c5cc38275b02b63d3091527djsollen@google.com      HOST_MD5=`md5 -q $HOST_SRC`
2243a98ed7658057b8b6c5cc38275b02b63d3091527djsollen@google.com    else
2253a98ed7658057b8b6c5cc38275b02b63d3091527djsollen@google.com      HOST_MD5=`md5sum $HOST_SRC`
2263a98ed7658057b8b6c5cc38275b02b63d3091527djsollen@google.com    fi
227cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.com
228a13767579d25a7182d697e93d0df294eccc91507commit-bot@chromium.org    if [ "${ANDROID_MD5:0:32}" != "${HOST_MD5:0:32}" ]; then
229a13767579d25a7182d697e93d0df294eccc91507commit-bot@chromium.org      echo -n "$ANDROID_DST "
230cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.com      $ADB $DEVICE_SERIAL push $HOST_SRC $ANDROID_DST
231cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.com    fi
232cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.com  else
233a13767579d25a7182d697e93d0df294eccc91507commit-bot@chromium.org    echo -n "$ANDROID_DST "
2347f07e956fed08a5d1e2843174b21b3211c08e24dcommit-bot@chromium.org    $ADB $DEVICE_SERIAL shell mkdir -p "$(dirname "$ANDROID_DST")"
235cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.com    $ADB $DEVICE_SERIAL push $HOST_SRC $ANDROID_DST
236121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com  fi
237121b3fe6a05cff6a8354ae8b4ba4da1c8edd62c3djsollen@google.com}
2387627535b8f968ba135e0ec16d15f30c31fe786d4borenet@google.com
2397627535b8f968ba135e0ec16d15f30c31fe786d4borenet@google.comsetup_device "${DEVICE_ID}"
240