blob: 432340a9e92d2f33972602a64efb70c2d7e94e8a [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,
Victor Khimenko72db02d2020-07-02 01:32:56 +020021 // TODO(b/153609531): remove when no longer needed.
22 native_bridge_supported: true,
Colin Cross4094d252016-11-21 17:18:40 -080023
24 cflags: [
25 "-D_GNU_SOURCE",
26 "-D__STDC_LIMIT_MACROS",
27 "-D__STDC_CONSTANT_MACROS",
28 "-D__STDC_FORMAT_MACROS",
29 "-fomit-frame-pointer",
30 "-Wall",
31 "-W",
Yi Kongfccb4bf2018-01-03 12:55:42 -080032 "-Wno-cast-qual",
Colin Cross4094d252016-11-21 17:18:40 -080033 "-Wno-sign-compare",
34 "-Wno-unused-parameter",
35 "-Wno-maybe-uninitialized",
36 "-Wno-missing-field-initializers",
Chih-Hung Hsieh53d37e52018-09-05 15:41:45 -070037 "-Wno-implicit-fallthrough",
Colin Cross4094d252016-11-21 17:18:40 -080038 "-Wwrite-strings",
39 "-Werror",
40 "-Dsprintf=sprintf",
41 ],
42
43 cppflags: [
44 "-Wno-sign-promo",
45 "-std=c++11",
46 ],
47
Chih-Hung Hsieha8de0682017-08-09 10:27:27 -070048 tidy_checks: [
49 "-google-build-*",
50 "-google-global-*",
51 ],
52
Colin Cross8a3437f2016-12-13 13:01:18 -080053 header_libs: ["llvm-headers-no-generated-headers"],
Colin Cross4094d252016-11-21 17:18:40 -080054
55 target: {
56 android: {
57 cflags: [
58 "-finline-functions",
59 ],
Dan Willemsena8808712017-10-16 20:08:05 -070060 },
61 linux: {
Colin Cross4094d252016-11-21 17:18:40 -080062 cppflags: [
63 "-Woverloaded-virtual",
64 ],
Colin Cross4094d252016-11-21 17:18:40 -080065 },
66 host: {
Colin Cross4094d252016-11-21 17:18:40 -080067 cppflags: [
68 "-fno-rtti",
69 "-fno-exceptions",
70 ],
71 },
72 windows: {
Colin Cross4094d252016-11-21 17:18:40 -080073 // Disable certain warnings for use with mingw.
74 // We also must undefine WIN32_LEAN_AND_MEAN, since it is being passed globally
75 // on the command line, and LLVM defines this internally itself.
76 cflags: [
77 "-Wno-array-bounds",
78 "-Wno-comment",
79 "-UWIN32_LEAN_AND_MEAN",
80 ],
81
82 host_ldlibs: ["-luuid"],
83 },
Dan Willemsena32f6632017-10-02 10:41:09 -070084 linux_glibc: {
Colin Cross4094d252016-11-21 17:18:40 -080085 // Add on ncurses to have support for terminfo
86 host_ldlibs: [
87 "-lncurses",
88 "-lgcc_s",
89 ],
90 },
91 darwin: {
92 cppflags: [
93 "-Wno-deprecated-declarations",
94 "-Woverloaded-virtual",
95 ],
96
97 // Add on ncurses to have support for terminfo
Colin Crossd4da2d92016-12-01 14:49:11 -080098 host_ldlibs: [
Colin Crossd4da2d92016-12-01 14:49:11 -080099 "-lncurses",
100 ],
Colin Cross4094d252016-11-21 17:18:40 -0800101 },
102 },
103}
104
Colin Cross8a3437f2016-12-13 13:01:18 -0800105cc_library_headers {
106 name: "llvm-headers-no-generated-headers",
Jiyong Park764e9262017-08-10 20:09:55 +0900107 vendor_available: true,
Colin Cross8a3437f2016-12-13 13:01:18 -0800108 host_supported: true,
Victor Khimenko72db02d2020-07-02 01:32:56 +0200109 // TODO(b/153609531): remove when no longer needed.
110 native_bridge_supported: true,
Colin Cross8a3437f2016-12-13 13:01:18 -0800111 export_include_dirs: ["include"],
112 target: {
113 android: {
114 export_include_dirs: ["device/include"],
115 },
116 host: {
117 export_include_dirs: ["host/include"],
118 },
Dan Willemsen399e4742017-03-15 16:58:24 -0700119 linux_bionic: {
120 enabled: true,
121 },
Colin Cross8a3437f2016-12-13 13:01:18 -0800122 windows: {
123 enabled: true,
124 },
125 },
126}
127
128cc_library_headers {
129 name: "llvm-headers",
Jiyong Park764e9262017-08-10 20:09:55 +0900130 vendor_available: true,
Colin Cross8a3437f2016-12-13 13:01:18 -0800131 host_supported: true,
Victor Khimenko72db02d2020-07-02 01:32:56 +0200132 // TODO(b/153609531): remove when no longer needed.
133 native_bridge_supported: true,
Colin Cross8a3437f2016-12-13 13:01:18 -0800134 header_libs: ["llvm-headers-no-generated-headers"],
135 export_header_lib_headers: ["llvm-headers-no-generated-headers"],
Colin Cross4094d252016-11-21 17:18:40 -0800136 generated_headers: [
137 "llvm-gen-attributes",
138 "llvm-gen-intrinsics",
139 ],
Colin Cross8a3437f2016-12-13 13:01:18 -0800140 export_generated_headers: [
141 "llvm-gen-attributes",
142 "llvm-gen-intrinsics",
143 ],
144 target: {
145 windows: {
146 enabled: true,
147 },
148 },
Colin Cross4094d252016-11-21 17:18:40 -0800149}
150
151llvm_tblgen {
152 name: "llvm-gen-attributes",
153 in: "include/llvm/IR/Attributes.td",
154 outs: ["llvm/IR/Attributes.inc"],
155}
156
157llvm_tblgen {
158 name: "llvm-gen-intrinsics",
159 in: "include/llvm/IR/Intrinsics.td",
160 outs: ["llvm/IR/Intrinsics.gen"],
161}
162
Colin Crossd0b692652016-12-08 09:49:38 -0800163force_build_llvm_components_defaults {
164 name: "force_build_llvm_components",
165 // Host build disabled by soong/llvm.go unless FORCE_BUILD_LLVM_COMPONENTS
166 // environment variable is set
167}
168
Colin Cross4094d252016-11-21 17:18:40 -0800169// LLVM shared library build
170
171llvm_arm_static_libraries = [
172 "libLLVMARMCodeGen",
173 "libLLVMARMAsmParser",
174 "libLLVMARMAsmPrinter",
175 "libLLVMARMInfo",
176 "libLLVMARMDesc",
177 "libLLVMARMDisassembler",
178]
179
180llvm_x86_static_libraries = [
181 "libLLVMX86CodeGen",
182 "libLLVMX86Info",
183 "libLLVMX86Desc",
184 "libLLVMX86AsmParser",
185 "libLLVMX86AsmPrinter",
186 "libLLVMX86Utils",
187 "libLLVMX86Disassembler",
188]
189
190llvm_mips_static_libraries = [
191 "libLLVMMipsCodeGen",
192 "libLLVMMipsInfo",
193 "libLLVMMipsDesc",
194 "libLLVMMipsAsmParser",
195 "libLLVMMipsAsmPrinter",
196 "libLLVMMipsDisassembler",
197]
198
199llvm_aarch64_static_libraries = [
200 "libLLVMAArch64CodeGen",
201 "libLLVMAArch64Info",
202 "libLLVMAArch64Desc",
203 "libLLVMAArch64AsmParser",
204 "libLLVMAArch64AsmPrinter",
205 "libLLVMAArch64Utils",
206 "libLLVMAArch64Disassembler",
207]
208
Tim Klein4a6bb552019-05-13 23:55:43 +0100209cc_library {
Colin Cross4094d252016-11-21 17:18:40 -0800210 host_supported: true,
Pirama Arumuga Nainarc6f1de72017-08-03 11:31:35 -0700211 name: "libLLVM_android",
Tim Klein4a6bb552019-05-13 23:55:43 +0100212 vendor_available: true,
Colin Crossd0b692652016-12-08 09:49:38 -0800213 defaults: [
214 "llvm-defaults",
215 "force_build_llvm_components",
216 ],
Colin Cross4094d252016-11-21 17:18:40 -0800217
218 whole_static_libs: [
219 // pre static libraries
220 "libLLVMLinker",
221 "libLLVMipo",
222 "libLLVMDebugInfoDWARF",
223 "libLLVMDebugInfoPDB",
224 "libLLVMSymbolize",
225 "libLLVMIRReader",
226 "libLLVMBitWriter",
227 "libLLVMBitReader",
228
229 // post static libraries
230 "libLLVMLTO",
231 "libLLVMAsmPrinter",
232 "libLLVMSelectionDAG",
233 "libLLVMCodeGen",
234 "libLLVMDebugInfoCodeView",
235 "libLLVMObject",
236 "libLLVMScalarOpts",
237 "libLLVMInstCombine",
238 "libLLVMInstrumentation",
239 "libLLVMTransformObjCARC",
240 "libLLVMTransformUtils",
241 "libLLVMAnalysis",
242 "libLLVMTarget",
243 "libLLVMGlobalISel",
244 "libLLVMMCDisassembler",
245 "libLLVMMC",
246 "libLLVMMCParser",
247 "libLLVMCore",
248 "libLLVMAsmParser",
249 "libLLVMOption",
250 "libLLVMSupport",
251 "libLLVMVectorize",
252 "libLLVMProfileData",
253 "libLLVMProfileDataCoverage",
254 "libLLVMLibDriver",
Nicolas Norveza5aee7a2017-06-23 13:56:49 -0700255 "libLLVMExecutionEngine",
256 "libLLVMRuntimeDyld",
257 "libLLVMMCJIT",
258 "libLLVMOrcJIT",
Colin Cross4094d252016-11-21 17:18:40 -0800259 ],
260
Colin Cross7e5fa1a2016-12-06 16:42:05 -0800261 export_include_dirs: ["include"],
262
Colin Cross4094d252016-11-21 17:18:40 -0800263 target: {
264 host: {
265 // Host build pulls in all ARM, Mips, X86 components.
Nicolas Norveza5aee7a2017-06-23 13:56:49 -0700266 whole_static_libs: llvm_arm_static_libraries +
Colin Cross4094d252016-11-21 17:18:40 -0800267 llvm_aarch64_static_libraries +
268 llvm_mips_static_libraries +
269 llvm_x86_static_libraries,
Colin Cross7e5fa1a2016-12-06 16:42:05 -0800270 export_include_dirs: ["host/include"],
Colin Cross4094d252016-11-21 17:18:40 -0800271 },
272 windows: {
Colin Crossd4da2d92016-12-01 14:49:11 -0800273 enabled: true,
Colin Cross4094d252016-11-21 17:18:40 -0800274 host_ldlibs: [
275 "-limagehlp",
276 "-lpsapi",
277 "-lole32",
278 "-lversion",
279 ],
280 },
Colin Cross7e5fa1a2016-12-06 16:42:05 -0800281 android: {
282 export_include_dirs: ["device/include"],
283 },
Colin Cross4094d252016-11-21 17:18:40 -0800284 android_arm: {
Miao Wang1c75a852020-01-30 14:18:41 -0800285 whole_static_libs: llvm_arm_static_libraries +
286 llvm_aarch64_static_libraries,
Colin Cross4094d252016-11-21 17:18:40 -0800287 },
288 android_x86: {
289 whole_static_libs: llvm_x86_static_libraries +
290 llvm_arm_static_libraries +
291 llvm_aarch64_static_libraries,
292 },
293 android_x86_64: {
294 whole_static_libs: llvm_x86_static_libraries +
295 llvm_arm_static_libraries +
296 llvm_aarch64_static_libraries,
297 },
298 android_mips: {
299 whole_static_libs: llvm_mips_static_libraries,
300 },
301 android_mips64: {
302 whole_static_libs: llvm_mips_static_libraries,
303 },
304 android_arm64: {
305 whole_static_libs: llvm_aarch64_static_libraries +
306 llvm_arm_static_libraries,
307 },
308 },
309}
310
311subdirs = [
312 "soong",
Colin Crossd4da2d92016-12-01 14:49:11 -0800313 "lib",
314 "tools/*",
Colin Cross4094d252016-11-21 17:18:40 -0800315 "utils/*",
316]