From 0ba67171d9ad4ea573aedebde138fb1985adf5b6 Mon Sep 17 00:00:00 2001 From: Marc Chevrier Date: Wed, 22 Jan 2025 18:14:24 +0100 Subject: [PATCH] Extend CMAKE__LINK_MODE support * Add CMAKE_Swift_LINK_MODE * Ensure correct definition for various clang usages on Windows --- Modules/Compiler/Clang.cmake | 1 - Modules/Platform/Apple-Apple-Swift.cmake | 2 ++ Modules/Platform/Linux-Apple-Swift.cmake | 2 ++ Modules/Platform/Windows-Apple-Swift.cmake | 2 ++ Modules/Platform/Windows-Clang.cmake | 8 +++++++- 5 files changed, 13 insertions(+), 2 deletions(-) diff --git a/Modules/Compiler/Clang.cmake b/Modules/Compiler/Clang.cmake index 8cb14d7f0c..f834f7a783 100644 --- a/Modules/Compiler/Clang.cmake +++ b/Modules/Compiler/Clang.cmake @@ -20,7 +20,6 @@ if("x${CMAKE_C_SIMULATE_ID}" STREQUAL "xMSVC" OR "x${CMAKE_CUDA_SIMULATE_ID}" STREQUAL "xMSVC" OR "x${CMAKE_Fortran_SIMULATE_ID}" STREQUAL "xMSVC") macro(__compiler_clang lang) - set(CMAKE_${lang}_LINK_MODE LINKER) endmacro() else() include(Compiler/GNU) diff --git a/Modules/Platform/Apple-Apple-Swift.cmake b/Modules/Platform/Apple-Apple-Swift.cmake index 9f27efa43e..f8c376d567 100644 --- a/Modules/Platform/Apple-Apple-Swift.cmake +++ b/Modules/Platform/Apple-Apple-Swift.cmake @@ -15,3 +15,5 @@ else() set(CMAKE_SHARED_MODULE_LOADER_Swift_FLAG "-Xclang-linker -Wl,-bundle_loader,") set(CMAKE_SHARED_MODULE_CREATE_Swift_FLAGS "-Xlinker -bundle") endif() + +set(CMAKE_Swift_LINK_MODE DRIVER) diff --git a/Modules/Platform/Linux-Apple-Swift.cmake b/Modules/Platform/Linux-Apple-Swift.cmake index 248d2de90a..a2b5c885a9 100644 --- a/Modules/Platform/Linux-Apple-Swift.cmake +++ b/Modules/Platform/Linux-Apple-Swift.cmake @@ -5,3 +5,5 @@ set(CMAKE_EXE_EXPORTS_Swift_FLAG "-Xclang-linker -Wl,--export-dynamic") set(CMAKE_Swift_USING_LINKER_SYSTEM "") set(CMAKE_Swift_USING_LINKER_GOLD "-use-ld=gold") set(CMAKE_Swift_USING_LINKER_LLD "-use-ld=lld") + +set(CMAKE_Swift_LINK_MODE DRIVER) diff --git a/Modules/Platform/Windows-Apple-Swift.cmake b/Modules/Platform/Windows-Apple-Swift.cmake index 87c81d600c..3e34985f5f 100644 --- a/Modules/Platform/Windows-Apple-Swift.cmake +++ b/Modules/Platform/Windows-Apple-Swift.cmake @@ -6,3 +6,5 @@ set(CMAKE_Swift_FLAGS_RELWITHDEBINFO_LINKER_FLAGS "-Xlinker -debug") set(CMAKE_Swift_USING_LINKER_SYSTEM "-use-ld=link") set(CMAKE_Swift_USING_LINKER_LLD "-use-ld=lld") set(CMAKE_Swift_USING_LINKER_MSVC "-use-ld=link") + +set(CMAKE_Swift_LINK_MODE DRIVER) diff --git a/Modules/Platform/Windows-Clang.cmake b/Modules/Platform/Windows-Clang.cmake index 7a054928ea..8c6a491a29 100644 --- a/Modules/Platform/Windows-Clang.cmake +++ b/Modules/Platform/Windows-Clang.cmake @@ -38,6 +38,8 @@ macro(__windows_compiler_clang_gnu lang) set(CMAKE_${lang}_LINKER_WRAPPER_FLAG "-Xlinker" " ") set(CMAKE_${lang}_LINKER_WRAPPER_FLAG_SEP) + set(CMAKE_${lang}_LINK_MODE DRIVER) + set(CMAKE_${lang}_LINKER_MANIFEST_FLAG " -Xlinker /MANIFESTINPUT:") set(CMAKE_${lang}_COMPILE_OPTIONS_WARNING_AS_ERROR "-Werror") @@ -217,7 +219,9 @@ if("x${CMAKE_C_SIMULATE_ID}" STREQUAL "xMSVC" unset(CMAKE_${lang}_COMPILE_OPTIONS_MSVC_DEBUG_INFORMATION_FORMAT_EditAndContinue) # -ZI not supported by Clang set(CMAKE_${lang}_COMPILE_OPTIONS_WARNING_AS_ERROR "-WX") set(CMAKE_INCLUDE_SYSTEM_FLAG_${lang} "-imsvc") - endmacro() + + set(CMAKE_${lang}_LINK_MODE LINKER) +endmacro() else() cmake_policy(GET CMP0091 __WINDOWS_CLANG_CMP0091) if(__WINDOWS_CLANG_CMP0091 STREQUAL "NEW") @@ -248,6 +252,8 @@ else() __enable_llvm_rc_preprocessing("" "-x c") macro(__windows_compiler_clang_base lang) __windows_compiler_gnu(${lang}) + + set(CMAKE_${lang}_LINK_MODE DRIVER) endmacro() endif()