aboutsummaryrefslogtreecommitdiffstats
path: root/testing/llvm3.7/cmake-fix-libLLVM-name.patch
diff options
context:
space:
mode:
authorJakub Jirutka <jakub@jirutka.cz>2016-08-07 04:08:34 +0200
committerJakub Jirutka <jakub@jirutka.cz>2016-08-07 13:22:27 +0200
commit36ead8ea412bd3d2c5b51083f2f6c44bccb92955 (patch)
tree29163bba87e208bab9526c04c3057b6ddc812691 /testing/llvm3.7/cmake-fix-libLLVM-name.patch
parent29249283f7efcb933875984ca19f1297c9e74cb0 (diff)
downloadaports-36ead8ea412bd3d2c5b51083f2f6c44bccb92955.tar.bz2
aports-36ead8ea412bd3d2c5b51083f2f6c44bccb92955.tar.xz
testing/llvm3.7: move libLLVM.so to /usr/lib, add version to libs name
This is needed for binaries that are dynamically linked with libLLVM, so they can find it on the default LD_LIBRARY_PATH. To be honest, I'm still not sure if everything is right. LLVM's CMake scripts have a lot flaws in this version (see recent commits). Most distribution still use old make files. However, it already works for Rust (linked statically) and Julia (linked dynamically).
Diffstat (limited to 'testing/llvm3.7/cmake-fix-libLLVM-name.patch')
-rw-r--r--testing/llvm3.7/cmake-fix-libLLVM-name.patch76
1 files changed, 76 insertions, 0 deletions
diff --git a/testing/llvm3.7/cmake-fix-libLLVM-name.patch b/testing/llvm3.7/cmake-fix-libLLVM-name.patch
new file mode 100644
index 0000000000..600e32777f
--- /dev/null
+++ b/testing/llvm3.7/cmake-fix-libLLVM-name.patch
@@ -0,0 +1,76 @@
+From: Jakub Jirutka <jakub@jirutka.cz>
+Date: Sun, 07 Aug 2016 12:37:00 +0200
+Subject: [PATCH] Include version in name of shared libs
+
+This change makes the CMake build system generate libraries for Linux and
+Darwin matching the makefile build system.
+
+libLLVM.so -> libLLVM-$MAJOR.$MINOR.so
+libLTO.so -> libLTO-$MAJOR.$MINOR.so
+
+See https://github.com/llvm-mirror/llvm/commit/61dbca10ea813ea3af447cc7ac2556a5e81211f9
+
+--- a/cmake/modules/AddLLVM.cmake
++++ b/cmake/modules/AddLLVM.cmake
+@@ -313,10 +313,12 @@
+ # Same semantics as target_link_libraries().
+ # ADDITIONAL_HEADERS
+ # May specify header files for IDE generators.
++# SONAME
++# Should set SONAME link flags and create symlinks
+ # )
+ function(llvm_add_library name)
+ cmake_parse_arguments(ARG
+- "MODULE;SHARED;STATIC"
++ "MODULE;SHARED;STATIC;SONAME"
+ "OUTPUT_NAME"
+ "ADDITIONAL_HEADERS;DEPENDS;LINK_COMPONENTS;LINK_LIBS;OBJLIBS"
+ ${ARGN})
+@@ -418,11 +420,6 @@
+ PREFIX ""
+ )
+ endif()
+-
+- set_target_properties(${name}
+- PROPERTIES
+- SOVERSION ${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}
+- VERSION ${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}${LLVM_VERSION_SUFFIX})
+ endif()
+
+ if(ARG_MODULE OR ARG_SHARED)
+@@ -483,7 +480,7 @@
+
+ macro(add_llvm_library name)
+ cmake_parse_arguments(ARG
+- "SHARED"
++ "SHARED;SONAME"
+ ""
+ ""
+ ${ARGN})
+@@ -526,6 +523,15 @@
+ -DCMAKE_INSTALL_COMPONENT=${name}
+ -P "${CMAKE_BINARY_DIR}/cmake_install.cmake")
+ endif()
++ if(ARG_SHARED)
++ get_target_property(output_name ${name} OUTPUT_NAME)
++ if(${output_name} STREQUAL "output_name-NOTFOUND")
++ set(output_name ${name})
++ endif()
++ set(library_name ${output_name}-${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}${LLVM_VERSION_SUFFIX})
++ set(api_name ${output_name}-${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}${LLVM_VERSION_SUFFIX})
++ set_target_properties(${name} PROPERTIES OUTPUT_NAME ${library_name})
++ endif()
+ endif()
+ set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS ${name})
+ endif()
+--- a/tools/llvm-shlib/CMakeLists.txt
++++ b/tools/llvm-shlib/CMakeLists.txt
+@@ -95,7 +95,7 @@
+ add_custom_target(libLLVMExports DEPENDS ${LLVM_EXPORTED_SYMBOL_FILE})
+ endif()
+
+-add_llvm_library(LLVM SHARED ${SOURCES})
++add_llvm_library(LLVM SHARED SONAME ${SOURCES})
+
+ list(REMOVE_DUPLICATES LIB_NAMES)
+ if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") # FIXME: It should be "GNU ld for elf"