Build/package stlport and libc++ for unknown archs.

Change-Id: I0fdd757c0c585abaa256e59e2bc14212bd06a000
diff --git a/build/tools/build-target-prebuilts.sh b/build/tools/build-target-prebuilts.sh
index a1bf724..a316ebd 100755
--- a/build/tools/build-target-prebuilts.sh
+++ b/build/tools/build-target-prebuilts.sh
@@ -23,7 +23,8 @@
 NDK_DIR=$ANDROID_NDK_ROOT
 register_var_option "--ndk-dir=<path>" NDK_DIR "NDK installation directory"
 
-ARCHS=$DEFAULT_ARCHS
+ARCHS=$(find_ndk_unknown_archs)
+ARCHS="$DEFAULT_ARCHS $ARCHS"
 register_var_option "--arch=<list>" ARCHS "List of target archs to build for"
 
 PACKAGE_DIR=
@@ -61,6 +62,12 @@
 
 ARCHS=$(commas_to_spaces $ARCHS)
 
+# Detect unknown arch
+UNKNOWN_ARCH=$(filter_out "$DEFAULT_ARCHS" "$ARCHS")
+if [ ! -z "$UNKNOWN_ARCH" ]; then
+    ARCHS=$(filter_out "$UNKNOWN_ARCH" "$ARCHS")
+fi
+
 FLAGS=
 if [ "$VERBOSE" = "yes" ]; then
     FLAGS=$FLAGS" --verbose"
@@ -87,18 +94,18 @@
 
 FLAGS=$FLAGS" --ndk-dir=\"$NDK_DIR\""
 ABIS=$(convert_archs_to_abis $ARCHS)
+UNKNOWN_ABIS=$(convert_archs_to_abis $UNKNOWN_ARCH)
 
-FLAGS=$FLAGS" --abis=$ABIS"
 dump "Building $ABIS gabi++ binaries..."
-run $BUILDTOOLS/build-cxx-stl.sh --stl=gabi++ $FLAGS
+run $BUILDTOOLS/build-cxx-stl.sh --stl=gabi++ --abis="$ABIS" $FLAGS
 fail_panic "Could not build gabi++!"
 
-dump "Building $ABIS stlport binaries..."
-run $BUILDTOOLS/build-cxx-stl.sh --stl=stlport $FLAGS
+dump "Building $ABIS $UNKNOWN_ABIS stlport binaries..."
+run $BUILDTOOLS/build-cxx-stl.sh --stl=stlport --abis="$ABIS,$UNKNOWN_ABIS" $FLAGS
 fail_panic "Could not build stlport!"
 
-dump "Building $ABIS libc++ binaries..."
-run $BUILDTOOLS/build-cxx-stl.sh --stl=libc++ $FLAGS
+dump "Building $ABIS $UNKNOWN_ABIS libc++ binaries..."
+run $BUILDTOOLS/build-cxx-stl.sh --stl=libc++ --abis="$ABIS,$UNKNOWN_ABIS" $FLAGS
 fail_panic "Could not build libc++!"
 
 if [ ! -z $VISIBLE_LIBGNUSTL_STATIC ]; then
@@ -106,15 +113,15 @@
 fi
 
 dump "Building $ABIS gnustl binaries..."
-run $BUILDTOOLS/build-gnu-libstdc++.sh $FLAGS $GNUSTL_STATIC_VIS_FLAG "$SRC_DIR"
+run $BUILDTOOLS/build-gnu-libstdc++.sh --abis="$ABIS" $FLAGS $GNUSTL_STATIC_VIS_FLAG "$SRC_DIR"
 fail_panic "Could not build gnustl!"
 
 dump "Building $ABIS libportable binaries..."
-run $BUILDTOOLS/build-libportable.sh $FLAGS
+run $BUILDTOOLS/build-libportable.sh --abis="$ABIS" $FLAGS
 fail_panic "Could not build libportable!"
 
 dump "Building $ABIS compiler-rt binaries..."
-run $BUILDTOOLS/build-compiler-rt.sh $FLAGS --src-dir="$SRC_DIR/llvm-$DEFAULT_LLVM_VERSION/compiler-rt"
+run $BUILDTOOLS/build-compiler-rt.sh --abis="$ABIS" $FLAGS --src-dir="$SRC_DIR/llvm-$DEFAULT_LLVM_VERSION/compiler-rt"
 fail_panic "Could not build compiler-rt!"
 
 if [ "$PACKAGE_DIR" ]; then
diff --git a/build/tools/package-release.sh b/build/tools/package-release.sh
index bada1b2..0f5ee9f 100755
--- a/build/tools/package-release.sh
+++ b/build/tools/package-release.sh
@@ -50,7 +50,8 @@
 register_var_option "--systems=<list>" SYSTEMS "Specify host systems"
 
 # ARCH to build for
