1
+ option (NBL_BUILD_WITH_NGFX "Enable NGFX build" OFF )
2
+
3
+ # NOTE: on windows default installation path is:
4
+ # "C:/Program Files/NVIDIA Corporation/Nsight Graphics <version>/SDKs/NsightGraphicsSDK" <- define as "NGFX_SDK" environment variable
5
+ # then you can pick SDK version with "NGFX_SDK_VERSION" cache variable (CMake GUI list supported)
6
+
7
+ if (NBL_BUILD_WITH_NGFX )
8
+ if (NOT DEFINED ENV{NGFX_SDK} )
9
+ message (FATAL_ERROR "\" NGFX_SDK\" environment variable must be defined to build with NBL_BUILD_WITH_NGFX enabled!" )
10
+ endif ()
11
+
12
+ set (NGFX_SDK "$ENV{NGFX_SDK} " )
13
+ cmake_path (NORMAL_PATH NGFX_SDK OUTPUT_VARIABLE NGFX_SDK )
14
+
15
+ if (NOT EXISTS "${NGFX_SDK} " )
16
+ message (FATAL_ERROR "Found \" NGFX_SDK\" environment variable but it is invalid, env:NGFX_SDK=\" ${NGFX_SDK} \" doesn't exist!" )
17
+ endif ()
18
+
19
+ file (GLOB ENTRIES "${NGFX_SDK} /*" )
20
+
21
+ set (NGFX_VERSIONS "" )
22
+ foreach (ENTRY ${ENTRIES} )
23
+ if (IS_DIRECTORY ${ENTRY} )
24
+ list (APPEND NGFX_VERSIONS ${ENTRY} )
25
+ endif ()
26
+ endforeach ()
27
+
28
+ if (NOT NGFX_VERSIONS )
29
+ message (FATAL_ERROR "Could not find any NGFX SDK Version!" )
30
+ endif ()
31
+
32
+ list (TRANSFORM NGFX_VERSIONS REPLACE "${NGFX_SDK} /" "" )
33
+ list (SORT NGFX_VERSIONS )
34
+ list (GET NGFX_VERSIONS -1 LATEST_NGFX_VERSION )
35
+
36
+ # on the cache variable init pick the latest version, then let user pick from list
37
+ set (NGFX_SDK_VERSION "${LATEST_NGFX_VERSION} " CACHE STRING "NGFX SDK Version" )
38
+ set_property (CACHE NGFX_SDK_VERSION PROPERTY STRINGS ${NGFX_VERSIONS} )
39
+
40
+ set (NGFX_SDK_BASE "${NGFX_SDK} /$CACHE{NGFX_SDK_VERSION} " )
41
+
42
+ # TODO: wanna support more *host* platforms? (*)
43
+ # NOTE: also I'm hardcoding windows x64 library requests till I know the answer for (*)
44
+ find_file (NBL_NGFX_INJECTION_HEADER NGFX_Injection.h PATHS ${NGFX_SDK_BASE} /include )
45
+ find_file (NBL_NGFX_INJECTION_DLL NGFX_Injection.dll PATHS ${NGFX_SDK_BASE} /lib/x64 )
46
+ find_file (NBL_NGFX_INJECTION_IMPORT_LIBRARY NGFX_Injection.lib PATHS ${NGFX_SDK_BASE} /lib/x64 )
47
+
48
+ if (NBL_NGFX_INJECTION_HEADER AND NBL_NGFX_INJECTION_DLL AND NBL_NGFX_INJECTION_IMPORT_LIBRARY )
49
+ message (STATUS "Enabled build with NVIDIA Nsight Graphics SDK $CACHE{NGFX_SDK_VERSION} \n located in: \" ${NGFX_SDK_BASE} \" " )
50
+ else ()
51
+ message (STATUS "Could not enable build with NVIDIA Nsight Graphics SDK $CACHE{NGFX_SDK_VERSION} - invalid components!" )
52
+ message (STATUS "Located in: \" ${NGFX_SDK_BASE} \" " )
53
+ message (STATUS "NBL_NGFX_INJECTION_HEADER=\" ${NBL_NGFX_INJECTION_HEADER} \" " )
54
+ message (STATUS "NBL_NGFX_INJECTION_DLL=\" ${NBL_NGFX_INJECTION_DLL} \" " )
55
+ message (STATUS "NBL_NGFX_INJECTION_IMPORT_LIBRARY=\" ${NBL_NGFX_INJECTION_IMPORT_LIBRARY} \" " )
56
+ message (FATAL_ERROR "You installation may be corupted, please fix it and re-run CMake or disable NBL_BUILD_WITH_NGFX!" )
57
+ endif ()
58
+
59
+ add_library (ngfx INTERFACE )
60
+ target_sources (ngfx INTERFACE "${NBL_NGFX_INJECTION_HEADER} " )
61
+ target_include_directories (ngfx INTERFACE "${NGFX_SDK_BASE} /include" )
62
+ target_link_libraries (ngfx INTERFACE "${NBL_NGFX_INJECTION_IMPORT_LIBRARY} " )
63
+ endif ()
0 commit comments