make-release.sh revision 77d9a08814a063577d086dc356a5a55d5ff55bf6
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...
203721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner    rm -rf $NDK_ROOT_DIR/out
204721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner    rm -rf $NDK_ROOT_DIR/apps/*/project/libs/armeabi
205450766678abf628559f96700082d29689ad1b2b6David 'Digit' Turner    rm -rf $NDK_ROOT_DIR/apps/*/project/libs/armeabi-v7a
206b852319ebf789bec3b485428842181b6fb715e95Bruce Beare    rm -rf $NDK_ROOT_DIR/apps/*/project/libs/x86
207721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner    # Get all files under the NDK root
208721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner    GIT_FILES=`cd $NDK_ROOT_DIR && find .`
209721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner    GIT_FILES=`echo $GIT_FILES | sed -e "s!\./!!g"`
210721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turnerfi
211c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner
212c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner# temporary directory used for packaging
213c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' TurnerTMPDIR=/tmp/ndk-release
214c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner
215cae78f99bebefece4faf2464bc9cbf6c40e33070David 'Digit' TurnerRELEASE_PREFIX=$PREFIX-$RELEASE
216c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner
2176157bc1f5291c9a50691c8878830fbba8e11f710David 'Digit' Turnerumask 0022
2186157bc1f5291c9a50691c8878830fbba8e11f710David 'Digit' Turner
219c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turnerrm -rf $TMPDIR && mkdir -p $TMPDIR
220c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner
221c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner# first create the reference ndk directory from the git reference
222721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turnerecho "Creating reference from source files"
223c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' TurnerREFERENCE=$TMPDIR/reference &&
224c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turnermkdir -p $REFERENCE &&
22531ab66466eaac85ebb0243d7df43d5082a3fd154David 'Digit' Turner(cd $NDK_ROOT_DIR && tar cf - $GIT_FILES) | (cd $REFERENCE && tar xf -) &&
226c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turnerrm -f $REFERENCE/Android.mk
227c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turnerif [ $? != 0 ] ; then
228721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner    echo "Could not create reference. Aborting."
229c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner    exit 2
230c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turnerfi
231c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner
23277d9a08814a063577d086dc356a5a55d5ff55bf6David 'Digit' Turner# copy platform and sample files
23377d9a08814a063577d086dc356a5a55d5ff55bf6David 'Digit' Turnerecho "Copying platform and sample files"
23477d9a08814a063577d086dc356a5a55d5ff55bf6David 'Digit' TurnerFLAGS="--src-dir=$DEVELOPMENT_ROOT --dst-dir=$REFERENCE"
23577d9a08814a063577d086dc356a5a55d5ff55bf6David 'Digit' Turnerif [ "$VERBOSE2" = "yes" ] ; then
23677d9a08814a063577d086dc356a5a55d5ff55bf6David 'Digit' Turner  FLAGS="$FLAGS --verbose"
237a775f5537568f4768cd61931bb1b5314694adc96David 'Digit' Turnerfi
23877d9a08814a063577d086dc356a5a55d5ff55bf6David 'Digit' TurnerPLATFORM_FLAGS=
23977d9a08814a063577d086dc356a5a55d5ff55bf6David 'Digit' Turnerif [ -n "$PLATFORMS" ] ; then
24077d9a08814a063577d086dc356a5a55d5ff55bf6David 'Digit' Turner    PLATFORM_FLAGS="--platform=$PLATFORMS"
241a775f5537568f4768cd61931bb1b5314694adc96David 'Digit' Turnerfi
24277d9a08814a063577d086dc356a5a55d5ff55bf6David 'Digit' Turner$NDK_ROOT_DIR/build/tools/build-platforms.sh $FLAGS "$PLATFORM_FLAGS"
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
24877d9a08814a063577d086dc356a5a55d5ff55bf6David 'Digit' Turner# create a release file named 'RELEASE.TXT' containing the release
24977d9a08814a063577d086dc356a5a55d5ff55bf6David 'Digit' Turner# name. This is used by the build script to detect whether you're
25077d9a08814a063577d086dc356a5a55d5ff55bf6David 'Digit' Turner# invoking the NDK from a release package or from the development
25177d9a08814a063577d086dc356a5a55d5ff55bf6David 'Digit' Turner# tree.
25277d9a08814a063577d086dc356a5a55d5ff55bf6David 'Digit' Turner#
25377d9a08814a063577d086dc356a5a55d5ff55bf6David 'Digit' Turnerecho "$RELEASE" > $REFERENCE/RELEASE.TXT
254a775f5537568f4768cd61931bb1b5314694adc96David 'Digit' Turner
255721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner# now, for each system, create a package
256c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner#
257c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turnerfor SYSTEM in $PREBUILT_SYSTEMS; do
258c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner    echo "Preparing package for system $SYSTEM."
259c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner    BIN_RELEASE=$RELEASE_PREFIX-$SYSTEM
260450766678abf628559f96700082d29689ad1b2b6David 'Digit' Turner    PREBUILT=$PREBUILT_PREFIX-$SYSTEM
261c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner    DSTDIR=$TMPDIR/$RELEASE_PREFIX
262c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner    rm -rf $DSTDIR && mkdir -p $DSTDIR &&
263c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner    cp -rp $REFERENCE/* $DSTDIR
264c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner    if [ $? != 0 ] ; then
265c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner        echo "Could not copy reference. Aborting."
266c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner        exit 2
267c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner    fi
268607c57ec9a28e2dfc1db6c0f5f61111b562c64e1David 'Digit' Turner
269721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner    if [ -n "$PREBUILT_NDK" ] ; then
270721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner        echo "Unpacking prebuilt toolchain from $PREBUILT_NDK"
271721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner        UNZIP_DIR=$TMPDIR/prev-ndk
272721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner        rm -rf $UNZIP_DIR && mkdir -p $UNZIP_DIR
273721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner        if [ $? != 0 ] ; then
274721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner            echo "Could not create temporary directory: $UNZIP_DIR"
275721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner            exit 1
276721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner        fi
277721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner        cd $UNZIP_DIR && unzip -q $PREBUILT_NDK 1>/dev/null 2>&1
278721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner        if [ $? != 0 ] ; then
279721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner            echo "ERROR: Could not unzip NDK package $PREBUILT_NDK"
280721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner            exit 1
281721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner        fi
282721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner        cd android-ndk-* && cp -rP build/prebuilt $DSTDIR/build
283721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner    else
284721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner        echo "Unpacking $PREBUILT.tar.bz2"
285721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner        (cd $DSTDIR && tar xjf $PREBUILT.tar.bz2) 2>/dev/null 1>&2
286721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner        if [ $? != 0 ] ; then
287721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner            echo "Could not unpack prebuilt for system $SYSTEM. Aborting."
288721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner            exit 1
289721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turner        fi
290c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner    fi
291607c57ec9a28e2dfc1db6c0f5f61111b562c64e1David 'Digit' Turner
292b161f18450d9c225097f02eaf23106a157393e8eXavier Ducrohet    ARCHIVE=$BIN_RELEASE.zip
293b161f18450d9c225097f02eaf23106a157393e8eXavier Ducrohet    echo "Creating $ARCHIVE"
2946157bc1f5291c9a50691c8878830fbba8e11f710David 'Digit' Turner    (cd $TMPDIR && zip -9qr $OUT_DIR/$ARCHIVE $RELEASE_PREFIX && rm -rf $DSTDIR) 2>/dev/null 1>&2
295b161f18450d9c225097f02eaf23106a157393e8eXavier Ducrohet    if [ $? != 0 ] ; then
296b161f18450d9c225097f02eaf23106a157393e8eXavier Ducrohet        echo "Could not create zip archive. Aborting."
297b161f18450d9c225097f02eaf23106a157393e8eXavier Ducrohet        exit 1
298b161f18450d9c225097f02eaf23106a157393e8eXavier Ducrohet    fi
299b161f18450d9c225097f02eaf23106a157393e8eXavier Ducrohet
3006157bc1f5291c9a50691c8878830fbba8e11f710David 'Digit' Turner#    chmod a+r $TMPDIR/$ARCHIVE
301c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turnerdone
302c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner
303c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turnerecho "Cleaning up."
304c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turnerrm -rf $TMPDIR/reference
305721a3eb0d56840dd24fde4ee4d51259e43c002e5David 'Digit' Turnerrm -rf $TMPDIR/prev-ndk
306c8906b0ac264f8a5f07849c760b4d9fc60789c94David 'Digit' Turner
3076157bc1f5291c9a50691c8878830fbba8e11f710David 'Digit' Turnerecho "Done, please see packages in $OUT_DIR:"
3086157bc1f5291c9a50691c8878830fbba8e11f710David 'Digit' Turnerls -l $OUT_DIR
309