android-rebuild.sh: Run unit test suites.

This patch modifies android-rebuild.sh to run the emulator's unit test suite
automatically after a succesfull build. As a bonus, it also hides the build/test
output unless one uses the --verbose option.

Change-Id: I318bfa9b4f1a7b31fff9f05f4e7ef90ce5f6fa00
diff --git a/android-rebuild.sh b/android-rebuild.sh
index d4bdc0a..69714ba 100755
--- a/android-rebuild.sh
+++ b/android-rebuild.sh
@@ -6,7 +6,37 @@
 # assume that the device tree is in TOP
 #
 
-case $(uname -s) in
+set -e
+export LANG=C
+export LC_ALL=C
+
+VERBOSE=0
+
+MINGW=
+for OPT; do
+    case $OPT in
+        --mingw)
+            MINGW=true
+            ;;
+        --verbose)
+            VERBOSE=$(( $VERBOSE + 1 ))
+            ;;
+        --help|-?)
+            VERBOSE=2
+            ;;
+    esac
+done
+
+run () {
+  if [ "$VERBOSE" -ge 1 ]; then
+    "$@"
+  else
+    "$@" >/dev/null 2>&1
+  fi
+}
+
+HOST_OS=$(uname -s)
+case $HOST_OS in
     Linux)
         HOST_NUM_CPUS=`cat /proc/cpuinfo | grep processor | wc -l`
         ;;
@@ -20,8 +50,30 @@
         HOST_NUM_CPUS=1
 esac
 
+# Build the binaries from sources.
 cd `dirname $0`
-rm -rf objs &&
-./android-configure.sh $@ &&
-make -j$HOST_NUM_CPUS &&
+rm -rf objs
+echo "Configuring build."
+run ./android-configure.sh "$@"
+
+echo "Building sources."
+run make -j$HOST_NUM_CPUS
+
+RUN_64BIT_TESTS=true
+
+TEST_SHELL=
+EXE_SUFFIX=
+if [ "$MINGW" ]; then
+  RUN_64BIT_TESTS=false
+  TEST_SHELL=wine
+  EXE_SUFFIX=.exe
+fi
+
+echo "Running 32-bit unit test suite."
+run $TEST_SHELL objs/emulator_unittests$EXE_SUFFIX
+if [ "$RUN_64BIT_TESTS" ]; then
+    echo "Running 64-bit unit test suite."
+    run $TEST_SHELL objs/emulator64_unittests$EXE_SUFFIX
+fi
+
 echo "Done. !!"