11c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner#!/bin/sh 21c663b4a2961e4c9bde69eb740327083bbc92ed8David '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 target-specific prebuilts 181c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner# 191c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner 201c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' TurnerPROGDIR=$(dirname $0) 211c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner. $PROGDIR/prebuilt-common.sh 221c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner 231c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' TurnerNDK_DIR=$ANDROID_NDK_ROOT 241c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerregister_var_option "--ndk-dir=<path>" NDK_DIR "NDK installation directory" 251c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner 260cf77934ec5e47404dd6e28c4713511b36546a39Lai Wei-ChihARCHS=$(find_ndk_unknown_archs) 270cf77934ec5e47404dd6e28c4713511b36546a39Lai Wei-ChihARCHS="$DEFAULT_ARCHS $ARCHS" 281c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerregister_var_option "--arch=<list>" ARCHS "List of target archs to build for" 291c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner 305c86028445b9510424d66cbe3cecbdc0eff7875eLai Wei-ChihNO_GEN_PLATFORMS= 315c86028445b9510424d66cbe3cecbdc0eff7875eLai Wei-Chihregister_var_option "--no-gen-platforms" NO_GEN_PLATFORMS "Don't generate platforms/ directory, use existing one" 325c86028445b9510424d66cbe3cecbdc0eff7875eLai Wei-Chih 331c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' TurnerPACKAGE_DIR= 341c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerregister_var_option "--package-dir=<path>" PACKAGE_DIR "Package toolchain into this directory" 351c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner 36732d3dd872bf85103b3cd391a3519d0ca957a10fRay DonnellyVISIBLE_LIBGNUSTL_STATIC= 37732d3dd872bf85103b3cd391a3519d0ca957a10fRay Donnellyregister_var_option "--visible-libgnustl-static" VISIBLE_LIBGNUSTL_STATIC "Do not use hidden visibility for libgnustl_static.a" 38732d3dd872bf85103b3cd391a3519d0ca957a10fRay Donnelly 391c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerregister_jobs_option 401c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner 411c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' TurnerPROGRAM_PARAMETERS="<toolchain-src-dir>" 421c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' TurnerPROGRAM_DESCRIPTION=\ 431c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner"This script can be used to rebuild all the target NDK prebuilts at once. 441c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' TurnerYou need to give it the path to the toolchain source directory, as 451c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerdownloaded by the 'download-toolchain-sources.sh' dev-script." 461c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner 471c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerextract_parameters "$@" 481c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner 491c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner# Check toolchain source path 501c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' TurnerSRC_DIR="$PARAMETERS" 511c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnercheck_toolchain_src_dir "$SRC_DIR" 52b4789c38c2898b92e7e55274ded1e7f953d5cbf7TDYaSRC_DIR=`cd $SRC_DIR; pwd` 531c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner 541c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner# Now we can do the build 551c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' TurnerBUILDTOOLS=$ANDROID_NDK_ROOT/build/tools 561c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner 571c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerdump "Building platforms and samples..." 581c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' TurnerPACKAGE_FLAGS= 591c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerif [ "$PACKAGE_DIR" ]; then 601c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner PACKAGE_FLAGS="--package-dir=$PACKAGE_DIR" 611c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerfi 621c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner 635c86028445b9510424d66cbe3cecbdc0eff7875eLai Wei-Chihif [ -z "$NO_GEN_PLATFORMS" ]; then 645c86028445b9510424d66cbe3cecbdc0eff7875eLai Wei-Chih echo "Preparing the build..." 655c86028445b9510424d66cbe3cecbdc0eff7875eLai Wei-Chih run $BUILDTOOLS/gen-platforms.sh --samples --fast-copy --dst-dir=$NDK_DIR --ndk-dir=$NDK_DIR --arch=$(spaces_to_commas $ARCHS) $PACKAGE_FLAGS 665c86028445b9510424d66cbe3cecbdc0eff7875eLai Wei-Chih fail_panic "Could not generate platforms and samples directores!" 675c86028445b9510424d66cbe3cecbdc0eff7875eLai Wei-Chihelse 685c86028445b9510424d66cbe3cecbdc0eff7875eLai Wei-Chih if [ ! -d "$NDK_DIR/platforms" ]; then 695c86028445b9510424d66cbe3cecbdc0eff7875eLai Wei-Chih echo "ERROR: --no-gen-platforms used but directory missing: $NDK_DIR/platforms" 705c86028445b9510424d66cbe3cecbdc0eff7875eLai Wei-Chih exit 1 715c86028445b9510424d66cbe3cecbdc0eff7875eLai Wei-Chih fi 725c86028445b9510424d66cbe3cecbdc0eff7875eLai Wei-Chihfi 731c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner 741c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' TurnerARCHS=$(commas_to_spaces $ARCHS) 751c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner 760cf77934ec5e47404dd6e28c4713511b36546a39Lai Wei-Chih# Detect unknown arch 770cf77934ec5e47404dd6e28c4713511b36546a39Lai Wei-ChihUNKNOWN_ARCH=$(filter_out "$DEFAULT_ARCHS" "$ARCHS") 780cf77934ec5e47404dd6e28c4713511b36546a39Lai Wei-Chihif [ ! -z "$UNKNOWN_ARCH" ]; then 790cf77934ec5e47404dd6e28c4713511b36546a39Lai Wei-Chih ARCHS=$(filter_out "$UNKNOWN_ARCH" "$ARCHS") 800cf77934ec5e47404dd6e28c4713511b36546a39Lai Wei-Chihfi 810cf77934ec5e47404dd6e28c4713511b36546a39Lai Wei-Chih 821c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' TurnerFLAGS= 831c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerif [ "$VERBOSE" = "yes" ]; then 841c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner FLAGS=$FLAGS" --verbose" 851c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerfi 861c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerif [ "$VERBOSE2" = "yes" ]; then 871c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner FLAGS=$FLAGS" --verbose" 881c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerfi 891c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerif [ "$PACKAGE_DIR" ]; then 901c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner mkdir -p "$PACKAGE_DIR" 911c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner fail_panic "Could not create package directory: $PACKAGE_DIR" 921c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner FLAGS=$FLAGS" --package-dir=\"$PACKAGE_DIR\"" 931c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerfi 941c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' TurnerFLAGS=$FLAGS" -j$NUM_JOBS" 951c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner 961c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner# First, gdbserver 971c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerfor ARCH in $ARCHS; do 98f6c7ce0d9e6ed9ff94d15325ea0f42573f6277cbAndrew Hsieh GDB_TOOLCHAINS=$(get_default_toolchain_name_for_arch $ARCH) 99f7e74d4ece211f975f6bfc90132e26a6048b79f1David 'Digit' Turner for GDB_TOOLCHAIN in $GDB_TOOLCHAINS; do 100645c4b642895df912d19c123d201e7345525a2bdPavel Chupin GDB_VERSION="--gdb-version="$(get_default_gdb_version_for_gcc $GDB_TOOLCHAIN) 101f7e74d4ece211f975f6bfc90132e26a6048b79f1David 'Digit' Turner dump "Building $GDB_TOOLCHAIN gdbserver binaries..." 102645c4b642895df912d19c123d201e7345525a2bdPavel Chupin run $BUILDTOOLS/build-gdbserver.sh "$SRC_DIR" "$NDK_DIR" "$GDB_TOOLCHAIN" "$GDB_VERSION" $FLAGS 103f7e74d4ece211f975f6bfc90132e26a6048b79f1David 'Digit' Turner fail_panic "Could not build $GDB_TOOLCHAIN gdb-server!" 104f7e74d4ece211f975f6bfc90132e26a6048b79f1David 'Digit' Turner done 1051c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerdone 1061c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner 1071c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' TurnerFLAGS=$FLAGS" --ndk-dir=\"$NDK_DIR\"" 108f3bba2e7a5623552aa505d55bdd198cab031e2bcPavel ChupinABIS=$(convert_archs_to_abis $ARCHS) 1090cf77934ec5e47404dd6e28c4713511b36546a39Lai Wei-ChihUNKNOWN_ABIS=$(convert_archs_to_abis $UNKNOWN_ARCH) 1101c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner 111667dbb41059198b4039b1e6b40028a11d880ea16Andrew Hsiehdump "Building $ABIS compiler-rt binaries..." 112667dbb41059198b4039b1e6b40028a11d880ea16Andrew Hsiehrun $BUILDTOOLS/build-compiler-rt.sh --abis="$ABIS" $FLAGS --src-dir="$SRC_DIR/llvm-$DEFAULT_LLVM_VERSION/compiler-rt" \ 113667dbb41059198b4039b1e6b40028a11d880ea16Andrew Hsieh --llvm-version=$DEFAULT_LLVM_VERSION 114667dbb41059198b4039b1e6b40028a11d880ea16Andrew Hsiehfail_panic "Could not build compiler-rt!" 115667dbb41059198b4039b1e6b40028a11d880ea16Andrew Hsieh 116f3bba2e7a5623552aa505d55bdd198cab031e2bcPavel Chupindump "Building $ABIS gabi++ binaries..." 1170cf77934ec5e47404dd6e28c4713511b36546a39Lai Wei-Chihrun $BUILDTOOLS/build-cxx-stl.sh --stl=gabi++ --abis="$ABIS" $FLAGS 1181c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerfail_panic "Could not build gabi++!" 119409c951c8d0c4b31e71494c53388b43064c64e8eAndrew Hsiehrun $BUILDTOOLS/build-cxx-stl.sh --stl=gabi++ --abis="$ABIS" $FLAGS --with-debug-info 120409c951c8d0c4b31e71494c53388b43064c64e8eAndrew Hsiehfail_panic "Could not build gabi++ with debug info!" 1211c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner 1220cf77934ec5e47404dd6e28c4713511b36546a39Lai Wei-Chihdump "Building $ABIS $UNKNOWN_ABIS stlport binaries..." 1230cf77934ec5e47404dd6e28c4713511b36546a39Lai Wei-Chihrun $BUILDTOOLS/build-cxx-stl.sh --stl=stlport --abis="$ABIS,$UNKNOWN_ABIS" $FLAGS 1241c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerfail_panic "Could not build stlport!" 125409c951c8d0c4b31e71494c53388b43064c64e8eAndrew Hsiehrun $BUILDTOOLS/build-cxx-stl.sh --stl=stlport --abis="$ABIS,$UNKNOWN_ABIS" $FLAGS --with-debug-info 126409c951c8d0c4b31e71494c53388b43064c64e8eAndrew Hsiehfail_panic "Could not build stlport with debug info!" 1271c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner 12803e3962cba3ec10837e05744f322f5b72e29cb34Andrew Hsiehdump "Building $ABIS $UNKNOWN_ABIS libc++ binaries... with libc++abi" 1297670977319d537cb30ed322897022f649b1bd1f9Andrew Hsiehrun $BUILDTOOLS/build-cxx-stl.sh --stl=libc++-libc++abi --abis="$ABIS,$UNKNOWN_ABIS" $FLAGS --llvm-version=$DEFAULT_LLVM_VERSION 13003e3962cba3ec10837e05744f322f5b72e29cb34Andrew Hsiehfail_panic "Could not build libc++ with libc++abi!" 13103e3962cba3ec10837e05744f322f5b72e29cb34Andrew Hsiehrun $BUILDTOOLS/build-cxx-stl.sh --stl=libc++-libc++abi --abis="$ABIS,$UNKNOWN_ABIS" $FLAGS --with-debug-info --llvm-version=$DEFAULT_LLVM_VERSION 13203e3962cba3ec10837e05744f322f5b72e29cb34Andrew Hsiehfail_panic "Could not build libc++ with libc++abi and debug info!" 13303e3962cba3ec10837e05744f322f5b72e29cb34Andrew Hsieh 13403e3962cba3ec10837e05744f322f5b72e29cb34Andrew Hsieh# workaround issues in libc++/libc++abi for x86 and mips 13503e3962cba3ec10837e05744f322f5b72e29cb34Andrew Hsiehfor abi in $ABIS; do 13603e3962cba3ec10837e05744f322f5b72e29cb34Andrew Hsieh case $abi in 13768799d8727d963e24c42c5056b439f6276d5d92dAndrew Hsieh x86|x86_64|mips|mips64) 13803e3962cba3ec10837e05744f322f5b72e29cb34Andrew Hsieh dump "Rebuilding $abi libc++ binaries... with gabi++" 13903e3962cba3ec10837e05744f322f5b72e29cb34Andrew Hsieh run $BUILDTOOLS/build-cxx-stl.sh --stl=libc++-gabi++ --abis=$abi $FLAGS --llvm-version=$DEFAULT_LLVM_VERSION 14003e3962cba3ec10837e05744f322f5b72e29cb34Andrew Hsieh fail_panic "Could not build libc++ with gabi++!" 14103e3962cba3ec10837e05744f322f5b72e29cb34Andrew Hsieh run $BUILDTOOLS/build-cxx-stl.sh --stl=libc++-gabi++ --abis=$abi $FLAGS --with-debug-info --llvm-version=$DEFAULT_LLVM_VERSION 14203e3962cba3ec10837e05744f322f5b72e29cb34Andrew Hsieh fail_panic "Could not build libc++ with gabi++ and debug info!" 14303e3962cba3ec10837e05744f322f5b72e29cb34Andrew Hsieh ;; 14403e3962cba3ec10837e05744f322f5b72e29cb34Andrew Hsieh esac 14503e3962cba3ec10837e05744f322f5b72e29cb34Andrew Hsiehdone 1467c4534b55a734c189bc58ff8caf406430c2d2d44David 'Digit' Turner 147732d3dd872bf85103b3cd391a3519d0ca957a10fRay Donnellyif [ ! -z $VISIBLE_LIBGNUSTL_STATIC ]; then 148a8eee39c10f4e5a51d25e4c1d97014561d0715cdRay Donnelly GNUSTL_STATIC_VIS_FLAG=--visible-libgnustl-static 149732d3dd872bf85103b3cd391a3519d0ca957a10fRay Donnellyfi 150732d3dd872bf85103b3cd391a3519d0ca957a10fRay Donnelly 151f3bba2e7a5623552aa505d55bdd198cab031e2bcPavel Chupindump "Building $ABIS gnustl binaries..." 1520cf77934ec5e47404dd6e28c4713511b36546a39Lai Wei-Chihrun $BUILDTOOLS/build-gnu-libstdc++.sh --abis="$ABIS" $FLAGS $GNUSTL_STATIC_VIS_FLAG "$SRC_DIR" 1531c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerfail_panic "Could not build gnustl!" 154409c951c8d0c4b31e71494c53388b43064c64e8eAndrew Hsiehrun $BUILDTOOLS/build-gnu-libstdc++.sh --abis="$ABIS" $FLAGS $GNUSTL_STATIC_VIS_FLAG "$SRC_DIR" --with-debug-info 155409c951c8d0c4b31e71494c53388b43064c64e8eAndrew Hsiehfail_panic "Could not build gnustl with debug info!" 1561c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner 1576b4357c565834e8fd03b00bc5e30e4f0d6e6f4daAndrew Hsiehdump "Building $ABIS libportable binaries..." 1580cf77934ec5e47404dd6e28c4713511b36546a39Lai Wei-Chihrun $BUILDTOOLS/build-libportable.sh --abis="$ABIS" $FLAGS 1596b4357c565834e8fd03b00bc5e30e4f0d6e6f4daAndrew Hsiehfail_panic "Could not build libportable!" 1606b4357c565834e8fd03b00bc5e30e4f0d6e6f4daAndrew Hsieh 1611c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerif [ "$PACKAGE_DIR" ]; then 1621c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner dump "Done, see $PACKAGE_DIR" 1631c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerelse 1641c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner dump "Done" 1651c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerfi 1661c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner 1671c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerexit 0 168