Merge "Set TARGET_LIBGCC to -lgcc instead of full libgcc.a path"
diff --git a/build/core/definitions.mk b/build/core/definitions.mk
index f139aea..92ed684 100644
--- a/build/core/definitions.mk
+++ b/build/core/definitions.mk
@@ -1271,6 +1271,7 @@
))
-test-get-object-name = \
+ $(eval TARGET_OBJ_EXTENSION=.o)\
$(eval LOCAL_CPP_EXTENSION ?= .cpp)\
$(call test-expect,foo.o,$(call get-object-name,foo.c))\
$(call test-expect,bar.o,$(call get-object-name,bar.s))\
diff --git a/build/tools/package-release.sh b/build/tools/package-release.sh
index 9e80e80..332d70e 100755
--- a/build/tools/package-release.sh
+++ b/build/tools/package-release.sh
@@ -82,9 +82,18 @@
LLVM_VERSION_LIST=$DEFAULT_LLVM_VERSION_LIST
register_var_option "--llvm=<versions>" LLVM_VERSION_LIST "List of LLVM release versions"
+register_try64_option
+
SEPARATE_64=no
register_option "--separate-64" do_SEPARATE_64 "Separate 64-bit host toolchain to its own package"
-do_SEPARATE_64 () { SEPARATE_64=yes; }
+do_SEPARATE_64 ()
+{
+ if [ "$TRY64" = "yes" ]; then
+ echo "ERROR: You cannot use both --try-64 and --separate-64 at the same time."
+ exit 1
+ fi
+ SEPARATE_64=yes;
+}
PROGRAM_PARAMETERS=
PROGRAM_DESCRIPTION=\
@@ -252,24 +261,49 @@
# ensure that the generated files are ug+rx
umask 0022
+# Translate name to 64-bit's counterpart
+# $1: prebuilt name
+name64 ()
+{
+ local NAME=$1
+ case $NAME in
+ *windows)
+ NAME=${NAME}-x86_64
+ ;;
+ *linux-x86|*darwin-x86)
+ NAME=${NAME}_64
+ ;;
+ esac
+ echo $NAME
+}
+
# Unpack a prebuilt into specified destination directory
# $1: prebuilt name, relative to $PREBUILT_DIR
# $2: destination directory
# $3: optional destination directory for 64-bit toolchain
+# $4: optional flag to use 32-bit prebuilt in place of 64-bit
unpack_prebuilt ()
{
- local PREBUILT=${1}.tar.bz2
- local PREBUILT64=${1}_64.tar.bz2
- local PREBUILT64_ALT=${1}-x86_64.tar.bz2
+ local PREBUILT=
+ local PREBUILT64=null
local DDIR="$2"
local DDIR64="${3:-$DDIR}"
+ local USE32="${4:-no}"
+
+ if [ "$TRY64" = "yes" -a "$USE32" = "no" ]; then
+ PREBUILT=`name64 $1`
+ else
+ PREBUILT=$1
+ PREBUILT64=`name64 $1`
+ fi
+
+ PREBUILT=${PREBUILT}.tar.bz2
+ PREBUILT64=${PREBUILT64}.tar.bz2
+
echo "Unpacking $PREBUILT"
if [ -f "$PREBUILT_DIR/$PREBUILT" ] ; then
unpack_archive "$PREBUILT_DIR/$PREBUILT" "$DDIR"
fail_panic "Could not unpack prebuilt $PREBUILT. Aborting."
- if [ ! -f "$PREBUILT_DIR/$PREBUILT64" ] ; then
- PREBUILT64=$PREBUILT64_ALT
- fi
if [ -f "$PREBUILT_DIR/$PREBUILT64" ] ; then
echo "Unpacking $PREBUILT64"
unpack_archive "$PREBUILT_DIR/$PREBUILT64" "$DDIR64"
@@ -380,7 +414,11 @@
# invoking the NDK from a release package or from the development
# tree.
#
-echo "$RELEASE" > $REFERENCE/RELEASE.TXT
+if [ "$TRY64" = "yes" ]; then
+ echo "$RELEASE (64-bit)" > $REFERENCE/RELEASE.TXT
+else
+ echo "$RELEASE" > $REFERENCE/RELEASE.TXT
+fi
# Remove un-needed files
rm -f $REFERENCE/CleanSpec.mk
@@ -445,10 +483,11 @@
done
# Unpack prebuilt ndk-stack and other host tools
- unpack_prebuilt ndk-stack-$SYSTEM "$DSTDIR" "$DSTDIR64"
+ unpack_prebuilt ndk-stack-$SYSTEM "$DSTDIR" "$DSTDIR64" "yes"
unpack_prebuilt ndk-make-$SYSTEM "$DSTDIR" "$DSTDIR64"
unpack_prebuilt ndk-sed-$SYSTEM "$DSTDIR" "$DSTDIR64"
unpack_prebuilt ndk-awk-$SYSTEM "$DSTDIR" "$DSTDIR64"
+ unpack_prebuilt ndk-perl-$SYSTEM "$DSTDIR" "$DSTDIR64"
if [ "$SYSTEM" = "windows" ]; then
unpack_prebuilt toolbox-$SYSTEM "$DSTDIR" "$DSTDIR64"
@@ -460,14 +499,18 @@
# Create an archive for the final package. Extension depends on the
# host system.
+ ARCHIVE=$BIN_RELEASE
+ if [ "$TRY64" = "yes" ]; then
+ ARCHIVE=`name64 $ARCHIVE`
+ fi
case "$SYSTEM" in
windows)
- ARCHIVE="$BIN_RELEASE.zip"
- ARCHIVE64="$BIN_RELEASE-64bit-tools.zip"
+ ARCHIVE64="$ARCHIVE-64bit-tools.zip"
+ ARCHIVE="$ARCHIVE.zip"
;;
*)
- ARCHIVE="$BIN_RELEASE.tar.bz2"
- ARCHIVE64="$BIN_RELEASE-64bit-tools.tar.bz2"
+ ARCHIVE64="$ARCHIVE-64bit-tools.tar.bz2"
+ ARCHIVE="$ARCHIVE.tar.bz2"
;;
esac
echo "Creating $ARCHIVE"