forked from OSchip/llvm-project
gn build: Build libclang.so and libLTO.so on ELF platforms.
This requires changing the ELF build to enable -fPIC, consistent with other platforms. Differential Revision: https://reviews.llvm.org/D108223
This commit is contained in:
parent
3d91d5b757
commit
b2e77cd095
|
@ -377,6 +377,9 @@ config("llvm_code") {
|
|||
"//llvm/include",
|
||||
"$root_gen_dir/llvm/include",
|
||||
]
|
||||
if (current_os != "win") {
|
||||
cflags = [ "-fPIC" ]
|
||||
}
|
||||
}
|
||||
|
||||
config("lld_code") {
|
||||
|
|
|
@ -5,33 +5,24 @@ import("//llvm/version.gni")
|
|||
# This build file is just enough to get check-clang to pass, it's missing
|
||||
# several things from the CMake build:
|
||||
# - a build target copying the Python bindings
|
||||
# - the GN linux build always builds without -fPIC (as if LLVM_ENABLE_PIC=OFF
|
||||
# in the CMake build), so libclang is always a static library on linux
|
||||
# - the GN build doesn't have LIBCLANG_BUILD_STATIC
|
||||
|
||||
libclang_target_type = "shared_library"
|
||||
if (host_os != "win" && host_os != "mac") {
|
||||
# ELF targets need -fPIC to build shared libs but they aren't on by default.
|
||||
# For now, make libclang a static lib there.
|
||||
libclang_target_type = "static_library"
|
||||
} else {
|
||||
action("linker_script_to_exports") {
|
||||
script = "linker-script-to-export-list.py"
|
||||
inputs = [ "libclang.map" ]
|
||||
outputs = [ "$target_gen_dir/libclang.exports" ]
|
||||
args = [
|
||||
rebase_path(inputs[0], root_build_dir),
|
||||
rebase_path(outputs[0], root_build_dir),
|
||||
]
|
||||
}
|
||||
|
||||
symbol_exports("exports") {
|
||||
deps = [ ":linker_script_to_exports" ]
|
||||
exports_file = "$target_gen_dir/libclang.exports"
|
||||
}
|
||||
action("linker_script_to_exports") {
|
||||
script = "linker-script-to-export-list.py"
|
||||
inputs = [ "libclang.map" ]
|
||||
outputs = [ "$target_gen_dir/libclang.exports" ]
|
||||
args = [
|
||||
rebase_path(inputs[0], root_build_dir),
|
||||
rebase_path(outputs[0], root_build_dir),
|
||||
]
|
||||
}
|
||||
|
||||
target(libclang_target_type, "libclang") {
|
||||
symbol_exports("exports") {
|
||||
deps = [ ":linker_script_to_exports" ]
|
||||
exports_file = "$target_gen_dir/libclang.exports"
|
||||
}
|
||||
|
||||
shared_library("libclang") {
|
||||
configs += [ "//llvm/utils/gn/build:clang_code" ]
|
||||
deps = [
|
||||
"//clang/include/clang/Config",
|
||||
|
@ -48,14 +39,17 @@ target(libclang_target_type, "libclang") {
|
|||
"//llvm/lib/Support",
|
||||
"//llvm/lib/Target:TargetsToBuild",
|
||||
]
|
||||
if (current_os == "win" || current_os == "mac") {
|
||||
deps += [ ":exports" ]
|
||||
} else {
|
||||
inputs = [ "libclang.map" ]
|
||||
ldflags =
|
||||
[ "-Wl,--version-script," + rebase_path(inputs[0], root_build_dir) ]
|
||||
}
|
||||
if (clang_enable_arcmt) {
|
||||
deps += [ "//clang/lib/ARCMigrate" ]
|
||||
}
|
||||
|
||||
if (libclang_target_type == "shared_library") {
|
||||
deps += [ ":exports" ]
|
||||
}
|
||||
|
||||
defines = []
|
||||
|
||||
if (host_os == "win") {
|
||||
|
|
|
@ -1,20 +1,14 @@
|
|||
import("//llvm/utils/gn/build/symbol_exports.gni")
|
||||
import("//llvm/version.gni")
|
||||
|
||||
lto_target_type = "shared_library"
|
||||
if (host_os != "mac" && host_os != "win") {
|
||||
# ELF targets need -fPIC to build shared libs but they aren't on by default.
|
||||
# For now, make libclang a static lib there.
|
||||
lto_target_type = "static_library"
|
||||
}
|
||||
|
||||
symbol_exports("exports") {
|
||||
exports_file = "lto.exports"
|
||||
}
|
||||
|
||||
target(lto_target_type, "lto") {
|
||||
shared_library("lto") {
|
||||
output_name = "LTO"
|
||||
deps = [
|
||||
":exports",
|
||||
"//llvm/lib/Bitcode/Reader",
|
||||
"//llvm/lib/IR",
|
||||
"//llvm/lib/LTO",
|
||||
|
@ -29,10 +23,6 @@ target(lto_target_type, "lto") {
|
|||
"lto.cpp",
|
||||
]
|
||||
|
||||
if (lto_target_type == "shared_library") {
|
||||
deps += [ ":exports" ]
|
||||
}
|
||||
|
||||
if (host_os == "mac") {
|
||||
ldflags = [
|
||||
"-Wl,-compatibility_version,1",
|
||||
|
|
Loading…
Reference in New Issue