OSDN Git Service

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