OSDN Git Service

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