blob: c5740d201a92ad1d22eb3ae772377a4570abd4ec [file] [log] [blame]
Colin Cross8a3437f2016-12-13 13:01:18 -08001cc_defaults {
Colin Cross4094d252016-11-21 17:18:40 -08002 name: "llvm-defaults",
Colin Cross8a3437f2016-12-13 13:01:18 -08003 defaults: ["llvm-defaults-no-generated-headers"],
4 header_libs: ["llvm-headers"],
Chih-Hung Hsieha8de0682017-08-09 10:27:27 -07005 tidy_checks: [
6 "-google-build-*",
7 "-google-global-*",
8 ],
Evgenii Stepanov2d76ce52019-01-04 17:37:15 -08009 sanitize: {
10 hwaddress: false, // code size b/112437884
11 },
Colin Cross8a3437f2016-12-13 13:01:18 -080012}
13
14// This module defines all of the defaults used to compiled llvm, except for
15// the generated headers. It is necessary to avoid a circular dependency
16// from the tblgen tool used to generate the headers to the generated headers.
17llvm_defaults {
18 name: "llvm-defaults-no-generated-headers",
Colin Cross4094d252016-11-21 17:18:40 -080019
20 host_supported: true,
Colin Cross4094d252016-11-21 17:18:40 -080021
22 cflags: [
23 "-D_GNU_SOURCE",
24 "-D__STDC_LIMIT_MACROS",
25 "-D__STDC_CONSTANT_MACROS",
26 "-D__STDC_FORMAT_MACROS",
27 "-fomit-frame-pointer",
28 "-Wall",
29 "-W",
Yi Kongfccb4bf2018-01-03 12:55:42 -080030 "-Wno-cast-qual",
Colin Cross4094d252016-11-21 17:18:40 -080031 "-Wno-sign-compare",
32 "-Wno-unused-parameter",
33 "-Wno-maybe-uninitialized",
34 "-Wno-missing-field-initializers",
Chih-Hung Hsieh53d37e52018-09-05 15:41:45 -070035 "-Wno-implicit-fallthrough",
Colin Cross4094d252016-11-21 17:18:40 -080036 "-Wwrite-strings",
37 "-Werror",
38 "-Dsprintf=sprintf",
39 ],
40
41 cppflags: [
42 "-Wno-sign-promo",
43 "-std=c++11",
44 ],
45
Chih-Hung Hsieha8de0682017-08-09 10:27:27 -070046 tidy_checks: [
47 "-google-build-*",
48 "-google-global-*",
49 ],
50
Colin Cross8a3437f2016-12-13 13:01:18 -080051 header_libs: ["llvm-headers-no-generated-headers"],
Colin Cross4094d252016-11-21 17:18:40 -080052
53 target: {
54 android: {
55 cflags: [
56 "-finline-functions",
57 ],
Dan Willemsena8808712017-10-16 20:08:05 -070058 },
59 linux: {
Colin Cross4094d252016-11-21 17:18:40 -080060 cppflags: [
61 "-Woverloaded-virtual",
62 ],
Colin Cross4094d252016-11-21 17:18:40 -080063 },
64 host: {
Colin Cross4094d252016-11-21 17:18:40 -080065 cppflags: [
66 "-fno-rtti",
67 "-fno-exceptions",
68 ],
69 },
70 windows: {
Colin Cross4094d252016-11-21 17:18:40 -080071 // Disable certain warnings for use with mingw.
72 // We also must undefine WIN32_LEAN_AND_MEAN, since it is being passed globally
73 // on the command line, and LLVM defines this internally itself.
74 cflags: [
75 "-Wno-array-bounds",
76 "-Wno-comment",
77 "-UWIN32_LEAN_AND_MEAN",
78 ],
79
80 host_ldlibs: ["-luuid"],
81 },
Dan Willemsena32f6632017-10-02 10:41:09 -070082 linux_glibc: {
Colin Cross4094d252016-11-21 17:18:40 -080083 // Add on ncurses to have support for terminfo
84 host_ldlibs: [
85 "-lncurses",
86 "-lgcc_s",
87 ],
88 },
89 darwin: {
90 cppflags: [
91 "-Wno-deprecated-declarations",
92 "-Woverloaded-virtual",
93 ],
94
95 // Add on ncurses to have support for terminfo
Colin Crossd4da2d92016-12-01 14:49:11 -080096 host_ldlibs: [
Colin Crossd4da2d92016-12-01 14:49:11 -080097 "-lncurses",
98 ],
Colin Cross4094d252016-11-21 17:18:40 -080099 },
100 },
101}
102
Colin Cross8a3437f2016-12-13 13:01:18 -0800103cc_library_headers {
104 name: "llvm-headers-no-generated-headers",
Jiyong Park764e9262017-08-10 20:09:55 +0900105 vendor_available: true,
Colin Cross8a3437f2016-12-13 13:01:18 -0800106 host_supported: true,
107 export_include_dirs: ["include"],
108 target: {
109 android: {
110 export_include_dirs: ["device/include"],
111 },
112 host: {
113 export_include_dirs: ["host/include"],
114 },
Dan Willemsen399e4742017-03-15 16:58:24 -0700115 linux_bionic: {
116 enabled: true,
117 },
Colin Cross8a3437f2016-12-13 13:01:18 -0800118 windows: {
119 enabled: true,
120 },
121 },
122}
123
124cc_library_headers {
125 name: "llvm-headers",
Jiyong Park764e9262017-08-10 20:09:55 +0900126 vendor_available: true,
Colin Cross8a3437f2016-12-13 13:01:18 -0800127 host_supported: true,
128 header_libs: ["llvm-headers-no-generated-headers"],
129 export_header_lib_headers: ["llvm-headers-no-generated-headers"],
Colin Cross4094d252016-11-21 17:18:40 -0800130 generated_headers: [
131 "llvm-gen-attributes",
132 "llvm-gen-intrinsics",
133 ],
Colin Cross8a3437f2016-12-13 13:01:18 -0800134 export_generated_headers: [
135 "llvm-gen-attributes",
136 "llvm-gen-intrinsics",
137 ],
138 target: {
139 windows: {
140 enabled: true,
141 },
142 },
Colin Cross4094d252016-11-21 17:18:40 -0800143}
144
145llvm_tblgen {
146 name: "llvm-gen-attributes",
147 in: "include/llvm/IR/Attributes.td",
148 outs: ["llvm/IR/Attributes.inc"],
149}
150
151llvm_tblgen {
152 name: "llvm-gen-intrinsics",
153 in: "include/llvm/IR/Intrinsics.td",
154 outs: ["llvm/IR/Intrinsics.gen"],
155}
156
Colin Crossd0b692652016-12-08 09:49:38 -0800157force_build_llvm_components_defaults {
158 name: "force_build_llvm_components",
159 // Host build disabled by soong/llvm.go unless FORCE_BUILD_LLVM_COMPONENTS
160 // environment variable is set
161}
162
Colin Cross4094d252016-11-21 17:18:40 -0800163// LLVM shared library build
164
165llvm_arm_static_libraries = [
166 "libLLVMARMCodeGen",
167 "libLLVMARMAsmParser",
168 "libLLVMARMAsmPrinter",
169 "libLLVMARMInfo",
170 "libLLVMARMDesc",
171 "libLLVMARMDisassembler",
172]
173
174llvm_x86_static_libraries = [
175 "libLLVMX86CodeGen",
176 "libLLVMX86Info",
177 "libLLVMX86Desc",
178 "libLLVMX86AsmParser",
179 "libLLVMX86AsmPrinter",
180 "libLLVMX86Utils",
181 "libLLVMX86Disassembler",
182]
183
184llvm_mips_static_libraries = [
185 "libLLVMMipsCodeGen",
186 "libLLVMMipsInfo",
187 "libLLVMMipsDesc",
188 "libLLVMMipsAsmParser",
189 "libLLVMMipsAsmPrinter",
190 "libLLVMMipsDisassembler",
191]
192
193llvm_aarch64_static_libraries = [
194 "libLLVMAArch64CodeGen",
195 "libLLVMAArch64Info",
196 "libLLVMAArch64Desc",
197 "libLLVMAArch64AsmParser",
198 "libLLVMAArch64AsmPrinter",
199 "libLLVMAArch64Utils",
200 "libLLVMAArch64Disassembler",
201]
202
Tim Klein7986a0e2019-05-13 23:55:43 +0100203cc_library {
Colin Cross4094d252016-11-21 17:18:40 -0800204 host_supported: true,
Pirama Arumuga Nainarc6f1de72017-08-03 11:31:35 -0700205 name: "libLLVM_android",
Tim Klein7986a0e2019-05-13 23:55:43 +0100206 vendor_available: true,
Colin Crossd0b692652016-12-08 09:49:38 -0800207 defaults: [
208 "llvm-defaults",
209 "force_build_llvm_components",
210 ],
Colin Cross4094d252016-11-21 17:18:40 -0800211
212 whole_static_libs: [
213 // pre static libraries
214 "libLLVMLinker",
215 "libLLVMipo",
216 "libLLVMDebugInfoDWARF",
217 "libLLVMDebugInfoPDB",
218 "libLLVMSymbolize",
219 "libLLVMIRReader",
220 "libLLVMBitWriter",
221 "libLLVMBitReader",
222
223 // post static libraries
224 "libLLVMLTO",
225 "libLLVMAsmPrinter",
226 "libLLVMSelectionDAG",
227 "libLLVMCodeGen",
228 "libLLVMDebugInfoCodeView",
229 "libLLVMObject",
230 "libLLVMScalarOpts",
231 "libLLVMInstCombine",
232 "libLLVMInstrumentation",
233 "libLLVMTransformObjCARC",
234 "libLLVMTransformUtils",
235 "libLLVMAnalysis",
236 "libLLVMTarget",
237 "libLLVMGlobalISel",
238 "libLLVMMCDisassembler",
239 "libLLVMMC",
240 "libLLVMMCParser",
241 "libLLVMCore",
242 "libLLVMAsmParser",
243 "libLLVMOption",
244 "libLLVMSupport",
245 "libLLVMVectorize",
246 "libLLVMProfileData",
247 "libLLVMProfileDataCoverage",
248 "libLLVMLibDriver",
Nicolas Norveza5aee7a2017-06-23 13:56:49 -0700249 "libLLVMExecutionEngine",
250 "libLLVMRuntimeDyld",
251 "libLLVMMCJIT",
252 "libLLVMOrcJIT",
Colin Cross4094d252016-11-21 17:18:40 -0800253 ],
254
Colin Cross7e5fa1a2016-12-06 16:42:05 -0800255 export_include_dirs: ["include"],
256
Colin Cross4094d252016-11-21 17:18:40 -0800257 target: {
258 host: {
259 // Host build pulls in all ARM, Mips, X86 components.
Nicolas Norveza5aee7a2017-06-23 13:56:49 -0700260 whole_static_libs: llvm_arm_static_libraries +
Colin Cross4094d252016-11-21 17:18:40 -0800261 llvm_aarch64_static_libraries +
262 llvm_mips_static_libraries +
263 llvm_x86_static_libraries,
Colin Cross7e5fa1a2016-12-06 16:42:05 -0800264 export_include_dirs: ["host/include"],
Colin Cross4094d252016-11-21 17:18:40 -0800265 },
266 windows: {
Colin Crossd4da2d92016-12-01 14:49:11 -0800267 enabled: true,
Colin Cross4094d252016-11-21 17:18:40 -0800268 host_ldlibs: [
269 "-limagehlp",
270 "-lpsapi",
271 "-lole32",
272 "-lversion",
273 ],
274 },
Colin Cross7e5fa1a2016-12-06 16:42:05 -0800275 android: {
276 export_include_dirs: ["device/include"],
277 },
Colin Cross4094d252016-11-21 17:18:40 -0800278 android_arm: {
279 whole_static_libs: llvm_arm_static_libraries,
280 },
281 android_x86: {
282 whole_static_libs: llvm_x86_static_libraries +
283 llvm_arm_static_libraries +
284 llvm_aarch64_static_libraries,
285 },
286 android_x86_64: {
287 whole_static_libs: llvm_x86_static_libraries +
288 llvm_arm_static_libraries +
289 llvm_aarch64_static_libraries,
290 },
291 android_mips: {
292 whole_static_libs: llvm_mips_static_libraries,
293 },
294 android_mips64: {
295 whole_static_libs: llvm_mips_static_libraries,
296 },
297 android_arm64: {
298 whole_static_libs: llvm_aarch64_static_libraries +
299 llvm_arm_static_libraries,
300 },
301 },
302}
303
304subdirs = [
305 "soong",
Colin Crossd4da2d92016-12-01 14:49:11 -0800306 "lib",
307 "tools/*",
Colin Cross4094d252016-11-21 17:18:40 -0800308 "utils/*",
309]