1 #!/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 9 set -e 10 export LANG=C 11 export LC_ALL=C 12 13 VERBOSE=0 14 15 MINGW= 16 NO_TESTS= 17 OUT_DIR=objs 18 19 for OPT; do 20 case $OPT in 21 --mingw) 22 MINGW=true 23 ;; 24 --verbose) 25 VERBOSE=$(( $VERBOSE + 1 )) 26 ;; 27 --no-tests) 28 NO_TESTS=true 29 ;; 30 --out-dir=*) 31 OUT_DIR=${OPT##--out-dir=} 32 ;; 33 --help|-?) 34 VERBOSE=2 35 ;; 36 esac 37 done 38 39 panic () { 40 echo "ERROR: $@" 41 exit 1 42 } 43 44 run () { 45 if [ "$VERBOSE" -ge 1 ]; then 46 "$@" 47 else 48 "$@" >/dev/null 2>&1 49 fi 50 } 51 52 HOST_OS=$(uname -s) 53 case $HOST_OS in 54 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 65 esac 66 67 # Build the binaries from sources. 68 cd `dirname $0` 69 rm -rf objs 70 echo "Configuring build." 71 run ./android-configure.sh --out-dir=$OUT_DIR "$@" || 72 panic "Configuration error, please run ./android-configure.sh to see why." 73 74 echo "Building sources." 75 run make -j$HOST_NUM_CPUS OBJS_DIR="$OUT_DIR" || 76 panic "Could not build sources, please run 'make' to see why." 77 78 RUN_64BIT_TESTS=true 79 80 TEST_SHELL= 81 EXE_SUFFIX= 82 if [ "$MINGW" ]; then 83 RUN_64BIT_TESTS= 84 TEST_SHELL=wine 85 EXE_SUFFIX=.exe 86 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 93 fi 94 95 if [ -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" 101 done 102 103 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 114 else 115 echo "Ignoring unit tests suite." 116 fi 117 118 echo "Done. !!" 119