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