diff options
Diffstat (limited to 'lang/llvm/patches/patch-tools_llvm-shlib_CMakeLists.txt')
-rw-r--r-- | lang/llvm/patches/patch-tools_llvm-shlib_CMakeLists.txt | 23 |
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}) |