Fix running the tests on the host again.

Bug: N/A
Test: ran the tests on the host under glibc
Change-Id: Id05a896bdd11b231304ed1a08ef24e1a661ee20d
diff --git a/build/run-on-host.sh b/build/run-on-host.sh
new file mode 100644
index 0000000..c3a2751
--- /dev/null
+++ b/build/run-on-host.sh
@@ -0,0 +1,47 @@
+#!/bin/bash -e
+
+source ${ANDROID_BUILD_TOP}/build/envsetup.sh
+
+TARGET_ARCH=$(get_build_var TARGET_ARCH)
+TARGET_OUT=$(get_build_var TARGET_OUT)
+TARGET_OUT_EXECUTABLES=$(get_build_var TARGET_OUT_EXECUTABLES)
+TARGET_OUT_DATA=$(get_build_var TARGET_OUT_DATA)
+HOST_OS=$(get_build_var HOST_OS)
+HOST_ARCH=$(get_build_var HOST_ARCH)
+HOST_OUT=$(get_build_var HOST_OUT)
+
+function prepare()
+{
+    BITS=$1
+    shift
+
+    NATIVETEST=${TARGET_OUT_DATA}/nativetest
+    if [ "${BITS}" = 64 ]; then
+        NATIVETEST=${NATIVETEST}64
+    fi
+
+    if [ ${TARGET_ARCH} = arm -o ${TARGET_ARCH} = mips -o ${TARGET_ARCH} = x86 ]; then
+        LINKER=${TARGET_OUT_EXECUTABLES}/linker
+    else
+        LINKER="${TARGET_OUT_EXECUTABLES}/linker64 ${TARGET_OUT_EXECUTABLES}/linker"
+    fi
+
+    if [ ${TARGET_ARCH} = x86 -o ${TARGET_ARCH} = x86_64 ]; then
+        m -j ${LINKER} ${TARGET_OUT}/etc/hosts ${TARGET_OUT_EXECUTABLES}/sh $@
+
+        if [ ! -d /system ]; then
+            echo "Attempting to create /system";
+            sudo mkdir -p -m 0777 /system;
+        fi
+        (
+            cd ${ANDROID_BUILD_TOP}
+            mkdir -p ${TARGET_OUT_DATA}/local/tmp
+            ln -fs `realpath ${TARGET_OUT}/bin` /system/
+            ln -fs `realpath ${TARGET_OUT}/etc` /system/
+            ln -fs `realpath ${TARGET_OUT}/lib` /system/
+            if [ -d "${TARGET_OUT}/lib64" ]; then
+                ln -fs `realpath ${TARGET_OUT}/lib64` /system/;
+            fi
+        )
+    fi
+}
diff --git a/tests/run-on-host.sh b/tests/run-on-host.sh
index c47bc4f..c8a30f5 100755
--- a/tests/run-on-host.sh
+++ b/tests/run-on-host.sh
@@ -3,32 +3,33 @@
 . $(dirname $0)/../build/run-on-host.sh
 
 if [ "$1" = glibc ]; then
-    m -j bionic-unit-tests-glibc
-    (
-        cd ${ANDROID_BUILD_TOP}
-        export ANDROID_DATA=${TARGET_OUT_DATA}
-        export ANDROID_ROOT=${TARGET_OUT}
-        ${HOST_OUT}/nativetest64/bionic-unit-tests-glibc/bionic-unit-tests-glibc $@
-    )
-    exit 0
+  shift
+  m -j bionic-unit-tests-glibc
+  (
+    cd ${ANDROID_BUILD_TOP}
+    export ANDROID_DATA=${TARGET_OUT_DATA}
+    export ANDROID_ROOT=${TARGET_OUT}
+    ${HOST_OUT}/nativetest64/bionic-unit-tests-glibc/bionic-unit-tests-glibc $@
+  )
+  exit 0
 elif [ "$1" != 32 -a "$1" != 64 ]; then
-    echo "Usage: $0 [ 32 | 64 | glibc ] [gtest flags]"
-    exit 1
+  echo "Usage: $0 [ 32 | 64 | glibc ] [gtest flags]"
+  exit 1
 fi
 
 if [ ${HOST_OS}-${HOST_ARCH} = linux-x86 -o ${HOST_OS}-${HOST_ARCH} = linux-x86_64 ]; then
 
-    prepare $1 bionic-unit-tests
+  prepare $1 bionic-unit-tests
 
-    if [ ${TARGET_ARCH} = x86 -o ${TARGET_ARCH} = x86_64 ]; then
-        (
-            cd ${ANDROID_BUILD_TOP}
-            export ANDROID_DATA=${TARGET_OUT_DATA}
-            export ANDROID_DNS_MODE=local
-            export ANDROID_ROOT=${TARGET_OUT}
-            ${NATIVETEST}/bionic-unit-tests/bionic-unit-tests $@
-        )
-    else
-        echo "$0 not supported on TARGET_ARCH=$TARGET_ARCH"
-    fi
+  if [ ${TARGET_ARCH} = x86 -o ${TARGET_ARCH} = x86_64 ]; then
+    (
+      cd ${ANDROID_BUILD_TOP}
+      export ANDROID_DATA=${TARGET_OUT_DATA}
+      export ANDROID_DNS_MODE=local
+      export ANDROID_ROOT=${TARGET_OUT}
+      ${NATIVETEST}/bionic-unit-tests/bionic-unit-tests $@
+    )
+  else
+    echo "$0 not supported on TARGET_ARCH=$TARGET_ARCH"
+  fi
 fi