Extend CMAKE_<LANG>_LINK_MODE support

* Add CMAKE_Swift_LINK_MODE
* Ensure correct definition for various clang usages on Windows
This commit is contained in:
Marc Chevrier
2025-01-22 18:14:24 +01:00
parent 2eff8c0b15
commit 0ba67171d9
5 changed files with 13 additions and 2 deletions

View File

@@ -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)

View File

@@ -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)

View File

@@ -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)

View File

@@ -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)

View File

@@ -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()