[PATCH] D108223: gn build: Build libclang.so on ELF platforms.
Peter Collingbourne via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Aug 17 10:55:27 PDT 2021
pcc created this revision.
pcc added a reviewer: thakis.
pcc requested review of this revision.
Herald added a project: LLVM.
This requires changing the ELF build to enable -fPIC, consistent
with other platforms.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D108223
Files:
llvm/utils/gn/build/BUILD.gn
llvm/utils/gn/secondary/clang/tools/libclang/BUILD.gn
Index: llvm/utils/gn/secondary/clang/tools/libclang/BUILD.gn
===================================================================
--- llvm/utils/gn/secondary/clang/tools/libclang/BUILD.gn
+++ llvm/utils/gn/secondary/clang/tools/libclang/BUILD.gn
@@ -5,33 +5,24 @@
# 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),
- ]
- }
+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"
- }
+symbol_exports("exports") {
+ deps = [ ":linker_script_to_exports" ]
+ exports_file = "$target_gen_dir/libclang.exports"
}
-target(libclang_target_type, "libclang") {
+shared_library("libclang") {
configs += [ "//llvm/utils/gn/build:clang_code" ]
deps = [
"//clang/include/clang/Config",
@@ -48,14 +39,17 @@
"//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") {
Index: llvm/utils/gn/build/BUILD.gn
===================================================================
--- llvm/utils/gn/build/BUILD.gn
+++ llvm/utils/gn/build/BUILD.gn
@@ -377,6 +377,9 @@
"//llvm/include",
"$root_gen_dir/llvm/include",
]
+ if (current_os != "win") {
+ cflags = [ "-fPIC" ]
+ }
}
config("lld_code") {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D108223.366954.patch
Type: text/x-patch
Size: 2784 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210817/cc0567ea/attachment.bin>
More information about the llvm-commits
mailing list