From 0130c30d0ac71a26683cca39b43405fd66df3ddf Mon Sep 17 00:00:00 2001 From: djsollen Date: Fri, 31 Oct 2014 07:00:59 -0700 Subject: [PATCH] Add support for clang to the android build scripts Review URL: https://codereview.chromium.org/692953002 --- platform_tools/android/bin/android_setup.sh | 2 ++ .../android/bin/utils/setup_toolchain.sh | 33 ++++++++++++++++------ 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/platform_tools/android/bin/android_setup.sh b/platform_tools/android/bin/android_setup.sh index 65774e5..e97b045 100755 --- a/platform_tools/android/bin/android_setup.sh +++ b/platform_tools/android/bin/android_setup.sh @@ -23,6 +23,8 @@ while (( "$#" )); do shift elif [[ "$1" == "--release" ]]; then BUILDTYPE=Release + elif [[ "$1" == "--clang" ]]; then + USE_CLANG="true" else APP_ARGS=("${APP_ARGS[@]}" "${1}") fi diff --git a/platform_tools/android/bin/utils/setup_toolchain.sh b/platform_tools/android/bin/utils/setup_toolchain.sh index 1866971..6bb6b00 100755 --- a/platform_tools/android/bin/utils/setup_toolchain.sh +++ b/platform_tools/android/bin/utils/setup_toolchain.sh @@ -46,6 +46,12 @@ function default_toolchain() { fi exportVar ANDROID_TOOLCHAIN "${TOOLCHAIN_DIR}/${TOOLCHAIN_TYPE}/bin" + # Hack for NDK_REV == 10c to ensure that clang is present as it was + # added to the tarball after it was initially distributed. + if [ ! -x ${ANDROID_TOOLCHAIN}/clang ]; then + rm -rf ${TOOLCHAIN_DIR}/${TOOLCHAIN_TYPE} + fi + # if the toolchain doesn't exist on your machine then we need to fetch it if [ ! -d "$ANDROID_TOOLCHAIN" ]; then mkdir -p $TOOLCHAIN_DIR @@ -59,9 +65,9 @@ function default_toolchain() { tar -xzf $TARBALL $TOOLCHAIN_TYPE rm $TARBALL popd - fi + fi - verbose "Targeting NDK API $API_LEVEL for use on Android 4.0 (NDK Revision $NDK_REV) and above" + verbose "Targeting NDK API $API_LEVEL (NDK Revision $NDK_REV)" } #check to see if the toolchain has been defined and if not setup the default toolchain @@ -84,9 +90,17 @@ ANDROID_TOOLCHAIN_PREFIX=${GCC%%-gcc} CCACHE=${ANDROID_MAKE_CCACHE-$(which ccache || true)} -exportVar CC "$CCACHE $ANDROID_TOOLCHAIN_PREFIX-gcc" -exportVar CXX "$CCACHE $ANDROID_TOOLCHAIN_PREFIX-g++" -exportVar LINK "$CCACHE $ANDROID_TOOLCHAIN_PREFIX-gcc" +if [ -z $USE_CLANG ]; then + exportVar CC "$CCACHE $ANDROID_TOOLCHAIN_PREFIX-gcc" + exportVar CXX "$CCACHE $ANDROID_TOOLCHAIN_PREFIX-g++" + exportVar LINK "$CCACHE $ANDROID_TOOLCHAIN_PREFIX-gcc" +else + # temporarily disable ccache as it is generating errors + CCACHE="" + exportVar CC "$CCACHE $ANDROID_TOOLCHAIN_PREFIX-clang" + exportVar CXX "$CCACHE $ANDROID_TOOLCHAIN_PREFIX-clang++" + exportVar LINK "$CCACHE $ANDROID_TOOLCHAIN_PREFIX-clang" +fi exportVar AR "$ANDROID_TOOLCHAIN_PREFIX-ar" exportVar RANLIB "$ANDROID_TOOLCHAIN_PREFIX-ranlib" @@ -96,7 +110,10 @@ exportVar STRIP "$ANDROID_TOOLCHAIN_PREFIX-strip" # Create symlinks for nm & readelf and add them to the path so that the ninja # build uses them instead of attempting to use the one on the system. # This is required to build using ninja on a Mac. -ln -sf $ANDROID_TOOLCHAIN_PREFIX-nm $ANDROID_TOOLCHAIN/nm -ln -sf $ANDROID_TOOLCHAIN_PREFIX-readelf $ANDROID_TOOLCHAIN/readelf -ln -sf $ANDROID_TOOLCHAIN_PREFIX-as $ANDROID_TOOLCHAIN/as +if [ $(uname) == "Darwin" ]; then + ln -sf $ANDROID_TOOLCHAIN_PREFIX-nm $ANDROID_TOOLCHAIN/nm + ln -sf $ANDROID_TOOLCHAIN_PREFIX-readelf $ANDROID_TOOLCHAIN/readelf + ln -sf $ANDROID_TOOLCHAIN_PREFIX-as $ANDROID_TOOLCHAIN/as +fi + exportVar PATH $ANDROID_TOOLCHAIN:$PATH -- 2.7.4