blob: 03e3a218530b88b29f29ebf3d6b4c65a7897126f [file] [log] [blame]
#!/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