blob: 2955ff918b5522eca31daf57f9a18c5fc89d71ee [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
Yi Kongc3f79492017-05-01 14:53:13 -070046 clang_cflags: [
47 // Temporarily suppress the warnings http://b/37867503
48 "-Wno-error=unused-lambda-capture",
49 "-Wno-error=user-defined-warnings",
50 ],
51
Chih-Hung Hsieha8de0682017-08-09 10:27:27 -070052 tidy_checks: [
53 "-google-build-*",
54 "-google-global-*",
55 ],
56
Colin Cross8a3437f2016-12-13 13:01:18 -080057 header_libs: ["llvm-headers-no-generated-headers"],
Colin Cross4094d252016-11-21 17:18:40 -080058
59 target: {
60 android: {
61 cflags: [
62 "-finline-functions",
63 ],
Dan Willemsena8808712017-10-16 20:08:05 -070064 },
65 linux: {
Colin Cross4094d252016-11-21 17:18:40 -080066 cppflags: [
67 "-Woverloaded-virtual",
68 ],
Colin Cross4094d252016-11-21 17:18:40 -080069 },
70 host: {
Colin Cross4094d252016-11-21 17:18:40 -080071 cppflags: [
72 "-fno-rtti",
73 "-fno-exceptions",
74 ],
75 },
76 windows: {
Colin Cross4094d252016-11-21 17:18:40 -080077 // Disable certain warnings for use with mingw.
78 // We also must undefine WIN32_LEAN_AND_MEAN, since it is being passed globally
79 // on the command line, and LLVM defines this internally itself.
80 cflags: [
81 "-Wno-array-bounds",
82 "-Wno-comment",
83 "-UWIN32_LEAN_AND_MEAN",
84 ],
85
86 host_ldlibs: ["-luuid"],
87 },
Dan Willemsena32f6632017-10-02 10:41:09 -070088 linux_glibc: {
Colin Cross4094d252016-11-21 17:18:40 -080089 // Add on ncurses to have support for terminfo
90 host_ldlibs: [
91 "-lncurses",
92 "-lgcc_s",
93 ],
94 },
95 darwin: {
96 cppflags: [
97 "-Wno-deprecated-declarations",
98 "-Woverloaded-virtual",
99 ],
100
101 // Add on ncurses to have support for terminfo
Colin Crossd4da2d92016-12-01 14:49:11 -0800102 host_ldlibs: [
Colin Crossd4da2d92016-12-01 14:49:11 -0800103 "-lncurses",
104 ],
Colin Cross4094d252016-11-21 17:18:40 -0800105 },
106 },
107}
108
Colin Cross8a3437f2016-12-13 13:01:18 -0800109cc_library_headers {
110 name: "llvm-headers-no-generated-headers",
Jiyong Park764e92662017-08-10 20:09:55 +0900111 vendor_available: true,
Colin Cross8a3437f2016-12-13 13:01:18 -0800112 host_supported: true,
113 export_include_dirs: ["include"],
114 target: {
115 android: {
116 export_include_dirs: ["device/include"],
117 },
118 host: {
119 export_include_dirs: ["host/include"],
120 },
Dan Willemsen399e4742017-03-15 16:58:24 -0700121 linux_bionic: {
122 enabled: true,
123 },
Colin Cross8a3437f2016-12-13 13:01:18 -0800124 windows: {
125 enabled: true,
126 },
127 },
128}
129
130cc_library_headers {
131 name: "llvm-headers",
Jiyong Park764e92662017-08-10 20:09:55 +0900132 vendor_available: true,
Colin Cross8a3437f2016-12-13 13:01:18 -0800133 host_supported: true,
134 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
Pirama Arumuga Nainarc6f1de72017-08-03 11:31:35 -0700209cc_library_shared {
Colin Cross4094d252016-11-21 17:18:40 -0800210 host_supported: true,
Pirama Arumuga Nainarc6f1de72017-08-03 11:31:35 -0700211 name: "libLLVM_android",
Colin Crossd0b692652016-12-08 09:49:38 -0800212 defaults: [
213 "llvm-defaults",
214 "force_build_llvm_components",
215 ],
Colin Cross4094d252016-11-21 17:18:40 -0800216
217 whole_static_libs: [
218 // pre static libraries
219 "libLLVMLinker",
220 "libLLVMipo",
221 "libLLVMDebugInfoDWARF",
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",
Nicolas Norveza5aee7a2017-06-23 13:56:49 -0700254 "libLLVMExecutionEngine",
255 "libLLVMRuntimeDyld",
256 "libLLVMMCJIT",
257 "libLLVMOrcJIT",
Colin Cross4094d252016-11-21 17:18:40 -0800258 ],
259
Colin Cross7e5fa1a2016-12-06 16:42:05 -0800260 export_include_dirs: ["include"],
261
Colin Cross4094d252016-11-21 17:18:40 -0800262 target: {
263 host: {
264 // Host build pulls in all ARM, Mips, X86 components.
Nicolas Norveza5aee7a2017-06-23 13:56:49 -0700265 whole_static_libs: llvm_arm_static_libraries +
Colin Cross4094d252016-11-21 17:18:40 -0800266 llvm_aarch64_static_libraries +
267 llvm_mips_static_libraries +
268 llvm_x86_static_libraries,
Colin Cross7e5fa1a2016-12-06 16:42:05 -0800269 export_include_dirs: ["host/include"],
Colin Cross4094d252016-11-21 17:18:40 -0800270 },
271 windows: {
Colin Crossd4da2d92016-12-01 14:49:11 -0800272 enabled: true,
Colin Cross4094d252016-11-21 17:18:40 -0800273 host_ldlibs: [
274 "-limagehlp",
275 "-lpsapi",
276 "-lole32",
277 "-lversion",
278 ],
279 },
Colin Cross7e5fa1a2016-12-06 16:42:05 -0800280 android: {
281 export_include_dirs: ["device/include"],
282 },
Colin Cross4094d252016-11-21 17:18:40 -0800283 android_arm: {
284 whole_static_libs: llvm_arm_static_libraries,
285 },
286 android_x86: {
287 whole_static_libs: llvm_x86_static_libraries +
288 llvm_arm_static_libraries +
289 llvm_aarch64_static_libraries,
290 },
291 android_x86_64: {
292 whole_static_libs: llvm_x86_static_libraries +
293 llvm_arm_static_libraries +
294 llvm_aarch64_static_libraries,
295 },
296 android_mips: {
297 whole_static_libs: llvm_mips_static_libraries,
298 },
299 android_mips64: {
300 whole_static_libs: llvm_mips_static_libraries,
301 },
302 android_arm64: {
303 whole_static_libs: llvm_aarch64_static_libraries +
304 llvm_arm_static_libraries,
305 },
306 },
307}
308
309subdirs = [
310 "soong",
Colin Crossd4da2d92016-12-01 14:49:11 -0800311 "lib",
312 "tools/*",
Colin Cross4094d252016-11-21 17:18:40 -0800313 "utils/*",
314]