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