1// 2// Copyright (C) 2017 The Android Open Source Project 3// 4// Licensed under the Apache License, Version 2.0 (the "License"); 5// you may not use this file except in compliance with the License. 6// You may obtain a copy of the License at 7// 8// http://www.apache.org/licenses/LICENSE-2.0 9// 10// Unless required by applicable law or agreed to in writing, software 11// distributed under the License is distributed on an "AS IS" BASIS, 12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13// See the License for the specific language governing permissions and 14// limitations under the License. 15// 16 17package { 18 default_applicable_licenses: ["prebuilts_clang_host_linux-x86_license"], 19} 20 21// See: http://go/android-license-faq 22// SPDX-license-identifier-GPL and SPDX-license-identifier-LGPL removed 23// those files are dual-licensed 'OR PSF' 24license { 25 name: "prebuilts_clang_host_linux-x86_license", 26 visibility: [":__subpackages__"], 27 license_kinds: [ 28 "SPDX-license-identifier-Apache-2.0", 29 "SPDX-license-identifier-BSD", 30 "SPDX-license-identifier-MIT", 31 "SPDX-license-identifier-NCSA", 32 "SPDX-license-identifier-PSF-2.0", 33 "SPDX-license-identifier-Zlib", 34 "legacy_unencumbered", 35 ], 36 // large-scale-change unable to identify any license_text files 37} 38 39llvm_prebuilt_library_static { 40 name: "libFuzzer", 41 vendor_available: true, 42 sdk_version: "minimum", 43 sanitize: { 44 never: true, 45 }, 46} 47 48llvm_prebuilt_library_static { 49 name: "libomp", 50 sdk_version: "minimum", 51 vendor_available: true, 52 product_available: true, 53 sanitize: { 54 never: true, 55 }, 56} 57 58// All libclang_rt.* modules are available to the platform except 59// hwasan, which is distributed as part of the runtime apex. 60cc_defaults { 61 name: "libclang_rt-prebuilt-non-platform-default", 62 ramdisk_available: true, 63 vendor_ramdisk_available: true, 64 apex_available: [ 65 "//apex_available:anyapex", 66 ], 67} 68 69cc_defaults { 70 name: "libclang_rt-prebuilt-default", 71 defaults: ["libclang_rt-prebuilt-non-platform-default"], 72 apex_available: [ 73 "//apex_available:platform", 74 ], 75} 76 77/////////////////////////////////////////////////////////////////////////////// 78libclang_rt_prebuilt_library_static { 79 name: "libclang_rt.builtins", 80 defaults: ["libclang_rt-prebuilt-default"], 81 sdk_version: "minimum", 82 recovery_available: true, 83 vendor_available: true, 84 product_available: true, 85 native_bridge_supported: true, 86 host_supported: true, 87 sanitize: { 88 never: true, 89 }, 90 stl: "none", 91} 92 93libclang_rt_prebuilt_library_static { 94 name: "libclang_rt.builtins-exported", 95 lib_name: "libclang_rt.builtins", 96 suffix: "-exported", 97 defaults: ["libclang_rt-prebuilt-default"], 98 sdk_version: "minimum", 99 recovery_available: true, 100 vendor_available: true, 101 product_available: true, 102 native_bridge_supported: true, 103 sanitize: { 104 never: true, 105 }, 106 enabled: false, 107 target: { 108 android_arm: { 109 enabled: true, 110 }, 111 android_x86: { 112 enabled: true, 113 }, 114 }, 115 stl: "none", 116 // This exported variant of the builtins library is only intended for use in 117 // libc.so and libm.so, which exports some builtins symbols for backwards 118 // compatibility. 119 visibility: [ 120 "//bionic:__subpackages__", 121 "//frameworks/libs/native_bridge_support/libc:__subpackages__", 122 "//frameworks/libs/native_bridge_support/android_api/libc:__subpackages__", 123 ], 124} 125 126/////////////////////////////////////////////////////////////////////////////// 127libclang_rt_prebuilt_library_shared { 128 name: "libclang_rt.asan", 129 defaults: ["libclang_rt-prebuilt-default"], 130 host_supported: true, 131 recovery_available: true, 132 native_bridge_supported: true, 133 sdk_version: "24", 134 check_elf_files: false, // Bypass circular dependency between libc++ 135 is_llndk: true, 136} 137 138/////////////////////////////////////////////////////////////////////////////// 139libclang_rt_prebuilt_library_static { 140 name: "libclang_rt.asan.static", 141 defaults: ["libclang_rt-prebuilt-default"], 142 host_supported: true, 143 recovery_available: true, 144 native_bridge_supported: true, 145 sdk_version: "24", 146} 147 148/////////////////////////////////////////////////////////////////////////////// 149libclang_rt_prebuilt_library_static { 150 name: "libclang_rt.asan_cxx.static", 151 defaults: ["libclang_rt-prebuilt-default"], 152 host_supported: true, 153 recovery_available: true, 154 native_bridge_supported: true, 155 sdk_version: "24", 156} 157 158/////////////////////////////////////////////////////////////////////////////// 159libclang_rt_prebuilt_library_shared { 160 name: "libclang_rt.ubsan_standalone", 161 defaults: ["libclang_rt-prebuilt-default"], 162 host_supported: true, 163 vendor_available: true, 164 product_available: true, 165 recovery_available: true, 166 double_loadable: true, 167 stl: "c++_shared", 168 sdk_version: "24", 169 check_elf_files: false, // Bypass circular dependency between libc++ 170} 171 172/////////////////////////////////////////////////////////////////////////////// 173libclang_rt_prebuilt_library_static { 174 name: "libclang_rt.ubsan_standalone.static", 175 defaults: ["libclang_rt-prebuilt-default"], 176 sdk_version: "24", 177 vendor_available: true, 178 product_available: true, 179 recovery_available: true, 180 double_loadable: true, 181 host_supported: true, 182 stl: "c++_static", 183 check_elf_files: false, // Bypass circular dependency between libc++ 184} 185 186/////////////////////////////////////////////////////////////////////////////// 187libclang_rt_prebuilt_library_static { 188 name: "libclang_rt.ubsan_minimal", 189 defaults: ["libclang_rt-prebuilt-default"], 190 sdk_version: "24", 191 vendor_available: true, 192 product_available: true, 193 recovery_available: true, 194 double_loadable: true, 195 host_supported: true, 196 native_bridge_supported: true, 197} 198 199/////////////////////////////////////////////////////////////////////////////// 200libclang_rt_prebuilt_library_static { 201 name: "libclang_rt.hwasan_static", 202 sdk_version: "minimum", 203 enabled: false, 204 recovery_available: true, 205 vendor_available: true, 206 product_available: true, 207 host_supported: true, 208 target: { 209 bionic_arm64: { 210 enabled: true, 211 }, 212 }, 213 defaults: [ 214 "libclang_rt-prebuilt-default", 215 ], 216} 217 218/////////////////////////////////////////////////////////////////////////////// 219libclang_rt_prebuilt_library_shared { 220 name: "libclang_rt.hwasan", 221 sdk_version: "minimum", 222 enabled: false, 223 recovery_available: true, 224 host_supported: true, 225 target: { 226 bionic_arm64: { 227 enabled: true, 228 }, 229 }, 230 check_elf_files: false, // Bypass circular dependency between libc++ 231 is_llndk: true, 232 llndk_moved_to_apex: true, 233 defaults: [ 234 "libclang_rt-prebuilt-non-platform-default", 235 ], 236} 237 238/////////////////////////////////////////////////////////////////////////////// 239libclang_rt_prebuilt_library_static { 240 name: "libclang_rt.profile", 241 defaults: ["libclang_rt-prebuilt-default"], 242 host_supported: true, 243 sdk_version: "minimum", 244 recovery_available: true, 245 vendor_available: true, 246 product_available: true, 247 check_elf_files: false, // Bypass circular dependency between libc++ 248} 249 250/////////////////////////////////////////////////////////////////////////////// 251libclang_rt_prebuilt_library_static { 252 name: "libclang_rt.fuzzer", 253 defaults: ["libclang_rt-prebuilt-default"], 254 sdk_version: "minimum", 255 host_supported: true, 256 recovery_available: true, 257 vendor_available: true, 258 product_available: true, 259 ramdisk_available: false, 260 vendor_ramdisk_available: false, 261 sanitize: { 262 never: true, 263 }, 264} 265 266/////////////////////////////////////////////////////////////////////////////// 267libclang_rt_prebuilt_library_static { 268 name: "libclang_rt.fuzzer_interceptors", 269 defaults: ["libclang_rt-prebuilt-default"], 270 sdk_version: "minimum", 271 host_supported: true, 272 recovery_available: true, 273 vendor_available: true, 274 product_available: true, 275 ramdisk_available: false, 276 vendor_ramdisk_available: false, 277} 278 279/////////////////////////////////////////////////////////////////////////////// 280libclang_rt_prebuilt_object { 281 name: "clang_rt.crtbegin", 282 host_supported: true, 283 defaults: ["libclang_rt-prebuilt-default"], 284} 285 286libclang_rt_prebuilt_object { 287 name: "clang_rt.crtend", 288 host_supported: true, 289 defaults: ["libclang_rt-prebuilt-default"], 290} 291 292/////////////////////////////////////////////////////////////////////////////// 293cc_defaults { 294 name: "libunwind-android-default", 295 defaults: [ 296 "libclang_rt-prebuilt-default", 297 "linux_bionic_supported", 298 ], 299 sdk_version: "minimum", 300 recovery_available: true, 301 vendor_available: true, 302 product_available: true, 303 native_bridge_supported: true, 304 sanitize: { 305 never: true, 306 }, 307 stl: "none", 308 // The unwinder needs functions from libc (and libdl), but libc.so links 309 // against libunwind*.a. Clear the system_shared_libs property so that Soong 310 // doesn't complain about the cyclic dependency. 311 system_shared_libs: [], 312} 313 314llvm_prebuilt_library_static { 315 name: "libunwind", 316 defaults: ["libunwind-android-default"], 317 target: { 318 musl: { 319 enabled: true, 320 }, 321 }, 322} 323 324llvm_prebuilt_library_static { 325 name: "libunwind-exported", 326 defaults: ["libunwind-android-default"], 327 328 // The libunwind-exported.a library is only intended for use with libc.so, 329 // which needs to export the unwinder API. 330 visibility: [ 331 "//bionic:__subpackages__", 332 "//frameworks/libs/native_bridge_support/libc:__subpackages__", 333 "//frameworks/libs/native_bridge_support/android_api/libc:__subpackages__", 334 ], 335} 336 337llvm_prebuilt_library_static { 338 name: "libsimpleperf_readelf", 339 host_supported: true, 340 sdk_version: "minimum", 341 sanitize: { 342 never: true, 343 }, 344 target: { 345 windows: { 346 enabled: true, 347 }, 348 }, 349 visibility: [ 350 "//cts/tests/tests/simpleperf", 351 "//system/extras/simpleperf", 352 ], 353} 354 355// ----------------------------------------------------------------------------- 356// Export libc++ and libclang-cpp.so. 357// ----------------------------------------------------------------------------- 358 359llvm_host_defaults { 360 name: "llvm-build-host-tools-defaults", 361 target: { 362 // We don't have a musl build of libclang-cpp.so, so disable the host 363 // tools for musl. 364 musl: { 365 enabled: false, 366 }, 367 }, 368} 369 370// Export libclang-cpp shared library 371llvm_prebuilt_library_shared { 372 name: "libclang-cpp_host", 373 host_supported: true, 374 device_supported: false, 375 sanitize: { 376 never: true, 377 }, 378 shared_libs: ["libc++"], 379 target: { 380 darwin: { 381 strip: { 382 none: true, 383 }, 384 }, 385 }, 386} 387 388cc_defaults { 389 name: "libc++-device-base-default", 390 device_supported: true, 391 ramdisk_available: true, 392 vendor_ramdisk_available: true, 393 recovery_available: true, 394 native_bridge_supported: true, 395 sdk_version: "minimum", 396} 397 398cc_defaults { 399 name: "libc++-device-default", 400 defaults: ["libc++-device-base-default"], 401 vendor_available: true, 402 product_available: true, 403 apex_available: [ 404 "//apex_available:platform", 405 "//apex_available:anyapex", 406 ], 407} 408 409// The "noexcept" variants of libc++_static and libc++demangle are intended for 410// use in the dynamic linker. The linker doesn't implement ELF TLS for itself, 411// so it needs to avoid using the per-thread EH globals pointer. 412cc_defaults { 413 name: "libc++-noexcept-default", 414 defaults: [ 415 "libc++-device-base-default", 416 "linux_bionic_supported", 417 ], 418 apex_available: [ 419 "com.android.runtime", 420 ], 421 visibility: [ 422 "//bionic:__subpackages__", 423 "//frameworks/libs/native_bridge_support:__subpackages__", 424 ], 425} 426 427llvm_prebuilt_library_shared { 428 name: "libc++", 429 host_supported: true, 430 defaults: ["libc++-device-default"], 431 double_loadable: true, 432 // TODO(b/298326651): Soong doesn't output a shared library module for 433 // libc.native_bridge, so when check_elf_file.py checks 434 // libc++.native_bridge, it's missing a --shared-lib argument for libc.so. 435 check_elf_files: false, 436} 437 438llvm_prebuilt_library_shared { 439 name: "libc++abi_shared", 440 host_supported: true, 441 device_supported: false, 442} 443 444llvm_prebuilt_library_static { 445 name: "libc++_static", 446 host_supported: true, 447 defaults: ["libc++-device-default"], 448 target: { 449 windows: { 450 enabled: true, 451 }, 452 }, 453 stl: "none", 454} 455 456llvm_prebuilt_library_static { 457 name: "libc++abi_static", 458 host_supported: true, 459 device_supported: false, 460 target: { 461 windows: { 462 enabled: true, 463 }, 464 }, 465 stl: "none", 466} 467 468llvm_prebuilt_library_static { 469 name: "libc++demangle", 470 host_supported: false, 471 defaults: ["libc++-device-default"], 472 stl: "none", 473} 474 475llvm_prebuilt_library_static { 476 name: "libc++_static_noexcept", 477 defaults: ["libc++-noexcept-default"], 478 stl: "none", 479} 480 481llvm_prebuilt_library_static { 482 name: "libc++demangle_noexcept", 483 defaults: ["libc++-noexcept-default"], 484 stl: "none", 485} 486 487// Stub out this library. It's not needed anymore because libc++.so and 488// libc++_static.a now contain the stable std::filesystem APIs. 489// TODO: Remove dependencies on this library, then remove this library. 490cc_library_static { 491 name: "libc++fs", 492 srcs: [], 493 host_supported: true, 494 defaults: ["libc++-device-default"], 495 min_sdk_version: "apex_inherit", 496 stl: "none", 497} 498 499cc_defaults { 500 name: "libc++-ndk-default", 501 sdk_version: "minimum", 502 apex_available: [ 503 "//apex_available:platform", 504 "//apex_available:anyapex", 505 ], 506} 507 508ndk_prebuilt_shared_stl { 509 name: "ndk_libc++_shared", 510 defaults: ["libc++-ndk-default"], 511 stem: "libc++_shared", 512} 513 514ndk_prebuilt_static_stl { 515 name: "ndk_libc++_static", 516 defaults: ["libc++-ndk-default"], 517 stl: "none", 518} 519 520ndk_prebuilt_static_stl { 521 name: "ndk_libc++abi", 522 defaults: ["libc++-ndk-default"], 523 stl: "none", 524} 525 526clang_builtin_headers { 527 name: "clang_builtin_headers_resources", 528 tool_files: ["soong/generate_clang_builtin_headers_resources.sh"], 529 out: ["clang_builtin_headers_resources.inc"], 530} 531 532// Export llvm tools as a filegroup which is packaged and available for CI 533// tests. 534llvm_tools_filegroup { 535 name: "llvm-tools", 536 visibility: [ 537 "//development/scripts:__subpackages__", 538 "//packages/modules/Bluetooth/system:__subpackages__", 539 ], 540 // The tools and libs in the filegroup are in 541 // ./soong/clangprebuilts.go:llvmToolsFiles 542} 543 544llvm_prebuilt_build_tool { 545 name: "llvm-dwarfdump", 546} 547 548llvm_prebuilt_build_tool { 549 name: "llvm-objdump", 550} 551 552llvm_prebuilt_build_tool { 553 name: "llvm-strings", 554} 555 556subdirs = [ 557 "soong", 558] 559 560filegroup { 561 name: "py-clang-srcs", 562 srcs: [ 563 "clang-stable/lib/python3/site-packages/clang/*.py", 564 ], 565 path: "clang-stable/lib/python3/site-packages/clang", 566} 567 568python_library { 569 name: "py-clang", 570 pkg_path: "clang", 571 host_supported: true, 572 srcs: [ 573 ":py-clang-srcs", 574 ], 575} 576 577filegroup { 578 name: "libclang", 579 srcs: [ 580 "clang-stable/lib/libclang.so", 581 ], 582} 583 584dirgroup { 585 name: "trusty_dirgroup_prebuilts_clang_host_linux-x86", 586 dirs: ["."], 587 visibility: ["//trusty/vendor/google/aosp/scripts"], 588} 589