1031510fb212274c2761f51f8b432c0442dd67667Kenny Root#!/usr/bin/env bash
2031510fb212274c2761f51f8b432c0442dd67667Kenny Root
3031510fb212274c2761f51f8b432c0442dd67667Kenny Rootif (( BASH_VERSINFO[0] < 3 )); then
4031510fb212274c2761f51f8b432c0442dd67667Kenny Root  echo "Must be running BASH version 3 or newer!"
5031510fb212274c2761f51f8b432c0442dd67667Kenny Root  exit 1
6031510fb212274c2761f51f8b432c0442dd67667Kenny Rootfi
7031510fb212274c2761f51f8b432c0442dd67667Kenny Root
8031510fb212274c2761f51f8b432c0442dd67667Kenny Rootif [[ -z $TOP ]]; then \
9031510fb212274c2761f51f8b432c0442dd67667Kenny Root  echo "You must do envsetup beforehand."
10031510fb212274c2761f51f8b432c0442dd67667Kenny Root  exit 1
11031510fb212274c2761f51f8b432c0442dd67667Kenny Rootfi
12031510fb212274c2761f51f8b432c0442dd67667Kenny Root
13031510fb212274c2761f51f8b432c0442dd67667Kenny Root# We are currently in frameworks/rs, so compute our top-level directory.
14031510fb212274c2761f51f8b432c0442dd67667Kenny RootMY_ANDROID_DIR="$TOP"
15031510fb212274c2761f51f8b432c0442dd67667Kenny Rootcd "$MY_ANDROID_DIR"
16031510fb212274c2761f51f8b432c0442dd67667Kenny Root
17031510fb212274c2761f51f8b432c0442dd67667Kenny Rootif [[ $OSTYPE != *linux* ]]; then \
18031510fb212274c2761f51f8b432c0442dd67667Kenny Root  echo "Only works on Linux."
19031510fb212274c2761f51f8b432c0442dd67667Kenny Root  exit 1
20031510fb212274c2761f51f8b432c0442dd67667Kenny Rootfi
21031510fb212274c2761f51f8b432c0442dd67667Kenny Root
22031510fb212274c2761f51f8b432c0442dd67667Kenny RootSHORT_OSNAME=linux
23031510fb212274c2761f51f8b432c0442dd67667Kenny RootSONAME=so
24031510fb212274c2761f51f8b432c0442dd67667Kenny Root# Target architectures and their system library names.
25031510fb212274c2761f51f8b432c0442dd67667Kenny Rootdeclare -a TARGETS=(generic_armv5 aosp_arm aosp_mips aosp_x86)
26031510fb212274c2761f51f8b432c0442dd67667Kenny Rootdeclare -a ABI_NAMES=(armeabi armeabi-v7a mips x86)
27031510fb212274c2761f51f8b432c0442dd67667Kenny Rootdeclare -a SYS_NAMES=(generic_armv5 generic generic_mips generic_x86)
28031510fb212274c2761f51f8b432c0442dd67667Kenny Rootdeclare -i NUM_CORES="$(awk '/^processor/ { i++ } END { print i }' /proc/cpuinfo)"
29031510fb212274c2761f51f8b432c0442dd67667Kenny Root
30031510fb212274c2761f51f8b432c0442dd67667Kenny Rootecho "Using $NUM_CORES cores"
31031510fb212274c2761f51f8b432c0442dd67667Kenny Root
32031510fb212274c2761f51f8b432c0442dd67667Kenny Root# Turn off the build cache and make sure we build all of LLVM from scratch.
33031510fb212274c2761f51f8b432c0442dd67667Kenny Root#export ANDROID_USE_BUILDCACHE=false
34031510fb212274c2761f51f8b432c0442dd67667Kenny Root
35031510fb212274c2761f51f8b432c0442dd67667Kenny Root# PREBUILTS_DIR is where we want to copy our new files to.
36031510fb212274c2761f51f8b432c0442dd67667Kenny RootPREBUILTS_DIR="$MY_ANDROID_DIR/prebuilts/conscrypt/"
37031510fb212274c2761f51f8b432c0442dd67667Kenny Root
38031510fb212274c2761f51f8b432c0442dd67667Kenny Rootprint_usage() {
39031510fb212274c2761f51f8b432c0442dd67667Kenny Root  echo "USAGE: $0 [-h|--help] [-n|--no-build] [-x]"
40031510fb212274c2761f51f8b432c0442dd67667Kenny Root  echo "OPTIONS:"
41031510fb212274c2761f51f8b432c0442dd67667Kenny Root  echo "    -h, --help     : Display this help message."
42031510fb212274c2761f51f8b432c0442dd67667Kenny Root  echo "    -n, --no-build : Skip the build step and just copy files."
43031510fb212274c2761f51f8b432c0442dd67667Kenny Root  echo "    -x             : Display commands before they are executed."
44031510fb212274c2761f51f8b432c0442dd67667Kenny Root}
45031510fb212274c2761f51f8b432c0442dd67667Kenny Root
46031510fb212274c2761f51f8b432c0442dd67667Kenny Rootbuild_libs() {
47031510fb212274c2761f51f8b432c0442dd67667Kenny Root  local t="$1"
48031510fb212274c2761f51f8b432c0442dd67667Kenny Root  echo Building for target $t
49031510fb212274c2761f51f8b432c0442dd67667Kenny Root  cd $MY_ANDROID_DIR
50031510fb212274c2761f51f8b432c0442dd67667Kenny Root  WITH_HOST_DALVIK=false make -j32 PRODUCT-$t-userdebug APP-conscrypt_unbundled-libconscrypt_jni || exit 1
51031510fb212274c2761f51f8b432c0442dd67667Kenny Root}
52031510fb212274c2761f51f8b432c0442dd67667Kenny Root
53031510fb212274c2761f51f8b432c0442dd67667Kenny Root# Build everything by default
54031510fb212274c2761f51f8b432c0442dd67667Kenny Rootbuild_me=1
55031510fb212274c2761f51f8b432c0442dd67667Kenny Root
56031510fb212274c2761f51f8b432c0442dd67667Kenny Rootwhile [[ $# -gt 0 ]]; do
57031510fb212274c2761f51f8b432c0442dd67667Kenny Root  case "$1" in
58031510fb212274c2761f51f8b432c0442dd67667Kenny Root    -h|--help)
59031510fb212274c2761f51f8b432c0442dd67667Kenny Root      print_usage
60031510fb212274c2761f51f8b432c0442dd67667Kenny Root      exit 0
61031510fb212274c2761f51f8b432c0442dd67667Kenny Root      ;;
62031510fb212274c2761f51f8b432c0442dd67667Kenny Root    -n|--no-build)
63031510fb212274c2761f51f8b432c0442dd67667Kenny Root      build_me=0
64031510fb212274c2761f51f8b432c0442dd67667Kenny Root      ;;
65031510fb212274c2761f51f8b432c0442dd67667Kenny Root    -x)
66031510fb212274c2761f51f8b432c0442dd67667Kenny Root      # set lets us enable bash -x mode.
67031510fb212274c2761f51f8b432c0442dd67667Kenny Root      set -x
68031510fb212274c2761f51f8b432c0442dd67667Kenny Root      ;;
69031510fb212274c2761f51f8b432c0442dd67667Kenny Root    *)
70031510fb212274c2761f51f8b432c0442dd67667Kenny Root      echo Unknown argument: "$1"
71031510fb212274c2761f51f8b432c0442dd67667Kenny Root      print_usage
72031510fb212274c2761f51f8b432c0442dd67667Kenny Root      exit 99
73031510fb212274c2761f51f8b432c0442dd67667Kenny Root      break
74031510fb212274c2761f51f8b432c0442dd67667Kenny Root      ;;
75031510fb212274c2761f51f8b432c0442dd67667Kenny Root  esac
76031510fb212274c2761f51f8b432c0442dd67667Kenny Root  shift
77031510fb212274c2761f51f8b432c0442dd67667Kenny Rootdone
78031510fb212274c2761f51f8b432c0442dd67667Kenny Root
79031510fb212274c2761f51f8b432c0442dd67667Kenny Rootdeclare -i i
80031510fb212274c2761f51f8b432c0442dd67667Kenny Root
81031510fb212274c2761f51f8b432c0442dd67667Kenny Rootif [ $build_me -eq 1 ]; then
82031510fb212274c2761f51f8b432c0442dd67667Kenny Root
83031510fb212274c2761f51f8b432c0442dd67667Kenny Root  echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
84031510fb212274c2761f51f8b432c0442dd67667Kenny Root  echo !!! BUILDING CONSCRYPT PREBUILTS !!!
85031510fb212274c2761f51f8b432c0442dd67667Kenny Root  echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
86031510fb212274c2761f51f8b432c0442dd67667Kenny Root
87031510fb212274c2761f51f8b432c0442dd67667Kenny Root  source build/envsetup.sh
88031510fb212274c2761f51f8b432c0442dd67667Kenny Root
89031510fb212274c2761f51f8b432c0442dd67667Kenny Root  for (( i=0; i < ${#TARGETS[@]}; i++ )); do
90031510fb212274c2761f51f8b432c0442dd67667Kenny Root    build_libs "${TARGETS[$i]}"
91031510fb212274c2761f51f8b432c0442dd67667Kenny Root  done
92031510fb212274c2761f51f8b432c0442dd67667Kenny Root
93031510fb212274c2761f51f8b432c0442dd67667Kenny Root  echo DONE BUILDING CONSCRYPT PREBUILTS
94031510fb212274c2761f51f8b432c0442dd67667Kenny Root
95031510fb212274c2761f51f8b432c0442dd67667Kenny Rootelse
96031510fb212274c2761f51f8b432c0442dd67667Kenny Root
97031510fb212274c2761f51f8b432c0442dd67667Kenny Root  echo SKIPPING BUILD OF CONSCRYPT PREBUILTS
98031510fb212274c2761f51f8b432c0442dd67667Kenny Root
99031510fb212274c2761f51f8b432c0442dd67667Kenny Rootfi
100031510fb212274c2761f51f8b432c0442dd67667Kenny Root
101031510fb212274c2761f51f8b432c0442dd67667Kenny RootDATE="$(date +"%Y%m%d")"
102031510fb212274c2761f51f8b432c0442dd67667Kenny Root
103031510fb212274c2761f51f8b432c0442dd67667Kenny Rootcd "$PREBUILTS_DIR" || exit 3
104031510fb212274c2761f51f8b432c0442dd67667Kenny Rootrepo start "pb_$DATE" .
105031510fb212274c2761f51f8b432c0442dd67667Kenny Root
106031510fb212274c2761f51f8b432c0442dd67667Kenny Root# Don't copy device prebuilts on Darwin. We don't need/use them.
107031510fb212274c2761f51f8b432c0442dd67667Kenny Rootfor (( i=0; i < ${#TARGETS[@]}; i++ )); do
108031510fb212274c2761f51f8b432c0442dd67667Kenny Root  sys="${SYS_NAMES[$i]}"
109031510fb212274c2761f51f8b432c0442dd67667Kenny Root  abi="${ABI_NAMES[$i]}"
110031510fb212274c2761f51f8b432c0442dd67667Kenny Root  sys_lib_dir="$MY_ANDROID_DIR/out/target/product/$sys/system/lib"
111031510fb212274c2761f51f8b432c0442dd67667Kenny Root  if [[ ! -d "jni/$abi" ]]; then
112031510fb212274c2761f51f8b432c0442dd67667Kenny Root    mkdir -p "jni/$abi"
113031510fb212274c2761f51f8b432c0442dd67667Kenny Root  fi
114031510fb212274c2761f51f8b432c0442dd67667Kenny Root  cp "$sys_lib_dir/libconscrypt_jni.so" "jni/$abi/" || exit 4
115031510fb212274c2761f51f8b432c0442dd67667Kenny Rootdone
116031510fb212274c2761f51f8b432c0442dd67667Kenny Root
117031510fb212274c2761f51f8b432c0442dd67667Kenny Root# javalib.jar
118031510fb212274c2761f51f8b432c0442dd67667Kenny Rootcp "$MY_ANDROID_DIR/out/target/common/obj/JAVA_LIBRARIES/conscrypt_unbundled_intermediates/classes.jar" .
119