blob: 2526384eb8c12de823529f1ae05945d46dcca527 [file] [log] [blame]
Stephen Hinesbe965652013-12-20 16:46:25 -08001#!/bin/bash
2
3# We are currently in frameworks/rs, so compute our top-level directory.
4MY_ANDROID_DIR=$PWD/../../
5cd $MY_ANDROID_DIR
6
Stephen Hinesa3957aa2014-01-09 02:08:10 -08007if [ $OSTYPE == 'darwin13' ];
8then
9
10 DARWIN=1
11 SHORT_OSNAME=darwin
12 SONAME=dylib
13 # Only build arm on darwin.
14 TARGETS=(arm)
15 SYS_NAMES=(generic)
Stephen Hines971d42a2014-02-20 01:42:40 -080016 NUM_CORES=`sysctl -n hw.ncpu`
Stephen Hinesa3957aa2014-01-09 02:08:10 -080017
18else
19
20 DARWIN=0
21 SHORT_OSNAME=linux
22 SONAME=so
23 # Target architectures and their system library names.
24 TARGETS=(arm mips x86)
25 SYS_NAMES=(generic generic_mips generic_x86)
Stephen Hines971d42a2014-02-20 01:42:40 -080026 NUM_CORES=`cat /proc/cpuinfo | grep processor | tail -n 1 | cut -f 2 -d :`
27 NUM_CORES=$(($NUM_CORES+1))
Stephen Hinesa3957aa2014-01-09 02:08:10 -080028
29fi
30
Stephen Hines971d42a2014-02-20 01:42:40 -080031echo "Using $NUM_CORES cores"
32
33# Turn off the build cache and make sure we build all of LLVM from scratch.
34export ANDROID_USE_BUILDCACHE=false
35export FORCE_BUILD_LLVM_COMPONENTS=true
36
37# Ensure that we have constructed the latest "bcc" for the host. Without
38# this variable, we don't build the .so files, hence we never construct the
39# actual required compiler pieces.
40export FORCE_BUILD_RS_COMPAT=true
41
Stephen Hinesbe965652013-12-20 16:46:25 -080042# ANDROID_HOST_OUT is where the new prebuilts will be constructed/copied from.
Stephen Hinesa3957aa2014-01-09 02:08:10 -080043ANDROID_HOST_OUT=$MY_ANDROID_DIR/out/host/$SHORT_OSNAME-x86/
Stephen Hinesbe965652013-12-20 16:46:25 -080044
45# HOST_LIB_DIR allows us to pick up the built librsrt_*.bc libraries.
46HOST_LIB_DIR=$ANDROID_HOST_OUT/lib
47
Tim Murrayf7dfd222014-09-30 12:37:22 -070048# HOST_LIB64_DIR
49HOST_LIB64_DIR=$ANDROID_HOST_OUT/lib64
50
Stephen Hinesbe965652013-12-20 16:46:25 -080051# PREBUILTS_DIR is where we want to copy our new files to.
52PREBUILTS_DIR=$MY_ANDROID_DIR/prebuilts/sdk/
53
Stephen Hinesbe965652013-12-20 16:46:25 -080054print_usage() {
55 echo "USAGE: $0 [-h|--help] [-n|--no-build] [-x]"
56 echo "OPTIONS:"
57 echo " -h, --help : Display this help message."
58 echo " -n, --no-build : Skip the build step and just copy files."
59 echo " -x : Display commands before they are executed."
60}
61
62build_rs_libs() {
63 echo Building for target $1
64 lunch $1
65 # Build the RS runtime libraries.
Stephen Hines971d42a2014-02-20 01:42:40 -080066 cd $MY_ANDROID_DIR/frameworks/rs/driver/runtime && mma -j$NUM_CORES && cd - || exit 1
Stephen Hinesbe965652013-12-20 16:46:25 -080067 # Build a sample support application to ensure that all the pieces are up to date.
Stephen Hines971d42a2014-02-20 01:42:40 -080068 cd $MY_ANDROID_DIR/frameworks/rs/java/tests/RSTest_CompatLib/ && mma -j$NUM_CORES && cd - || exit 2
Tim Murrayf38dea92014-01-27 15:09:07 -080069
Stephen Hinesbe965652013-12-20 16:46:25 -080070}
71
72# Build everything by default
73build_rs=1
74
75while [ $# -gt 0 ]; do
76 case "$1" in
77 -h|--help)
78 print_usage
79 exit 0
80 ;;
81 -n|--no-build)
82 build_rs=0
83 ;;
84 -x)
85 # set lets us enable bash -x mode.
86 set -x
87 ;;
88 *)
89 echo Unknown argument: "$1"
90 print_usage
91 exit 99
92 break
93 ;;
94 esac
95 shift
96done
97
98if [ $build_rs -eq 1 ]; then
99
100 echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
101 echo !!! BUILDING RS PREBUILTS !!!
102 echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
103
104 source build/envsetup.sh
105
106 for t in ${TARGETS[@]}; do
107 build_rs_libs aosp_${t}-userdebug
108 done
109
110 echo DONE BUILDING RS PREBUILTS
111
112else
113
114 echo SKIPPING BUILD OF RS PREBUILTS
115
116fi
117
118DATE=`date +%Y%m%d`
119
120cd $PREBUILTS_DIR || exit 3
121repo start pb_$DATE .
122
Stephen Hinesa3957aa2014-01-09 02:08:10 -0800123# Don't copy device prebuilts on Darwin. We don't need/use them.
124if [ $DARWIN -eq 0 ]; then
125 for i in $(seq 0 $((${#TARGETS[@]} - 1))); do
126 t=${TARGETS[$i]}
127 sys_lib_dir=$MY_ANDROID_DIR/out/target/product/${SYS_NAMES[$i]}/system/lib
Stephen Hines1baebcd2014-05-06 10:08:53 -0700128 obj_lib_dir=$MY_ANDROID_DIR/out/target/product/${SYS_NAMES[$i]}/obj/lib
Stephen Hinesa3957aa2014-01-09 02:08:10 -0800129 for a in `find renderscript/lib/$t -name \*.so`; do
130 file=`basename $a`
Stephen Hines1baebcd2014-05-06 10:08:53 -0700131 cp `find $sys_lib_dir $obj_lib_dir -name $file | head -1` $a || exit 4
Stephen Hinesa3957aa2014-01-09 02:08:10 -0800132 done
133
134 for a in `find renderscript/lib/$t -name \*.bc`; do
135 file=`basename $a`
Tim Murrayf7dfd222014-09-30 12:37:22 -0700136 cp `find $HOST_LIB_DIR $HOST_LIB64_DIR $sys_lib_dir $obj_lib_dir -name $file | head -1` $a || exit 5
Stephen Hinesa3957aa2014-01-09 02:08:10 -0800137 done
Stephen Hinesbe965652013-12-20 16:46:25 -0800138 done
139
Stephen Hinesa3957aa2014-01-09 02:08:10 -0800140 # javalib.jar
141 cp $MY_ANDROID_DIR/out/target/common/obj/JAVA_LIBRARIES/android-support-v8-renderscript_intermediates/javalib.jar renderscript/lib
Stephen Hinesbe965652013-12-20 16:46:25 -0800142
Stephen Hinesa3957aa2014-01-09 02:08:10 -0800143fi
Stephen Hinesbe965652013-12-20 16:46:25 -0800144
145# Copy header files for compilers
146cp $MY_ANDROID_DIR/external/clang/lib/Headers/*.h renderscript/clang-include
147cp $MY_ANDROID_DIR/frameworks/rs/scriptc/* renderscript/include
148
149
Stephen Hinesa3957aa2014-01-09 02:08:10 -0800150# Host-specific tools (bin/ and lib/)
Stephen Hinesbe965652013-12-20 16:46:25 -0800151TOOLS_BIN="
152bcc_compat
153llvm-rs-cc
154"
155
156TOOLS_LIB="
Stephen Hinesa3957aa2014-01-09 02:08:10 -0800157libbcc.$SONAME
158libbcinfo.$SONAME
159libclang.$SONAME
Stephen Hines1baebcd2014-05-06 10:08:53 -0700160libc++.$SONAME
Stephen Hinesa3957aa2014-01-09 02:08:10 -0800161libLLVM.$SONAME
Stephen Hinesbe965652013-12-20 16:46:25 -0800162"
163
164for a in $TOOLS_BIN; do
Stephen Hinesa3957aa2014-01-09 02:08:10 -0800165 cp $ANDROID_HOST_OUT/bin/$a tools/$SHORT_OSNAME/
166 strip tools/$SHORT_OSNAME/$a
Stephen Hinesbe965652013-12-20 16:46:25 -0800167done
168
169for a in $TOOLS_LIB; do
Stephen Hinesb184dc02014-12-02 17:06:55 -0800170 cp $HOST_LIB64_DIR/$a tools/$SHORT_OSNAME/
Stephen Hinesa3957aa2014-01-09 02:08:10 -0800171 strip tools/$SHORT_OSNAME/$a
Stephen Hinesbe965652013-12-20 16:46:25 -0800172done
173
Stephen Hinesa3957aa2014-01-09 02:08:10 -0800174if [ $DARWIN -eq 0 ]; then
175 echo "DON'T FORGET TO UPDATE THE DARWIN COMPILER PREBUILTS!!!"
176fi