148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner#!/bin/sh 248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# 348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Copyright (C) 2009 The Android Open Source Project 448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# 548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Licensed under the Apache License, Version 2.0 (the "License"); 648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# you may not use this file except in compliance with the License. 748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# You may obtain a copy of the License at 848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# 948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# http://www.apache.org/licenses/LICENSE-2.0 1048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# 1148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Unless required by applicable law or agreed to in writing, software 1248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# distributed under the License is distributed on an "AS IS" BASIS, 1348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# See the License for the specific language governing permissions and 1548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# limitations under the License. 1648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# 1748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# build-ndk-sysroot.sh 1848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# 1948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# collect files from an Android tree to assemble a sysroot suitable for 2048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# building a standable toolchain. 2148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# 2248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# after that, you may use build/tools/package-ndk-sysroot.sh to package 2348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# the resulting files for distribution. 2448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# 2548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# NOTE: this is different from the Android toolchain original build-sysroot.sh 2648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# script because we place target files differently. 2748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# 2848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# WARNING: For now, only a single target ABI/Architecture us supported 2948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# 3048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 31bd7544d2c67817fc565e89529a56bae3cc063622David 'Digit' Turner. `dirname $0`/ndk-common.sh 3248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 3348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# PLATFORM is the name of the current Android system platform 3469545a3024ba0087e1993fc8a80e01610b3a0774David 'Digit' TurnerPLATFORM=android-3 3548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 3648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ABI is the target ABI name for the NDK 3748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerABI=arm 3848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 3948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerOPTION_HELP=no 4048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerOPTION_BUILD_OUT= 4148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerOPTION_PLATFORM= 4248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerOPTION_PACKAGE=no 43b852319ebf789bec3b485428842181b6fb715e95Bruce BeareOPTION_ABI= 44b852319ebf789bec3b485428842181b6fb715e95Bruce Beare 4548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerfor opt do 4648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'` 4748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner case "$opt" in 4848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner --help|-h|-\?) OPTION_HELP=yes 4948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner ;; 5048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner --verbose) 5148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner if [ "$VERBOSE" = "yes" ] ; then 5248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner VERBOSE2=yes 5348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner else 5448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner VERBOSE=yes 5548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner fi 5648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner ;; 5748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner --platform=*) 5848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner OPTION_PLATFORM=$optarg 5948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner ;; 6048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner --build-out=*) 6148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner OPTION_BUILD_OUT=$optarg 6248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner ;; 6348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner --package) 6448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner OPTION_PACKAGE=yes 6548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner ;; 66b852319ebf789bec3b485428842181b6fb715e95Bruce Beare --abi=*) 67b852319ebf789bec3b485428842181b6fb715e95Bruce Beare OPTION_ABI=$optarg 68b852319ebf789bec3b485428842181b6fb715e95Bruce Beare ;; 6948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner *) 7048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner echo "unknown option '$opt', use --help" 7148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner exit 1 7248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner esac 7348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerdone 7448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 7548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerif [ $OPTION_HELP = "yes" ] ; then 7648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner echo "Collect files from an Android build tree and assembles a sysroot" 7748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner echo "suitable for building a standalone toolchain or be used by the" 7848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner echo "Android NDK." 7948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner echo "" 8048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner echo "options:" 8148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner echo "" 8248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner echo " --help print this message" 8348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner echo " --verbose enable verbose messages" 8448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner echo " --platform=<name> generate sysroot for platform <name> (default is $PLATFORM)" 85b852319ebf789bec3b485428842181b6fb715e95Bruce Beare echo " --abi=<name> generate sysroot for abi <name> (default is $ABI)" 8648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner echo " --build-out=<path> set Android build out directory" 8748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner echo " --package generate sysroot package tarball" 8848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner echo "" 8948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner exit 0 9048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerfi 9148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 9248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerif [ -n "$OPTION_PLATFORM" ] ; then 9348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner PLATFORM=$OPTION_PLATFORM 9448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerfi 9548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 96b852319ebf789bec3b485428842181b6fb715e95Bruce Beareif [ -n "$OPTION_ABI" ] ; then 97b852319ebf789bec3b485428842181b6fb715e95Bruce Beare ABI=$OPTION_ABI 98b852319ebf789bec3b485428842181b6fb715e95Bruce Bearefi 99b852319ebf789bec3b485428842181b6fb715e95Bruce Beare 100b852319ebf789bec3b485428842181b6fb715e95Bruce Bearecase "$ABI" in 101b852319ebf789bec3b485428842181b6fb715e95Bruce Bearearm*) 102b852319ebf789bec3b485428842181b6fb715e95Bruce Beare ARCH=arm 103b852319ebf789bec3b485428842181b6fb715e95Bruce Beare ;; 104b852319ebf789bec3b485428842181b6fb715e95Bruce Beare*) 105b852319ebf789bec3b485428842181b6fb715e95Bruce Beare ARCH=$ABI 106b852319ebf789bec3b485428842181b6fb715e95Bruce Beare ;; 107b852319ebf789bec3b485428842181b6fb715e95Bruce Beareesac 108b852319ebf789bec3b485428842181b6fb715e95Bruce Beare 109b852319ebf789bec3b485428842181b6fb715e95Bruce Beare 11048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Get the root of the NDK from the current program location 11148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerNDK_ROOT=`dirname $0` 11248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerNDK_ROOT=`dirname $NDK_ROOT` 11348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerNDK_ROOT=`dirname $NDK_ROOT` 11448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 11548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Get the Android out directory 11648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerif [ -z "$OPTION_BUILD_OUT" ] ; then 11748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner if [ -z "$ANDROID_PRODUCT_OUT" ] ; then 11848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner echo "ANDROID_PRODUCT_OUT is not defined in your environment. Aborting" 11948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner exit 1 12048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner fi 12148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner if [ ! -d $ANDROID_PRODUCT_OUT ] ; then 12248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner echo "ANDROID_PRODUCT_OUT does not point to a valid directory. Aborting" 12348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner exit 1 12448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner fi 12548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerelse 12648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner ANDROID_PRODUCT_OUT=$OPTION_BUILD_OUT 12748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner if [ ! -d $ANDROID_PRODUCT_OUT ] ; then 12848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner echo "The build out path is not a valid directory: $OPTION_BUILD_OUT" 12948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner exit 1 13048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner fi 13148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerfi 13248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 13348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerPRODUCT_DIR=$ANDROID_PRODUCT_OUT 13448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerSYSROOT=$NDK_ROOT/build/platforms/$PLATFORM/arch-$ABI 13548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerCOMMON_ROOT=$NDK_ROOT/build/platforms/$PLATFORM/common 13648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 13748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# clean up everything in existing sysroot 13848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerrm -rf $SYSROOT 13948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnermkdir -p $SYSROOT 14048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 14148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerrm -rf $COMMON_ROOT 14248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnermkdir -p $COMMON_ROOT 14348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 14448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerLIB_ROOT=$SYSROOT/usr/lib 14548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 14648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerinstall_file () 14748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner{ 14848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner mkdir -p $2/`dirname $1` 14948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner cp -fp $1 $2/$1 15048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner} 15148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 15248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerinstall_helper () 15348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner{ 15448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner (cd $1 && find . -type f | while read ff; do install_file $ff $2; done) 15548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner} 15648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 15748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerTOP=$PRODUCT_DIR/../../../.. 15848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 15948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# CRT objects that need to be copied 16048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerCRT_OBJS_DIR=$PRODUCT_DIR/obj/lib 16148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerCRT_OBJS="$CRT_OBJS_DIR/crtbegin_static.o \ 16248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner$CRT_OBJS_DIR/crtbegin_dynamic.o \ 16348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner$CRT_OBJS_DIR/crtend_android.o" 16448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 16548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# static libraries that need to be copied. 16648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerSTATIC_LIBS_DIR=$PRODUCT_DIR/obj/STATIC_LIBRARIES 16748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerSTATIC_LIBS="$STATIC_LIBS_DIR/libc_intermediates/libc.a \ 16848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner$STATIC_LIBS_DIR/libm_intermediates/libm.a \ 16948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner$STATIC_LIBS_DIR/libstdc++_intermediates/libstdc++.a 17048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner$STATIC_LIBS_DIR/libthread_db_intermediates/libthread_db.a" 17148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 17248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# dynamic libraries that need to be copied. 17348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerDYNAMIC_LIBS_DIR=$PRODUCT_DIR/symbols/system/lib 17448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerDYNAMIC_LIBS="$DYNAMIC_LIBS_DIR/libdl.so \ 17548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner$DYNAMIC_LIBS_DIR/libc.so \ 17648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner$DYNAMIC_LIBS_DIR/libm.so \ 17748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner$DYNAMIC_LIBS_DIR/libstdc++.so \ 17848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner$DYNAMIC_LIBS_DIR/libthread_db.so" 17948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 18048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Copy all CRT objects and libraries 18148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerrm -rf $LIB_ROOT 18248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnermkdir -p $LIB_ROOT 18348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnercp -f $CRT_OBJS $STATIC_LIBS $DYNAMIC_LIBS $LIB_ROOT 18448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 185e502c456361dc02cc766b01cf8c9eb18fd71838cDavid 'Digit' Turner# Check $TOP/bionic to see if this is new source layout. 18648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerif [ -d $TOP/bionic ] ;then 18748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner BIONIC_ROOT=$TOP/bionic 18848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner LIBC_ROOT=$BIONIC_ROOT/libc 18948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerelse 19048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner BIONIC_ROOT=$TOP/system 19148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner LIBC_ROOT=$BIONIC_ROOT/bionic 19248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerfi 19348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 19448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Copy headers. This need to be done in the reverse order of inclusion 19548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# in case there are different headers with the same name. 19648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerARCH_INCLUDE=$SYSROOT/usr/include 19748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerrm -rf $ARCH_INCLUDE 19848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnermkdir -p $ARCH_INCLUDE 19948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 20048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerCOMMON_INCLUDE=$COMMON_ROOT/include 20148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerrm -rf $COMMON_INCLUDE 20248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnermkdir -p $COMMON_INCLUDE 20348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 20448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Install a common header and create the appropriate arch-specific 20548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# directory for it. 20648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# 20748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# $1: source directory 20848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# $2: header path, relative to source directory 20948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# 21048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnercommon_header () 21148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner{ 21248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner echo "Copy: $COMMON_INCLUDE/$2" 21348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner mkdir -p `dirname $COMMON_INCLUDE/$2` 21448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner install $1/$2 $COMMON_INCLUDE/$2 21548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner # just to be safe 21648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner chmod a-x $COMMON_INCLUDE/$2 21748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 21848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner # the link prefix, used to point to common/ 21948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner # from arch-$ARCH/usr/ 22048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner link_prefix=../../common/include 22148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 22248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner # we need to count the number of directory separators in $2 22348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner # for each one of them, we're going to prepend ../ to the 22448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner # link prefix 22548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner for item in `echo $2 | tr '/' ' '`; do 22648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner link_prefix=../$link_prefix 22748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner done 22848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 22948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner echo "Link: $ARCH_INCLUDE/$2" 23048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner mkdir -p `dirname $ARCH_INCLUDE/$2` 23148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner ln -s $link_prefix/$2 $ARCH_INCLUDE/$2 23248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner} 23348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 23448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnercommon_headers () 23548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner{ 23648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner srcs=`cd $1 && find . -type f` 23748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner # remove leading ./ 23848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner srcs=`echo $srcs | sed -e "s%\./%%g"` 23948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 24048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner for src in $srcs; do 24148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner common_header $1 $src 24248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner done 24348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner} 24448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 24548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerarch_header () 24648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner{ 24748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner echo "Copy: $ARCH_INCLUDE/$2" 24848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner mkdir -p `dirname $ARCH_INCLUDE/$2` 24948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner install $1/$2 $ARCH_INCLUDE/$2 25048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner # just to be safe 25148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner chmod a-x $ARCH_INCLUDE/$2 25248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner} 25348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 25448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerarch_headers () 25548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner{ 25648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner srcs=`cd $1 && find . -type f` 25748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner # remove leading ./ 25848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner srcs=`echo $srcs | sed -e "s%\./%%g"` 25948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 26048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner for src in $srcs; do 26148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner arch_header $1 $src 26248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner done 26348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner} 26448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 26571883351efa1a6a389cd2fd06d229d276dc91ab1David 'Digit' Turner# ZLib headers 26671883351efa1a6a389cd2fd06d229d276dc91ab1David 'Digit' Turnercommon_header $TOP/external/zlib zlib.h 26771883351efa1a6a389cd2fd06d229d276dc91ab1David 'Digit' Turnercommon_header $TOP/external/zlib zconf.h 26871883351efa1a6a389cd2fd06d229d276dc91ab1David 'Digit' Turner 26971883351efa1a6a389cd2fd06d229d276dc91ab1David 'Digit' Turner# Jni header 27065cf022ba6ef50d072aceefe4e88f984d1eb02d2Elliott Hughescommon_header $TOP/libnativehelper/include/nativehelper jni.h 27171883351efa1a6a389cd2fd06d229d276dc91ab1David 'Digit' Turner 27271883351efa1a6a389cd2fd06d229d276dc91ab1David 'Digit' Turner# libthread_db headers, not sure if this is needed for the NDK 27348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnercommon_headers $BIONIC_ROOT/libthread_db/include 27448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 27548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# for libm, just copy math.h and fenv.h 27648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnercommon_header $BIONIC_ROOT/libm/include math.h 277b852319ebf789bec3b485428842181b6fb715e95Bruce Beareif [ "$ARCH" = "x86" ]; then 278b852319ebf789bec3b485428842181b6fb715e95Bruce Beare arch_header $BIONIC_ROOT/libm/include i387/fenv.h 279b852319ebf789bec3b485428842181b6fb715e95Bruce Beareelse 280b852319ebf789bec3b485428842181b6fb715e95Bruce Beare arch_header $BIONIC_ROOT/libm/include $ARCH/fenv.h 281b852319ebf789bec3b485428842181b6fb715e95Bruce Bearefi 28248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 28371883351efa1a6a389cd2fd06d229d276dc91ab1David 'Digit' Turner# our tiny C++ standard library 28448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnercommon_headers $BIONIC_ROOT/libstdc++/include 28548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 28671883351efa1a6a389cd2fd06d229d276dc91ab1David 'Digit' Turner# C library kernel headers 28748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnercommon_headers $LIBC_ROOT/kernel/common 288b852319ebf789bec3b485428842181b6fb715e95Bruce Bearearch_headers $LIBC_ROOT/kernel/arch-$ARCH 28948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 29071883351efa1a6a389cd2fd06d229d276dc91ab1David 'Digit' Turner# C library headers 29148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnercommon_headers $LIBC_ROOT/include 29248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerarch_headers $LIBC_ROOT/arch-$ARCH/include 29348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 29448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Do we need to package the result 29548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerif [ $OPTION_PACKAGE = yes ] ; then 29648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner DATE=`date +%Y%m%d` 2977a54bc8cb5965d2fa65ccbe722bb2f42e0bbb9b4David 'Digit' Turner PKGFILE=/tmp/ndk-$USER/android-ndk-sysroot-$DATE.tar.bz2 298b852319ebf789bec3b485428842181b6fb715e95Bruce Beare tar cjf $PKGFILE build/platforms/$PLATFORM/arch-$ARCH 29948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner echo "Packaged in $PKGFILE" 30048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerfi 301