OSDN Git Service

android: AMDGPU/GlobalISel: fix tablegen rules (llvm90)
[android-x86/external-llvm.git] / Android.bp
1 cc_defaults {
2     name: "llvm90-defaults",
3     defaults: ["llvm90-defaults-no-generated-headers"],
4     header_libs: ["llvm90-headers"],
5 }
6
7 // This module defines all of the defaults used to compiled llvm, except for
8 // the generated headers.  It is necessary to avoid a circular dependency
9 // from the tblgen tool used to generate the headers to the generated headers.
10 llvm_defaults {
11     name: "llvm90-defaults-no-generated-headers",
12
13     host_supported: true,
14     clang: true,
15
16     cflags: [
17         "-D_GNU_SOURCE",
18         "-D__STDC_LIMIT_MACROS",
19         "-D__STDC_CONSTANT_MACROS",
20         "-D__STDC_FORMAT_MACROS",
21         "-fomit-frame-pointer",
22         "-Wall",
23         "-W",
24         "-Wno-sign-compare",
25         "-Wno-unused-parameter",
26         "-Wno-maybe-uninitialized",
27         "-Wno-missing-field-initializers",
28         "-Wwrite-strings",
29         "-Werror",
30         "-Dsprintf=sprintf",
31     ],
32
33     cppflags: [
34         "-Wno-sign-promo",
35         "-std=c++11",
36     ],
37
38     clang_cflags: [
39         // Temporarily suppress the warnings http://b/37867503
40         "-Wno-error=unused-lambda-capture",
41         "-Wno-error=user-defined-warnings",
42     ],
43
44     header_libs: ["llvm90-headers-no-generated-headers"],
45
46     target: {
47         android: {
48             cflags: [
49                 "-finline-functions",
50             ],
51             cppflags: [
52                 "-Woverloaded-virtual",
53             ],
54         },
55         host: {
56             cppflags: [
57                 "-fno-rtti",
58                 "-fno-exceptions",
59             ],
60         },
61         windows: {
62             // Disable certain warnings for use with mingw.
63             // We also must undefine WIN32_LEAN_AND_MEAN, since it is being passed globally
64             // on the command line, and LLVM defines this internally itself.
65             cflags: [
66                 "-Wno-array-bounds",
67                 "-Wno-comment",
68                 "-UWIN32_LEAN_AND_MEAN",
69             ],
70
71             host_ldlibs: ["-luuid"],
72         },
73         linux: {
74             cppflags: ["-Woverloaded-virtual"],
75
76             // Add on ncurses to have support for terminfo
77             host_ldlibs: [
78                 "-ldl",
79                 "-lncurses",
80                 "-lgcc_s",
81             ],
82         },
83         darwin: {
84             cppflags: [
85                 "-Wno-deprecated-declarations",
86                 "-Woverloaded-virtual",
87             ],
88
89             // Add on ncurses to have support for terminfo
90             host_ldlibs: [
91                 "-ldl",
92                 "-lncurses",
93             ],
94         },
95     },
96 }
97
98 cc_library_headers {
99     name: "llvm90-headers-no-generated-headers",
100     vendor_available: true,
101     host_supported: true,
102     export_include_dirs: ["include"],
103     target: {
104         android: {
105             export_include_dirs: ["device/include"],
106         },
107         host: {
108             export_include_dirs: ["host/include"],
109         },
110         linux_bionic: {
111             enabled: true,
112         },
113         windows: {
114             enabled: true,
115         },
116     },
117 }
118
119 cc_library_headers {
120     name: "llvm90-headers",
121     vendor_available: true,
122     host_supported: true,
123     header_libs: ["llvm90-headers-no-generated-headers"],
124     export_header_lib_headers: ["llvm90-headers-no-generated-headers"],
125     generated_headers: [
126         "llvm90-gen-attributes",
127         "llvm90-gen-intrinsics",
128         "llvm90-gen-revision",
129     ],
130     export_generated_headers: [
131         "llvm90-gen-attributes",
132         "llvm90-gen-intrinsics",
133         "llvm90-gen-revision",
134     ],
135     target: {
136         windows: {
137             enabled: true,
138         },
139     },
140 }
141
142 llvm90_tblgen {
143     name: "llvm90-gen-attributes",
144     in: "include/llvm/IR/Attributes.td",
145     outs: ["llvm/IR/Attributes.inc"],
146 }
147
148 llvm90_tblgen {
149     name: "llvm90-gen-intrinsics",
150     in: "include/llvm/IR/Intrinsics.td",
151     outs: [
152         "llvm/IR/IntrinsicEnums.inc",
153         "llvm/IR/IntrinsicImpl.inc",
154     ],
155 }
156
157 genrule {
158     name: "llvm90-gen-revision",
159     out: ["llvm/Support/VCSRevision.h"],
160     srcs: [".git/logs/HEAD*"],
161     tool_files: ["git_sha1_gen.py"],
162     cmd: "python $(location git_sha1_gen.py) --output $(out)",
163 }
164
165 force_build_llvm90_components_defaults {
166     name: "force_build_llvm90_components",
167     // Host build disabled by soong/llvm.go unless FORCE_BUILD_LLVM_COMPONENTS
168     // environment variable is set
169 }
170
171 // LLVM shared library build
172
173 llvm_arm_static_libraries = [
174     "libLLVM90ARMCodeGen",
175     "libLLVM90ARMAsmParser",
176     "libLLVM90ARMAsmPrinter",
177     "libLLVM90ARMInfo",
178     "libLLVM90ARMDesc",
179     "libLLVM90ARMDisassembler",
180     "libLLVM90ARMUtils",
181 ]
182
183 llvm_x86_static_libraries = [
184     "libLLVM90X86CodeGen",
185     "libLLVM90X86Info",
186     "libLLVM90X86Desc",
187     "libLLVM90X86AsmParser",
188     "libLLVM90X86AsmPrinter",
189     "libLLVM90X86Utils",
190     "libLLVM90X86Disassembler",
191 ]
192
193 llvm_mips_static_libraries = [
194     "libLLVM90MipsCodeGen",
195     "libLLVM90MipsInfo",
196     "libLLVM90MipsDesc",
197     "libLLVM90MipsAsmParser",
198     "libLLVM90MipsAsmPrinter",
199     "libLLVM90MipsDisassembler",
200 ]
201
202 llvm_aarch64_static_libraries = [
203     "libLLVM90AArch64CodeGen",
204     "libLLVM90AArch64Info",
205     "libLLVM90AArch64Desc",
206     "libLLVM90AArch64AsmParser",
207     "libLLVM90AArch64AsmPrinter",
208     "libLLVM90AArch64Utils",
209     "libLLVM90AArch64Disassembler",
210 ]
211
212 llvm_amdgpu_static_libraries = [
213     "libLLVM90AMDGPUCodeGen",
214     "libLLVM90AMDGPUInfo",
215     "libLLVM90AMDGPUDesc",
216     "libLLVM90AMDGPUAsmParser",
217     "libLLVM90AMDGPUAsmPrinter",
218     "libLLVM90AMDGPUUtils",
219     "libLLVM90AMDGPUDisassembler",
220 ]
221
222
223 cc_library_shared {
224     host_supported: true,
225     name: "libLLVM90",
226     defaults: [
227         "llvm90-defaults",
228         "force_build_llvm90_components",
229     ],
230
231     whole_static_libs: [
232         // pre static libraries
233         "libLLVM90Linker",
234         "libLLVM90ipo",
235         "libLLVM90DebugInfoDWARF",
236         "libLLVM90DebugInfoMSF",
237         "libLLVM90DebugInfoPDB",
238         "libLLVM90Symbolize",
239         "libLLVM90IRReader",
240         "libLLVM90BitWriter",
241         "libLLVM90BitReader",
242         "libLLVM90Passes",
243         "libLLVM90Demangle",
244         "libLLVM90BitstreamReader",
245
246         // post static libraries
247         "libLLVM90LTO",
248         "libLLVM90AsmPrinter",
249         "libLLVM90SelectionDAG",
250         "libLLVM90CodeGen",
251         "libLLVM90DebugInfoCodeView",
252         "libLLVM90Object",
253         "libLLVM90ScalarOpts",
254         "libLLVM90AggressiveInstCombine",
255         "libLLVM90InstCombine",
256         "libLLVM90Instrumentation",
257         "libLLVM90TransformObjCARC",
258         "libLLVM90TransformUtils",
259         "libLLVM90Analysis",
260         "libLLVM90Target",
261         "libLLVM90GlobalISel",
262         "libLLVM90MCDisassembler",
263         "libLLVM90MC",
264         "libLLVM90MCParser",
265         "libLLVM90Core",
266         "libLLVM90AsmParser",
267         "libLLVM90Option",
268         "libLLVM90Support",
269         "libLLVM90Vectorize",
270         "libLLVM90ProfileData",
271         "libLLVM90ProfileDataCoverage",
272         "libLLVM90LibDriver",
273         "libLLVM90ExecutionEngine",
274         "libLLVM90RuntimeDyld",
275         "libLLVM90MCJIT",
276         "libLLVM90OrcJIT",
277         "libLLVM90BinaryFormat",
278         "libLLVM90MIRParser",
279         "libLLVM90Remarks",
280         "libLLVM90JITLink",
281         "libLLVM90Coroutines",
282     ],
283
284     export_include_dirs: ["include"],
285
286     target: {
287         host: {
288             // Host build pulls in all ARM, Mips, X86 components.
289            whole_static_libs: llvm_arm_static_libraries +
290                 llvm_aarch64_static_libraries +
291                 llvm_mips_static_libraries +
292                 llvm_x86_static_libraries,
293             export_include_dirs: ["host/include"],
294         },
295         windows: {
296             enabled: true,
297             host_ldlibs: [
298                 "-limagehlp",
299                 "-lpsapi",
300                 "-lole32",
301                 "-lversion",
302             ],
303         },
304         darwin: {
305             host_ldlibs: [
306                 "-ldl",
307                 "-lpthread",
308             ],
309         },
310         linux: {
311             host_ldlibs: [
312                 "-ldl",
313                 "-lpthread",
314             ],
315         },
316         android: {
317             export_include_dirs: ["device/include"],
318             whole_static_libs: llvm_amdgpu_static_libraries,
319         },
320         android_arm: {
321             whole_static_libs: llvm_arm_static_libraries,
322         },
323         android_x86: {
324             whole_static_libs: llvm_x86_static_libraries +
325                 llvm_arm_static_libraries +
326                 llvm_aarch64_static_libraries,
327         },
328         android_x86_64: {
329             whole_static_libs: llvm_x86_static_libraries +
330                 llvm_arm_static_libraries +
331                 llvm_aarch64_static_libraries,
332         },
333         android_mips: {
334             whole_static_libs: llvm_mips_static_libraries,
335         },
336         android_mips64: {
337             whole_static_libs: llvm_mips_static_libraries,
338         },
339         android_arm64: {
340             whole_static_libs: llvm_aarch64_static_libraries +
341                 llvm_arm_static_libraries,
342         },
343     },
344 }
345
346 subdirs = [
347     "soong",
348     "lib",
349     "utils/TableGen",
350 ]