build-ndk-sysroot.sh revision e502c456361dc02cc766b01cf8c9eb18fd71838c
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 3148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnersource `dirname $0`/../core/ndk-common.sh 3248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 3348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# PLATFORM is the name of the current Android system platform 3448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerPLATFORM=android-1.5 3548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 3648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ABI is the target ABI name for the NDK 3748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerABI=arm 3848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 3948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ARCH is the target ABI name in the Android sources 4048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerARCH=arm 4148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 4248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerOPTION_HELP=no 4348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerOPTION_BUILD_OUT= 4448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerOPTION_PLATFORM= 4548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerOPTION_PACKAGE=no 4648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerfor opt do 4748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'` 4848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner case "$opt" in 4948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner --help|-h|-\?) OPTION_HELP=yes 5048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner ;; 5148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner --verbose) 5248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner if [ "$VERBOSE" = "yes" ] ; then 5348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner VERBOSE2=yes 5448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner else 5548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner VERBOSE=yes 5648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner fi 5748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner ;; 5848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner --platform=*) 5948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner OPTION_PLATFORM=$optarg 6048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner ;; 6148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner --build-out=*) 6248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner OPTION_BUILD_OUT=$optarg 6348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner ;; 6448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner --package) 6548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner OPTION_PACKAGE=yes 6648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner ;; 6748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner *) 6848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner echo "unknown option '$opt', use --help" 6948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner exit 1 7048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner esac 7148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerdone 7248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 7348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerif [ $OPTION_HELP = "yes" ] ; then 7448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner echo "Collect files from an Android build tree and assembles a sysroot" 7548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner echo "suitable for building a standalone toolchain or be used by the" 7648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner echo "Android NDK." 7748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner echo "" 7848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner echo "options:" 7948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner echo "" 8048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner echo " --help print this message" 8148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner echo " --verbose enable verbose messages" 8248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner echo " --platform=<name> generate sysroot for platform <name> (default is $PLATFORM)" 8348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner echo " --build-out=<path> set Android build out directory" 8448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner echo " --package generate sysroot package tarball" 8548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner echo "" 8648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner exit 0 8748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerfi 8848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 8948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerif [ -n "$OPTION_PLATFORM" ] ; then 9048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner PLATFORM=$OPTION_PLATFORM 9148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerfi 9248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 9348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Get the root of the NDK from the current program location 9448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerNDK_ROOT=`dirname $0` 9548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerNDK_ROOT=`dirname $NDK_ROOT` 9648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerNDK_ROOT=`dirname $NDK_ROOT` 9748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 9848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Get the Android out directory 9948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerif [ -z "$OPTION_BUILD_OUT" ] ; then 10048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner if [ -z "$ANDROID_PRODUCT_OUT" ] ; then 10148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner echo "ANDROID_PRODUCT_OUT is not defined in your environment. Aborting" 10248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner exit 1 10348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner fi 10448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner if [ ! -d $ANDROID_PRODUCT_OUT ] ; then 10548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner echo "ANDROID_PRODUCT_OUT does not point to a valid directory. Aborting" 10648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner exit 1 10748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner fi 10848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerelse 10948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner ANDROID_PRODUCT_OUT=$OPTION_BUILD_OUT 11048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner if [ ! -d $ANDROID_PRODUCT_OUT ] ; then 11148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner echo "The build out path is not a valid directory: $OPTION_BUILD_OUT" 11248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner exit 1 11348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner fi 11448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerfi 11548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 11648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerPRODUCT_DIR=$ANDROID_PRODUCT_OUT 11748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerSYSROOT=$NDK_ROOT/build/platforms/$PLATFORM/arch-$ABI 11848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerCOMMON_ROOT=$NDK_ROOT/build/platforms/$PLATFORM/common 11948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 12048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# clean up everything in existing sysroot 12148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerrm -rf $SYSROOT 12248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnermkdir -p $SYSROOT 12348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 12448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerrm -rf $COMMON_ROOT 12548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnermkdir -p $COMMON_ROOT 12648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 12748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerLIB_ROOT=$SYSROOT/usr/lib 12848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerINCLUDE_ROOT=$SYSROOT/usr/include 12948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 13048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerinstall_file () 13148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner{ 13248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner mkdir -p $2/`dirname $1` 13348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner cp -fp $1 $2/$1 13448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner} 13548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 13648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerinstall_helper () 13748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner{ 13848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner (cd $1 && find . -type f | while read ff; do install_file $ff $2; done) 13948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner} 14048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 14148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerTOP=$PRODUCT_DIR/../../../.. 14248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 14348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# CRT objects that need to be copied 14448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerCRT_OBJS_DIR=$PRODUCT_DIR/obj/lib 14548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerCRT_OBJS="$CRT_OBJS_DIR/crtbegin_static.o \ 14648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner$CRT_OBJS_DIR/crtbegin_dynamic.o \ 14748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner$CRT_OBJS_DIR/crtend_android.o" 14848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 14948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# static libraries that need to be copied. 15048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerSTATIC_LIBS_DIR=$PRODUCT_DIR/obj/STATIC_LIBRARIES 15148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerSTATIC_LIBS="$STATIC_LIBS_DIR/libc_intermediates/libc.a \ 15248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner$STATIC_LIBS_DIR/libm_intermediates/libm.a \ 15348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner$STATIC_LIBS_DIR/libstdc++_intermediates/libstdc++.a 15448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner$STATIC_LIBS_DIR/libthread_db_intermediates/libthread_db.a" 15548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 15648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# dynamic libraries that need to be copied. 15748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerDYNAMIC_LIBS_DIR=$PRODUCT_DIR/symbols/system/lib 15848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerDYNAMIC_LIBS="$DYNAMIC_LIBS_DIR/libdl.so \ 15948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner$DYNAMIC_LIBS_DIR/libc.so \ 16048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner$DYNAMIC_LIBS_DIR/libm.so \ 16148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner$DYNAMIC_LIBS_DIR/libstdc++.so \ 16248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner$DYNAMIC_LIBS_DIR/libthread_db.so" 16348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 16448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Copy all CRT objects and libraries 16548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerrm -rf $LIB_ROOT 16648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnermkdir -p $LIB_ROOT 16748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnercp -f $CRT_OBJS $STATIC_LIBS $DYNAMIC_LIBS $LIB_ROOT 16848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 169e502c456361dc02cc766b01cf8c9eb18fd71838cDavid 'Digit' Turner# Check $TOP/bionic to see if this is new source layout. 17048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerif [ -d $TOP/bionic ] ;then 17148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner BIONIC_ROOT=$TOP/bionic 17248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner LIBC_ROOT=$BIONIC_ROOT/libc 17348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerelse 17448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner BIONIC_ROOT=$TOP/system 17548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner LIBC_ROOT=$BIONIC_ROOT/bionic 17648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerfi 17748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 17848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Copy headers. This need to be done in the reverse order of inclusion 17948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# in case there are different headers with the same name. 18048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerARCH_INCLUDE=$SYSROOT/usr/include 18148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerrm -rf $ARCH_INCLUDE 18248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnermkdir -p $ARCH_INCLUDE 18348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 18448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerCOMMON_INCLUDE=$COMMON_ROOT/include 18548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerrm -rf $COMMON_INCLUDE 18648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnermkdir -p $COMMON_INCLUDE 18748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 18848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Install a common header and create the appropriate arch-specific 18948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# directory for it. 19048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# 19148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# $1: source directory 19248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# $2: header path, relative to source directory 19348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# 19448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnercommon_header () 19548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner{ 19648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner echo "Copy: $COMMON_INCLUDE/$2" 19748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner mkdir -p `dirname $COMMON_INCLUDE/$2` 19848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner install $1/$2 $COMMON_INCLUDE/$2 19948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner # just to be safe 20048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner chmod a-x $COMMON_INCLUDE/$2 20148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 20248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner # the link prefix, used to point to common/ 20348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner # from arch-$ARCH/usr/ 20448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner link_prefix=../../common/include 20548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 20648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner # we need to count the number of directory separators in $2 20748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner # for each one of them, we're going to prepend ../ to the 20848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner # link prefix 20948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner for item in `echo $2 | tr '/' ' '`; do 21048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner link_prefix=../$link_prefix 21148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner done 21248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 21348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner echo "Link: $ARCH_INCLUDE/$2" 21448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner mkdir -p `dirname $ARCH_INCLUDE/$2` 21548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner ln -s $link_prefix/$2 $ARCH_INCLUDE/$2 21648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner} 21748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 21848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnercommon_headers () 21948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner{ 22048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner srcs=`cd $1 && find . -type f` 22148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner # remove leading ./ 22248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner srcs=`echo $srcs | sed -e "s%\./%%g"` 22348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 22448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner for src in $srcs; do 22548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner common_header $1 $src 22648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner done 22748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner} 22848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 22948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerarch_header () 23048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner{ 23148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner echo "Copy: $ARCH_INCLUDE/$2" 23248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner mkdir -p `dirname $ARCH_INCLUDE/$2` 23348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner install $1/$2 $ARCH_INCLUDE/$2 23448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner # just to be safe 23548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner chmod a-x $ARCH_INCLUDE/$2 23648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner} 23748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 23848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerarch_headers () 23948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner{ 24048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner srcs=`cd $1 && find . -type f` 24148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner # remove leading ./ 24248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner srcs=`echo $srcs | sed -e "s%\./%%g"` 24348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 24448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner for src in $srcs; do 24548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner arch_header $1 $src 24648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner done 24748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner} 24848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 24948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnercommon_header $TOP/dalvik/libnativehelper/include/nativehelper jni.h 25048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnercommon_headers $BIONIC_ROOT/libthread_db/include 25148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 25248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# for libm, just copy math.h and fenv.h 25348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnercommon_header $BIONIC_ROOT/libm/include math.h 25448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerarch_header $BIONIC_ROOT/libm/include $ARCH/fenv.h 25548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 25648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnercommon_headers $BIONIC_ROOT/libstdc++/include 25748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 25848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnercommon_headers $LIBC_ROOT/kernel/common 25948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerarch_headers $LIBC_ROOT/kernel/arch-arm 26048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 26148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnercommon_headers $LIBC_ROOT/include 26248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerarch_headers $LIBC_ROOT/arch-$ARCH/include 26348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 26448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Do we need to package the result 26548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerif [ $OPTION_PACKAGE = yes ] ; then 26648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner DATE=`date +%Y%m%d` 26748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner PKGFILE=/tmp/android-ndk-sysroot-$DATE.tar.bz2 26848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner tar cjf $PKGFILE build/platforms/$PLATFORM 26948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner echo "Packaged in $PKGFILE" 27048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerfi 271