1*cda5da8dSAndroid Build Coastguard Worker#!/bin/bash -ex 2*cda5da8dSAndroid Build Coastguard Worker 3*cda5da8dSAndroid Build Coastguard Worker# Copyright 2020 Google Inc. All rights reserved. 4*cda5da8dSAndroid Build Coastguard Worker# 5*cda5da8dSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); 6*cda5da8dSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License. 7*cda5da8dSAndroid Build Coastguard Worker# You may obtain a copy of the License at 8*cda5da8dSAndroid Build Coastguard Worker# 9*cda5da8dSAndroid Build Coastguard Worker# http://www.apache.org/licenses/LICENSE-2.0 10*cda5da8dSAndroid Build Coastguard Worker# 11*cda5da8dSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 12*cda5da8dSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, 13*cda5da8dSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*cda5da8dSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and 15*cda5da8dSAndroid Build Coastguard Worker# limitations under the License. 16*cda5da8dSAndroid Build Coastguard Worker 17*cda5da8dSAndroid Build Coastguard Worker: "${OUT_DIR:?Must set OUT_DIR}" 18*cda5da8dSAndroid Build Coastguard WorkerTOP=$(pwd) 19*cda5da8dSAndroid Build Coastguard Worker 20*cda5da8dSAndroid Build Coastguard WorkerUNAME="$(uname)" 21*cda5da8dSAndroid Build Coastguard Workercase "$UNAME" in 22*cda5da8dSAndroid Build Coastguard WorkerLinux) 23*cda5da8dSAndroid Build Coastguard Worker OS='linux' 24*cda5da8dSAndroid Build Coastguard Worker ;; 25*cda5da8dSAndroid Build Coastguard WorkerDarwin) 26*cda5da8dSAndroid Build Coastguard Worker OS='darwin' 27*cda5da8dSAndroid Build Coastguard Worker ;; 28*cda5da8dSAndroid Build Coastguard Worker*) 29*cda5da8dSAndroid Build Coastguard Worker exit 1 30*cda5da8dSAndroid Build Coastguard Worker ;; 31*cda5da8dSAndroid Build Coastguard Workeresac 32*cda5da8dSAndroid Build Coastguard Worker 33*cda5da8dSAndroid Build Coastguard Workerbuild_soong=1 34*cda5da8dSAndroid Build Coastguard Workerbuild_asan=1 35*cda5da8dSAndroid Build Coastguard Worker[[ ! -d ${TOP}/toolchain/go ]] || build_go=1 36*cda5da8dSAndroid Build Coastguard Worker 37*cda5da8dSAndroid Build Coastguard Workeruse_musl=false 38*cda5da8dSAndroid Build Coastguard Workerclean=true 39*cda5da8dSAndroid Build Coastguard Workerwhile getopts ":-:" opt; do 40*cda5da8dSAndroid Build Coastguard Worker case "$opt" in 41*cda5da8dSAndroid Build Coastguard Worker -) 42*cda5da8dSAndroid Build Coastguard Worker case "${OPTARG}" in 43*cda5da8dSAndroid Build Coastguard Worker resume) clean= ;; 44*cda5da8dSAndroid Build Coastguard Worker musl) use_musl=true ;; 45*cda5da8dSAndroid Build Coastguard Worker skip-go) unset build_go ;; 46*cda5da8dSAndroid Build Coastguard Worker skip-soong) unset build_soong ;; 47*cda5da8dSAndroid Build Coastguard Worker skip-soong-tests) skip_soong_tests=--skip-soong-tests ;; 48*cda5da8dSAndroid Build Coastguard Worker skip-asan) unset build_asan ;; 49*cda5da8dSAndroid Build Coastguard Worker *) echo "Unknown option --${OPTARG}"; exit 1 ;; 50*cda5da8dSAndroid Build Coastguard Worker esac;; 51*cda5da8dSAndroid Build Coastguard Worker *) echo "'${opt}' '${OPTARG}'" 52*cda5da8dSAndroid Build Coastguard Worker esac 53*cda5da8dSAndroid Build Coastguard Workerdone 54*cda5da8dSAndroid Build Coastguard Worker 55*cda5da8dSAndroid Build Coastguard Workersecondary_arch="" 56*cda5da8dSAndroid Build Coastguard Workerif [[ ${OS} = linux ]]; then 57*cda5da8dSAndroid Build Coastguard Worker secondary_arch="\"HostSecondaryArch\":\"x86\"," 58*cda5da8dSAndroid Build Coastguard Workerfi 59*cda5da8dSAndroid Build Coastguard Worker 60*cda5da8dSAndroid Build Coastguard Workercross_compile="" 61*cda5da8dSAndroid Build Coastguard Workerif [[ ${use_musl} = "true" ]]; then 62*cda5da8dSAndroid Build Coastguard Worker cross_compile=$(cat <<EOF 63*cda5da8dSAndroid Build Coastguard Worker "CrossHost": "linux_musl", 64*cda5da8dSAndroid Build Coastguard Worker "CrossHostArch": "arm64", 65*cda5da8dSAndroid Build Coastguard Worker "CrossHostSecondaryArch": "arm", 66*cda5da8dSAndroid Build Coastguard WorkerEOF 67*cda5da8dSAndroid Build Coastguard Worker ) 68*cda5da8dSAndroid Build Coastguard Workerelif [[ ${OS} = darwin ]]; then 69*cda5da8dSAndroid Build Coastguard Worker cross_compile=$(cat <<EOF 70*cda5da8dSAndroid Build Coastguard Worker "CrossHost": "darwin", 71*cda5da8dSAndroid Build Coastguard Worker "CrossHostArch": "arm64", 72*cda5da8dSAndroid Build Coastguard WorkerEOF 73*cda5da8dSAndroid Build Coastguard Worker ) 74*cda5da8dSAndroid Build Coastguard Workerfi 75*cda5da8dSAndroid Build Coastguard Worker 76*cda5da8dSAndroid Build Coastguard Worker# Use toybox and other prebuilts even outside of the build (test running, go, etc) 77*cda5da8dSAndroid Build Coastguard Workerexport PATH=${TOP}/prebuilts/build-tools/path/${OS}-x86:$PATH 78*cda5da8dSAndroid Build Coastguard Worker 79*cda5da8dSAndroid Build Coastguard Workerif [ -n "${build_soong}" ]; then 80*cda5da8dSAndroid Build Coastguard Worker SOONG_OUT=${OUT_DIR}/soong 81*cda5da8dSAndroid Build Coastguard Worker SOONG_HOST_OUT=${OUT_DIR}/soong/host/${OS}-x86 82*cda5da8dSAndroid Build Coastguard Worker [[ -z "${clean}" ]] || rm -rf ${SOONG_OUT} 83*cda5da8dSAndroid Build Coastguard Worker mkdir -p ${SOONG_OUT} 84*cda5da8dSAndroid Build Coastguard Worker rm -rf ${SOONG_OUT}/dist ${SOONG_OUT}/dist-common ${SOONG_OUT}/dist-arm64 85*cda5da8dSAndroid Build Coastguard Worker cat > ${SOONG_OUT}/soong.variables.tmp << EOF 86*cda5da8dSAndroid Build Coastguard Worker{ 87*cda5da8dSAndroid Build Coastguard Worker "Allow_missing_dependencies": true, 88*cda5da8dSAndroid Build Coastguard Worker "HostArch":"x86_64", 89*cda5da8dSAndroid Build Coastguard Worker ${secondary_arch} 90*cda5da8dSAndroid Build Coastguard Worker ${cross_compile} 91*cda5da8dSAndroid Build Coastguard Worker "HostMusl": $use_musl, 92*cda5da8dSAndroid Build Coastguard Worker "VendorVars": { 93*cda5da8dSAndroid Build Coastguard Worker "cpython3": { 94*cda5da8dSAndroid Build Coastguard Worker "force_build_host": "true" 95*cda5da8dSAndroid Build Coastguard Worker }, 96*cda5da8dSAndroid Build Coastguard Worker "art_module": { 97*cda5da8dSAndroid Build Coastguard Worker "source_build": "true" 98*cda5da8dSAndroid Build Coastguard Worker } 99*cda5da8dSAndroid Build Coastguard Worker }, 100*cda5da8dSAndroid Build Coastguard Worker "VendorVarTypes": { 101*cda5da8dSAndroid Build Coastguard Worker "cpython3": { 102*cda5da8dSAndroid Build Coastguard Worker "force_build_host": "bool" 103*cda5da8dSAndroid Build Coastguard Worker } 104*cda5da8dSAndroid Build Coastguard Worker } 105*cda5da8dSAndroid Build Coastguard Worker} 106*cda5da8dSAndroid Build Coastguard WorkerEOF 107*cda5da8dSAndroid Build Coastguard Worker if cmp -s ${SOONG_OUT}/soong.variables.tmp ${SOONG_OUT}/soong.variables; then 108*cda5da8dSAndroid Build Coastguard Worker rm ${SOONG_OUT}/soong.variables.tmp 109*cda5da8dSAndroid Build Coastguard Worker else 110*cda5da8dSAndroid Build Coastguard Worker mv -f ${SOONG_OUT}/soong.variables.tmp ${SOONG_OUT}/soong.variables 111*cda5da8dSAndroid Build Coastguard Worker fi 112*cda5da8dSAndroid Build Coastguard Worker SOONG_GO_BINARIES=( 113*cda5da8dSAndroid Build Coastguard Worker bpfmt 114*cda5da8dSAndroid Build Coastguard Worker go_extractor 115*cda5da8dSAndroid Build Coastguard Worker kotlinc_extractor 116*cda5da8dSAndroid Build Coastguard Worker merge_zips 117*cda5da8dSAndroid Build Coastguard Worker soong_zip 118*cda5da8dSAndroid Build Coastguard Worker runextractor 119*cda5da8dSAndroid Build Coastguard Worker rust_extractor 120*cda5da8dSAndroid Build Coastguard Worker zip2zip 121*cda5da8dSAndroid Build Coastguard Worker ) 122*cda5da8dSAndroid Build Coastguard Worker SOONG_BINARIES=( 123*cda5da8dSAndroid Build Coastguard Worker aconfig 124*cda5da8dSAndroid Build Coastguard Worker acp 125*cda5da8dSAndroid Build Coastguard Worker aidl 126*cda5da8dSAndroid Build Coastguard Worker bison 127*cda5da8dSAndroid Build Coastguard Worker bloaty 128*cda5da8dSAndroid Build Coastguard Worker brotli 129*cda5da8dSAndroid Build Coastguard Worker bzip2 130*cda5da8dSAndroid Build Coastguard Worker ckati 131*cda5da8dSAndroid Build Coastguard Worker edit_monitor 132*cda5da8dSAndroid Build Coastguard Worker flex 133*cda5da8dSAndroid Build Coastguard Worker gavinhoward-bc 134*cda5da8dSAndroid Build Coastguard Worker hidl-gen 135*cda5da8dSAndroid Build Coastguard Worker hidl-lint 136*cda5da8dSAndroid Build Coastguard Worker m4 137*cda5da8dSAndroid Build Coastguard Worker make 138*cda5da8dSAndroid Build Coastguard Worker n2 139*cda5da8dSAndroid Build Coastguard Worker ninja 140*cda5da8dSAndroid Build Coastguard Worker one-true-awk 141*cda5da8dSAndroid Build Coastguard Worker openssl 142*cda5da8dSAndroid Build Coastguard Worker py3-cmd 143*cda5da8dSAndroid Build Coastguard Worker py3-launcher64 144*cda5da8dSAndroid Build Coastguard Worker py3-launcher-autorun64 145*cda5da8dSAndroid Build Coastguard Worker tool_event_logger 146*cda5da8dSAndroid Build Coastguard Worker toybox 147*cda5da8dSAndroid Build Coastguard Worker xz 148*cda5da8dSAndroid Build Coastguard Worker zipalign 149*cda5da8dSAndroid Build Coastguard Worker ziptime 150*cda5da8dSAndroid Build Coastguard Worker ziptool 151*cda5da8dSAndroid Build Coastguard Worker ) 152*cda5da8dSAndroid Build Coastguard Worker SOONG_MUSL_BINARIES=( 153*cda5da8dSAndroid Build Coastguard Worker py3-launcher-static64 154*cda5da8dSAndroid Build Coastguard Worker py3-launcher-autorun-static64 155*cda5da8dSAndroid Build Coastguard Worker ) 156*cda5da8dSAndroid Build Coastguard Worker SOONG_ASAN_BINARIES=( 157*cda5da8dSAndroid Build Coastguard Worker acp 158*cda5da8dSAndroid Build Coastguard Worker aidl 159*cda5da8dSAndroid Build Coastguard Worker ckati 160*cda5da8dSAndroid Build Coastguard Worker gavinhoward-bc 161*cda5da8dSAndroid Build Coastguard Worker ninja 162*cda5da8dSAndroid Build Coastguard Worker toybox 163*cda5da8dSAndroid Build Coastguard Worker zipalign 164*cda5da8dSAndroid Build Coastguard Worker ziptime 165*cda5da8dSAndroid Build Coastguard Worker ziptool 166*cda5da8dSAndroid Build Coastguard Worker ) 167*cda5da8dSAndroid Build Coastguard Worker SOONG_JAVA_LIBRARIES=( 168*cda5da8dSAndroid Build Coastguard Worker desugar.jar 169*cda5da8dSAndroid Build Coastguard Worker dx.jar 170*cda5da8dSAndroid Build Coastguard Worker javac_extractor.jar 171*cda5da8dSAndroid Build Coastguard Worker ktfmt.jar 172*cda5da8dSAndroid Build Coastguard Worker turbine.jar 173*cda5da8dSAndroid Build Coastguard Worker ) 174*cda5da8dSAndroid Build Coastguard Worker SOONG_JAVA_WRAPPERS=( 175*cda5da8dSAndroid Build Coastguard Worker dx 176*cda5da8dSAndroid Build Coastguard Worker ) 177*cda5da8dSAndroid Build Coastguard Worker if [[ $OS == "linux" ]]; then 178*cda5da8dSAndroid Build Coastguard Worker SOONG_BINARIES+=( 179*cda5da8dSAndroid Build Coastguard Worker create_minidebuginfo 180*cda5da8dSAndroid Build Coastguard Worker nsjail 181*cda5da8dSAndroid Build Coastguard Worker py2-cmd 182*cda5da8dSAndroid Build Coastguard Worker ) 183*cda5da8dSAndroid Build Coastguard Worker fi 184*cda5da8dSAndroid Build Coastguard Worker 185*cda5da8dSAndroid Build Coastguard Worker go_binaries="${SOONG_GO_BINARIES[@]/#/${SOONG_HOST_OUT}/bin/}" 186*cda5da8dSAndroid Build Coastguard Worker binaries="${SOONG_BINARIES[@]/#/${SOONG_HOST_OUT}/bin/}" 187*cda5da8dSAndroid Build Coastguard Worker asan_binaries="${SOONG_ASAN_BINARIES[@]/#/${SOONG_HOST_OUT}/bin/}" 188*cda5da8dSAndroid Build Coastguard Worker jars="${SOONG_JAVA_LIBRARIES[@]/#/${SOONG_HOST_OUT}/framework/}" 189*cda5da8dSAndroid Build Coastguard Worker wrappers="${SOONG_JAVA_WRAPPERS[@]/#/${SOONG_HOST_OUT}/bin/}" 190*cda5da8dSAndroid Build Coastguard Worker 191*cda5da8dSAndroid Build Coastguard Worker # TODO: When we have a better method of extracting zips from Soong, use that. 192*cda5da8dSAndroid Build Coastguard Worker py3_stdlib_zip="${SOONG_OUT}/.intermediates/external/python/cpython3/Lib/py3-stdlib-zip/gen/py3-stdlib.zip" 193*cda5da8dSAndroid Build Coastguard Worker 194*cda5da8dSAndroid Build Coastguard Worker musl_x86_sysroot="" 195*cda5da8dSAndroid Build Coastguard Worker musl_x86_64_sysroot="" 196*cda5da8dSAndroid Build Coastguard Worker musl_arm_sysroot="" 197*cda5da8dSAndroid Build Coastguard Worker musl_arm64_sysroot="" 198*cda5da8dSAndroid Build Coastguard Worker cross_binaries="" 199*cda5da8dSAndroid Build Coastguard Worker if [[ ${use_musl} = "true" ]]; then 200*cda5da8dSAndroid Build Coastguard Worker binaries="${binaries} ${SOONG_MUSL_BINARIES[@]/#/${SOONG_HOST_OUT}/bin/}" 201*cda5da8dSAndroid Build Coastguard Worker musl_x86_sysroot="${SOONG_OUT}/.intermediates/external/musl/libc_musl_sysroot/linux_musl_x86/gen/libc_musl_sysroot.zip" 202*cda5da8dSAndroid Build Coastguard Worker musl_x86_64_sysroot="${SOONG_OUT}/.intermediates/external/musl/libc_musl_sysroot/linux_musl_x86_64/gen/libc_musl_sysroot.zip" 203*cda5da8dSAndroid Build Coastguard Worker 204*cda5da8dSAndroid Build Coastguard Worker # Build cross-compiled musl arm64 binaries, except for go binaries 205*cda5da8dSAndroid Build Coastguard Worker # since Blueprint doesn't have cross compilation support for them. 206*cda5da8dSAndroid Build Coastguard Worker SOONG_HOST_ARM_OUT=${OUT_DIR}/soong/host/linux-arm64 207*cda5da8dSAndroid Build Coastguard Worker cross_binaries="${SOONG_BINARIES[@]/#/${SOONG_HOST_ARM_OUT}/bin/}" 208*cda5da8dSAndroid Build Coastguard Worker cross_binaries="${cross_binaries} ${SOONG_MUSL_BINARIES[@]/#/${SOONG_HOST_ARM_OUT}/bin/}" 209*cda5da8dSAndroid Build Coastguard Worker 210*cda5da8dSAndroid Build Coastguard Worker musl_arm_sysroot="${SOONG_OUT}/.intermediates/external/musl/libc_musl_sysroot/linux_musl_arm/gen/libc_musl_sysroot.zip" 211*cda5da8dSAndroid Build Coastguard Worker musl_arm64_sysroot="${SOONG_OUT}/.intermediates/external/musl/libc_musl_sysroot/linux_musl_arm64/gen/libc_musl_sysroot.zip" 212*cda5da8dSAndroid Build Coastguard Worker fi 213*cda5da8dSAndroid Build Coastguard Worker 214*cda5da8dSAndroid Build Coastguard Worker # Build everything 215*cda5da8dSAndroid Build Coastguard Worker build/soong/soong_ui.bash --make-mode --soong-only --skip-config ${skip_soong_tests} \ 216*cda5da8dSAndroid Build Coastguard Worker ${go_binaries} \ 217*cda5da8dSAndroid Build Coastguard Worker ${binaries} \ 218*cda5da8dSAndroid Build Coastguard Worker ${cross_binaries} \ 219*cda5da8dSAndroid Build Coastguard Worker ${wrappers} \ 220*cda5da8dSAndroid Build Coastguard Worker ${jars} \ 221*cda5da8dSAndroid Build Coastguard Worker ${py3_stdlib_zip} \ 222*cda5da8dSAndroid Build Coastguard Worker ${musl_x86_sysroot} \ 223*cda5da8dSAndroid Build Coastguard Worker ${musl_x86_64_sysroot} \ 224*cda5da8dSAndroid Build Coastguard Worker ${musl_arm_sysroot} \ 225*cda5da8dSAndroid Build Coastguard Worker ${musl_arm64_sysroot} \ 226*cda5da8dSAndroid Build Coastguard Worker ${SOONG_HOST_OUT}/nativetest64/n2_e2e_tests/n2_e2e_tests \ 227*cda5da8dSAndroid Build Coastguard Worker ${SOONG_HOST_OUT}/nativetest64/n2_unit_tests/n2_unit_tests \ 228*cda5da8dSAndroid Build Coastguard Worker ${SOONG_HOST_OUT}/nativetest64/ninja_test/ninja_test \ 229*cda5da8dSAndroid Build Coastguard Worker ${SOONG_HOST_OUT}/nativetest64/ckati_find_test/ckati_find_test \ 230*cda5da8dSAndroid Build Coastguard Worker ${SOONG_HOST_OUT}/nativetest64/par_test/par_test \ 231*cda5da8dSAndroid Build Coastguard Worker soong_docs 232*cda5da8dSAndroid Build Coastguard Worker 233*cda5da8dSAndroid Build Coastguard Worker # Run ninja tests 234*cda5da8dSAndroid Build Coastguard Worker ${SOONG_HOST_OUT}/nativetest64/ninja_test/ninja_test 235*cda5da8dSAndroid Build Coastguard Worker 236*cda5da8dSAndroid Build Coastguard Worker # Run n2 tests 237*cda5da8dSAndroid Build Coastguard Worker timeout -v -k 10 300 ${SOONG_HOST_OUT}/nativetest64/n2_unit_tests/n2_unit_tests 238*cda5da8dSAndroid Build Coastguard Worker N2_PATH=${SOONG_HOST_OUT}/bin/n2 timeout -v -k 10 300 ${SOONG_HOST_OUT}/nativetest64/n2_e2e_tests/n2_e2e_tests 239*cda5da8dSAndroid Build Coastguard Worker 240*cda5da8dSAndroid Build Coastguard Worker # Run ckati tests 241*cda5da8dSAndroid Build Coastguard Worker ${SOONG_HOST_OUT}/nativetest64/ckati_find_test/ckati_find_test 242*cda5da8dSAndroid Build Coastguard Worker 243*cda5da8dSAndroid Build Coastguard Worker # Run python par/py*-cmd tests 244*cda5da8dSAndroid Build Coastguard Worker ANDROID_HOST_OUT=${PWD}/${SOONG_HOST_OUT} build/soong/python/tests/runtest.sh 245*cda5da8dSAndroid Build Coastguard Worker 246*cda5da8dSAndroid Build Coastguard Worker # Copy arch-specific binaries 247*cda5da8dSAndroid Build Coastguard Worker mkdir -p ${SOONG_OUT}/dist/bin 248*cda5da8dSAndroid Build Coastguard Worker cp ${go_binaries} ${binaries} ${SOONG_OUT}/dist/bin/ 249*cda5da8dSAndroid Build Coastguard Worker cp -R ${SOONG_HOST_OUT}/lib* ${SOONG_OUT}/dist/ 250*cda5da8dSAndroid Build Coastguard Worker 251*cda5da8dSAndroid Build Coastguard Worker # Copy cross-compiled binaries 252*cda5da8dSAndroid Build Coastguard Worker if [[ ${use_musl} = "true" ]]; then 253*cda5da8dSAndroid Build Coastguard Worker mkdir -p ${SOONG_OUT}/dist-arm64/bin 254*cda5da8dSAndroid Build Coastguard Worker cp ${cross_binaries} ${SOONG_OUT}/dist-arm64/bin/ 255*cda5da8dSAndroid Build Coastguard Worker cp -R ${SOONG_HOST_ARM_OUT}/lib* ${SOONG_OUT}/dist-arm64/ 256*cda5da8dSAndroid Build Coastguard Worker fi 257*cda5da8dSAndroid Build Coastguard Worker 258*cda5da8dSAndroid Build Coastguard Worker # Copy jars and wrappers 259*cda5da8dSAndroid Build Coastguard Worker mkdir -p ${SOONG_OUT}/dist-common/{bin,flex,framework,py3-stdlib} 260*cda5da8dSAndroid Build Coastguard Worker cp ${wrappers} ${SOONG_OUT}/dist-common/bin 261*cda5da8dSAndroid Build Coastguard Worker cp ${jars} ${SOONG_OUT}/dist-common/framework 262*cda5da8dSAndroid Build Coastguard Worker 263*cda5da8dSAndroid Build Coastguard Worker cp -r external/bison/data ${SOONG_OUT}/dist-common/bison 264*cda5da8dSAndroid Build Coastguard Worker cp external/bison/NOTICE ${SOONG_OUT}/dist-common/bison/ 265*cda5da8dSAndroid Build Coastguard Worker cp -r external/flex/src/FlexLexer.h ${SOONG_OUT}/dist-common/flex/ 266*cda5da8dSAndroid Build Coastguard Worker cp external/flex/NOTICE ${SOONG_OUT}/dist-common/flex/ 267*cda5da8dSAndroid Build Coastguard Worker 268*cda5da8dSAndroid Build Coastguard Worker unzip -q -d ${SOONG_OUT}/dist-common/py3-stdlib ${py3_stdlib_zip} 269*cda5da8dSAndroid Build Coastguard Worker cp external/python/cpython3/LICENSE ${SOONG_OUT}/dist-common/py3-stdlib/ 270*cda5da8dSAndroid Build Coastguard Worker 271*cda5da8dSAndroid Build Coastguard Worker if [[ ${use_musl} = "true" ]]; then 272*cda5da8dSAndroid Build Coastguard Worker cp ${musl_x86_64_sysroot} ${SOONG_OUT}/musl-sysroot-x86_64-unknown-linux-musl.zip 273*cda5da8dSAndroid Build Coastguard Worker cp ${musl_x86_sysroot} ${SOONG_OUT}/musl-sysroot-i686-unknown-linux-musl.zip 274*cda5da8dSAndroid Build Coastguard Worker cp ${musl_arm_sysroot} ${SOONG_OUT}/musl-sysroot-arm-unknown-linux-musleabihf.zip 275*cda5da8dSAndroid Build Coastguard Worker cp ${musl_arm64_sysroot} ${SOONG_OUT}/musl-sysroot-aarch64-unknown-linux-musl.zip 276*cda5da8dSAndroid Build Coastguard Worker fi 277*cda5da8dSAndroid Build Coastguard Worker 278*cda5da8dSAndroid Build Coastguard Worker 279*cda5da8dSAndroid Build Coastguard Worker if [[ $OS == "linux" && -n "${build_asan}" ]]; then 280*cda5da8dSAndroid Build Coastguard Worker # Build ASAN versions 281*cda5da8dSAndroid Build Coastguard Worker export ASAN_OPTIONS=detect_leaks=0 282*cda5da8dSAndroid Build Coastguard Worker cat > ${SOONG_OUT}/soong.variables << EOF 283*cda5da8dSAndroid Build Coastguard Worker{ 284*cda5da8dSAndroid Build Coastguard Worker "Allow_missing_dependencies": true, 285*cda5da8dSAndroid Build Coastguard Worker "HostArch":"x86_64", 286*cda5da8dSAndroid Build Coastguard Worker ${secondary_arch} 287*cda5da8dSAndroid Build Coastguard Worker "SanitizeHost": ["address"], 288*cda5da8dSAndroid Build Coastguard Worker "VendorVars": { 289*cda5da8dSAndroid Build Coastguard Worker "art_module": { 290*cda5da8dSAndroid Build Coastguard Worker "source_build": "true" 291*cda5da8dSAndroid Build Coastguard Worker } 292*cda5da8dSAndroid Build Coastguard Worker } 293*cda5da8dSAndroid Build Coastguard Worker} 294*cda5da8dSAndroid Build Coastguard WorkerEOF 295*cda5da8dSAndroid Build Coastguard Worker 296*cda5da8dSAndroid Build Coastguard Worker export ASAN_SYMBOLIZER_PATH=${PWD}/prebuilts/clang/host/linux-x86/llvm-binutils-stable/llvm-symbolizer 297*cda5da8dSAndroid Build Coastguard Worker 298*cda5da8dSAndroid Build Coastguard Worker # Clean up non-ASAN installed versions 299*cda5da8dSAndroid Build Coastguard Worker rm -rf ${SOONG_HOST_OUT} 300*cda5da8dSAndroid Build Coastguard Worker 301*cda5da8dSAndroid Build Coastguard Worker # Build everything with ASAN 302*cda5da8dSAndroid Build Coastguard Worker build/soong/soong_ui.bash --make-mode --soong-only --skip-config ${skip_soong_tests} \ 303*cda5da8dSAndroid Build Coastguard Worker ${asan_binaries} \ 304*cda5da8dSAndroid Build Coastguard Worker ${SOONG_HOST_OUT}/nativetest64/ninja_test/ninja_test \ 305*cda5da8dSAndroid Build Coastguard Worker ${SOONG_HOST_OUT}/nativetest64/ckati_find_test/ckati_find_test 306*cda5da8dSAndroid Build Coastguard Worker 307*cda5da8dSAndroid Build Coastguard Worker # Run ninja tests 308*cda5da8dSAndroid Build Coastguard Worker ${SOONG_HOST_OUT}/nativetest64/ninja_test/ninja_test 309*cda5da8dSAndroid Build Coastguard Worker 310*cda5da8dSAndroid Build Coastguard Worker # Run ckati tests 311*cda5da8dSAndroid Build Coastguard Worker ${SOONG_HOST_OUT}/nativetest64/ckati_find_test/ckati_find_test 312*cda5da8dSAndroid Build Coastguard Worker 313*cda5da8dSAndroid Build Coastguard Worker # Copy arch-specific binaries 314*cda5da8dSAndroid Build Coastguard Worker mkdir -p ${SOONG_OUT}/dist/asan/bin 315*cda5da8dSAndroid Build Coastguard Worker cp ${asan_binaries} ${SOONG_OUT}/dist/asan/bin/ 316*cda5da8dSAndroid Build Coastguard Worker cp -R ${SOONG_HOST_OUT}/lib* ${SOONG_OUT}/dist/asan/ 317*cda5da8dSAndroid Build Coastguard Worker fi 318*cda5da8dSAndroid Build Coastguard Worker 319*cda5da8dSAndroid Build Coastguard Worker # Package arch-specific prebuilts 320*cda5da8dSAndroid Build Coastguard Worker ( 321*cda5da8dSAndroid Build Coastguard Worker cd ${SOONG_OUT}/dist 322*cda5da8dSAndroid Build Coastguard Worker zip -qryX build-prebuilts.zip * 323*cda5da8dSAndroid Build Coastguard Worker ) 324*cda5da8dSAndroid Build Coastguard Worker 325*cda5da8dSAndroid Build Coastguard Worker if [[ ${use_musl} = "true" ]]; then 326*cda5da8dSAndroid Build Coastguard Worker # Package cross-compiled prebuilts 327*cda5da8dSAndroid Build Coastguard Worker ( 328*cda5da8dSAndroid Build Coastguard Worker cd ${SOONG_OUT}/dist-arm64 329*cda5da8dSAndroid Build Coastguard Worker zip -qryX build-arm64-prebuilts.zip * 330*cda5da8dSAndroid Build Coastguard Worker ) 331*cda5da8dSAndroid Build Coastguard Worker fi 332*cda5da8dSAndroid Build Coastguard Worker 333*cda5da8dSAndroid Build Coastguard Worker # Package common prebuilts 334*cda5da8dSAndroid Build Coastguard Worker ( 335*cda5da8dSAndroid Build Coastguard Worker cd ${SOONG_OUT}/dist-common 336*cda5da8dSAndroid Build Coastguard Worker zip -qryX build-common-prebuilts.zip * 337*cda5da8dSAndroid Build Coastguard Worker ) 338*cda5da8dSAndroid Build Coastguard Workerfi 339*cda5da8dSAndroid Build Coastguard Worker 340*cda5da8dSAndroid Build Coastguard Workerif [ -z "${skip_soong_tests}" ]; then 341*cda5da8dSAndroid Build Coastguard Worker build/soong/scripts/run-soong-tests-with-go-tools.sh 342*cda5da8dSAndroid Build Coastguard Workerfi 343*cda5da8dSAndroid Build Coastguard Worker 344*cda5da8dSAndroid Build Coastguard Worker# Go 345*cda5da8dSAndroid Build Coastguard Workerif [ -n "${build_go}" ]; then 346*cda5da8dSAndroid Build Coastguard Worker GO_OUT=${OUT_DIR}/obj/go 347*cda5da8dSAndroid Build Coastguard Worker rm -rf ${GO_OUT} 348*cda5da8dSAndroid Build Coastguard Worker mkdir -p ${GO_OUT} 349*cda5da8dSAndroid Build Coastguard Worker cp -a ${TOP}/toolchain/go/* ${GO_OUT}/ 350*cda5da8dSAndroid Build Coastguard Worker ( 351*cda5da8dSAndroid Build Coastguard Worker cd ${GO_OUT}/src 352*cda5da8dSAndroid Build Coastguard Worker export GOROOT_BOOTSTRAP=${TOP}/prebuilts/go/${OS}-x86 353*cda5da8dSAndroid Build Coastguard Worker export GOROOT_FINAL=./prebuilts/go/${OS}-x86 354*cda5da8dSAndroid Build Coastguard Worker export GO_TEST_TIMEOUT_SCALE=100 355*cda5da8dSAndroid Build Coastguard Worker export GODEBUG=installgoroot=all 356*cda5da8dSAndroid Build Coastguard Worker ./make.bash 357*cda5da8dSAndroid Build Coastguard Worker rm -rf ../pkg/bootstrap 358*cda5da8dSAndroid Build Coastguard Worker rm -rf ../pkg/obj 359*cda5da8dSAndroid Build Coastguard Worker GOROOT=$(pwd)/.. ../bin/go install -race std 360*cda5da8dSAndroid Build Coastguard Worker ) 361*cda5da8dSAndroid Build Coastguard Worker ( 362*cda5da8dSAndroid Build Coastguard Worker cd ${GO_OUT} 363*cda5da8dSAndroid Build Coastguard Worker zip -qryX go.zip * --exclude update_prebuilts.sh 364*cda5da8dSAndroid Build Coastguard Worker ) 365*cda5da8dSAndroid Build Coastguard Workerfi 366*cda5da8dSAndroid Build Coastguard Worker 367*cda5da8dSAndroid Build Coastguard Workerif [ -n "${DIST_DIR}" ]; then 368*cda5da8dSAndroid Build Coastguard Worker mkdir -p ${DIST_DIR} || true 369*cda5da8dSAndroid Build Coastguard Worker 370*cda5da8dSAndroid Build Coastguard Worker if [ -n "${build_soong}" ]; then 371*cda5da8dSAndroid Build Coastguard Worker cp ${SOONG_OUT}/dist/build-prebuilts.zip ${DIST_DIR}/ 372*cda5da8dSAndroid Build Coastguard Worker cp ${SOONG_OUT}/dist-common/build-common-prebuilts.zip ${DIST_DIR}/ 373*cda5da8dSAndroid Build Coastguard Worker cp ${SOONG_OUT}/docs/*.html ${DIST_DIR}/ 374*cda5da8dSAndroid Build Coastguard Worker if [ ${use_musl} = "true" ]; then 375*cda5da8dSAndroid Build Coastguard Worker cp ${SOONG_OUT}/dist-arm64/build-arm64-prebuilts.zip ${DIST_DIR}/ 376*cda5da8dSAndroid Build Coastguard Worker 377*cda5da8dSAndroid Build Coastguard Worker cp ${SOONG_OUT}/musl-sysroot-x86_64-unknown-linux-musl.zip ${DIST_DIR}/ 378*cda5da8dSAndroid Build Coastguard Worker cp ${SOONG_OUT}/musl-sysroot-i686-unknown-linux-musl.zip ${DIST_DIR}/ 379*cda5da8dSAndroid Build Coastguard Worker cp ${SOONG_OUT}/musl-sysroot-arm-unknown-linux-musleabihf.zip ${DIST_DIR}/ 380*cda5da8dSAndroid Build Coastguard Worker cp ${SOONG_OUT}/musl-sysroot-aarch64-unknown-linux-musl.zip ${DIST_DIR}/ 381*cda5da8dSAndroid Build Coastguard Worker fi 382*cda5da8dSAndroid Build Coastguard Worker fi 383*cda5da8dSAndroid Build Coastguard Worker if [ -n "${build_go}" ]; then 384*cda5da8dSAndroid Build Coastguard Worker cp ${GO_OUT}/go.zip ${DIST_DIR}/ 385*cda5da8dSAndroid Build Coastguard Worker fi 386*cda5da8dSAndroid Build Coastguard Workerfi 387