1#!/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" . 119