#!/usr/bin/env bash if (( BASH_VERSINFO[0] < 3 )); then echo "Must be running BASH version 3 or newer!" exit 1 fi if [[ -z $TOP ]]; then \ echo "You must do envsetup beforehand." exit 1 fi # We are currently in frameworks/rs, so compute our top-level directory. MY_ANDROID_DIR="$TOP" cd "$MY_ANDROID_DIR" if [[ $OSTYPE != *linux* ]]; then \ echo "Only works on Linux." exit 1 fi SHORT_OSNAME=linux SONAME=so # Target architectures and their system library names. declare -a TARGETS=(generic_armv5 aosp_arm aosp_mips aosp_x86) declare -a ABI_NAMES=(armeabi armeabi-v7a mips x86) declare -a SYS_NAMES=(generic_armv5 generic generic_mips generic_x86) declare -i NUM_CORES="$(awk '/^processor/ { i++ } END { print i }' /proc/cpuinfo)" echo "Using $NUM_CORES cores" # Turn off the build cache and make sure we build all of LLVM from scratch. #export ANDROID_USE_BUILDCACHE=false # PREBUILTS_DIR is where we want to copy our new files to. PREBUILTS_DIR="$MY_ANDROID_DIR/prebuilts/conscrypt/" print_usage() { echo "USAGE: $0 [-h|--help] [-n|--no-build] [-x]" echo "OPTIONS:" echo " -h, --help : Display this help message." echo " -n, --no-build : Skip the build step and just copy files." echo " -x : Display commands before they are executed." } build_libs() { local t="$1" echo Building for target $t cd $MY_ANDROID_DIR WITH_HOST_DALVIK=false make -j32 PRODUCT-$t-userdebug APP-conscrypt_unbundled-libconscrypt_jni || exit 1 } # Build everything by default build_me=1 while [[ $# -gt 0 ]]; do case "$1" in -h|--help) print_usage exit 0 ;; -n|--no-build) build_me=0 ;; -x) # set lets us enable bash -x mode. set -x ;; *) echo Unknown argument: "$1" print_usage exit 99 break ;; esac shift done declare -i i if [ $build_me -eq 1 ]; then echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! echo !!! BUILDING CONSCRYPT PREBUILTS !!! echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! source build/envsetup.sh for (( i=0; i < ${#TARGETS[@]}; i++ )); do build_libs "${TARGETS[$i]}" done echo DONE BUILDING CONSCRYPT PREBUILTS else echo SKIPPING BUILD OF CONSCRYPT PREBUILTS fi DATE="$(date +"%Y%m%d")" cd "$PREBUILTS_DIR" || exit 3 repo start "pb_$DATE" . # Don't copy device prebuilts on Darwin. We don't need/use them. for (( i=0; i < ${#TARGETS[@]}; i++ )); do sys="${SYS_NAMES[$i]}" abi="${ABI_NAMES[$i]}" sys_lib_dir="$MY_ANDROID_DIR/out/target/product/$sys/system/lib" if [[ ! -d "jni/$abi" ]]; then mkdir -p "jni/$abi" fi cp "$sys_lib_dir/libconscrypt_jni.so" "jni/$abi/" || exit 4 done # javalib.jar cp "$MY_ANDROID_DIR/out/target/common/obj/JAVA_LIBRARIES/conscrypt_unbundled_intermediates/classes.jar" .