aboutsummaryrefslogtreecommitdiff
path: root/llvm
diff options
context:
space:
mode:
authorTom Stellard <tstellar@redhat.com>2024-02-23 15:58:32 -0800
committerTom Stellard <tstellar@redhat.com>2024-02-26 16:57:21 -0800
commit4cc7a75aa6ac272a5774ef7ca3f6b2ad095425e3 (patch)
treec815112fea52c2c051940d749113e67b38fb2da7 /llvm
parentd1a1d7afb1fbe7c2cf712a124a2f231ba22103f2 (diff)
downloadllvm-4cc7a75aa6ac272a5774ef7ca3f6b2ad095425e3.zip
llvm-4cc7a75aa6ac272a5774ef7ca3f6b2ad095425e3.tar.gz
llvm-4cc7a75aa6ac272a5774ef7ca3f6b2ad095425e3.tar.bz2
[llvm-shlib] Change libLLVM-$MAJOR.so symlink to point to versioned SO (#82660)
This symlink was added in 91a384621e5b762d9c173ffd247cfeadd5f436a2 to maintain backwards compatibility, but it needs to point to libLLVM.so.$MAJOR.$MINOR rather than libLLVM.so. This works better for distros that ship libLLVM.so and libLLVM.so.$MAJOR.$MINOR in separate packages and also prevents mistakes like libLLVM-19.so -> libLLVM.so -> libLLVM.so.18.1 Fixes #82647 (cherry picked from commit 10c48a772742b7afe665a815b7eba2047f17dc4b)
Diffstat (limited to 'llvm')
-rw-r--r--llvm/cmake/modules/AddLLVM.cmake8
-rw-r--r--llvm/tools/llvm-shlib/CMakeLists.txt4
2 files changed, 8 insertions, 4 deletions
diff --git a/llvm/cmake/modules/AddLLVM.cmake b/llvm/cmake/modules/AddLLVM.cmake
index 5fc663d..3bc78b0 100644
--- a/llvm/cmake/modules/AddLLVM.cmake
+++ b/llvm/cmake/modules/AddLLVM.cmake
@@ -2074,7 +2074,7 @@ function(add_lit_testsuites project directory)
endfunction()
function(llvm_install_library_symlink name dest type)
- cmake_parse_arguments(ARG "" "COMPONENT" "" ${ARGN})
+ cmake_parse_arguments(ARG "" "COMPONENT;SOVERSION" "" ${ARGN})
foreach(path ${CMAKE_MODULE_PATH})
if(EXISTS ${path}/LLVMInstallSymlink.cmake)
set(INSTALL_SYMLINK ${path}/LLVMInstallSymlink.cmake)
@@ -2088,7 +2088,11 @@ function(llvm_install_library_symlink name dest type)
endif()
set(full_name ${CMAKE_${type}_LIBRARY_PREFIX}${name}${CMAKE_${type}_LIBRARY_SUFFIX})
- set(full_dest ${CMAKE_${type}_LIBRARY_PREFIX}${dest}${CMAKE_${type}_LIBRARY_SUFFIX})
+ if (ARG_SOVERSION)
+ set(full_dest ${CMAKE_${type}_LIBRARY_PREFIX}${dest}${CMAKE_${type}_LIBRARY_SUFFIX}.${ARG_SOVERSION})
+ else()
+ set(full_dest ${CMAKE_${type}_LIBRARY_PREFIX}${dest}${CMAKE_${type}_LIBRARY_SUFFIX})
+ endif()
if(LLVM_USE_SYMLINKS)
set(LLVM_LINK_OR_COPY create_symlink)
diff --git a/llvm/tools/llvm-shlib/CMakeLists.txt b/llvm/tools/llvm-shlib/CMakeLists.txt
index 09c15e3..eba1672 100644
--- a/llvm/tools/llvm-shlib/CMakeLists.txt
+++ b/llvm/tools/llvm-shlib/CMakeLists.txt
@@ -35,8 +35,8 @@ if(LLVM_BUILD_LLVM_DYLIB)
endif()
add_llvm_library(LLVM SHARED DISABLE_LLVM_LINK_LLVM_DYLIB OUTPUT_NAME LLVM ${INSTALL_WITH_TOOLCHAIN} ${SOURCES})
# Add symlink for backwards compatibility with old library name
- get_target_property(LLVM_DYLIB_FILENAME LLVM OUTPUT_NAME)
- llvm_install_library_symlink(LLVM-${LLVM_VERSION_MAJOR}${LLVM_VERSION_SUFFIX} ${LLVM_DYLIB_FILENAME} SHARED COMPONENT LLVM)
+ get_target_property(LLVM_DYLIB_SOVERSION LLVM SOVERSION)
+ llvm_install_library_symlink(LLVM-${LLVM_VERSION_MAJOR}${LLVM_VERSION_SUFFIX} LLVM SHARED COMPONENT LLVM SOVERSION ${LLVM_DYLIB_SOVERSION})
list(REMOVE_DUPLICATES LIB_NAMES)
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin")