• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1cc_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.
10llvm_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
98cc_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
119cc_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
140llvm_tblgen {
141    name: "llvm-gen-attributes",
142    in: "include/llvm/IR/Attributes.td",
143    outs: ["llvm/IR/Attributes.inc"],
144}
145
146llvm_tblgen {
147    name: "llvm-gen-intrinsics",
148    in: "include/llvm/IR/Intrinsics.td",
149    outs: ["llvm/IR/Intrinsics.gen"],
150}
151
152force_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
160llvm_arm_static_libraries = [
161    "libLLVMARMCodeGen",
162    "libLLVMARMAsmParser",
163    "libLLVMARMAsmPrinter",
164    "libLLVMARMInfo",
165    "libLLVMARMDesc",
166    "libLLVMARMDisassembler",
167]
168
169llvm_x86_static_libraries = [
170    "libLLVMX86CodeGen",
171    "libLLVMX86Info",
172    "libLLVMX86Desc",
173    "libLLVMX86AsmParser",
174    "libLLVMX86AsmPrinter",
175    "libLLVMX86Utils",
176    "libLLVMX86Disassembler",
177]
178
179llvm_mips_static_libraries = [
180    "libLLVMMipsCodeGen",
181    "libLLVMMipsInfo",
182    "libLLVMMipsDesc",
183    "libLLVMMipsAsmParser",
184    "libLLVMMipsAsmPrinter",
185    "libLLVMMipsDisassembler",
186]
187
188llvm_aarch64_static_libraries = [
189    "libLLVMAArch64CodeGen",
190    "libLLVMAArch64Info",
191    "libLLVMAArch64Desc",
192    "libLLVMAArch64AsmParser",
193    "libLLVMAArch64AsmPrinter",
194    "libLLVMAArch64Utils",
195    "libLLVMAArch64Disassembler",
196]
197
198cc_library_shared {
199    host_supported: true,
200    name: "libLLVM",
201    defaults: [
202        "llvm-defaults",
203        "force_build_llvm_components",
204    ],
205
206    whole_static_libs: [
207        // pre static libraries
208        "libLLVMLinker",
209        "libLLVMipo",
210        "libLLVMDebugInfoDWARF",
211        "libLLVMDebugInfoPDB",
212        "libLLVMSymbolize",
213        "libLLVMIRReader",
214        "libLLVMBitWriter",
215        "libLLVMBitReader",
216
217        // post static libraries
218        "libLLVMLTO",
219        "libLLVMAsmPrinter",
220        "libLLVMSelectionDAG",
221        "libLLVMCodeGen",
222        "libLLVMDebugInfoCodeView",
223        "libLLVMObject",
224        "libLLVMScalarOpts",
225        "libLLVMInstCombine",
226        "libLLVMInstrumentation",
227        "libLLVMTransformObjCARC",
228        "libLLVMTransformUtils",
229        "libLLVMAnalysis",
230        "libLLVMTarget",
231        "libLLVMGlobalISel",
232        "libLLVMMCDisassembler",
233        "libLLVMMC",
234        "libLLVMMCParser",
235        "libLLVMCore",
236        "libLLVMAsmParser",
237        "libLLVMOption",
238        "libLLVMSupport",
239        "libLLVMVectorize",
240        "libLLVMProfileData",
241        "libLLVMProfileDataCoverage",
242        "libLLVMLibDriver",
243        "libLLVMExecutionEngine",
244        "libLLVMRuntimeDyld",
245        "libLLVMMCJIT",
246        "libLLVMOrcJIT",
247    ],
248
249    export_include_dirs: ["include"],
250
251    target: {
252        host: {
253            // Host build pulls in all ARM, Mips, X86 components.
254           whole_static_libs: llvm_arm_static_libraries +
255                llvm_aarch64_static_libraries +
256                llvm_mips_static_libraries +
257                llvm_x86_static_libraries,
258            export_include_dirs: ["host/include"],
259        },
260        windows: {
261            enabled: true,
262            host_ldlibs: [
263                "-limagehlp",
264                "-lpsapi",
265                "-lole32",
266                "-lversion",
267            ],
268        },
269        darwin: {
270            host_ldlibs: [
271                "-ldl",
272                "-lpthread",
273            ],
274        },
275        linux: {
276            host_ldlibs: [
277                "-ldl",
278                "-lpthread",
279            ],
280        },
281        android: {
282            export_include_dirs: ["device/include"],
283        },
284        android_arm: {
285            whole_static_libs: llvm_arm_static_libraries,
286        },
287        android_x86: {
288            whole_static_libs: llvm_x86_static_libraries +
289                llvm_arm_static_libraries +
290                llvm_aarch64_static_libraries,
291        },
292        android_x86_64: {
293            whole_static_libs: llvm_x86_static_libraries +
294                llvm_arm_static_libraries +
295                llvm_aarch64_static_libraries,
296        },
297        android_mips: {
298            whole_static_libs: llvm_mips_static_libraries,
299        },
300        android_mips64: {
301            whole_static_libs: llvm_mips_static_libraries,
302        },
303        android_arm64: {
304            whole_static_libs: llvm_aarch64_static_libraries +
305                llvm_arm_static_libraries,
306        },
307    },
308}
309
310subdirs = [
311    "soong",
312    "lib",
313    "tools/*",
314    "utils/*",
315]
316