Skip to content

Commit 10c48a7

Browse files
authored
[llvm-shlib] Change libLLVM-$MAJOR.so symlink to point to versioned SO (#82660)
This symlink was added in 91a3846 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
1 parent 775bd60 commit 10c48a7

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

llvm/cmake/modules/AddLLVM.cmake

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2074,7 +2074,7 @@ function(add_lit_testsuites project directory)
20742074
endfunction()
20752075

20762076
function(llvm_install_library_symlink name dest type)
2077-
cmake_parse_arguments(ARG "" "COMPONENT" "" ${ARGN})
2077+
cmake_parse_arguments(ARG "" "COMPONENT;SOVERSION" "" ${ARGN})
20782078
foreach(path ${CMAKE_MODULE_PATH})
20792079
if(EXISTS ${path}/LLVMInstallSymlink.cmake)
20802080
set(INSTALL_SYMLINK ${path}/LLVMInstallSymlink.cmake)
@@ -2088,7 +2088,11 @@ function(llvm_install_library_symlink name dest type)
20882088
endif()
20892089

20902090
set(full_name ${CMAKE_${type}_LIBRARY_PREFIX}${name}${CMAKE_${type}_LIBRARY_SUFFIX})
2091-
set(full_dest ${CMAKE_${type}_LIBRARY_PREFIX}${dest}${CMAKE_${type}_LIBRARY_SUFFIX})
2091+
if (ARG_SOVERSION)
2092+
set(full_dest ${CMAKE_${type}_LIBRARY_PREFIX}${dest}${CMAKE_${type}_LIBRARY_SUFFIX}.${ARG_SOVERSION})
2093+
else()
2094+
set(full_dest ${CMAKE_${type}_LIBRARY_PREFIX}${dest}${CMAKE_${type}_LIBRARY_SUFFIX})
2095+
endif()
20922096

20932097
if(LLVM_USE_SYMLINKS)
20942098
set(LLVM_LINK_OR_COPY create_symlink)

llvm/tools/llvm-shlib/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ if(LLVM_BUILD_LLVM_DYLIB)
3535
endif()
3636
add_llvm_library(LLVM SHARED DISABLE_LLVM_LINK_LLVM_DYLIB OUTPUT_NAME LLVM ${INSTALL_WITH_TOOLCHAIN} ${SOURCES})
3737
# Add symlink for backwards compatibility with old library name
38-
get_target_property(LLVM_DYLIB_FILENAME LLVM OUTPUT_NAME)
39-
llvm_install_library_symlink(LLVM-${LLVM_VERSION_MAJOR}${LLVM_VERSION_SUFFIX} ${LLVM_DYLIB_FILENAME} SHARED COMPONENT LLVM)
38+
get_target_property(LLVM_DYLIB_SOVERSION LLVM SOVERSION)
39+
llvm_install_library_symlink(LLVM-${LLVM_VERSION_MAJOR}${LLVM_VERSION_SUFFIX} LLVM SHARED COMPONENT LLVM SOVERSION ${LLVM_DYLIB_SOVERSION})
4040

4141
list(REMOVE_DUPLICATES LIB_NAMES)
4242
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin")

0 commit comments

Comments
 (0)