update_rs_prebuilts.sh revision f38dea949f87ce49d12605ec24af09eb8d68fcb1
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
7be96565d929af53b8009014fbec224004c64e4faStephen Hines# ANDROID_HOST_OUT is where the new prebuilts will be constructed/copied from.
8be96565d929af53b8009014fbec224004c64e4faStephen HinesANDROID_HOST_OUT=$MY_ANDROID_DIR/out/host/linux-x86/
9be96565d929af53b8009014fbec224004c64e4faStephen Hines
10be96565d929af53b8009014fbec224004c64e4faStephen Hines# HOST_LIB_DIR allows us to pick up the built librsrt_*.bc libraries.
11be96565d929af53b8009014fbec224004c64e4faStephen HinesHOST_LIB_DIR=$ANDROID_HOST_OUT/lib
12be96565d929af53b8009014fbec224004c64e4faStephen Hines
13be96565d929af53b8009014fbec224004c64e4faStephen Hines# PREBUILTS_DIR is where we want to copy our new files to.
14be96565d929af53b8009014fbec224004c64e4faStephen HinesPREBUILTS_DIR=$MY_ANDROID_DIR/prebuilts/sdk/
15be96565d929af53b8009014fbec224004c64e4faStephen Hines
16be96565d929af53b8009014fbec224004c64e4faStephen Hines# Target architectures and their system library names.
17be96565d929af53b8009014fbec224004c64e4faStephen HinesTARGETS=(arm mips x86)
18be96565d929af53b8009014fbec224004c64e4faStephen HinesSYS_NAMES=(generic generic_mips generic_x86)
19be96565d929af53b8009014fbec224004c64e4faStephen Hines
20be96565d929af53b8009014fbec224004c64e4faStephen Hinesprint_usage() {
21be96565d929af53b8009014fbec224004c64e4faStephen Hines  echo "USAGE: $0 [-h|--help] [-n|--no-build] [-x]"
22be96565d929af53b8009014fbec224004c64e4faStephen Hines  echo "OPTIONS:"
23be96565d929af53b8009014fbec224004c64e4faStephen Hines  echo "    -h, --help     : Display this help message."
24be96565d929af53b8009014fbec224004c64e4faStephen Hines  echo "    -n, --no-build : Skip the build step and just copy files."
25be96565d929af53b8009014fbec224004c64e4faStephen Hines  echo "    -x             : Display commands before they are executed."
26be96565d929af53b8009014fbec224004c64e4faStephen Hines}
27be96565d929af53b8009014fbec224004c64e4faStephen Hines
28be96565d929af53b8009014fbec224004c64e4faStephen Hinesbuild_rs_libs() {
29be96565d929af53b8009014fbec224004c64e4faStephen Hines  echo Building for target $1
30be96565d929af53b8009014fbec224004c64e4faStephen Hines  lunch $1
31be96565d929af53b8009014fbec224004c64e4faStephen Hines  # Build the RS runtime libraries.
32be96565d929af53b8009014fbec224004c64e4faStephen Hines  cd $MY_ANDROID_DIR/frameworks/rs/driver/runtime && mma -j32 && cd - || exit 1
33be96565d929af53b8009014fbec224004c64e4faStephen Hines  # Build a sample support application to ensure that all the pieces are up to date.
34be96565d929af53b8009014fbec224004c64e4faStephen Hines  cd $MY_ANDROID_DIR/frameworks/rs/java/tests/RSTest_CompatLib/ && mma -j32 && cd - || exit 2
35f38dea949f87ce49d12605ec24af09eb8d68fcb1Tim Murray  # Build bcc_compat.
36f38dea949f87ce49d12605ec24af09eb8d68fcb1Tim Murray  cd $MY_ANDROID_DIR/frameworks/compile/libbcc/ && mma -j32 && cd - || exit 3
37f38dea949f87ce49d12605ec24af09eb8d68fcb1Tim Murray
38be96565d929af53b8009014fbec224004c64e4faStephen Hines}
39be96565d929af53b8009014fbec224004c64e4faStephen Hines
40be96565d929af53b8009014fbec224004c64e4faStephen Hines# Build everything by default
41be96565d929af53b8009014fbec224004c64e4faStephen Hinesbuild_rs=1
42be96565d929af53b8009014fbec224004c64e4faStephen Hines
43be96565d929af53b8009014fbec224004c64e4faStephen Hineswhile [ $# -gt 0 ]; do
44be96565d929af53b8009014fbec224004c64e4faStephen Hines  case "$1" in
45be96565d929af53b8009014fbec224004c64e4faStephen Hines    -h|--help)
46be96565d929af53b8009014fbec224004c64e4faStephen Hines      print_usage
47be96565d929af53b8009014fbec224004c64e4faStephen Hines      exit 0
48be96565d929af53b8009014fbec224004c64e4faStephen Hines      ;;
49be96565d929af53b8009014fbec224004c64e4faStephen Hines    -n|--no-build)
50be96565d929af53b8009014fbec224004c64e4faStephen Hines      build_rs=0
51be96565d929af53b8009014fbec224004c64e4faStephen Hines      ;;
52be96565d929af53b8009014fbec224004c64e4faStephen Hines    -x)
53be96565d929af53b8009014fbec224004c64e4faStephen Hines      # set lets us enable bash -x mode.
54be96565d929af53b8009014fbec224004c64e4faStephen Hines      set -x
55be96565d929af53b8009014fbec224004c64e4faStephen Hines      ;;
56be96565d929af53b8009014fbec224004c64e4faStephen Hines    *)
57be96565d929af53b8009014fbec224004c64e4faStephen Hines      echo Unknown argument: "$1"
58be96565d929af53b8009014fbec224004c64e4faStephen Hines      print_usage
59be96565d929af53b8009014fbec224004c64e4faStephen Hines      exit 99
60be96565d929af53b8009014fbec224004c64e4faStephen Hines      break
61be96565d929af53b8009014fbec224004c64e4faStephen Hines      ;;
62be96565d929af53b8009014fbec224004c64e4faStephen Hines  esac
63be96565d929af53b8009014fbec224004c64e4faStephen Hines  shift
64be96565d929af53b8009014fbec224004c64e4faStephen Hinesdone
65be96565d929af53b8009014fbec224004c64e4faStephen Hines
66be96565d929af53b8009014fbec224004c64e4faStephen Hinesif [ $build_rs -eq 1 ]; then
67be96565d929af53b8009014fbec224004c64e4faStephen Hines
68be96565d929af53b8009014fbec224004c64e4faStephen Hines  echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
69be96565d929af53b8009014fbec224004c64e4faStephen Hines  echo !!! BUILDING RS PREBUILTS !!!
70be96565d929af53b8009014fbec224004c64e4faStephen Hines  echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
71be96565d929af53b8009014fbec224004c64e4faStephen Hines
72be96565d929af53b8009014fbec224004c64e4faStephen Hines  source build/envsetup.sh
73be96565d929af53b8009014fbec224004c64e4faStephen Hines
74be96565d929af53b8009014fbec224004c64e4faStephen Hines  for t in ${TARGETS[@]}; do
75be96565d929af53b8009014fbec224004c64e4faStephen Hines    build_rs_libs aosp_${t}-userdebug
76be96565d929af53b8009014fbec224004c64e4faStephen Hines  done
77be96565d929af53b8009014fbec224004c64e4faStephen Hines
78be96565d929af53b8009014fbec224004c64e4faStephen Hines  echo DONE BUILDING RS PREBUILTS
79be96565d929af53b8009014fbec224004c64e4faStephen Hines
80be96565d929af53b8009014fbec224004c64e4faStephen Hineselse
81be96565d929af53b8009014fbec224004c64e4faStephen Hines
82be96565d929af53b8009014fbec224004c64e4faStephen Hines  echo SKIPPING BUILD OF RS PREBUILTS
83be96565d929af53b8009014fbec224004c64e4faStephen Hines
84be96565d929af53b8009014fbec224004c64e4faStephen Hinesfi
85be96565d929af53b8009014fbec224004c64e4faStephen Hines
86be96565d929af53b8009014fbec224004c64e4faStephen HinesDATE=`date +%Y%m%d`
87be96565d929af53b8009014fbec224004c64e4faStephen Hines
88be96565d929af53b8009014fbec224004c64e4faStephen Hinescd $PREBUILTS_DIR || exit 3
89be96565d929af53b8009014fbec224004c64e4faStephen Hinesrepo start pb_$DATE .
90be96565d929af53b8009014fbec224004c64e4faStephen Hines
91be96565d929af53b8009014fbec224004c64e4faStephen Hinesfor i in $(seq 0 $((${#TARGETS[@]} - 1))); do
92be96565d929af53b8009014fbec224004c64e4faStephen Hines  t=${TARGETS[$i]}
93be96565d929af53b8009014fbec224004c64e4faStephen Hines  sys_lib_dir=$MY_ANDROID_DIR/out/target/product/${SYS_NAMES[$i]}/system/lib
94be96565d929af53b8009014fbec224004c64e4faStephen Hines  for a in `find renderscript/lib/$t -name \*.so`; do
95be96565d929af53b8009014fbec224004c64e4faStephen Hines    file=`basename $a`
96be96565d929af53b8009014fbec224004c64e4faStephen Hines    cp `find $sys_lib_dir -name $file` $a || exit 4
97be96565d929af53b8009014fbec224004c64e4faStephen Hines  done
98be96565d929af53b8009014fbec224004c64e4faStephen Hines
99be96565d929af53b8009014fbec224004c64e4faStephen Hines  for a in `find renderscript/lib/$t -name \*.bc`; do
100be96565d929af53b8009014fbec224004c64e4faStephen Hines    file=`basename $a`
101be96565d929af53b8009014fbec224004c64e4faStephen Hines    cp `find $HOST_LIB_DIR $sys_lib_dir -name $file` $a || exit 5
102be96565d929af53b8009014fbec224004c64e4faStephen Hines  done
103be96565d929af53b8009014fbec224004c64e4faStephen Hinesdone
104be96565d929af53b8009014fbec224004c64e4faStephen Hines
105be96565d929af53b8009014fbec224004c64e4faStephen Hines# general
106be96565d929af53b8009014fbec224004c64e4faStephen Hines# javalib.jar
107be96565d929af53b8009014fbec224004c64e4faStephen Hinescp $MY_ANDROID_DIR/out/target/common/obj/JAVA_LIBRARIES/android-support-v8-renderscript_intermediates/javalib.jar renderscript/lib
108be96565d929af53b8009014fbec224004c64e4faStephen Hines
109be96565d929af53b8009014fbec224004c64e4faStephen Hines# Copy header files for compilers
110be96565d929af53b8009014fbec224004c64e4faStephen Hinescp $MY_ANDROID_DIR/external/clang/lib/Headers/*.h renderscript/clang-include
111be96565d929af53b8009014fbec224004c64e4faStephen Hinescp $MY_ANDROID_DIR/frameworks/rs/scriptc/* renderscript/include
112be96565d929af53b8009014fbec224004c64e4faStephen Hines
113be96565d929af53b8009014fbec224004c64e4faStephen Hines
114be96565d929af53b8009014fbec224004c64e4faStephen Hines# Linux-specific tools (bin/ and lib/)
115be96565d929af53b8009014fbec224004c64e4faStephen HinesTOOLS_BIN="
116be96565d929af53b8009014fbec224004c64e4faStephen Hinesbcc_compat
117be96565d929af53b8009014fbec224004c64e4faStephen Hinesllvm-rs-cc
118be96565d929af53b8009014fbec224004c64e4faStephen Hines"
119be96565d929af53b8009014fbec224004c64e4faStephen Hines
120be96565d929af53b8009014fbec224004c64e4faStephen HinesTOOLS_LIB="
121be96565d929af53b8009014fbec224004c64e4faStephen Hineslibbcc.so
122be96565d929af53b8009014fbec224004c64e4faStephen Hineslibbcinfo.so
123be96565d929af53b8009014fbec224004c64e4faStephen Hineslibclang.so
124be96565d929af53b8009014fbec224004c64e4faStephen HineslibLLVM.so
125be96565d929af53b8009014fbec224004c64e4faStephen Hines"
126be96565d929af53b8009014fbec224004c64e4faStephen Hines
127be96565d929af53b8009014fbec224004c64e4faStephen Hinesfor a in $TOOLS_BIN; do
128be96565d929af53b8009014fbec224004c64e4faStephen Hines  cp $ANDROID_HOST_OUT/bin/$a tools/linux/
129be96565d929af53b8009014fbec224004c64e4faStephen Hines  strip tools/linux/$a
130be96565d929af53b8009014fbec224004c64e4faStephen Hinesdone
131be96565d929af53b8009014fbec224004c64e4faStephen Hines
132be96565d929af53b8009014fbec224004c64e4faStephen Hinesfor a in $TOOLS_LIB; do
133be96565d929af53b8009014fbec224004c64e4faStephen Hines  cp $ANDROID_HOST_OUT/lib/$a tools/linux/
134be96565d929af53b8009014fbec224004c64e4faStephen Hines  strip tools/linux/$a
135be96565d929af53b8009014fbec224004c64e4faStephen Hinesdone
136be96565d929af53b8009014fbec224004c64e4faStephen Hines
137be96565d929af53b8009014fbec224004c64e4faStephen Hinesecho "DON'T FORGET TO UPDATE THE DARWIN COMPILER PREBUILTS!!!"
138