18b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#!/bin/bash 28b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# 38b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# this script is used to rebuild all QEMU binaries for the host 48b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# platforms. 58b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# 68b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# assume that the device tree is in TOP 78b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# 88b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 9cc80ebe8392e4ffe0b74ca5d36a282226df10f6eDavid 'Digit' Turnerset -e 10cc80ebe8392e4ffe0b74ca5d36a282226df10f6eDavid 'Digit' Turnerexport LANG=C 11cc80ebe8392e4ffe0b74ca5d36a282226df10f6eDavid 'Digit' Turnerexport LC_ALL=C 12cc80ebe8392e4ffe0b74ca5d36a282226df10f6eDavid 'Digit' Turner 13cc80ebe8392e4ffe0b74ca5d36a282226df10f6eDavid 'Digit' TurnerVERBOSE=0 14cc80ebe8392e4ffe0b74ca5d36a282226df10f6eDavid 'Digit' Turner 15cc80ebe8392e4ffe0b74ca5d36a282226df10f6eDavid 'Digit' TurnerMINGW= 169f86acc688f1545bc7b5213883e013188188941aDavid 'Digit' TurnerNO_TESTS= 17a96cc267b82bde959b1738fb679ee5ac964f3f5fDavid 'Digit' TurnerOUT_DIR=objs 18a96cc267b82bde959b1738fb679ee5ac964f3f5fDavid 'Digit' Turner 19cc80ebe8392e4ffe0b74ca5d36a282226df10f6eDavid 'Digit' Turnerfor OPT; do 20cc80ebe8392e4ffe0b74ca5d36a282226df10f6eDavid 'Digit' Turner case $OPT in 21cc80ebe8392e4ffe0b74ca5d36a282226df10f6eDavid 'Digit' Turner --mingw) 22cc80ebe8392e4ffe0b74ca5d36a282226df10f6eDavid 'Digit' Turner MINGW=true 23cc80ebe8392e4ffe0b74ca5d36a282226df10f6eDavid 'Digit' Turner ;; 24cc80ebe8392e4ffe0b74ca5d36a282226df10f6eDavid 'Digit' Turner --verbose) 25cc80ebe8392e4ffe0b74ca5d36a282226df10f6eDavid 'Digit' Turner VERBOSE=$(( $VERBOSE + 1 )) 26cc80ebe8392e4ffe0b74ca5d36a282226df10f6eDavid 'Digit' Turner ;; 279f86acc688f1545bc7b5213883e013188188941aDavid 'Digit' Turner --no-tests) 289f86acc688f1545bc7b5213883e013188188941aDavid 'Digit' Turner NO_TESTS=true 299f86acc688f1545bc7b5213883e013188188941aDavid 'Digit' Turner ;; 30a96cc267b82bde959b1738fb679ee5ac964f3f5fDavid 'Digit' Turner --out-dir=*) 31a96cc267b82bde959b1738fb679ee5ac964f3f5fDavid 'Digit' Turner OUT_DIR=${OPT##--out-dir=} 32a96cc267b82bde959b1738fb679ee5ac964f3f5fDavid 'Digit' Turner ;; 33cc80ebe8392e4ffe0b74ca5d36a282226df10f6eDavid 'Digit' Turner --help|-?) 34cc80ebe8392e4ffe0b74ca5d36a282226df10f6eDavid 'Digit' Turner VERBOSE=2 35cc80ebe8392e4ffe0b74ca5d36a282226df10f6eDavid 'Digit' Turner ;; 36cc80ebe8392e4ffe0b74ca5d36a282226df10f6eDavid 'Digit' Turner esac 37cc80ebe8392e4ffe0b74ca5d36a282226df10f6eDavid 'Digit' Turnerdone 38cc80ebe8392e4ffe0b74ca5d36a282226df10f6eDavid 'Digit' Turner 39a10b316b82cde4a58bcba9d0dba2c392a8f17c0bDavid 'Digit' Turnerpanic () { 40a10b316b82cde4a58bcba9d0dba2c392a8f17c0bDavid 'Digit' Turner echo "ERROR: $@" 41a10b316b82cde4a58bcba9d0dba2c392a8f17c0bDavid 'Digit' Turner exit 1 42a10b316b82cde4a58bcba9d0dba2c392a8f17c0bDavid 'Digit' Turner} 43a10b316b82cde4a58bcba9d0dba2c392a8f17c0bDavid 'Digit' Turner 44cc80ebe8392e4ffe0b74ca5d36a282226df10f6eDavid 'Digit' Turnerrun () { 45cc80ebe8392e4ffe0b74ca5d36a282226df10f6eDavid 'Digit' Turner if [ "$VERBOSE" -ge 1 ]; then 46cc80ebe8392e4ffe0b74ca5d36a282226df10f6eDavid 'Digit' Turner "$@" 47cc80ebe8392e4ffe0b74ca5d36a282226df10f6eDavid 'Digit' Turner else 48cc80ebe8392e4ffe0b74ca5d36a282226df10f6eDavid 'Digit' Turner "$@" >/dev/null 2>&1 49cc80ebe8392e4ffe0b74ca5d36a282226df10f6eDavid 'Digit' Turner fi 50cc80ebe8392e4ffe0b74ca5d36a282226df10f6eDavid 'Digit' Turner} 51cc80ebe8392e4ffe0b74ca5d36a282226df10f6eDavid 'Digit' Turner 52cc80ebe8392e4ffe0b74ca5d36a282226df10f6eDavid 'Digit' TurnerHOST_OS=$(uname -s) 53cc80ebe8392e4ffe0b74ca5d36a282226df10f6eDavid 'Digit' Turnercase $HOST_OS in 54c3b08a0914def3f380aa57bbcb3937315ce15cebDavid 'Digit' Turner Linux) 55c3b08a0914def3f380aa57bbcb3937315ce15cebDavid 'Digit' Turner HOST_NUM_CPUS=`cat /proc/cpuinfo | grep processor | wc -l` 56c3b08a0914def3f380aa57bbcb3937315ce15cebDavid 'Digit' Turner ;; 57c3b08a0914def3f380aa57bbcb3937315ce15cebDavid 'Digit' Turner Darwin|FreeBsd) 58c3b08a0914def3f380aa57bbcb3937315ce15cebDavid 'Digit' Turner HOST_NUM_CPUS=`sysctl -n hw.ncpu` 59c3b08a0914def3f380aa57bbcb3937315ce15cebDavid 'Digit' Turner ;; 60c3b08a0914def3f380aa57bbcb3937315ce15cebDavid 'Digit' Turner CYGWIN*|*_NT-*) 61c3b08a0914def3f380aa57bbcb3937315ce15cebDavid 'Digit' Turner HOST_NUM_CPUS=$NUMBER_OF_PROCESSORS 62c3b08a0914def3f380aa57bbcb3937315ce15cebDavid 'Digit' Turner ;; 63c3b08a0914def3f380aa57bbcb3937315ce15cebDavid 'Digit' Turner *) # let's play safe here 64c3b08a0914def3f380aa57bbcb3937315ce15cebDavid 'Digit' Turner HOST_NUM_CPUS=1 65c3b08a0914def3f380aa57bbcb3937315ce15cebDavid 'Digit' Turneresac 66c3b08a0914def3f380aa57bbcb3937315ce15cebDavid 'Digit' Turner 67cc80ebe8392e4ffe0b74ca5d36a282226df10f6eDavid 'Digit' Turner# Build the binaries from sources. 688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectcd `dirname $0` 69cc80ebe8392e4ffe0b74ca5d36a282226df10f6eDavid 'Digit' Turnerrm -rf objs 70cc80ebe8392e4ffe0b74ca5d36a282226df10f6eDavid 'Digit' Turnerecho "Configuring build." 71a96cc267b82bde959b1738fb679ee5ac964f3f5fDavid 'Digit' Turnerrun ./android-configure.sh --out-dir=$OUT_DIR "$@" || 72a10b316b82cde4a58bcba9d0dba2c392a8f17c0bDavid 'Digit' Turner panic "Configuration error, please run ./android-configure.sh to see why." 73cc80ebe8392e4ffe0b74ca5d36a282226df10f6eDavid 'Digit' Turner 74cc80ebe8392e4ffe0b74ca5d36a282226df10f6eDavid 'Digit' Turnerecho "Building sources." 75a96cc267b82bde959b1738fb679ee5ac964f3f5fDavid 'Digit' Turnerrun make -j$HOST_NUM_CPUS OBJS_DIR="$OUT_DIR" || 76a10b316b82cde4a58bcba9d0dba2c392a8f17c0bDavid 'Digit' Turner panic "Could not build sources, please run 'make' to see why." 77cc80ebe8392e4ffe0b74ca5d36a282226df10f6eDavid 'Digit' Turner 78cc80ebe8392e4ffe0b74ca5d36a282226df10f6eDavid 'Digit' TurnerRUN_64BIT_TESTS=true 79cc80ebe8392e4ffe0b74ca5d36a282226df10f6eDavid 'Digit' Turner 80cc80ebe8392e4ffe0b74ca5d36a282226df10f6eDavid 'Digit' TurnerTEST_SHELL= 81cc80ebe8392e4ffe0b74ca5d36a282226df10f6eDavid 'Digit' TurnerEXE_SUFFIX= 82cc80ebe8392e4ffe0b74ca5d36a282226df10f6eDavid 'Digit' Turnerif [ "$MINGW" ]; then 83a10b316b82cde4a58bcba9d0dba2c392a8f17c0bDavid 'Digit' Turner RUN_64BIT_TESTS= 84cc80ebe8392e4ffe0b74ca5d36a282226df10f6eDavid 'Digit' Turner TEST_SHELL=wine 85cc80ebe8392e4ffe0b74ca5d36a282226df10f6eDavid 'Digit' Turner EXE_SUFFIX=.exe 86cc80ebe8392e4ffe0b74ca5d36a282226df10f6eDavid 'Digit' Turner 879f86acc688f1545bc7b5213883e013188188941aDavid 'Digit' Turner # Check for Wine on this machine. 889f86acc688f1545bc7b5213883e013188188941aDavid 'Digit' Turner WINE_CMD=$(which $TEST_SHELL 2>/dev/null || true) 899f86acc688f1545bc7b5213883e013188188941aDavid 'Digit' Turner if [ -z "$NO_TESTS" -a -z "$WINE_CMD" ]; then 909f86acc688f1545bc7b5213883e013188188941aDavid 'Digit' Turner echo "WARNING: Wine is not installed on this machine!! Unit tests will be ignored!!" 919f86acc688f1545bc7b5213883e013188188941aDavid 'Digit' Turner NO_TESTS=true 929f86acc688f1545bc7b5213883e013188188941aDavid 'Digit' Turner fi 939f86acc688f1545bc7b5213883e013188188941aDavid 'Digit' Turnerfi 94a10b316b82cde4a58bcba9d0dba2c392a8f17c0bDavid 'Digit' Turner 959f86acc688f1545bc7b5213883e013188188941aDavid 'Digit' Turnerif [ -z "$NO_TESTS" ]; then 969f86acc688f1545bc7b5213883e013188188941aDavid 'Digit' Turner echo "Running 32-bit unit test suite." 979f86acc688f1545bc7b5213883e013188188941aDavid 'Digit' Turner FAILURES="" 989f86acc688f1545bc7b5213883e013188188941aDavid 'Digit' Turner for UNIT_TEST in emulator_unittests emugl_common_host_unittests; do 999f86acc688f1545bc7b5213883e013188188941aDavid 'Digit' Turner echo " - $UNIT_TEST" 1009f86acc688f1545bc7b5213883e013188188941aDavid 'Digit' Turner run $TEST_SHELL $OUT_DIR/$UNIT_TEST$EXE_SUFFIX || FAILURES="$FAILURES $UNIT_TEST" 1011af8215c58e5c94432f04ec87d34e429fe7cd7a6David 'Digit' Turner done 1021af8215c58e5c94432f04ec87d34e429fe7cd7a6David 'Digit' Turner 1039f86acc688f1545bc7b5213883e013188188941aDavid 'Digit' Turner if [ "$RUN_64BIT_TESTS" ]; then 1049f86acc688f1545bc7b5213883e013188188941aDavid 'Digit' Turner echo "Running 64-bit unit test suite." 1059f86acc688f1545bc7b5213883e013188188941aDavid 'Digit' Turner for UNIT_TEST in emulator64_unittests emugl64_common_host_unittests; do 1069f86acc688f1545bc7b5213883e013188188941aDavid 'Digit' Turner echo " - $UNIT_TEST" 1079f86acc688f1545bc7b5213883e013188188941aDavid 'Digit' Turner run $TEST_SHELL $OUT_DIR/$UNIT_TEST$EXE_SUFFIX || FAILURES="$FAILURES $UNIT_TEST" 1089f86acc688f1545bc7b5213883e013188188941aDavid 'Digit' Turner done 1099f86acc688f1545bc7b5213883e013188188941aDavid 'Digit' Turner fi 1109f86acc688f1545bc7b5213883e013188188941aDavid 'Digit' Turner 1119f86acc688f1545bc7b5213883e013188188941aDavid 'Digit' Turner if [ "$FAILURES" ]; then 1129f86acc688f1545bc7b5213883e013188188941aDavid 'Digit' Turner panic "Unit test failures: $FAILURES" 1139f86acc688f1545bc7b5213883e013188188941aDavid 'Digit' Turner fi 1149f86acc688f1545bc7b5213883e013188188941aDavid 'Digit' Turnerelse 1159f86acc688f1545bc7b5213883e013188188941aDavid 'Digit' Turner echo "Ignoring unit tests suite." 116cc80ebe8392e4ffe0b74ca5d36a282226df10f6eDavid 'Digit' Turnerfi 117cc80ebe8392e4ffe0b74ca5d36a282226df10f6eDavid 'Digit' Turner 1188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectecho "Done. !!" 119