1*00c7fec1SAndroid Build Coastguard Worker// Copyright 2019 The Android Open Source Project 2*00c7fec1SAndroid Build Coastguard Worker// 3*00c7fec1SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License"); 4*00c7fec1SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License. 5*00c7fec1SAndroid Build Coastguard Worker// You may obtain a copy of the License at 6*00c7fec1SAndroid Build Coastguard Worker// 7*00c7fec1SAndroid Build Coastguard Worker// http://www.apache.org/licenses/LICENSE-2.0 8*00c7fec1SAndroid Build Coastguard Worker// 9*00c7fec1SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software 10*00c7fec1SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS, 11*00c7fec1SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*00c7fec1SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and 13*00c7fec1SAndroid Build Coastguard Worker// limitations under the License. 14*00c7fec1SAndroid Build Coastguard Worker 15*00c7fec1SAndroid Build Coastguard Workerpackage { 16*00c7fec1SAndroid Build Coastguard Worker default_applicable_licenses: ["Android-Apache-2.0"], 17*00c7fec1SAndroid Build Coastguard Worker} 18*00c7fec1SAndroid Build Coastguard Worker 19*00c7fec1SAndroid Build Coastguard Workerprebuilt_etc { 20*00c7fec1SAndroid Build Coastguard Worker name: "init.boringssl.zygote64_32.rc", 21*00c7fec1SAndroid Build Coastguard Worker src: "init.boringssl.zygote64_32.rc", 22*00c7fec1SAndroid Build Coastguard Worker sub_dir: "init/hw", 23*00c7fec1SAndroid Build Coastguard Worker symlinks: [ 24*00c7fec1SAndroid Build Coastguard Worker "init.boringssl.zygote32.rc", 25*00c7fec1SAndroid Build Coastguard Worker "init.boringssl.no_zygote.rc", 26*00c7fec1SAndroid Build Coastguard Worker ], 27*00c7fec1SAndroid Build Coastguard Worker} 28*00c7fec1SAndroid Build Coastguard Worker 29*00c7fec1SAndroid Build Coastguard Workerprebuilt_etc { 30*00c7fec1SAndroid Build Coastguard Worker name: "init.boringssl.zygote64.rc", 31*00c7fec1SAndroid Build Coastguard Worker src: "init.boringssl.zygote64.rc", 32*00c7fec1SAndroid Build Coastguard Worker sub_dir: "init/hw", 33*00c7fec1SAndroid Build Coastguard Worker} 34*00c7fec1SAndroid Build Coastguard Worker 35*00c7fec1SAndroid Build Coastguard Workerprebuilt_etc { 36*00c7fec1SAndroid Build Coastguard Worker name: "init.rc", 37*00c7fec1SAndroid Build Coastguard Worker src: "init.rc", 38*00c7fec1SAndroid Build Coastguard Worker sub_dir: "init/hw", 39*00c7fec1SAndroid Build Coastguard Worker required: [ 40*00c7fec1SAndroid Build Coastguard Worker "fsverity_init", 41*00c7fec1SAndroid Build Coastguard Worker "platform-bootclasspath", 42*00c7fec1SAndroid Build Coastguard Worker "init.boringssl.zygote64.rc", 43*00c7fec1SAndroid Build Coastguard Worker "init.boringssl.zygote64_32.rc", 44*00c7fec1SAndroid Build Coastguard Worker ], 45*00c7fec1SAndroid Build Coastguard Worker} 46*00c7fec1SAndroid Build Coastguard Worker 47*00c7fec1SAndroid Build Coastguard Workerprebuilt_etc { 48*00c7fec1SAndroid Build Coastguard Worker name: "ueventd.rc", 49*00c7fec1SAndroid Build Coastguard Worker src: "ueventd.rc", 50*00c7fec1SAndroid Build Coastguard Worker recovery_available: true, 51*00c7fec1SAndroid Build Coastguard Worker} 52*00c7fec1SAndroid Build Coastguard Worker 53*00c7fec1SAndroid Build Coastguard Workerfilegroup { 54*00c7fec1SAndroid Build Coastguard Worker name: "system_linker_config_json_file", 55*00c7fec1SAndroid Build Coastguard Worker srcs: ["etc/linker.config.json"], 56*00c7fec1SAndroid Build Coastguard Worker} 57*00c7fec1SAndroid Build Coastguard Worker 58*00c7fec1SAndroid Build Coastguard Worker// TODO(b/147210213) Generate list of libraries during build and fill in at build time 59*00c7fec1SAndroid Build Coastguard Workerlinker_config { 60*00c7fec1SAndroid Build Coastguard Worker name: "system_linker_config", 61*00c7fec1SAndroid Build Coastguard Worker src: ":system_linker_config_json_file", 62*00c7fec1SAndroid Build Coastguard Worker installable: false, 63*00c7fec1SAndroid Build Coastguard Worker} 64*00c7fec1SAndroid Build Coastguard Worker 65*00c7fec1SAndroid Build Coastguard Worker// TODO(b/185211376) Scope the native APIs that microdroid will provide to the app payload 66*00c7fec1SAndroid Build Coastguard Workerprebuilt_etc { 67*00c7fec1SAndroid Build Coastguard Worker name: "public.libraries.android.txt", 68*00c7fec1SAndroid Build Coastguard Worker src: "etc/public.libraries.android.txt", 69*00c7fec1SAndroid Build Coastguard Worker filename: "public.libraries.txt", 70*00c7fec1SAndroid Build Coastguard Worker no_full_install: true, 71*00c7fec1SAndroid Build Coastguard Worker} 72*00c7fec1SAndroid Build Coastguard Worker 73*00c7fec1SAndroid Build Coastguard Worker// adb_debug.prop in debug ramdisk 74*00c7fec1SAndroid Build Coastguard Workerprebuilt_root { 75*00c7fec1SAndroid Build Coastguard Worker name: "adb_debug.prop", 76*00c7fec1SAndroid Build Coastguard Worker src: "adb_debug.prop", 77*00c7fec1SAndroid Build Coastguard Worker debug_ramdisk: true, 78*00c7fec1SAndroid Build Coastguard Worker} 79*00c7fec1SAndroid Build Coastguard Worker 80*00c7fec1SAndroid Build Coastguard Workerprebuilt_etc { 81*00c7fec1SAndroid Build Coastguard Worker name: "init.zygote64.rc", 82*00c7fec1SAndroid Build Coastguard Worker src: "init.zygote64.rc", 83*00c7fec1SAndroid Build Coastguard Worker sub_dir: "init/hw", 84*00c7fec1SAndroid Build Coastguard Worker} 85*00c7fec1SAndroid Build Coastguard Worker 86*00c7fec1SAndroid Build Coastguard Workerprebuilt_etc { 87*00c7fec1SAndroid Build Coastguard Worker name: "init.zygote32.rc", 88*00c7fec1SAndroid Build Coastguard Worker src: "init.zygote32.rc", 89*00c7fec1SAndroid Build Coastguard Worker sub_dir: "init/hw", 90*00c7fec1SAndroid Build Coastguard Worker} 91*00c7fec1SAndroid Build Coastguard Worker 92*00c7fec1SAndroid Build Coastguard Workerprebuilt_etc { 93*00c7fec1SAndroid Build Coastguard Worker name: "init.zygote64_32.rc", 94*00c7fec1SAndroid Build Coastguard Worker src: "init.zygote64_32.rc", 95*00c7fec1SAndroid Build Coastguard Worker sub_dir: "init/hw", 96*00c7fec1SAndroid Build Coastguard Worker} 97*00c7fec1SAndroid Build Coastguard Worker 98*00c7fec1SAndroid Build Coastguard Workerprebuilt_etc { 99*00c7fec1SAndroid Build Coastguard Worker name: "init.usb.rc", 100*00c7fec1SAndroid Build Coastguard Worker src: "init.usb.rc", 101*00c7fec1SAndroid Build Coastguard Worker sub_dir: "init/hw", 102*00c7fec1SAndroid Build Coastguard Worker} 103*00c7fec1SAndroid Build Coastguard Worker 104*00c7fec1SAndroid Build Coastguard Workerprebuilt_etc { 105*00c7fec1SAndroid Build Coastguard Worker name: "init.usb.configfs.rc", 106*00c7fec1SAndroid Build Coastguard Worker src: "init.usb.configfs.rc", 107*00c7fec1SAndroid Build Coastguard Worker sub_dir: "init/hw", 108*00c7fec1SAndroid Build Coastguard Worker} 109*00c7fec1SAndroid Build Coastguard Worker 110*00c7fec1SAndroid Build Coastguard Workerprebuilt_etc { 111*00c7fec1SAndroid Build Coastguard Worker name: "etc_hosts", 112*00c7fec1SAndroid Build Coastguard Worker src: "etc/hosts", 113*00c7fec1SAndroid Build Coastguard Worker filename: "hosts", 114*00c7fec1SAndroid Build Coastguard Worker} 115*00c7fec1SAndroid Build Coastguard Worker 116*00c7fec1SAndroid Build Coastguard Workerprebuilt_etc { 117*00c7fec1SAndroid Build Coastguard Worker name: "init-debug.rc", 118*00c7fec1SAndroid Build Coastguard Worker src: "init-debug.rc", 119*00c7fec1SAndroid Build Coastguard Worker sub_dir: "init", 120*00c7fec1SAndroid Build Coastguard Worker} 121*00c7fec1SAndroid Build Coastguard Worker 122*00c7fec1SAndroid Build Coastguard Workerprebuilt_etc { 123*00c7fec1SAndroid Build Coastguard Worker name: "asan.options", 124*00c7fec1SAndroid Build Coastguard Worker src: "asan.options", 125*00c7fec1SAndroid Build Coastguard Worker} 126*00c7fec1SAndroid Build Coastguard Worker 127*00c7fec1SAndroid Build Coastguard Workersh_binary { 128*00c7fec1SAndroid Build Coastguard Worker name: "asan_extract", 129*00c7fec1SAndroid Build Coastguard Worker src: "asan_extract.sh", 130*00c7fec1SAndroid Build Coastguard Worker init_rc: ["asan_extract.rc"], 131*00c7fec1SAndroid Build Coastguard Worker // We need bzip2 on device for extraction. 132*00c7fec1SAndroid Build Coastguard Worker required: ["bzip2"], 133*00c7fec1SAndroid Build Coastguard Worker} 134*00c7fec1SAndroid Build Coastguard Worker 135*00c7fec1SAndroid Build Coastguard Workerllndk_libraries_txt { 136*00c7fec1SAndroid Build Coastguard Worker name: "llndk.libraries.txt", 137*00c7fec1SAndroid Build Coastguard Worker} 138*00c7fec1SAndroid Build Coastguard Worker 139*00c7fec1SAndroid Build Coastguard Workersanitizer_libraries_txt { 140*00c7fec1SAndroid Build Coastguard Worker name: "sanitizer.libraries.txt", 141*00c7fec1SAndroid Build Coastguard Worker} 142*00c7fec1SAndroid Build Coastguard Worker 143*00c7fec1SAndroid Build Coastguard WorkerEXPORT_GLOBAL_ASAN_OPTIONS = select(soong_config_variable("ANDROID", "ASAN_ENABLED"), { 144*00c7fec1SAndroid Build Coastguard Worker true: "export ASAN_OPTIONS include=/system/asan.options", 145*00c7fec1SAndroid Build Coastguard Worker default: "", 146*00c7fec1SAndroid Build Coastguard Worker}) 147*00c7fec1SAndroid Build Coastguard Worker 148*00c7fec1SAndroid Build Coastguard WorkerEXPORT_GLOBAL_HWASAN_OPTIONS = select(soong_config_variable("ANDROID", "HWASAN_ENABLED"), { 149*00c7fec1SAndroid Build Coastguard Worker true: "export HWASAN_OPTIONS heap_history_size=1023,stack_history_size=512,export_memory_stats=0,max_malloc_fill_size=131072,malloc_fill_byte=0", 150*00c7fec1SAndroid Build Coastguard Worker default: "", 151*00c7fec1SAndroid Build Coastguard Worker}) 152*00c7fec1SAndroid Build Coastguard Worker 153*00c7fec1SAndroid Build Coastguard WorkerEXPORT_GLOBAL_GCOV_OPTIONS = select(soong_config_variable("ANDROID", "GCOV_COVERAGE"), { 154*00c7fec1SAndroid Build Coastguard Worker true: "export GCOV_PREFIX /data/misc/trace", 155*00c7fec1SAndroid Build Coastguard Worker default: "", 156*00c7fec1SAndroid Build Coastguard Worker}) 157*00c7fec1SAndroid Build Coastguard Worker 158*00c7fec1SAndroid Build Coastguard WorkerEXPORT_GLOBAL_CLANG_COVERAGE_OPTIONS = select((soong_config_variable("ANDROID", "CLANG_COVERAGE"), soong_config_variable("ANDROID", "CLANG_COVERAGE_CONTINUOUS_MODE")), { 159*00c7fec1SAndroid Build Coastguard Worker (true, true): "export LLVM_PROFILE_FILE /data/misc/trace/clang%c-%20m.profraw", 160*00c7fec1SAndroid Build Coastguard Worker (true, default): "export LLVM_PROFILE_FILE /data/misc/trace/clang-%20m.profraw", 161*00c7fec1SAndroid Build Coastguard Worker (default, default): "", 162*00c7fec1SAndroid Build Coastguard Worker}) 163*00c7fec1SAndroid Build Coastguard Worker 164*00c7fec1SAndroid Build Coastguard WorkerEXPORT_GLOBAL_SCUDO_ALLOCATION_RING_BUFFER_SIZE = select(soong_config_variable("ANDROID", "SCUDO_ALLOCATION_RING_BUFFER_SIZE"), { 165*00c7fec1SAndroid Build Coastguard Worker "": "", 166*00c7fec1SAndroid Build Coastguard Worker any @ size: "export SCUDO_ALLOCATION_RING_BUFFER_SIZE " + size, 167*00c7fec1SAndroid Build Coastguard Worker default: "", 168*00c7fec1SAndroid Build Coastguard Worker}) 169*00c7fec1SAndroid Build Coastguard Worker 170*00c7fec1SAndroid Build Coastguard Workergenrule { 171*00c7fec1SAndroid Build Coastguard Worker name: "init.environ.rc.gen", 172*00c7fec1SAndroid Build Coastguard Worker srcs: ["init.environ.rc.in"], 173*00c7fec1SAndroid Build Coastguard Worker out: ["init.environ.rc"], 174*00c7fec1SAndroid Build Coastguard Worker cmd: "cp -f $(in) $(out) && " + 175*00c7fec1SAndroid Build Coastguard Worker "echo ' " + EXPORT_GLOBAL_ASAN_OPTIONS + "' >> $(out) && " + 176*00c7fec1SAndroid Build Coastguard Worker "echo ' " + EXPORT_GLOBAL_GCOV_OPTIONS + "' >> $(out) && " + 177*00c7fec1SAndroid Build Coastguard Worker "echo ' " + EXPORT_GLOBAL_CLANG_COVERAGE_OPTIONS + "' >> $(out) && " + 178*00c7fec1SAndroid Build Coastguard Worker "echo ' " + EXPORT_GLOBAL_HWASAN_OPTIONS + "' >> $(out) && " + 179*00c7fec1SAndroid Build Coastguard Worker "echo ' " + EXPORT_GLOBAL_SCUDO_ALLOCATION_RING_BUFFER_SIZE + "' >> $(out)", 180*00c7fec1SAndroid Build Coastguard Worker} 181*00c7fec1SAndroid Build Coastguard Worker 182*00c7fec1SAndroid Build Coastguard Workerprebuilt_root { 183*00c7fec1SAndroid Build Coastguard Worker name: "init.environ.rc-soong", 184*00c7fec1SAndroid Build Coastguard Worker src: ":init.environ.rc.gen", 185*00c7fec1SAndroid Build Coastguard Worker filename: "init.environ.rc", 186*00c7fec1SAndroid Build Coastguard Worker install_in_root: true, 187*00c7fec1SAndroid Build Coastguard Worker no_full_install: true, 188*00c7fec1SAndroid Build Coastguard Worker required: select((soong_config_variable("ANDROID", "ASAN_ENABLED"), soong_config_variable("ANDROID", "SANITIZE_TARGET_SYSTEM_ENABLED")), { 189*00c7fec1SAndroid Build Coastguard Worker (true, true): [ 190*00c7fec1SAndroid Build Coastguard Worker "asan.options", 191*00c7fec1SAndroid Build Coastguard Worker "asan_extract", 192*00c7fec1SAndroid Build Coastguard Worker ], 193*00c7fec1SAndroid Build Coastguard Worker (true, default): ["asan.options"], 194*00c7fec1SAndroid Build Coastguard Worker (default, default): [], 195*00c7fec1SAndroid Build Coastguard Worker }), 196*00c7fec1SAndroid Build Coastguard Worker} 197*00c7fec1SAndroid Build Coastguard Worker 198*00c7fec1SAndroid Build Coastguard Workerfilegroup { 199*00c7fec1SAndroid Build Coastguard Worker name: "ramdisk_node_list", 200*00c7fec1SAndroid Build Coastguard Worker srcs: ["ramdisk_node_list"], 201*00c7fec1SAndroid Build Coastguard Worker export_to_make_var: "RAMDISK_NODE_LIST", 202*00c7fec1SAndroid Build Coastguard Worker} 203