MSVC: Factor out link -machine flag name

This commit is contained in:
Brad King
2025-05-30 17:12:06 -04:00
parent 4c6c7f4d45
commit bb8baacbcc

View File

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