summaryrefslogtreecommitdiff
path: root/lang/llvm/patches/patch-tools_llvm-shlib_CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'lang/llvm/patches/patch-tools_llvm-shlib_CMakeLists.txt')
-rw-r--r--lang/llvm/patches/patch-tools_llvm-shlib_CMakeLists.txt23
1 files changed, 23 insertions, 0 deletions
diff --git a/lang/llvm/patches/patch-tools_llvm-shlib_CMakeLists.txt b/lang/llvm/patches/patch-tools_llvm-shlib_CMakeLists.txt
new file mode 100644
index 00000000000..e196c535502
--- /dev/null
+++ b/lang/llvm/patches/patch-tools_llvm-shlib_CMakeLists.txt
@@ -0,0 +1,23 @@
+$NetBSD: patch-tools_llvm-shlib_CMakeLists.txt,v 1.1 2017/03/19 19:01:48 adam Exp $
+
+Use the Linux style linking everywhere except Darwin and SunOS.
+
+--- tools/llvm-shlib/CMakeLists.txt.orig 2016-05-26 04:35:35.000000000 +0000
++++ tools/llvm-shlib/CMakeLists.txt
+@@ -37,11 +37,12 @@ endif()
+ add_llvm_library(LLVM SHARED DISABLE_LLVM_LINK_LLVM_DYLIB SONAME ${SOURCES})
+
+ list(REMOVE_DUPLICATES LIB_NAMES)
+-if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux" OR MINGW) # FIXME: It should be "GNU ld for elf"
+- # GNU ld doesn't resolve symbols in the version script.
+- set(LIB_NAMES -Wl,--whole-archive ${LIB_NAMES} -Wl,--no-whole-archive)
+-elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin")
++if("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin")
+ set(LIB_NAMES -Wl,-all_load ${LIB_NAMES})
++elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "SunOS")
++ set(LIB_NAMES -Wl,-Bsymbolic -Wl,-z -Wl,allextract ${LIB_NAMES} -Wl,-z -Wl,defaultextract)
++else()
++ set(LIB_NAMES -Wl,--whole-archive ${LIB_NAMES} -Wl,--no-whole-archive)
+ endif()
+
+ target_link_libraries(LLVM PRIVATE ${LIB_NAMES})