| #!/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 |