| OLD | NEW | 
|---|
| 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  Loading... | 
| 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  Loading... | 
| 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  Loading... | 
| 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 } | 
| OLD | NEW | 
|---|