-ARCHS=$DEFAULT_ARCHS
+ARCHS=$(find_ndk_unknown_archs)
+ARCHS="$DEFAULT_ARCHS $ARCHS"
 register_var_option "--arch=<arch>" ARCHS "Specify target architecture(s)"
 
 # set to 'yes' if we should use 'git ls-files' to list the files to
@@ -124,8 +125,15 @@
 # Ensure that SYSTEMS is space-separated
 SYSTEMS=$(commas_to_spaces $SYSTEMS)
 
-# Do we need to support x86?
+# Detect unknown archs
 ARCHS=$(commas_to_spaces $ARCHS)
+UNKNOWN_ARCH=$(filter_out "$DEFAULT_ARCHS" "$ARCHS")
+if [ ! -z "$UNKNOWN_ARCH" ]; then
+    ARCHS=$(filter_out "$UNKNOWN_ARCH" "$ARCHS")
+fi
+
+# Do we need to support x86?
+
 echo "$ARCHS" | tr ' ' '\n' | grep -q x86
 if [ $? = 0 ] ; then
     TRY_X86=yes
@@ -151,6 +159,8 @@
     fi
 done
 
+UNKNOWN_ABIS=$(convert_archs_to_abis $UNKNOWN_ARCH)
+
 # Convert comma-separated list to space-separated list
 LLVM_VERSION_LIST=$(commas_to_spaces $LLVM_VERSION_LIST)
 
@@ -410,6 +420,12 @@
         unpack_prebuilt libportable-libs-$ABI "$REFERENCE"
         unpack_prebuilt compiler-rt-libs-$ABI "$REFERENCE"
     done
+    for ABI in $UNKNOWN_ABIS; do
+        unpack_prebuilt stlport-libs-$ABI "$REFERENCE"
+        if [ "$WITH_LIBCXX" ]; then
+            unpack_prebuilt libcxx-libs-$ABI "$REFERENCE"
+        fi
+    done
 fi
 
 # create a release file named 'RELEASE.TXT' containing the release
@@ -456,7 +472,7 @@
         fi
 
         if [ -d "$DSTDIR/$STLPORT_SUBDIR" ] ; then
-            STLPORT_ABIS=$PREBUILT_ABIS
+            STLPORT_ABIS=$PREBUILT_ABIS $UNKNOWN_ABIS
             for STL_ABI in $STLPORT_ABIS; do
                 copy_prebuilt "$STLPORT_SUBDIR/libs/$STL_ABI" "$STLPORT_SUBDIR/libs"
             done
@@ -466,7 +482,7 @@
 
         if [ "$WITH_LIBCXX" ]; then
             if [ -d "$DSTDIR/$LIBCXX_SUBDIR" ]; then
-                LIBCXX_ABIS=$PREBUILT_ABIS
+                LIBCXX_ABIS=$PREBUILT_ABIS $UNKNOWN_ABIS
                 for STL_ABI in $LIBCXX_ABIS; do
                     copy_prebuilt "$LIBCXX_SUBDIR/libs/$STL_ABI" "$LIBCXX_SUBDIR/libs"
                 done
diff --git a/build/tools/prebuilt-common.sh b/build/tools/prebuilt-common.sh
index 2138372..6626a5b 100644
--- a/build/tools/prebuilt-common.sh
+++ b/build/tools/prebuilt-common.sh
@@ -1142,12 +1142,20 @@
 # Return: the list of found arch names
 find_ndk_archs ()
 {
+    local NDK_ROOT_DIR
     local RESULT FOUND_ARCHS
-    if [ ! -d $NDK_DIR/platforms ]; then
-        echo "ERROR: Cannot find directory '$NDK_DIR/platforms'!"
+
+    if [ ! -z "$NDK_DIR" ]; then
+        NDK_ROOT_DIR=$NDK_DIR
+    else
+        NDK_ROOT_DIR=$ANDROID_NDK_ROOT
+    fi
+
+    if [ ! -d $NDK_ROOT_DIR/platforms ]; then
+        echo "ERROR: Cannot find directory '$NDK_ROOT_DIR/platforms'!"
         exit 1
     fi
-    RESULT=$(ls $NDK_DIR/platforms/android-* | grep "arch-")
+    RESULT=$(ls $NDK_ROOT_DIR/platforms/android-* | grep "arch-")
     for arch in $RESULT; do
         arch=$(basename $arch | sed -e 's/^arch-//')
         FOUND_ARCHS="$FOUND_ARCHS $arch"