OSDN Git Service

f9f3775b087fd3136a897fb63df2d2b0d4a7c4c1
[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         "libLLVMAggressiveInstCombine",
242         "libLLVMInstCombine",
243         "libLLVMInstrumentation",
244         "libLLVMTransformObjCARC",
245         "libLLVMTransformUtils",
246         "libLLVMAnalysis",
247         "libLLVMTarget",
248         "libLLVMGlobalISel",
249         "libLLVMMCDisassembler",
250         "libLLVMMC",
251         "libLLVMMCParser",
252         "libLLVMCore",
253         "libLLVMAsmParser",
254         "libLLVMOption",
255         "libLLVMSupport",
256         "libLLVMVectorize",
257         "libLLVMProfileData",
258         "libLLVMProfileDataCoverage",
259         "libLLVMLibDriver",
260         "libLLVMExecutionEngine",
261         "libLLVMRuntimeDyld",
262         "libLLVMMCJIT",
263         "libLLVMOrcJIT",
264         "libLLVMBinaryFormat",
265     ],
266
267     export_include_dirs: ["include"],
268
269     target: {
270         host: {
271             // Host build pulls in all ARM, Mips, X86 components.
272            whole_static_libs: llvm_arm_static_libraries +
273                 llvm_aarch64_static_libraries +
274                 llvm_mips_static_libraries +
275                 llvm_x86_static_libraries,
276             export_include_dirs: ["host/include"],
277         },
278         windows: {
279             enabled: true,
280             host_ldlibs: [
281                 "-limagehlp",
282                 "-lpsapi",
283                 "-lole32",
284                 "-lversion",
285             ],
286         },
287         darwin: {
288             host_ldlibs: [
289                 "-ldl",
290                 "-lpthread",
291             ],
292         },
293         linux: {
294             host_ldlibs: [
295                 "-ldl",
296                 "-lpthread",
297             ],
298         },
299         android: {
300             export_include_dirs: ["device/include"],
301             whole_static_libs: llvm_amdgpu_static_libraries,
302         },
303         android_arm: {
304             whole_static_libs: llvm_arm_static_libraries,
305         },
306         android_x86: {
307             whole_static_libs: llvm_x86_static_libraries +
308                 llvm_arm_static_libraries +
309                 llvm_aarch64_static_libraries,
310         },
311         android_x86_64: {
312             whole_static_libs: llvm_x86_static_libraries +
313                 llvm_arm_static_libraries +
314                 llvm_aarch64_static_libraries,
315         },
316         android_mips: {
317             whole_static_libs: llvm_mips_static_libraries,
318         },
319         android_mips64: {
320             whole_static_libs: llvm_mips_static_libraries,
321         },
322         android_arm64: {
323             whole_static_libs: llvm_aarch64_static_libraries +
324                 llvm_arm_static_libraries,
325         },
326     },
327 }
328
329 subdirs = [
330     "soong",
331     "lib",
332     "utils/TableGen",
333 ]