make-release.sh revision ea573da2c3f1a8379f4344d023035fdf795c768d
1c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner#!/bin/sh 2c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner# 3849a5c1101965b920b49a5620511661bf6870062David 'Digit' Turner# Copyright (C) 2009 The Android Open Source Project 4849a5c1101965b920b49a5620511661bf6870062David 'Digit' Turner# 5849a5c1101965b920b49a5620511661bf6870062David 'Digit' Turner# Licensed under the Apache License, Version 2.0 (the "License"); 6849a5c1101965b920b49a5620511661bf6870062David 'Digit' Turner# you may not use this file except in compliance with the License. 7849a5c1101965b920b49a5620511661bf6870062David 'Digit' Turner# You may obtain a copy of the License at 8849a5c1101965b920b49a5620511661bf6870062David 'Digit' Turner# 9849a5c1101965b920b49a5620511661bf6870062David 'Digit' Turner# http://www.apache.org/licenses/LICENSE-2.0 10849a5c1101965b920b49a5620511661bf6870062David 'Digit' Turner# 11849a5c1101965b920b49a5620511661bf6870062David 'Digit' Turner# Unless required by applicable law or agreed to in writing, software 12849a5c1101965b920b49a5620511661bf6870062David 'Digit' Turner# distributed under the License is distributed on an "AS IS" BASIS, 13849a5c1101965b920b49a5620511661bf6870062David 'Digit' Turner# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14849a5c1101965b920b49a5620511661bf6870062David 'Digit' Turner# See the License for the specific language governing permissions and 15849a5c1101965b920b49a5620511661bf6870062David 'Digit' Turner# limitations under the License. 16849a5c1101965b920b49a5620511661bf6870062David 'Digit' Turner# 17c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner# This script is used to build complete Android NDK release packages 18c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner# from the git repository and a set of prebuilt cross-toolchain tarballs 19c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner# 20c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner 21c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner# location of the root ndk directory. we assume this script is under build/tools 22c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' TurnerNDK_ROOT_DIR=`dirname $0`/../.. 23c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' TurnerNDK_ROOT_DIR=`cd $NDK_ROOT_DIR && pwd` 24c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner 25721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner. $NDK_ROOT_DIR/build/core/ndk-common.sh 26721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turnerforce_32bit_binaries 27721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner 28721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner# the default release name (use today's date) 29721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' TurnerRELEASE=`date +%Y%m%d` 30c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner 31cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner# the package prefix 32cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' TurnerPREFIX=android-ndk 33cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner 34450766678abf628559f96700082d29689ad1b2b6David 'Digit' Turner# the prefix of prebuilt toolchain tarballs 35450766678abf628559f96700082d29689ad1b2b6David 'Digit' TurnerPREBUILT_PREFIX= 36c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner 37c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner# the list of supported host development systems 38cf34139a6b3c59f36bfe09ce3299b4578c99073eDavid 'Digit' TurnerPREBUILT_SYSTEMS="linux-x86 darwin-x86 windows" 39c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner 40721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner# a prebuilt NDK archive (.zip file). empty means don't use any 41721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' TurnerPREBUILT_NDK= 42721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner 436157bc1f5291c9a50691c8878830fbba8e11f710David 'Digit' Turner# default location for generated packages 446157bc1f5291c9a50691c8878830fbba8e11f710David 'Digit' TurnerOUT_DIR=/tmp/ndk-release 456157bc1f5291c9a50691c8878830fbba8e11f710David 'Digit' Turner 46721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner# set to 'yes' if we should use 'git ls-files' to list the files to 47721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner# be copied into the archive. 48721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' TurnerUSE_GIT_FILES=yes 49721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner 5077d9a08814a063577d086dc356a5a55d5ff55bf6David 'Digit' Turner# set of platforms to package (all by default) 5177d9a08814a063577d086dc356a5a55d5ff55bf6David 'Digit' TurnerPLATFORMS= 52a775f5537568f4768cd61931bb1b5314694adc96David 'Digit' Turner 5377d9a08814a063577d086dc356a5a55d5ff55bf6David 'Digit' Turner# Find the location of the platforms root directory 5477d9a08814a063577d086dc356a5a55d5ff55bf6David 'Digit' TurnerDEVELOPMENT_ROOT=`dirname $NDK_ROOT_DIR`/development/ndk 55a775f5537568f4768cd61931bb1b5314694adc96David 'Digit' Turner 56cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' TurnerOPTION_HELP=no 576157bc1f5291c9a50691c8878830fbba8e11f710David 'Digit' TurnerOPTION_OUT_DIR= 58cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner 59cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turnerfor opt do 60cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'` 61cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner case "$opt" in 62cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner --help|-h|-\?) OPTION_HELP=yes 63cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner ;; 64cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner --verbose) 65cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner if [ "$VERBOSE" = "yes" ] ; then 66cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner VERBOSE2=yes 67cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner else 68cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner VERBOSE=yes 69cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner fi 70cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner ;; 71cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner --release=*) RELEASE=$optarg 72cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner ;; 73cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner --prefix=*) PREFIX=$optarg 74cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner ;; 75721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner --prebuilt-ndk=*) PREBUILT_NDK=$optarg 76721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner ;; 77cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner --prebuilt-prefix=*) PREBUILT_PREFIX=$optarg 78cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner ;; 79cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner --systems=*) PREBUILT_SYSTEMS=$optarg 80cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner ;; 8177d9a08814a063577d086dc356a5a55d5ff55bf6David 'Digit' Turner --platforms=*) PLATFORMS=$optarg 82721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner ;; 8377d9a08814a063577d086dc356a5a55d5ff55bf6David 'Digit' Turner --no-git) USE_GIT_FILES=no 84a775f5537568f4768cd61931bb1b5314694adc96David 'Digit' Turner ;; 8577d9a08814a063577d086dc356a5a55d5ff55bf6David 'Digit' Turner --development-root=*) DEVELOPMENT_ROOT=$optarg 86a775f5537568f4768cd61931bb1b5314694adc96David 'Digit' Turner ;; 876157bc1f5291c9a50691c8878830fbba8e11f710David 'Digit' Turner --out-dir=*) OPTION_OUT_DIR=$optarg 886157bc1f5291c9a50691c8878830fbba8e11f710David 'Digit' Turner ;; 89cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner *) 90cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner echo "unknown option '$opt', use --help" 91cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner exit 1 92cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner esac 93cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turnerdone 94cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner 95cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turnerif [ $OPTION_HELP = yes ] ; then 96cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner echo "Usage: make-release.sh [options]" 97cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner echo "" 98cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner echo "Package a new set of release packages for the Android NDK." 99cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner echo "" 100450766678abf628559f96700082d29689ad1b2b6David 'Digit' Turner echo "You will need to have generated one or more prebuilt toolchain tarballs" 101450766678abf628559f96700082d29689ad1b2b6David 'Digit' Turner echo "with the build/tools/build-toolchain.sh script. These files should be" 102450766678abf628559f96700082d29689ad1b2b6David 'Digit' Turner echo "named like <prefix>-<system>.tar.bz2, where <prefix> is an arbitrary" 103450766678abf628559f96700082d29689ad1b2b6David 'Digit' Turner echo "prefix and <system> is one of: $PREBUILT_SYSTEMS" 104450766678abf628559f96700082d29689ad1b2b6David 'Digit' Turner echo "" 105450766678abf628559f96700082d29689ad1b2b6David 'Digit' Turner echo "Use the --prebuilt-prefix=<path>/<prefix> option to build release" 106450766678abf628559f96700082d29689ad1b2b6David 'Digit' Turner echo "packages from these tarballs." 107450766678abf628559f96700082d29689ad1b2b6David 'Digit' Turner echo "" 108450766678abf628559f96700082d29689ad1b2b6David 'Digit' Turner echo "Alternatively, you can use --prebuilt-ndk=<file> where <file> is the" 109450766678abf628559f96700082d29689ad1b2b6David 'Digit' Turner echo "path to a previous official NDK release package. It will be used to" 110450766678abf628559f96700082d29689ad1b2b6David 'Digit' Turner echo "extract the toolchain binaries and copy them to your new release." 111f051ab722edb8c443e73dea83724e50f6c858970David 'Digit' Turner echo "Only use this for experimental release packages!" 112450766678abf628559f96700082d29689ad1b2b6David 'Digit' Turner echo "" 113450766678abf628559f96700082d29689ad1b2b6David 'Digit' Turner echo "The generated release packages will be stored in a temporary directory" 114450766678abf628559f96700082d29689ad1b2b6David 'Digit' Turner echo "that will be printed at the end of the generation process." 115721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner echo "" 116cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner echo "Options: [defaults in brackets after descriptions]" 117cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner echo "" 118cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner echo " --help Print this help message" 119450766678abf628559f96700082d29689ad1b2b6David 'Digit' Turner echo " --prefix=PREFIX Release package prefix name [$PREFIX]" 120cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner echo " --release=NAME Specify release name [$RELEASE]" 121cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner echo " --prebuilt-prefix=PREFIX Prefix of prebuilt binary tarballs [$PREBUILT_PREFIX]" 122450766678abf628559f96700082d29689ad1b2b6David 'Digit' Turner echo " --prebuilt-ndk=FILE Specify a previous NDK package [$PREBUILT_NDK]" 123450766678abf628559f96700082d29689ad1b2b6David 'Digit' Turner echo " --systems=SYSTEMS List of host system packages [$PREBUILT_SYSTEMS]" 12477d9a08814a063577d086dc356a5a55d5ff55bf6David 'Digit' Turner echo " --platforms=PLATFORMS List of platforms to include [all]" 125721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner echo " --no-git Don't use git to list input files, take all of them." 12677d9a08814a063577d086dc356a5a55d5ff55bf6David 'Digit' Turner echo " --development-root=PATH Specify platforms/samples directory [$DEVELOPMENT_ROOT]" 1276157bc1f5291c9a50691c8878830fbba8e11f710David 'Digit' Turner echo " --out-dir=PATH Specify output package directory [$OUT_DIR]" 128cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner echo "" 129cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner exit 1 130cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turnerfi 131cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner 132cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner# Check the prebuilt path 133cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner# 134450766678abf628559f96700082d29689ad1b2b6David 'Digit' Turnerif [ -n "$PREBUILD_NDK" -a -n "$PREBUILT_PREFIX" ] ; then 135450766678abf628559f96700082d29689ad1b2b6David 'Digit' Turner echo "ERROR: You cannot use both --prebuilt-ndk and --prebuilt-prefix at the same time." 136cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner exit 1 137cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turnerfi 138cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner 139450766678abf628559f96700082d29689ad1b2b6David 'Digit' Turnerif [ -z "$PREBUILT_PREFIX" -a -z "$PREBUILT_NDK" ] ; then 140450766678abf628559f96700082d29689ad1b2b6David 'Digit' Turner echo "ERROR: You must use one of --prebuilt-prefix or --prebuilt-ndk. See --help for details." 141cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner exit 1 142cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turnerfi 143cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner 1446157bc1f5291c9a50691c8878830fbba8e11f710David 'Digit' Turnerif [ -n "$OPTION_OUT_DIR" ] ; then 1456157bc1f5291c9a50691c8878830fbba8e11f710David 'Digit' Turner OUT_DIR="$OPTION_OUT_DIR" 1466157bc1f5291c9a50691c8878830fbba8e11f710David 'Digit' Turner if [ ! -d $OUT_DIR ] ; then 1476157bc1f5291c9a50691c8878830fbba8e11f710David 'Digit' Turner mkdir -p $OUT_DIR 1486157bc1f5291c9a50691c8878830fbba8e11f710David 'Digit' Turner if [ $? != 0 ] ; then 1496157bc1f5291c9a50691c8878830fbba8e11f710David 'Digit' Turner echo "ERROR: Could not create output directory: $OUT_DIR" 1506157bc1f5291c9a50691c8878830fbba8e11f710David 'Digit' Turner exit 1 1516157bc1f5291c9a50691c8878830fbba8e11f710David 'Digit' Turner fi 1526157bc1f5291c9a50691c8878830fbba8e11f710David 'Digit' Turner fi 1536157bc1f5291c9a50691c8878830fbba8e11f710David 'Digit' Turnerelse 1546157bc1f5291c9a50691c8878830fbba8e11f710David 'Digit' Turner rm -rf $OUT_DIR && mkdir -p $OUT_DIR 1556157bc1f5291c9a50691c8878830fbba8e11f710David 'Digit' Turnerfi 1566157bc1f5291c9a50691c8878830fbba8e11f710David 'Digit' Turner 157450766678abf628559f96700082d29689ad1b2b6David 'Digit' Turnerif [ -n "$PREBUILT_PREFIX" ] ; then 158450766678abf628559f96700082d29689ad1b2b6David 'Digit' Turner if [ -d "$PREBUILT_PREFIX" ] ; then 159450766678abf628559f96700082d29689ad1b2b6David 'Digit' Turner echo "ERROR: the --prebuilt-prefix argument must not be a direct directory path: $PREBUILT_PREFIX." 160cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner exit 1 161cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner fi 162450766678abf628559f96700082d29689ad1b2b6David 'Digit' Turner PREBUILT_DIR=`dirname $PREBUILT_PREFIX` 163450766678abf628559f96700082d29689ad1b2b6David 'Digit' Turner if [ ! -d "$PREBUILT_DIR" ] ; then 164450766678abf628559f96700082d29689ad1b2b6David 'Digit' Turner echo "ERROR: the --prebuilt-prefix argument does not point to a directory: $PREBUILT_DIR" 165721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner exit 1 166721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner fi 167721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner if [ -z "$PREBUILT_SYSTEMS" ] ; then 168721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner echo "ERROR: Your systems list is empty, use --system=LIST to specify a different one." 169721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner exit 1 170721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner fi 171721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner # Check the systems 172721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner # 173721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner for SYS in $PREBUILT_SYSTEMS; do 174450766678abf628559f96700082d29689ad1b2b6David 'Digit' Turner if [ ! -f $PREBUILT_PREFIX-$SYS.tar.bz2 ] ; then 175721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner echo "ERROR: It seems there is no prebuilt binary tarball for the '$SYS' system" 176721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner echo "Please check the content of $PREBUILT_DIR for a file named $PREBUILT_PREFIX-$SYS.tar.bz2." 177721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner exit 1 178721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner fi 179721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner done 180721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turnerelse 181721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner if [ ! -f "$PREBUILT_NDK" ] ; then 182721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner echo "ERROR: the --prebuilt-ndk argument is not a file: $PREBUILT_NDK" 183721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner exit 1 184721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner fi 185721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner # Check that the name ends with the proper host tag 186721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner HOST_NDK_SUFFIX="$HOST_TAG.zip" 187721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner echo "$PREBUILT_NDK" | grep -q "$HOST_NDK_SUFFIX" 188721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner if [ $? != 0 ] ; then 189721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner echo "ERROR: the name of the prebuilt NDK must end in $HOST_NDK_SUFFIX" 190721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner exit 1 191721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner fi 192721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner PREBUILT_SYSTEMS=$HOST_TAG 193721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turnerfi 194cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' Turner 19531ab66466eaac85ebb0243d7df43d5082a3fd154David 'Digit' Turner# The list of git files to copy into the archives 196721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turnerif [ "$USE_GIT_FILES" = "yes" ] ; then 197721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner echo "Collecting sources from git (use --no-git to copy all files instead)." 198721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner GIT_FILES=`cd $NDK_ROOT_DIR && git ls-files` 199721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turnerelse 200721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner echo "Collecting all sources files under tree." 201721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner # Cleanup everything that is likely to not be part of the final NDK 202721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner # i.e. generated files... 203ea573da2c3f1a8379f4344d023035fdf795c768dDavid 'Digit' Turner rm -rf $NDK_ROOT_DIR/samples/*/obj 204ea573da2c3f1a8379f4344d023035fdf795c768dDavid 'Digit' Turner rm -rf $NDK_ROOT_DIR/samples/*/libs 205721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner # Get all files under the NDK root 206721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner GIT_FILES=`cd $NDK_ROOT_DIR && find .` 207721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner GIT_FILES=`echo $GIT_FILES | sed -e "s!\./!!g"` 208721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turnerfi 209c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner 210c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner# temporary directory used for packaging 211c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' TurnerTMPDIR=/tmp/ndk-release 212c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner 213cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' TurnerRELEASE_PREFIX=$PREFIX-$RELEASE 214c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner 215ea573da2c3f1a8379f4344d023035fdf795c768dDavid 'Digit' Turner# ensure that the generated files are ug+rx 2166157bc1f5291c9a50691c8878830fbba8e11f710David 'Digit' Turnerumask 0022 2176157bc1f5291c9a50691c8878830fbba8e11f710David 'Digit' Turner 218c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turnerrm -rf $TMPDIR && mkdir -p $TMPDIR 219c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner 220c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner# first create the reference ndk directory from the git reference 221721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turnerecho "Creating reference from source files" 222c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' TurnerREFERENCE=$TMPDIR/reference && 223c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turnermkdir -p $REFERENCE && 22431ab66466eaac85ebb0243d7df43d5082a3fd154David 'Digit' Turner(cd $NDK_ROOT_DIR && tar cf - $GIT_FILES) | (cd $REFERENCE && tar xf -) && 225c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turnerrm -f $REFERENCE/Android.mk 226c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turnerif [ $? != 0 ] ; then 227721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner echo "Could not create reference. Aborting." 228c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner exit 2 229c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turnerfi 230c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner 23177d9a08814a063577d086dc356a5a55d5ff55bf6David 'Digit' Turner# copy platform and sample files 23277d9a08814a063577d086dc356a5a55d5ff55bf6David 'Digit' Turnerecho "Copying platform and sample files" 23377d9a08814a063577d086dc356a5a55d5ff55bf6David 'Digit' TurnerFLAGS="--src-dir=$DEVELOPMENT_ROOT --dst-dir=$REFERENCE" 23477d9a08814a063577d086dc356a5a55d5ff55bf6David 'Digit' Turnerif [ "$VERBOSE2" = "yes" ] ; then 23577d9a08814a063577d086dc356a5a55d5ff55bf6David 'Digit' Turner FLAGS="$FLAGS --verbose" 236a775f5537568f4768cd61931bb1b5314694adc96David 'Digit' Turnerfi 23777d9a08814a063577d086dc356a5a55d5ff55bf6David 'Digit' TurnerPLATFORM_FLAGS= 23877d9a08814a063577d086dc356a5a55d5ff55bf6David 'Digit' Turnerif [ -n "$PLATFORMS" ] ; then 239ea573da2c3f1a8379f4344d023035fdf795c768dDavid 'Digit' Turner $NDK_ROOT_DIR/build/tools/build-platforms.sh $FLAGS --platform="$PLATFORMS" 240ea573da2c3f1a8379f4344d023035fdf795c768dDavid 'Digit' Turnerelse 241ea573da2c3f1a8379f4344d023035fdf795c768dDavid 'Digit' Turner $NDK_ROOT_DIR/build/tools/build-platforms.sh $FLAGS $PLATFORM_FLAGS 242a775f5537568f4768cd61931bb1b5314694adc96David 'Digit' Turnerfi 24377d9a08814a063577d086dc356a5a55d5ff55bf6David 'Digit' Turnerif [ $? != 0 ] ; then 24477d9a08814a063577d086dc356a5a55d5ff55bf6David 'Digit' Turner echo "Could not copy platform files. Aborting." 24577d9a08814a063577d086dc356a5a55d5ff55bf6David 'Digit' Turner exit 2 24677d9a08814a063577d086dc356a5a55d5ff55bf6David 'Digit' Turnerfi 24777d9a08814a063577d086dc356a5a55d5ff55bf6David 'Digit' Turner 248ea573da2c3f1a8379f4344d023035fdf795c768dDavid 'Digit' Turner# copy sources files 249ea573da2c3f1a8379f4344d023035fdf795c768dDavid 'Digit' Turnerif [ -d $DEVELOPMENT_ROOT/sources ] ; then 250ea573da2c3f1a8379f4344d023035fdf795c768dDavid 'Digit' Turner echo "Copying NDK sources files" 251ea573da2c3f1a8379f4344d023035fdf795c768dDavid 'Digit' Turner (cd $DEVELOPMENT_ROOT && tar cf - sources) | (cd $REFERENCE && tar xf -) 252ea573da2c3f1a8379f4344d023035fdf795c768dDavid 'Digit' Turner if [ $? != 0 ] ; then 253ea573da2c3f1a8379f4344d023035fdf795c768dDavid 'Digit' Turner echo "Could not copy sources. Aborting." 254ea573da2c3f1a8379f4344d023035fdf795c768dDavid 'Digit' Turner exit 2 255ea573da2c3f1a8379f4344d023035fdf795c768dDavid 'Digit' Turner fi 256ea573da2c3f1a8379f4344d023035fdf795c768dDavid 'Digit' Turnerfi 257ea573da2c3f1a8379f4344d023035fdf795c768dDavid 'Digit' Turner 25877d9a08814a063577d086dc356a5a55d5ff55bf6David 'Digit' Turner# create a release file named 'RELEASE.TXT' containing the release 25977d9a08814a063577d086dc356a5a55d5ff55bf6David 'Digit' Turner# name. This is used by the build script to detect whether you're 26077d9a08814a063577d086dc356a5a55d5ff55bf6David 'Digit' Turner# invoking the NDK from a release package or from the development 26177d9a08814a063577d086dc356a5a55d5ff55bf6David 'Digit' Turner# tree. 26277d9a08814a063577d086dc356a5a55d5ff55bf6David 'Digit' Turner# 26377d9a08814a063577d086dc356a5a55d5ff55bf6David 'Digit' Turnerecho "$RELEASE" > $REFERENCE/RELEASE.TXT 264a775f5537568f4768cd61931bb1b5314694adc96David 'Digit' Turner 2656b5bc468b9be34c7dbd4531274bb1a2d55542731David 'Digit' Turner# Remove un-needed files 2666b5bc468b9be34c7dbd4531274bb1a2d55542731David 'Digit' Turnerrm -f $REFERENCE/CleanSpec.mk 2676b5bc468b9be34c7dbd4531274bb1a2d55542731David 'Digit' Turner 268721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner# now, for each system, create a package 269c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner# 270c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turnerfor SYSTEM in $PREBUILT_SYSTEMS; do 271c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner echo "Preparing package for system $SYSTEM." 272c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner BIN_RELEASE=$RELEASE_PREFIX-$SYSTEM 273450766678abf628559f96700082d29689ad1b2b6David 'Digit' Turner PREBUILT=$PREBUILT_PREFIX-$SYSTEM 274c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner DSTDIR=$TMPDIR/$RELEASE_PREFIX 275c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner rm -rf $DSTDIR && mkdir -p $DSTDIR && 276c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner cp -rp $REFERENCE/* $DSTDIR 277c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner if [ $? != 0 ] ; then 278c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner echo "Could not copy reference. Aborting." 279c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner exit 2 280c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner fi 281607c57ec9a28e2dfc1db6c0f5f61111b562c64e1David 'Digit' Turner 282721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner if [ -n "$PREBUILT_NDK" ] ; then 283721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner echo "Unpacking prebuilt toolchain from $PREBUILT_NDK" 284721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner UNZIP_DIR=$TMPDIR/prev-ndk 285721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner rm -rf $UNZIP_DIR && mkdir -p $UNZIP_DIR 286721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner if [ $? != 0 ] ; then 287721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner echo "Could not create temporary directory: $UNZIP_DIR" 288721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner exit 1 289721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner fi 290721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner cd $UNZIP_DIR && unzip -q $PREBUILT_NDK 1>/dev/null 2>&1 291721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner if [ $? != 0 ] ; then 292721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner echo "ERROR: Could not unzip NDK package $PREBUILT_NDK" 293721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner exit 1 294721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner fi 295721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner cd android-ndk-* && cp -rP build/prebuilt $DSTDIR/build 296721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner else 297721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner echo "Unpacking $PREBUILT.tar.bz2" 298721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner (cd $DSTDIR && tar xjf $PREBUILT.tar.bz2) 2>/dev/null 1>&2 299721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner if [ $? != 0 ] ; then 300721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner echo "Could not unpack prebuilt for system $SYSTEM. Aborting." 301721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner exit 1 302721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner fi 303c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner fi 304607c57ec9a28e2dfc1db6c0f5f61111b562c64e1David 'Digit' Turner 305b161f18450d9c225097f02eaf23106a157393e8eXavier Ducrohet ARCHIVE=$BIN_RELEASE.zip 306b161f18450d9c225097f02eaf23106a157393e8eXavier Ducrohet echo "Creating $ARCHIVE" 3076157bc1f5291c9a50691c8878830fbba8e11f710David 'Digit' Turner (cd $TMPDIR && zip -9qr $OUT_DIR/$ARCHIVE $RELEASE_PREFIX && rm -rf $DSTDIR) 2>/dev/null 1>&2 308b161f18450d9c225097f02eaf23106a157393e8eXavier Ducrohet if [ $? != 0 ] ; then 309b161f18450d9c225097f02eaf23106a157393e8eXavier Ducrohet echo "Could not create zip archive. Aborting." 310b161f18450d9c225097f02eaf23106a157393e8eXavier Ducrohet exit 1 311b161f18450d9c225097f02eaf23106a157393e8eXavier Ducrohet fi 312b161f18450d9c225097f02eaf23106a157393e8eXavier Ducrohet 3136157bc1f5291c9a50691c8878830fbba8e11f710David 'Digit' Turner# chmod a+r $TMPDIR/$ARCHIVE 314c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turnerdone 315c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner 316c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turnerecho "Cleaning up." 317c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turnerrm -rf $TMPDIR/reference 318721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turnerrm -rf $TMPDIR/prev-ndk 319c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner 3206157bc1f5291c9a50691c8878830fbba8e11f710David 'Digit' Turnerecho "Done, please see packages in $OUT_DIR:" 3216157bc1f5291c9a50691c8878830fbba8e11f710David 'Digit' Turnerls -l $OUT_DIR 322