| #!/bin/sh |
| |
| PROGDIR=`dirname $0` |
| NDK=`cd $PROGDIR/.. && pwd` |
| NDK_BUILDTOOLS_PATH=$NDK/build/tools |
| . $NDK/build/core/ndk-common.sh |
| . $NDK/build/tools/prebuilt-common.sh |
| |
| # Find all devices |
| DEVICE_arm= |
| DEVICE_mips= |
| DEVICE_x86= |
| |
| ADB_CMD=`which adb` |
| if [ -n $ADB_CMD ] ; then |
| # Get list of online devices, turn ' ' in device into '.' |
| DEVICES=`$ADB_CMD devices | grep -v offline | awk 'NR>1 {gsub(/[ \t]+device$/,""); print;}' | sed '/^$/d' | tr ' ' '.'` |
| for DEVICE in $DEVICES; do |
| # undo previous ' '-to-'.' translation |
| DEVICE=$(echo $DEVICE | tr '.' ' ') |
| # get arch |
| ARCH=`$ADB_CMD -s "$DEVICE" shell getprop ro.product.cpu.abi | tr -dc '[:print:]'` |
| case "$ARCH" in |
| armeabi*) |
| DEVICE_arm=$DEVICE |
| ;; |
| x86) |
| DEVICE_x86=$DEVICE |
| ;; |
| mips) |
| DEVICE_mips=$DEVICE |
| ;; |
| *) |
| echo "ERROR: Unsupported architecture: $ARCH" |
| exit 1 |
| esac |
| done |
| fi |
| |
| echo "DEVICE_arm=$DEVICE_arm" |
| echo "DEVICE_x86=$DEVICE_x86" |
| echo "DEVICE_mips=$DEVICE_mips" |
| |
| # |
| # check if we need to also test 32-bit host toolchain |
| # |
| TEST_HOST_32BIT=no |
| |
| case "$HOST_TAG" in |
| linux-x86_64|darwin-x86_64) |
| if [ -d "$NDK/toolchains/arm-linux-androideabi-4.6/prebuilt/$HOST_TAG" ] ; then |
| # ideally we should check each individual compiler the presence of 64-bit |
| # but for test script this is fine |
| TEST_HOST_32BIT=yes |
| fi |
| ;; |
| esac |
| |
| # |
| # Run run-tests.sh |
| # |
| SYSTEM=$(get_prebuilt_host_tag) |
| |
| # keep this simple, only intend to test the case when NDK_TOOLCHAIN_VERSION isn't specified |
| dump "### Run simple tests" |
| ANDROID_SERIAL=none ./run-tests.sh --continue-on-build-fail --abi=armeabi |
| |
| # enumerate all cases using $SYSTEM toolchain |
| dump "### Running $SYSTEM gcc 4.7 full tests" |
| NDK_TOOLCHAIN_VERSION=4.7 ./run-tests.sh --continue-on-build-fail --full |
| dump "### Running $SYSTEM gcc 4.6 full tests" |
| NDK_TOOLCHAIN_VERSION=4.6 ./run-tests.sh --continue-on-build-fail --full |
| dump "### Running $SYSTEM gcc 4.4.3 full tests" |
| NDK_TOOLCHAIN_VERSION=4.4.3 ./run-tests.sh --continue-on-build-fail --full |
| dump "### Running $SYSTEM clang 3.1 full tests" |
| NDK_TOOLCHAIN_VERSION=clang3.1 ./run-tests.sh --continue-on-build-fail --full |
| |
| if [ "$TEST_HOST_32BIT" = "yes" ] ; then |
| dump "### Running $SYSTEM gcc 4.7 full tests (32-bit host)" |
| NDK_HOST_32BIT=1 NDK_TOOLCHAIN_VERSION=4.7 ./run-tests.sh --continue-on-build-fail |
| dump "### Running $SYSTEM gcc 4.6 full tests (32-bit host)" |
| NDK_HOST_32BIT=1 NDK_TOOLCHAIN_VERSION=4.6 ./run-tests.sh --continue-on-build-fail |
| dump "### Running $SYSTEM gcc 4.4.3 full tests (32-bit host)" |
| NDK_HOST_32BIT=1 NDK_TOOLCHAIN_VERSION=4.4.3 ./run-tests.sh --continue-on-build-fail |
| dump "### Running $SYSTEM clang 3.1 full tests (32-bit host)" |
| NDK_HOST_32BIT=1 NDK_TOOLCHAIN_VERSION=clang3.1 ./run-tests.sh --continue-on-build-fail |
| fi |
| |
| if [ "$SYSTEM" = "linux-x86" -a -d "$NDK/toolchains/arm-linux-androideabi-4.6/prebuilt/windows" ] ; then |
| find_program WINE wine |
| if [ -n "$WINE" ]; then |
| WINE_VERSION=`$WINE --version` |
| if [ -n "$WINE_VERSION" -a "$WINE_VERSION" != "wine-1.4" ]; then |
| # enumerate all cases using windows toolchain |
| dump "### Running windows 4.7 tests" |
| NDK_TOOLCHAIN_VERSION=4.7 ./run-tests.sh --continue-on-build-fail --wine # --full |
| dump "### Running windows 4.6 tests" |
| NDK_TOOLCHAIN_VERSION=4.6 ./run-tests.sh --continue-on-build-fail --wine # --full |
| dump "### Running windows 4.4.3 tests" |
| NDK_TOOLCHAIN_VERSION=4.4.3 ./run-tests.sh --continue-on-build-fail --wine # --full |
| dump "### Running windows clang 3.1 tests" |
| NDK_TOOLCHAIN_VERSION=clang3.1 ./run-tests.sh --continue-on-build-fail --wine # --full |
| fi |
| # No need to check TEST_HOST_32BIT because Windows doesn't have 64-bit toolchain to begin with |
| fi |
| fi |
| |
| # add more if you want ... |
| |
| # |
| # Run standalone tests |
| # |
| STANDALONE_TMPDIR=$NDK_TMPDIR |
| |
| # $1: API level |
| # $2: Arch |
| # $3: GCC version |
| standalone_path () |
| { |
| local API=$1 |
| local ARCH=$2 |
| local GCC_VERSION=$3 |
| |
| echo ${STANDALONE_TMPDIR}/android-ndk-api${API}-${ARCH}-${GCC_VERSION} |
| } |
| |
| # $1: API level |
| # $2: Arch |
| # $3: GCC version |
| # $4: LLVM version |
| make_standalone () |
| { |
| local API=$1 |
| local ARCH=$2 |
| local GCC_VERSION=$3 |
| local LLVM_VERSION=$4 |
| |
| (cd $NDK && \ |
| ./build/tools/make-standalone-toolchain.sh \ |
| --platform=android-$API \ |
| --install-dir=$(standalone_path $API $ARCH $GCC_VERSION) \ |
| --llvm-version=$LLVM_VERSION \ |
| --toolchain=$(get_toolchain_name_for_arch $ARCH $GCC_VERSION)) |
| } |
| |
| API=14 |
| LLVM_VERSION=$DEFAULT_LLVM_VERSION |
| for ARCH in $(commas_to_spaces $DEFAULT_ARCHS); do |
| for GCC_VERSION in $(commas_to_spaces $DEFAULT_GCC_VERSION_LIST); do |
| dump "### Testing $ARCH gcc-$GCC_VERSION toolchain with --sysroot" |
| (cd $NDK && \ |
| ./tests/standalone/run.sh --prefix=$(get_toolchain_binprefix_for_arch $ARCH $GCC_VERSION)-gcc) |
| dump "### Making $ARCH gcc-$GCC_VERSION standalone toolchain" |
| make_standalone $API $ARCH $GCC_VERSION $LLVM_VERSION |
| dump "### Testing $ARCH gcc-$GCC_VERSION standalone toolchain" |
| (cd $NDK && \ |
| ./tests/standalone/run.sh --no-sysroot \ |
| --prefix=$(standalone_path $API $ARCH $GCC_VERSION)/bin/$(get_default_toolchain_prefix_for_arch $ARCH)-gcc) |
| dump "### Testing clang in $ARCH gcc-$GCC_VERSION standalone toolchain" |
| (cd $NDK && \ |
| ./tests/standalone/run.sh --no-sysroot \ |
| --prefix=$(standalone_path $API $ARCH $GCC_VERSION)/bin/clang) |
| done |
| done |
| |
| # clean up |
| rm -rf $STANDALONE_TMPDIR |