1*71db0c75SAndroid Build Coastguard Worker// https://ci.android.com/builds/latest/branches/aosp-build-tools/targets/linux/view/soong_build.html 2*71db0c75SAndroid Build Coastguard Worker 3*71db0c75SAndroid Build Coastguard Workercc_defaults { 4*71db0c75SAndroid Build Coastguard Worker name: "llvmlibc_defaults", 5*71db0c75SAndroid Build Coastguard Worker defaults: [ 6*71db0c75SAndroid Build Coastguard Worker // b/379681564: Bionic's dependencies all must support linux-bionic, 7*71db0c75SAndroid Build Coastguard Worker // which is not an enabled target by default. 8*71db0c75SAndroid Build Coastguard Worker "linux_bionic_supported", 9*71db0c75SAndroid Build Coastguard Worker ], 10*71db0c75SAndroid Build Coastguard Worker cppflags: [ 11*71db0c75SAndroid Build Coastguard Worker // Necessary to build. 12*71db0c75SAndroid Build Coastguard Worker "-DLIBC_NAMESPACE=llvmlibc", 13*71db0c75SAndroid Build Coastguard Worker ], 14*71db0c75SAndroid Build Coastguard Worker arch: { 15*71db0c75SAndroid Build Coastguard Worker // TODO: https://github.com/llvm/llvm-project/issues/93738 16*71db0c75SAndroid Build Coastguard Worker // llvm-libc does not (yet) support --target=armv7a-linux -mthumb 17*71db0c75SAndroid Build Coastguard Worker // Build in ARM mode, but perhaps revisit this in the future. 18*71db0c75SAndroid Build Coastguard Worker arm: { 19*71db0c75SAndroid Build Coastguard Worker instruction_set: "arm", 20*71db0c75SAndroid Build Coastguard Worker }, 21*71db0c75SAndroid Build Coastguard Worker }, 22*71db0c75SAndroid Build Coastguard Worker} 23*71db0c75SAndroid Build Coastguard Worker 24*71db0c75SAndroid Build Coastguard Workercc_library_static { 25*71db0c75SAndroid Build Coastguard Worker name: "llvmlibc", 26*71db0c75SAndroid Build Coastguard Worker defaults: ["llvmlibc_defaults"], 27*71db0c75SAndroid Build Coastguard Worker visibility: [ 28*71db0c75SAndroid Build Coastguard Worker "//bionic/libc", 29*71db0c75SAndroid Build Coastguard Worker ], 30*71db0c75SAndroid Build Coastguard Worker include_dirs: [ 31*71db0c75SAndroid Build Coastguard Worker "external/llvm-libc", 32*71db0c75SAndroid Build Coastguard Worker ], 33*71db0c75SAndroid Build Coastguard Worker srcs: [ 34*71db0c75SAndroid Build Coastguard Worker "src/stdlib/bsearch.cpp", 35*71db0c75SAndroid Build Coastguard Worker "src/string/memrchr.cpp", 36*71db0c75SAndroid Build Coastguard Worker "src/string/strlcat.cpp", 37*71db0c75SAndroid Build Coastguard Worker "src/string/strlcpy.cpp", 38*71db0c75SAndroid Build Coastguard Worker ], 39*71db0c75SAndroid Build Coastguard Worker cppflags: [ 40*71db0c75SAndroid Build Coastguard Worker // Necessary for non-namespaced exports. 41*71db0c75SAndroid Build Coastguard Worker "-DLIBC_COPT_PUBLIC_PACKAGING", 42*71db0c75SAndroid Build Coastguard Worker // TODO: remove when https://github.com/llvm/llvm-project/pull/116686 is 43*71db0c75SAndroid Build Coastguard Worker // integrated. 44*71db0c75SAndroid Build Coastguard Worker "-DLLVM_LIBC_FUNCTION_ATTR=__attribute__((visibility(\"default\")))", 45*71db0c75SAndroid Build Coastguard Worker ], 46*71db0c75SAndroid Build Coastguard Worker // No C++ runtime. 47*71db0c75SAndroid Build Coastguard Worker stl: "none", 48*71db0c75SAndroid Build Coastguard Worker // No crt_begin and crt_end. 49*71db0c75SAndroid Build Coastguard Worker nocrt: true, 50*71db0c75SAndroid Build Coastguard Worker // Needs to be unset from the default value in order to avoid creating a 51*71db0c75SAndroid Build Coastguard Worker // cyclic dependency between llvm-libc and bionic's libc. 52*71db0c75SAndroid Build Coastguard Worker system_shared_libs: [], 53*71db0c75SAndroid Build Coastguard Worker 54*71db0c75SAndroid Build Coastguard Worker // Bionic's libc's dependencies must have these set, or the build will fail 55*71db0c75SAndroid Build Coastguard Worker // due to missing a "ramdisk", "vendor_ramdisk", and "recovery" variants. 56*71db0c75SAndroid Build Coastguard Worker native_bridge_supported: true, 57*71db0c75SAndroid Build Coastguard Worker ramdisk_available: true, 58*71db0c75SAndroid Build Coastguard Worker recovery_available: true, 59*71db0c75SAndroid Build Coastguard Worker vendor_ramdisk_available: true, 60*71db0c75SAndroid Build Coastguard Worker 61*71db0c75SAndroid Build Coastguard Worker // Bionic's dependencies must also set this. 62*71db0c75SAndroid Build Coastguard Worker apex_available: ["com.android.runtime"], 63*71db0c75SAndroid Build Coastguard Worker 64*71db0c75SAndroid Build Coastguard Worker // When llvm-libc includes <stdlib.h>, use bionic's headers for these. 65*71db0c75SAndroid Build Coastguard Worker header_libs: ["libc_headers"], 66*71db0c75SAndroid Build Coastguard Worker 67*71db0c75SAndroid Build Coastguard Worker // TODO(b/378117947): push these into non-arch-specific `srcs` as llvm-libc 68*71db0c75SAndroid Build Coastguard Worker // functions are rolled out. 69*71db0c75SAndroid Build Coastguard Worker arch: { 70*71db0c75SAndroid Build Coastguard Worker arm64: { 71*71db0c75SAndroid Build Coastguard Worker // These have optimized baseline and vectorized impls from 72*71db0c75SAndroid Build Coastguard Worker // arm-optimized-routines, and aren't yet heavily optimized by 73*71db0c75SAndroid Build Coastguard Worker // llvm-libc. 74*71db0c75SAndroid Build Coastguard Worker exclude_srcs: [ 75*71db0c75SAndroid Build Coastguard Worker "src/string/memrchr.cpp", 76*71db0c75SAndroid Build Coastguard Worker ], 77*71db0c75SAndroid Build Coastguard Worker }, 78*71db0c75SAndroid Build Coastguard Worker x86_64: { 79*71db0c75SAndroid Build Coastguard Worker srcs: [ 80*71db0c75SAndroid Build Coastguard Worker "src/string/memchr.cpp", 81*71db0c75SAndroid Build Coastguard Worker "src/string/strchr.cpp", 82*71db0c75SAndroid Build Coastguard Worker "src/string/strchrnul.cpp", 83*71db0c75SAndroid Build Coastguard Worker "src/string/strnlen.cpp", 84*71db0c75SAndroid Build Coastguard Worker "src/string/strrchr.cpp", 85*71db0c75SAndroid Build Coastguard Worker ], 86*71db0c75SAndroid Build Coastguard Worker }, 87*71db0c75SAndroid Build Coastguard Worker }, 88*71db0c75SAndroid Build Coastguard Worker} 89*71db0c75SAndroid Build Coastguard Worker 90*71db0c75SAndroid Build Coastguard Workercc_test_library { 91*71db0c75SAndroid Build Coastguard Worker name: "llvmlibc_test_harness", 92*71db0c75SAndroid Build Coastguard Worker defaults: ["llvmlibc_defaults"], 93*71db0c75SAndroid Build Coastguard Worker srcs: [ 94*71db0c75SAndroid Build Coastguard Worker "test/UnitTest/LibcTest.cpp", 95*71db0c75SAndroid Build Coastguard Worker "test/UnitTest/TestLogger.cpp", 96*71db0c75SAndroid Build Coastguard Worker "test/UnitTest/LibcTestMain.cpp", 97*71db0c75SAndroid Build Coastguard Worker ], 98*71db0c75SAndroid Build Coastguard Worker} 99*71db0c75SAndroid Build Coastguard Worker 100*71db0c75SAndroid Build Coastguard Workercc_defaults { 101*71db0c75SAndroid Build Coastguard Worker name: "llvmlibc_test_defaults", 102*71db0c75SAndroid Build Coastguard Worker defaults: ["llvmlibc_defaults"], 103*71db0c75SAndroid Build Coastguard Worker static_libs: [ 104*71db0c75SAndroid Build Coastguard Worker "llvmlibc", 105*71db0c75SAndroid Build Coastguard Worker "llvmlibc_test_harness", 106*71db0c75SAndroid Build Coastguard Worker ], 107*71db0c75SAndroid Build Coastguard Worker // Do not try to link against gtest. llvm-libc has its own pseudo-gtest 108*71db0c75SAndroid Build Coastguard Worker // framework. 109*71db0c75SAndroid Build Coastguard Worker gtest: false, 110*71db0c75SAndroid Build Coastguard Worker // Needed to avoid the diagnostic: 111*71db0c75SAndroid Build Coastguard Worker // WARNING: Please add {test name} to either suite: 112*71db0c75SAndroid Build Coastguard Worker // ['device-tests', 'general-tests'] for this TEST_MAPPING file to work 113*71db0c75SAndroid Build Coastguard Worker // with TreeHugger. 114*71db0c75SAndroid Build Coastguard Worker test_suites: ["device-tests"], 115*71db0c75SAndroid Build Coastguard Worker} 116*71db0c75SAndroid Build Coastguard Worker 117*71db0c75SAndroid Build Coastguard Workercc_test { 118*71db0c75SAndroid Build Coastguard Worker // TODO: rename test to simply llvmlibc_tests. Needs to go through a post 119*71db0c75SAndroid Build Coastguard Worker // submit cycle before can be renamed for presubmit. 120*71db0c75SAndroid Build Coastguard Worker name: "llvmlibc_stdlib_bsearch_test", 121*71db0c75SAndroid Build Coastguard Worker defaults: ["llvmlibc_test_defaults"], 122*71db0c75SAndroid Build Coastguard Worker srcs: [ 123*71db0c75SAndroid Build Coastguard Worker "test/src/stdlib/bsearch_test.cpp", 124*71db0c75SAndroid Build Coastguard Worker "test/src/string/memrchr_test.cpp", 125*71db0c75SAndroid Build Coastguard Worker "test/src/string/strlcat_test.cpp", 126*71db0c75SAndroid Build Coastguard Worker "test/src/string/strlcpy_test.cpp", 127*71db0c75SAndroid Build Coastguard Worker ], 128*71db0c75SAndroid Build Coastguard Worker arch: { 129*71db0c75SAndroid Build Coastguard Worker arm64: { 130*71db0c75SAndroid Build Coastguard Worker // Match exclusions in ':llvmlibc' for arm64. 131*71db0c75SAndroid Build Coastguard Worker exclude_srcs: [ 132*71db0c75SAndroid Build Coastguard Worker "test/src/string/memrchr_test.cpp", 133*71db0c75SAndroid Build Coastguard Worker ], 134*71db0c75SAndroid Build Coastguard Worker }, 135*71db0c75SAndroid Build Coastguard Worker x86_64: { 136*71db0c75SAndroid Build Coastguard Worker // TODO(b/378117947): push these into non-arch-specific `srcs` as 137*71db0c75SAndroid Build Coastguard Worker // llvm-libc functions are rolled out. 138*71db0c75SAndroid Build Coastguard Worker srcs: [ 139*71db0c75SAndroid Build Coastguard Worker "test/src/string/memchr_test.cpp", 140*71db0c75SAndroid Build Coastguard Worker "test/src/string/strchr_test.cpp", 141*71db0c75SAndroid Build Coastguard Worker "test/src/string/strchrnul_test.cpp", 142*71db0c75SAndroid Build Coastguard Worker "test/src/string/strnlen_test.cpp", 143*71db0c75SAndroid Build Coastguard Worker "test/src/string/strrchr_test.cpp", 144*71db0c75SAndroid Build Coastguard Worker ], 145*71db0c75SAndroid Build Coastguard Worker }, 146*71db0c75SAndroid Build Coastguard Worker }, 147*71db0c75SAndroid Build Coastguard Worker} 148