diff options
Diffstat (limited to 'sys-devel/llvm/files/3.9.0/0008-cmake-Reintroduce-ldconfig-compatible-SOVERSIONs-on-.patch')
-rw-r--r-- | sys-devel/llvm/files/3.9.0/0008-cmake-Reintroduce-ldconfig-compatible-SOVERSIONs-on-.patch | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/sys-devel/llvm/files/3.9.0/0008-cmake-Reintroduce-ldconfig-compatible-SOVERSIONs-on-.patch b/sys-devel/llvm/files/3.9.0/0008-cmake-Reintroduce-ldconfig-compatible-SOVERSIONs-on-.patch new file mode 100644 index 000000000000..6634cdebe351 --- /dev/null +++ b/sys-devel/llvm/files/3.9.0/0008-cmake-Reintroduce-ldconfig-compatible-SOVERSIONs-on-.patch @@ -0,0 +1,62 @@ +From aeddc35a35c55f487977d7609060225e03e2028b Mon Sep 17 00:00:00 2001 +From: Michal Gorny <mgorny@gentoo.org> +Date: Tue, 4 Oct 2016 06:09:18 +0000 +Subject: [PATCH] [cmake] Reintroduce (ldconfig-compatible) SOVERSIONs on + shared libraries + +Reintroduce versioning of shared libraries via SOVERSION, addressing +the issues with the previous design, since Gentoo is relying +on shared-split install of LLVM. The SOVERSIONs were originally +introduced in r229720 for all libraries, and removed in r252093 in favor +of custom SONAME. As far as I understand, the major concern with the old +versioning was that the used versions were incompatible with ldconfig. + +Having considered that, this commit introduce SOVERSIONS with the +following considerations: + +1. SOVERSIONs are formed of major & minor version concatenated -- i.e. +for 4.0 its .so.40. This matches the common practice where the first +version number indicates ABI breakage, and therefore fixes the issues +with ldconfig. Additionally, VERSION with the remaining verion +components appended is used, however this is not strictly necessary. + +2. The versioning is only applied to libraries with no explicit SONAME +specified -- i.e. it won't apply to libLLVM but only to the split +libraries. It will also apply to libraries installed by the subprojects. + +3. The versioning is only done on *nix systems, Darwin excluded. This +matches the current use of SONAME. + +Differential Revision: https://reviews.llvm.org/D24757 + +git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283189 91177308-0d34-0410-b5e6-96231b3b80d8 +--- + cmake/modules/AddLLVM.cmake | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/cmake/modules/AddLLVM.cmake b/cmake/modules/AddLLVM.cmake +index 37b3b80..7cb1b0c 100644 +--- a/cmake/modules/AddLLVM.cmake ++++ b/cmake/modules/AddLLVM.cmake +@@ -450,6 +450,18 @@ function(llvm_add_library name) + PREFIX "" + ) + endif() ++ ++ # Set SOVERSION on shared libraries that lack explicit SONAME ++ # specifier, on *nix systems that are not Darwin. ++ if(UNIX AND NOT APPLE AND NOT ARG_SONAME) ++ set_target_properties(${name} ++ PROPERTIES ++ # Concatenate the version numbers since ldconfig expects exactly ++ # one component indicating the ABI version, while LLVM uses ++ # major+minor for that. ++ SOVERSION ${LLVM_VERSION_MAJOR}${LLVM_VERSION_MINOR} ++ VERSION ${LLVM_VERSION_MAJOR}${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}${LLVM_VERSION_SUFFIX}) ++ endif() + endif() + + if(ARG_MODULE OR ARG_SHARED) +-- +2.10.0 + |