Merge "Add options to dev-rebuild-ndk.sh and scripts to customize NDK build"
diff --git a/build/tools/build-host-prebuilts.sh b/build/tools/build-host-prebuilts.sh
index f76101f..a1cbf29 100755
--- a/build/tools/build-host-prebuilts.sh
+++ b/build/tools/build-host-prebuilts.sh
@@ -55,6 +55,9 @@
NO_GEN_PLATFORMS=
register_var_option "--no-gen-platforms" NO_GEN_PLATFORMS "Don't generate platforms/ directory, use existing one"
+GCC_VERSION_LIST="default" # it's arch defined by default so use default keyword
+register_var_option "--gcc-version-list=<vers>" GCC_VERSION_LIST "List of GCC release versions"
+
LLVM_VERSION_LIST=$DEFAULT_LLVM_VERSION_LIST
register_var_option "--llvm-version-list=<vers>" LLVM_VERSION_LIST "List of LLVM release versions"
@@ -319,8 +322,19 @@
# Then the toolchains
for ARCH in $ARCHS; do
TOOLCHAIN_NAMES=$(get_toolchain_name_list_for_arch $ARCH)
+ if [ "$GCC_VERSION_LIST" != "default" ]; then
+ TOOLCHAINS=
+ for VERSION in $(commas_to_spaces $GCC_VERSION_LIST); do
+ for TOOLCHAIN in $TOOLCHAIN_NAMES; do
+ if [ $TOOLCHAIN != ${TOOLCHAIN%%$VERSION} ]; then
+ TOOLCHAINS="$TOOLCHAIN $TOOLCHAINS"
+ fi
+ done
+ done
+ TOOLCHAIN_NAMES=$TOOLCHAINS
+ fi
if [ -z "$TOOLCHAIN_NAMES" ]; then
- echo "ERROR: Invalid architecture name: $ARCH"
+ echo "ERROR: Toolchains: "$(spaces_to_commas $GCC_VERSION_LIST)" are not available for arch: $ARCH"
exit 1
fi
diff --git a/build/tools/dev-rebuild-ndk.sh b/build/tools/dev-rebuild-ndk.sh
index 3acc329..4bc0ec8 100755
--- a/build/tools/dev-rebuild-ndk.sh
+++ b/build/tools/dev-rebuild-ndk.sh
@@ -40,9 +40,19 @@
OPTION_QUICK_BUILD="no"
register_var_option "--quick" OPTION_QUICK_BUILD "Only build the Linux basics"
+ARCHS=$(find_ndk_unknown_archs)
+ARCHS="$DEFAULT_ARCHS $ARCHS"
+register_var_option "--arch=<arch>" ARCHS "Specify target architectures"
+
# List of toolchains to package
-OPTION_TOOLCHAINS="$DEFAULT_ARCH_TOOLCHAIN_NAME_arm,$DEFAULT_ARCH_TOOLCHAIN_NAME_x86,$DEFAULT_ARCH_TOOLCHAIN_NAME_mips"
-register_var_option "--toolchains=<toolchain[,toolchain]>" OPTION_TOOLCHAINS "Toolchain(s) to package"
+GCC_VERSION_LIST="default" # it's arch defined by default so use default keyword
+register_var_option "--gcc-version-list=<vers>" GCC_VERSION_LIST "List of GCC release versions"
+
+LLVM_VERSION_LIST=$DEFAULT_LLVM_VERSION_LIST
+register_var_option "--llvm-version-list=<vers>" LLVM_VERSION_LIST "List of LLVM release versions"
+
+OPTION_SRC_DIR=
+register_var_option "--toolchain-src-dir=<path>" OPTION_SRC_DIR "Select toolchain source directory"
OPTION_TRY_64=
register_try64_option
@@ -135,24 +145,23 @@
echo
echo "Checking for Toolchain sources"
-NDK_SRC_DIR=/tmp/ndk-$USER/src/android-ndk-src-${TOOLCHAIN_GIT_DATE}${PATCHES_SHA1}
-if [ ! -d $NDK_SRC_DIR ]
+if [ -z "$OPTION_SRC_DIR" ]
+then
+ OPTION_SRC_DIR=/tmp/ndk-$USER/src/android-ndk-src-${TOOLCHAIN_GIT_DATE}${PATCHES_SHA1}
+fi
+if [ ! -d $OPTION_SRC_DIR ]
then
echo " Downloading Toolchain sources"
- mkdir -p `dirname $NDK_SRC_DIR`
+ mkdir -p `dirname $OPTION_SRC_DIR`
logfile="$TOP/download-toolchain-sources.log"
rotate_log $logfile
- $PROGDIR/download-toolchain-sources.sh $NDK_SRC_DIR \
+ $PROGDIR/download-toolchain-sources.sh $OPTION_SRC_DIR \
> $logfile 2>&1
fail_panic "Could not download toolchain sources!"
else
- echo " Found existing $NDK_SRC_DIR"
+ echo " Found existing $OPTION_SRC_DIR"
fi
-
-ARCHS=$(find_ndk_unknown_archs)
-ARCHS="$DEFAULT_ARCHS $ARCHS"
-
# Build the platform
echo
echo "Build the ndk/platforms directory"
@@ -199,12 +208,14 @@
$PROGDIR/rebuild-all-prebuilt.sh \
--arch=$(spaces_to_commas $ARCHS) \
--package-dir=$PACKAGE_DIR \
+ --gcc-version-list="$GCC_VERSION_LIST" \
+ --llvm-version-list="$LLVM_VERSION_LIST" \
$MPFR_VERSION $GDB_VERSION $BINUTILS_VERSION \
$TARGET_PLATFORM_FLAGS \
$VERBOSE \
$OPTION_TRY_64 \
$OPTION_ALSO_64 \
- $NDK_SRC_DIR >> $logfile 2>&1
+ $OPTION_SRC_DIR >> $logfile 2>&1
fail_panic "rebuild-all-prebuilt.sh failed. Logfile in $logfile"
done # with TARGET_PLATFORM
@@ -220,17 +231,18 @@
--systems="$ALL_SYSTEMS" \
--out-dir=$PACKAGE_DIR \
--arch=$(spaces_to_commas $ARCHS) \
+ --gcc-version-list="$GCC_VERSION_LIST" \
+ --llvm-version-list="$LLVM_VERSION_LIST" \
--prefix=android-ndk-${OPTION_NDK_RELEASE} \
$OPTION_TRY_64 \
$OPTION_SEPARATE_64 \
- --no-git \
$VERBOSE > $logfile 2>&1
fail_panic "package-release.sh failed. Logfile in $logfile"
echo
echo "Packaging the NDK Toolchain sources"
NDK_TOOLCHAIN_PKG=${PACKAGE_DIR}/toolchain-src.tar.bz2
-(cd $NDK_SRC_DIR && tar cjf $NDK_TOOLCHAIN_PKG .)
+(cd $OPTION_SRC_DIR && tar cjf $NDK_TOOLCHAIN_PKG .)
fail_panic "Could not package NDK Toolchain sources!"
exit 0
diff --git a/build/tools/package-release.sh b/build/tools/package-release.sh
index 52965fa..b01da5c 100755
--- a/build/tools/package-release.sh
+++ b/build/tools/package-release.sh
@@ -60,8 +60,7 @@
register_var_option "--no-git" NO_GIT "Don't use git to list input files, take all of them."
# set of toolchain prebuilts we need to package
-TOOLCHAINS=$(get_toolchain_name_list_for_arch arm)
-OPTION_TOOLCHAINS=$TOOLCHAINS
+OPTION_TOOLCHAINS=
register_var_option "--toolchains=<list>" OPTION_TOOLCHAINS "Specify list of toolchains."
# set of platforms to package (all by default)
@@ -80,8 +79,11 @@
DEVELOPMENT_ROOT=`dirname $ANDROID_NDK_ROOT`/development/ndk
register_var_option "--development-root=<path>" DEVELOPMENT_ROOT "Specify platforms/samples directory"
+GCC_VERSION_LIST="default" # it's arch defined by default so use default keyword
+register_var_option "--gcc-version-list=<vers>" GCC_VERSION_LIST "List of GCC release versions"
+
LLVM_VERSION_LIST=$DEFAULT_LLVM_VERSION_LIST
-register_var_option "--llvm=<versions>" LLVM_VERSION_LIST "List of LLVM release versions"
+register_var_option "--llvm-version-list=<versions>" LLVM_VERSION_LIST "List of LLVM release versions"
register_try64_option
@@ -130,32 +132,6 @@
ARCHS=$(filter_out "$UNKNOWN_ARCH" "$ARCHS")
fi
-TRY_x86=
-TRY_mips=
-TRY_arm64=
-TRY_x86_64=
-TRY_mips64=
-echo "$ARCHS" | tr ' ' '\n' | grep -q x86
-if [ $? = 0 ] ; then
- TRY_x86=yes
-fi
-echo "$ARCHS" | tr ' ' '\n' | grep -q mips
-if [ $? = 0 ] ; then
- TRY_mips=yes
-fi
-echo "$ARCHS" | tr ' ' '\n' | grep -q arm64
-if [ $? = 0 ] ; then
- TRY_arm64=yes
-fi
-echo "$ARCHS" | tr ' ' '\n' | grep -q x86_64
-if [ $? = 0 ] ; then
- TRY_x86_64=yes
-fi
-echo "$ARCHS" | tr ' ' '\n' | grep -q mips64
-if [ $? = 0 ] ; then
- TRY_mips64=yes
-fi
-
# Compute ABIS from ARCHS
ABIS=
for ARCH in $ARCHS; do
@@ -181,24 +157,27 @@
if [ "$OPTION_TOOLCHAINS" != "$TOOLCHAINS" ]; then
TOOLCHAINS=$(commas_to_spaces $OPTION_TOOLCHAINS)
else
- if [ "$TRY_x86" = "yes" ]; then
- TOOLCHAINS=$TOOLCHAINS" "$(get_toolchain_name_list_for_arch x86)
- fi
- if [ "$TRY_mips" = "yes" ]; then
- TOOLCHAINS=$TOOLCHAINS" "$(get_toolchain_name_list_for_arch mips)
- fi
- if [ "$TRY_arm64" = "yes" ]; then
- TOOLCHAINS=$TOOLCHAINS" "$(get_toolchain_name_list_for_arch arm64)
- fi
- if [ "$TRY_x86_64" = "yes" ]; then
- TOOLCHAINS=$TOOLCHAINS" "$(get_toolchain_name_list_for_arch x86_64)
- fi
- if [ "$TRY_mips64" = "yes" ]; then
- TOOLCHAINS=$TOOLCHAINS" "$(get_toolchain_name_list_for_arch mips64)
- fi
+ for ARCH in $ARCHS; do
+ case $ARCH in
+ arm|arm64|x86|x86_64|mips|mips64) TOOLCHAINS=$TOOLCHAINS" "$(get_toolchain_name_list_for_arch $ARCH) ;;
+ *) echo "ERROR: Unknown arch to package: $ARCH"; exit 1 ;;
+ esac
+ done
TOOLCHAINS=$(commas_to_spaces $TOOLCHAINS)
fi
+if [ "$GCC_VERSION_LIST" != "default" ]; then
+ TOOLCHAIN_NAMES=
+ for VERSION in $(commas_to_spaces $GCC_VERSION_LIST); do
+ for TOOLCHAIN in $TOOLCHAINS; do
+ if [ $TOOLCHAIN != ${TOOLCHAIN%%$VERSION} ]; then
+ TOOLCHAIN_NAMES="$TOOLCHAIN $TOOLCHAIN_NAMES"
+ fi
+ done
+ done
+ TOOLCHAINS=$TOOLCHAIN_NAMES
+fi
+
# Check the prebuilt path
#
if [ -n "$PREBUILT_NDK" -a -n "$PREBUILT_DIR" ] ; then
@@ -248,7 +227,8 @@
echo "Architectures: $ARCHS"
echo "CPU ABIs: $ABIS"
-echo "Toolchains: $TOOLCHAINS"
+echo "GCC Toolchains: $TOOLCHAINS"
+echo "LLVM Toolchains: $LLVM_VERSION_LIST"
echo "Host systems: $SYSTEMS"
@@ -546,7 +526,9 @@
done
# Unpack mclinker
- unpack_prebuilt ld.mcld-$SYSTEM "$DSTDIR" "$DSTDIR64"
+ if [ -n "$LLVM_VERSION_LIST" ]; then
+ unpack_prebuilt ld.mcld-$SYSTEM "$DSTDIR" "$DSTDIR64"
+ fi
rm -rf $DSTDIR/toolchains/*l
rm -rf $DSTDIR64/toolchains/*l
diff --git a/build/tools/rebuild-all-prebuilt.sh b/build/tools/rebuild-all-prebuilt.sh
index 9592ba7..1772255 100755
--- a/build/tools/rebuild-all-prebuilt.sh
+++ b/build/tools/rebuild-all-prebuilt.sh
@@ -34,6 +34,12 @@
NO_GEN_PLATFORMS=
register_var_option "--no-gen-platforms" NO_GEN_PLATFORMS "Don't generate platforms/ directory, use existing one"
+GCC_VERSION_LIST="default" # it's arch defined by default so use default keyword
+register_var_option "--gcc-version-list=<vers>" GCC_VERSION_LIST "List of GCC release versions"
+
+LLVM_VERSION_LIST=$DEFAULT_LLVM_VERSION_LIST
+register_var_option "--llvm-version-list=<vers>" LLVM_VERSION_LIST "List of LLVM release versions"
+
SYSTEMS=$HOST_TAG32
if [ "$HOST_TAG32" = "linux-x86" ]; then
SYSTEMS=$SYSTEMS",windows"
@@ -103,6 +109,11 @@
fi
HOST_FLAGS=$FLAGS" --systems=$(spaces_to_commas $SYSTEMS)"
+if [ "$GCC_VERSION_LIST" != "default" ]; then
+ HOST_FLAGS=$HOST_FLAGS" --gcc-version-list=$(spaces_to_commas $GCC_VERSION_LIST)"
+fi
+HOST_FLAGS=$HOST_FLAGS" --llvm-version-list=$(spaces_to_commas $LLVM_VERSION_LIST)"
+
if [ "$TRY64" = "yes" ]; then
HOST_FLAGS=$HOST_FLAGS" --try-64"
fi