From bb8baacbcc87441f9d8b052a203d04e9bf290205 Mon Sep 17 00:00:00 2001 From: Brad King Date: Fri, 30 May 2025 17:12:06 -0400 Subject: [PATCH] MSVC: Factor out link -machine flag name --- Modules/Platform/Windows-MSVC.cmake | 30 +++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/Modules/Platform/Windows-MSVC.cmake b/Modules/Platform/Windows-MSVC.cmake index 48133f7fd6..eafff7d431 100644 --- a/Modules/Platform/Windows-MSVC.cmake +++ b/Modules/Platform/Windows-MSVC.cmake @@ -276,35 +276,37 @@ unset(_GR) set(CMAKE_CXX_STANDARD_LIBRARIES_INIT "${CMAKE_C_STANDARD_LIBRARIES_INIT}") +set(_machine "/machine") + # executable linker flags set (CMAKE_LINK_DEF_FILE_FLAG "/DEF:") # set the machine type if(MSVC_C_ARCHITECTURE_ID) if(MSVC_C_ARCHITECTURE_ID MATCHES "^ARMV.I") - set(_MACHINE_ARCH_FLAG "${_Wl}/machine:THUMB") + set(_MACHINE_ARCH_FLAG "${_Wl}${_machine}:THUMB") elseif(_MSVC_C_ARCHITECTURE_FAMILY STREQUAL "ARM64") - set(_MACHINE_ARCH_FLAG "${_Wl}/machine:ARM64") + set(_MACHINE_ARCH_FLAG "${_Wl}${_machine}:ARM64") elseif(_MSVC_C_ARCHITECTURE_FAMILY STREQUAL "ARM64EC") - set(_MACHINE_ARCH_FLAG "${_Wl}/machine:ARM64EC") + set(_MACHINE_ARCH_FLAG "${_Wl}${_machine}:ARM64EC") elseif(_MSVC_C_ARCHITECTURE_FAMILY STREQUAL "ARM") - set(_MACHINE_ARCH_FLAG "${_Wl}/machine:ARM") + set(_MACHINE_ARCH_FLAG "${_Wl}${_machine}:ARM") else() - set(_MACHINE_ARCH_FLAG "${_Wl}/machine:${MSVC_C_ARCHITECTURE_ID}") + set(_MACHINE_ARCH_FLAG "${_Wl}${_machine}:${MSVC_C_ARCHITECTURE_ID}") endif() elseif(MSVC_CXX_ARCHITECTURE_ID) if(MSVC_CXX_ARCHITECTURE_ID MATCHES "^ARMV.I") - set(_MACHINE_ARCH_FLAG "${_Wl}/machine:THUMB") + set(_MACHINE_ARCH_FLAG "${_Wl}${_machine}:THUMB") elseif(_MSVC_CXX_ARCHITECTURE_FAMILY STREQUAL "ARM64") - set(_MACHINE_ARCH_FLAG "${_Wl}/machine:ARM64") + set(_MACHINE_ARCH_FLAG "${_Wl}${_machine}:ARM64") elseif(_MSVC_CXX_ARCHITECTURE_FAMILY STREQUAL "ARM64EC") - set(_MACHINE_ARCH_FLAG "${_Wl}/machine:ARM64EC") + set(_MACHINE_ARCH_FLAG "${_Wl}${_machine}:ARM64EC") elseif(_MSVC_CXX_ARCHITECTURE_FAMILY STREQUAL "ARM") - set(_MACHINE_ARCH_FLAG "${_Wl}/machine:ARM") + set(_MACHINE_ARCH_FLAG "${_Wl}${_machine}:ARM") else() - set(_MACHINE_ARCH_FLAG "${_Wl}/machine:${MSVC_CXX_ARCHITECTURE_ID}") + set(_MACHINE_ARCH_FLAG "${_Wl}${_machine}:${MSVC_CXX_ARCHITECTURE_ID}") endif() elseif(MSVC_Fortran_ARCHITECTURE_ID) - set(_MACHINE_ARCH_FLAG "${_Wl}/machine:${MSVC_Fortran_ARCHITECTURE_ID}") + set(_MACHINE_ARCH_FLAG "${_Wl}${_machine}:${MSVC_Fortran_ARCHITECTURE_ID}") endif() # add /debug and /INCREMENTAL:YES to DEBUG and RELWITHDEBINFO also add pdbtype @@ -340,11 +342,11 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL "WindowsKernelModeDriver") endif() if((_MSVC_C_ARCHITECTURE_FAMILY STREQUAL "ARM64EC") OR (_MSVC_CXX_ARCHITECTURE_FAMILY STREQUAL "ARM64EC")) - string(APPEND CMAKE_STATIC_LINKER_FLAGS_INIT " ${_Wl}/machine:ARM64X") -else() - string(APPEND CMAKE_STATIC_LINKER_FLAGS_INIT " ${_MACHINE_ARCH_FLAG}") + set(_MACHINE_ARCH_FLAG " ${_Wl}${_machine}:ARM64X") endif() +string(APPEND CMAKE_STATIC_LINKER_FLAGS_INIT " ${_MACHINE_ARCH_FLAG}") unset(_MACHINE_ARCH_FLAG) +unset(_machine) cmake_policy(GET CMP0091 __WINDOWS_MSVC_CMP0091) if(__WINDOWS_MSVC_CMP0091 STREQUAL "NEW")