build-target-prebuilts.sh revision b4789c38c2898b92e7e55274ded1e7f953d5cbf7
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
261c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' TurnerARCHS=$DEFAULT_ARCHS
271c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerregister_var_option "--arch=<list>" ARCHS "List of target archs to build for"
281c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner
291c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' TurnerPACKAGE_DIR=
301c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerregister_var_option "--package-dir=<path>" PACKAGE_DIR "Package toolchain into this directory"
311c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner
32732d3dd872bf85103b3cd391a3519d0ca957a10fRay DonnellyVISIBLE_LIBGNUSTL_STATIC=
33732d3dd872bf85103b3cd391a3519d0ca957a10fRay Donnellyregister_var_option "--visible-libgnustl-static" VISIBLE_LIBGNUSTL_STATIC "Do not use hidden visibility for libgnustl_static.a"
34732d3dd872bf85103b3cd391a3519d0ca957a10fRay Donnelly
351c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerregister_jobs_option
361c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner
371c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' TurnerPROGRAM_PARAMETERS="<toolchain-src-dir>"
381c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' TurnerPROGRAM_DESCRIPTION=\
391c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner"This script can be used to rebuild all the target NDK prebuilts at once.
401c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' TurnerYou need to give it the path to the toolchain source directory, as
411c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerdownloaded by the 'download-toolchain-sources.sh' dev-script."
421c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner
431c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerextract_parameters "$@"
441c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner
451c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner# Check toolchain source path
461c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' TurnerSRC_DIR="$PARAMETERS"
471c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnercheck_toolchain_src_dir "$SRC_DIR"
48b4789c38c2898b92e7e55274ded1e7f953d5cbf7TDYaSRC_DIR=`cd $SRC_DIR; pwd`
491c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner
501c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner# Now we can do the build
511c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' TurnerBUILDTOOLS=$ANDROID_NDK_ROOT/build/tools
521c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner
531c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerdump "Building platforms and samples..."
541c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' TurnerPACKAGE_FLAGS=
551c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerif [ "$PACKAGE_DIR" ]; then
561c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner    PACKAGE_FLAGS="--package-dir=$PACKAGE_DIR"
571c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerfi
581c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner
591c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerrun $BUILDTOOLS/gen-platforms.sh --samples --fast-copy --dst-dir=$NDK_DIR --ndk-dir=$NDK_DIR --arch=$(spaces_to_commas $ARCHS) $PACKAGE_FLAGS
601c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerfail_panic "Could not generate platforms and samples directores!"
611c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner
621c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' TurnerARCHS=$(commas_to_spaces $ARCHS)
631c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner
641c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' TurnerFLAGS=
651c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerif [ "$VERBOSE" = "yes" ]; then
661c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner    FLAGS=$FLAGS" --verbose"
671c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerfi
681c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerif [ "$VERBOSE2" = "yes" ]; then
691c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner    FLAGS=$FLAGS" --verbose"
701c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerfi
711c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerif [ "$PACKAGE_DIR" ]; then
721c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner    mkdir -p "$PACKAGE_DIR"
731c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner    fail_panic "Could not create package directory: $PACKAGE_DIR"
741c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner    FLAGS=$FLAGS" --package-dir=\"$PACKAGE_DIR\""
751c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerfi
761c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' TurnerFLAGS=$FLAGS" -j$NUM_JOBS"
771c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner
781c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner# First, gdbserver
791c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerfor ARCH in $ARCHS; do
80f6c7ce0d9e6ed9ff94d15325ea0f42573f6277cbAndrew Hsieh    GDB_TOOLCHAINS=$(get_default_toolchain_name_for_arch $ARCH)
81f7e74d4ece211f975f6bfc90132e26a6048b79f1David 'Digit' Turner    for GDB_TOOLCHAIN in $GDB_TOOLCHAINS; do
82f7e74d4ece211f975f6bfc90132e26a6048b79f1David 'Digit' Turner        dump "Building $GDB_TOOLCHAIN gdbserver binaries..."
83f7e74d4ece211f975f6bfc90132e26a6048b79f1David 'Digit' Turner        run $BUILDTOOLS/build-gdbserver.sh "$SRC_DIR" "$NDK_DIR" "$GDB_TOOLCHAIN" $FLAGS
84f7e74d4ece211f975f6bfc90132e26a6048b79f1David 'Digit' Turner        fail_panic "Could not build $GDB_TOOLCHAIN gdb-server!"
85f7e74d4ece211f975f6bfc90132e26a6048b79f1David 'Digit' Turner    done
861c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerdone
871c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner
881c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' TurnerFLAGS=$FLAGS" --ndk-dir=\"$NDK_DIR\""
89f3bba2e7a5623552aa505d55bdd198cab031e2bcPavel ChupinABIS=$(convert_archs_to_abis $ARCHS)
901c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner
91f3bba2e7a5623552aa505d55bdd198cab031e2bcPavel ChupinFLAGS=$FLAGS" --abis=$ABIS"
92f3bba2e7a5623552aa505d55bdd198cab031e2bcPavel Chupindump "Building $ABIS gabi++ binaries..."
931c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerrun $BUILDTOOLS/build-gabi++.sh $FLAGS
941c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerfail_panic "Could not build gabi++!"
951c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner
96f3bba2e7a5623552aa505d55bdd198cab031e2bcPavel Chupindump "Building $ABIS stlport binaries..."
971c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerrun $BUILDTOOLS/build-stlport.sh $FLAGS
981c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerfail_panic "Could not build stlport!"
991c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner
100732d3dd872bf85103b3cd391a3519d0ca957a10fRay Donnellyif [ ! -z $VISIBLE_LIBGNUSTL_STATIC ]; then
101a8eee39c10f4e5a51d25e4c1d97014561d0715cdRay Donnelly    GNUSTL_STATIC_VIS_FLAG=--visible-libgnustl-static
102732d3dd872bf85103b3cd391a3519d0ca957a10fRay Donnellyfi
103732d3dd872bf85103b3cd391a3519d0ca957a10fRay Donnelly
104f3bba2e7a5623552aa505d55bdd198cab031e2bcPavel Chupindump "Building $ABIS gnustl binaries..."
105a8eee39c10f4e5a51d25e4c1d97014561d0715cdRay Donnellyrun $BUILDTOOLS/build-gnu-libstdc++.sh $FLAGS $GNUSTL_STATIC_VIS_FLAG "$SRC_DIR"
1061c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerfail_panic "Could not build gnustl!"
1071c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner
1086b4357c565834e8fd03b00bc5e30e4f0d6e6f4daAndrew Hsiehdump "Building $ABIS libportable binaries..."
1096b4357c565834e8fd03b00bc5e30e4f0d6e6f4daAndrew Hsiehrun $BUILDTOOLS/build-libportable.sh $FLAGS
1106b4357c565834e8fd03b00bc5e30e4f0d6e6f4daAndrew Hsiehfail_panic "Could not build libportable!"
1116b4357c565834e8fd03b00bc5e30e4f0d6e6f4daAndrew Hsieh
112c8e78b09f4dd9393e70d9ddb17e67b0db572545aAndrew Hsiehdump "Building $ABIS compiler-rt binaries..."
113c8e78b09f4dd9393e70d9ddb17e67b0db572545aAndrew Hsiehrun $BUILDTOOLS/build-compiler-rt.sh $FLAGS --src-dir="$SRC_DIR/llvm-$DEFAULT_LLVM_VERSION/compiler-rt"
114c8e78b09f4dd9393e70d9ddb17e67b0db572545aAndrew Hsiehfail_panic "Could not build compiler-rt!"
115c8e78b09f4dd9393e70d9ddb17e67b0db572545aAndrew Hsieh
1161c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerif [ "$PACKAGE_DIR" ]; then
1171c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner    dump "Done, see $PACKAGE_DIR"
1181c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerelse
1191c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner    dump "Done"
1201c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerfi
1211c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turner
1221c663b4a2961e4c9bde69eb740327083bbc92ed8David 'Digit' Turnerexit 0
123