blob: 8b54f093eeaffd722201b96d7d9b405ea143cfa3 [file] [log] [blame]
The Android Open Source Project8b23a6c2009-03-03 19:30:32 -08001#!/bin/bash
2#
3# this script is used to rebuild all QEMU binaries for the host
4# platforms.
5#
6# assume that the device tree is in TOP
7#
8
David 'Digit' Turnercc80ebe2014-02-10 11:40:49 +01009set -e
10export LANG=C
11export LC_ALL=C
12
13VERBOSE=0
14
15MINGW=
David 'Digit' Turner9f86acc2014-05-13 11:22:12 +020016NO_TESTS=
David 'Digit' Turnera96cc262014-05-12 21:28:34 +020017OUT_DIR=objs
18
David 'Digit' Turnercc80ebe2014-02-10 11:40:49 +010019for OPT; do
20 case $OPT in
21 --mingw)
22 MINGW=true
23 ;;
24 --verbose)
25 VERBOSE=$(( $VERBOSE + 1 ))
26 ;;
David 'Digit' Turner9f86acc2014-05-13 11:22:12 +020027 --no-tests)
28 NO_TESTS=true
29 ;;
David 'Digit' Turnera96cc262014-05-12 21:28:34 +020030 --out-dir=*)
31 OUT_DIR=${OPT##--out-dir=}
32 ;;
David 'Digit' Turnercc80ebe2014-02-10 11:40:49 +010033 --help|-?)
34 VERBOSE=2
35 ;;
36 esac
37done
38
David 'Digit' Turnera10b3162014-02-18 15:36:05 +010039panic () {
40 echo "ERROR: $@"
41 exit 1
42}
43
David 'Digit' Turnercc80ebe2014-02-10 11:40:49 +010044run () {
45 if [ "$VERBOSE" -ge 1 ]; then
46 "$@"
47 else
48 "$@" >/dev/null 2>&1
49 fi
50}
51
52HOST_OS=$(uname -s)
53case $HOST_OS in
David 'Digit' Turnerc3b08a02011-05-10 12:58:05 +020054 Linux)
55 HOST_NUM_CPUS=`cat /proc/cpuinfo | grep processor | wc -l`
56 ;;
57 Darwin|FreeBsd)
58 HOST_NUM_CPUS=`sysctl -n hw.ncpu`
59 ;;
60 CYGWIN*|*_NT-*)
61 HOST_NUM_CPUS=$NUMBER_OF_PROCESSORS
62 ;;
63 *) # let's play safe here
64 HOST_NUM_CPUS=1
65esac
66
David 'Digit' Turnercc80ebe2014-02-10 11:40:49 +010067# Build the binaries from sources.
The Android Open Source Project8b23a6c2009-03-03 19:30:32 -080068cd `dirname $0`
David 'Digit' Turnercc80ebe2014-02-10 11:40:49 +010069rm -rf objs
70echo "Configuring build."
David 'Digit' Turnera96cc262014-05-12 21:28:34 +020071run ./android-configure.sh --out-dir=$OUT_DIR "$@" ||
David 'Digit' Turnera10b3162014-02-18 15:36:05 +010072 panic "Configuration error, please run ./android-configure.sh to see why."
David 'Digit' Turnercc80ebe2014-02-10 11:40:49 +010073
74echo "Building sources."
David 'Digit' Turnera96cc262014-05-12 21:28:34 +020075run make -j$HOST_NUM_CPUS OBJS_DIR="$OUT_DIR" ||
David 'Digit' Turnera10b3162014-02-18 15:36:05 +010076 panic "Could not build sources, please run 'make' to see why."
David 'Digit' Turnercc80ebe2014-02-10 11:40:49 +010077
78RUN_64BIT_TESTS=true
79
80TEST_SHELL=
81EXE_SUFFIX=
82if [ "$MINGW" ]; then
David 'Digit' Turnera10b3162014-02-18 15:36:05 +010083 RUN_64BIT_TESTS=
David 'Digit' Turnercc80ebe2014-02-10 11:40:49 +010084 TEST_SHELL=wine
85 EXE_SUFFIX=.exe
David 'Digit' Turner9f86acc2014-05-13 11:22:12 +020086
87 # Check for Wine on this machine.
88 WINE_CMD=$(which $TEST_SHELL 2>/dev/null || true)
89 if [ -z "$NO_TESTS" -a -z "$WINE_CMD" ]; then
90 echo "WARNING: Wine is not installed on this machine!! Unit tests will be ignored!!"
91 NO_TESTS=true
92 fi
David 'Digit' Turnercc80ebe2014-02-10 11:40:49 +010093fi
94
David 'Digit' Turner9f86acc2014-05-13 11:22:12 +020095if [ -z "$NO_TESTS" ]; then
96 echo "Running 32-bit unit test suite."
97 FAILURES=""
98 for UNIT_TEST in emulator_unittests emugl_common_host_unittests; do
99 echo " - $UNIT_TEST"
100 run $TEST_SHELL $OUT_DIR/$UNIT_TEST$EXE_SUFFIX || FAILURES="$FAILURES $UNIT_TEST"
David 'Digit' Turner1af82152014-03-03 20:41:37 +0100101 done
David 'Digit' Turner1af82152014-03-03 20:41:37 +0100102
David 'Digit' Turner9f86acc2014-05-13 11:22:12 +0200103 if [ "$RUN_64BIT_TESTS" ]; then
104 echo "Running 64-bit unit test suite."
105 for UNIT_TEST in emulator64_unittests emugl64_common_host_unittests; do
106 echo " - $UNIT_TEST"
107 run $TEST_SHELL $OUT_DIR/$UNIT_TEST$EXE_SUFFIX || FAILURES="$FAILURES $UNIT_TEST"
108 done
109 fi
110
111 if [ "$FAILURES" ]; then
112 panic "Unit test failures: $FAILURES"
113 fi
114else
115 echo "Ignoring unit tests suite."
David 'Digit' Turnercc80ebe2014-02-10 11:40:49 +0100116fi
117
The Android Open Source Project8b23a6c2009-03-03 19:30:32 -0800118echo "Done. !!"