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