forked from microsoft/onnxruntime
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgdk_toolchain.cmake
91 lines (82 loc) · 2.82 KB
/
gdk_toolchain.cmake
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# Options to configure the toolchain.
set(GDK_EDITION 210602 CACHE STRING "GDK edition.")
set(GDK_PLATFORM Scarlett CACHE STRING "GDK target platform.")
# Required to propagate variables when CMake calls try_compile() to test the toolchain.
# https://cmake.org/cmake/help/latest/variable/CMAKE_TRY_COMPILE_PLATFORM_VARIABLES.html
set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES GDK_EDITION GDK_PLATFORM)
cmake_path(SET gdk_gxdk_path $ENV{GameDK}/${GDK_EDITION}/GXDK NORMALIZE)
# Set C/C++ compile flags and additional include directories.
foreach(lang C CXX)
set(CMAKE_${lang}_FLAGS_INIT "")
string(APPEND CMAKE_${lang}_FLAGS_INIT
" /D_GAMING_XBOX"
" /DWINAPI_FAMILY=WINAPI_FAMILY_GAMES"
" /D_ATL_NO_DEFAULT_LIBS"
" /D__WRL_NO_DEFAULT_LIB__"
" /D__WRL_CLASSIC_COM_STRICT__"
" /D_CRT_USE_WINAPI_PARTITION_APP"
" /DWIN32_LEAN_AND_MEAN"
" /favor:AMD64"
)
if(GDK_PLATFORM STREQUAL Scarlett)
string(APPEND CMAKE_${lang}_FLAGS_INIT " /D_GAMING_XBOX_SCARLETT /arch:AVX2")
elseif(GDK_PLATFORM STREQUAL XboxOne)
string(APPEND CMAKE_${lang}_FLAGS_INIT " /D_GAMING_XBOX_XBOXONE /arch:AVX")
endif()
set(CMAKE_${lang}_STANDARD_INCLUDE_DIRECTORIES ${gdk_gxdk_path}/gameKit/Include/${GDK_PLATFORM})
set(CMAKE_${lang}_STANDARD_LIBRARIES "onecoreuap_apiset.lib" CACHE STRING "" FORCE)
endforeach()
# It's best to avoid inadvertently linking with any libraries not present in the OS.
list(APPEND nodefault_libs
advapi32.lib
comctl32.lib
comsupp.lib
dbghelp.lib
gdi32.lib
gdiplus.lib
guardcfw.lib
kernel32.lib
mmc.lib
msimg32.lib
msvcole.lib
msvcoled.lib
mswsock.lib
ntstrsafe.lib
ole2.lib
ole2autd.lib
ole2auto.lib
ole2d.lib
ole2ui.lib
ole2uid.lib
ole32.lib
oleacc.lib
oleaut32.lib
oledlg.lib
oledlgd.lib
oldnames.lib
runtimeobject.lib
shell32.lib
shlwapi.lib
strsafe.lib
urlmon.lib
user32.lib
userenv.lib
wlmole.lib
wlmoled.lib
onecore.lib
)
foreach(link_type EXE SHARED MODULE)
set(CMAKE_${link_type}_LINKER_FLAGS_INIT "")
foreach(lib ${nodefault_libs})
string(APPEND CMAKE_${link_type}_LINKER_FLAGS_INIT " /NODEFAULTLIB:${lib}")
endforeach()
string(APPEND CMAKE_${link_type}_LINKER_FLAGS_INIT " /DYNAMICBASE /NXCOMPAT /MANIFEST:NO")
endforeach()
set(gdk_dx_libs ${gdk_gxdk_path}/gameKit/lib/amd64/PIXEvt.lib)
if(GDK_PLATFORM STREQUAL Scarlett)
list(APPEND gdk_dx_libs ${gdk_gxdk_path}/gameKit/lib/amd64/Scarlett/d3d12_xs.lib)
list(APPEND gdk_dx_libs ${gdk_gxdk_path}/gameKit/lib/amd64/Scarlett/xg_xs.lib)
elseif(GDK_PLATFORM STREQUAL XboxOne)
list(APPEND gdk_dx_libs ${gdk_gxdk_path}/gameKit/lib/amd64/XboxOne/d3d12_x.lib)
list(APPEND gdk_dx_libs ${gdk_gxdk_path}/gameKit/lib/amd64/XboxOne/xg_x.lib)
endif()