OSDN Git Service

android: [MSF] add support for libLLVMDebugInfoMSF
[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.gen"],
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         "libLLVMDebugInfoMSF",
222         "libLLVMDebugInfoPDB",
223         "libLLVMSymbolize",
224         "libLLVMIRReader",
225         "libLLVMBitWriter",
226         "libLLVMBitReader",
227
228         // post static libraries
229         "libLLVMLTO",
230         "libLLVMAsmPrinter",
231         "libLLVMSelectionDAG",
232         "libLLVMCodeGen",
233         "libLLVMDebugInfoCodeView",
234         "libLLVMObject",
235         "libLLVMScalarOpts",
236         "libLLVMInstCombine",
237         "libLLVMInstrumentation",
238         "libLLVMTransformObjCARC",
239         "libLLVMTransformUtils",
240         "libLLVMAnalysis",
241         "libLLVMTarget",
242         "libLLVMGlobalISel",
243         "libLLVMMCDisassembler",
244         "libLLVMMC",
245         "libLLVMMCParser",
246         "libLLVMCore",
247         "libLLVMAsmParser",
248         "libLLVMOption",
249         "libLLVMSupport",
250         "libLLVMVectorize",
251         "libLLVMProfileData",
252         "libLLVMProfileDataCoverage",
253         "libLLVMLibDriver",
254         "libLLVMExecutionEngine",
255         "libLLVMRuntimeDyld",
256         "libLLVMMCJIT",
257         "libLLVMOrcJIT",
258         "libLLVMBinaryFormat",
259     ],
260
261     export_include_dirs: ["include"],
262
263     target: {
264         host: {
265             // Host build pulls in all ARM, Mips, X86 components.
266            whole_static_libs: llvm_arm_static_libraries +
267                 llvm_aarch64_static_libraries +
268                 llvm_mips_static_libraries +
269                 llvm_x86_static_libraries,
270             export_include_dirs: ["host/include"],
271         },
272         windows: {
273             enabled: true,
274             host_ldlibs: [
275                 "-limagehlp",
276                 "-lpsapi",
277                 "-lole32",
278                 "-lversion",
279             ],
280         },
281         darwin: {
282             host_ldlibs: [
283                 "-ldl",
284                 "-lpthread",
285             ],
286         },
287         linux: {
288             host_ldlibs: [
289                 "-ldl",
290                 "-lpthread",
291             ],
292         },
293         android: {
294             export_include_dirs: ["device/include"],
295             whole_static_libs: llvm_amdgpu_static_libraries,
296         },
297         android_arm: {
298             whole_static_libs: llvm_arm_static_libraries,
299         },
300         android_x86: {
301             whole_static_libs: llvm_x86_static_libraries +
302                 llvm_arm_static_libraries +
303                 llvm_aarch64_static_libraries,
304         },
305         android_x86_64: {
306             whole_static_libs: llvm_x86_static_libraries +
307                 llvm_arm_static_libraries +
308                 llvm_aarch64_static_libraries,
309         },
310         android_mips: {
311             whole_static_libs: llvm_mips_static_libraries,
312         },
313         android_mips64: {
314             whole_static_libs: llvm_mips_static_libraries,
315         },
316         android_arm64: {
317             whole_static_libs: llvm_aarch64_static_libraries +
318                 llvm_arm_static_libraries,
319         },
320     },
321 }
322
323 subdirs = [
324     "soong",
325     "lib",
326     "utils/TableGen",
327 ]