Add --separate-64 to package-release.sh

NDK package may become too big with the inclusion of 64-bit
toolchain.  Add a new switch to optionally separate 64-bit
toolchain to its own package.

Also fix to remove sysroot from 64-bit windows toolchain

Change-Id: I5d54bfc351a8b5a6192d727984f7c8c555bd74d7
diff --git a/build/tools/package-release.sh b/build/tools/package-release.sh
index eea9f2e..b6f518b 100755
--- a/build/tools/package-release.sh
+++ b/build/tools/package-release.sh
@@ -82,6 +82,10 @@
 LLVM_VERSION_LIST=$DEFAULT_LLVM_VERSION_LIST
 register_var_option "--llvm=<versions>" LLVM_VERSION_LIST "List of LLVM release versions"
 
+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; }
+
 PROGRAM_PARAMETERS=
 PROGRAM_DESCRIPTION=\
 "Package a new set of release packages for the Android NDK.
@@ -248,16 +252,17 @@
 # ensure that the generated files are ug+rx
 umask 0022
 
-# Unpack a prebuilt into the default destination directory $DSTDIR
-# Also unpack 64-bit version if exists
+# Unpack a prebuilt into specified destination directory
 # $1: prebuilt name, relative to $PREBUILT_DIR
-# $2: optional, destination directory
+# $2: destination directory
+# $3: optional destination directory for 64-bit toolchain
 unpack_prebuilt ()
 {
     local PREBUILT=${1}.tar.bz2
     local PREBUILT64=${1}_64.tar.bz2
     local PREBUILT64_ALT=${1}-x86_64.tar.bz2
-    local DDIR="${2:-$DSTDIR}"
+    local DDIR="$2"
+    local DDIR64="${3:-$DDIR}"
     echo "Unpacking $PREBUILT"
     if [ -f "$PREBUILT_DIR/$PREBUILT" ] ; then
         unpack_archive "$PREBUILT_DIR/$PREBUILT" "$DDIR"
@@ -267,7 +272,7 @@
         fi
         if [ -f "$PREBUILT_DIR/$PREBUILT64" ] ; then
             echo "Unpacking $PREBUILT64"
-            unpack_archive "$PREBUILT_DIR/$PREBUILT64" "$DDIR"
+            unpack_archive "$PREBUILT_DIR/$PREBUILT64" "$DDIR64"
             fail_panic "Could not unpack prebuilt $PREBUILT64. Aborting."
         fi
     else
@@ -382,11 +387,17 @@
 
 # now, for each system, create a package
 #
+DSTDIR=$TMPDIR/$RELEASE_PREFIX
+DSTDIR64=${DSTDIR}
+if [ "$SEPARATE_64" = "yes" ] ; then
+    DSTDIR64=$TMPDIR/64/${RELEASE_PREFIX}
+fi
+
 for SYSTEM in $SYSTEMS; do
     echo "Preparing package for system $SYSTEM."
     BIN_RELEASE=$RELEASE_PREFIX-$SYSTEM
-    DSTDIR=$TMPDIR/$RELEASE_PREFIX
-    rm -rf $DSTDIR &&
+    rm -rf "$DSTDIR" "$DSTDIR64" &&
+    mkdir -p "$DSTDIR" "$DSTDIR64" &&
     copy_directory "$REFERENCE" "$DSTDIR"
     fail_panic "Could not copy reference. Aborting."
 
@@ -421,49 +432,55 @@
     else
         # Unpack toolchains
         for TC in $TOOLCHAINS; do
-            unpack_prebuilt $TC-$SYSTEM
+            unpack_prebuilt $TC-$SYSTEM "$DSTDIR" "$DSTDIR64"
             echo "Removing sysroot for $TC"
             rm -rf $DSTDIR/toolchains/$TC/prebuilt/$SYSTEM/sysroot
-            rm -rf $DSTDIR/toolchains/$TC/prebuilt/${SYSTEM}_64/sysroot
+            rm -rf $DSTDIR64/toolchains/$TC/prebuilt/${SYSTEM}_64/sysroot
+            rm -rf $DSTDIR64/toolchains/$TC/prebuilt/${SYSTEM}-x86_64/sysroot
         done
 
         # Unpack llvm and clang
         for LLVM_VERSION in $LLVM_VERSION_LIST; do
-            unpack_prebuilt llvm-$LLVM_VERSION-$SYSTEM
+            unpack_prebuilt llvm-$LLVM_VERSION-$SYSTEM "$DSTDIR" "$DSTDIR64"
         done
 
         # Unpack prebuilt ndk-stack and other host tools
-        unpack_prebuilt ndk-stack-$SYSTEM
-        unpack_prebuilt ndk-make-$SYSTEM
-        unpack_prebuilt ndk-sed-$SYSTEM
-        unpack_prebuilt ndk-awk-$SYSTEM
+        unpack_prebuilt ndk-stack-$SYSTEM "$DSTDIR" "$DSTDIR64"
+        unpack_prebuilt ndk-make-$SYSTEM "$DSTDIR" "$DSTDIR64"
+        unpack_prebuilt ndk-sed-$SYSTEM "$DSTDIR" "$DSTDIR64"
+        unpack_prebuilt ndk-awk-$SYSTEM "$DSTDIR" "$DSTDIR64"
 
         if [ "$SYSTEM" = "windows" ]; then
-            unpack_prebuilt toolbox-$SYSTEM
+            unpack_prebuilt toolbox-$SYSTEM "$DSTDIR" "$DSTDIR64"
         fi
     fi
 
     # Unpack other host tools
-    unpack_prebuilt scan-build
+    unpack_prebuilt scan-build "$DSTDIR" "$DSTDIR64"
 
     # Create an archive for the final package. Extension depends on the
     # host system.
     case "$SYSTEM" in
         windows)
             ARCHIVE="$BIN_RELEASE.zip"
+            ARCHIVE64="$BIN_RELEASE-64bit-tools.zip"
             ;;
         *)
             ARCHIVE="$BIN_RELEASE.tar.bz2"
+            ARCHIVE64="$BIN_RELEASE-64bit-tools.tar.bz2"
             ;;
     esac
     echo "Creating $ARCHIVE"
     # make all file universally readable, and all executable (including directory)
     # universally executable, punt intended
-    find $DSTDIR -exec chmod a+r {} \;
-    find $DSTDIR -executable -exec chmod a+x {} \;
+    find $DSTDIR $DSTDIR64 -exec chmod a+r {} \;
+    find $DSTDIR $DSTDIR64 -executable -exec chmod a+x {} \;
     pack_archive "$OUT_DIR/$ARCHIVE" "$TMPDIR" "$RELEASE_PREFIX"
     fail_panic "Could not create archive: $OUT_DIR/$ARCHIVE"
-#    chmod a+r $TMPDIR/$ARCHIVE
+    if [ "$SEPARATE_64" = "yes" ] ; then
+        pack_archive "$OUT_DIR/$ARCHIVE64" "$TMPDIR/64" "${RELEASE_PREFIX}"
+        fail_panic "Could not create archive: $OUT_DIR/$ARCHIVE64"
+    fi
 done
 
 echo "Cleaning up."