1d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner#!/bin/sh
2d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner#
31c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner# Copyright (C) 2011 The Android Open Source Project
41c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner#
51c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner# Licensed under the Apache License, Version 2.0 (the "License");
61c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner# you may not use this file except in compliance with the License.
71c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner# You may obtain a copy of the License at
81c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner#
91c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner#      http://www.apache.org/licenses/LICENSE-2.0
101c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner#
111c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner# Unless required by applicable law or agreed to in writing, software
121c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner# distributed under the License is distributed on an "AS IS" BASIS,
131c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
141c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner# See the License for the specific language governing permissions and
151c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner# limitations under the License.
161c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner#
171c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner# Rebuild all host toolchains and programs
18d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner#
19d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner
20d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' TurnerPROGDIR=$(dirname $0)
21d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner. $PROGDIR/prebuilt-common.sh
22d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner
23d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' TurnerNDK_DIR=$ANDROID_NDK_ROOT
24d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerregister_var_option "--ndk-dir=<path>" NDK_DIR "NDK installation directory"
25d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner
26d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' TurnerSYSTEMS=$HOST_TAG
27d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner# Replace x86_64 by x86 at the end of SYSTEMS since we will produce
28d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner# 32-bit toolchains by default, i.e. unless you use the --try-64 flag
29d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerif [ "${SYSTEMS%%x86_64}" != "$SYSTEMS" ]; then
30d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    SYSTEMS=${SYSTEMS%%x86_64}x86
31d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerfi
32d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner# If we are on Linux, we are able to generate the Windows binaries
33d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner# with the mingw32 cross-toolchain.
34d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerif [ "$SYSTEMS" = "linux-x86" ]; then
35d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    SYSTEMS=$SYSTEMS",windows"
363b28972d8a5a108579496233266fccd69c9d2fe5Andrew Hsieh    # If darwin toolchain exist, build darwin too
373b28972d8a5a108579496233266fccd69c9d2fe5Andrew Hsieh    if [ -f "${DARWIN_TOOLCHAIN}-gcc" ]; then
383b28972d8a5a108579496233266fccd69c9d2fe5Andrew Hsieh        SYSTEMS=$SYSTEMS",darwin-x86"
393b28972d8a5a108579496233266fccd69c9d2fe5Andrew Hsieh    fi
40d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerfi
41d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' TurnerCUSTOM_SYSTEMS=
42d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerregister_option "--systems=<names>" do_SYSTEMS "List of host systems to build for"
43d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerdo_SYSTEMS () { CUSTOM_SYSTEMS=true; SYSTEMS=$1; }
44d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner
451761f445c3dfe2f032af6201e32928eb4f07f92dLai Wei-ChihARCHS=$(find_ndk_unknown_archs)
461761f445c3dfe2f032af6201e32928eb4f07f92dLai Wei-ChihARCHS="$DEFAULT_ARCHS $ARCHS"
47d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerregister_var_option "--arch=<list>" ARCHS "List of target archs to build for"
48d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner
49d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' TurnerPACKAGE_DIR=
50d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerregister_var_option "--package-dir=<path>" PACKAGE_DIR "Package toolchain into this directory"
51d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner
52d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' TurnerDARWIN_SSH=
53d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerregister_var_option "--darwin-ssh=<hostname>" DARWIN_SSH "Generate darwin packages on remote host"
54d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner
55d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' TurnerNO_GEN_PLATFORMS=
56d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerregister_var_option "--no-gen-platforms" NO_GEN_PLATFORMS "Don't generate platforms/ directory, use existing one"
57d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner
585b3a49bdbd08775d0e6f9727221fe98946f6db44Pavel ChupinGCC_VERSION_LIST="default" # it's arch defined by default so use default keyword
595b3a49bdbd08775d0e6f9727221fe98946f6db44Pavel Chupinregister_var_option "--gcc-version-list=<vers>" GCC_VERSION_LIST "List of GCC release versions"
605b3a49bdbd08775d0e6f9727221fe98946f6db44Pavel Chupin
618e58e6b10c9c82e2085420b0e2f4c82d1db9b5c3Logan ChienLLVM_VERSION_LIST=$DEFAULT_LLVM_VERSION_LIST
626099deecb0b4f2805135f3670c41be971fbe4e3dAndrew Hsiehregister_var_option "--llvm-version-list=<vers>" LLVM_VERSION_LIST "List of LLVM release versions"
638e58e6b10c9c82e2085420b0e2f4c82d1db9b5c3Logan Chien
64bedf803c145294a8a1970accd860d8a49379f9e7Andrew HsiehCHECK_FLAG=
65bedf803c145294a8a1970accd860d8a49379f9e7Andrew Hsiehdo_check_option () { CHECK_FLAG="--check"; }
66bedf803c145294a8a1970accd860d8a49379f9e7Andrew Hsiehregister_option "--check" do_check_option "Check host prebuilts"
67bedf803c145294a8a1970accd860d8a49379f9e7Andrew Hsieh
68d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerregister_try64_option
69d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner
70d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' TurnerPROGRAM_PARAMETERS="<toolchain-src-dir>"
71d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' TurnerPROGRAM_DESCRIPTION=\
72d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner"This script can be used to rebuild all the host NDK toolchains at once.
73d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' TurnerYou need to give it the path to the toolchain source directory, as
74d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerdownloaded by the 'download-toolchain-sources.sh' dev-script."
75d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner
76d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerextract_parameters "$@"
77d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner
78d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner# Check toolchain source path
79d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' TurnerSRC_DIR="$PARAMETERS"
80d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerif [ -z "$SRC_DIR" ]; then
81d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    echo "ERROR: Please provide the path to the toolchain source tree. See --help"
82d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    exit 1
83d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerfi
84d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner
85d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerif [ ! -d "$SRC_DIR" ]; then
86d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    echo "ERROR: Not a directory: '$SRC_DIR'"
87d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    exit 1
88d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerfi
89d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner
909a311503035b598a1ddfb24ebbb368ba7e4cb924Andrew Hsiehif [ ! -f "$SRC_DIR/build/configure" -o ! -d "$SRC_DIR/gcc/gcc-$DEFAULT_GCC32_VERSION" -o ! -d "$SRC_DIR/gcc/gcc-$DEFAULT_GCC64_VERSION" ]; then
91612e5d967db47c99996511a9e78f7c29d2dbdc67Nick Kralevich    echo "ERROR: The file $SRC_DIR/build/configure or"
929a311503035b598a1ddfb24ebbb368ba7e4cb924Andrew Hsieh    echo "       the directory $SRC_DIR/gcc/gcc-$DEFAULT_GCC32_VERSION or"
939a311503035b598a1ddfb24ebbb368ba7e4cb924Andrew Hsieh    echo "       $SRC_DIR/gcc/gcc-$DEFAULT_GCC64_VERSION does not exist"
94612e5d967db47c99996511a9e78f7c29d2dbdc67Nick Kralevich    echo "This is not the top of a toolchain tree: $SRC_DIR"
95d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    echo "You must give the path to a copy of the toolchain source directories"
96d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    echo "created by 'download-toolchain-sources.sh."
97d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    exit 1
98d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerfi
99d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner
100d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner# Now we can do the build
101d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' TurnerBUILDTOOLS=$ANDROID_NDK_ROOT/build/tools
102d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner
103d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerif [ -z "$NO_GEN_PLATFORMS" ]; then
104d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    echo "Preparing the build..."
105d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    run $BUILDTOOLS/gen-platforms.sh --minimal --dst-dir=$NDK_DIR --ndk-dir=$NDK_DIR --arch=$(spaces_to_commas $ARCHS)
106d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    fail_panic "Could not generate minimal sysroot!"
107d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerelse
108d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    if [ ! -d "$NDK_DIR/platforms" ]; then
109d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner        echo "ERROR: --no-gen-platforms used but directory missing: $NDK_DIR/platforms"
110d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner        exit 1
111d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    fi
112d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerfi
113d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner
114d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' TurnerSYSTEMS=$(commas_to_spaces $SYSTEMS)
115d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' TurnerARCHS=$(commas_to_spaces $ARCHS)
1161761f445c3dfe2f032af6201e32928eb4f07f92dLai Wei-Chih
1171761f445c3dfe2f032af6201e32928eb4f07f92dLai Wei-Chih# Detect unknown arch
1181761f445c3dfe2f032af6201e32928eb4f07f92dLai Wei-ChihUNKNOWN_ARCH=$(filter_out "$DEFAULT_ARCHS" "$ARCHS")
1191761f445c3dfe2f032af6201e32928eb4f07f92dLai Wei-Chihif [ ! -z "$UNKNOWN_ARCH" ]; then
1201761f445c3dfe2f032af6201e32928eb4f07f92dLai Wei-Chih    ARCHS=$(filter_out "$UNKNOWN_ARCH" "$ARCHS")
1211761f445c3dfe2f032af6201e32928eb4f07f92dLai Wei-Chihfi
1221761f445c3dfe2f032af6201e32928eb4f07f92dLai Wei-Chih
1238e58e6b10c9c82e2085420b0e2f4c82d1db9b5c3Logan ChienLLVM_VERSION_LIST=$(commas_to_spaces $LLVM_VERSION_LIST)
124d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner
125d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerif [ "$DARWIN_SSH" -a -z "$CUSTOM_SYSTEMS" ]; then
126d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    SYSTEMS=" darwin-x86"
127d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerfi
128d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner
129d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' TurnerFLAGS=
130d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerif [ "$VERBOSE" = "yes" ]; then
131d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    FLAGS=$FLAGS" --verbose"
132d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerfi
133d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerif [ "$VERBOSE2" = "yes" ]; then
134d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    FLAGS=$FLAGS" --verbose"
135d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerfi
136d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerif [ "$TRY64" = "yes" ]; then
13709a968eb0b25413ccc5cce15d04216a630e85631Ray Donnelly    FLAGS=$FLAGS" --try-64"
138d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerelse
139d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    force_32bit_binaries
140d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerfi
141d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerif [ "$PACKAGE_DIR" ]; then
1421c855558c00aaf7f8f86335b605e7b78d8a17172David 'Digit' Turner    mkdir -p "$PACKAGE_DIR"
1431c855558c00aaf7f8f86335b605e7b78d8a17172David 'Digit' Turner    fail_panic "Could not create package directory: $PACKAGE_DIR"
144d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    FLAGS=$FLAGS" --package-dir=$PACKAGE_DIR"
145d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerfi
146d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner
147d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerdo_remote_host_build ()
148d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner{
149d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    local SYSTEM="$1"
150d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    local ARCH="$2"
151d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    local REMOTE_HOST="$3"
152d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner
153d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    # 1/ Copy the NDK toolchain build scripts
154d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    # 2/ Copy the toolchain sources/package
155d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    # 3/ Ssh to unpack the build scripts, and run them
156d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    # 4/ Copy back the generated prebuilt binaries
157d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    #
158d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    dump "Preparing remote build on $REMOTE_HOST..."
159d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner
160d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    # First try to create a remote temp directory on the remote host
161d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    # Do it first so we can fail fast, not after spending time preparing
162d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    # large tarballs.
163d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    dump "Creating remote temp directory"
164d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    TMPREMOTE=/tmp/ndk-$USER/darwin-prebuild
165d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    run ssh $REMOTE_HOST "mkdir -p $TMPREMOTE && rm -rf $TMPREMOTE/*"
166d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    fail_panic "Could not create temporary build directory on $REMOTE_HOST"
167d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner
168d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    # Now, package all the stuff we're going to send in a temporary
169d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    # directory here on the machine, except toolchain sources
170d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    TMPDARWIN=$NDK_TMPDIR/darwin  # Where we're going to package stuff
171d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    log "Using temporary work directory: $TMPDARWIN"
172d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    mkdir -p "$TMPDARWIN"
173d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    dump "Prepare NDK build scripts"
174d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    copy_directory "$ANDROID_NDK_ROOT/build" "$TMPDARWIN/ndk/build"
175d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    copy_file_list "$ANDROID_NDK_ROOT" "$TMPDARWIN/ndk" sources/android/libthread_db
176d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    copy_file_list "$ANDROID_NDK_ROOT" "$TMPDARWIN/ndk" "$STLPORT_SUBDIR"
177d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    copy_file_list "$ANDROID_NDK_ROOT" "$TMPDARWIN/ndk" "$GABIXX_SUBDIR"
1785c1b54f8aa498659c154a5cb909d0e19a9b63e92David 'Digit' Turner    copy_file_list "$ANDROID_NDK_ROOT" "$TMPDARWIN/ndk" sources/host-tools
179d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    dump "Prepare platforms files"
180d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    copy_directory "$NDK_DIR/platforms" "$TMPDARWIN/ndk/platforms"
181d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    dump "Copying NDK build scripts and platform files to remote..."
182d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    (cd "$TMPDARWIN" && tar czf - ndk) | (ssh $REMOTE_HOST tar xzf - -C $TMPREMOTE)
183d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    fail_panic "Could not copy!"
184d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    rm -rf $TMPDARWIN
185d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner
186d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    # Copy the toolchain sources
187d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    dump "Copy toolchain sources to remote"
188d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    ssh $REMOTE_HOST mkdir -p $TMPREMOTE/toolchain &&
189d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    (cd "$SRC_DIR" && tar czf - .) | (ssh $REMOTE_HOST tar xzf - -C $TMPREMOTE/toolchain)
190d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    fail_panic "Could not copy toolchain!"
191d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner
192d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    # Time to run the show :-)
1931761f445c3dfe2f032af6201e32928eb4f07f92dLai Wei-Chih    for ARCH in $(commas_to_spaces $ARCHS $UNKNOWN_ARCH); do
194d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner        dump "Running remote $ARCH toolchain build..."
195d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner        SYSROOT=$TMPREMOTE/ndk/platforms/android-$(get_default_api_level_for_arch $ARCH)/arch-$ARCH
196d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David '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"
197d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner        fail_panic "Could not build prebuilt $ARCH toolchain on Darwin!"
198d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    done
199d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    # Get the results
200d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    dump "Copying back Darwin prebuilt packages..."
201d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    mkdir -p $TMPDARWIN/packages && rm -rf $TMPDARWIN/packages/*
202d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    run scp $REMOTE_HOST:$TMPREMOTE/packages/*-darwin-* $TMPDARWIN/packages
203d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    fail_panic "Could not grab Darwin packages!"
204d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner
205d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    for PACK in $TMPDARWIN/packages/*; do
206d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner        if [ "$PACKAGE_DIR" ]; then
207d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner            echo "Copying $(basename $PACK) to $PACKAGE_DIR..."
208d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner            cp $PACK $PACKAGE_DIR/
209d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner        else
210d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner            echo "Unpacking $(basename $PACK) into $NDK_DIR..."
211d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner            unpack_archive $PACK $NDK_DIR
212d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner        fi
213d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner        fail_panic ""
214d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    done
215d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner
216d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    dump "Cleaning up remote machine..."
217d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    run ssh $REMOTE_HOST rm -rf $TMPREMOTE
218d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner}
219d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner
220d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerfor SYSTEM in $SYSTEMS; do
221d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner
2223b28972d8a5a108579496233266fccd69c9d2fe5Andrew Hsieh    # Add --mingw/--darwin flag
223d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    TOOLCHAIN_FLAGS=$FLAGS
224bd2fa8bbb88e221220827bbfca6db13016893d35Andrew Hsieh    CANADIAN_BUILD=no
2253b28972d8a5a108579496233266fccd69c9d2fe5Andrew Hsieh    if [ "$HOST_TAG32" = "linux-x86" ]; then
2263b28972d8a5a108579496233266fccd69c9d2fe5Andrew Hsieh        case "$SYSTEM" in
2273b28972d8a5a108579496233266fccd69c9d2fe5Andrew Hsieh            windows)
2283b28972d8a5a108579496233266fccd69c9d2fe5Andrew Hsieh                TOOLCHAIN_FLAGS=$TOOLCHAIN_FLAGS" --mingw"
229bd2fa8bbb88e221220827bbfca6db13016893d35Andrew Hsieh                CANADIAN_BUILD=yes
2303b28972d8a5a108579496233266fccd69c9d2fe5Andrew Hsieh                ;;
231bd2fa8bbb88e221220827bbfca6db13016893d35Andrew Hsieh            darwin-x86)
2323b28972d8a5a108579496233266fccd69c9d2fe5Andrew Hsieh                TOOLCHAIN_FLAGS=$TOOLCHAIN_FLAGS" --darwin"
233bd2fa8bbb88e221220827bbfca6db13016893d35Andrew Hsieh                CANADIAN_BUILD=yes
2343b28972d8a5a108579496233266fccd69c9d2fe5Andrew Hsieh                ;;
2353b28972d8a5a108579496233266fccd69c9d2fe5Andrew Hsieh        esac
236d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    fi
237d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner
238524869abdbd228ccb916cc9a4902550dd6382ba2Andrew Hsieh    # Should we do a remote build?
239bd2fa8bbb88e221220827bbfca6db13016893d35Andrew Hsieh    if [ "$SYSTEM" != "$HOST_TAG32" -a "$CANADIAN_BUILD" != "yes" ]; then
240d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner        case $SYSTEM in
241d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner            darwin-*)
242d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner                if [ "$DARWIN_SSH" ]; then
243d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner                    do_remote_host_build "$SYSTEM" "$ARCH" "$DARWIN_SSH"
244d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner                else
245d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner                    echo "WARNING: Can't build $SYSTEM binaries on this system!"
246d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner                    echo "Consider using the --darwin-ssh option."
247d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner                fi
248d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner                continue
249d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner        esac
250d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    fi
251d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner
252524869abdbd228ccb916cc9a4902550dd6382ba2Andrew Hsieh    # Determin the display system name
253524869abdbd228ccb916cc9a4902550dd6382ba2Andrew Hsieh    SYSNAME=$SYSTEM
254524869abdbd228ccb916cc9a4902550dd6382ba2Andrew Hsieh    if [ "$TRY64" = "yes" ]; then
255524869abdbd228ccb916cc9a4902550dd6382ba2Andrew Hsieh        case $SYSTEM in
256524869abdbd228ccb916cc9a4902550dd6382ba2Andrew Hsieh            darwin-x86|linux-x86)
25769e3629c68313d29140e1fdf5c6216a0e8963a22Andrew Hsieh                SYSNAME=${SYSTEM%%x86}x86_64
258524869abdbd228ccb916cc9a4902550dd6382ba2Andrew Hsieh                ;;
259524869abdbd228ccb916cc9a4902550dd6382ba2Andrew Hsieh            windows)
260524869abdbd228ccb916cc9a4902550dd6382ba2Andrew Hsieh                SYSNAME=windows-x86_64
261524869abdbd228ccb916cc9a4902550dd6382ba2Andrew Hsieh                ;;
262524869abdbd228ccb916cc9a4902550dd6382ba2Andrew Hsieh        esac
263524869abdbd228ccb916cc9a4902550dd6382ba2Andrew Hsieh    fi
264d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner
265524869abdbd228ccb916cc9a4902550dd6382ba2Andrew Hsieh    # First, ndk-stack
266dd8fc70f5479bb634c0919eed7f906d540ec807bAndrew Hsieh    echo "Building $SYSNAME ndk-stack"
2675647b5efe1584bfcb3ed10ca617f7b1d73f63d9bAndrew Hsieh    run $BUILDTOOLS/build-ndk-stack.sh $TOOLCHAIN_FLAGS --with-libbfd --src-dir=$SRC_DIR
268dd8fc70f5479bb634c0919eed7f906d540ec807bAndrew Hsieh    fail_panic "ndk-stack build failure!"
2692454d616a21ad5d1382b0c0615e6ead399433cc5David 'Digit' Turner
2702454d616a21ad5d1382b0c0615e6ead399433cc5David 'Digit' Turner    echo "Building $SYSNAME ndk-depends"
2712454d616a21ad5d1382b0c0615e6ead399433cc5David 'Digit' Turner    run $BUILDTOOLS/build-ndk-depends.sh $TOOLCHAIN_FLAGS
2722454d616a21ad5d1382b0c0615e6ead399433cc5David 'Digit' Turner    fail_panic "ndk-depends build failure!"
2732454d616a21ad5d1382b0c0615e6ead399433cc5David 'Digit' Turner
274524869abdbd228ccb916cc9a4902550dd6382ba2Andrew Hsieh    echo "Building $SYSNAME ndk-make"
2755c1b54f8aa498659c154a5cb909d0e19a9b63e92David 'Digit' Turner    run $BUILDTOOLS/build-host-make.sh $TOOLCHAIN_FLAGS
2765c1b54f8aa498659c154a5cb909d0e19a9b63e92David 'Digit' Turner    fail_panic "make build failure!"
2775c1b54f8aa498659c154a5cb909d0e19a9b63e92David 'Digit' Turner
278524869abdbd228ccb916cc9a4902550dd6382ba2Andrew Hsieh    echo "Building $SYSNAME ndk-awk"
2795c1b54f8aa498659c154a5cb909d0e19a9b63e92David 'Digit' Turner    run $BUILDTOOLS/build-host-awk.sh $TOOLCHAIN_FLAGS
2805c1b54f8aa498659c154a5cb909d0e19a9b63e92David 'Digit' Turner    fail_panic "awk build failure!"
2815c1b54f8aa498659c154a5cb909d0e19a9b63e92David 'Digit' Turner
282524869abdbd228ccb916cc9a4902550dd6382ba2Andrew Hsieh    echo "Building $SYSNAME ndk-sed"
2835c1b54f8aa498659c154a5cb909d0e19a9b63e92David 'Digit' Turner    run $BUILDTOOLS/build-host-sed.sh $TOOLCHAIN_FLAGS
2845c1b54f8aa498659c154a5cb909d0e19a9b63e92David 'Digit' Turner    fail_panic "sed build failure!"
2855c1b54f8aa498659c154a5cb909d0e19a9b63e92David 'Digit' Turner
286810a7daf51d3e530847ff56f600677502ad9e507Ray Donnelly    # ToDo: perl in windows/darwin cross.
287810a7daf51d3e530847ff56f600677502ad9e507Ray Donnelly    MAKE_PERL=no
288810a7daf51d3e530847ff56f600677502ad9e507Ray Donnelly    case $SYSTEM in
289810a7daf51d3e530847ff56f600677502ad9e507Ray Donnelly        linux*)
290810a7daf51d3e530847ff56f600677502ad9e507Ray Donnelly            MAKE_PERL=yes
291810a7daf51d3e530847ff56f600677502ad9e507Ray Donnelly        ;;
292810a7daf51d3e530847ff56f600677502ad9e507Ray Donnelly        darwin*)
293810a7daf51d3e530847ff56f600677502ad9e507Ray Donnelly            # Only works if not cross compiling.
294810a7daf51d3e530847ff56f600677502ad9e507Ray Donnelly            if [ "$CANADIAN_BUILD" = "no" ] ; then
295810a7daf51d3e530847ff56f600677502ad9e507Ray Donnelly                MAKE_PERL=yes
296810a7daf51d3e530847ff56f600677502ad9e507Ray Donnelly            fi
297810a7daf51d3e530847ff56f600677502ad9e507Ray Donnelly        ;;
298810a7daf51d3e530847ff56f600677502ad9e507Ray Donnelly        *)
299810a7daf51d3e530847ff56f600677502ad9e507Ray Donnelly        ;;
300810a7daf51d3e530847ff56f600677502ad9e507Ray Donnelly    esac
301810a7daf51d3e530847ff56f600677502ad9e507Ray Donnelly
302810a7daf51d3e530847ff56f600677502ad9e507Ray Donnelly    if [ "$MAKE_PERL" = "yes" ] ; then
3032641f6f5414e56d792fac26572a5d984977ef462Andrew Hsieh        echo "Building $SYSNAME ndk-perl"
3042641f6f5414e56d792fac26572a5d984977ef462Andrew Hsieh        run $BUILDTOOLS/build-host-perl.sh $TOOLCHAIN_FLAGS "$SRC_DIR"
3052641f6f5414e56d792fac26572a5d984977ef462Andrew Hsieh        fail_panic "perl build failure!"
3062641f6f5414e56d792fac26572a5d984977ef462Andrew Hsieh    fi
3072641f6f5414e56d792fac26572a5d984977ef462Andrew Hsieh
308c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chih    echo "Building $SYSNAME ndk-python"
309433f2c4e0348d448f4e31efa93537f1784bf47b4Andrew Hsieh    run $BUILDTOOLS/build-host-python.sh $TOOLCHAIN_FLAGS "--toolchain-src-dir=$SRC_DIR" "--systems=$SYSTEM" "--force"
310c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chih    fail_panic "python build failure!"
311c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chih
3124d1439a1126c4ff8840135767126dcc5a070f01aAndrew Hsieh    echo "Building $SYSNAME ndk-yasm"
3134d1439a1126c4ff8840135767126dcc5a070f01aAndrew Hsieh    run $BUILDTOOLS/build-host-yasm.sh "$SRC_DIR" "$NDK_DIR" $TOOLCHAIN_FLAGS
3144d1439a1126c4ff8840135767126dcc5a070f01aAndrew Hsieh    fail_panic "yasm build failure!"
3154d1439a1126c4ff8840135767126dcc5a070f01aAndrew Hsieh
316ad1afc5e66ab40201947a3178eba975515b0d73cDavid 'Digit' Turner    if [ "$SYSTEM" = "windows" ]; then
317524869abdbd228ccb916cc9a4902550dd6382ba2Andrew Hsieh        echo "Building $SYSNAME toolbox"
318ad1afc5e66ab40201947a3178eba975515b0d73cDavid 'Digit' Turner        run $BUILDTOOLS/build-host-toolbox.sh $FLAGS
319ad1afc5e66ab40201947a3178eba975515b0d73cDavid 'Digit' Turner        fail_panic "Windows toolbox build failure!"
320ad1afc5e66ab40201947a3178eba975515b0d73cDavid 'Digit' Turner    fi
321ad1afc5e66ab40201947a3178eba975515b0d73cDavid 'Digit' Turner
322d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    # Then the toolchains
323d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    for ARCH in $ARCHS; do
324f7e74d4ece211f975f6bfc90132e26a6048b79f1David 'Digit' Turner        TOOLCHAIN_NAMES=$(get_toolchain_name_list_for_arch $ARCH)
3255b3a49bdbd08775d0e6f9727221fe98946f6db44Pavel Chupin        if [ "$GCC_VERSION_LIST" != "default" ]; then
3265b3a49bdbd08775d0e6f9727221fe98946f6db44Pavel Chupin           TOOLCHAINS=
3275b3a49bdbd08775d0e6f9727221fe98946f6db44Pavel Chupin           for VERSION in $(commas_to_spaces $GCC_VERSION_LIST); do
3285b3a49bdbd08775d0e6f9727221fe98946f6db44Pavel Chupin              for TOOLCHAIN in $TOOLCHAIN_NAMES; do
3295b3a49bdbd08775d0e6f9727221fe98946f6db44Pavel Chupin                 if [ $TOOLCHAIN != ${TOOLCHAIN%%$VERSION} ]; then
3305b3a49bdbd08775d0e6f9727221fe98946f6db44Pavel Chupin                    TOOLCHAINS="$TOOLCHAIN $TOOLCHAINS"
3315b3a49bdbd08775d0e6f9727221fe98946f6db44Pavel Chupin                 fi
3325b3a49bdbd08775d0e6f9727221fe98946f6db44Pavel Chupin              done
3335b3a49bdbd08775d0e6f9727221fe98946f6db44Pavel Chupin           done
3345b3a49bdbd08775d0e6f9727221fe98946f6db44Pavel Chupin           TOOLCHAIN_NAMES=$TOOLCHAINS
3355b3a49bdbd08775d0e6f9727221fe98946f6db44Pavel Chupin        fi
336f7e74d4ece211f975f6bfc90132e26a6048b79f1David 'Digit' Turner        if [ -z "$TOOLCHAIN_NAMES" ]; then
3375b3a49bdbd08775d0e6f9727221fe98946f6db44Pavel Chupin            echo "ERROR: Toolchains: "$(spaces_to_commas $GCC_VERSION_LIST)" are not available for arch: $ARCH"
338d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner            exit 1
339d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner        fi
340d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner
341f7e74d4ece211f975f6bfc90132e26a6048b79f1David 'Digit' Turner        for TOOLCHAIN_NAME in $TOOLCHAIN_NAMES; do
342524869abdbd228ccb916cc9a4902550dd6382ba2Andrew Hsieh            echo "Building $SYSNAME toolchain for $ARCH architecture: $TOOLCHAIN_NAME"
343b7d458f506a7c692a1d73338d494823680d19175Pavel Chupin            run $BUILDTOOLS/build-gcc.sh "$SRC_DIR" "$NDK_DIR" $TOOLCHAIN_NAME $TOOLCHAIN_FLAGS --with-python=prebuilt -j$BUILD_NUM_CPUS
34469e3629c68313d29140e1fdf5c6216a0e8963a22Andrew Hsieh            fail_panic "Could not build $TOOLCHAIN_NAME-$SYSNAME!"
345f7e74d4ece211f975f6bfc90132e26a6048b79f1David 'Digit' Turner        done
346d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    done
347d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner
3488e58e6b10c9c82e2085420b0e2f4c82d1db9b5c3Logan Chien    # Build llvm and clang
349ddeed0481172250935ed47f906905629450d981bAndrew Hsieh    POLLY_FLAGS=
350ddeed0481172250935ed47f906905629450d981bAndrew Hsieh    if [ "$TRY64" != "yes" -a "$SYSTEM" != "windows" ]; then
351ddeed0481172250935ed47f906905629450d981bAndrew Hsieh        POLLY_FLAGS="--with-polly"
352ddeed0481172250935ed47f906905629450d981bAndrew Hsieh    fi
3538e58e6b10c9c82e2085420b0e2f4c82d1db9b5c3Logan Chien    for LLVM_VERSION in $LLVM_VERSION_LIST; do
354524869abdbd228ccb916cc9a4902550dd6382ba2Andrew Hsieh        echo "Building $SYSNAME clang/llvm-$LLVM_VERSION"
355b7d458f506a7c692a1d73338d494823680d19175Pavel Chupin        run $BUILDTOOLS/build-llvm.sh "$SRC_DIR" "$NDK_DIR" "llvm-$LLVM_VERSION" $TOOLCHAIN_FLAGS $POLLY_FLAGS $CHECK_FLAG -j$BUILD_NUM_CPUS
35669e3629c68313d29140e1fdf5c6216a0e8963a22Andrew Hsieh        fail_panic "Could not build llvm for $SYSNAME"
3578e58e6b10c9c82e2085420b0e2f4c82d1db9b5c3Logan Chien    done
3588e58e6b10c9c82e2085420b0e2f4c82d1db9b5c3Logan Chien
35969e3629c68313d29140e1fdf5c6216a0e8963a22Andrew Hsieh    # Deploy ld.mcld
36069e3629c68313d29140e1fdf5c6216a0e8963a22Andrew Hsieh    $PROGDIR/deploy-host-mcld.sh --package-dir=$PACKAGE_DIR --systems=$SYSNAME
36169e3629c68313d29140e1fdf5c6216a0e8963a22Andrew Hsieh    fail_panic "Could not deploy ld.mcld for $SYSNAME"
36269e3629c68313d29140e1fdf5c6216a0e8963a22Andrew Hsieh
363d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    # We're done for this system
364d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerdone
365d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner
3668fbff41d699dad1386dcdf58e02b7263939abe41Andrew Hsieh# Build tools common to all system
3678fbff41d699dad1386dcdf58e02b7263939abe41Andrew Hsiehrun $BUILDTOOLS/build-analyzer.sh "$SRC_DIR" "$NDK_DIR" "llvm-$DEFAULT_LLVM_VERSION" --package-dir="$PACKAGE_DIR"
3688fbff41d699dad1386dcdf58e02b7263939abe41Andrew Hsieh
369d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerif [ "$PACKAGE_DIR" ]; then
370d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    echo "Done, please look at $PACKAGE_DIR"
371d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerelse
372d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner    echo "Done"
373d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turnerfi
374d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6David 'Digit' Turner
37509a968eb0b25413ccc5cce15d04216a630e85631Ray Donnellyexit 0
376