OSDN Git Service

android: InstCombine: add support for InstCombineTable.inc TableGen rules
[android-x86/external-llvm.git] / Android.bp
1 cc_defaults {
2     name: "llvm-defaults",
3     defaults: ["llvm-defaults-no-generated-headers"],
4     header_libs: ["llvm-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: "llvm-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: ["llvm-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: "llvm-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: "llvm-headers",
121     vendor_available: true,
122     host_supported: true,
123     header_libs: ["llvm-headers-no-generated-headers"],
124     export_header_lib_headers: ["llvm-headers-no-generated-headers"],
125     generated_headers: [
126         "llvm-gen-attributes",
127         "llvm-gen-intrinsics",
128     ],
129     export_generated_headers: [
130         "llvm-gen-attributes",
131         "llvm-gen-intrinsics",
132     ],
133     target: {
134         windows: {
135             enabled: true,
136         },
137     },
138 }
139
140 llvm_tblgen {
141     name: "llvm-gen-attributes",
142     in: "include/llvm/IR/Attributes.td",
143     outs: ["llvm/IR/Attributes.inc"],
144 }
145
146 llvm_tblgen {
147     name: "llvm-gen-intrinsics",
148     in: "include/llvm/IR/Intrinsics.td",
149     outs: [
150         "llvm/IR/IntrinsicEnums.inc",
151         "llvm/IR/IntrinsicImpl.inc",
152     ],
153 }
154
155 force_build_llvm_components_defaults {
156     name: "force_build_llvm_components",
157     // Host build disabled by soong/llvm.go unless FORCE_BUILD_LLVM_COMPONENTS
158     // environment variable is set
159 }
160
161 // LLVM shared library build
162
163 llvm_arm_static_libraries = [
164     "libLLVMARMCodeGen",
165     "libLLVMARMAsmParser",
166     "libLLVMARMAsmPrinter",
167     "libLLVMARMInfo",
168     "libLLVMARMDesc",
169     "libLLVMARMDisassembler",
170     "libLLVMARMUtils",
171 ]
172
173 llvm_x86_static_libraries = [
174     "libLLVMX86CodeGen",
175     "libLLVMX86Info",
176     "libLLVMX86Desc",
177     "libLLVMX86AsmParser",
178     "libLLVMX86AsmPrinter",
179     "libLLVMX86Utils",
180     "libLLVMX86Disassembler",
181 ]
182
183 llvm_mips_static_libraries = [
184     "libLLVMMipsCodeGen",
185     "libLLVMMipsInfo",
186     "libLLVMMipsDesc",
187     "libLLVMMipsAsmParser",
188     "libLLVMMipsAsmPrinter",
189     "libLLVMMipsDisassembler",
190 ]
191
192 llvm_aarch64_static_libraries = [
193     "libLLVMAArch64CodeGen",
194     "libLLVMAArch64Info",
195     "libLLVMAArch64Desc",
196     "libLLVMAArch64AsmParser",
197     "libLLVMAArch64AsmPrinter",
198     "libLLVMAArch64Utils",
199     "libLLVMAArch64Disassembler",
200 ]
201
202 llvm_amdgpu_static_libraries = [
203     "libLLVMAMDGPUCodeGen",
204     "libLLVMAMDGPUInfo",
205     "libLLVMAMDGPUDesc",
206     "libLLVMAMDGPUAsmParser",
207     "libLLVMAMDGPUAsmPrinter",
208     "libLLVMAMDGPUUtils",
209 ]
210
211
212 cc_library_shared {
213     host_supported: true,
214     name: "libLLVM",
215     defaults: [
216         "llvm-defaults",
217         "force_build_llvm_components",
218     ],
219
220     whole_static_libs: [
221         // pre static libraries
222         "libLLVMLinker",
223         "libLLVMipo",
224         "libLLVMDebugInfoDWARF",
225         "libLLVMDebugInfoMSF",
226         "libLLVMDebugInfoPDB",
227         "libLLVMSymbolize",
228         "libLLVMIRReader",
229         "libLLVMBitWriter",
230         "libLLVMBitReader",
231         "libLLVMPasses",
232
233         // post static libraries
234         "libLLVMLTO",
235         "libLLVMAsmPrinter",
236         "libLLVMSelectionDAG",
237         "libLLVMCodeGen",
238         "libLLVMDebugInfoCodeView",
239         "libLLVMObject",
240         "libLLVMScalarOpts",
241         "libLLVMInstCombine",
242         "libLLVMInstrumentation",
243         "libLLVMTransformObjCARC",
244         "libLLVMTransformUtils",
245         "libLLVMAnalysis",
246         "libLLVMTarget",
247         "libLLVMGlobalISel",
248         "libLLVMMCDisassembler",
249         "libLLVMMC",
250         "libLLVMMCParser",
251         "libLLVMCore",
252         "libLLVMAsmParser",
253         "libLLVMOption",
254         "libLLVMSupport",
255         "libLLVMVectorize",
256         "libLLVMProfileData",
257         "libLLVMProfileDataCoverage",
258         "libLLVMLibDriver",
259         "libLLVMExecutionEngine",
260         "libLLVMRuntimeDyld",
261         "libLLVMMCJIT",
262         "libLLVMOrcJIT",
263         "libLLVMBinaryFormat",
264     ],
265
266     export_include_dirs: ["include"],
267
268     target: {
269         host: {
270             // Host build pulls in all ARM, Mips, X86 components.
271            whole_static_libs: llvm_arm_static_libraries +
272                 llvm_aarch64_static_libraries +
273                 llvm_mips_static_libraries +
274                 llvm_x86_static_libraries,
275             export_include_dirs: ["host/include"],
276         },
277         windows: {
278             enabled: true,
279             host_ldlibs: [
280                 "-limagehlp",
281                 "-lpsapi",
282                 "-lole32",
283                 "-lversion",
284             ],
285         },
286         darwin: {
287             host_ldlibs: [
288                 "-ldl",
289                 "-lpthread",
290             ],
291         },
292         linux: {
293             host_ldlibs: [
294                 "-ldl",
295                 "-lpthread",
296             ],
297         },
298         android: {
299             export_include_dirs: ["device/include"],
300             whole_static_libs: llvm_amdgpu_static_libraries,
301         },
302         android_arm: {
303             whole_static_libs: llvm_arm_static_libraries,
304         },
305         android_x86: {
306             whole_static_libs: llvm_x86_static_libraries +
307                 llvm_arm_static_libraries +
308                 llvm_aarch64_static_libraries,
309         },
310         android_x86_64: {
311             whole_static_libs: llvm_x86_static_libraries +
312                 llvm_arm_static_libraries +
313                 llvm_aarch64_static_libraries,
314         },
315         android_mips: {
316             whole_static_libs: llvm_mips_static_libraries,
317         },
318         android_mips64: {
319             whole_static_libs: llvm_mips_static_libraries,
320         },
321         android_arm64: {
322             whole_static_libs: llvm_aarch64_static_libraries +
323                 llvm_arm_static_libraries,
324         },
325     },
326 }
327
328 subdirs = [
329     "soong",
330     "lib",
331     "utils/TableGen",
332 ]