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"