build-host-prebuilts.sh revision d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6
1d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner#!/bin/sh 2d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner# 3d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner# Rebuild all host toolchains 4d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner# 5d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner 6d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' TurnerPROGDIR=$(dirname $0) 7d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner. $PROGDIR/prebuilt-common.sh 8d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner 9d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' TurnerNDK_DIR=$ANDROID_NDK_ROOT 10d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerregister_var_option "--ndk-dir=<path>" NDK_DIR "NDK installation directory" 11d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner 12d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' TurnerSYSTEMS=$HOST_TAG 13d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner# Replace x86_64 by x86 at the end of SYSTEMS since we will produce 14d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner# 32-bit toolchains by default, i.e. unless you use the --try-64 flag 15d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerif [ "${SYSTEMS%%x86_64}" != "$SYSTEMS" ]; then 16d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner SYSTEMS=${SYSTEMS%%x86_64}x86 17d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerfi 18d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner# If we are on Linux, we are able to generate the Windows binaries 19d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner# with the mingw32 cross-toolchain. 20d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerif [ "$SYSTEMS" = "linux-x86" ]; then 21d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner SYSTEMS=$SYSTEMS",windows" 22d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerfi 23d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' TurnerCUSTOM_SYSTEMS= 24d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerregister_option "--systems=<names>" do_SYSTEMS "List of host systems to build for" 25d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerdo_SYSTEMS () { CUSTOM_SYSTEMS=true; SYSTEMS=$1; } 26d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner 27d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' TurnerARCHS="arm,x86" 28d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerregister_var_option "--arch=<list>" ARCHS "List of target archs to build for" 29d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner 30d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' TurnerPACKAGE_DIR= 31d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerregister_var_option "--package-dir=<path>" PACKAGE_DIR "Package toolchain into this directory" 32d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner 33d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' TurnerDARWIN_SSH= 34d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerregister_var_option "--darwin-ssh=<hostname>" DARWIN_SSH "Generate darwin packages on remote host" 35d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner 36d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' TurnerNO_GEN_PLATFORMS= 37d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerregister_var_option "--no-gen-platforms" NO_GEN_PLATFORMS "Don't generate platforms/ directory, use existing one" 38d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner 39d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerregister_try64_option 40d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner 41d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' TurnerPROGRAM_PARAMETERS="<toolchain-src-dir>" 42d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' TurnerPROGRAM_DESCRIPTION=\ 43d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner"This script can be used to rebuild all the host NDK toolchains at once. 44d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' TurnerYou need to give it the path to the toolchain source directory, as 45d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerdownloaded by the 'download-toolchain-sources.sh' dev-script." 46d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner 47d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerextract_parameters "$@" 48d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner 49d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner# Check toolchain source path 50d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' TurnerSRC_DIR="$PARAMETERS" 51d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerif [ -z "$SRC_DIR" ]; then 52d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner echo "ERROR: Please provide the path to the toolchain source tree. See --help" 53d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner exit 1 54d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerfi 55d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner 56d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerif [ ! -d "$SRC_DIR" ]; then 57d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner echo "ERROR: Not a directory: '$SRC_DIR'" 58d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner exit 1 59d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerfi 60d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner 61d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerif [ ! -f "$SRC_DIR/build/configure" -o ! -d "$SRC_DIR/gcc/gcc-4.4.3" ]; then 62d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner echo "ERROR: This is not the top of a toolchain tree: $SRC_DIR" 63d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner echo "You must give the path to a copy of the toolchain source directories" 64d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner echo "created by 'download-toolchain-sources.sh." 65d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner exit 1 66d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerfi 67d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner 68d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner# Now we can do the build 69d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' TurnerBUILDTOOLS=$ANDROID_NDK_ROOT/build/tools 70d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner 71d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerif [ -z "$NO_GEN_PLATFORMS" ]; then 72d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner echo "Preparing the build..." 73d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner run $BUILDTOOLS/gen-platforms.sh --minimal --dst-dir=$NDK_DIR --ndk-dir=$NDK_DIR --arch=$(spaces_to_commas $ARCHS) 74d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner fail_panic "Could not generate minimal sysroot!" 75d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerelse 76d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner if [ ! -d "$NDK_DIR/platforms" ]; then 77d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner echo "ERROR: --no-gen-platforms used but directory missing: $NDK_DIR/platforms" 78d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner exit 1 79d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner fi 80d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerfi 81d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner 82d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' TurnerSYSTEMS=$(commas_to_spaces $SYSTEMS) 83d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' TurnerARCHS=$(commas_to_spaces $ARCHS) 84d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner 85d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerif [ "$DARWIN_SSH" -a -z "$CUSTOM_SYSTEMS" ]; then 86d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner SYSTEMS=" darwin-x86" 87d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerfi 88d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner 89d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' TurnerFLAGS= 90d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerif [ "$VERBOSE" = "yes" ]; then 91d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner FLAGS=$FLAGS" --verbose" 92d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerfi 93d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerif [ "$VERBOSE2" = "yes" ]; then 94d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner FLAGS=$FLAGS" --verbose" 95d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerfi 96d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerif [ "$TRY64" = "yes" ]; then 97d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner FLAGS=$FLAGS" --try64" 98d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerelse 99d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner force_32bit_binaries 100d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerfi 101d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerif [ "$PACKAGE_DIR" ]; then 102d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner if [ ! -d "$PACKAGE_DIR" ]; then 103d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner echo "ERROR: Package destination directory doesn't exist: $PACKAGE_DIR" 104d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner fi 105d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner FLAGS=$FLAGS" --package-dir=$PACKAGE_DIR" 106d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerfi 107d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner 108d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerdo_remote_host_build () 109d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner{ 110d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner local SYSTEM="$1" 111d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner local ARCH="$2" 112d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner local REMOTE_HOST="$3" 113d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner 114d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner # 1/ Copy the NDK toolchain build scripts 115d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner # 2/ Copy the toolchain sources/package 116d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner # 3/ Ssh to unpack the build scripts, and run them 117d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner # 4/ Copy back the generated prebuilt binaries 118d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner # 119d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner dump "Preparing remote build on $REMOTE_HOST..." 120d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner 121d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner # First try to create a remote temp directory on the remote host 122d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner # Do it first so we can fail fast, not after spending time preparing 123d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner # large tarballs. 124d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner dump "Creating remote temp directory" 125d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner TMPREMOTE=/tmp/ndk-$USER/darwin-prebuild 126d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner run ssh $REMOTE_HOST "mkdir -p $TMPREMOTE && rm -rf $TMPREMOTE/*" 127d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner fail_panic "Could not create temporary build directory on $REMOTE_HOST" 128d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner 129d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner # Now, package all the stuff we're going to send in a temporary 130d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner # directory here on the machine, except toolchain sources 131d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner TMPDARWIN=$NDK_TMPDIR/darwin # Where we're going to package stuff 132d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner log "Using temporary work directory: $TMPDARWIN" 133d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner mkdir -p "$TMPDARWIN" 134d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner dump "Prepare NDK build scripts" 135d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner copy_directory "$ANDROID_NDK_ROOT/build" "$TMPDARWIN/ndk/build" 136d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner copy_file_list "$ANDROID_NDK_ROOT" "$TMPDARWIN/ndk" sources/android/libthread_db 137d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner copy_file_list "$ANDROID_NDK_ROOT" "$TMPDARWIN/ndk" "$STLPORT_SUBDIR" 138d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner copy_file_list "$ANDROID_NDK_ROOT" "$TMPDARWIN/ndk" "$GABIXX_SUBDIR" 139d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner copy_file_list "$ANDROID_NDK_ROOT" "$TMPDARWIN/ndk" sources/host-tools/ndk-stack 140d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner dump "Prepare platforms files" 141d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner copy_directory "$NDK_DIR/platforms" "$TMPDARWIN/ndk/platforms" 142d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner dump "Copying NDK build scripts and platform files to remote..." 143d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner (cd "$TMPDARWIN" && tar czf - ndk) | (ssh $REMOTE_HOST tar xzf - -C $TMPREMOTE) 144d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner fail_panic "Could not copy!" 145d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner rm -rf $TMPDARWIN 146d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner 147d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner # Copy the toolchain sources 148d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner dump "Copy toolchain sources to remote" 149d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner ssh $REMOTE_HOST mkdir -p $TMPREMOTE/toolchain && 150d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner (cd "$SRC_DIR" && tar czf - .) | (ssh $REMOTE_HOST tar xzf - -C $TMPREMOTE/toolchain) 151d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner fail_panic "Could not copy toolchain!" 152d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner 153d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner # Time to run the show :-) 154d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner for ARCH in $(commas_to_spaces $ARCHS); do 155d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner dump "Running remote $ARCH toolchain build..." 156d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner SYSROOT=$TMPREMOTE/ndk/platforms/android-$(get_default_api_level_for_arch $ARCH)/arch-$ARCH 157d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner run ssh $REMOTE_HOST "$TMPREMOTE/ndk/build/tools/build-host-prebuilts.sh $TMPREMOTE/toolchain --package-dir=$TMPREMOTE/packages --arch=$ARCH --ndk-dir=$TMPREMOTE/ndk --no-gen-platforms" 158d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner fail_panic "Could not build prebuilt $ARCH toolchain on Darwin!" 159d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner done 160d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner # Get the results 161d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner dump "Copying back Darwin prebuilt packages..." 162d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner mkdir -p $TMPDARWIN/packages && rm -rf $TMPDARWIN/packages/* 163d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner run scp $REMOTE_HOST:$TMPREMOTE/packages/*-darwin-* $TMPDARWIN/packages 164d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner fail_panic "Could not grab Darwin packages!" 165d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner 166d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner for PACK in $TMPDARWIN/packages/*; do 167d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner if [ "$PACKAGE_DIR" ]; then 168d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner echo "Copying $(basename $PACK) to $PACKAGE_DIR..." 169d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner cp $PACK $PACKAGE_DIR/ 170d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner else 171d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner echo "Unpacking $(basename $PACK) into $NDK_DIR..." 172d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner unpack_archive $PACK $NDK_DIR 173d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner fi 174d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner fail_panic "" 175d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner done 176d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner 177d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner dump "Cleaning up remote machine..." 178d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner run ssh $REMOTE_HOST rm -rf $TMPREMOTE 179d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner} 180d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner 181d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerfor SYSTEM in $SYSTEMS; do 182d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner 183d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner # First, build the toolchains 184d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner TOOLCHAIN_FLAGS=$FLAGS 185d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner if [ "$HOST_TAG" = "linux-x86" -a "$SYSTEM" = "windows" ]; then 186d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner TOOLCHAIN_FLAGS=$TOOLCHAIN_FLAGS" --mingw" 187d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner fi 188d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner 189d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner # Should we do a remote build? 190d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner if [ "$SYSTEM" != "$HOST_TAG" ]; then 191d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner case $SYSTEM in 192d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner darwin-*) 193d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner if [ "$DARWIN_SSH" ]; then 194d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner do_remote_host_build "$SYSTEM" "$ARCH" "$DARWIN_SSH" 195d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner else 196d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner echo "WARNING: Can't build $SYSTEM binaries on this system!" 197d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner echo "Consider using the --darwin-ssh option." 198d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner fi 199d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner continue 200d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner esac 201d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner fi 202d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner 203d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner # First, ndk-stack 204d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner echo "Building $SYSTEM ndk-stack" 205d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner run $BUILDTOOLS/build-ndk-stack.sh $TOOLCHAIN_FLAGS 206d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner fail_panic "ndk-stack build failure!" 207d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner 208d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner # Then the toolchains 209d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner for ARCH in $ARCHS; do 210d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner TOOLCHAIN_NAME=$(get_default_toolchain_name_for $ARCH) 211d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner if [ -z "$TOOLCHAIN_NAME" ]; then 212d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner echo "ERROR: Invalid architecture name: $ARCH" 213d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner exit 1 214d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner fi 215d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner 216d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner echo "Building $SYSTEM toolchain for $ARCH architecture: $TOOLCHAIN_NAME" 217d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner run $BUILDTOOLS/build-gcc.sh "$SRC_DIR" "$NDK_DIR" $TOOLCHAIN_NAME $TOOLCHAIN_FLAGS 218d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner fail_panic "Could not build $TOOLCHAIN_NAME-$SYSTEM!" 219d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner done 220d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner 221d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner # We're done for this system 222d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerdone 223d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner 224d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerif [ "$PACKAGE_DIR" ]; then 225d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner echo "Done, please look at $PACKAGE_DIR" 226d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerelse 227d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner echo "Done" 228d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerfi 229d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner 230d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerexit 0