xref: /aosp_15_r20/external/clang/Android.bp (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Lipackage {
2*67e74705SXin Li    default_applicable_licenses: ["external_clang_license"],
3*67e74705SXin Li}
4*67e74705SXin Li
5*67e74705SXin Li// Added automatically by a large-scale-change that took the approach of
6*67e74705SXin Li// 'apply every license found to every target'. While this makes sure we respect
7*67e74705SXin Li// every license restriction, it may not be entirely correct.
8*67e74705SXin Li//
9*67e74705SXin Li// e.g. GPL in an MIT project might only apply to the contrib/ directory.
10*67e74705SXin Li//
11*67e74705SXin Li// Please consider splitting the single license below into multiple licenses,
12*67e74705SXin Li// taking care not to lose any license_kind information, and overriding the
13*67e74705SXin Li// default license using the 'licenses: [...]' property on targets as needed.
14*67e74705SXin Li//
15*67e74705SXin Li// For unused files, consider creating a 'fileGroup' with "//visibility:private"
16*67e74705SXin Li// to attach the license to, and including a comment whether the files may be
17*67e74705SXin Li// used in the current project.
18*67e74705SXin Li//
19*67e74705SXin Li// large-scale-change included anything that looked like it might be a license
20*67e74705SXin Li// text as a license_text. e.g. LICENSE, NOTICE, COPYING etc.
21*67e74705SXin Li//
22*67e74705SXin Li// Please consider removing redundant or irrelevant files from 'license_text:'.
23*67e74705SXin Li//
24*67e74705SXin Li// large-scale-change filtered out the below license kinds as false-positives:
25*67e74705SXin Li//   SPDX-license-identifier-GPL
26*67e74705SXin Li// See: http://go/android-license-faq
27*67e74705SXin Lilicense {
28*67e74705SXin Li    name: "external_clang_license",
29*67e74705SXin Li    visibility: [":__subpackages__"],
30*67e74705SXin Li    license_kinds: [
31*67e74705SXin Li        "SPDX-license-identifier-Apache-2.0",
32*67e74705SXin Li        "SPDX-license-identifier-BSD",
33*67e74705SXin Li        "SPDX-license-identifier-MIT",
34*67e74705SXin Li        "SPDX-license-identifier-NCSA",
35*67e74705SXin Li    ],
36*67e74705SXin Li    license_text: [
37*67e74705SXin Li        "LICENSE.TXT",
38*67e74705SXin Li        "NOTICE",
39*67e74705SXin Li    ],
40*67e74705SXin Li}
41*67e74705SXin Li
42*67e74705SXin Licc_defaults {
43*67e74705SXin Li    name: "clang-defaults",
44*67e74705SXin Li    defaults: [
45*67e74705SXin Li        "llvm-defaults",
46*67e74705SXin Li    ],
47*67e74705SXin Li
48*67e74705SXin Li    header_libs: ["clang-headers"],
49*67e74705SXin Li
50*67e74705SXin Li    cflags: [
51*67e74705SXin Li        "-pedantic",
52*67e74705SXin Li        "-Wno-cast-qual",
53*67e74705SXin Li        "-Wno-long-long",
54*67e74705SXin Li        "-Wno-unreachable-code-loop-increment",
55*67e74705SXin Li        "-Wno-unused-lambda-capture",
56*67e74705SXin Li        "-Wno-unused-private-field",
57*67e74705SXin Li    ],
58*67e74705SXin Li
59*67e74705SXin Li    include_dirs: [
60*67e74705SXin Li        "external/clang/include",
61*67e74705SXin Li        "external/clang/lib/CodeGen",
62*67e74705SXin Li    ],
63*67e74705SXin Li
64*67e74705SXin Li    tidy_checks: [
65*67e74705SXin Li        "-google-runtime-member-string-references",
66*67e74705SXin Li    ],
67*67e74705SXin Li
68*67e74705SXin Li    target: {
69*67e74705SXin Li        windows: {
70*67e74705SXin Li            enabled: true,
71*67e74705SXin Li            cflags: [
72*67e74705SXin Li                // This triggers an assertion on cross Windows builds.
73*67e74705SXin Li                "-Wno-error=uninitialized",
74*67e74705SXin Li            ],
75*67e74705SXin Li        },
76*67e74705SXin Li        not_windows: {
77*67e74705SXin Li            cflags: [
78*67e74705SXin Li                "-Wno-unused-lambda-capture",
79*67e74705SXin Li            ],
80*67e74705SXin Li        },
81*67e74705SXin Li    },
82*67e74705SXin Li
83*67e74705SXin Li}
84*67e74705SXin Li
85*67e74705SXin Liclang_generated_headers = [
86*67e74705SXin Li    "clang-gen-options",
87*67e74705SXin Li    "clang-gen-attributes",
88*67e74705SXin Li    "clang-gen-checkers",
89*67e74705SXin Li    "clang-gen-comment-commands",
90*67e74705SXin Li    "clang-gen-comment-html-named-character-references",
91*67e74705SXin Li    "clang-gen-html-tags",
92*67e74705SXin Li    "clang-gen-comment-nodes",
93*67e74705SXin Li    "clang-gen-diagnostics",
94*67e74705SXin Li    "clang-gen-declnodes",
95*67e74705SXin Li    "clang-gen-statnodes",
96*67e74705SXin Li    "clang-gen-arm-neon",
97*67e74705SXin Li    "clang-version",
98*67e74705SXin Li    "llvm-gen-attributes",
99*67e74705SXin Li    "llvm-gen-intrinsics",
100*67e74705SXin Li]
101*67e74705SXin Li
102*67e74705SXin Licc_library_headers {
103*67e74705SXin Li    name: "clang-headers",
104*67e74705SXin Li    vendor_available: true,
105*67e74705SXin Li    product_available: true,
106*67e74705SXin Li    host_supported: true,
107*67e74705SXin Li    // TODO(b/153609531): remove when no longer needed.
108*67e74705SXin Li    native_bridge_supported: true,
109*67e74705SXin Li    generated_headers: clang_generated_headers,
110*67e74705SXin Li    export_include_dirs: ["include"],
111*67e74705SXin Li    export_generated_headers: clang_generated_headers,
112*67e74705SXin Li    target: {
113*67e74705SXin Li        windows: {
114*67e74705SXin Li            enabled: true,
115*67e74705SXin Li        },
116*67e74705SXin Li    },
117*67e74705SXin Li}
118*67e74705SXin Li
119*67e74705SXin Lillvm_tblgen {
120*67e74705SXin Li    name: "clang-gen-options",
121*67e74705SXin Li    in: "include/clang/Driver/Options.td",
122*67e74705SXin Li    outs: ["clang/Driver/Options.inc"],
123*67e74705SXin Li}
124*67e74705SXin Li
125*67e74705SXin Liclang_tblgen {
126*67e74705SXin Li    name: "clang-gen-attributes",
127*67e74705SXin Li    in: "include/clang/Basic/Attr.td",
128*67e74705SXin Li    outs: [
129*67e74705SXin Li        "clang/AST/AttrDump.inc",
130*67e74705SXin Li        "clang/AST/AttrImpl.inc",
131*67e74705SXin Li        "clang/AST/Attrs.inc",
132*67e74705SXin Li        "clang/AST/AttrVisitor.inc",
133*67e74705SXin Li        "clang/Basic/AttrHasAttributeImpl.inc",
134*67e74705SXin Li        "clang/Basic/AttrList.inc",
135*67e74705SXin Li        "clang/Parse/AttrParserStringSwitches.inc",
136*67e74705SXin Li        "clang/Sema/AttrParsedAttrImpl.inc",
137*67e74705SXin Li        "clang/Sema/AttrParsedAttrKinds.inc",
138*67e74705SXin Li        "clang/Sema/AttrParsedAttrList.inc",
139*67e74705SXin Li        "clang/Sema/AttrSpellingListIndex.inc",
140*67e74705SXin Li        "clang/Sema/AttrTemplateInstantiate.inc",
141*67e74705SXin Li        "clang/Serialization/AttrPCHRead.inc",
142*67e74705SXin Li        "clang/Serialization/AttrPCHWrite.inc",
143*67e74705SXin Li    ],
144*67e74705SXin Li}
145*67e74705SXin Li
146*67e74705SXin Liclang_tblgen {
147*67e74705SXin Li    name: "clang-gen-checkers",
148*67e74705SXin Li    in: "include/clang/StaticAnalyzer/Checkers/Checkers.td",
149*67e74705SXin Li    outs: ["clang/StaticAnalyzer/Checkers/Checkers.inc"],
150*67e74705SXin Li}
151*67e74705SXin Li
152*67e74705SXin Liclang_tblgen {
153*67e74705SXin Li    name: "clang-gen-comment-commands",
154*67e74705SXin Li    in: "include/clang/AST/CommentCommands.td",
155*67e74705SXin Li    outs: [
156*67e74705SXin Li        "clang/AST/CommentCommandInfo.inc",
157*67e74705SXin Li        "clang/AST/CommentCommandList.inc",
158*67e74705SXin Li    ],
159*67e74705SXin Li}
160*67e74705SXin Li
161*67e74705SXin Liclang_tblgen {
162*67e74705SXin Li    name: "clang-gen-comment-html-named-character-references",
163*67e74705SXin Li    in: "include/clang/AST/CommentHTMLNamedCharacterReferences.td",
164*67e74705SXin Li    outs: ["clang/AST/CommentHTMLNamedCharacterReferences.inc"],
165*67e74705SXin Li}
166*67e74705SXin Li
167*67e74705SXin Liclang_tblgen {
168*67e74705SXin Li    name: "clang-gen-html-tags",
169*67e74705SXin Li    in: "include/clang/AST/CommentHTMLTags.td",
170*67e74705SXin Li    outs: [
171*67e74705SXin Li        "clang/AST/CommentHTMLTagsProperties.inc",
172*67e74705SXin Li        "clang/AST/CommentHTMLTags.inc",
173*67e74705SXin Li    ],
174*67e74705SXin Li}
175*67e74705SXin Li
176*67e74705SXin Liclang_tblgen {
177*67e74705SXin Li    name: "clang-gen-comment-nodes",
178*67e74705SXin Li    in: "include/clang/Basic/CommentNodes.td",
179*67e74705SXin Li    outs: ["clang/AST/CommentNodes.inc"],
180*67e74705SXin Li}
181*67e74705SXin Li
182*67e74705SXin Liclang_tblgen {
183*67e74705SXin Li    name: "clang-gen-diagnostics",
184*67e74705SXin Li    in: "include/clang/Basic/Diagnostic.td",
185*67e74705SXin Li    outs: [
186*67e74705SXin Li        "clang/Basic/DiagnosticAnalysisKinds.inc",
187*67e74705SXin Li        "clang/Basic/DiagnosticASTKinds.inc",
188*67e74705SXin Li        "clang/Basic/DiagnosticCommentKinds.inc",
189*67e74705SXin Li        "clang/Basic/DiagnosticCommonKinds.inc",
190*67e74705SXin Li        "clang/Basic/DiagnosticDriverKinds.inc",
191*67e74705SXin Li        "clang/Basic/DiagnosticFrontendKinds.inc",
192*67e74705SXin Li        "clang/Basic/DiagnosticLexKinds.inc",
193*67e74705SXin Li        "clang/Basic/DiagnosticParseKinds.inc",
194*67e74705SXin Li        "clang/Basic/DiagnosticSemaKinds.inc",
195*67e74705SXin Li        "clang/Basic/DiagnosticSerializationKinds.inc",
196*67e74705SXin Li        "clang/Basic/DiagnosticGroups.inc",
197*67e74705SXin Li        "clang/Basic/DiagnosticIndexName.inc",
198*67e74705SXin Li    ],
199*67e74705SXin Li}
200*67e74705SXin Li
201*67e74705SXin Liclang_tblgen {
202*67e74705SXin Li    name: "clang-gen-declnodes",
203*67e74705SXin Li    in: "include/clang/Basic/DeclNodes.td",
204*67e74705SXin Li    outs: ["clang/AST/DeclNodes.inc"],
205*67e74705SXin Li}
206*67e74705SXin Li
207*67e74705SXin Liclang_tblgen {
208*67e74705SXin Li    name: "clang-gen-statnodes",
209*67e74705SXin Li    in: "include/clang/Basic/StmtNodes.td",
210*67e74705SXin Li    outs: ["clang/AST/StmtNodes.inc"],
211*67e74705SXin Li}
212*67e74705SXin Li
213*67e74705SXin Liclang_tblgen {
214*67e74705SXin Li    name: "clang-gen-arm-neon",
215*67e74705SXin Li    in: "include/clang/Basic/arm_neon.td",
216*67e74705SXin Li    outs: [
217*67e74705SXin Li        "clang/Basic/arm_neon.inc",
218*67e74705SXin Li        "clang/Basic/arm_neon.h",
219*67e74705SXin Li    ],
220*67e74705SXin Li}
221*67e74705SXin Li
222*67e74705SXin Ligenrule {
223*67e74705SXin Li    name: "clang-version",
224*67e74705SXin Li    cmd: "$(location) $(in) > $(out)",
225*67e74705SXin Li    tool_files: [
226*67e74705SXin Li        "clang-version-inc.py",
227*67e74705SXin Li        "version.py",
228*67e74705SXin Li    ],
229*67e74705SXin Li    srcs: [
230*67e74705SXin Li        "include/clang/Basic/Version.inc.in",
231*67e74705SXin Li    ],
232*67e74705SXin Li    out: ["clang/Basic/Version.inc"],
233*67e74705SXin Li}
234*67e74705SXin Li
235*67e74705SXin Licc_library_shared {
236*67e74705SXin Li    name: "libclang_android",
237*67e74705SXin Li    defaults: [
238*67e74705SXin Li        "clang-defaults",
239*67e74705SXin Li        "force_build_llvm_components",
240*67e74705SXin Li    ],
241*67e74705SXin Li
242*67e74705SXin Li    host_supported: true,
243*67e74705SXin Li
244*67e74705SXin Li    whole_static_libs: [
245*67e74705SXin Li        "libclangAnalysis",
246*67e74705SXin Li        "libclangAST",
247*67e74705SXin Li        "libclangASTMatchers",
248*67e74705SXin Li        "libclangBasic",
249*67e74705SXin Li        "libclangCodeGen",
250*67e74705SXin Li        "libclangDriver",
251*67e74705SXin Li        "libclangEdit",
252*67e74705SXin Li        "libclangFormat",
253*67e74705SXin Li        "libclangFrontend",
254*67e74705SXin Li        "libclangIndex",
255*67e74705SXin Li        "libclangLex",
256*67e74705SXin Li        "libclangLibclang",
257*67e74705SXin Li        "libclangParse",
258*67e74705SXin Li        "libclangRewrite",
259*67e74705SXin Li        "libclangRewriteFrontend",
260*67e74705SXin Li        "libclangSema",
261*67e74705SXin Li        "libclangSerialization",
262*67e74705SXin Li        "libclangTooling",
263*67e74705SXin Li        "libclangToolingCore",
264*67e74705SXin Li    ],
265*67e74705SXin Li
266*67e74705SXin Li    export_shared_lib_headers: ["libLLVM_android"],
267*67e74705SXin Li    shared_libs: ["libLLVM_android"],
268*67e74705SXin Li    export_header_lib_headers: ["clang-headers"],
269*67e74705SXin Li
270*67e74705SXin Li    target: {
271*67e74705SXin Li        windows: {
272*67e74705SXin Li            host_ldlibs: [
273*67e74705SXin Li                "-limagehlp",
274*67e74705SXin Li                "-lpsapi",
275*67e74705SXin Li                "-lversion",
276*67e74705SXin Li            ],
277*67e74705SXin Li        },
278*67e74705SXin Li        not_windows: {
279*67e74705SXin Li            shared_libs: ["libc++"],
280*67e74705SXin Li        },
281*67e74705SXin Li    },
282*67e74705SXin Li
283*67e74705SXin Li    product_variables: {
284*67e74705SXin Li        unbundled_build: {
285*67e74705SXin Li            // Don't build the library in unbundled branches.
286*67e74705SXin Li            enabled: false,
287*67e74705SXin Li        },
288*67e74705SXin Li    },
289*67e74705SXin Li}
290*67e74705SXin Li
291*67e74705SXin Ligenrule {
292*67e74705SXin Li    name: "renderscript-clang-include",
293*67e74705SXin Li    visibility: ["//development/build"],
294*67e74705SXin Li    tools: ["soong_zip"],
295*67e74705SXin Li    cmd: "$(location soong_zip) -o $(out) -P renderscript/clang-include " +
296*67e74705SXin Li        "-C $$(dirname $(location LICENSE.TXT))/lib/Headers -D $$(dirname $(location LICENSE.TXT))/lib/Headers " +
297*67e74705SXin Li        "-C $$(dirname $(location LICENSE.TXT)) -f $(location LICENSE.TXT)",
298*67e74705SXin Li    srcs: [
299*67e74705SXin Li        "lib/Headers/**/*",
300*67e74705SXin Li        "LICENSE.TXT",
301*67e74705SXin Li    ],
302*67e74705SXin Li    out: ["clang-include.zip"],
303*67e74705SXin Li}
304