@@ -30,6 +30,12 @@ elseif(CMAKE_VS_PLATFORM_NAME_DEFAULT MATCHES "^[Aa][Rr][Mm]64$")
3030 set (DIRECTX_ARCH arm64)
3131elseif (CMAKE_VS_PLATFORM_NAME_DEFAULT MATCHES "^[Aa][Rr][Mm]64EC$" )
3232 set (DIRECTX_ARCH arm64ec)
33+ elseif (NOT (DEFINED DIRECTX_ARCH))
34+ if (CMAKE_SYSTEM_PROCESSOR MATCHES "[Aa][Rr][Mm]64|aarch64|arm64" )
35+ set (DIRECTX_ARCH arm64)
36+ else ()
37+ set (DIRECTX_ARCH x64)
38+ endif ()
3339endif ()
3440
3541#--- Determines host architecture
@@ -44,6 +50,10 @@ if(WIN32)
4450 list (APPEND COMPILER_DEFINES _UNICODE UNICODE)
4551endif ()
4652
53+ if (MINGW)
54+ list (APPEND LINKER_SWITCHES -municode)
55+ endif ()
56+
4757#--- General MSVC-like SDL options
4858if (MSVC )
4959 list (APPEND COMPILER_SWITCHES "$<$<NOT:$<CONFIG:DEBUG>>:/guard:cf>" )
@@ -66,11 +76,7 @@ else()
6676endif ()
6777
6878#--- Target architecture switches
69- if (XBOX_CONSOLE_TARGET STREQUAL "scarlett" )
70- list (APPEND COMPILER_SWITCHES $<IF:$<CXX_COMPILER_ID:MSVC >,/favor:AMD64 /arch:AVX2,-march=znver2>)
71- elseif (XBOX_CONSOLE_TARGET MATCHES "xboxone|durango" )
72- list (APPEND COMPILER_SWITCHES $<IF:$<CXX_COMPILER_ID:MSVC >,/favor:AMD64 /arch:AVX,-march=btver2>)
73- elseif (NOT (${DIRECTX_ARCH} MATCHES "^arm" ))
79+ if (NOT (${DIRECTX_ARCH} MATCHES "^arm" ))
7480 if ((${DIRECTX_ARCH} STREQUAL "x86" ) OR (CMAKE_SIZEOF_VOID_P EQUAL 4))
7581 set (ARCH_SSE2 $<$<CXX_COMPILER_ID:MSVC ,Intel>:/arch:SSE2> $<$<NOT :$<CXX_COMPILER_ID:MSVC ,Intel>>:-msse2>)
7682 else ()
@@ -104,8 +110,7 @@ elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
104110 endif ()
105111
106112 if ((CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.11)
107- AND (OpenMP_CXX_FOUND
108- OR (XBOX_CONSOLE_TARGET STREQUAL "durango" )))
113+ AND OpenMP_CXX_FOUND)
109114 # OpenMP in MSVC is not compatible with /permissive- unless you disable two-phase lookup
110115 list (APPEND COMPILER_SWITCHES /Zc:twoPhase-)
111116 endif ()
@@ -118,21 +123,12 @@ elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
118123 list (APPEND COMPILER_SWITCHES /JMC-)
119124 endif ()
120125
121- if ((CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.20)
122- AND (XBOX_CONSOLE_TARGET STREQUAL "durango" ))
123- list (APPEND COMPILER_SWITCHES /d2FH4-)
124- if (CMAKE_INTERPROCEDURAL_OPTIMIZATION)
125- list (APPEND LINKER_SWITCHES -d2:-FH4-)
126- endif ()
127- endif ()
128-
129126 if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.24)
130127 list (APPEND COMPILER_SWITCHES /ZH:SHA_256)
131128 endif ()
132129
133- if ((CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.26)
134- AND (NOT (XBOX_CONSOLE_TARGET STREQUAL "durango" )))
135- list (APPEND COMPILER_SWITCHES /Zc:preprocessor /wd5104 /wd5105)
130+ if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.26)
131+ list (APPEND COMPILER_SWITCHES /Zc:preprocessor /wd5104 /wd5105)
136132 endif ()
137133
138134 if ((CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.27) AND (NOT (${DIRECTX_ARCH} MATCHES "^arm" )))
@@ -148,62 +144,11 @@ elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
148144 list (APPEND COMPILER_SWITCHES /external:W4)
149145 endif ()
150146
151- if ((CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.31)
152- AND (XBOX_CONSOLE_TARGET STREQUAL "durango" ))
153- list (APPEND COMPILER_SWITCHES /Zc:static_assert-)
154- endif ()
155-
156147 if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.35)
157148 if (CMAKE_INTERPROCEDURAL_OPTIMIZATION)
158149 list (APPEND COMPILER_SWITCHES $<$<NOT :$<CONFIG:Debug>>:/Zc:checkGwOdr>)
159150 endif ()
160151
161- if (NOT (DEFINED XBOX_CONSOLE_TARGET))
162- list (APPEND COMPILER_SWITCHES $<$<VERSION_GREATER_EQUAL :${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION} ,10.0.22000>:/Zc:templateScope>)
163- endif ()
152+ list (APPEND COMPILER_SWITCHES $<$<VERSION_GREATER_EQUAL :${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION} ,10.0.22000>:/Zc:templateScope>)
164153 endif ()
165154endif ()
166-
167- #--- Windows API Family
168- include (CheckIncludeFileCXX)
169-
170- if (DEFINED XBOX_CONSOLE_TARGET)
171- message (STATUS "Building for Xbox Console Target: ${XBOX_CONSOLE_TARGET} " )
172- set (CMAKE_REQUIRED_QUIET ON )
173- if (XBOX_CONSOLE_TARGET STREQUAL "durango" )
174- CHECK_INCLUDE_FILE_CXX(xdk.h XDKLegacy_HEADER)
175- if (NOT XDKLegacy_HEADER)
176- message (FATAL_ERROR "Legacy Xbox One XDK required to build for Durango." )
177- endif ()
178- list (APPEND COMPILER_DEFINES WINAPI_FAMILY=WINAPI_FAMILY_TV_TITLE _XBOX_ONE _TITLE MONOLITHIC=1)
179- else ()
180- CHECK_INCLUDE_FILE_CXX(gxdk.h GXDK_HEADER)
181- if (NOT GXDK_HEADER)
182- message (FATAL_ERROR "Microsoft GDK with Xbox Extensions required to build for Xbox. See https://aka.ms/gdkx" )
183- endif ()
184- list (APPEND COMPILER_DEFINES WINAPI_FAMILY=WINAPI_FAMILY_GAMES)
185- if (XBOX_CONSOLE_TARGET STREQUAL "scarlett" )
186- CHECK_INCLUDE_FILE_CXX(d3d12_xs.h D3D12XS_HEADER)
187- if (NOT D3D12XS_HEADER)
188- message (FATAL_ERROR "Microsoft GDK with Xbox Extensions environment needs to be set for Xbox Series X|S." )
189- endif ()
190- list (APPEND COMPILER_DEFINES _GAMING_XBOX _GAMING_XBOX_SCARLETT)
191- elseif (XBOX_CONSOLE_TARGET STREQUAL "xboxone" )
192- CHECK_INCLUDE_FILE_CXX(d3d12_x.h D3D12X_HEADER)
193- if (NOT D3D12X_HEADER)
194- message (FATAL_ERROR "Microsoft GDK with Xbox Extensions environment needs to be set for Xbox One." )
195- endif ()
196- list (APPEND COMPILER_DEFINES _GAMING_XBOX _GAMING_XBOX_XBOXONE)
197- else ()
198- message (FATAL_ERROR "Unknown XBOX_CONSOLE_TARGET" )
199- endif ()
200- endif ()
201- elseif (WINDOWS_STORE)
202- list (APPEND COMPILER_DEFINES WINAPI_FAMILY=WINAPI_FAMILY_APP)
203- endif ()
204-
205- #--- Address Sanitizer switches
206- if (CMAKE_CXX_COMPILER_ID MATCHES "MSVC" )
207- set (ASAN_SWITCHES /fsanitize=address /fsanitize-coverage=inline-8bit-counters /fsanitize-coverage=edge /fsanitize-coverage=trace-cmp /fsanitize-coverage=trace-div)
208- set (ASAN_LIBS sancov.lib)
209- endif ()
0 commit comments