blob: c765e5dfcd5d7670918c74c76e06a2ce17a334ee [file] [log] [blame]
Kenny Root031510f2014-05-29 13:53:05 -07001#!/usr/bin/env bash
2
3if (( BASH_VERSINFO[0] < 3 )); then
4 echo "Must be running BASH version 3 or newer!"
5 exit 1
6fi
7
8if [[ -z $TOP ]]; then \
9 echo "You must do envsetup beforehand."
10 exit 1
11fi
12
13# We are currently in frameworks/rs, so compute our top-level directory.
14MY_ANDROID_DIR="$TOP"
15cd "$MY_ANDROID_DIR"
16
17if [[ $OSTYPE != *linux* ]]; then \
18 echo "Only works on Linux."
19 exit 1
20fi
21
22SHORT_OSNAME=linux
23SONAME=so
24# Target architectures and their system library names.
25declare -a TARGETS=(generic_armv5 aosp_arm aosp_mips aosp_x86)
26declare -a ABI_NAMES=(armeabi armeabi-v7a mips x86)
27declare -a SYS_NAMES=(generic_armv5 generic generic_mips generic_x86)
28declare -i NUM_CORES="$(awk '/^processor/ { i++ } END { print i }' /proc/cpuinfo)"
29
30echo "Using $NUM_CORES cores"
31
32# Turn off the build cache and make sure we build all of LLVM from scratch.
33#export ANDROID_USE_BUILDCACHE=false
34
35# PREBUILTS_DIR is where we want to copy our new files to.
36PREBUILTS_DIR="$MY_ANDROID_DIR/prebuilts/conscrypt/"
37
38print_usage() {
39 echo "USAGE: $0 [-h|--help] [-n|--no-build] [-x]"
40 echo "OPTIONS:"
41 echo " -h, --help : Display this help message."
42 echo " -n, --no-build : Skip the build step and just copy files."
43 echo " -x : Display commands before they are executed."
44}
45
46build_libs() {
47 local t="$1"
48 echo Building for target $t
49 cd $MY_ANDROID_DIR
50 WITH_HOST_DALVIK=false make -j32 PRODUCT-$t-userdebug APP-conscrypt_unbundled-libconscrypt_jni || exit 1
51}
52
53# Build everything by default
54build_me=1
55
56while [[ $# -gt 0 ]]; do
57 case "$1" in
58 -h|--help)
59 print_usage
60 exit 0
61 ;;
62 -n|--no-build)
63 build_me=0
64 ;;
65 -x)
66 # set lets us enable bash -x mode.
67 set -x
68 ;;
69 *)
70 echo Unknown argument: "$1"
71 print_usage
72 exit 99
73 break
74 ;;
75 esac
76 shift
77done
78
79declare -i i
80
81if [ $build_me -eq 1 ]; then
82
83 echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
84 echo !!! BUILDING CONSCRYPT PREBUILTS !!!
85 echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
86
87 source build/envsetup.sh
88
89 for (( i=0; i < ${#TARGETS[@]}; i++ )); do
90 build_libs "${TARGETS[$i]}"
91 done
92
93 echo DONE BUILDING CONSCRYPT PREBUILTS
94
95else
96
97 echo SKIPPING BUILD OF CONSCRYPT PREBUILTS
98
99fi
100
101DATE="$(date +"%Y%m%d")"
102
103cd "$PREBUILTS_DIR" || exit 3
104repo start "pb_$DATE" .
105
106# Don't copy device prebuilts on Darwin. We don't need/use them.
107for (( i=0; i < ${#TARGETS[@]}; i++ )); do
108 sys="${SYS_NAMES[$i]}"
109 abi="${ABI_NAMES[$i]}"
110 sys_lib_dir="$MY_ANDROID_DIR/out/target/product/$sys/system/lib"
111 if [[ ! -d "jni/$abi" ]]; then
112 mkdir -p "jni/$abi"
113 fi
114 cp "$sys_lib_dir/libconscrypt_jni.so" "jni/$abi/" || exit 4
115done
116
117# javalib.jar
118cp "$MY_ANDROID_DIR/out/target/common/obj/JAVA_LIBRARIES/conscrypt_unbundled_intermediates/classes.jar" .