update_rs_prebuilts.sh revision 651a38eb254f069f28fc99b7d180756123ff3a8a
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 724461aa7c90cc1b2a83072f42a2d453e3d059732Stephen Hinesif [ $OSTYPE == 'darwin13' ] || [ $OSTYPE == 'darwin14' ]; 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. 24648a1c137663ef7207684d0d7009dd5518942111Stephen Hines TARGETS=(arm mips x86 arm64) 25648a1c137663ef7207684d0d7009dd5518942111Stephen Hines SYS_NAMES=(generic generic_mips generic_x86 generic_arm64) 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 37651a38eb254f069f28fc99b7d180756123ff3a8aPirama Arumuga Nainar# Skip building LLVM and compiler-rt tests while updating prebuilts 38651a38eb254f069f28fc99b7d180756123ff3a8aPirama Arumuga Nainarexport SKIP_LLVM_TESTS=true 39651a38eb254f069f28fc99b7d180756123ff3a8aPirama Arumuga Nainar 40971d42af252f7f3e11144e472e0ac3fc313c73a4Stephen Hines# Ensure that we have constructed the latest "bcc" for the host. Without 41971d42af252f7f3e11144e472e0ac3fc313c73a4Stephen Hines# this variable, we don't build the .so files, hence we never construct the 42971d42af252f7f3e11144e472e0ac3fc313c73a4Stephen Hines# actual required compiler pieces. 43971d42af252f7f3e11144e472e0ac3fc313c73a4Stephen Hinesexport FORCE_BUILD_RS_COMPAT=true 44971d42af252f7f3e11144e472e0ac3fc313c73a4Stephen Hines 45d0c45801692f4ae7b90a923ed1c57a3ec8ed4cb2Miao Wang# RENDERSCRIPT_V8_JAR is the generated JAVA static lib for RenderScript Support Lib. 46d0c45801692f4ae7b90a923ed1c57a3ec8ed4cb2Miao WangRENDERSCRIPT_V8_JAR=out/target/common/obj/JAVA_LIBRARIES/android-support-v8-renderscript_intermediates/classes.jar 474581f03df1786d3a2585dabb599278b9c0257df9Miao Wang 48be96565d929af53b8009014fbec224004c64e4faStephen Hines# ANDROID_HOST_OUT is where the new prebuilts will be constructed/copied from. 49a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen HinesANDROID_HOST_OUT=$MY_ANDROID_DIR/out/host/$SHORT_OSNAME-x86/ 50be96565d929af53b8009014fbec224004c64e4faStephen Hines 51be96565d929af53b8009014fbec224004c64e4faStephen Hines# HOST_LIB_DIR allows us to pick up the built librsrt_*.bc libraries. 52be96565d929af53b8009014fbec224004c64e4faStephen HinesHOST_LIB_DIR=$ANDROID_HOST_OUT/lib 53be96565d929af53b8009014fbec224004c64e4faStephen Hines 54f7dfd22fc82c01ac59f4e61683eb231d8738bab0Tim Murray# HOST_LIB64_DIR 55f7dfd22fc82c01ac59f4e61683eb231d8738bab0Tim MurrayHOST_LIB64_DIR=$ANDROID_HOST_OUT/lib64 56f7dfd22fc82c01ac59f4e61683eb231d8738bab0Tim Murray 57be96565d929af53b8009014fbec224004c64e4faStephen Hines# PREBUILTS_DIR is where we want to copy our new files to. 58be96565d929af53b8009014fbec224004c64e4faStephen HinesPREBUILTS_DIR=$MY_ANDROID_DIR/prebuilts/sdk/ 59be96565d929af53b8009014fbec224004c64e4faStephen Hines 60be96565d929af53b8009014fbec224004c64e4faStephen Hinesprint_usage() { 61be96565d929af53b8009014fbec224004c64e4faStephen Hines echo "USAGE: $0 [-h|--help] [-n|--no-build] [-x]" 62be96565d929af53b8009014fbec224004c64e4faStephen Hines echo "OPTIONS:" 63be96565d929af53b8009014fbec224004c64e4faStephen Hines echo " -h, --help : Display this help message." 64be96565d929af53b8009014fbec224004c64e4faStephen Hines echo " -n, --no-build : Skip the build step and just copy files." 65be96565d929af53b8009014fbec224004c64e4faStephen Hines echo " -x : Display commands before they are executed." 66be96565d929af53b8009014fbec224004c64e4faStephen Hines} 67be96565d929af53b8009014fbec224004c64e4faStephen Hines 68be96565d929af53b8009014fbec224004c64e4faStephen Hinesbuild_rs_libs() { 69be96565d929af53b8009014fbec224004c64e4faStephen Hines echo Building for target $1 70be96565d929af53b8009014fbec224004c64e4faStephen Hines lunch $1 71be96565d929af53b8009014fbec224004c64e4faStephen Hines # Build the RS runtime libraries. 72971d42af252f7f3e11144e472e0ac3fc313c73a4Stephen Hines cd $MY_ANDROID_DIR/frameworks/rs/driver/runtime && mma -j$NUM_CORES && cd - || exit 1 73be96565d929af53b8009014fbec224004c64e4faStephen Hines # Build a sample support application to ensure that all the pieces are up to date. 74971d42af252f7f3e11144e472e0ac3fc313c73a4Stephen Hines cd $MY_ANDROID_DIR/frameworks/rs/java/tests/RSTest_CompatLib/ && mma -j$NUM_CORES && cd - || exit 2 75d0c45801692f4ae7b90a923ed1c57a3ec8ed4cb2Miao Wang # Build android-support-v8-renderscript.jar 76d0c45801692f4ae7b90a923ed1c57a3ec8ed4cb2Miao Wang # We need to explicitly do so, since JACK won't generate a jar by default. 77d0c45801692f4ae7b90a923ed1c57a3ec8ed4cb2Miao Wang cd $MY_ANDROID_DIR && make $RENDERSCRIPT_V8_JAR -j$NUM_CORES && cd - || exit 3 78648a1c137663ef7207684d0d7009dd5518942111Stephen Hines # Build libcompiler-rt.a 79d0c45801692f4ae7b90a923ed1c57a3ec8ed4cb2Miao Wang cd $MY_ANDROID_DIR/external/compiler-rt && mma -j$NUM_CORES && cd - || exit 4 80648a1c137663ef7207684d0d7009dd5518942111Stephen Hines # Build the blas libraries. 81d0c45801692f4ae7b90a923ed1c57a3ec8ed4cb2Miao Wang cd $MY_ANDROID_DIR/external/cblas && mma -j$NUM_CORES && cd - || exit 5 82be96565d929af53b8009014fbec224004c64e4faStephen Hines} 83be96565d929af53b8009014fbec224004c64e4faStephen Hines 84be96565d929af53b8009014fbec224004c64e4faStephen Hines# Build everything by default 85be96565d929af53b8009014fbec224004c64e4faStephen Hinesbuild_rs=1 86be96565d929af53b8009014fbec224004c64e4faStephen Hines 87be96565d929af53b8009014fbec224004c64e4faStephen Hineswhile [ $# -gt 0 ]; do 88be96565d929af53b8009014fbec224004c64e4faStephen Hines case "$1" in 89be96565d929af53b8009014fbec224004c64e4faStephen Hines -h|--help) 90be96565d929af53b8009014fbec224004c64e4faStephen Hines print_usage 91be96565d929af53b8009014fbec224004c64e4faStephen Hines exit 0 92be96565d929af53b8009014fbec224004c64e4faStephen Hines ;; 93be96565d929af53b8009014fbec224004c64e4faStephen Hines -n|--no-build) 94be96565d929af53b8009014fbec224004c64e4faStephen Hines build_rs=0 95be96565d929af53b8009014fbec224004c64e4faStephen Hines ;; 96be96565d929af53b8009014fbec224004c64e4faStephen Hines -x) 97be96565d929af53b8009014fbec224004c64e4faStephen Hines # set lets us enable bash -x mode. 98be96565d929af53b8009014fbec224004c64e4faStephen Hines set -x 99be96565d929af53b8009014fbec224004c64e4faStephen Hines ;; 100be96565d929af53b8009014fbec224004c64e4faStephen Hines *) 101be96565d929af53b8009014fbec224004c64e4faStephen Hines echo Unknown argument: "$1" 102be96565d929af53b8009014fbec224004c64e4faStephen Hines print_usage 103be96565d929af53b8009014fbec224004c64e4faStephen Hines exit 99 104be96565d929af53b8009014fbec224004c64e4faStephen Hines break 105be96565d929af53b8009014fbec224004c64e4faStephen Hines ;; 106be96565d929af53b8009014fbec224004c64e4faStephen Hines esac 107be96565d929af53b8009014fbec224004c64e4faStephen Hines shift 108be96565d929af53b8009014fbec224004c64e4faStephen Hinesdone 109be96565d929af53b8009014fbec224004c64e4faStephen Hines 110be96565d929af53b8009014fbec224004c64e4faStephen Hinesif [ $build_rs -eq 1 ]; then 111be96565d929af53b8009014fbec224004c64e4faStephen Hines 112be96565d929af53b8009014fbec224004c64e4faStephen Hines echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!! 113be96565d929af53b8009014fbec224004c64e4faStephen Hines echo !!! BUILDING RS PREBUILTS !!! 114be96565d929af53b8009014fbec224004c64e4faStephen Hines echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!! 115be96565d929af53b8009014fbec224004c64e4faStephen Hines 116be96565d929af53b8009014fbec224004c64e4faStephen Hines source build/envsetup.sh 117be96565d929af53b8009014fbec224004c64e4faStephen Hines 118be96565d929af53b8009014fbec224004c64e4faStephen Hines for t in ${TARGETS[@]}; do 119be96565d929af53b8009014fbec224004c64e4faStephen Hines build_rs_libs aosp_${t}-userdebug 120be96565d929af53b8009014fbec224004c64e4faStephen Hines done 121be96565d929af53b8009014fbec224004c64e4faStephen Hines 122be96565d929af53b8009014fbec224004c64e4faStephen Hines echo DONE BUILDING RS PREBUILTS 123be96565d929af53b8009014fbec224004c64e4faStephen Hines 124be96565d929af53b8009014fbec224004c64e4faStephen Hineselse 125be96565d929af53b8009014fbec224004c64e4faStephen Hines 126be96565d929af53b8009014fbec224004c64e4faStephen Hines echo SKIPPING BUILD OF RS PREBUILTS 127be96565d929af53b8009014fbec224004c64e4faStephen Hines 128be96565d929af53b8009014fbec224004c64e4faStephen Hinesfi 129be96565d929af53b8009014fbec224004c64e4faStephen Hines 130be96565d929af53b8009014fbec224004c64e4faStephen HinesDATE=`date +%Y%m%d` 131be96565d929af53b8009014fbec224004c64e4faStephen Hines 132be96565d929af53b8009014fbec224004c64e4faStephen Hinescd $PREBUILTS_DIR || exit 3 133be96565d929af53b8009014fbec224004c64e4faStephen Hinesrepo start pb_$DATE . 134be96565d929af53b8009014fbec224004c64e4faStephen Hines 135a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines# Don't copy device prebuilts on Darwin. We don't need/use them. 136a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hinesif [ $DARWIN -eq 0 ]; then 137a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines for i in $(seq 0 $((${#TARGETS[@]} - 1))); do 138a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines t=${TARGETS[$i]} 139648a1c137663ef7207684d0d7009dd5518942111Stephen Hines sys_name=${SYS_NAMES[$i]} 140d0c45801692f4ae7b90a923ed1c57a3ec8ed4cb2Miao Wang case "$sys_name" in 141648a1c137663ef7207684d0d7009dd5518942111Stephen Hines *64) 142648a1c137663ef7207684d0d7009dd5518942111Stephen Hines sys_lib_dir=$MY_ANDROID_DIR/out/target/product/$sys_name/system/lib64 143648a1c137663ef7207684d0d7009dd5518942111Stephen Hines ;; 144648a1c137663ef7207684d0d7009dd5518942111Stephen Hines *) 145648a1c137663ef7207684d0d7009dd5518942111Stephen Hines sys_lib_dir=$MY_ANDROID_DIR/out/target/product/$sys_name/system/lib 146648a1c137663ef7207684d0d7009dd5518942111Stephen Hines ;; 147648a1c137663ef7207684d0d7009dd5518942111Stephen Hines esac 148648a1c137663ef7207684d0d7009dd5518942111Stephen Hines obj_lib_dir=$MY_ANDROID_DIR/out/target/product/$sys_name/obj/lib 149648a1c137663ef7207684d0d7009dd5518942111Stephen Hines obj_static_lib_dir=$MY_ANDROID_DIR/out/target/product/$sys_name/obj/STATIC_LIBRARIES 150648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 151a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines for a in `find renderscript/lib/$t -name \*.so`; do 152a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines file=`basename $a` 1531baebcdcb2f1f3d794c837166b925538fcd28acbStephen Hines cp `find $sys_lib_dir $obj_lib_dir -name $file | head -1` $a || exit 4 154a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines done 155a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines 156a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines for a in `find renderscript/lib/$t -name \*.bc`; do 157a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines file=`basename $a` 158f7dfd22fc82c01ac59f4e61683eb231d8738bab0Tim Murray cp `find $HOST_LIB_DIR $HOST_LIB64_DIR $sys_lib_dir $obj_lib_dir -name $file | head -1` $a || exit 5 159a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines done 160648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 161648a1c137663ef7207684d0d7009dd5518942111Stephen Hines for a in `find renderscript/lib/$t -name \*.a`; do 162648a1c137663ef7207684d0d7009dd5518942111Stephen Hines file=`basename $a` 163648a1c137663ef7207684d0d7009dd5518942111Stephen Hines cp `find $obj_static_lib_dir -name $file | head -1` $a || exit 4 164648a1c137663ef7207684d0d7009dd5518942111Stephen Hines done 165648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 166be96565d929af53b8009014fbec224004c64e4faStephen Hines done 167be96565d929af53b8009014fbec224004c64e4faStephen Hines 168a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines # javalib.jar 169d0c45801692f4ae7b90a923ed1c57a3ec8ed4cb2Miao Wang cp $MY_ANDROID_DIR/$RENDERSCRIPT_V8_JAR renderscript/lib/javalib.jar 170be96565d929af53b8009014fbec224004c64e4faStephen Hines 171a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hinesfi 172be96565d929af53b8009014fbec224004c64e4faStephen Hines 173be96565d929af53b8009014fbec224004c64e4faStephen Hines# Copy header files for compilers 174be96565d929af53b8009014fbec224004c64e4faStephen Hinescp $MY_ANDROID_DIR/external/clang/lib/Headers/*.h renderscript/clang-include 175be96565d929af53b8009014fbec224004c64e4faStephen Hinescp $MY_ANDROID_DIR/frameworks/rs/scriptc/* renderscript/include 176be96565d929af53b8009014fbec224004c64e4faStephen Hines 177be96565d929af53b8009014fbec224004c64e4faStephen Hines 178a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines# Host-specific tools (bin/ and lib/) 179be96565d929af53b8009014fbec224004c64e4faStephen HinesTOOLS_BIN=" 180be96565d929af53b8009014fbec224004c64e4faStephen Hinesbcc_compat 181be96565d929af53b8009014fbec224004c64e4faStephen Hinesllvm-rs-cc 182be96565d929af53b8009014fbec224004c64e4faStephen Hines" 183be96565d929af53b8009014fbec224004c64e4faStephen Hines 184be96565d929af53b8009014fbec224004c64e4faStephen HinesTOOLS_LIB=" 185a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hineslibbcc.$SONAME 186a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hineslibbcinfo.$SONAME 187a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hineslibclang.$SONAME 1881baebcdcb2f1f3d794c837166b925538fcd28acbStephen Hineslibc++.$SONAME 189a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen HineslibLLVM.$SONAME 190be96565d929af53b8009014fbec224004c64e4faStephen Hines" 191be96565d929af53b8009014fbec224004c64e4faStephen Hines 192f562784573ebf580bc0c691509922b292e71b1d2Pirama Arumuga NainarTOOLS_LIB32="libc++.$SONAME" 193f562784573ebf580bc0c691509922b292e71b1d2Pirama Arumuga Nainar 194be96565d929af53b8009014fbec224004c64e4faStephen Hinesfor a in $TOOLS_BIN; do 195f562784573ebf580bc0c691509922b292e71b1d2Pirama Arumuga Nainar cp $ANDROID_HOST_OUT/bin/$a tools/$SHORT_OSNAME/bin 196f562784573ebf580bc0c691509922b292e71b1d2Pirama Arumuga Nainar strip tools/$SHORT_OSNAME/bin/$a 197be96565d929af53b8009014fbec224004c64e4faStephen Hinesdone 198be96565d929af53b8009014fbec224004c64e4faStephen Hines 199be96565d929af53b8009014fbec224004c64e4faStephen Hinesfor a in $TOOLS_LIB; do 200f562784573ebf580bc0c691509922b292e71b1d2Pirama Arumuga Nainar cp $HOST_LIB64_DIR/$a tools/$SHORT_OSNAME/lib64 201f562784573ebf580bc0c691509922b292e71b1d2Pirama Arumuga Nainar strip tools/$SHORT_OSNAME/lib64/$a 202f562784573ebf580bc0c691509922b292e71b1d2Pirama Arumuga Nainardone 203f562784573ebf580bc0c691509922b292e71b1d2Pirama Arumuga Nainar 204f562784573ebf580bc0c691509922b292e71b1d2Pirama Arumuga Nainarfor a in $TOOLS_LIB32; do 205f562784573ebf580bc0c691509922b292e71b1d2Pirama Arumuga Nainar cp $HOST_LIB_DIR/$a tools/$SHORT_OSNAME/lib 206f562784573ebf580bc0c691509922b292e71b1d2Pirama Arumuga Nainar strip tools/$SHORT_OSNAME/lib/$a 207be96565d929af53b8009014fbec224004c64e4faStephen Hinesdone 208be96565d929af53b8009014fbec224004c64e4faStephen Hines 209a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hinesif [ $DARWIN -eq 0 ]; then 210a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hines echo "DON'T FORGET TO UPDATE THE DARWIN COMPILER PREBUILTS!!!" 211a3957aa5ce87ce28fccc758b8410528c2cad0c41Stephen Hinesfi 212