update_rs_prebuilts.sh revision 1baebcdcb2f1f3d794c837166b925538fcd28acb
1be96565d929af53b8009014fbec224004c64e4faStephen Hines#!/bin/bash 2be96565d929af53b8009014fbec224004c64e4faStephen Hines 3be96565d929af53b8009014fbec224004c64e4faStephen Hines# We are currently in frameworks/rs, so compute our top-level directory. 4be96565d929af53b8009014fbec224004c64e4faStephen HinesMY_ANDROID_DIR=$PWD/../../ 5be96565d929af53b8009014fbec224004c64e4faStephen Hinescd $MY_ANDROID_DIR 6be96565d929af53b8009014fbec224004c64e4faStephen Hines 7a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hinesif [ $OSTYPE == 'darwin13' ]; 8a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hinesthen 9a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines 10a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines DARWIN=1 11a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines SHORT_OSNAME=darwin 12a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines SONAME=dylib 13a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines # Only build arm on darwin. 14a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines TARGETS=(arm) 15a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines SYS_NAMES=(generic) 16971d42af252f7f3e11144e472e0ac3fc313c73a4Stephen Hines NUM_CORES=`sysctl -n hw.ncpu` 17a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines 18a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hineselse 19a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines 20a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines DARWIN=0 21a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines SHORT_OSNAME=linux 22a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines SONAME=so 23a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines # Target architectures and their system library names. 24a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines TARGETS=(arm mips x86) 25a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines SYS_NAMES=(generic generic_mips generic_x86) 26971d42af252f7f3e11144e472e0ac3fc313c73a4Stephen Hines NUM_CORES=`cat /proc/cpuinfo | grep processor | tail -n 1 | cut -f 2 -d :` 27971d42af252f7f3e11144e472e0ac3fc313c73a4Stephen Hines NUM_CORES=$(($NUM_CORES+1)) 28a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines 29a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hinesfi 30a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines 31971d42af252f7f3e11144e472e0ac3fc313c73a4Stephen Hinesecho "Using $NUM_CORES cores" 32971d42af252f7f3e11144e472e0ac3fc313c73a4Stephen Hines 33971d42af252f7f3e11144e472e0ac3fc313c73a4Stephen Hines# Turn off the build cache and make sure we build all of LLVM from scratch. 34971d42af252f7f3e11144e472e0ac3fc313c73a4Stephen Hinesexport ANDROID_USE_BUILDCACHE=false 35971d42af252f7f3e11144e472e0ac3fc313c73a4Stephen Hinesexport FORCE_BUILD_LLVM_COMPONENTS=true 36971d42af252f7f3e11144e472e0ac3fc313c73a4Stephen Hines 37971d42af252f7f3e11144e472e0ac3fc313c73a4Stephen Hines# Ensure that we have constructed the latest "bcc" for the host. Without 38971d42af252f7f3e11144e472e0ac3fc313c73a4Stephen Hines# this variable, we don't build the .so files, hence we never construct the 39971d42af252f7f3e11144e472e0ac3fc313c73a4Stephen Hines# actual required compiler pieces. 40971d42af252f7f3e11144e472e0ac3fc313c73a4Stephen Hinesexport FORCE_BUILD_RS_COMPAT=true 41971d42af252f7f3e11144e472e0ac3fc313c73a4Stephen Hines 42be96565d929af53b8009014fbec224004c64e4faStephen Hines# ANDROID_HOST_OUT is where the new prebuilts will be constructed/copied from. 43a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen HinesANDROID_HOST_OUT=$MY_ANDROID_DIR/out/host/$SHORT_OSNAME-x86/ 44be96565d929af53b8009014fbec224004c64e4faStephen Hines 45be96565d929af53b8009014fbec224004c64e4faStephen Hines# HOST_LIB_DIR allows us to pick up the built librsrt_*.bc libraries. 46be96565d929af53b8009014fbec224004c64e4faStephen HinesHOST_LIB_DIR=$ANDROID_HOST_OUT/lib 47be96565d929af53b8009014fbec224004c64e4faStephen Hines 48be96565d929af53b8009014fbec224004c64e4faStephen Hines# PREBUILTS_DIR is where we want to copy our new files to. 49be96565d929af53b8009014fbec224004c64e4faStephen HinesPREBUILTS_DIR=$MY_ANDROID_DIR/prebuilts/sdk/ 50be96565d929af53b8009014fbec224004c64e4faStephen Hines 51be96565d929af53b8009014fbec224004c64e4faStephen Hinesprint_usage() { 52be96565d929af53b8009014fbec224004c64e4faStephen Hines echo "USAGE: $0 [-h|--help] [-n|--no-build] [-x]" 53be96565d929af53b8009014fbec224004c64e4faStephen Hines echo "OPTIONS:" 54be96565d929af53b8009014fbec224004c64e4faStephen Hines echo " -h, --help : Display this help message." 55be96565d929af53b8009014fbec224004c64e4faStephen Hines echo " -n, --no-build : Skip the build step and just copy files." 56be96565d929af53b8009014fbec224004c64e4faStephen Hines echo " -x : Display commands before they are executed." 57be96565d929af53b8009014fbec224004c64e4faStephen Hines} 58be96565d929af53b8009014fbec224004c64e4faStephen Hines 59be96565d929af53b8009014fbec224004c64e4faStephen Hinesbuild_rs_libs() { 60be96565d929af53b8009014fbec224004c64e4faStephen Hines echo Building for target $1 61be96565d929af53b8009014fbec224004c64e4faStephen Hines lunch $1 62be96565d929af53b8009014fbec224004c64e4faStephen Hines # Build the RS runtime libraries. 63971d42af252f7f3e11144e472e0ac3fc313c73a4Stephen Hines cd $MY_ANDROID_DIR/frameworks/rs/driver/runtime && mma -j$NUM_CORES && cd - || exit 1 64be96565d929af53b8009014fbec224004c64e4faStephen Hines # Build a sample support application to ensure that all the pieces are up to date. 65971d42af252f7f3e11144e472e0ac3fc313c73a4Stephen Hines cd $MY_ANDROID_DIR/frameworks/rs/java/tests/RSTest_CompatLib/ && mma -j$NUM_CORES && cd - || exit 2 66f38dea949f87ce49d12605ec24af09eb8d68fcb1Tim Murray 67be96565d929af53b8009014fbec224004c64e4faStephen Hines} 68be96565d929af53b8009014fbec224004c64e4faStephen Hines 69be96565d929af53b8009014fbec224004c64e4faStephen Hines# Build everything by default 70be96565d929af53b8009014fbec224004c64e4faStephen Hinesbuild_rs=1 71be96565d929af53b8009014fbec224004c64e4faStephen Hines 72be96565d929af53b8009014fbec224004c64e4faStephen Hineswhile [ $# -gt 0 ]; do 73be96565d929af53b8009014fbec224004c64e4faStephen Hines case "$1" in 74be96565d929af53b8009014fbec224004c64e4faStephen Hines -h|--help) 75be96565d929af53b8009014fbec224004c64e4faStephen Hines print_usage 76be96565d929af53b8009014fbec224004c64e4faStephen Hines exit 0 77be96565d929af53b8009014fbec224004c64e4faStephen Hines ;; 78be96565d929af53b8009014fbec224004c64e4faStephen Hines -n|--no-build) 79be96565d929af53b8009014fbec224004c64e4faStephen Hines build_rs=0 80be96565d929af53b8009014fbec224004c64e4faStephen Hines ;; 81be96565d929af53b8009014fbec224004c64e4faStephen Hines -x) 82be96565d929af53b8009014fbec224004c64e4faStephen Hines # set lets us enable bash -x mode. 83be96565d929af53b8009014fbec224004c64e4faStephen Hines set -x 84be96565d929af53b8009014fbec224004c64e4faStephen Hines ;; 85be96565d929af53b8009014fbec224004c64e4faStephen Hines *) 86be96565d929af53b8009014fbec224004c64e4faStephen Hines echo Unknown argument: "$1" 87be96565d929af53b8009014fbec224004c64e4faStephen Hines print_usage 88be96565d929af53b8009014fbec224004c64e4faStephen Hines exit 99 89be96565d929af53b8009014fbec224004c64e4faStephen Hines break 90be96565d929af53b8009014fbec224004c64e4faStephen Hines ;; 91be96565d929af53b8009014fbec224004c64e4faStephen Hines esac 92be96565d929af53b8009014fbec224004c64e4faStephen Hines shift 93be96565d929af53b8009014fbec224004c64e4faStephen Hinesdone 94be96565d929af53b8009014fbec224004c64e4faStephen Hines 95be96565d929af53b8009014fbec224004c64e4faStephen Hinesif [ $build_rs -eq 1 ]; then 96be96565d929af53b8009014fbec224004c64e4faStephen Hines 97be96565d929af53b8009014fbec224004c64e4faStephen Hines echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!! 98be96565d929af53b8009014fbec224004c64e4faStephen Hines echo !!! BUILDING RS PREBUILTS !!! 99be96565d929af53b8009014fbec224004c64e4faStephen Hines echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!! 100be96565d929af53b8009014fbec224004c64e4faStephen Hines 101be96565d929af53b8009014fbec224004c64e4faStephen Hines source build/envsetup.sh 102be96565d929af53b8009014fbec224004c64e4faStephen Hines 103be96565d929af53b8009014fbec224004c64e4faStephen Hines for t in ${TARGETS[@]}; do 104be96565d929af53b8009014fbec224004c64e4faStephen Hines build_rs_libs aosp_${t}-userdebug 105be96565d929af53b8009014fbec224004c64e4faStephen Hines done 106be96565d929af53b8009014fbec224004c64e4faStephen Hines 107be96565d929af53b8009014fbec224004c64e4faStephen Hines echo DONE BUILDING RS PREBUILTS 108be96565d929af53b8009014fbec224004c64e4faStephen Hines 109be96565d929af53b8009014fbec224004c64e4faStephen Hineselse 110be96565d929af53b8009014fbec224004c64e4faStephen Hines 111be96565d929af53b8009014fbec224004c64e4faStephen Hines echo SKIPPING BUILD OF RS PREBUILTS 112be96565d929af53b8009014fbec224004c64e4faStephen Hines 113be96565d929af53b8009014fbec224004c64e4faStephen Hinesfi 114be96565d929af53b8009014fbec224004c64e4faStephen Hines 115be96565d929af53b8009014fbec224004c64e4faStephen HinesDATE=`date +%Y%m%d` 116be96565d929af53b8009014fbec224004c64e4faStephen Hines 117be96565d929af53b8009014fbec224004c64e4faStephen Hinescd $PREBUILTS_DIR || exit 3 118be96565d929af53b8009014fbec224004c64e4faStephen Hinesrepo start pb_$DATE . 119be96565d929af53b8009014fbec224004c64e4faStephen Hines 120a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines# Don't copy device prebuilts on Darwin. We don't need/use them. 121a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hinesif [ $DARWIN -eq 0 ]; then 122a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines for i in $(seq 0 $((${#TARGETS[@]} - 1))); do 123a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines t=${TARGETS[$i]} 124a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines sys_lib_dir=$MY_ANDROID_DIR/out/target/product/${SYS_NAMES[$i]}/system/lib 1251baebcdcb2f1f3d794c837166b925538fcd28acbStephen Hines obj_lib_dir=$MY_ANDROID_DIR/out/target/product/${SYS_NAMES[$i]}/obj/lib 126a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines for a in `find renderscript/lib/$t -name \*.so`; do 127a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines file=`basename $a` 1281baebcdcb2f1f3d794c837166b925538fcd28acbStephen Hines cp `find $sys_lib_dir $obj_lib_dir -name $file | head -1` $a || exit 4 129a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines done 130a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines 131a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines for a in `find renderscript/lib/$t -name \*.bc`; do 132a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines file=`basename $a` 1331baebcdcb2f1f3d794c837166b925538fcd28acbStephen Hines cp `find $HOST_LIB_DIR $sys_lib_dir $obj_lib_dir -name $file | head -1` $a || exit 5 134a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines done 135be96565d929af53b8009014fbec224004c64e4faStephen Hines done 136be96565d929af53b8009014fbec224004c64e4faStephen Hines 137a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines # javalib.jar 138a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines cp $MY_ANDROID_DIR/out/target/common/obj/JAVA_LIBRARIES/android-support-v8-renderscript_intermediates/javalib.jar renderscript/lib 139be96565d929af53b8009014fbec224004c64e4faStephen Hines 140a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hinesfi 141be96565d929af53b8009014fbec224004c64e4faStephen Hines 142be96565d929af53b8009014fbec224004c64e4faStephen Hines# Copy header files for compilers 143be96565d929af53b8009014fbec224004c64e4faStephen Hinescp $MY_ANDROID_DIR/external/clang/lib/Headers/*.h renderscript/clang-include 144be96565d929af53b8009014fbec224004c64e4faStephen Hinescp $MY_ANDROID_DIR/frameworks/rs/scriptc/* renderscript/include 145be96565d929af53b8009014fbec224004c64e4faStephen Hines 146be96565d929af53b8009014fbec224004c64e4faStephen Hines 147a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines# Host-specific tools (bin/ and lib/) 148be96565d929af53b8009014fbec224004c64e4faStephen HinesTOOLS_BIN=" 149be96565d929af53b8009014fbec224004c64e4faStephen Hinesbcc_compat 150be96565d929af53b8009014fbec224004c64e4faStephen Hinesllvm-rs-cc 151be96565d929af53b8009014fbec224004c64e4faStephen Hines" 152be96565d929af53b8009014fbec224004c64e4faStephen Hines 153be96565d929af53b8009014fbec224004c64e4faStephen HinesTOOLS_LIB=" 154a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hineslibbcc.$SONAME 155a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hineslibbcinfo.$SONAME 156a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hineslibclang.$SONAME 1571baebcdcb2f1f3d794c837166b925538fcd28acbStephen Hineslibc++abi.$SONAME 1581baebcdcb2f1f3d794c837166b925538fcd28acbStephen Hineslibc++.$SONAME 159a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen HineslibLLVM.$SONAME 160be96565d929af53b8009014fbec224004c64e4faStephen Hines" 161be96565d929af53b8009014fbec224004c64e4faStephen Hines 162be96565d929af53b8009014fbec224004c64e4faStephen Hinesfor a in $TOOLS_BIN; do 163a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines cp $ANDROID_HOST_OUT/bin/$a tools/$SHORT_OSNAME/ 164a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines strip tools/$SHORT_OSNAME/$a 165be96565d929af53b8009014fbec224004c64e4faStephen Hinesdone 166be96565d929af53b8009014fbec224004c64e4faStephen Hines 167be96565d929af53b8009014fbec224004c64e4faStephen Hinesfor a in $TOOLS_LIB; do 168a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines cp $ANDROID_HOST_OUT/lib/$a tools/$SHORT_OSNAME/ 169a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines strip tools/$SHORT_OSNAME/$a 170be96565d929af53b8009014fbec224004c64e4faStephen Hinesdone 171be96565d929af53b8009014fbec224004c64e4faStephen Hines 172a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hinesif [ $DARWIN -eq 0 ]; then 173a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines echo "DON'T FORGET TO UPDATE THE DARWIN COMPILER PREBUILTS!!!" 174a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hinesfi 175