| #!/bin/sh | |
| # | |
| # build-sysroot.sh | |
| # | |
| # collect files from an Android tree to assemble a sysroot suitable for | |
| # building a standable toolchain. | |
| # | |
| PRODUCT_DIR=$1 | |
| SYSROOT=$2 | |
| LIB_ROOT=$SYSROOT/usr/lib | |
| INCLUDE_ROOT=$SYSROOT/usr/include | |
| install_file () | |
| { | |
| mkdir -p $2/`dirname $1` | |
| cp -fp $1 $2/$1 | |
| } | |
| install_helper () | |
| { | |
| (cd $1 && find . -type f | while read ff; do install_file $ff $2; done) | |
| } | |
| TOP=$1/../../../.. | |
| # CRT objects that need to be copied | |
| CRT_OBJS_DIR=$PRODUCT_DIR/obj/lib | |
| CRT_OBJS="$CRT_OBJS_DIR/crtbegin_static.o \ | |
| $CRT_OBJS_DIR/crtbegin_dynamic.o \ | |
| $CRT_OBJS_DIR/crtend_android.o" | |
| # static libraries that need to be copied. | |
| STATIC_LIBS_DIR=$PRODUCT_DIR/obj/STATIC_LIBRARIES | |
| STATIC_LIBS="$STATIC_LIBS_DIR/libc_intermediates/libc.a \ | |
| $STATIC_LIBS_DIR/libm_intermediates/libm.a \ | |
| $STATIC_LIBS_DIR/libstdc++_intermediates/libstdc++.a | |
| $STATIC_LIBS_DIR/libthread_db_intermediates/libthread_db.a" | |
| # dynamic libraries that need to be copied. | |
| DYNAMIC_LIBS_DIR=$PRODUCT_DIR/symbols/system/lib | |
| DYNAMIC_LIBS="$DYNAMIC_LIBS_DIR/libdl.so \ | |
| $DYNAMIC_LIBS_DIR/libc.so \ | |
| $DYNAMIC_LIBS_DIR/libm.so \ | |
| $DYNAMIC_LIBS_DIR/libstdc++.so \ | |
| $DYNAMIC_LIBS_DIR/libthread_db.so" | |
| # Copy all CRT objects and librarires | |
| rm -rf $LIB_ROOT | |
| mkdir -p $LIB_ROOT | |
| cp -f $CRT_OBJS $STATIC_LIBS $DYNAMIC_LIBS $LIB_ROOT | |
| # Copy headers. This need to be done in the reverse order of inclusion | |
| # in case there are different headers with the same name. | |
| INCLUDE_ROOT=$SYSROOT/usr/include | |
| rm -rf $INCLUDE_ROOT | |
| # Check $TOP/bioinc to see if this is new lay-out in cupcake. | |
| if [ -d $TOP/bionic ] ;then | |
| BIONIC_ROOT=$TOP/bionic | |
| LIBC_ROOT=$BIONIC_ROOT/libc | |
| else | |
| BIONIC_ROOT=$TOP/system | |
| LIBC_ROOT=$BIONIC_ROOT/bionic | |
| fi | |
| install_helper $BIONIC_ROOT/libthread_db/include $INCLUDE_ROOT | |
| # for libm, just copy math.h and fenv.h | |
| install $BIONIC_ROOT/libm/include/math.h $INCLUDE_ROOT | |
| install $BIONIC_ROOT/libm/include/arm/fenv.h $INCLUDE_ROOT | |
| install_helper $LIBC_ROOT/kernel/arch-arm $INCLUDE_ROOT | |
| install_helper $LIBC_ROOT/kernel/common $INCLUDE_ROOT | |
| install_helper $BIONIC_ROOT/libstdc++/include $INCLUDE_ROOT | |
| install_helper $LIBC_ROOT/include $INCLUDE_ROOT | |
| install_helper $LIBC_ROOT/arch-arm/include $INCLUDE_ROOT |