1*333d2b36SAndroid Build Coastguard Worker// Copyright (C) 2019 The Android Open Source Project 2*333d2b36SAndroid Build Coastguard Worker// 3*333d2b36SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License"); 4*333d2b36SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License. 5*333d2b36SAndroid Build Coastguard Worker// You may obtain a copy of the License at 6*333d2b36SAndroid Build Coastguard Worker// 7*333d2b36SAndroid Build Coastguard Worker// http://www.apache.org/licenses/LICENSE-2.0 8*333d2b36SAndroid Build Coastguard Worker// 9*333d2b36SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software 10*333d2b36SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS, 11*333d2b36SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*333d2b36SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and 13*333d2b36SAndroid Build Coastguard Worker// limitations under the License. 14*333d2b36SAndroid Build Coastguard Worker 15*333d2b36SAndroid Build Coastguard Workerpackage cc 16*333d2b36SAndroid Build Coastguard Worker 17*333d2b36SAndroid Build Coastguard Workerimport ( 18*333d2b36SAndroid Build Coastguard Worker "path/filepath" 19*333d2b36SAndroid Build Coastguard Worker "testing" 20*333d2b36SAndroid Build Coastguard Worker 21*333d2b36SAndroid Build Coastguard Worker "android/soong/android" 22*333d2b36SAndroid Build Coastguard Worker "android/soong/genrule" 23*333d2b36SAndroid Build Coastguard Worker) 24*333d2b36SAndroid Build Coastguard Worker 25*333d2b36SAndroid Build Coastguard Workerfunc RegisterRequiredBuildComponentsForTest(ctx android.RegistrationContext) { 26*333d2b36SAndroid Build Coastguard Worker RegisterPrebuiltBuildComponents(ctx) 27*333d2b36SAndroid Build Coastguard Worker RegisterCCBuildComponents(ctx) 28*333d2b36SAndroid Build Coastguard Worker RegisterBinaryBuildComponents(ctx) 29*333d2b36SAndroid Build Coastguard Worker RegisterLibraryBuildComponents(ctx) 30*333d2b36SAndroid Build Coastguard Worker RegisterLibraryHeadersBuildComponents(ctx) 31*333d2b36SAndroid Build Coastguard Worker 32*333d2b36SAndroid Build Coastguard Worker ctx.RegisterModuleType("prebuilt_build_tool", android.NewPrebuiltBuildTool) 33*333d2b36SAndroid Build Coastguard Worker ctx.RegisterModuleType("cc_benchmark", BenchmarkFactory) 34*333d2b36SAndroid Build Coastguard Worker ctx.RegisterModuleType("cc_cmake_snapshot", CmakeSnapshotFactory) 35*333d2b36SAndroid Build Coastguard Worker ctx.RegisterModuleType("cc_object", ObjectFactory) 36*333d2b36SAndroid Build Coastguard Worker ctx.RegisterModuleType("cc_genrule", GenRuleFactory) 37*333d2b36SAndroid Build Coastguard Worker ctx.RegisterModuleType("ndk_library", NdkLibraryFactory) 38*333d2b36SAndroid Build Coastguard Worker ctx.RegisterModuleType("ndk_headers", NdkHeadersFactory) 39*333d2b36SAndroid Build Coastguard Worker} 40*333d2b36SAndroid Build Coastguard Worker 41*333d2b36SAndroid Build Coastguard Workerfunc GatherRequiredDepsForTest(oses ...android.OsType) string { 42*333d2b36SAndroid Build Coastguard Worker ret := commonDefaultModules() 43*333d2b36SAndroid Build Coastguard Worker 44*333d2b36SAndroid Build Coastguard Worker supportLinuxBionic := false 45*333d2b36SAndroid Build Coastguard Worker for _, os := range oses { 46*333d2b36SAndroid Build Coastguard Worker if os == android.Windows { 47*333d2b36SAndroid Build Coastguard Worker ret += withWindowsModules() 48*333d2b36SAndroid Build Coastguard Worker } 49*333d2b36SAndroid Build Coastguard Worker if os == android.LinuxBionic { 50*333d2b36SAndroid Build Coastguard Worker supportLinuxBionic = true 51*333d2b36SAndroid Build Coastguard Worker ret += withLinuxBionic() 52*333d2b36SAndroid Build Coastguard Worker } 53*333d2b36SAndroid Build Coastguard Worker } 54*333d2b36SAndroid Build Coastguard Worker 55*333d2b36SAndroid Build Coastguard Worker if !supportLinuxBionic { 56*333d2b36SAndroid Build Coastguard Worker ret += withoutLinuxBionic() 57*333d2b36SAndroid Build Coastguard Worker } 58*333d2b36SAndroid Build Coastguard Worker 59*333d2b36SAndroid Build Coastguard Worker return ret 60*333d2b36SAndroid Build Coastguard Worker} 61*333d2b36SAndroid Build Coastguard Worker 62*333d2b36SAndroid Build Coastguard Workerfunc commonDefaultModules() string { 63*333d2b36SAndroid Build Coastguard Worker return ` 64*333d2b36SAndroid Build Coastguard Worker cc_defaults { 65*333d2b36SAndroid Build Coastguard Worker name: "toolchain_libs_defaults", 66*333d2b36SAndroid Build Coastguard Worker host_supported: true, 67*333d2b36SAndroid Build Coastguard Worker vendor_available: true, 68*333d2b36SAndroid Build Coastguard Worker product_available: true, 69*333d2b36SAndroid Build Coastguard Worker recovery_available: true, 70*333d2b36SAndroid Build Coastguard Worker no_libcrt: true, 71*333d2b36SAndroid Build Coastguard Worker sdk_version: "minimum", 72*333d2b36SAndroid Build Coastguard Worker nocrt: true, 73*333d2b36SAndroid Build Coastguard Worker no_crt_pad_segment: true, 74*333d2b36SAndroid Build Coastguard Worker system_shared_libs: [], 75*333d2b36SAndroid Build Coastguard Worker stl: "none", 76*333d2b36SAndroid Build Coastguard Worker check_elf_files: false, 77*333d2b36SAndroid Build Coastguard Worker sanitize: { 78*333d2b36SAndroid Build Coastguard Worker never: true, 79*333d2b36SAndroid Build Coastguard Worker }, 80*333d2b36SAndroid Build Coastguard Worker apex_available: [ 81*333d2b36SAndroid Build Coastguard Worker "//apex_available:anyapex", 82*333d2b36SAndroid Build Coastguard Worker "//apex_available:platform", 83*333d2b36SAndroid Build Coastguard Worker ], 84*333d2b36SAndroid Build Coastguard Worker } 85*333d2b36SAndroid Build Coastguard Worker 86*333d2b36SAndroid Build Coastguard Worker cc_prebuilt_library_static { 87*333d2b36SAndroid Build Coastguard Worker name: "libcompiler_rt-extras", 88*333d2b36SAndroid Build Coastguard Worker defaults: ["toolchain_libs_defaults"], 89*333d2b36SAndroid Build Coastguard Worker vendor_ramdisk_available: true, 90*333d2b36SAndroid Build Coastguard Worker srcs: [""], 91*333d2b36SAndroid Build Coastguard Worker } 92*333d2b36SAndroid Build Coastguard Worker 93*333d2b36SAndroid Build Coastguard Worker cc_prebuilt_library_static { 94*333d2b36SAndroid Build Coastguard Worker name: "libclang_rt.builtins", 95*333d2b36SAndroid Build Coastguard Worker defaults: ["toolchain_libs_defaults"], 96*333d2b36SAndroid Build Coastguard Worker host_supported: true, 97*333d2b36SAndroid Build Coastguard Worker vendor_available: true, 98*333d2b36SAndroid Build Coastguard Worker vendor_ramdisk_available: true, 99*333d2b36SAndroid Build Coastguard Worker native_bridge_supported: true, 100*333d2b36SAndroid Build Coastguard Worker srcs: [""], 101*333d2b36SAndroid Build Coastguard Worker } 102*333d2b36SAndroid Build Coastguard Worker 103*333d2b36SAndroid Build Coastguard Worker cc_prebuilt_library_shared { 104*333d2b36SAndroid Build Coastguard Worker name: "libclang_rt.hwasan", 105*333d2b36SAndroid Build Coastguard Worker defaults: ["toolchain_libs_defaults"], 106*333d2b36SAndroid Build Coastguard Worker srcs: [""], 107*333d2b36SAndroid Build Coastguard Worker } 108*333d2b36SAndroid Build Coastguard Worker 109*333d2b36SAndroid Build Coastguard Worker cc_prebuilt_library_static { 110*333d2b36SAndroid Build Coastguard Worker name: "libunwind", 111*333d2b36SAndroid Build Coastguard Worker defaults: [ 112*333d2b36SAndroid Build Coastguard Worker "linux_bionic_supported", 113*333d2b36SAndroid Build Coastguard Worker "toolchain_libs_defaults", 114*333d2b36SAndroid Build Coastguard Worker ], 115*333d2b36SAndroid Build Coastguard Worker vendor_ramdisk_available: true, 116*333d2b36SAndroid Build Coastguard Worker native_bridge_supported: true, 117*333d2b36SAndroid Build Coastguard Worker srcs: [""], 118*333d2b36SAndroid Build Coastguard Worker } 119*333d2b36SAndroid Build Coastguard Worker 120*333d2b36SAndroid Build Coastguard Worker cc_prebuilt_library_static { 121*333d2b36SAndroid Build Coastguard Worker name: "libclang_rt.fuzzer", 122*333d2b36SAndroid Build Coastguard Worker defaults: [ 123*333d2b36SAndroid Build Coastguard Worker "linux_bionic_supported", 124*333d2b36SAndroid Build Coastguard Worker "toolchain_libs_defaults", 125*333d2b36SAndroid Build Coastguard Worker ], 126*333d2b36SAndroid Build Coastguard Worker srcs: [""], 127*333d2b36SAndroid Build Coastguard Worker } 128*333d2b36SAndroid Build Coastguard Worker 129*333d2b36SAndroid Build Coastguard Worker // Needed for sanitizer 130*333d2b36SAndroid Build Coastguard Worker cc_prebuilt_library_shared { 131*333d2b36SAndroid Build Coastguard Worker name: "libclang_rt.ubsan_standalone", 132*333d2b36SAndroid Build Coastguard Worker defaults: ["toolchain_libs_defaults"], 133*333d2b36SAndroid Build Coastguard Worker srcs: [""], 134*333d2b36SAndroid Build Coastguard Worker } 135*333d2b36SAndroid Build Coastguard Worker 136*333d2b36SAndroid Build Coastguard Worker cc_prebuilt_library_static { 137*333d2b36SAndroid Build Coastguard Worker name: "libclang_rt.ubsan_standalone.static", 138*333d2b36SAndroid Build Coastguard Worker defaults: ["toolchain_libs_defaults"], 139*333d2b36SAndroid Build Coastguard Worker srcs: [""], 140*333d2b36SAndroid Build Coastguard Worker } 141*333d2b36SAndroid Build Coastguard Worker 142*333d2b36SAndroid Build Coastguard Worker cc_prebuilt_library_static { 143*333d2b36SAndroid Build Coastguard Worker name: "libclang_rt.ubsan_minimal", 144*333d2b36SAndroid Build Coastguard Worker defaults: ["toolchain_libs_defaults"], 145*333d2b36SAndroid Build Coastguard Worker host_supported: true, 146*333d2b36SAndroid Build Coastguard Worker target: { 147*333d2b36SAndroid Build Coastguard Worker android_arm64: { 148*333d2b36SAndroid Build Coastguard Worker srcs: ["libclang_rt.ubsan_minimal.android_arm64.a"], 149*333d2b36SAndroid Build Coastguard Worker }, 150*333d2b36SAndroid Build Coastguard Worker android_arm: { 151*333d2b36SAndroid Build Coastguard Worker srcs: ["libclang_rt.ubsan_minimal.android_arm.a"], 152*333d2b36SAndroid Build Coastguard Worker }, 153*333d2b36SAndroid Build Coastguard Worker linux_glibc_x86_64: { 154*333d2b36SAndroid Build Coastguard Worker srcs: ["libclang_rt.ubsan_minimal.x86_64.a"], 155*333d2b36SAndroid Build Coastguard Worker }, 156*333d2b36SAndroid Build Coastguard Worker linux_glibc_x86: { 157*333d2b36SAndroid Build Coastguard Worker srcs: ["libclang_rt.ubsan_minimal.x86.a"], 158*333d2b36SAndroid Build Coastguard Worker }, 159*333d2b36SAndroid Build Coastguard Worker linux_musl_x86_64: { 160*333d2b36SAndroid Build Coastguard Worker srcs: ["libclang_rt.ubsan_minimal.x86_64.a"], 161*333d2b36SAndroid Build Coastguard Worker }, 162*333d2b36SAndroid Build Coastguard Worker linux_musl_x86: { 163*333d2b36SAndroid Build Coastguard Worker srcs: ["libclang_rt.ubsan_minimal.x86.a"], 164*333d2b36SAndroid Build Coastguard Worker }, 165*333d2b36SAndroid Build Coastguard Worker }, 166*333d2b36SAndroid Build Coastguard Worker } 167*333d2b36SAndroid Build Coastguard Worker 168*333d2b36SAndroid Build Coastguard Worker cc_library { 169*333d2b36SAndroid Build Coastguard Worker name: "libc", 170*333d2b36SAndroid Build Coastguard Worker defaults: ["linux_bionic_supported"], 171*333d2b36SAndroid Build Coastguard Worker no_libcrt: true, 172*333d2b36SAndroid Build Coastguard Worker nocrt: true, 173*333d2b36SAndroid Build Coastguard Worker stl: "none", 174*333d2b36SAndroid Build Coastguard Worker system_shared_libs: [], 175*333d2b36SAndroid Build Coastguard Worker recovery_available: true, 176*333d2b36SAndroid Build Coastguard Worker stubs: { 177*333d2b36SAndroid Build Coastguard Worker versions: ["27", "28", "29"], 178*333d2b36SAndroid Build Coastguard Worker }, 179*333d2b36SAndroid Build Coastguard Worker llndk: { 180*333d2b36SAndroid Build Coastguard Worker symbol_file: "libc.map.txt", 181*333d2b36SAndroid Build Coastguard Worker }, 182*333d2b36SAndroid Build Coastguard Worker } 183*333d2b36SAndroid Build Coastguard Worker cc_library { 184*333d2b36SAndroid Build Coastguard Worker name: "libm", 185*333d2b36SAndroid Build Coastguard Worker defaults: ["linux_bionic_supported"], 186*333d2b36SAndroid Build Coastguard Worker no_libcrt: true, 187*333d2b36SAndroid Build Coastguard Worker nocrt: true, 188*333d2b36SAndroid Build Coastguard Worker stl: "none", 189*333d2b36SAndroid Build Coastguard Worker system_shared_libs: [], 190*333d2b36SAndroid Build Coastguard Worker recovery_available: true, 191*333d2b36SAndroid Build Coastguard Worker stubs: { 192*333d2b36SAndroid Build Coastguard Worker versions: ["27", "28", "29"], 193*333d2b36SAndroid Build Coastguard Worker }, 194*333d2b36SAndroid Build Coastguard Worker apex_available: [ 195*333d2b36SAndroid Build Coastguard Worker "//apex_available:platform", 196*333d2b36SAndroid Build Coastguard Worker "myapex" 197*333d2b36SAndroid Build Coastguard Worker ], 198*333d2b36SAndroid Build Coastguard Worker llndk: { 199*333d2b36SAndroid Build Coastguard Worker symbol_file: "libm.map.txt", 200*333d2b36SAndroid Build Coastguard Worker }, 201*333d2b36SAndroid Build Coastguard Worker } 202*333d2b36SAndroid Build Coastguard Worker 203*333d2b36SAndroid Build Coastguard Worker // Coverage libraries 204*333d2b36SAndroid Build Coastguard Worker cc_library { 205*333d2b36SAndroid Build Coastguard Worker name: "libprofile-extras", 206*333d2b36SAndroid Build Coastguard Worker vendor_available: true, 207*333d2b36SAndroid Build Coastguard Worker vendor_ramdisk_available: true, 208*333d2b36SAndroid Build Coastguard Worker product_available: true, 209*333d2b36SAndroid Build Coastguard Worker recovery_available: true, 210*333d2b36SAndroid Build Coastguard Worker native_coverage: false, 211*333d2b36SAndroid Build Coastguard Worker system_shared_libs: [], 212*333d2b36SAndroid Build Coastguard Worker stl: "none", 213*333d2b36SAndroid Build Coastguard Worker } 214*333d2b36SAndroid Build Coastguard Worker cc_library { 215*333d2b36SAndroid Build Coastguard Worker name: "libprofile-clang-extras", 216*333d2b36SAndroid Build Coastguard Worker vendor_available: true, 217*333d2b36SAndroid Build Coastguard Worker vendor_ramdisk_available: true, 218*333d2b36SAndroid Build Coastguard Worker product_available: true, 219*333d2b36SAndroid Build Coastguard Worker recovery_available: true, 220*333d2b36SAndroid Build Coastguard Worker native_coverage: false, 221*333d2b36SAndroid Build Coastguard Worker system_shared_libs: [], 222*333d2b36SAndroid Build Coastguard Worker stl: "none", 223*333d2b36SAndroid Build Coastguard Worker } 224*333d2b36SAndroid Build Coastguard Worker cc_library { 225*333d2b36SAndroid Build Coastguard Worker name: "libprofile-extras_ndk", 226*333d2b36SAndroid Build Coastguard Worker vendor_available: true, 227*333d2b36SAndroid Build Coastguard Worker product_available: true, 228*333d2b36SAndroid Build Coastguard Worker native_coverage: false, 229*333d2b36SAndroid Build Coastguard Worker system_shared_libs: [], 230*333d2b36SAndroid Build Coastguard Worker stl: "none", 231*333d2b36SAndroid Build Coastguard Worker sdk_version: "current", 232*333d2b36SAndroid Build Coastguard Worker } 233*333d2b36SAndroid Build Coastguard Worker cc_library { 234*333d2b36SAndroid Build Coastguard Worker name: "libprofile-clang-extras_ndk", 235*333d2b36SAndroid Build Coastguard Worker vendor_available: true, 236*333d2b36SAndroid Build Coastguard Worker product_available: true, 237*333d2b36SAndroid Build Coastguard Worker native_coverage: false, 238*333d2b36SAndroid Build Coastguard Worker system_shared_libs: [], 239*333d2b36SAndroid Build Coastguard Worker stl: "none", 240*333d2b36SAndroid Build Coastguard Worker sdk_version: "current", 241*333d2b36SAndroid Build Coastguard Worker } 242*333d2b36SAndroid Build Coastguard Worker 243*333d2b36SAndroid Build Coastguard Worker cc_library { 244*333d2b36SAndroid Build Coastguard Worker name: "libdl", 245*333d2b36SAndroid Build Coastguard Worker defaults: ["linux_bionic_supported"], 246*333d2b36SAndroid Build Coastguard Worker no_libcrt: true, 247*333d2b36SAndroid Build Coastguard Worker nocrt: true, 248*333d2b36SAndroid Build Coastguard Worker stl: "none", 249*333d2b36SAndroid Build Coastguard Worker system_shared_libs: [], 250*333d2b36SAndroid Build Coastguard Worker recovery_available: true, 251*333d2b36SAndroid Build Coastguard Worker stubs: { 252*333d2b36SAndroid Build Coastguard Worker versions: ["27", "28", "29"], 253*333d2b36SAndroid Build Coastguard Worker }, 254*333d2b36SAndroid Build Coastguard Worker apex_available: [ 255*333d2b36SAndroid Build Coastguard Worker "//apex_available:platform", 256*333d2b36SAndroid Build Coastguard Worker "myapex" 257*333d2b36SAndroid Build Coastguard Worker ], 258*333d2b36SAndroid Build Coastguard Worker llndk: { 259*333d2b36SAndroid Build Coastguard Worker symbol_file: "libdl.map.txt", 260*333d2b36SAndroid Build Coastguard Worker }, 261*333d2b36SAndroid Build Coastguard Worker } 262*333d2b36SAndroid Build Coastguard Worker cc_library { 263*333d2b36SAndroid Build Coastguard Worker name: "libft2", 264*333d2b36SAndroid Build Coastguard Worker no_libcrt: true, 265*333d2b36SAndroid Build Coastguard Worker nocrt: true, 266*333d2b36SAndroid Build Coastguard Worker system_shared_libs: [], 267*333d2b36SAndroid Build Coastguard Worker recovery_available: true, 268*333d2b36SAndroid Build Coastguard Worker llndk: { 269*333d2b36SAndroid Build Coastguard Worker symbol_file: "libft2.map.txt", 270*333d2b36SAndroid Build Coastguard Worker private: true, 271*333d2b36SAndroid Build Coastguard Worker } 272*333d2b36SAndroid Build Coastguard Worker } 273*333d2b36SAndroid Build Coastguard Worker cc_library { 274*333d2b36SAndroid Build Coastguard Worker name: "libc++_static", 275*333d2b36SAndroid Build Coastguard Worker no_libcrt: true, 276*333d2b36SAndroid Build Coastguard Worker nocrt: true, 277*333d2b36SAndroid Build Coastguard Worker system_shared_libs: [], 278*333d2b36SAndroid Build Coastguard Worker stl: "none", 279*333d2b36SAndroid Build Coastguard Worker vendor_available: true, 280*333d2b36SAndroid Build Coastguard Worker vendor_ramdisk_available: true, 281*333d2b36SAndroid Build Coastguard Worker product_available: true, 282*333d2b36SAndroid Build Coastguard Worker recovery_available: true, 283*333d2b36SAndroid Build Coastguard Worker host_supported: true, 284*333d2b36SAndroid Build Coastguard Worker min_sdk_version: "29", 285*333d2b36SAndroid Build Coastguard Worker apex_available: [ 286*333d2b36SAndroid Build Coastguard Worker "//apex_available:platform", 287*333d2b36SAndroid Build Coastguard Worker "//apex_available:anyapex", 288*333d2b36SAndroid Build Coastguard Worker ], 289*333d2b36SAndroid Build Coastguard Worker } 290*333d2b36SAndroid Build Coastguard Worker cc_library { 291*333d2b36SAndroid Build Coastguard Worker name: "libc++", 292*333d2b36SAndroid Build Coastguard Worker no_libcrt: true, 293*333d2b36SAndroid Build Coastguard Worker nocrt: true, 294*333d2b36SAndroid Build Coastguard Worker system_shared_libs: [], 295*333d2b36SAndroid Build Coastguard Worker stl: "none", 296*333d2b36SAndroid Build Coastguard Worker vendor_available: true, 297*333d2b36SAndroid Build Coastguard Worker vendor_ramdisk_available: true, 298*333d2b36SAndroid Build Coastguard Worker product_available: true, 299*333d2b36SAndroid Build Coastguard Worker recovery_available: true, 300*333d2b36SAndroid Build Coastguard Worker host_supported: true, 301*333d2b36SAndroid Build Coastguard Worker min_sdk_version: "29", 302*333d2b36SAndroid Build Coastguard Worker double_loadable: true, 303*333d2b36SAndroid Build Coastguard Worker apex_available: [ 304*333d2b36SAndroid Build Coastguard Worker "//apex_available:platform", 305*333d2b36SAndroid Build Coastguard Worker "//apex_available:anyapex", 306*333d2b36SAndroid Build Coastguard Worker ], 307*333d2b36SAndroid Build Coastguard Worker } 308*333d2b36SAndroid Build Coastguard Worker cc_library { 309*333d2b36SAndroid Build Coastguard Worker name: "ndk_libc++_shared", 310*333d2b36SAndroid Build Coastguard Worker export_include_dirs: ["ndk_libc++_shared_include_dirs"], 311*333d2b36SAndroid Build Coastguard Worker no_libcrt: true, 312*333d2b36SAndroid Build Coastguard Worker nocrt: true, 313*333d2b36SAndroid Build Coastguard Worker system_shared_libs: [], 314*333d2b36SAndroid Build Coastguard Worker stl: "none", 315*333d2b36SAndroid Build Coastguard Worker vendor_available: true, 316*333d2b36SAndroid Build Coastguard Worker vendor_ramdisk_available: true, 317*333d2b36SAndroid Build Coastguard Worker product_available: true, 318*333d2b36SAndroid Build Coastguard Worker recovery_available: true, 319*333d2b36SAndroid Build Coastguard Worker host_supported: false, 320*333d2b36SAndroid Build Coastguard Worker sdk_version: "minimum", 321*333d2b36SAndroid Build Coastguard Worker double_loadable: true, 322*333d2b36SAndroid Build Coastguard Worker apex_available: [ 323*333d2b36SAndroid Build Coastguard Worker "//apex_available:platform", 324*333d2b36SAndroid Build Coastguard Worker "//apex_available:anyapex", 325*333d2b36SAndroid Build Coastguard Worker ], 326*333d2b36SAndroid Build Coastguard Worker } 327*333d2b36SAndroid Build Coastguard Worker cc_library { 328*333d2b36SAndroid Build Coastguard Worker name: "libc++demangle", 329*333d2b36SAndroid Build Coastguard Worker no_libcrt: true, 330*333d2b36SAndroid Build Coastguard Worker nocrt: true, 331*333d2b36SAndroid Build Coastguard Worker system_shared_libs: [], 332*333d2b36SAndroid Build Coastguard Worker stl: "none", 333*333d2b36SAndroid Build Coastguard Worker host_supported: false, 334*333d2b36SAndroid Build Coastguard Worker vendor_available: true, 335*333d2b36SAndroid Build Coastguard Worker vendor_ramdisk_available: true, 336*333d2b36SAndroid Build Coastguard Worker product_available: true, 337*333d2b36SAndroid Build Coastguard Worker recovery_available: true, 338*333d2b36SAndroid Build Coastguard Worker min_sdk_version: "29", 339*333d2b36SAndroid Build Coastguard Worker apex_available: [ 340*333d2b36SAndroid Build Coastguard Worker "//apex_available:platform", 341*333d2b36SAndroid Build Coastguard Worker "//apex_available:anyapex", 342*333d2b36SAndroid Build Coastguard Worker ], 343*333d2b36SAndroid Build Coastguard Worker } 344*333d2b36SAndroid Build Coastguard Worker 345*333d2b36SAndroid Build Coastguard Worker cc_defaults { 346*333d2b36SAndroid Build Coastguard Worker name: "crt_defaults", 347*333d2b36SAndroid Build Coastguard Worker defaults: ["linux_bionic_supported"], 348*333d2b36SAndroid Build Coastguard Worker recovery_available: true, 349*333d2b36SAndroid Build Coastguard Worker vendor_available: true, 350*333d2b36SAndroid Build Coastguard Worker vendor_ramdisk_available: true, 351*333d2b36SAndroid Build Coastguard Worker product_available: true, 352*333d2b36SAndroid Build Coastguard Worker native_bridge_supported: true, 353*333d2b36SAndroid Build Coastguard Worker stl: "none", 354*333d2b36SAndroid Build Coastguard Worker min_sdk_version: "16", 355*333d2b36SAndroid Build Coastguard Worker crt: true, 356*333d2b36SAndroid Build Coastguard Worker system_shared_libs: [], 357*333d2b36SAndroid Build Coastguard Worker apex_available: [ 358*333d2b36SAndroid Build Coastguard Worker "//apex_available:platform", 359*333d2b36SAndroid Build Coastguard Worker "//apex_available:anyapex", 360*333d2b36SAndroid Build Coastguard Worker ], 361*333d2b36SAndroid Build Coastguard Worker } 362*333d2b36SAndroid Build Coastguard Worker 363*333d2b36SAndroid Build Coastguard Worker cc_object { 364*333d2b36SAndroid Build Coastguard Worker name: "crtbegin_so", 365*333d2b36SAndroid Build Coastguard Worker defaults: ["crt_defaults"], 366*333d2b36SAndroid Build Coastguard Worker srcs: ["crtbegin_so.c"], 367*333d2b36SAndroid Build Coastguard Worker objs: ["crtbrand"], 368*333d2b36SAndroid Build Coastguard Worker } 369*333d2b36SAndroid Build Coastguard Worker 370*333d2b36SAndroid Build Coastguard Worker cc_object { 371*333d2b36SAndroid Build Coastguard Worker name: "crtbegin_dynamic", 372*333d2b36SAndroid Build Coastguard Worker defaults: ["crt_defaults"], 373*333d2b36SAndroid Build Coastguard Worker srcs: ["crtbegin.c"], 374*333d2b36SAndroid Build Coastguard Worker objs: ["crtbrand"], 375*333d2b36SAndroid Build Coastguard Worker } 376*333d2b36SAndroid Build Coastguard Worker 377*333d2b36SAndroid Build Coastguard Worker cc_object { 378*333d2b36SAndroid Build Coastguard Worker name: "crtbegin_static", 379*333d2b36SAndroid Build Coastguard Worker defaults: ["crt_defaults"], 380*333d2b36SAndroid Build Coastguard Worker srcs: ["crtbegin.c"], 381*333d2b36SAndroid Build Coastguard Worker objs: ["crtbrand"], 382*333d2b36SAndroid Build Coastguard Worker } 383*333d2b36SAndroid Build Coastguard Worker 384*333d2b36SAndroid Build Coastguard Worker cc_object { 385*333d2b36SAndroid Build Coastguard Worker name: "crtend_so", 386*333d2b36SAndroid Build Coastguard Worker defaults: ["crt_defaults"], 387*333d2b36SAndroid Build Coastguard Worker srcs: ["crtend_so.c"], 388*333d2b36SAndroid Build Coastguard Worker objs: ["crtbrand"], 389*333d2b36SAndroid Build Coastguard Worker } 390*333d2b36SAndroid Build Coastguard Worker 391*333d2b36SAndroid Build Coastguard Worker cc_object { 392*333d2b36SAndroid Build Coastguard Worker name: "crtend_android", 393*333d2b36SAndroid Build Coastguard Worker defaults: ["crt_defaults"], 394*333d2b36SAndroid Build Coastguard Worker srcs: ["crtend.c"], 395*333d2b36SAndroid Build Coastguard Worker objs: ["crtbrand"], 396*333d2b36SAndroid Build Coastguard Worker } 397*333d2b36SAndroid Build Coastguard Worker 398*333d2b36SAndroid Build Coastguard Worker cc_object { 399*333d2b36SAndroid Build Coastguard Worker name: "crt_pad_segment", 400*333d2b36SAndroid Build Coastguard Worker defaults: ["crt_defaults"], 401*333d2b36SAndroid Build Coastguard Worker } 402*333d2b36SAndroid Build Coastguard Worker 403*333d2b36SAndroid Build Coastguard Worker cc_object { 404*333d2b36SAndroid Build Coastguard Worker name: "crtbrand", 405*333d2b36SAndroid Build Coastguard Worker defaults: ["crt_defaults"], 406*333d2b36SAndroid Build Coastguard Worker srcs: ["crtbrand.c"], 407*333d2b36SAndroid Build Coastguard Worker } 408*333d2b36SAndroid Build Coastguard Worker 409*333d2b36SAndroid Build Coastguard Worker cc_library { 410*333d2b36SAndroid Build Coastguard Worker name: "libprotobuf-cpp-lite", 411*333d2b36SAndroid Build Coastguard Worker } 412*333d2b36SAndroid Build Coastguard Worker 413*333d2b36SAndroid Build Coastguard Worker ndk_library { 414*333d2b36SAndroid Build Coastguard Worker name: "libc", 415*333d2b36SAndroid Build Coastguard Worker first_version: "minimum", 416*333d2b36SAndroid Build Coastguard Worker symbol_file: "libc.map.txt", 417*333d2b36SAndroid Build Coastguard Worker } 418*333d2b36SAndroid Build Coastguard Worker 419*333d2b36SAndroid Build Coastguard Worker ndk_library { 420*333d2b36SAndroid Build Coastguard Worker name: "libm", 421*333d2b36SAndroid Build Coastguard Worker first_version: "minimum", 422*333d2b36SAndroid Build Coastguard Worker symbol_file: "libm.map.txt", 423*333d2b36SAndroid Build Coastguard Worker } 424*333d2b36SAndroid Build Coastguard Worker 425*333d2b36SAndroid Build Coastguard Worker ndk_library { 426*333d2b36SAndroid Build Coastguard Worker name: "libdl", 427*333d2b36SAndroid Build Coastguard Worker first_version: "minimum", 428*333d2b36SAndroid Build Coastguard Worker symbol_file: "libdl.map.txt", 429*333d2b36SAndroid Build Coastguard Worker } 430*333d2b36SAndroid Build Coastguard Worker 431*333d2b36SAndroid Build Coastguard Worker cc_library_static { 432*333d2b36SAndroid Build Coastguard Worker name: "libgoogle-benchmark", 433*333d2b36SAndroid Build Coastguard Worker sdk_version: "current", 434*333d2b36SAndroid Build Coastguard Worker stl: "none", 435*333d2b36SAndroid Build Coastguard Worker system_shared_libs: [], 436*333d2b36SAndroid Build Coastguard Worker } 437*333d2b36SAndroid Build Coastguard Worker 438*333d2b36SAndroid Build Coastguard Worker cc_library_static { 439*333d2b36SAndroid Build Coastguard Worker name: "note_memtag_heap_async", 440*333d2b36SAndroid Build Coastguard Worker } 441*333d2b36SAndroid Build Coastguard Worker 442*333d2b36SAndroid Build Coastguard Worker cc_library_static { 443*333d2b36SAndroid Build Coastguard Worker name: "note_memtag_heap_sync", 444*333d2b36SAndroid Build Coastguard Worker } 445*333d2b36SAndroid Build Coastguard Worker 446*333d2b36SAndroid Build Coastguard Worker cc_library { 447*333d2b36SAndroid Build Coastguard Worker name: "libc_musl", 448*333d2b36SAndroid Build Coastguard Worker host_supported: true, 449*333d2b36SAndroid Build Coastguard Worker no_libcrt: true, 450*333d2b36SAndroid Build Coastguard Worker nocrt: true, 451*333d2b36SAndroid Build Coastguard Worker system_shared_libs: [], 452*333d2b36SAndroid Build Coastguard Worker stl: "none", 453*333d2b36SAndroid Build Coastguard Worker } 454*333d2b36SAndroid Build Coastguard Worker ` 455*333d2b36SAndroid Build Coastguard Worker} 456*333d2b36SAndroid Build Coastguard Worker 457*333d2b36SAndroid Build Coastguard Workerfunc withWindowsModules() string { 458*333d2b36SAndroid Build Coastguard Worker return ` 459*333d2b36SAndroid Build Coastguard Worker cc_prebuilt_library_static { 460*333d2b36SAndroid Build Coastguard Worker name: "libwinpthread", 461*333d2b36SAndroid Build Coastguard Worker host_supported: true, 462*333d2b36SAndroid Build Coastguard Worker enabled: false, 463*333d2b36SAndroid Build Coastguard Worker target: { 464*333d2b36SAndroid Build Coastguard Worker windows: { 465*333d2b36SAndroid Build Coastguard Worker enabled: true, 466*333d2b36SAndroid Build Coastguard Worker }, 467*333d2b36SAndroid Build Coastguard Worker }, 468*333d2b36SAndroid Build Coastguard Worker stl: "none", 469*333d2b36SAndroid Build Coastguard Worker srcs:[""], 470*333d2b36SAndroid Build Coastguard Worker } 471*333d2b36SAndroid Build Coastguard Worker ` 472*333d2b36SAndroid Build Coastguard Worker} 473*333d2b36SAndroid Build Coastguard Worker 474*333d2b36SAndroid Build Coastguard Workerfunc withLinuxBionic() string { 475*333d2b36SAndroid Build Coastguard Worker return ` 476*333d2b36SAndroid Build Coastguard Worker cc_binary { 477*333d2b36SAndroid Build Coastguard Worker name: "linker", 478*333d2b36SAndroid Build Coastguard Worker defaults: ["linux_bionic_supported"], 479*333d2b36SAndroid Build Coastguard Worker recovery_available: true, 480*333d2b36SAndroid Build Coastguard Worker stl: "none", 481*333d2b36SAndroid Build Coastguard Worker nocrt: true, 482*333d2b36SAndroid Build Coastguard Worker static_executable: true, 483*333d2b36SAndroid Build Coastguard Worker native_coverage: false, 484*333d2b36SAndroid Build Coastguard Worker system_shared_libs: [], 485*333d2b36SAndroid Build Coastguard Worker } 486*333d2b36SAndroid Build Coastguard Worker 487*333d2b36SAndroid Build Coastguard Worker cc_genrule { 488*333d2b36SAndroid Build Coastguard Worker name: "host_bionic_linker_script", 489*333d2b36SAndroid Build Coastguard Worker host_supported: true, 490*333d2b36SAndroid Build Coastguard Worker device_supported: false, 491*333d2b36SAndroid Build Coastguard Worker target: { 492*333d2b36SAndroid Build Coastguard Worker host: { 493*333d2b36SAndroid Build Coastguard Worker enabled: false, 494*333d2b36SAndroid Build Coastguard Worker }, 495*333d2b36SAndroid Build Coastguard Worker linux_bionic: { 496*333d2b36SAndroid Build Coastguard Worker enabled: true, 497*333d2b36SAndroid Build Coastguard Worker }, 498*333d2b36SAndroid Build Coastguard Worker }, 499*333d2b36SAndroid Build Coastguard Worker out: ["linker.script"], 500*333d2b36SAndroid Build Coastguard Worker } 501*333d2b36SAndroid Build Coastguard Worker 502*333d2b36SAndroid Build Coastguard Worker cc_defaults { 503*333d2b36SAndroid Build Coastguard Worker name: "linux_bionic_supported", 504*333d2b36SAndroid Build Coastguard Worker host_supported: true, 505*333d2b36SAndroid Build Coastguard Worker target: { 506*333d2b36SAndroid Build Coastguard Worker host: { 507*333d2b36SAndroid Build Coastguard Worker enabled: false, 508*333d2b36SAndroid Build Coastguard Worker }, 509*333d2b36SAndroid Build Coastguard Worker linux_bionic: { 510*333d2b36SAndroid Build Coastguard Worker enabled: true, 511*333d2b36SAndroid Build Coastguard Worker }, 512*333d2b36SAndroid Build Coastguard Worker }, 513*333d2b36SAndroid Build Coastguard Worker } 514*333d2b36SAndroid Build Coastguard Worker ` 515*333d2b36SAndroid Build Coastguard Worker} 516*333d2b36SAndroid Build Coastguard Worker 517*333d2b36SAndroid Build Coastguard Workerfunc withoutLinuxBionic() string { 518*333d2b36SAndroid Build Coastguard Worker return ` 519*333d2b36SAndroid Build Coastguard Worker cc_defaults { 520*333d2b36SAndroid Build Coastguard Worker name: "linux_bionic_supported", 521*333d2b36SAndroid Build Coastguard Worker } 522*333d2b36SAndroid Build Coastguard Worker ` 523*333d2b36SAndroid Build Coastguard Worker} 524*333d2b36SAndroid Build Coastguard Worker 525*333d2b36SAndroid Build Coastguard Workerfunc GatherRequiredFilesForTest(fs map[string][]byte) { 526*333d2b36SAndroid Build Coastguard Worker} 527*333d2b36SAndroid Build Coastguard Worker 528*333d2b36SAndroid Build Coastguard Worker// The directory in which cc linux bionic default modules will be defined. 529*333d2b36SAndroid Build Coastguard Worker// 530*333d2b36SAndroid Build Coastguard Worker// Placing them here ensures that their location does not conflict with default test modules 531*333d2b36SAndroid Build Coastguard Worker// defined by other packages. 532*333d2b36SAndroid Build Coastguard Workerconst linuxBionicDefaultsPath = "defaults/cc/linux-bionic/Android.bp" 533*333d2b36SAndroid Build Coastguard Worker 534*333d2b36SAndroid Build Coastguard Worker// The directory in which the default cc common test modules will be defined. 535*333d2b36SAndroid Build Coastguard Worker// 536*333d2b36SAndroid Build Coastguard Worker// Placing them here ensures that their location does not conflict with default test modules 537*333d2b36SAndroid Build Coastguard Worker// defined by other packages. 538*333d2b36SAndroid Build Coastguard Workerconst DefaultCcCommonTestModulesDir = "defaults/cc/common/" 539*333d2b36SAndroid Build Coastguard Worker 540*333d2b36SAndroid Build Coastguard Worker// Test fixture preparer that will register most cc build components. 541*333d2b36SAndroid Build Coastguard Worker// 542*333d2b36SAndroid Build Coastguard Worker// Singletons and mutators should only be added here if they are needed for a majority of cc 543*333d2b36SAndroid Build Coastguard Worker// module types, otherwise they should be added under a separate preparer to allow them to be 544*333d2b36SAndroid Build Coastguard Worker// selected only when needed to reduce test execution time. 545*333d2b36SAndroid Build Coastguard Worker// 546*333d2b36SAndroid Build Coastguard Worker// Module types do not have much of an overhead unless they are used so this should include as many 547*333d2b36SAndroid Build Coastguard Worker// module types as possible. The exceptions are those module types that require mutators and/or 548*333d2b36SAndroid Build Coastguard Worker// singletons in order to function in which case they should be kept together in a separate 549*333d2b36SAndroid Build Coastguard Worker// preparer. 550*333d2b36SAndroid Build Coastguard Workervar PrepareForTestWithCcBuildComponents = android.GroupFixturePreparers( 551*333d2b36SAndroid Build Coastguard Worker android.PrepareForTestWithAndroidBuildComponents, 552*333d2b36SAndroid Build Coastguard Worker android.FixtureRegisterWithContext(RegisterRequiredBuildComponentsForTest), 553*333d2b36SAndroid Build Coastguard Worker android.FixtureRegisterWithContext(func(ctx android.RegistrationContext) { 554*333d2b36SAndroid Build Coastguard Worker ctx.RegisterModuleType("cc_fuzz", LibFuzzFactory) 555*333d2b36SAndroid Build Coastguard Worker ctx.RegisterModuleType("cc_test", TestFactory) 556*333d2b36SAndroid Build Coastguard Worker ctx.RegisterModuleType("cc_test_library", TestLibraryFactory) 557*333d2b36SAndroid Build Coastguard Worker ctx.RegisterModuleType("vndk_prebuilt_shared", VndkPrebuiltSharedFactory) 558*333d2b36SAndroid Build Coastguard Worker 559*333d2b36SAndroid Build Coastguard Worker RegisterLlndkLibraryTxtType(ctx) 560*333d2b36SAndroid Build Coastguard Worker }), 561*333d2b36SAndroid Build Coastguard Worker) 562*333d2b36SAndroid Build Coastguard Worker 563*333d2b36SAndroid Build Coastguard Worker// Preparer that will define default cc modules, e.g. standard prebuilt modules. 564*333d2b36SAndroid Build Coastguard Workervar PrepareForTestWithCcDefaultModules = android.GroupFixturePreparers( 565*333d2b36SAndroid Build Coastguard Worker PrepareForTestWithCcBuildComponents, 566*333d2b36SAndroid Build Coastguard Worker 567*333d2b36SAndroid Build Coastguard Worker // Additional files needed in tests that disallow non-existent source. 568*333d2b36SAndroid Build Coastguard Worker android.MockFS{ 569*333d2b36SAndroid Build Coastguard Worker "defaults/cc/common/libc.map.txt": nil, 570*333d2b36SAndroid Build Coastguard Worker "defaults/cc/common/libdl.map.txt": nil, 571*333d2b36SAndroid Build Coastguard Worker "defaults/cc/common/libft2.map.txt": nil, 572*333d2b36SAndroid Build Coastguard Worker "defaults/cc/common/libm.map.txt": nil, 573*333d2b36SAndroid Build Coastguard Worker "defaults/cc/common/ndk_libc++_shared_include_dirs": nil, 574*333d2b36SAndroid Build Coastguard Worker "defaults/cc/common/crtbegin_so.c": nil, 575*333d2b36SAndroid Build Coastguard Worker "defaults/cc/common/crtbegin.c": nil, 576*333d2b36SAndroid Build Coastguard Worker "defaults/cc/common/crtend_so.c": nil, 577*333d2b36SAndroid Build Coastguard Worker "defaults/cc/common/crtend.c": nil, 578*333d2b36SAndroid Build Coastguard Worker "defaults/cc/common/crtbrand.c": nil, 579*333d2b36SAndroid Build Coastguard Worker "external/compiler-rt/lib/cfi/cfi_blocklist.txt": nil, 580*333d2b36SAndroid Build Coastguard Worker 581*333d2b36SAndroid Build Coastguard Worker "defaults/cc/common/libclang_rt.ubsan_minimal.android_arm64.a": nil, 582*333d2b36SAndroid Build Coastguard Worker "defaults/cc/common/libclang_rt.ubsan_minimal.android_arm.a": nil, 583*333d2b36SAndroid Build Coastguard Worker "defaults/cc/common/libclang_rt.ubsan_minimal.x86_64.a": nil, 584*333d2b36SAndroid Build Coastguard Worker "defaults/cc/common/libclang_rt.ubsan_minimal.x86.a": nil, 585*333d2b36SAndroid Build Coastguard Worker }.AddToFixture(), 586*333d2b36SAndroid Build Coastguard Worker 587*333d2b36SAndroid Build Coastguard Worker // Place the default cc test modules that are common to all platforms in a location that will not 588*333d2b36SAndroid Build Coastguard Worker // conflict with default test modules defined by other packages. 589*333d2b36SAndroid Build Coastguard Worker android.FixtureAddTextFile(DefaultCcCommonTestModulesDir+"Android.bp", commonDefaultModules()), 590*333d2b36SAndroid Build Coastguard Worker // Disable linux bionic by default. 591*333d2b36SAndroid Build Coastguard Worker android.FixtureAddTextFile(linuxBionicDefaultsPath, withoutLinuxBionic()), 592*333d2b36SAndroid Build Coastguard Worker) 593*333d2b36SAndroid Build Coastguard Worker 594*333d2b36SAndroid Build Coastguard Worker// Prepare a fixture to use all cc module types, mutators and singletons fully. 595*333d2b36SAndroid Build Coastguard Worker// 596*333d2b36SAndroid Build Coastguard Worker// This should only be used by tests that want to run with as much of the build enabled as possible. 597*333d2b36SAndroid Build Coastguard Workervar PrepareForIntegrationTestWithCc = android.GroupFixturePreparers( 598*333d2b36SAndroid Build Coastguard Worker android.PrepareForIntegrationTestWithAndroid, 599*333d2b36SAndroid Build Coastguard Worker genrule.PrepareForIntegrationTestWithGenrule, 600*333d2b36SAndroid Build Coastguard Worker PrepareForTestWithCcDefaultModules, 601*333d2b36SAndroid Build Coastguard Worker) 602*333d2b36SAndroid Build Coastguard Worker 603*333d2b36SAndroid Build Coastguard Worker// The preparer to include if running a cc related test for windows. 604*333d2b36SAndroid Build Coastguard Workervar PrepareForTestOnWindows = android.GroupFixturePreparers( 605*333d2b36SAndroid Build Coastguard Worker // Place the default cc test modules for windows platforms in a location that will not conflict 606*333d2b36SAndroid Build Coastguard Worker // with default test modules defined by other packages. 607*333d2b36SAndroid Build Coastguard Worker android.FixtureAddTextFile("defaults/cc/windows/Android.bp", withWindowsModules()), 608*333d2b36SAndroid Build Coastguard Worker) 609*333d2b36SAndroid Build Coastguard Worker 610*333d2b36SAndroid Build Coastguard Worker// The preparer to include if running a cc related test for linux bionic. 611*333d2b36SAndroid Build Coastguard Workervar PrepareForTestOnLinuxBionic = android.GroupFixturePreparers( 612*333d2b36SAndroid Build Coastguard Worker // Enable linux bionic 613*333d2b36SAndroid Build Coastguard Worker // 614*333d2b36SAndroid Build Coastguard Worker // Can be used after PrepareForTestWithCcDefaultModules to override its default behavior of 615*333d2b36SAndroid Build Coastguard Worker // disabling linux bionic, hence why this uses FixtureOverrideTextFile. 616*333d2b36SAndroid Build Coastguard Worker android.FixtureOverrideTextFile(linuxBionicDefaultsPath, withLinuxBionic()), 617*333d2b36SAndroid Build Coastguard Worker) 618*333d2b36SAndroid Build Coastguard Worker 619*333d2b36SAndroid Build Coastguard Worker// PrepareForTestWithHostMusl sets the host configuration to musl libc instead of glibc. It also disables the test 620*333d2b36SAndroid Build Coastguard Worker// on mac, which doesn't support musl libc, and adds musl modules. 621*333d2b36SAndroid Build Coastguard Workervar PrepareForTestWithHostMusl = android.GroupFixturePreparers( 622*333d2b36SAndroid Build Coastguard Worker android.FixtureModifyConfig(android.ModifyTestConfigForMusl), 623*333d2b36SAndroid Build Coastguard Worker android.PrepareForSkipTestOnMac, 624*333d2b36SAndroid Build Coastguard Worker android.FixtureAddTextFile("external/musl/Android.bp", ` 625*333d2b36SAndroid Build Coastguard Worker cc_defaults { 626*333d2b36SAndroid Build Coastguard Worker name: "libc_musl_crt_defaults", 627*333d2b36SAndroid Build Coastguard Worker host_supported: true, 628*333d2b36SAndroid Build Coastguard Worker device_supported: false, 629*333d2b36SAndroid Build Coastguard Worker } 630*333d2b36SAndroid Build Coastguard Worker 631*333d2b36SAndroid Build Coastguard Worker cc_object { 632*333d2b36SAndroid Build Coastguard Worker name: "libc_musl_crtbegin_so", 633*333d2b36SAndroid Build Coastguard Worker defaults: ["libc_musl_crt_defaults"], 634*333d2b36SAndroid Build Coastguard Worker } 635*333d2b36SAndroid Build Coastguard Worker 636*333d2b36SAndroid Build Coastguard Worker cc_object { 637*333d2b36SAndroid Build Coastguard Worker name: "libc_musl_crtend_so", 638*333d2b36SAndroid Build Coastguard Worker defaults: ["libc_musl_crt_defaults"], 639*333d2b36SAndroid Build Coastguard Worker } 640*333d2b36SAndroid Build Coastguard Worker 641*333d2b36SAndroid Build Coastguard Worker cc_object { 642*333d2b36SAndroid Build Coastguard Worker name: "libc_musl_crtbegin_dynamic", 643*333d2b36SAndroid Build Coastguard Worker defaults: ["libc_musl_crt_defaults"], 644*333d2b36SAndroid Build Coastguard Worker } 645*333d2b36SAndroid Build Coastguard Worker 646*333d2b36SAndroid Build Coastguard Worker cc_object { 647*333d2b36SAndroid Build Coastguard Worker name: "libc_musl_crtbegin_static", 648*333d2b36SAndroid Build Coastguard Worker defaults: ["libc_musl_crt_defaults"], 649*333d2b36SAndroid Build Coastguard Worker } 650*333d2b36SAndroid Build Coastguard Worker 651*333d2b36SAndroid Build Coastguard Worker cc_object { 652*333d2b36SAndroid Build Coastguard Worker name: "libc_musl_crtend", 653*333d2b36SAndroid Build Coastguard Worker defaults: ["libc_musl_crt_defaults"], 654*333d2b36SAndroid Build Coastguard Worker } 655*333d2b36SAndroid Build Coastguard Worker `), 656*333d2b36SAndroid Build Coastguard Worker) 657*333d2b36SAndroid Build Coastguard Worker 658*333d2b36SAndroid Build Coastguard Worker// PrepareForTestWithFdoProfile registers module types to test with fdo_profile 659*333d2b36SAndroid Build Coastguard Workervar PrepareForTestWithFdoProfile = android.FixtureRegisterWithContext(func(ctx android.RegistrationContext) { 660*333d2b36SAndroid Build Coastguard Worker ctx.RegisterModuleType("soong_namespace", android.NamespaceFactory) 661*333d2b36SAndroid Build Coastguard Worker ctx.RegisterModuleType("fdo_profile", FdoProfileFactory) 662*333d2b36SAndroid Build Coastguard Worker}) 663*333d2b36SAndroid Build Coastguard Worker 664*333d2b36SAndroid Build Coastguard Worker// TestConfig is the legacy way of creating a test Config for testing cc modules. 665*333d2b36SAndroid Build Coastguard Worker// 666*333d2b36SAndroid Build Coastguard Worker// See testCc for an explanation as to how to stop using this deprecated method. 667*333d2b36SAndroid Build Coastguard Worker// 668*333d2b36SAndroid Build Coastguard Worker// deprecated 669*333d2b36SAndroid Build Coastguard Workerfunc TestConfig(buildDir string, os android.OsType, env map[string]string, 670*333d2b36SAndroid Build Coastguard Worker bp string, fs map[string][]byte) android.Config { 671*333d2b36SAndroid Build Coastguard Worker 672*333d2b36SAndroid Build Coastguard Worker // add some modules that are required by the compiler and/or linker 673*333d2b36SAndroid Build Coastguard Worker bp = bp + GatherRequiredDepsForTest(os) 674*333d2b36SAndroid Build Coastguard Worker 675*333d2b36SAndroid Build Coastguard Worker mockFS := map[string][]byte{} 676*333d2b36SAndroid Build Coastguard Worker 677*333d2b36SAndroid Build Coastguard Worker GatherRequiredFilesForTest(mockFS) 678*333d2b36SAndroid Build Coastguard Worker 679*333d2b36SAndroid Build Coastguard Worker for k, v := range fs { 680*333d2b36SAndroid Build Coastguard Worker mockFS[k] = v 681*333d2b36SAndroid Build Coastguard Worker } 682*333d2b36SAndroid Build Coastguard Worker 683*333d2b36SAndroid Build Coastguard Worker return android.TestArchConfig(buildDir, env, bp, mockFS) 684*333d2b36SAndroid Build Coastguard Worker} 685*333d2b36SAndroid Build Coastguard Worker 686*333d2b36SAndroid Build Coastguard Worker// CreateTestContext is the legacy way of creating a TestContext for testing cc modules. 687*333d2b36SAndroid Build Coastguard Worker// 688*333d2b36SAndroid Build Coastguard Worker// See testCc for an explanation as to how to stop using this deprecated method. 689*333d2b36SAndroid Build Coastguard Worker// 690*333d2b36SAndroid Build Coastguard Worker// deprecated 691*333d2b36SAndroid Build Coastguard Workerfunc CreateTestContext(config android.Config) *android.TestContext { 692*333d2b36SAndroid Build Coastguard Worker ctx := android.NewTestArchContext(config) 693*333d2b36SAndroid Build Coastguard Worker genrule.RegisterGenruleBuildComponents(ctx) 694*333d2b36SAndroid Build Coastguard Worker ctx.RegisterModuleType("cc_fuzz", LibFuzzFactory) 695*333d2b36SAndroid Build Coastguard Worker ctx.RegisterModuleType("cc_test", TestFactory) 696*333d2b36SAndroid Build Coastguard Worker ctx.RegisterModuleType("cc_test_library", TestLibraryFactory) 697*333d2b36SAndroid Build Coastguard Worker ctx.RegisterModuleType("filegroup", android.FileGroupFactory) 698*333d2b36SAndroid Build Coastguard Worker ctx.RegisterModuleType("vndk_prebuilt_shared", VndkPrebuiltSharedFactory) 699*333d2b36SAndroid Build Coastguard Worker 700*333d2b36SAndroid Build Coastguard Worker RegisterLlndkLibraryTxtType(ctx) 701*333d2b36SAndroid Build Coastguard Worker 702*333d2b36SAndroid Build Coastguard Worker ctx.PreArchMutators(android.RegisterDefaultsPreArchMutators) 703*333d2b36SAndroid Build Coastguard Worker android.RegisterPrebuiltMutators(ctx) 704*333d2b36SAndroid Build Coastguard Worker RegisterRequiredBuildComponentsForTest(ctx) 705*333d2b36SAndroid Build Coastguard Worker 706*333d2b36SAndroid Build Coastguard Worker return ctx 707*333d2b36SAndroid Build Coastguard Worker} 708*333d2b36SAndroid Build Coastguard Worker 709*333d2b36SAndroid Build Coastguard Workerfunc checkSnapshotIncludeExclude(t *testing.T, ctx *android.TestContext, singleton android.TestingSingleton, moduleName, snapshotFilename, subDir, variant string, include bool, fake bool) { 710*333d2b36SAndroid Build Coastguard Worker t.Helper() 711*333d2b36SAndroid Build Coastguard Worker mod := ctx.ModuleForTests(moduleName, variant) 712*333d2b36SAndroid Build Coastguard Worker outputFiles := mod.OutputFiles(ctx, t, "") 713*333d2b36SAndroid Build Coastguard Worker if len(outputFiles) != 1 { 714*333d2b36SAndroid Build Coastguard Worker t.Errorf("%q must have single output\n", moduleName) 715*333d2b36SAndroid Build Coastguard Worker return 716*333d2b36SAndroid Build Coastguard Worker } 717*333d2b36SAndroid Build Coastguard Worker snapshotPath := filepath.Join(subDir, snapshotFilename) 718*333d2b36SAndroid Build Coastguard Worker 719*333d2b36SAndroid Build Coastguard Worker if include { 720*333d2b36SAndroid Build Coastguard Worker out := singleton.Output(snapshotPath) 721*333d2b36SAndroid Build Coastguard Worker if fake { 722*333d2b36SAndroid Build Coastguard Worker if out.Rule == nil { 723*333d2b36SAndroid Build Coastguard Worker t.Errorf("Missing rule for module %q output file %q", moduleName, outputFiles[0]) 724*333d2b36SAndroid Build Coastguard Worker } 725*333d2b36SAndroid Build Coastguard Worker } else { 726*333d2b36SAndroid Build Coastguard Worker if out.Input.String() != outputFiles[0].String() { 727*333d2b36SAndroid Build Coastguard Worker t.Errorf("The input of snapshot %q must be %q, but %q", moduleName, out.Input.String(), outputFiles[0]) 728*333d2b36SAndroid Build Coastguard Worker } 729*333d2b36SAndroid Build Coastguard Worker } 730*333d2b36SAndroid Build Coastguard Worker } else { 731*333d2b36SAndroid Build Coastguard Worker out := singleton.MaybeOutput(snapshotPath) 732*333d2b36SAndroid Build Coastguard Worker if out.Rule != nil { 733*333d2b36SAndroid Build Coastguard Worker t.Errorf("There must be no rule for module %q output file %q", moduleName, outputFiles[0]) 734*333d2b36SAndroid Build Coastguard Worker } 735*333d2b36SAndroid Build Coastguard Worker } 736*333d2b36SAndroid Build Coastguard Worker} 737*333d2b36SAndroid Build Coastguard Worker 738*333d2b36SAndroid Build Coastguard Workerfunc CheckSnapshot(t *testing.T, ctx *android.TestContext, singleton android.TestingSingleton, moduleName, snapshotFilename, subDir, variant string) { 739*333d2b36SAndroid Build Coastguard Worker t.Helper() 740*333d2b36SAndroid Build Coastguard Worker checkSnapshotIncludeExclude(t, ctx, singleton, moduleName, snapshotFilename, subDir, variant, true, false) 741*333d2b36SAndroid Build Coastguard Worker} 742*333d2b36SAndroid Build Coastguard Worker 743*333d2b36SAndroid Build Coastguard Workerfunc CheckSnapshotExclude(t *testing.T, ctx *android.TestContext, singleton android.TestingSingleton, moduleName, snapshotFilename, subDir, variant string) { 744*333d2b36SAndroid Build Coastguard Worker t.Helper() 745*333d2b36SAndroid Build Coastguard Worker checkSnapshotIncludeExclude(t, ctx, singleton, moduleName, snapshotFilename, subDir, variant, false, false) 746*333d2b36SAndroid Build Coastguard Worker} 747*333d2b36SAndroid Build Coastguard Worker 748*333d2b36SAndroid Build Coastguard Workerfunc CheckSnapshotRule(t *testing.T, ctx *android.TestContext, singleton android.TestingSingleton, moduleName, snapshotFilename, subDir, variant string) { 749*333d2b36SAndroid Build Coastguard Worker t.Helper() 750*333d2b36SAndroid Build Coastguard Worker checkSnapshotIncludeExclude(t, ctx, singleton, moduleName, snapshotFilename, subDir, variant, true, true) 751*333d2b36SAndroid Build Coastguard Worker} 752*333d2b36SAndroid Build Coastguard Worker 753*333d2b36SAndroid Build Coastguard Workerfunc GetOutputPaths(ctx *android.TestContext, variant string, moduleNames []string) (paths android.Paths) { 754*333d2b36SAndroid Build Coastguard Worker for _, moduleName := range moduleNames { 755*333d2b36SAndroid Build Coastguard Worker module := ctx.ModuleForTests(moduleName, variant).Module().(*Module) 756*333d2b36SAndroid Build Coastguard Worker output := module.outputFile.Path().RelativeToTop() 757*333d2b36SAndroid Build Coastguard Worker paths = append(paths, output) 758*333d2b36SAndroid Build Coastguard Worker } 759*333d2b36SAndroid Build Coastguard Worker return paths 760*333d2b36SAndroid Build Coastguard Worker} 761