Skip to content

Commit b1ca405

Browse files
AnastaZIukdeprilula28
authored andcommitted
Use FetchContent for the DXC executable and therefore optimize DXC BS integration a lot
1 parent 64b474a commit b1ca405

File tree

4 files changed

+38
-56
lines changed

4 files changed

+38
-56
lines changed

3rdparty/dxc/CMakeLists.txt

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,38 @@ endif()
4646
add_subdirectory(dxc dxc) # for dxcompiler target
4747
set(CMAKE_CXX_STANDARD 20) # it's mandatory
4848

49-
add_subdirectory(exe exe) # for dxc executable
49+
include(FetchContent)
50+
set(FC_EXTERNAL_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/external")
5051

51-
#if(_NBL_ENABLE_DXC_COMPILE_TESTS_)
52-
# add_subdirectory(CT CT)
53-
#endif()
52+
set(DXC_BINARY_DIR "${FC_EXTERNAL_BINARY_DIR}/dxc" CACHE INTERNAL "")
53+
set(DXC_DOWNLOAD_DIR "${DXC_BINARY_DIR}/download" CACHE INTERNAL "")
54+
set(DXC_UNPACK_DIR "${DXC_BINARY_DIR}/unpack" CACHE INTERNAL "")
55+
56+
FetchContent_Declare(
57+
FC_DXC
58+
URL "${CMAKE_CURRENT_SOURCE_DIR}/exe/bin.tar.bz2"
59+
DOWNLOAD_DIR "${DXC_DOWNLOAD_DIR}"
60+
SOURCE_DIR "${DXC_UNPACK_DIR}"
61+
BINARY_DIR "${DXC_BINARY_DIR}"
62+
)
63+
64+
if(NOT DEFINED FC_DXC_POPULATED OR NOT ${FC_DXC_POPULATED})
65+
message(STATUS "Populating DXC executable...")
66+
67+
FetchContent_MakeAvailable(FC_DXC)
68+
FetchContent_GetProperties(FC_DXC POPULATED _FC_DXC_POPULATED_)
69+
70+
if(${_FC_DXC_POPULATED_})
71+
set(FC_DXC_POPULATED ON CACHE INTERNAL "")
72+
else()
73+
set(FC_DXC_POPULATED OFF CACHE INTERNAL "")
74+
endif()
75+
76+
unset(_FC_DXC_POPULATED_)
77+
endif()
78+
79+
set(DXC_EXT_EXECUTABLE "${DXC_UNPACK_DIR}/dxc.exe" CACHE STRING "" FORCE)
80+
81+
if(_NBL_ENABLE_DXC_COMPILE_TESTS_)
82+
add_subdirectory(CT CT)
83+
endif()

3rdparty/dxc/CT/CMakeLists.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ function(NBL_DXC_CT_ADD_INPUT_FILE _NBL_INPUT_REL_FILEPATH_ _NBL_PROFILE_ _NBL_E
5252
# include-dependency input file chain
5353
set(_NBL_DXC_CT_CURRENT_DEPENDS_FILEPATH_ "${_NBL_DXC_CT_CURRENT_OUTPUT_BIN_DIR_}/depends.txt")
5454
set(_NBL_DXC_CT_CURRENT_IDC_FILEPATH_ "${_NBL_DXC_CT_CURRENT_OUTPUT_BIN_DIR_}/depends.cmd")
55-
string(APPEND _NBL_DXC_CT_WRAPPER_IDC_COMMAND_ "${_TMP_CLEAN_ENV_}\"${DXC_EXECUTABLE}\" -HV 2021 -T ${_NBL_PROFILE_} ${_TMP_ENTRY_POINT_ARG_} ${_TMP_ENABLE_SPIRV_GEN_ARG_} -I\"${_NBL_DXC_CT_INCLUDE_ROOT_}\" -Zi -MF \"${_NBL_DXC_CT_CURRENT_DEPENDS_FILEPATH_}\" \"${_SHADER_FILE_PATH_}\"")
55+
string(APPEND _NBL_DXC_CT_WRAPPER_IDC_COMMAND_ "${_TMP_CLEAN_ENV_}\"${DXC_EXT_EXECUTABLE}\" -HV 2021 -T ${_NBL_PROFILE_} ${_TMP_ENTRY_POINT_ARG_} ${_TMP_ENABLE_SPIRV_GEN_ARG_} -I\"${_NBL_DXC_CT_INCLUDE_ROOT_}\" -Zi -MF \"${_NBL_DXC_CT_CURRENT_DEPENDS_FILEPATH_}\" \"${_SHADER_FILE_PATH_}\"")
5656
file(WRITE "${_NBL_DXC_CT_CURRENT_IDC_FILEPATH_}" "${_NBL_DXC_CT_WRAPPER_IDC_COMMAND_}")
5757

5858
# create a file contating paths to all input file's dependencies scanned recursively
@@ -84,7 +84,7 @@ function(NBL_DXC_CT_ADD_INPUT_FILE _NBL_INPUT_REL_FILEPATH_ _NBL_PROFILE_ _NBL_E
8484
unset(_NBL_DXC_CT_DEPENDENCIES_L_)
8585

8686
# compile command
87-
string(APPEND _NBL_DXC_CT_WRAPPER_COMPILE_COMMAND_ "${_TMP_CLEAN_ENV_}\"${DXC_EXECUTABLE}\" -HV 2021 -T ${_NBL_PROFILE_} ${_TMP_ENTRY_POINT_ARG_} ${_TMP_ENABLE_SPIRV_GEN_ARG_} -I\"${_NBL_DXC_CT_INCLUDE_ROOT_}\" -Zi -Fo \"${_NBL_DXC_CT_CURRENT_OUTPUT_FILEPATH_}\" \"${_SHADER_FILE_PATH_}\"")
87+
string(APPEND _NBL_DXC_CT_WRAPPER_COMPILE_COMMAND_ "${_TMP_CLEAN_ENV_}\"${DXC_EXT_EXECUTABLE}\" -HV 2021 -T ${_NBL_PROFILE_} ${_TMP_ENTRY_POINT_ARG_} ${_TMP_ENABLE_SPIRV_GEN_ARG_} -I\"${_NBL_DXC_CT_INCLUDE_ROOT_}\" -Zi -Fo \"${_NBL_DXC_CT_CURRENT_OUTPUT_FILEPATH_}\" \"${_SHADER_FILE_PATH_}\"")
8888
set(_NBL_DXC_CT_CURRENT_SHADER_COMPILE_FILEPATH_ "${_NBL_DXC_CT_CURRENT_OUTPUT_BIN_DIR_}/compile.cmd")
8989
file(WRITE "${_NBL_DXC_CT_CURRENT_SHADER_COMPILE_FILEPATH_}" "${_NBL_DXC_CT_WRAPPER_COMPILE_COMMAND_}")
9090

@@ -129,7 +129,7 @@ add_custom_target(HLSL_NABLA_COMPILE_TEST DEPENDS ${_NBL_DXC_CT_BIN_OUTPUTS_}
129129
COMMENT "${CMAKE_COMMAND}" -E echo "Launching Nabla HLSL compile test..."
130130
)
131131

132-
add_dependencies(HLSL_NABLA_COMPILE_TEST dxc)
132+
add_dependencies(HLSL_NABLA_COMPILE_TEST dxcompiler)
133133

134134
unset(_NBL_DXC_CT_BIN_OUTPUTS_)
135135
unset(_NBL_DXC_CT_BINARY_BIN_)

3rdparty/dxc/exe/CMakeLists.txt

Lines changed: 0 additions & 48 deletions
This file was deleted.

src/nbl/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -583,7 +583,7 @@ endif()
583583
if(_NBL_ENABLE_DXC_COMPILE_TESTS_)
584584
add_dependencies(Nabla HLSL_NABLA_COMPILE_TEST)
585585
else()
586-
add_dependencies(Nabla dxcompiler build_dxc_exe)
586+
add_dependencies(Nabla dxcompiler)
587587
endif()
588588
target_include_directories(Nabla PRIVATE
589589
"${DXC_BINARY_DIR_GE}/tools/clang/tools/dxcompiler"

0 commit comments

Comments
 (0)