123 lines
3.3 KiB
Plaintext
123 lines
3.3 KiB
Plaintext
import("//llvm/lib/Target/targets_string.gni")
|
|
import("//llvm/utils/gn/build/buildflags.gni")
|
|
import("//llvm/utils/gn/build/libs/pthread/enable.gni")
|
|
import("//llvm/utils/gn/build/libs/terminfo/enable.gni")
|
|
import("//llvm/utils/gn/build/libs/xml/enable.gni")
|
|
import("//llvm/utils/gn/build/libs/zlib/enable.gni")
|
|
import("//llvm/utils/gn/build/write_cmake_config.gni")
|
|
import("//llvm/version.gni")
|
|
|
|
action("write_extension_dependencies") {
|
|
script = "//llvm/utils/gn/secondary/llvm/tools/llvm-config/write_extension_dependencies.py"
|
|
outputs = [ "$target_gen_dir/ExtensionDependencies.inc" ]
|
|
args = [
|
|
"-o",
|
|
rebase_path(outputs[0], root_build_dir),
|
|
]
|
|
}
|
|
|
|
write_cmake_config("BuildVariables.inc") {
|
|
input = "BuildVariables.inc.in"
|
|
output = "$target_gen_dir/BuildVariables.inc"
|
|
|
|
if (is_debug) {
|
|
build_mode = "debug"
|
|
} else {
|
|
build_mode = "release"
|
|
}
|
|
|
|
# FIXME: Why doesn't llvm-config do this, why is this done in
|
|
# llvm-config/CMakeLists.txt?
|
|
if (host_os == "win") {
|
|
l = ""
|
|
lib = ".lib"
|
|
} else {
|
|
l = "-l"
|
|
lib = ""
|
|
}
|
|
|
|
# Windows doesn't use any of libxml2,terminfo, zlib by default.
|
|
# Make GN not warn about these variables being unused.
|
|
not_needed([
|
|
"l",
|
|
"lib",
|
|
])
|
|
|
|
system_libs = ""
|
|
if (host_os == "win") {
|
|
# libuuid required for FOLDERID_Profile usage in
|
|
# lib/Support/Windows/Path.inc.
|
|
# advapi32 required for CryptAcquireContextW in
|
|
# lib/Support/Windows/Path.inc
|
|
system_libs = "psapi.lib shell32.lib ole32.lib uuid.lib advapi32.lib"
|
|
} else {
|
|
system_libs += "-lm"
|
|
if (host_os == "linux") {
|
|
system_libs += " -lrt -ldl"
|
|
}
|
|
if (llvm_enable_threads) {
|
|
system_libs += " -llibpthreads"
|
|
if (host_os == "linux") {
|
|
system_libs += " -latomic"
|
|
}
|
|
}
|
|
}
|
|
if (llvm_enable_libxml2) {
|
|
system_libs += " ${l}xml2${lib}"
|
|
}
|
|
if (llvm_enable_terminfo) {
|
|
system_libs += " ${l}ncurses${lib}"
|
|
}
|
|
if (llvm_enable_zlib) {
|
|
system_libs += " ${l}z${lib}"
|
|
}
|
|
|
|
values = [
|
|
"LLVM_SRC_ROOT=" + rebase_path("//llvm"),
|
|
"LLVM_OBJ_ROOT=" + rebase_path(root_out_dir),
|
|
|
|
# FIXME: Only the bits needed to run LLVM's test are implemented.
|
|
"LLVM_CPPFLAGS=.", # FIXME
|
|
"LLVM_CFLAGS=.", # FIXME
|
|
"LLVM_LDFLAGS=.", # FIXME
|
|
"LLVM_CXXFLAGS=.", # FIXME
|
|
"LLVM_BUILDMODE=$build_mode",
|
|
"LLVM_LIBDIR_SUFFIX=",
|
|
"LLVM_TARGETS_BUILT=$llvm_targets_to_build_string",
|
|
"LLVM_SYSTEM_LIBS=$system_libs",
|
|
"LLVM_BUILD_SYSTEM=gn",
|
|
"LLVM_HAS_RTTI=0",
|
|
"LLVM_BUILD_LLVM_DYLIB=0",
|
|
"LLVM_LINK_LLVM_DYLIB=0",
|
|
"BUILD_SHARED_LIBS=0",
|
|
"LLVM_DYLIB_COMPONENTS_expanded=all",
|
|
"LLVM_DYLIB_VERSION=${llvm_version_major}git",
|
|
"LLVM_TOOLS_INSTALL_DIR=",
|
|
]
|
|
}
|
|
|
|
action("LibraryDependencies.inc") {
|
|
script = "//llvm/utils/gn/build/write_library_dependencies.py"
|
|
output = "$target_gen_dir/LibraryDependencies.inc"
|
|
args = [
|
|
"-o",
|
|
rebase_path(output, root_out_dir),
|
|
]
|
|
outputs = [ output ]
|
|
}
|
|
|
|
executable("llvm-config") {
|
|
deps = [
|
|
":BuildVariables.inc",
|
|
":LibraryDependencies.inc",
|
|
":write_extension_dependencies",
|
|
"//llvm/include/llvm/Config:config",
|
|
"//llvm/include/llvm/Config:llvm-config",
|
|
"//llvm/lib/Support",
|
|
]
|
|
|
|
# To pick up the generated inc files.
|
|
include_dirs = [ "$target_gen_dir" ]
|
|
sources = [ "llvm-config.cpp" ]
|
|
}
|