1*c9945492SAndroid Build Coastguard Worker// Build musl libc from source to eventually use as the libc for host modules in the platform build. 2*c9945492SAndroid Build Coastguard Worker// The list of sources to compile for each library is loaded from sources.bp, which is generated 3*c9945492SAndroid Build Coastguard Worker// by generate_bp.py. 4*c9945492SAndroid Build Coastguard Worker 5*c9945492SAndroid Build Coastguard Workerpackage { 6*c9945492SAndroid Build Coastguard Worker default_visibility: ["//visibility:private"], 7*c9945492SAndroid Build Coastguard Worker default_applicable_licenses: ["musl_license"], 8*c9945492SAndroid Build Coastguard Worker} 9*c9945492SAndroid Build Coastguard Worker 10*c9945492SAndroid Build Coastguard Workerlicense { 11*c9945492SAndroid Build Coastguard Worker name: "musl_license", 12*c9945492SAndroid Build Coastguard Worker visibility: [":__subpackages__"], 13*c9945492SAndroid Build Coastguard Worker license_kinds: [ 14*c9945492SAndroid Build Coastguard Worker "SPDX-license-identifier-MIT", 15*c9945492SAndroid Build Coastguard Worker "SPDX-license-identifier-BSD", 16*c9945492SAndroid Build Coastguard Worker ], 17*c9945492SAndroid Build Coastguard Worker license_text: ["COPYRIGHT"], 18*c9945492SAndroid Build Coastguard Worker} 19*c9945492SAndroid Build Coastguard Worker 20*c9945492SAndroid Build Coastguard Workercc_library_headers { 21*c9945492SAndroid Build Coastguard Worker name: "libc_musl_arch_headers", 22*c9945492SAndroid Build Coastguard Worker host_supported: true, 23*c9945492SAndroid Build Coastguard Worker device_supported: false, 24*c9945492SAndroid Build Coastguard Worker system_shared_libs: [], 25*c9945492SAndroid Build Coastguard Worker generated_headers: [ 26*c9945492SAndroid Build Coastguard Worker "libc_musl_alltypes.h", 27*c9945492SAndroid Build Coastguard Worker "libc_musl_syscall.h", 28*c9945492SAndroid Build Coastguard Worker ], 29*c9945492SAndroid Build Coastguard Worker export_generated_headers: [ 30*c9945492SAndroid Build Coastguard Worker "libc_musl_alltypes.h", 31*c9945492SAndroid Build Coastguard Worker "libc_musl_syscall.h", 32*c9945492SAndroid Build Coastguard Worker ], 33*c9945492SAndroid Build Coastguard Worker export_include_dirs: [ 34*c9945492SAndroid Build Coastguard Worker "arch/generic", 35*c9945492SAndroid Build Coastguard Worker ], 36*c9945492SAndroid Build Coastguard Worker arch: { 37*c9945492SAndroid Build Coastguard Worker arm: { 38*c9945492SAndroid Build Coastguard Worker export_include_dirs: ["arch/arm"], 39*c9945492SAndroid Build Coastguard Worker }, 40*c9945492SAndroid Build Coastguard Worker arm64: { 41*c9945492SAndroid Build Coastguard Worker export_include_dirs: ["arch/aarch64"], 42*c9945492SAndroid Build Coastguard Worker }, 43*c9945492SAndroid Build Coastguard Worker x86: { 44*c9945492SAndroid Build Coastguard Worker export_include_dirs: ["arch/i386"], 45*c9945492SAndroid Build Coastguard Worker }, 46*c9945492SAndroid Build Coastguard Worker x86_64: { 47*c9945492SAndroid Build Coastguard Worker export_include_dirs: ["arch/x86_64"], 48*c9945492SAndroid Build Coastguard Worker }, 49*c9945492SAndroid Build Coastguard Worker }, 50*c9945492SAndroid Build Coastguard Worker} 51*c9945492SAndroid Build Coastguard Worker 52*c9945492SAndroid Build Coastguard Workercc_library_headers { 53*c9945492SAndroid Build Coastguard Worker name: "libc_musl_private_headers", 54*c9945492SAndroid Build Coastguard Worker host_supported: true, 55*c9945492SAndroid Build Coastguard Worker device_supported: false, 56*c9945492SAndroid Build Coastguard Worker system_shared_libs: [], 57*c9945492SAndroid Build Coastguard Worker generated_headers: [ 58*c9945492SAndroid Build Coastguard Worker "libc_musl_version.h", 59*c9945492SAndroid Build Coastguard Worker ], 60*c9945492SAndroid Build Coastguard Worker export_generated_headers: [ 61*c9945492SAndroid Build Coastguard Worker "libc_musl_version.h", 62*c9945492SAndroid Build Coastguard Worker ], 63*c9945492SAndroid Build Coastguard Worker export_include_dirs: [ 64*c9945492SAndroid Build Coastguard Worker "src/include", 65*c9945492SAndroid Build Coastguard Worker "src/internal", 66*c9945492SAndroid Build Coastguard Worker ], 67*c9945492SAndroid Build Coastguard Worker} 68*c9945492SAndroid Build Coastguard Worker 69*c9945492SAndroid Build Coastguard Workercc_library_headers { 70*c9945492SAndroid Build Coastguard Worker name: "libc_musl_public_headers", 71*c9945492SAndroid Build Coastguard Worker host_supported: true, 72*c9945492SAndroid Build Coastguard Worker device_supported: false, 73*c9945492SAndroid Build Coastguard Worker system_shared_libs: [], 74*c9945492SAndroid Build Coastguard Worker export_system_include_dirs: [ 75*c9945492SAndroid Build Coastguard Worker "android/include", 76*c9945492SAndroid Build Coastguard Worker "include", 77*c9945492SAndroid Build Coastguard Worker ], 78*c9945492SAndroid Build Coastguard Worker} 79*c9945492SAndroid Build Coastguard Worker 80*c9945492SAndroid Build Coastguard Workercc_defaults { 81*c9945492SAndroid Build Coastguard Worker name: "libc_musl_base_defaults", 82*c9945492SAndroid Build Coastguard Worker host_supported: true, 83*c9945492SAndroid Build Coastguard Worker device_supported: false, 84*c9945492SAndroid Build Coastguard Worker system_shared_libs: [], 85*c9945492SAndroid Build Coastguard Worker cflags: [ 86*c9945492SAndroid Build Coastguard Worker // CFLAGS_C99FSE 87*c9945492SAndroid Build Coastguard Worker "-nostdinc", 88*c9945492SAndroid Build Coastguard Worker "-ffreestanding", 89*c9945492SAndroid Build Coastguard Worker "-Wa,--noexecstack", 90*c9945492SAndroid Build Coastguard Worker 91*c9945492SAndroid Build Coastguard Worker // CFLAGS_AUTO 92*c9945492SAndroid Build Coastguard Worker "-Os", 93*c9945492SAndroid Build Coastguard Worker "-pipe", 94*c9945492SAndroid Build Coastguard Worker "-fomit-frame-pointer", 95*c9945492SAndroid Build Coastguard Worker "-fno-unwind-tables", 96*c9945492SAndroid Build Coastguard Worker "-fno-asynchronous-unwind-tables", 97*c9945492SAndroid Build Coastguard Worker "-ffunction-sections", 98*c9945492SAndroid Build Coastguard Worker "-fdata-sections", 99*c9945492SAndroid Build Coastguard Worker //"-w", 100*c9945492SAndroid Build Coastguard Worker "-Wno-pointer-to-int-cast", 101*c9945492SAndroid Build Coastguard Worker "-Werror=implicit-function-declaration", 102*c9945492SAndroid Build Coastguard Worker "-Werror=implicit-int", 103*c9945492SAndroid Build Coastguard Worker "-Werror=pointer-sign", 104*c9945492SAndroid Build Coastguard Worker "-Werror=pointer-arith", 105*c9945492SAndroid Build Coastguard Worker "-Werror=int-conversion", 106*c9945492SAndroid Build Coastguard Worker "-Werror=incompatible-pointer-types", 107*c9945492SAndroid Build Coastguard Worker "-Qunused-arguments", 108*c9945492SAndroid Build Coastguard Worker "-Waddress", 109*c9945492SAndroid Build Coastguard Worker "-Warray-bounds", 110*c9945492SAndroid Build Coastguard Worker "-Wchar-subscripts", 111*c9945492SAndroid Build Coastguard Worker "-Wduplicate-decl-specifier", 112*c9945492SAndroid Build Coastguard Worker "-Winit-self", 113*c9945492SAndroid Build Coastguard Worker "-Wreturn-type", 114*c9945492SAndroid Build Coastguard Worker "-Wsequence-point", 115*c9945492SAndroid Build Coastguard Worker "-Wstrict-aliasing", 116*c9945492SAndroid Build Coastguard Worker "-Wunused-function", 117*c9945492SAndroid Build Coastguard Worker "-Wunused-label", 118*c9945492SAndroid Build Coastguard Worker "-Wunused-variable", 119*c9945492SAndroid Build Coastguard Worker 120*c9945492SAndroid Build Coastguard Worker // CFLAGS_ALL 121*c9945492SAndroid Build Coastguard Worker "-D_XOPEN_SOURCE=700", 122*c9945492SAndroid Build Coastguard Worker 123*c9945492SAndroid Build Coastguard Worker // undefine NDEBUG from global flags, musl defines it locally 124*c9945492SAndroid Build Coastguard Worker "-UNDEBUG", 125*c9945492SAndroid Build Coastguard Worker 126*c9945492SAndroid Build Coastguard Worker // disable warnings: 127*c9945492SAndroid Build Coastguard Worker "-Wno-bitwise-op-parentheses", 128*c9945492SAndroid Build Coastguard Worker "-Wno-dangling-else", 129*c9945492SAndroid Build Coastguard Worker "-Wno-ignored-attributes", 130*c9945492SAndroid Build Coastguard Worker "-Wno-logical-op-parentheses", 131*c9945492SAndroid Build Coastguard Worker "-Wno-missing-braces", 132*c9945492SAndroid Build Coastguard Worker "-Wno-missing-field-initializers", 133*c9945492SAndroid Build Coastguard Worker "-Wno-parentheses", 134*c9945492SAndroid Build Coastguard Worker "-Wno-shift-op-parentheses", 135*c9945492SAndroid Build Coastguard Worker "-Wno-string-plus-int", 136*c9945492SAndroid Build Coastguard Worker "-Wno-unused-parameter", 137*c9945492SAndroid Build Coastguard Worker ], 138*c9945492SAndroid Build Coastguard Worker 139*c9945492SAndroid Build Coastguard Worker arch: { 140*c9945492SAndroid Build Coastguard Worker x86: { 141*c9945492SAndroid Build Coastguard Worker cflags: ["-frounding-math"], 142*c9945492SAndroid Build Coastguard Worker }, 143*c9945492SAndroid Build Coastguard Worker x86_64: { 144*c9945492SAndroid Build Coastguard Worker cflags: ["-frounding-math"], 145*c9945492SAndroid Build Coastguard Worker }, 146*c9945492SAndroid Build Coastguard Worker arm: { 147*c9945492SAndroid Build Coastguard Worker cflags: ["-Wno-ignored-pragmas"], 148*c9945492SAndroid Build Coastguard Worker }, 149*c9945492SAndroid Build Coastguard Worker arm64: { 150*c9945492SAndroid Build Coastguard Worker cflags: ["-Wno-ignored-pragmas"], 151*c9945492SAndroid Build Coastguard Worker }, 152*c9945492SAndroid Build Coastguard Worker }, 153*c9945492SAndroid Build Coastguard Worker 154*c9945492SAndroid Build Coastguard Worker ldflags: [ 155*c9945492SAndroid Build Coastguard Worker "-Wl,--sort-section,alignment", 156*c9945492SAndroid Build Coastguard Worker "-Wl,--sort-common", 157*c9945492SAndroid Build Coastguard Worker "-Wl,--gc-sections", 158*c9945492SAndroid Build Coastguard Worker "-Wl,--hash-style=both", 159*c9945492SAndroid Build Coastguard Worker "-Wl,--no-undefined", 160*c9945492SAndroid Build Coastguard Worker // Can't use --exclude-libs=ALL, that excludes the static libraries 161*c9945492SAndroid Build Coastguard Worker // used for building subparts of libc_musl. 162*c9945492SAndroid Build Coastguard Worker //"-Wl,--exclude-libs=ALL", 163*c9945492SAndroid Build Coastguard Worker "-Wl,--exclude-libs=libgcc.a", 164*c9945492SAndroid Build Coastguard Worker "-Wl,--exclude-libs=libgcc_stripped.a", 165*c9945492SAndroid Build Coastguard Worker "-Wl,--exclude-libs=libclang_rt.builtins-arm-android.a", 166*c9945492SAndroid Build Coastguard Worker "-Wl,--exclude-libs=libclang_rt.builtins-aarch64-android.a", 167*c9945492SAndroid Build Coastguard Worker "-Wl,--exclude-libs=libclang_rt.builtins-i686-android.a", 168*c9945492SAndroid Build Coastguard Worker "-Wl,--exclude-libs=libclang_rt.builtins-x86_64-android.a", 169*c9945492SAndroid Build Coastguard Worker ], 170*c9945492SAndroid Build Coastguard Worker 171*c9945492SAndroid Build Coastguard Worker asflags: ["-Wno-unused-command-line-argument"], 172*c9945492SAndroid Build Coastguard Worker 173*c9945492SAndroid Build Coastguard Worker stl: "none", 174*c9945492SAndroid Build Coastguard Worker c_std: "c99", 175*c9945492SAndroid Build Coastguard Worker sanitize: { 176*c9945492SAndroid Build Coastguard Worker never: true, 177*c9945492SAndroid Build Coastguard Worker }, 178*c9945492SAndroid Build Coastguard Worker target: { 179*c9945492SAndroid Build Coastguard Worker darwin: { 180*c9945492SAndroid Build Coastguard Worker enabled: false, 181*c9945492SAndroid Build Coastguard Worker }, 182*c9945492SAndroid Build Coastguard Worker bionic: { 183*c9945492SAndroid Build Coastguard Worker enabled: false, 184*c9945492SAndroid Build Coastguard Worker }, 185*c9945492SAndroid Build Coastguard Worker glibc: { 186*c9945492SAndroid Build Coastguard Worker enabled: false, 187*c9945492SAndroid Build Coastguard Worker }, 188*c9945492SAndroid Build Coastguard Worker }, 189*c9945492SAndroid Build Coastguard Worker lto: { 190*c9945492SAndroid Build Coastguard Worker never: true, 191*c9945492SAndroid Build Coastguard Worker }, 192*c9945492SAndroid Build Coastguard Worker} 193*c9945492SAndroid Build Coastguard Worker 194*c9945492SAndroid Build Coastguard Workercc_defaults { 195*c9945492SAndroid Build Coastguard Worker name: "libc_musl_defaults", 196*c9945492SAndroid Build Coastguard Worker defaults: ["libc_musl_base_defaults"], 197*c9945492SAndroid Build Coastguard Worker header_libs: [ 198*c9945492SAndroid Build Coastguard Worker // The order here is very important, private headers like src/include/features.h override 199*c9945492SAndroid Build Coastguard Worker // public headers like include/features.h, and arch headers like arch/x86_64/ksigaction.h 200*c9945492SAndroid Build Coastguard Worker // override private headers like src/internal/ksigaction.h. 201*c9945492SAndroid Build Coastguard Worker "libc_musl_arch_headers", 202*c9945492SAndroid Build Coastguard Worker "libc_musl_private_headers", 203*c9945492SAndroid Build Coastguard Worker "libc_musl_public_headers", 204*c9945492SAndroid Build Coastguard Worker ], 205*c9945492SAndroid Build Coastguard Worker} 206*c9945492SAndroid Build Coastguard Worker 207*c9945492SAndroid Build Coastguard Workercc_library_headers { 208*c9945492SAndroid Build Coastguard Worker name: "libc_musl_headers", 209*c9945492SAndroid Build Coastguard Worker visibility: ["//bionic/libc"], 210*c9945492SAndroid Build Coastguard Worker host_supported: true, 211*c9945492SAndroid Build Coastguard Worker device_supported: false, 212*c9945492SAndroid Build Coastguard Worker system_shared_libs: [], 213*c9945492SAndroid Build Coastguard Worker export_header_lib_headers: [ 214*c9945492SAndroid Build Coastguard Worker "libc_musl_arch_headers", 215*c9945492SAndroid Build Coastguard Worker "libc_musl_public_headers", 216*c9945492SAndroid Build Coastguard Worker "libc_uapi_headers", 217*c9945492SAndroid Build Coastguard Worker ], 218*c9945492SAndroid Build Coastguard Worker header_libs: [ 219*c9945492SAndroid Build Coastguard Worker "libc_musl_arch_headers", 220*c9945492SAndroid Build Coastguard Worker "libc_musl_public_headers", 221*c9945492SAndroid Build Coastguard Worker "libc_uapi_headers", 222*c9945492SAndroid Build Coastguard Worker ], 223*c9945492SAndroid Build Coastguard Worker} 224*c9945492SAndroid Build Coastguard Worker 225*c9945492SAndroid Build Coastguard Worker// 226*c9945492SAndroid Build Coastguard Worker// The main musl libc library 227*c9945492SAndroid Build Coastguard Worker// 228*c9945492SAndroid Build Coastguard Worker 229*c9945492SAndroid Build Coastguard Workercc_library { 230*c9945492SAndroid Build Coastguard Worker name: "libc_musl", 231*c9945492SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 232*c9945492SAndroid Build Coastguard Worker defaults: ["libc_musl_defaults"], 233*c9945492SAndroid Build Coastguard Worker whole_static_libs: ["libc_musl_static"], 234*c9945492SAndroid Build Coastguard Worker shared: { 235*c9945492SAndroid Build Coastguard Worker whole_static_libs: ["libc_musl_ldso"], 236*c9945492SAndroid Build Coastguard Worker }, 237*c9945492SAndroid Build Coastguard Worker ldflags: [ 238*c9945492SAndroid Build Coastguard Worker "-Wl,-e,_dlstart", 239*c9945492SAndroid Build Coastguard Worker "-nostdlib", 240*c9945492SAndroid Build Coastguard Worker ], 241*c9945492SAndroid Build Coastguard Worker dynamic_list: "dynamic.list", 242*c9945492SAndroid Build Coastguard Worker export_header_lib_headers: [ 243*c9945492SAndroid Build Coastguard Worker "libc_musl_arch_headers", 244*c9945492SAndroid Build Coastguard Worker "libc_musl_public_headers", 245*c9945492SAndroid Build Coastguard Worker "libc_uapi_headers", 246*c9945492SAndroid Build Coastguard Worker ], 247*c9945492SAndroid Build Coastguard Worker header_libs: [ 248*c9945492SAndroid Build Coastguard Worker "libc_uapi_headers", 249*c9945492SAndroid Build Coastguard Worker ], 250*c9945492SAndroid Build Coastguard Worker} 251*c9945492SAndroid Build Coastguard Worker 252*c9945492SAndroid Build Coastguard Worker// All the static parts of the main musl libc. Don't use this directly, use 253*c9945492SAndroid Build Coastguard Worker// the version exported through libc_musl instead. 254*c9945492SAndroid Build Coastguard Workercc_library_static { 255*c9945492SAndroid Build Coastguard Worker name: "libc_musl_static", 256*c9945492SAndroid Build Coastguard Worker defaults: [ 257*c9945492SAndroid Build Coastguard Worker "libc_musl_defaults", 258*c9945492SAndroid Build Coastguard Worker "libc_musl_sources", 259*c9945492SAndroid Build Coastguard Worker ], 260*c9945492SAndroid Build Coastguard Worker whole_static_libs: [ 261*c9945492SAndroid Build Coastguard Worker "libc_musl_opt", 262*c9945492SAndroid Build Coastguard Worker "libc_musl_opt_nossp", 263*c9945492SAndroid Build Coastguard Worker "libc_musl_nossp", 264*c9945492SAndroid Build Coastguard Worker "libexecinfo", 265*c9945492SAndroid Build Coastguard Worker "libb64", 266*c9945492SAndroid Build Coastguard Worker "libunwind", 267*c9945492SAndroid Build Coastguard Worker ], 268*c9945492SAndroid Build Coastguard Worker multilib: { 269*c9945492SAndroid Build Coastguard Worker lib32: { 270*c9945492SAndroid Build Coastguard Worker whole_static_libs: ["libc_musl_compat32"], 271*c9945492SAndroid Build Coastguard Worker }, 272*c9945492SAndroid Build Coastguard Worker }, 273*c9945492SAndroid Build Coastguard Worker export_header_lib_headers: [ 274*c9945492SAndroid Build Coastguard Worker "libc_musl_arch_headers", 275*c9945492SAndroid Build Coastguard Worker "libc_musl_public_headers", 276*c9945492SAndroid Build Coastguard Worker "libc_uapi_headers", 277*c9945492SAndroid Build Coastguard Worker ], 278*c9945492SAndroid Build Coastguard Worker header_libs: [ 279*c9945492SAndroid Build Coastguard Worker "libc_uapi_headers", 280*c9945492SAndroid Build Coastguard Worker ], 281*c9945492SAndroid Build Coastguard Worker} 282*c9945492SAndroid Build Coastguard Worker 283*c9945492SAndroid Build Coastguard Worker// Musl sources that are compiled with -O3 284*c9945492SAndroid Build Coastguard Workercc_library_static { 285*c9945492SAndroid Build Coastguard Worker name: "libc_musl_opt", 286*c9945492SAndroid Build Coastguard Worker defaults: [ 287*c9945492SAndroid Build Coastguard Worker "libc_musl_defaults", 288*c9945492SAndroid Build Coastguard Worker "libc_musl_opt_sources", 289*c9945492SAndroid Build Coastguard Worker ], 290*c9945492SAndroid Build Coastguard Worker cflags: ["-O3"], 291*c9945492SAndroid Build Coastguard Worker} 292*c9945492SAndroid Build Coastguard Worker 293*c9945492SAndroid Build Coastguard Worker// Musl sources that are compiled with -O3 and -fno-stack-protector 294*c9945492SAndroid Build Coastguard Workercc_library_static { 295*c9945492SAndroid Build Coastguard Worker name: "libc_musl_opt_nossp", 296*c9945492SAndroid Build Coastguard Worker defaults: [ 297*c9945492SAndroid Build Coastguard Worker "libc_musl_defaults", 298*c9945492SAndroid Build Coastguard Worker "libc_musl_opt_nossp_sources", 299*c9945492SAndroid Build Coastguard Worker ], 300*c9945492SAndroid Build Coastguard Worker cflags: [ 301*c9945492SAndroid Build Coastguard Worker "-O3", 302*c9945492SAndroid Build Coastguard Worker "-fno-stack-protector", 303*c9945492SAndroid Build Coastguard Worker ], 304*c9945492SAndroid Build Coastguard Worker} 305*c9945492SAndroid Build Coastguard Worker 306*c9945492SAndroid Build Coastguard Worker// Musl sources that are compiled with -fno-stack-protector 307*c9945492SAndroid Build Coastguard Workercc_library_static { 308*c9945492SAndroid Build Coastguard Worker name: "libc_musl_nossp", 309*c9945492SAndroid Build Coastguard Worker defaults: [ 310*c9945492SAndroid Build Coastguard Worker "libc_musl_defaults", 311*c9945492SAndroid Build Coastguard Worker "libc_musl_nossp_sources", 312*c9945492SAndroid Build Coastguard Worker ], 313*c9945492SAndroid Build Coastguard Worker cflags: ["-fno-stack-protector"], 314*c9945492SAndroid Build Coastguard Worker} 315*c9945492SAndroid Build Coastguard Worker 316*c9945492SAndroid Build Coastguard Worker// Musl sources for 32-bit architectures 317*c9945492SAndroid Build Coastguard Workercc_library_static { 318*c9945492SAndroid Build Coastguard Worker name: "libc_musl_compat32", 319*c9945492SAndroid Build Coastguard Worker defaults: [ 320*c9945492SAndroid Build Coastguard Worker "libc_musl_defaults", 321*c9945492SAndroid Build Coastguard Worker "libc_musl_compat32_sources", 322*c9945492SAndroid Build Coastguard Worker ], 323*c9945492SAndroid Build Coastguard Worker} 324*c9945492SAndroid Build Coastguard Worker 325*c9945492SAndroid Build Coastguard Worker// Musl sources for the dynamic linker. 326*c9945492SAndroid Build Coastguard Workercc_library_static { 327*c9945492SAndroid Build Coastguard Worker name: "libc_musl_ldso", 328*c9945492SAndroid Build Coastguard Worker defaults: [ 329*c9945492SAndroid Build Coastguard Worker "libc_musl_defaults", 330*c9945492SAndroid Build Coastguard Worker "libc_musl_ldso_sources", 331*c9945492SAndroid Build Coastguard Worker ], 332*c9945492SAndroid Build Coastguard Worker cflags: [ 333*c9945492SAndroid Build Coastguard Worker "-fno-stack-protector", 334*c9945492SAndroid Build Coastguard Worker "-DLIBC_SONAME=libc_musl.so", 335*c9945492SAndroid Build Coastguard Worker ], 336*c9945492SAndroid Build Coastguard Worker} 337*c9945492SAndroid Build Coastguard Worker 338*c9945492SAndroid Build Coastguard Worker// An attempt to compile the dynamic linker as a standalone library separate from libc_musl.so. 339*c9945492SAndroid Build Coastguard Worker// Not used yet. 340*c9945492SAndroid Build Coastguard Workercc_library_shared { 341*c9945492SAndroid Build Coastguard Worker name: "musl_linker", 342*c9945492SAndroid Build Coastguard Worker defaults: [ 343*c9945492SAndroid Build Coastguard Worker "libc_musl_defaults", 344*c9945492SAndroid Build Coastguard Worker ], 345*c9945492SAndroid Build Coastguard Worker nocrt: true, 346*c9945492SAndroid Build Coastguard Worker static_libs: [ 347*c9945492SAndroid Build Coastguard Worker "libc_musl_ldso", 348*c9945492SAndroid Build Coastguard Worker "libc_musl", 349*c9945492SAndroid Build Coastguard Worker ], 350*c9945492SAndroid Build Coastguard Worker ldflags: [ 351*c9945492SAndroid Build Coastguard Worker "-Wl,-e,_dlstart", 352*c9945492SAndroid Build Coastguard Worker "-nostdlib", 353*c9945492SAndroid Build Coastguard Worker "-Wl,--exclude-libs=libc_musl.a", 354*c9945492SAndroid Build Coastguard Worker ], 355*c9945492SAndroid Build Coastguard Worker} 356*c9945492SAndroid Build Coastguard Worker 357*c9945492SAndroid Build Coastguard Worker// 358*c9945492SAndroid Build Coastguard Worker// The musl CRT objects 359*c9945492SAndroid Build Coastguard Worker// 360*c9945492SAndroid Build Coastguard Worker 361*c9945492SAndroid Build Coastguard Workercc_defaults { 362*c9945492SAndroid Build Coastguard Worker name: "libc_musl_crt_defaults", 363*c9945492SAndroid Build Coastguard Worker defaults: ["libc_musl_base_defaults"], 364*c9945492SAndroid Build Coastguard Worker cflags: [ 365*c9945492SAndroid Build Coastguard Worker // These are required to make sure the C code in crt/*.c 366*c9945492SAndroid Build Coastguard Worker // doesn't have any dependencies on libc. 367*c9945492SAndroid Build Coastguard Worker "-fno-stack-protector", 368*c9945492SAndroid Build Coastguard Worker "-ftrivial-auto-var-init=uninitialized", 369*c9945492SAndroid Build Coastguard Worker ], 370*c9945492SAndroid Build Coastguard Worker ldflags: [ 371*c9945492SAndroid Build Coastguard Worker "-Wl,--no-gc-sections", 372*c9945492SAndroid Build Coastguard Worker ], 373*c9945492SAndroid Build Coastguard Worker 374*c9945492SAndroid Build Coastguard Worker // The headers below are the same as the header_libs in 375*c9945492SAndroid Build Coastguard Worker // libc_musl_defaults, but bazel considers the crt depending 376*c9945492SAndroid Build Coastguard Worker // on a header lib to be a circular dependency (toolchain -> 377*c9945492SAndroid Build Coastguard Worker // crt objects -> header lib -> toolchain). 378*c9945492SAndroid Build Coastguard Worker // TODO(b/263407827): go back to using header_libs once bazel 379*c9945492SAndroid Build Coastguard Worker // supports it without introducing a dependency on the toolchain. 380*c9945492SAndroid Build Coastguard Worker arch: { 381*c9945492SAndroid Build Coastguard Worker arm: { 382*c9945492SAndroid Build Coastguard Worker local_include_dirs: ["arch/arm"], 383*c9945492SAndroid Build Coastguard Worker }, 384*c9945492SAndroid Build Coastguard Worker arm64: { 385*c9945492SAndroid Build Coastguard Worker local_include_dirs: ["arch/aarch64"], 386*c9945492SAndroid Build Coastguard Worker }, 387*c9945492SAndroid Build Coastguard Worker x86: { 388*c9945492SAndroid Build Coastguard Worker local_include_dirs: ["arch/i386"], 389*c9945492SAndroid Build Coastguard Worker }, 390*c9945492SAndroid Build Coastguard Worker x86_64: { 391*c9945492SAndroid Build Coastguard Worker local_include_dirs: ["arch/x86_64"], 392*c9945492SAndroid Build Coastguard Worker }, 393*c9945492SAndroid Build Coastguard Worker }, 394*c9945492SAndroid Build Coastguard Worker generated_headers: [ 395*c9945492SAndroid Build Coastguard Worker "libc_musl_alltypes.h", 396*c9945492SAndroid Build Coastguard Worker "libc_musl_syscall.h", 397*c9945492SAndroid Build Coastguard Worker "libc_musl_version.h", 398*c9945492SAndroid Build Coastguard Worker ], 399*c9945492SAndroid Build Coastguard Worker local_include_dirs: [ 400*c9945492SAndroid Build Coastguard Worker "arch/generic", 401*c9945492SAndroid Build Coastguard Worker "src/include", 402*c9945492SAndroid Build Coastguard Worker "src/internal", 403*c9945492SAndroid Build Coastguard Worker "android/include", 404*c9945492SAndroid Build Coastguard Worker "include", 405*c9945492SAndroid Build Coastguard Worker ], 406*c9945492SAndroid Build Coastguard Worker} 407*c9945492SAndroid Build Coastguard Worker 408*c9945492SAndroid Build Coastguard Workercc_object { 409*c9945492SAndroid Build Coastguard Worker name: "libc_musl_crt1", 410*c9945492SAndroid Build Coastguard Worker defaults: [ 411*c9945492SAndroid Build Coastguard Worker "libc_musl_crt_defaults", 412*c9945492SAndroid Build Coastguard Worker "libc_musl_crt1_sources", 413*c9945492SAndroid Build Coastguard Worker ], 414*c9945492SAndroid Build Coastguard Worker} 415*c9945492SAndroid Build Coastguard Worker 416*c9945492SAndroid Build Coastguard Workercc_object { 417*c9945492SAndroid Build Coastguard Worker name: "libc_musl_crti", 418*c9945492SAndroid Build Coastguard Worker defaults: [ 419*c9945492SAndroid Build Coastguard Worker "libc_musl_crt_defaults", 420*c9945492SAndroid Build Coastguard Worker "libc_musl_crti_sources", 421*c9945492SAndroid Build Coastguard Worker ], 422*c9945492SAndroid Build Coastguard Worker} 423*c9945492SAndroid Build Coastguard Worker 424*c9945492SAndroid Build Coastguard Workercc_object { 425*c9945492SAndroid Build Coastguard Worker name: "libc_musl_crtn", 426*c9945492SAndroid Build Coastguard Worker defaults: [ 427*c9945492SAndroid Build Coastguard Worker "libc_musl_crt_defaults", 428*c9945492SAndroid Build Coastguard Worker "libc_musl_crtn_sources", 429*c9945492SAndroid Build Coastguard Worker ], 430*c9945492SAndroid Build Coastguard Worker} 431*c9945492SAndroid Build Coastguard Worker 432*c9945492SAndroid Build Coastguard Workercc_object { 433*c9945492SAndroid Build Coastguard Worker name: "libc_musl_rcrt1", 434*c9945492SAndroid Build Coastguard Worker defaults: [ 435*c9945492SAndroid Build Coastguard Worker "libc_musl_crt_defaults", 436*c9945492SAndroid Build Coastguard Worker "libc_musl_rcrt1_sources", 437*c9945492SAndroid Build Coastguard Worker ], 438*c9945492SAndroid Build Coastguard Worker} 439*c9945492SAndroid Build Coastguard Worker 440*c9945492SAndroid Build Coastguard Workercc_object { 441*c9945492SAndroid Build Coastguard Worker name: "libc_musl_Scrt1", 442*c9945492SAndroid Build Coastguard Worker defaults: [ 443*c9945492SAndroid Build Coastguard Worker "libc_musl_crt_defaults", 444*c9945492SAndroid Build Coastguard Worker "libc_musl_Scrt1_sources", 445*c9945492SAndroid Build Coastguard Worker ], 446*c9945492SAndroid Build Coastguard Worker} 447*c9945492SAndroid Build Coastguard Worker 448*c9945492SAndroid Build Coastguard Worker// 449*c9945492SAndroid Build Coastguard Worker// The custom CRT objects for use in the platform build. 450*c9945492SAndroid Build Coastguard Worker// Embeds the linker into crtbegin_dynamic. 451*c9945492SAndroid Build Coastguard Worker// 452*c9945492SAndroid Build Coastguard Worker 453*c9945492SAndroid Build Coastguard Workercc_object { 454*c9945492SAndroid Build Coastguard Worker name: "libc_musl_crtbegin_dynamic", 455*c9945492SAndroid Build Coastguard Worker defaults: ["libc_musl_crt_defaults"], 456*c9945492SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 457*c9945492SAndroid Build Coastguard Worker objs: [ 458*c9945492SAndroid Build Coastguard Worker "libc_musl_crti", 459*c9945492SAndroid Build Coastguard Worker "clang_rt.crtbegin", 460*c9945492SAndroid Build Coastguard Worker ], 461*c9945492SAndroid Build Coastguard Worker srcs: [ 462*c9945492SAndroid Build Coastguard Worker "android/relinterp.c", 463*c9945492SAndroid Build Coastguard Worker ], 464*c9945492SAndroid Build Coastguard Worker cflags: ["-DLOADER_PATH=\"libc_musl.so\""], 465*c9945492SAndroid Build Coastguard Worker} 466*c9945492SAndroid Build Coastguard Worker 467*c9945492SAndroid Build Coastguard Workercc_object { 468*c9945492SAndroid Build Coastguard Worker name: "libc_musl_crtbegin_static", 469*c9945492SAndroid Build Coastguard Worker defaults: ["libc_musl_crt_defaults"], 470*c9945492SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 471*c9945492SAndroid Build Coastguard Worker objs: [ 472*c9945492SAndroid Build Coastguard Worker "libc_musl_Scrt1", 473*c9945492SAndroid Build Coastguard Worker "libc_musl_crti", 474*c9945492SAndroid Build Coastguard Worker "clang_rt.crtbegin", 475*c9945492SAndroid Build Coastguard Worker ], 476*c9945492SAndroid Build Coastguard Worker} 477*c9945492SAndroid Build Coastguard Worker 478*c9945492SAndroid Build Coastguard Workercc_object { 479*c9945492SAndroid Build Coastguard Worker name: "libc_musl_crtend", 480*c9945492SAndroid Build Coastguard Worker defaults: ["libc_musl_crt_defaults"], 481*c9945492SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 482*c9945492SAndroid Build Coastguard Worker objs: [ 483*c9945492SAndroid Build Coastguard Worker "clang_rt.crtend", 484*c9945492SAndroid Build Coastguard Worker "libc_musl_crtn", 485*c9945492SAndroid Build Coastguard Worker ], 486*c9945492SAndroid Build Coastguard Worker} 487*c9945492SAndroid Build Coastguard Worker 488*c9945492SAndroid Build Coastguard Workercc_object { 489*c9945492SAndroid Build Coastguard Worker name: "libc_musl_crtbegin_so", 490*c9945492SAndroid Build Coastguard Worker defaults: ["libc_musl_crt_defaults"], 491*c9945492SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 492*c9945492SAndroid Build Coastguard Worker objs: [ 493*c9945492SAndroid Build Coastguard Worker "libc_musl_crti", 494*c9945492SAndroid Build Coastguard Worker "clang_rt.crtbegin", 495*c9945492SAndroid Build Coastguard Worker ], 496*c9945492SAndroid Build Coastguard Worker} 497*c9945492SAndroid Build Coastguard Worker 498*c9945492SAndroid Build Coastguard Workercc_object { 499*c9945492SAndroid Build Coastguard Worker name: "libc_musl_crtend_so", 500*c9945492SAndroid Build Coastguard Worker defaults: ["libc_musl_crt_defaults"], 501*c9945492SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 502*c9945492SAndroid Build Coastguard Worker objs: [ 503*c9945492SAndroid Build Coastguard Worker "clang_rt.crtend", 504*c9945492SAndroid Build Coastguard Worker "libc_musl_crtn", 505*c9945492SAndroid Build Coastguard Worker ], 506*c9945492SAndroid Build Coastguard Worker} 507*c9945492SAndroid Build Coastguard Worker 508*c9945492SAndroid Build Coastguard Worker// 509*c9945492SAndroid Build Coastguard Worker// Tests for the embedded linker trampoline 510*c9945492SAndroid Build Coastguard Worker// 511*c9945492SAndroid Build Coastguard Worker 512*c9945492SAndroid Build Coastguard Workercc_test_host { 513*c9945492SAndroid Build Coastguard Worker name: "libc_musl_ldso_trampoline_test", 514*c9945492SAndroid Build Coastguard Worker srcs: ["android/ldso_trampoline_test.cpp"], 515*c9945492SAndroid Build Coastguard Worker stl: "libc++", 516*c9945492SAndroid Build Coastguard Worker target: { 517*c9945492SAndroid Build Coastguard Worker darwin: { 518*c9945492SAndroid Build Coastguard Worker enabled: false, 519*c9945492SAndroid Build Coastguard Worker }, 520*c9945492SAndroid Build Coastguard Worker }, 521*c9945492SAndroid Build Coastguard Worker} 522*c9945492SAndroid Build Coastguard Worker 523*c9945492SAndroid Build Coastguard Worker// 524*c9945492SAndroid Build Coastguard Worker// Generated headers 525*c9945492SAndroid Build Coastguard Worker// 526*c9945492SAndroid Build Coastguard Worker 527*c9945492SAndroid Build Coastguard Workergenrule { 528*c9945492SAndroid Build Coastguard Worker name: "libc_musl_version.h", 529*c9945492SAndroid Build Coastguard Worker srcs: ["VERSION"], 530*c9945492SAndroid Build Coastguard Worker out: ["version.h"], 531*c9945492SAndroid Build Coastguard Worker cmd: "printf '#define VERSION \"%s\"\n' \"$$(cat $(location VERSION))\" > $(out)", 532*c9945492SAndroid Build Coastguard Worker} 533*c9945492SAndroid Build Coastguard Worker 534*c9945492SAndroid Build Coastguard Worker// libc_musl_arch_alltypes.h is split out of libc_musl_alltypes.h to ensure the arch-specific 535*c9945492SAndroid Build Coastguard Worker// alltypes.h.in ends up before the generic alltypes.h.in in the output. 536*c9945492SAndroid Build Coastguard Workercc_genrule { 537*c9945492SAndroid Build Coastguard Worker name: "libc_musl_arch_alltypes.h", 538*c9945492SAndroid Build Coastguard Worker host_supported: true, 539*c9945492SAndroid Build Coastguard Worker device_supported: false, 540*c9945492SAndroid Build Coastguard Worker arch: { 541*c9945492SAndroid Build Coastguard Worker arm: { 542*c9945492SAndroid Build Coastguard Worker srcs: ["arch/arm/bits/alltypes.h.in"], 543*c9945492SAndroid Build Coastguard Worker }, 544*c9945492SAndroid Build Coastguard Worker arm64: { 545*c9945492SAndroid Build Coastguard Worker srcs: ["arch/aarch64/bits/alltypes.h.in"], 546*c9945492SAndroid Build Coastguard Worker }, 547*c9945492SAndroid Build Coastguard Worker x86: { 548*c9945492SAndroid Build Coastguard Worker srcs: ["arch/i386/bits/alltypes.h.in"], 549*c9945492SAndroid Build Coastguard Worker }, 550*c9945492SAndroid Build Coastguard Worker x86_64: { 551*c9945492SAndroid Build Coastguard Worker srcs: ["arch/x86_64/bits/alltypes.h.in"], 552*c9945492SAndroid Build Coastguard Worker }, 553*c9945492SAndroid Build Coastguard Worker }, 554*c9945492SAndroid Build Coastguard Worker tool_files: ["tools/mkalltypes.sed"], 555*c9945492SAndroid Build Coastguard Worker out: ["bits/arch/alltypes.h"], 556*c9945492SAndroid Build Coastguard Worker cmd: "sed -f $(location tools/mkalltypes.sed) $(in) > $(out)", 557*c9945492SAndroid Build Coastguard Worker} 558*c9945492SAndroid Build Coastguard Worker 559*c9945492SAndroid Build Coastguard Workercc_genrule { 560*c9945492SAndroid Build Coastguard Worker name: "libc_musl_alltypes.h", 561*c9945492SAndroid Build Coastguard Worker host_supported: true, 562*c9945492SAndroid Build Coastguard Worker device_supported: false, 563*c9945492SAndroid Build Coastguard Worker srcs: [ 564*c9945492SAndroid Build Coastguard Worker "include/alltypes.h.in", 565*c9945492SAndroid Build Coastguard Worker ":libc_musl_arch_alltypes.h", 566*c9945492SAndroid Build Coastguard Worker ], 567*c9945492SAndroid Build Coastguard Worker tool_files: ["tools/mkalltypes.sed"], 568*c9945492SAndroid Build Coastguard Worker out: ["bits/alltypes.h"], 569*c9945492SAndroid Build Coastguard Worker cmd: "( " + 570*c9945492SAndroid Build Coastguard Worker "cat $(location :libc_musl_arch_alltypes.h) && " + 571*c9945492SAndroid Build Coastguard Worker "sed -f $(location tools/mkalltypes.sed) $(location include/alltypes.h.in) " + 572*c9945492SAndroid Build Coastguard Worker ") > $(out)", 573*c9945492SAndroid Build Coastguard Worker} 574*c9945492SAndroid Build Coastguard Worker 575*c9945492SAndroid Build Coastguard Workercc_genrule { 576*c9945492SAndroid Build Coastguard Worker name: "libc_musl_syscall.h", 577*c9945492SAndroid Build Coastguard Worker host_supported: true, 578*c9945492SAndroid Build Coastguard Worker device_supported: false, 579*c9945492SAndroid Build Coastguard Worker arch: { 580*c9945492SAndroid Build Coastguard Worker arm: { 581*c9945492SAndroid Build Coastguard Worker srcs: ["arch/arm/bits/syscall.h.in"], 582*c9945492SAndroid Build Coastguard Worker }, 583*c9945492SAndroid Build Coastguard Worker arm64: { 584*c9945492SAndroid Build Coastguard Worker srcs: ["arch/aarch64/bits/syscall.h.in"], 585*c9945492SAndroid Build Coastguard Worker }, 586*c9945492SAndroid Build Coastguard Worker x86: { 587*c9945492SAndroid Build Coastguard Worker srcs: ["arch/i386/bits/syscall.h.in"], 588*c9945492SAndroid Build Coastguard Worker }, 589*c9945492SAndroid Build Coastguard Worker x86_64: { 590*c9945492SAndroid Build Coastguard Worker srcs: ["arch/x86_64/bits/syscall.h.in"], 591*c9945492SAndroid Build Coastguard Worker }, 592*c9945492SAndroid Build Coastguard Worker }, 593*c9945492SAndroid Build Coastguard Worker out: ["bits/syscall.h"], 594*c9945492SAndroid Build Coastguard Worker cmd: "cp $(in) $(out) && sed -n -e s/__NR_/SYS_/p < $(in) >> $(out)", 595*c9945492SAndroid Build Coastguard Worker} 596*c9945492SAndroid Build Coastguard Worker 597*c9945492SAndroid Build Coastguard Worker// 598*c9945492SAndroid Build Coastguard Worker// Rules to generate a sysroot. This isn't used during the build, but can be convenient to run 599*c9945492SAndroid Build Coastguard Worker// configure scripts from external projects to generate necessary files to build against musl. 600*c9945492SAndroid Build Coastguard Worker// 601*c9945492SAndroid Build Coastguard Worker 602*c9945492SAndroid Build Coastguard Worker 603*c9945492SAndroid Build Coastguard Worker// An empty static library that will be copied to libdl.a, etc. in the sysroot. 604*c9945492SAndroid Build Coastguard Worker// Shouldn't be used by anything else besides the sysroot cc_genrule. 605*c9945492SAndroid Build Coastguard Workercc_library_static { 606*c9945492SAndroid Build Coastguard Worker name: "libc_musl_sysroot_static_empty", 607*c9945492SAndroid Build Coastguard Worker defaults: [ 608*c9945492SAndroid Build Coastguard Worker "libc_musl_defaults", 609*c9945492SAndroid Build Coastguard Worker ], 610*c9945492SAndroid Build Coastguard Worker} 611*c9945492SAndroid Build Coastguard Worker 612*c9945492SAndroid Build Coastguard Worker// The linker and trampoline compiled as a .o file to use as part of the sysroot 613*c9945492SAndroid Build Coastguard Worker// crt. 614*c9945492SAndroid Build Coastguard Workercc_object { 615*c9945492SAndroid Build Coastguard Worker name: "libc_musl_linker_object", 616*c9945492SAndroid Build Coastguard Worker defaults: ["libc_musl_crt_defaults"], 617*c9945492SAndroid Build Coastguard Worker srcs: [ 618*c9945492SAndroid Build Coastguard Worker "android/relinterp.c", 619*c9945492SAndroid Build Coastguard Worker ], 620*c9945492SAndroid Build Coastguard Worker cflags: ["-DLOADER_PATH=\"libc_musl.so\""], 621*c9945492SAndroid Build Coastguard Worker} 622*c9945492SAndroid Build Coastguard Worker 623*c9945492SAndroid Build Coastguard Worker// The architecture-specific bits have to be handled separately because the label varies based 624*c9945492SAndroid Build Coastguard Worker// on architecture, which prevents using $(locations) to find them and requires using $(in) 625*c9945492SAndroid Build Coastguard Worker// instead, which would mix in all the other files if this were part of the main libc_musl_sysroot 626*c9945492SAndroid Build Coastguard Worker// genrule. 627*c9945492SAndroid Build Coastguard Workercc_genrule { 628*c9945492SAndroid Build Coastguard Worker name: "libc_musl_sysroot_bits", 629*c9945492SAndroid Build Coastguard Worker host_supported: true, 630*c9945492SAndroid Build Coastguard Worker device_supported: false, 631*c9945492SAndroid Build Coastguard Worker arch: { 632*c9945492SAndroid Build Coastguard Worker arm: { 633*c9945492SAndroid Build Coastguard Worker srcs: ["arch/arm/bits/*.h"], 634*c9945492SAndroid Build Coastguard Worker }, 635*c9945492SAndroid Build Coastguard Worker arm64: { 636*c9945492SAndroid Build Coastguard Worker srcs: ["arch/aarch64/bits/*.h"], 637*c9945492SAndroid Build Coastguard Worker }, 638*c9945492SAndroid Build Coastguard Worker x86: { 639*c9945492SAndroid Build Coastguard Worker srcs: ["arch/i386/bits/*.h"], 640*c9945492SAndroid Build Coastguard Worker }, 641*c9945492SAndroid Build Coastguard Worker x86_64: { 642*c9945492SAndroid Build Coastguard Worker srcs: ["arch/x86_64/bits/*.h"], 643*c9945492SAndroid Build Coastguard Worker }, 644*c9945492SAndroid Build Coastguard Worker }, 645*c9945492SAndroid Build Coastguard Worker out: ["libc_musl_sysroot_bits.zip"], 646*c9945492SAndroid Build Coastguard Worker tools: ["soong_zip"], 647*c9945492SAndroid Build Coastguard Worker cmd: "includes=($(in)) && $(location soong_zip) -o $(out) -P include/bits -j -D $$(dirname $${includes[0]})", 648*c9945492SAndroid Build Coastguard Worker} 649*c9945492SAndroid Build Coastguard Worker 650*c9945492SAndroid Build Coastguard Workergenrule { 651*c9945492SAndroid Build Coastguard Worker name: "libc_musl_clang_wrapper", 652*c9945492SAndroid Build Coastguard Worker srcs: ["tools/musl-clang.in"], 653*c9945492SAndroid Build Coastguard Worker out: ["musl-clang"], 654*c9945492SAndroid Build Coastguard Worker cmd: "sed -e 's`@CC@`clang`' -e 's`@PREFIX@`$$(dirname \"$$0\")/..`' -e 's`@INCDIR@`$${libc}/include`' -e 's`@LIBDIR@`$${libc}/lib`' $(in) > $(out) && " + 655*c9945492SAndroid Build Coastguard Worker "chmod a+x $(out)", 656*c9945492SAndroid Build Coastguard Worker} 657*c9945492SAndroid Build Coastguard Worker 658*c9945492SAndroid Build Coastguard Workergenrule { 659*c9945492SAndroid Build Coastguard Worker name: "libc_musl_ld_wrapper", 660*c9945492SAndroid Build Coastguard Worker srcs: ["tools/ld.musl-clang.in"], 661*c9945492SAndroid Build Coastguard Worker out: ["ld.musl-clang"], 662*c9945492SAndroid Build Coastguard Worker cmd: "sed -e 's`@CC@`clang`' -e 's`@LIBDIR@`$$(dirname \"$$0\")/../lib`' -e 's`@LDSO@`$$(dirname \"$$0\")/../lib/ld-musl.so.1`' $(in) > $(out) && " + 663*c9945492SAndroid Build Coastguard Worker "chmod a+x $(out)", 664*c9945492SAndroid Build Coastguard Worker} 665*c9945492SAndroid Build Coastguard Worker 666*c9945492SAndroid Build Coastguard Workercc_library_host_static { 667*c9945492SAndroid Build Coastguard Worker name: "libz_static_for_sysroot", 668*c9945492SAndroid Build Coastguard Worker whole_static_libs: ["libz"], 669*c9945492SAndroid Build Coastguard Worker} 670*c9945492SAndroid Build Coastguard Worker 671*c9945492SAndroid Build Coastguard Workercc_genrule { 672*c9945492SAndroid Build Coastguard Worker name: "libc_musl_sysroot", 673*c9945492SAndroid Build Coastguard Worker host_supported: true, 674*c9945492SAndroid Build Coastguard Worker device_supported: false, 675*c9945492SAndroid Build Coastguard Worker enabled: false, 676*c9945492SAndroid Build Coastguard Worker target: { 677*c9945492SAndroid Build Coastguard Worker musl: { 678*c9945492SAndroid Build Coastguard Worker enabled: true, 679*c9945492SAndroid Build Coastguard Worker }, 680*c9945492SAndroid Build Coastguard Worker }, 681*c9945492SAndroid Build Coastguard Worker srcs: [ 682*c9945492SAndroid Build Coastguard Worker "LICENSE", 683*c9945492SAndroid Build Coastguard Worker "COPYRIGHT", 684*c9945492SAndroid Build Coastguard Worker 685*c9945492SAndroid Build Coastguard Worker // Headers 686*c9945492SAndroid Build Coastguard Worker "include/**/*.h", 687*c9945492SAndroid Build Coastguard Worker "arch/generic/bits/*.h", 688*c9945492SAndroid Build Coastguard Worker "android/include/bits/*.h", 689*c9945492SAndroid Build Coastguard Worker "android/include/sys/cdefs.h", 690*c9945492SAndroid Build Coastguard Worker ":libc_musl_syscall.h", 691*c9945492SAndroid Build Coastguard Worker ":libc_musl_alltypes.h", 692*c9945492SAndroid Build Coastguard Worker ":libc_musl_sysroot_bits", 693*c9945492SAndroid Build Coastguard Worker 694*c9945492SAndroid Build Coastguard Worker // Bionic kernel uapi headers 695*c9945492SAndroid Build Coastguard Worker ":libc_musl_sysroot_bionic_headers", 696*c9945492SAndroid Build Coastguard Worker 697*c9945492SAndroid Build Coastguard Worker ":libc_musl_sysroot_zlib_headers", 698*c9945492SAndroid Build Coastguard Worker 699*c9945492SAndroid Build Coastguard Worker // Libraries 700*c9945492SAndroid Build Coastguard Worker ":libc_musl", 701*c9945492SAndroid Build Coastguard Worker ":libc_musl_static", 702*c9945492SAndroid Build Coastguard Worker ":libz_static_for_sysroot", 703*c9945492SAndroid Build Coastguard Worker 704*c9945492SAndroid Build Coastguard Worker // Objects 705*c9945492SAndroid Build Coastguard Worker ":libc_musl_crti", 706*c9945492SAndroid Build Coastguard Worker ":libc_musl_crtn", 707*c9945492SAndroid Build Coastguard Worker ":libc_musl_crt1", 708*c9945492SAndroid Build Coastguard Worker ":libc_musl_rcrt1", 709*c9945492SAndroid Build Coastguard Worker ":libc_musl_Scrt1", 710*c9945492SAndroid Build Coastguard Worker ":clang_rt.crtbegin", 711*c9945492SAndroid Build Coastguard Worker ":clang_rt.crtend", 712*c9945492SAndroid Build Coastguard Worker 713*c9945492SAndroid Build Coastguard Worker // Embedded linker objects and linker scripts 714*c9945492SAndroid Build Coastguard Worker ":libc_musl_linker_object", 715*c9945492SAndroid Build Coastguard Worker "android/relinterp.script", 716*c9945492SAndroid Build Coastguard Worker 717*c9945492SAndroid Build Coastguard Worker // Wrapper scripts 718*c9945492SAndroid Build Coastguard Worker ":libc_musl_clang_wrapper", 719*c9945492SAndroid Build Coastguard Worker ":libc_musl_ld_wrapper", 720*c9945492SAndroid Build Coastguard Worker 721*c9945492SAndroid Build Coastguard Worker // Empty static libraries 722*c9945492SAndroid Build Coastguard Worker ":libc_musl_sysroot_static_empty", 723*c9945492SAndroid Build Coastguard Worker ], 724*c9945492SAndroid Build Coastguard Worker out: ["libc_musl_sysroot.zip"], 725*c9945492SAndroid Build Coastguard Worker tools: [ 726*c9945492SAndroid Build Coastguard Worker "soong_zip", 727*c9945492SAndroid Build Coastguard Worker "merge_zips", 728*c9945492SAndroid Build Coastguard Worker "zip2zip", 729*c9945492SAndroid Build Coastguard Worker ], 730*c9945492SAndroid Build Coastguard Worker cmd: "includes=($(locations include/**/*.h)) && " + 731*c9945492SAndroid Build Coastguard Worker "bits=($(locations arch/generic/bits/*.h)) && " + 732*c9945492SAndroid Build Coastguard Worker "android_bits=($(locations android/include/bits/*.h)) && " + 733*c9945492SAndroid Build Coastguard Worker "ln -s libc_musl.so $(genDir)/ld-musl.so.1 && " + 734*c9945492SAndroid Build Coastguard Worker "echo -e 'GROUP ( libc_musl_linker_object.o )\nINCLUDE relinterp.script' > $(genDir)/Scrt1.ld && " + 735*c9945492SAndroid Build Coastguard Worker "echo -e 'GROUP ( libc_musl.so )' > $(genDir)/libc.so && " + 736*c9945492SAndroid Build Coastguard Worker "$(location soong_zip) -o $(genDir)/sysroot.zip " + 737*c9945492SAndroid Build Coastguard Worker " -j " + 738*c9945492SAndroid Build Coastguard Worker " -f $(location LICENSE) " + 739*c9945492SAndroid Build Coastguard Worker " -f $(location COPYRIGHT) " + 740*c9945492SAndroid Build Coastguard Worker // headers 741*c9945492SAndroid Build Coastguard Worker " -P include " + 742*c9945492SAndroid Build Coastguard Worker " -C $$(dirname $${includes[0]}) " + 743*c9945492SAndroid Build Coastguard Worker " -D $$(dirname $${includes[0]}) " + 744*c9945492SAndroid Build Coastguard Worker " -P include/bits -j " + 745*c9945492SAndroid Build Coastguard Worker " -f $(location :libc_musl_syscall.h) " + 746*c9945492SAndroid Build Coastguard Worker " -f $(location :libc_musl_alltypes.h) " + 747*c9945492SAndroid Build Coastguard Worker " -D $$(dirname $${bits[0]}) " + 748*c9945492SAndroid Build Coastguard Worker " -D $$(dirname $${android_bits[0]}) " + 749*c9945492SAndroid Build Coastguard Worker " -P include/sys -j " + 750*c9945492SAndroid Build Coastguard Worker " -f $(location android/include/sys/cdefs.h) " + 751*c9945492SAndroid Build Coastguard Worker // embedded linker crt objects 752*c9945492SAndroid Build Coastguard Worker " -P lib -j " + 753*c9945492SAndroid Build Coastguard Worker " -f $(location android/relinterp.script) " + 754*c9945492SAndroid Build Coastguard Worker " -f $(location :libc_musl_linker_object) " + 755*c9945492SAndroid Build Coastguard Worker // libs 756*c9945492SAndroid Build Coastguard Worker " -f $(location :libc_musl) " + 757*c9945492SAndroid Build Coastguard Worker " -f $(genDir)/ld-musl.so.1 " + 758*c9945492SAndroid Build Coastguard Worker " -f $(genDir)/libc.so " + 759*c9945492SAndroid Build Coastguard Worker // clang wrappers 760*c9945492SAndroid Build Coastguard Worker " -P bin -j " + 761*c9945492SAndroid Build Coastguard Worker " -f $(location :libc_musl_clang_wrapper) " + 762*c9945492SAndroid Build Coastguard Worker " -f $(location :libc_musl_ld_wrapper) " + 763*c9945492SAndroid Build Coastguard Worker " && " + 764*c9945492SAndroid Build Coastguard Worker // libs in a separate zip so they can be renamed 765*c9945492SAndroid Build Coastguard Worker "$(location soong_zip) -o $(genDir)/libs.zip " + 766*c9945492SAndroid Build Coastguard Worker " -P lib -j " + 767*c9945492SAndroid Build Coastguard Worker " -f $(location :libc_musl_static) " + 768*c9945492SAndroid Build Coastguard Worker " -f $(location :libc_musl_sysroot_static_empty) " + 769*c9945492SAndroid Build Coastguard Worker " -f $(genDir)/Scrt1.ld " + 770*c9945492SAndroid Build Coastguard Worker " -f $(location :libc_musl_crti) " + 771*c9945492SAndroid Build Coastguard Worker " -f $(location :libc_musl_crtn) " + 772*c9945492SAndroid Build Coastguard Worker " -f $(location :libc_musl_crt1) " + 773*c9945492SAndroid Build Coastguard Worker " -f $(location :libc_musl_rcrt1) " + 774*c9945492SAndroid Build Coastguard Worker " -f $(location :libc_musl_Scrt1) " + 775*c9945492SAndroid Build Coastguard Worker " -f $(location :clang_rt.crtbegin) " + 776*c9945492SAndroid Build Coastguard Worker " -f $(location :clang_rt.crtend) " + 777*c9945492SAndroid Build Coastguard Worker " -f $(location :libz_static_for_sysroot) " + 778*c9945492SAndroid Build Coastguard Worker " && " + 779*c9945492SAndroid Build Coastguard Worker "$(location zip2zip) -i $(genDir)/libs.zip -o $(genDir)/libs_renamed.zip " + 780*c9945492SAndroid Build Coastguard Worker // rename libs from module names to desired names in sysroot 781*c9945492SAndroid Build Coastguard Worker " lib/libc_musl_static.a:lib/libc.a " + 782*c9945492SAndroid Build Coastguard Worker // Swap in linker script for Scrt1.o 783*c9945492SAndroid Build Coastguard Worker " lib/Scrt1.o:lib/Scrt1-real.o " + 784*c9945492SAndroid Build Coastguard Worker " lib/Scrt1.ld:lib/Scrt1.o " + 785*c9945492SAndroid Build Coastguard Worker // copy empty static libs 786*c9945492SAndroid Build Coastguard Worker " lib/libc_musl_sysroot_static_empty.a:lib/libcrypt.a " + 787*c9945492SAndroid Build Coastguard Worker " lib/libc_musl_sysroot_static_empty.a:lib/libdl.a " + 788*c9945492SAndroid Build Coastguard Worker " lib/libc_musl_sysroot_static_empty.a:lib/libm.a " + 789*c9945492SAndroid Build Coastguard Worker " lib/libc_musl_sysroot_static_empty.a:lib/libpthread.a " + 790*c9945492SAndroid Build Coastguard Worker " lib/libc_musl_sysroot_static_empty.a:lib/libresolv.a " + 791*c9945492SAndroid Build Coastguard Worker " lib/libc_musl_sysroot_static_empty.a:lib/librt.a " + 792*c9945492SAndroid Build Coastguard Worker " lib/libc_musl_sysroot_static_empty.a:lib/libutil.a " + 793*c9945492SAndroid Build Coastguard Worker " lib/libc_musl_sysroot_static_empty.a:lib/libxnet.a " + 794*c9945492SAndroid Build Coastguard Worker // rename clang crt objects to gcc names 795*c9945492SAndroid Build Coastguard Worker " lib/clang_rt.crtbegin.o:lib/crtbegin.o " + 796*c9945492SAndroid Build Coastguard Worker " lib/clang_rt.crtbegin.o:lib/crtbeginS.o " + 797*c9945492SAndroid Build Coastguard Worker " lib/clang_rt.crtbegin.o:lib/crtbeginT.o " + 798*c9945492SAndroid Build Coastguard Worker " lib/clang_rt.crtend.o:lib/crtend.o " + 799*c9945492SAndroid Build Coastguard Worker " lib/clang_rt.crtend.o:lib/crtendS.o " + 800*c9945492SAndroid Build Coastguard Worker // rename crt objects 801*c9945492SAndroid Build Coastguard Worker " lib/libc_musl_crti.o:lib/crti.o " + 802*c9945492SAndroid Build Coastguard Worker " lib/libc_musl_crtn.o:lib/crtn.o " + 803*c9945492SAndroid Build Coastguard Worker " lib/libc_musl_crt1.o:lib/crt1.o " + 804*c9945492SAndroid Build Coastguard Worker " lib/libc_musl_rcrt1.o:lib/rcrt1.o " + 805*c9945492SAndroid Build Coastguard Worker // rename static libz 806*c9945492SAndroid Build Coastguard Worker " lib/libz_static_for_sysroot.a:lib/libz.a " + 807*c9945492SAndroid Build Coastguard Worker " && " + 808*c9945492SAndroid Build Coastguard Worker "$(location merge_zips) -ignore-duplicates $(out) " + 809*c9945492SAndroid Build Coastguard Worker " $(location :libc_musl_sysroot_bionic_headers) " + 810*c9945492SAndroid Build Coastguard Worker " $(location :libc_musl_sysroot_zlib_headers) " + 811*c9945492SAndroid Build Coastguard Worker " $(location :libc_musl_sysroot_bits) " + 812*c9945492SAndroid Build Coastguard Worker " $(genDir)/sysroot.zip " + 813*c9945492SAndroid Build Coastguard Worker " $(genDir)/libs_renamed.zip", 814*c9945492SAndroid Build Coastguard Worker} 815*c9945492SAndroid Build Coastguard Worker 816*c9945492SAndroid Build Coastguard Workerbuild=["sources.bp"] 817