Skip to content

Commit bf8b628

Browse files
committed
update example conflict
2 parents c0531fb + a46b9b0 commit bf8b628

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+2600
-1674
lines changed

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,3 +114,6 @@
114114
[submodule "3rdparty/libdeflate"]
115115
path = 3rdparty/libdeflate
116116
url = [email protected]:Devsh-Graphics-Programming/libdeflate.git
117+
[submodule "docker/compiler-explorer"]
118+
path = docker/compiler-explorer
119+
url = [email protected]:Devsh-Graphics-Programming/Compiler-Explorer-Docker.git

3rdparty/CMakeLists.txt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,8 @@ set(_OLD_SKIP_INSTALL_ALL ${SKIP_INSTALL_ALL})
9090
set(BUILD_SHARED_LIBS OFF)
9191
set(SKIP_INSTALL_ALL ON)
9292

93-
add_subdirectory(zlib zlib EXCLUDE_FROM_ALL)
9493
file(LOCK "${CMAKE_CURRENT_SOURCE_DIR}/zlib" DIRECTORY GUARD PROCESS RESULT_VARIABLE NBL_LOCK TIMEOUT 60)
94+
add_subdirectory(zlib zlib EXCLUDE_FROM_ALL)
9595
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/zlib/zconf.h.included")
9696
execute_process(COMMAND "${CMAKE_COMMAND}" -E rename zconf.h.included zconf.h
9797
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/zlib"
@@ -291,6 +291,9 @@ NBL_ADD_GIT_TRACKING_META_LIBRARY(nabla "${NBL_ROOT_PATH}")
291291
NBL_ADD_GIT_TRACKING_META_LIBRARY(dxc "${CMAKE_CURRENT_SOURCE_DIR}/dxc/dxc")
292292
NBL_GENERATE_GIT_TRACKING_META()
293293

294+
# NGFX
295+
include(ngfx/ngfx.cmake)
296+
294297
if(NBL_BUILD_IMGUI)
295298
set(NBL_IMGUI_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/imgui")
296299
set(NBL_IMGUI_TEST_ENGINE_PROJECT_ROOT "${THIRD_PARTY_SOURCE_DIR}/imgui_test_engine")

3rdparty/dxc/dxc

Submodule dxc updated 33 files

3rdparty/ngfx/ngfx.cmake

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

CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ enable_language(C CXX ASM ASM_NASM)
1717

1818
if(MSVC)
1919
enable_language(ASM_MASM)
20+
link_libraries(delayimp)
2021
endif()
2122

2223
option(NBL_STATIC_BUILD "" OFF) # ON for static builds, OFF for shared
@@ -222,4 +223,4 @@ add_subdirectory(artifacts)
222223
option(NBL_CPACK_INCLUDE_EXAMPLES "CPack with examples and media" ON)
223224
include(cpack/package)
224225

225-
export(TARGETS ${_NBL_3RDPARTY_TARGETS_} Nabla NAMESPACE Nabla:: APPEND FILE ${NBL_ROOT_PATH_BINARY}/NablaExport.cmake)
226+
export(TARGETS ${_NBL_3RDPARTY_TARGETS_} Nabla NAMESPACE Nabla:: APPEND FILE ${NBL_ROOT_PATH_BINARY}/NablaExport.cmake)

cmake/FindNabla.cmake

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# Define NBL_CONFIG_ROOT_DIRECTORY
2+
# variable to help the module find
3+
# Nabla package
4+
5+
if(NOT DEFINED CMAKE_CONFIGURATION_TYPES)
6+
set(CMAKE_CONFIGURATION_TYPES Release;RelWithDebInfo;Debug)
7+
endif()
8+
9+
if(NOT DEFINED NBL_PACKAGE_STATIC) # turn ON NBL_PACKAGE_STATIC to look for package with STATIC library type, turn off to look for DYNAMIC
10+
if(${NBL_STATIC_BUILD}) # internal, if called with Nabla's build system it will get detected autoamtically
11+
set(NBL_PACKAGE_STATIC ON)
12+
else()
13+
message(FATAL_ERROR "NBL_PACKAGE_STATIC must be defined!")
14+
endif()
15+
endif()
16+
17+
if(NBL_PACKAGE_STATIC)
18+
set(NBL_LIBRARY_TYPE static)
19+
else()
20+
set(NBL_LIBRARY_TYPE dynamic)
21+
endif()
22+
23+
foreach(X IN LISTS CMAKE_CONFIGURATION_TYPES)
24+
if(NOT "${X}" STREQUAL "")
25+
string(TOLOWER "nabla-${NBL_LIBRARY_TYPE}-${X}" _NBL_TARGET_PACKAGE_)
26+
27+
if(DEFINED NBL_CONFIG_ROOT_DIRECTORY)
28+
file(GLOB_RECURSE _NBL_G_CONFIG_ROOT_DIRECTORY_ "${NBL_CONFIG_ROOT_DIRECTORY}/*/${_NBL_TARGET_PACKAGE_}Config.cmake")
29+
cmake_path(GET _NBL_G_CONFIG_ROOT_DIRECTORY_ PARENT_PATH _NBL_G_CONFIG_ROOT_DIRECTORY_)
30+
else()
31+
unset(_NBL_G_CONFIG_ROOT_DIRECTORY_)
32+
endif()
33+
34+
find_package(${_NBL_TARGET_PACKAGE_} QUIET
35+
GLOBAL
36+
PATHS ${_NBL_G_CONFIG_ROOT_DIRECTORY_}
37+
)
38+
endif()
39+
endforeach()

cmake/common.cmake

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ function(nbl_handle_dll_definitions _TARGET_ _SCOPE_)
2929
set(_NABLA_OUTPUT_DIR_ "${NBL_ROOT_PATH_BINARY}/src/nbl/$<CONFIG>/devshgraphicsprogramming.nabla")
3030

3131
target_compile_definitions(${_TARGET_} ${_SCOPE_}
32-
_NABLA_DLL_NAME_="$<TARGET_FILE_NAME:Nabla>";_NABLA_OUTPUT_DIR_="${_NABLA_OUTPUT_DIR_}";_NABLA_INSTALL_DIR_="${CMAKE_INSTALL_PREFIX}"
33-
)
32+
_NABLA_DLL_NAME_="$<PATH:REMOVE_EXTENSION,$<TARGET_FILE_NAME:Nabla>>";_NABLA_OUTPUT_DIR_="${_NABLA_OUTPUT_DIR_}"
33+
)
3434
endif()
3535

3636
target_compile_definitions(${_TARGET_} ${_SCOPE_}
@@ -252,6 +252,8 @@ macro(nbl_create_executable_project _EXTRA_SOURCES _EXTRA_OPTIONS _EXTRA_INCLUDE
252252
target_compile_definitions(${EXECUTABLE_NAME}
253253
PRIVATE "-DNBL_CPACK_PACKAGE_NABLA_DLL_DIR=\"${_NBL_NABLA_PACKAGE_RUNTIME_DLL_DIR_PATH_REL_TO_TARGET_}\""
254254
PRIVATE "-DNBL_CPACK_PACKAGE_DXC_DLL_DIR=\"${_NBL_DXC_PACKAGE_RUNTIME_DLL_DIR_PATH_REL_TO_TARGET_}\""
255+
PRIVATE "-DNBL_CPACK_PACKAGE_NABLA_DLL_DIR_ABS_KEY=\"${_NBL_NABLA_PACKAGE_RUNTIME_DLL_DIR_PATH_}\""
256+
PRIVATE "-DNBL_CPACK_PACKAGE_DXC_DLL_DIR_ABS_KEY=\"${_NBL_DXC_PACKAGE_RUNTIME_DLL_DIR_PATH_}\""
255257
)
256258
endif()
257259

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
list(TRANSFORM @_NBL_PROXY_@ PREPEND "${CMAKE_CURRENT_LIST_DIR}/")
2+
3+
set(@_NBL_COMPOMENT_D_@ "${CMAKE_CURRENT_LIST_DIR}/@_NBL_COMPOMENT_D_V_@")
4+
5+
include(FindPackageHandleStandardArgs)
6+
find_package_handle_standard_args(@_NBL_PACKAGE_@ DEFAULT_MSG @_NBL_PROXY_@ @_NBL_COMPOMENT_D_@)
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
find_package(@_NBL_PACKAGE_@
2+
REQUIRED
3+
CONFIG
4+
GLOBAL
5+
PATHS "${CMAKE_CURRENT_LIST_DIR}/compoment"
6+
NO_DEFAULT_PATH
7+
NO_PACKAGE_ROOT_PATH
8+
NO_CMAKE_PATH
9+
NO_CMAKE_ENVIRONMENT_PATH
10+
NO_SYSTEM_ENVIRONMENT_PATH
11+
NO_CMAKE_PACKAGE_REGISTRY
12+
NO_CMAKE_SYSTEM_PATH
13+
NO_CMAKE_INSTALL_PREFIX
14+
NO_CMAKE_SYSTEM_PACKAGE_REGISTRY
15+
)
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Copyright (C) 2018-2025 - DevSH Graphics Programming Sp. z O.O.
2+
# This file is part of the "Nabla Engine".
3+
# For conditions of distribution and use, see copyright notice in nabla.h

0 commit comments

Comments
 (0)