@@ -5,6 +5,10 @@ cmake_minimum_required (VERSION 3.20)
5
5
6
6
set (DIRECTXTK_VERSION 1.8.3)
7
7
8
+ if (DEFINED XBOX_CONSOLE_TARGET)
9
+ set (CMAKE_TRY_COMPILE_TARGET_TYPE "STATIC_LIBRARY" )
10
+ endif ()
11
+
8
12
project (DirectXTK
9
13
VERSION ${DIRECTXTK_VERSION}
10
14
DESCRIPTION "DirectX Tool Kit for DirectX 11"
@@ -52,10 +56,18 @@ endif()
52
56
53
57
include (GNUInstallDirs)
54
58
55
- if (WINDOWS_STORE)
56
- set (BUILD_GAMEINPUT OFF )
57
- set (USING_WINDOWS_GAMING_INPUT ON )
58
- set (BUILD_TOOLS OFF )
59
+ if (XBOX_CONSOLE_TARGET STREQUAL "durango" )
60
+ set (BUILD_GAMEINPUT OFF )
61
+ set (BUILD_WGI OFF )
62
+ set (BUILD_XINPUT OFF )
63
+ set (BUILD_XBOXONE_SHADERS ON )
64
+ set (BUILD_XAUDIO_WIN10 OFF )
65
+ set (BUILD_XAUDIO_WIN8 ON )
66
+ set (BUILD_TOOLS OFF )
67
+ elseif (WINDOWS_STORE)
68
+ set (BUILD_GAMEINPUT OFF )
69
+ set (BUILD_WGI ON )
70
+ set (BUILD_TOOLS OFF )
59
71
endif ()
60
72
61
73
#--- Library
@@ -203,13 +215,21 @@ endif()
203
215
set (LIBRARY_SOURCES ${LIBRARY_SOURCES}
204
216
${COMPILED_SHADERS} /SpriteEffect_SpriteVertexShader.inc)
205
217
218
+ if (BUILD_XBOXONE_SHADERS)
219
+ message (STATUS "Using Shader Model 5.0 for Xbox One for shaders" )
220
+ set (ShaderOpts xbox)
221
+ else ()
222
+ message (STATUS "Using Shader Model 4.0/9.1 for shaders." )
223
+ set (ShaderOpts "" )
224
+ endif ()
225
+
206
226
if (NOT USE_PREBUILT_SHADERS)
207
227
add_custom_command (
208
228
OUTPUT "${COMPILED_SHADERS} /SpriteEffect_SpriteVertexShader.inc"
209
229
MAIN_DEPENDENCY "${PROJECT_SOURCE_DIR} /Src/Shaders/CompileShaders.cmd"
210
230
DEPENDS ${SHADER_SOURCES}
211
231
COMMENT "Generating HLSL shaders..."
212
- COMMAND ${CMAKE_COMMAND} -E env CompileShadersOutput="${COMPILED_SHADERS} " CompileShaders.cmd > "${COMPILED_SHADERS} /compileshaders.log"
232
+ COMMAND ${CMAKE_COMMAND} -E env CompileShadersOutput="${COMPILED_SHADERS} " CompileShaders.cmd ARGS ${ShaderOpts} > "${COMPILED_SHADERS} /compileshaders.log"
213
233
WORKING_DIRECTORY "${PROJECT_SOURCE_DIR} /Src/Shaders"
214
234
USES_TERMINAL )
215
235
endif ()
@@ -272,6 +292,22 @@ elseif(BUILD_XINPUT)
272
292
target_compile_definitions (${PROJECT_NAME} PUBLIC USING_XINPUT)
273
293
endif ()
274
294
295
+ if (DEFINED XBOX_CONSOLE_TARGET)
296
+ message (STATUS "Building for Xbox Console Target: ${XBOX_CONSOLE_TARGET} " )
297
+ set (CMAKE_REQUIRED_QUIET ON )
298
+ CHECK_INCLUDE_FILE_CXX(xdk.h XDKLegacy_HEADER)
299
+ if (NOT XDKLegacy_HEADER)
300
+ message (FATAL_ERROR "Legacy Xbox One XDK required to build for Durango." )
301
+ endif ()
302
+ if (XBOX_CONSOLE_TARGET STREQUAL "durango" )
303
+ target_compile_definitions (${PROJECT_NAME} PUBLIC WINAPI_FAMILY=WINAPI_FAMILY_TV_TITLE _XBOX_ONE _TITLE MONOLITHIC=1)
304
+ else ()
305
+ message (FATAL_ERROR "Unknown XBOX_CONSOLE_TARGET" )
306
+ endif ()
307
+ elseif (WINDOWS_STORE)
308
+ target_compile_definitions (${PROJECT_NAME} PUBLIC WINAPI_FAMILY=WINAPI_FAMILY_APP)
309
+ endif ()
310
+
275
311
#--- Package
276
312
include (CMakePackageConfigHelpers)
277
313
@@ -362,7 +398,9 @@ else()
362
398
endforeach ()
363
399
endif ()
364
400
365
- if (NOT ${DIRECTX_ARCH} MATCHES "^arm" )
401
+ if (XBOX_CONSOLE_TARGET MATCHES "durango" )
402
+ target_compile_options (${PROJECT_NAME} PRIVATE $<IF:$<CXX_COMPILER_ID:MSVC >,/favor:AMD64 /arch:AVX,-march=btver2>)
403
+ elseif (NOT ${DIRECTX_ARCH} MATCHES "^arm" )
366
404
if (CMAKE_SIZEOF_VOID_P EQUAL 4)
367
405
set (ARCH_SSE2 $<$<CXX_COMPILER_ID:MSVC >:/arch:SSE2> $<$<NOT :$<CXX_COMPILER_ID:MSVC >>:-msse2>)
368
406
else ()
@@ -376,6 +414,9 @@ endif()
376
414
377
415
if ( CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
378
416
set (WarningsLib "-Wpedantic" "-Wextra" )
417
+ if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 16.0)
418
+ list (APPEND WarningsLib "-Wno-unsafe-buffer-usage" )
419
+ endif ()
379
420
target_compile_options (${PROJECT_NAME} PRIVATE ${WarningsLib} )
380
421
381
422
set (WarningsEXE ${WarningsLib} "-Wno-c++98-compat" "-Wno-c++98-compat-pedantic"
@@ -448,11 +489,9 @@ elseif( CMAKE_CXX_COMPILER_ID MATCHES "MSVC" )
448
489
endif ()
449
490
450
491
if (WIN32 )
451
- if (WINDOWS_STORE)
452
- target_compile_definitions (${PROJECT_NAME} PRIVATE WINAPI_FAMILY=WINAPI_FAMILY_APP)
453
- endif ()
454
-
455
- if (WINDOWS_STORE OR BUILD_XAUDIO_WIN10)
492
+ if (XBOX_CONSOLE_TARGET STREQUAL "durango" )
493
+ set (WINVER 0x0602)
494
+ elseif (WINDOWS_STORE OR BUILD_XAUDIO_WIN10)
456
495
message (STATUS "Using DirectX Tool Kit for Audio on XAudio 2.9 (Windows 10/Windows 11)." )
457
496
set (WINVER 0x0A00)
458
497
elseif ((${DIRECTX_ARCH} MATCHES "^arm64" ) OR BUILD_GAMEINPUT OR BUILD_WGI)
0 commit comments