Author: Tamir Duberstein Date: 2026-04-02T18:48:01Z New Revision: 4642a6183d5db4c5236326969d3372ab0caa59ef
URL: https://github.com/llvm/llvm-project/commit/4642a6183d5db4c5236326969d3372ab0caa59ef DIFF: https://github.com/llvm/llvm-project/commit/4642a6183d5db4c5236326969d3372ab0caa59ef.diff LOG: [CMake] Extract Mach-O version helper (#190225) Use CMake's native MACHO_COMPATIBILITY_VERSION and MACHO_CURRENT_VERSION properties rather than manually pass linker flags. These properties are available since CMake 3.17.0, released in 2020. Added: Modified: clang/tools/libclang/CMakeLists.txt llvm/cmake/modules/AddLLVM.cmake llvm/tools/llvm-shlib/CMakeLists.txt llvm/tools/lto/CMakeLists.txt llvm/tools/remarks-shlib/CMakeLists.txt Removed: ################################################################################ diff --git a/clang/tools/libclang/CMakeLists.txt b/clang/tools/libclang/CMakeLists.txt index 09322a424f488..9b7ee51bb0c24 100644 --- a/clang/tools/libclang/CMakeLists.txt +++ b/clang/tools/libclang/CMakeLists.txt @@ -170,11 +170,7 @@ if(ENABLE_SHARED) # implicitly be exported from libclang. target_compile_definitions(libclang PRIVATE CLANG_BUILD_STATIC) elseif(APPLE) - set(LIBCLANG_LINK_FLAGS " -Wl,-compatibility_version -Wl,1") - set(LIBCLANG_LINK_FLAGS "${LIBCLANG_LINK_FLAGS} -Wl,-current_version -Wl,${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}") - - set_property(TARGET libclang APPEND_STRING PROPERTY - LINK_FLAGS ${LIBCLANG_LINK_FLAGS}) + llvm_set_macho_current_version(libclang ${LLVM_VERSION_MAJOR}) else() set_target_properties(libclang PROPERTIES diff --git a/llvm/cmake/modules/AddLLVM.cmake b/llvm/cmake/modules/AddLLVM.cmake index f528af9b2bdf3..7b2424bf67e7d 100644 --- a/llvm/cmake/modules/AddLLVM.cmake +++ b/llvm/cmake/modules/AddLLVM.cmake @@ -246,6 +246,13 @@ function(add_llvm_symbol_exports target_name export_file) set(LLVM_COMMON_DEPENDS ${LLVM_COMMON_DEPENDS} PARENT_SCOPE) endfunction(add_llvm_symbol_exports) +function(llvm_set_macho_current_version target major) + set_target_properties(${target} PROPERTIES + MACHO_COMPATIBILITY_VERSION 1 + MACHO_CURRENT_VERSION + ${major}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}) +endfunction() + if (NOT DEFINED LLVM_LINKER_DETECTED AND NOT WIN32) # Detect what linker we have here. if(APPLE) diff --git a/llvm/tools/llvm-shlib/CMakeLists.txt b/llvm/tools/llvm-shlib/CMakeLists.txt index 53003d90160fe..acf10b8a515b4 100644 --- a/llvm/tools/llvm-shlib/CMakeLists.txt +++ b/llvm/tools/llvm-shlib/CMakeLists.txt @@ -96,9 +96,7 @@ if(LLVM_BUILD_LLVM_DYLIB) endif() if (APPLE) - set_property(TARGET LLVM APPEND_STRING PROPERTY - LINK_FLAGS - " -compatibility_version 1 -current_version ${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}") + llvm_set_macho_current_version(LLVM ${LLVM_VERSION_MAJOR}) endif() if(TARGET libLLVMExports) @@ -140,9 +138,10 @@ if(LLVM_BUILD_LLVM_C_DYLIB AND NOT MSVC) target_link_libraries(LLVM-C PUBLIC LLVM) add_dependencies(LLVM-C libLLVMCExports) + llvm_set_macho_current_version(LLVM-C ${LLVM_VERSION_MAJOR}) set_property(TARGET LLVM-C APPEND_STRING PROPERTY LINK_FLAGS - " -compatibility_version 1 -current_version ${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH} -Wl,-reexport_library ${LIB_PATH}") + " -Wl,-reexport_library ${LIB_PATH}") endif() if(LLVM_BUILD_LLVM_C_DYLIB AND MSVC) diff --git a/llvm/tools/lto/CMakeLists.txt b/llvm/tools/lto/CMakeLists.txt index bc0952b1980b6..6be458dca7aac 100644 --- a/llvm/tools/lto/CMakeLists.txt +++ b/llvm/tools/lto/CMakeLists.txt @@ -45,9 +45,7 @@ if(LLVM_ENABLE_PIC) if(LLVM_LTO_VERSION_OFFSET) math(EXPR LTO_VERSION "${LLVM_VERSION_MAJOR} + ${LLVM_LTO_VERSION_OFFSET}") endif() - set_property(TARGET LTO APPEND_STRING PROPERTY - LINK_FLAGS - " -compatibility_version 1 -current_version ${LTO_VERSION}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}") + llvm_set_macho_current_version(LTO ${LTO_VERSION}) if(LLVM_USE_SANITIZER) execute_process(COMMAND ${CMAKE_CXX_COMPILER} -print-file-name=lib OUTPUT_VARIABLE clang_lib_dir) diff --git a/llvm/tools/remarks-shlib/CMakeLists.txt b/llvm/tools/remarks-shlib/CMakeLists.txt index bc4bd67e2c9ec..1b14827e68cd3 100644 --- a/llvm/tools/remarks-shlib/CMakeLists.txt +++ b/llvm/tools/remarks-shlib/CMakeLists.txt @@ -25,10 +25,7 @@ if(LLVM_ENABLE_PIC) COMPONENT Remarks) if (APPLE) - set(REMARKS_VERSION ${LLVM_VERSION_MAJOR}) - set_property(TARGET Remarks APPEND_STRING PROPERTY - LINK_FLAGS - " -compatibility_version 1 -current_version ${REMARKS_VERSION}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}") + llvm_set_macho_current_version(Remarks ${LLVM_VERSION_MAJOR}) endif() endif() _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
