mirror of
https://github.com/Kitware/CMake.git
synced 2026-05-02 12:19:54 -05:00
MSVC: Add support for ARM64 architecture
Visual Studio 15.4 adds support for this architecture. Fixes: #17213
This commit is contained in:
@@ -220,7 +220,9 @@ Id flags: ${testflags} ${CMAKE_${lang}_COMPILER_ID_FLAGS_ALWAYS}
|
||||
if(CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION)
|
||||
set(id_WindowsTargetPlatformVersion "<WindowsTargetPlatformVersion>${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}</WindowsTargetPlatformVersion>")
|
||||
endif()
|
||||
if(id_platform STREQUAL ARM)
|
||||
if(id_platform STREQUAL ARM64)
|
||||
set(id_WindowsSDKDesktopARMSupport "<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>")
|
||||
elseif(id_platform STREQUAL ARM)
|
||||
set(id_WindowsSDKDesktopARMSupport "<WindowsSDKDesktopARMSupport>true</WindowsSDKDesktopARMSupport>")
|
||||
else()
|
||||
set(id_WindowsSDKDesktopARMSupport "")
|
||||
|
||||
@@ -76,6 +76,8 @@ function(GetDefaultWindowsPrefixBase var)
|
||||
#
|
||||
if("${CMAKE_GENERATOR}" MATCHES "(Win64|IA64)")
|
||||
set(arch_hint "x64")
|
||||
elseif("${CMAKE_GENERATOR_PLATFORM}" MATCHES "ARM64")
|
||||
set(arch_hint "ARM64")
|
||||
elseif("${CMAKE_GENERATOR}" MATCHES "ARM")
|
||||
set(arch_hint "ARM")
|
||||
elseif("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8")
|
||||
|
||||
@@ -114,6 +114,9 @@
|
||||
# elif defined(_M_IX86)
|
||||
# define ARCHITECTURE_ID "X86"
|
||||
|
||||
# elif defined(_M_ARM64)
|
||||
# define ARCHITECTURE_ID "ARM64"
|
||||
|
||||
# elif defined(_M_ARM)
|
||||
# if _M_ARM == 4
|
||||
# define ARCHITECTURE_ID "ARMV4I"
|
||||
|
||||
@@ -122,7 +122,9 @@ set(CMAKE_BUILD_TYPE_INIT Debug)
|
||||
# Compute an architecture family from the architecture id.
|
||||
foreach(lang C CXX)
|
||||
set(_MSVC_${lang}_ARCHITECTURE_FAMILY "${MSVC_${lang}_ARCHITECTURE_ID}")
|
||||
if(_MSVC_${lang}_ARCHITECTURE_FAMILY MATCHES "^ARM")
|
||||
if(_MSVC_${lang}_ARCHITECTURE_FAMILY MATCHES "^ARM64")
|
||||
set(_MSVC_${lang}_ARCHITECTURE_FAMILY "ARM64")
|
||||
elseif(_MSVC_${lang}_ARCHITECTURE_FAMILY MATCHES "^ARM")
|
||||
set(_MSVC_${lang}_ARCHITECTURE_FAMILY "ARM")
|
||||
elseif(_MSVC_${lang}_ARCHITECTURE_FAMILY MATCHES "^SH")
|
||||
set(_MSVC_${lang}_ARCHITECTURE_FAMILY "SHx")
|
||||
@@ -175,7 +177,7 @@ elseif(WINDOWS_PHONE OR WINDOWS_STORE)
|
||||
set(CMAKE_C_STANDARD_LIBRARIES_INIT "WindowsApp.lib")
|
||||
elseif(WINDOWS_PHONE)
|
||||
set(CMAKE_C_STANDARD_LIBRARIES_INIT "WindowsPhoneCore.lib RuntimeObject.lib PhoneAppModelHost.lib")
|
||||
elseif(_MSVC_C_ARCHITECTURE_FAMILY STREQUAL "ARM" OR _MSVC_CXX_ARCHITECTURE_FAMILY STREQUAL "ARM")
|
||||
elseif(_MSVC_C_ARCHITECTURE_FAMILY STREQUAL "ARM" OR _MSVC_CXX_ARCHITECTURE_FAMILY STREQUAL "ARM" OR _MSVC_C_ARCHITECTURE_FAMILY STREQUAL "ARM64" OR _MSVC_CXX_ARCHITECTURE_FAMILY STREQUAL "ARM64")
|
||||
set(CMAKE_C_STANDARD_LIBRARIES_INIT "kernel32.lib user32.lib")
|
||||
else()
|
||||
set(CMAKE_C_STANDARD_LIBRARIES_INIT "kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib")
|
||||
@@ -183,7 +185,7 @@ elseif(WINDOWS_PHONE OR WINDOWS_STORE)
|
||||
else()
|
||||
set(_PLATFORM_DEFINES "/DWIN32")
|
||||
|
||||
if(_MSVC_C_ARCHITECTURE_FAMILY STREQUAL "ARM" OR _MSVC_CXX_ARCHITECTURE_FAMILY STREQUAL "ARM")
|
||||
if(_MSVC_C_ARCHITECTURE_FAMILY STREQUAL "ARM" OR _MSVC_CXX_ARCHITECTURE_FAMILY STREQUAL "ARM" OR _MSVC_C_ARCHITECTURE_FAMILY STREQUAL "ARM64" OR _MSVC_CXX_ARCHITECTURE_FAMILY STREQUAL "ARM64")
|
||||
set(CMAKE_C_STANDARD_LIBRARIES_INIT "kernel32.lib user32.lib")
|
||||
elseif(MSVC_VERSION GREATER 1310)
|
||||
if(CMAKE_VS_PLATFORM_TOOLSET MATCHES "(v[0-9]+_clang_.*|LLVM-vs[0-9]+.*)")
|
||||
@@ -215,6 +217,8 @@ set (CMAKE_LINK_DEF_FILE_FLAG "/DEF:")
|
||||
if(MSVC_C_ARCHITECTURE_ID)
|
||||
if(MSVC_C_ARCHITECTURE_ID MATCHES "^ARMV.I")
|
||||
set(_MACHINE_ARCH_FLAG "/machine:THUMB")
|
||||
elseif(_MSVC_C_ARCHITECTURE_FAMILY STREQUAL "ARM64")
|
||||
set(_MACHINE_ARCH_FLAG "/machine:ARM64")
|
||||
elseif(_MSVC_C_ARCHITECTURE_FAMILY STREQUAL "ARM")
|
||||
set(_MACHINE_ARCH_FLAG "/machine:ARM")
|
||||
else()
|
||||
@@ -223,6 +227,8 @@ if(MSVC_C_ARCHITECTURE_ID)
|
||||
elseif(MSVC_CXX_ARCHITECTURE_ID)
|
||||
if(MSVC_CXX_ARCHITECTURE_ID MATCHES "^ARMV.I")
|
||||
set(_MACHINE_ARCH_FLAG "/machine:THUMB")
|
||||
elseif(_MSVC_CXX_ARCHITECTURE_FAMILY STREQUAL "ARM64")
|
||||
set(_MACHINE_ARCH_FLAG "/machine:ARM64")
|
||||
elseif(_MSVC_CXX_ARCHITECTURE_FAMILY STREQUAL "ARM")
|
||||
set(_MACHINE_ARCH_FLAG "/machine:ARM")
|
||||
else()
|
||||
|
||||
Reference in New Issue
Block a user