blob: 0302e65930173873c133e23a48c86f76d4d77108 [file] [log] [blame]
cc_defaults {
name: "llvm-defaults",
defaults: ["llvm-defaults-no-generated-headers"],
header_libs: ["llvm-headers"],
}
// This module defines all of the defaults used to compiled llvm, except for
// the generated headers. It is necessary to avoid a circular dependency
// from the tblgen tool used to generate the headers to the generated headers.
llvm_defaults {
name: "llvm-defaults-no-generated-headers",
host_supported: true,
clang: true,
cflags: [
"-D_GNU_SOURCE",
"-D__STDC_LIMIT_MACROS",
"-D__STDC_CONSTANT_MACROS",
"-D__STDC_FORMAT_MACROS",
"-fomit-frame-pointer",
"-Wall",
"-W",
"-Wno-sign-compare",
"-Wno-unused-parameter",
"-Wno-maybe-uninitialized",
"-Wno-missing-field-initializers",
"-Wwrite-strings",
"-Werror",
"-Dsprintf=sprintf",
],
cppflags: [
"-Wno-sign-promo",
"-std=c++11",
],
header_libs: ["llvm-headers-no-generated-headers"],
target: {
android: {
cflags: [
"-finline-functions",
],
cppflags: [
"-Woverloaded-virtual",
],
},
host: {
cppflags: [
"-fno-rtti",
"-fno-exceptions",
],
},
windows: {
// Disable certain warnings for use with mingw.
// We also must undefine WIN32_LEAN_AND_MEAN, since it is being passed globally
// on the command line, and LLVM defines this internally itself.
cflags: [
"-Wno-array-bounds",
"-Wno-comment",
"-UWIN32_LEAN_AND_MEAN",
],
host_ldlibs: ["-luuid"],
},
linux: {
cppflags: ["-Woverloaded-virtual"],
// Add on ncurses to have support for terminfo
host_ldlibs: [
"-ldl",
"-lncurses",
"-lgcc_s",
],
},
darwin: {
cppflags: [
"-Wno-deprecated-declarations",
"-Woverloaded-virtual",
],
// Add on ncurses to have support for terminfo
host_ldlibs: [
"-ldl",
"-lncurses",
],
},
},
}
cc_library_headers {
name: "llvm-headers-no-generated-headers",
host_supported: true,
export_include_dirs: ["include"],
target: {
android: {
export_include_dirs: ["device/include"],
},
host: {
export_include_dirs: ["host/include"],
},
windows: {
enabled: true,
},
},
}
cc_library_headers {
name: "llvm-headers",
host_supported: true,
header_libs: ["llvm-headers-no-generated-headers"],
export_header_lib_headers: ["llvm-headers-no-generated-headers"],
generated_headers: [
"llvm-gen-attributes",
"llvm-gen-intrinsics",
],
export_generated_headers: [
"llvm-gen-attributes",
"llvm-gen-intrinsics",
],
target: {
windows: {
enabled: true,
},
},
}
llvm_tblgen {
name: "llvm-gen-attributes",
in: "include/llvm/IR/Attributes.td",
outs: ["llvm/IR/Attributes.inc"],
}
llvm_tblgen {
name: "llvm-gen-intrinsics",
in: "include/llvm/IR/Intrinsics.td",
outs: ["llvm/IR/Intrinsics.gen"],
}
force_build_llvm_components_defaults {
name: "force_build_llvm_components",
// Host build disabled by soong/llvm.go unless FORCE_BUILD_LLVM_COMPONENTS
// environment variable is set
}
// LLVM shared library build
llvm_arm_static_libraries = [
"libLLVMARMCodeGen",
"libLLVMARMAsmParser",
"libLLVMARMAsmPrinter",
"libLLVMARMInfo",
"libLLVMARMDesc",
"libLLVMARMDisassembler",
]
llvm_x86_static_libraries = [
"libLLVMX86CodeGen",
"libLLVMX86Info",
"libLLVMX86Desc",
"libLLVMX86AsmParser",
"libLLVMX86AsmPrinter",
"libLLVMX86Utils",
"libLLVMX86Disassembler",
]
llvm_mips_static_libraries = [
"libLLVMMipsCodeGen",
"libLLVMMipsInfo",
"libLLVMMipsDesc",
"libLLVMMipsAsmParser",
"libLLVMMipsAsmPrinter",
"libLLVMMipsDisassembler",
]
llvm_aarch64_static_libraries = [
"libLLVMAArch64CodeGen",
"libLLVMAArch64Info",
"libLLVMAArch64Desc",
"libLLVMAArch64AsmParser",
"libLLVMAArch64AsmPrinter",
"libLLVMAArch64Utils",
"libLLVMAArch64Disassembler",
]
cc_library_shared {
host_supported: true,
name: "libLLVM",
defaults: [
"llvm-defaults",
"force_build_llvm_components",
],
whole_static_libs: [
// pre static libraries
"libLLVMLinker",
"libLLVMipo",
"libLLVMDebugInfoDWARF",
"libLLVMDebugInfoPDB",
"libLLVMSymbolize",
"libLLVMIRReader",
"libLLVMBitWriter",
"libLLVMBitReader",
// post static libraries
"libLLVMLTO",
"libLLVMAsmPrinter",
"libLLVMSelectionDAG",
"libLLVMCodeGen",
"libLLVMDebugInfoCodeView",
"libLLVMObject",
"libLLVMScalarOpts",
"libLLVMInstCombine",
"libLLVMInstrumentation",
"libLLVMTransformObjCARC",
"libLLVMTransformUtils",
"libLLVMAnalysis",
"libLLVMTarget",
"libLLVMGlobalISel",
"libLLVMMCDisassembler",
"libLLVMMC",
"libLLVMMCParser",
"libLLVMCore",
"libLLVMAsmParser",
"libLLVMOption",
"libLLVMSupport",
"libLLVMVectorize",
"libLLVMProfileData",
"libLLVMProfileDataCoverage",
"libLLVMLibDriver",
],
export_include_dirs: ["include"],
target: {
host: {
// Host build pulls in all ARM, Mips, X86 components.
whole_static_libs: [
"libLLVMExecutionEngine",
"libLLVMRuntimeDyld",
"libLLVMMCJIT",
"libLLVMOrcJIT",
] + llvm_arm_static_libraries +
llvm_aarch64_static_libraries +
llvm_mips_static_libraries +
llvm_x86_static_libraries,
export_include_dirs: ["host/include"],
},
windows: {
enabled: true,
host_ldlibs: [
"-limagehlp",
"-lpsapi",
"-lole32",
"-lversion",
],
},
darwin: {
host_ldlibs: [
"-ldl",
"-lpthread",
],
},
linux: {
host_ldlibs: [
"-ldl",
"-lpthread",
],
},
android: {
export_include_dirs: ["device/include"],
},
android_arm: {
whole_static_libs: llvm_arm_static_libraries,
},
android_x86: {
whole_static_libs: llvm_x86_static_libraries +
llvm_arm_static_libraries +
llvm_aarch64_static_libraries,
},
android_x86_64: {
whole_static_libs: llvm_x86_static_libraries +
llvm_arm_static_libraries +
llvm_aarch64_static_libraries,
},
android_mips: {
whole_static_libs: llvm_mips_static_libraries,
},
android_mips64: {
whole_static_libs: llvm_mips_static_libraries,
},
android_arm64: {
whole_static_libs: llvm_aarch64_static_libraries +
llvm_arm_static_libraries,
},
},
}
subdirs = [
"soong",
"lib",
"tools/*",
"utils/*",
]