Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(56)

Side by Side Diff: platform_tools/android/bin/android_setup.sh

Issue 22339008: Move toolchain setup into a function in android_setup.sh (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 function exportVar { 1 function exportVar {
2 NAME=$1 2 NAME=$1
3 VALUE=$2 3 VALUE=$2
4 echo export $NAME=\"$VALUE\" 4 echo export $NAME=\"$VALUE\"
5 export $NAME="$VALUE" 5 export $NAME="$VALUE"
6 } 6 }
7 7
8 SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 8 SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
9 9
10 # A valid Android SDK installation is required to build the sample app. 10 # A valid Android SDK installation is required to build the sample app.
(...skipping 19 matching lines...) Expand all
30 THIRD_PARTY_EXTERNAL_DIR=${SCRIPT_DIR}/../third_party/externals 30 THIRD_PARTY_EXTERNAL_DIR=${SCRIPT_DIR}/../third_party/externals
31 if [ ! -d "$THIRD_PARTY_EXTERNAL_DIR" ]; then 31 if [ ! -d "$THIRD_PARTY_EXTERNAL_DIR" ]; then
32 echo "" 32 echo ""
33 echo "ERROR: Unable to find the required third_party dependencies needed to build." 33 echo "ERROR: Unable to find the required third_party dependencies needed to build."
34 echo " To fix this add the following line to your .gclient file an d run 'gclient sync'" 34 echo " To fix this add the following line to your .gclient file an d run 'gclient sync'"
35 echo " target_os = ['android']" 35 echo " target_os = ['android']"
36 echo "" 36 echo ""
37 exit 1; 37 exit 1;
38 fi 38 fi
39 39
40 # determine the toolchain that we will be using 40 # Helper function to determine and download the toolchain that we will be using.
41 API_LEVEL=14 41 setup_toolchain() {
42 42 API_LEVEL=14
43 if [[ -z "$NDK_REV" ]]; 43
44 then 44 if [[ -z "$NDK_REV" ]];
45 NDK_REV="8e" 45 then
46 fi 46 NDK_REV="8e"
47
48 if [[ -z "$ANDROID_ARCH" ]];
49 then
50 ANDROID_ARCH="arm"
51 fi
52
53 TOOLCHAIN_DIR=${SCRIPT_DIR}/../toolchains
54 if [ $(uname) == "Linux" ]; then
55 echo "Using Linux toolchain."
56 TOOLCHAIN_TYPE=ndk-r$NDK_REV-$ANDROID_ARCH-linux_v$API_LEVEL
57 elif [ $(uname) == "Darwin" ]; then
58 echo "Using Mac toolchain."
59 TOOLCHAIN_TYPE=ndk-r$NDK_REV-$ANDROID_ARCH-mac_v$API_LEVEL
60 else
61 echo "Could not automatically determine toolchain! Defaulting to Linux."
62 TOOLCHAIN_TYPE=ndk-r$NDK_REV-$ANDROID_ARCH-linux_v$API_LEVEL
63 fi
64 exportVar ANDROID_TOOLCHAIN ${TOOLCHAIN_DIR}/${TOOLCHAIN_TYPE}/bin
65
66 # if the toolchain doesn't exist on your machine then we need to fetch it
67 if [ ! -d "$ANDROID_TOOLCHAIN" ]; then
68 # create the toolchain directory if needed
69 if [ ! -d "$TOOLCHAIN_DIR" ]; then
70 mkdir $TOOLCHAIN_DIR
71 fi 47 fi
72 # enter the toolchain directory then download, unpack, and remove the tarball 48
73 pushd $TOOLCHAIN_DIR 49 if [[ -z "$ANDROID_ARCH" ]];
74 TARBALL=ndk-r$NDK_REV-v$API_LEVEL.tgz 50 then
75 51 ANDROID_ARCH="arm"
76 echo "Downloading $TARBALL ..."
77 ${SCRIPT_DIR}/download_toolchains.py http://chromium-skia-gm.commondatastorage .googleapis.com/android-toolchains/$TARBALL $TOOLCHAIN_DIR/$TARBALL
78 if [[ "$?" != "0" ]]; then
79 echo "ERROR: Unable to download toolchain $TARBALL."
80 exit 1
81 fi 52 fi
82 53
83 echo "Untarring $TOOLCHAIN_TYPE from $TARBALL." 54 TOOLCHAIN_DIR=${SCRIPT_DIR}/../toolchains
84 tar -xzf $TARBALL $TOOLCHAIN_TYPE 55 if [ $(uname) == "Linux" ]; then
85 echo "Removing $TARBALL" 56 echo "Using Linux toolchain."
86 rm $TARBALL 57 TOOLCHAIN_TYPE=ndk-r$NDK_REV-$ANDROID_ARCH-linux_v$API_LEVEL
87 popd 58 elif [ $(uname) == "Darwin" ]; then
88 fi 59 echo "Using Mac toolchain."
89 60 TOOLCHAIN_TYPE=ndk-r$NDK_REV-$ANDROID_ARCH-mac_v$API_LEVEL
90 if [ ! -d "$ANDROID_TOOLCHAIN" ]; then 61 else
91 echo "ERROR: unable to download/setup the required toolchain (${TOOLCHAIN_TYPE })" 62 echo "Could not automatically determine toolchain! Defaulting to Linux."
92 return 1; 63 TOOLCHAIN_TYPE=ndk-r$NDK_REV-$ANDROID_ARCH-linux_v$API_LEVEL
93 fi 64 fi
94 65 exportVar ANDROID_TOOLCHAIN ${TOOLCHAIN_DIR}/${TOOLCHAIN_TYPE}/bin
95 echo "The build is targeting NDK API level $API_LEVEL for use on Android 4.0 (ND K Revision $NDK_REV) and above" 66
96 67 # if the toolchain doesn't exist on your machine then we need to fetch it
97 LS="/bin/ls" # Use directly to avoid any 'ls' alias that might be defined. 68 if [ ! -d "$ANDROID_TOOLCHAIN" ]; then
98 GCC=$($LS $ANDROID_TOOLCHAIN/*-gcc | head -n1) 69 # create the toolchain directory if needed
99 if [ -z "$GCC" ]; then 70 if [ ! -d "$TOOLCHAIN_DIR" ]; then
100 echo "ERROR: Could not find Android cross-compiler in: $ANDROID_TOOLCHAIN" 71 mkdir $TOOLCHAIN_DIR
101 return 1 72 fi
102 fi 73 # enter the toolchain directory then download, unpack, and remove the tarbal l
103 74 pushd $TOOLCHAIN_DIR
104 # Remove the '-gcc' at the end to get the full toolchain prefix 75 TARBALL=ndk-r$NDK_REV-v$API_LEVEL.tgz
105 ANDROID_TOOLCHAIN_PREFIX=${GCC%%-gcc} 76
106 77 echo "Downloading $TARBALL ..."
107 exportVar AR "$ANDROID_TOOLCHAIN_PREFIX-ar" 78 ${SCRIPT_DIR}/download_toolchains.py http://chromium-skia-gm.commondatastora ge.googleapis.com/android-toolchains/$TARBALL $TOOLCHAIN_DIR/$TARBALL
108 if [[ -z "$ANDROID_MAKE_CCACHE" ]]; then 79 if [[ "$?" != "0" ]]; then
109 exportVar CC "$ANDROID_TOOLCHAIN_PREFIX-gcc" 80 echo "ERROR: Unable to download toolchain $TARBALL."
110 exportVar CXX "$ANDROID_TOOLCHAIN_PREFIX-g++" 81 exit 1
111 exportVar LINK "$ANDROID_TOOLCHAIN_PREFIX-gcc" 82 fi
112 else 83
113 exportVar CC "$ANDROID_MAKE_CCACHE $ANDROID_TOOLCHAIN_PREFIX-gcc" 84 echo "Untarring $TOOLCHAIN_TYPE from $TARBALL."
114 exportVar CXX "$ANDROID_MAKE_CCACHE $ANDROID_TOOLCHAIN_PREFIX-g++" 85 tar -xzf $TARBALL $TOOLCHAIN_TYPE
115 exportVar LINK "$ANDROID_MAKE_CCACHE $ANDROID_TOOLCHAIN_PREFIX-gcc" 86 echo "Removing $TARBALL"
116 fi 87 rm $TARBALL
117 exportVar RANLIB "$ANDROID_TOOLCHAIN_PREFIX-ranlib" 88 popd
118 exportVar OBJCOPY "$ANDROID_TOOLCHAIN_PREFIX-objcopy" 89 fi
119 exportVar STRIP "$ANDROID_TOOLCHAIN_PREFIX-strip" 90
120 91 if [ ! -d "$ANDROID_TOOLCHAIN" ]; then
121 # Use the "android" flavor of the Makefile generator for both Linux and OS X. 92 echo "ERROR: unable to download/setup the required toolchain (${TOOLCHAIN_TY PE})"
122 exportVar GYP_GENERATORS "make-android" 93 return 1;
94 fi
95
96 echo "The build is targeting NDK API level $API_LEVEL for use on Android 4.0 ( NDK Revision $NDK_REV) and above"
97
98 LS="/bin/ls" # Use directly to avoid any 'ls' alias that might be defined.
99 GCC=$($LS $ANDROID_TOOLCHAIN/*-gcc | head -n1)
100 if [ -z "$GCC" ]; then
101 echo "ERROR: Could not find Android cross-compiler in: $ANDROID_TOOLCHAIN"
102 return 1
103 fi
104
105 # Remove the '-gcc' at the end to get the full toolchain prefix
106 ANDROID_TOOLCHAIN_PREFIX=${GCC%%-gcc}
107
108 exportVar AR "$ANDROID_TOOLCHAIN_PREFIX-ar"
109 if [[ -z "$ANDROID_MAKE_CCACHE" ]]; then
110 exportVar CC "$ANDROID_TOOLCHAIN_PREFIX-gcc"
111 exportVar CXX "$ANDROID_TOOLCHAIN_PREFIX-g++"
112 exportVar LINK "$ANDROID_TOOLCHAIN_PREFIX-gcc"
113 else
114 exportVar CC "$ANDROID_MAKE_CCACHE $ANDROID_TOOLCHAIN_PREFIX-gcc"
115 exportVar CXX "$ANDROID_MAKE_CCACHE $ANDROID_TOOLCHAIN_PREFIX-g++"
116 exportVar LINK "$ANDROID_MAKE_CCACHE $ANDROID_TOOLCHAIN_PREFIX-gcc"
117 fi
118 exportVar RANLIB "$ANDROID_TOOLCHAIN_PREFIX-ranlib"
119 exportVar OBJCOPY "$ANDROID_TOOLCHAIN_PREFIX-objcopy"
120 exportVar STRIP "$ANDROID_TOOLCHAIN_PREFIX-strip"
121 }
123 122
124 # Helper function to configure the GYP defines to the appropriate values 123 # Helper function to configure the GYP defines to the appropriate values
125 # based on the target device. 124 # based on the target device.
126 setup_device() { 125 setup_device() {
127 DEFINES="OS=android" 126 DEFINES="OS=android"
128 DEFINES="${DEFINES} host_os=$(uname -s | sed -e 's/Linux/linux/;s/Darwin/mac/' )" 127 DEFINES="${DEFINES} host_os=$(uname -s | sed -e 's/Linux/linux/;s/Darwin/mac/' )"
129 DEFINES="${DEFINES} skia_os=android" 128 DEFINES="${DEFINES} skia_os=android"
130 DEFINES="${DEFINES} android_base=${SCRIPT_DIR}/.." 129 DEFINES="${DEFINES} android_base=${SCRIPT_DIR}/.."
131 DEFINES="${DEFINES} android_toolchain=${TOOLCHAIN_TYPE}"
132 DEFINES="${DEFINES} skia_shared_lib=1" 130 DEFINES="${DEFINES} skia_shared_lib=1"
133 131
134 # Setup the build variation depending on the target device 132 # Setup the build variation depending on the target device
135 TARGET_DEVICE="$1" 133 TARGET_DEVICE="$1"
136 134
137 if [ -z "$TARGET_DEVICE" ]; then 135 if [ -z "$TARGET_DEVICE" ]; then
138 echo "INFO: no target device type was specified so using the default 'arm_v7 '" 136 echo "INFO: no target device type was specified so using the default 'arm_v7 '"
139 TARGET_DEVICE="arm_v7" 137 TARGET_DEVICE="arm_v7"
140 fi 138 fi
141 139
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 ;; 174 ;;
177 *) 175 *)
178 echo -n "ERROR: unknown device specified ($TARGET_DEVICE), valid values: " 176 echo -n "ERROR: unknown device specified ($TARGET_DEVICE), valid values: "
179 echo "nexus_[s,4,7,10] xoom galaxy_nexus razr_i arm arm_thumb arm_v7 arm_v 7_thumb x86" 177 echo "nexus_[s,4,7,10] xoom galaxy_nexus razr_i arm arm_thumb arm_v7 arm_v 7_thumb x86"
180 return 1; 178 return 1;
181 ;; 179 ;;
182 esac 180 esac
183 181
184 echo "The build is targeting the device: $TARGET_DEVICE" 182 echo "The build is targeting the device: $TARGET_DEVICE"
185 183
184 # Set up the toolchain.
185 setup_toolchain
186 DEFINES="${DEFINES} android_toolchain=${TOOLCHAIN_TYPE}"
187
188 # Use the "android" flavor of the Makefile generator for both Linux and OS X.
189 exportVar GYP_GENERATORS "make-android"
186 exportVar GYP_DEFINES "$DEFINES" 190 exportVar GYP_DEFINES "$DEFINES"
187 exportVar SKIA_OUT "out/config/android-${TARGET_DEVICE}" 191 exportVar SKIA_OUT "out/config/android-${TARGET_DEVICE}"
188 } 192 }
189 193
190 # adb_pull_if_needed(android_src, host_dst) 194 # adb_pull_if_needed(android_src, host_dst)
191 adb_pull_if_needed() { 195 adb_pull_if_needed() {
192 196
193 # get adb location 197 # get adb location
194 source $SCRIPT_DIR/utils/setup_adb.sh 198 source $SCRIPT_DIR/utils/setup_adb.sh
195 199
(...skipping 17 matching lines...) Expand all
213 if [ "${ANDROID_MD5:0:32}" != "${HOST_MD5:0:32}" ]; 217 if [ "${ANDROID_MD5:0:32}" != "${HOST_MD5:0:32}" ];
214 then 218 then
215 $ADB pull $ANDROID_SRC $HOST_DST 219 $ADB pull $ANDROID_SRC $HOST_DST
216 # else 220 # else
217 # echo "md5 match of android [$ANDROID_SRC] and host [$HOST_DST]" 221 # echo "md5 match of android [$ANDROID_SRC] and host [$HOST_DST]"
218 fi 222 fi
219 else 223 else
220 $ADB pull $ANDROID_SRC $HOST_DST 224 $ADB pull $ANDROID_SRC $HOST_DST
221 fi 225 fi
222 } 226 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698