1d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner# Run all tests
2d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner
3d74329cef6373a13fba75772245c5feb495aa020David 'Digit' TurnerPROGDIR=`dirname $0`
4d74329cef6373a13fba75772245c5feb495aa020David 'Digit' TurnerPROGDIR=`cd $PROGDIR && pwd`
5f4790e6f9e47347996e62ecd27ff55b6499cf97aDavid 'Digit' Turner
6f4790e6f9e47347996e62ecd27ff55b6499cf97aDavid 'Digit' Turner# Assume that we are under tests/
7f4790e6f9e47347996e62ecd27ff55b6499cf97aDavid 'Digit' Turner# and that the samples will be under samples/ and platforms/android-N/samples/
8f4790e6f9e47347996e62ecd27ff55b6499cf97aDavid 'Digit' Turner#
9f4790e6f9e47347996e62ecd27ff55b6499cf97aDavid 'Digit' TurnerROOTDIR=`dirname $PROGDIR`
10d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner#
11d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner# Sanity checks:
12d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner#
13d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turnerif [ -z "$NDK" ] ; then
14d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner    echo "ERROR: Please define NDK in your environment to point to the root of your NDK install."
15d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner    exit 1
16d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turnerfi
17d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner
18d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turnerif [ ! -d "$NDK" ] ; then
19d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner    echo "ERROR: Your NDK variable does not point to a directory: $NDK"
20d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner    exit 2
21d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turnerfi
22d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner
23d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turnerif [ ! -f "$NDK/ndk-build" -o ! -f "$NDK/build/core/ndk-common.sh" ] ; then
24d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner    echo "ERROR: Your NDK variable does not point to a valid NDK directory: $NDK"
25d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner    exit 3
26d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turnerfi
27d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner
28f4790e6f9e47347996e62ecd27ff55b6499cf97aDavid 'Digit' Turnerif [ ! -d "$NDK/platforms" -o ! -d "$NDK/samples" ] ; then
29f4790e6f9e47347996e62ecd27ff55b6499cf97aDavid 'Digit' Turner    echo "ERROR: Your NDK directory does not have 'platforms' or 'samples' directories."
30f4790e6f9e47347996e62ecd27ff55b6499cf97aDavid 'Digit' Turner    echo "Please run $NDK/build/tools/build-platforms.sh first !"
31f4790e6f9e47347996e62ecd27ff55b6499cf97aDavid 'Digit' Turner    exit 3
32f4790e6f9e47347996e62ecd27ff55b6499cf97aDavid 'Digit' Turnerfi
33f4790e6f9e47347996e62ecd27ff55b6499cf97aDavid 'Digit' Turner
34d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner#
35d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner# Parse options
36d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner#
37d74329cef6373a13fba75772245c5feb495aa020David 'Digit' TurnerJOBS=
38d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turnerwhile [ -n "$1" ]; do
39d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner    opt="$1"
40d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner    optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
41d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner    case "$opt" in
42d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner        --help|-h|-\?)
43d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner            OPTION_HELP=yes
44d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner            ;;
45d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner        --verbose)
46d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner            VERBOSE=yes
47d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner            ;;
48d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner        -j*)
49d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner            JOBS="$opt"
50d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner            shift
51d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner            ;;
52d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner        --jobs=*)
53d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner            JOBS="-j$optarg"
54d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner            ;;
55d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner        -*) # unknown options
56d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner            echo "ERROR: Unknown option '$opt', use --help for list of valid ones."
57d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner            exit 1
58d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner        ;;
59d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner        *)  # Simply record parameter
60d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner            if [ -z "$PARAMETERS" ] ; then
61d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner                PARAMETERS="$opt"
62d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner            else
63d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner                PARAMETERS="$PARAMETERS $opt"
64d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner            fi
65d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner            ;;
66d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner    esac
67d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner    shift
68d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turnerdone
69d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner
70d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turnerif [ "$OPTION_HELP" = "yes" ] ; then
71d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner    echo "Usage: $PROGNAME [options]"
72d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner    echo ""
73d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner    echo "Run all NDK automated tests at once."
74d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner    echo ""
75d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner    echo "Valid options:"
76d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner    echo ""
77d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner    echo "    --help|-h|-?      Print this help"
78d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner    echo "    --verbose         Enable verbose mode"
79d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner    echo "    -j<N> --jobs=<N>  Launch parallel builds"
80d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner    echo ""
81d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner    exit 0
82d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turnerfi
83d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner
84d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner#
85d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner# Create log file
86d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner#
87d74329cef6373a13fba75772245c5feb495aa020David 'Digit' TurnerMYLOG=/tmp/ndk-tests.log
88d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turnermkdir -p `dirname $MYLOG`
89d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turnerrm -f $MYLOG
90d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turnerecho "NDK automated tests log file" > $MYLOG
91d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner
926d0ef0df9852b3750f88bb38dfaeebe527df7be3David 'Digit' Turnerif [ "$VERBOSE" = "yes" ] ; then
936d0ef0df9852b3750f88bb38dfaeebe527df7be3David 'Digit' Turnerrun ()
946d0ef0df9852b3750f88bb38dfaeebe527df7be3David 'Digit' Turner{
956d0ef0df9852b3750f88bb38dfaeebe527df7be3David 'Digit' Turner    $NDK/ndk-build -B $JOBS 2>&1
966d0ef0df9852b3750f88bb38dfaeebe527df7be3David 'Digit' Turner}
976d0ef0df9852b3750f88bb38dfaeebe527df7be3David 'Digit' Turnerelse
986d0ef0df9852b3750f88bb38dfaeebe527df7be3David 'Digit' Turnerrun ()
996d0ef0df9852b3750f88bb38dfaeebe527df7be3David 'Digit' Turner{
1006d0ef0df9852b3750f88bb38dfaeebe527df7be3David 'Digit' Turner    $NDK/ndk-build -B $JOBS >> $MYLOG 2>&1
1016d0ef0df9852b3750f88bb38dfaeebe527df7be3David 'Digit' Turner}
1026d0ef0df9852b3750f88bb38dfaeebe527df7be3David 'Digit' Turnerfi
103d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner
104f4790e6f9e47347996e62ecd27ff55b6499cf97aDavid 'Digit' Turner# Find sample directories
105f4790e6f9e47347996e62ecd27ff55b6499cf97aDavid 'Digit' TurnerSAMPLE_DIRS=`cd $ROOTDIR && ls -d samples/*`
106f4790e6f9e47347996e62ecd27ff55b6499cf97aDavid 'Digit' TurnerSAMPLE_DIRS="$SAMPLE_DIRS "`cd $ROOTDIR && ls -d platforms/android-*/samples/*`
107f4790e6f9e47347996e62ecd27ff55b6499cf97aDavid 'Digit' Turner
108d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner#
109d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner# Rebuild all samples first
110f4790e6f9e47347996e62ecd27ff55b6499cf97aDavid 'Digit' Turner# $1: sample name
111d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner#
112d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turnerbuild_sample ()
113d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner{
114f4790e6f9e47347996e62ecd27ff55b6499cf97aDavid 'Digit' Turner    echo "Building NDK sample: `basename $1`"
115f4790e6f9e47347996e62ecd27ff55b6499cf97aDavid 'Digit' Turner    SAMPLEDIR=$ROOTDIR/$1
116f4790e6f9e47347996e62ecd27ff55b6499cf97aDavid 'Digit' Turner    cd $SAMPLEDIR
1176d0ef0df9852b3750f88bb38dfaeebe527df7be3David 'Digit' Turner    run $NDK/ndk-build -B $JOBS
118d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner    if [ $? != 0 ] ; then
119f4790e6f9e47347996e62ecd27ff55b6499cf97aDavid 'Digit' Turner        echo "!!! BUILD FAILURE [$1]!!! See $MYLOG for details or use --verbose option!"
120d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner        exit 1
121d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner    fi
122d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner}
123d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turner
124f4790e6f9e47347996e62ecd27ff55b6499cf97aDavid 'Digit' Turnerfor DIR in $SAMPLE_DIRS; do
125f4790e6f9e47347996e62ecd27ff55b6499cf97aDavid 'Digit' Turner    build_sample $DIR
126d74329cef6373a13fba75772245c5feb495aa020David 'Digit' Turnerdone
127