Skip to content

Commit 91a3846

Browse files
authored
[cmake] Add minor version to library SONAME (#79376)
We need to do this now that we are bumping the minor release number when we create the release branch. This also results in a slight change to the library names for LLVM. The main library now has a more convential library name: 'libLLVM.so.$major.$minor'. The old library name: libLLVM-$major.so is now a symlink that points to the new library. However, the symlink is not present in the build directory. It is only present in the install directory. The library name was changed because it helped to keep the CMake changes more simple. Fixes #76273
1 parent 2163149 commit 91a3846

File tree

3 files changed

+9
-6
lines changed

3 files changed

+9
-6
lines changed

llvm/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ endif()
3535

3636
if(NOT DEFINED LLVM_SHLIB_SYMBOL_VERSION)
3737
# "Symbol version prefix for libLLVM.so"
38-
set(LLVM_SHLIB_SYMBOL_VERSION "LLVM_${LLVM_VERSION_MAJOR}")
38+
set(LLVM_SHLIB_SYMBOL_VERSION "LLVM_${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}")
3939
endif()
4040

4141
if ((CMAKE_GENERATOR MATCHES "Visual Studio") AND (MSVC_TOOLSET_VERSION LESS 142) AND (CMAKE_GENERATOR_TOOLSET STREQUAL ""))

llvm/cmake/modules/AddLLVM.cmake

+4-4
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ function(add_llvm_symbol_exports target_name export_file)
108108
COMMAND "${Python3_EXECUTABLE}" "-c"
109109
"import sys; \
110110
lines = [' ' + l.rstrip() for l in sys.stdin] + [' local: *;']; \
111-
print('LLVM_${LLVM_VERSION_MAJOR} {'); \
111+
print('LLVM_${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR} {'); \
112112
print(' global:') if len(lines) > 1 else None; \
113113
print(';\\n'.join(lines) + '\\n};')"
114114
< ${export_file} > ${native_export_file}
@@ -646,9 +646,9 @@ function(llvm_add_library name)
646646
if(UNIX AND NOT APPLE AND NOT ARG_SONAME)
647647
set_target_properties(${name}
648648
PROPERTIES
649-
# Since 4.0.0, the ABI version is indicated by the major version
650-
SOVERSION ${LLVM_VERSION_MAJOR}${LLVM_VERSION_SUFFIX}
651-
VERSION ${LLVM_VERSION_MAJOR}${LLVM_VERSION_SUFFIX})
649+
# Since 18.1.0, the ABI version is indicated by the major and minor version.
650+
SOVERSION ${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}${LLVM_VERSION_SUFFIX}
651+
VERSION ${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}${LLVM_VERSION_SUFFIX})
652652
endif()
653653
endif()
654654

llvm/tools/llvm-shlib/CMakeLists.txt

+4-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,10 @@ if(LLVM_BUILD_LLVM_DYLIB)
3333
if (LLVM_LINK_LLVM_DYLIB)
3434
set(INSTALL_WITH_TOOLCHAIN INSTALL_WITH_TOOLCHAIN)
3535
endif()
36-
add_llvm_library(LLVM SHARED DISABLE_LLVM_LINK_LLVM_DYLIB SONAME ${INSTALL_WITH_TOOLCHAIN} ${SOURCES})
36+
add_llvm_library(LLVM SHARED DISABLE_LLVM_LINK_LLVM_DYLIB OUTPUT_NAME LLVM ${INSTALL_WITH_TOOLCHAIN} ${SOURCES})
37+
# 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)
3740

3841
list(REMOVE_DUPLICATES LIB_NAMES)
3942
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin")

0 commit comments

Comments
 (0)