Skip to content

Commit 64b474a

Browse files
AnastaZIukdeprilula28
authored andcommitted
build DXC executable as separate External Project. TODO: let's just use FetchContent, no need to build it because it's less then 2 MB
1 parent 7c50b05 commit 64b474a

File tree

3 files changed

+52
-3
lines changed

3 files changed

+52
-3
lines changed

3rdparty/dxc/CMakeLists.txt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ set(LLVM_REQUIRES_RTTI ON CACHE BOOL "")
2929
set(CLANG_CL OFF CACHE BOOL "")
3030
set(LLVM_ENABLE_WERROR OFF CACHE BOOL "" FORCE)
3131
set(SPIRV_WERROR OFF CACHE BOOL "" FORCE)
32-
#set(CMAKE_SYSTEM_VERSION=10.0.17763.0")
3332
set(DXC_BUILD_ARCH x64 CACHE STRING "")
3433
set(SPIRV_HEADERS_SKIP_INSTALL ON CACHE INTERNAL "Skip SPIRV-Headers install")
3534
set(SPIRV_HEADERS_SKIP_EXAMPLES ON CACHE INTERNAL "Skip SPIRV-Headers examples")
@@ -44,9 +43,11 @@ else()
4443
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
4544
endif()
4645

47-
add_subdirectory(dxc dxc)
46+
add_subdirectory(dxc dxc) # for dxcompiler target
4847
set(CMAKE_CXX_STANDARD 20) # it's mandatory
4948

49+
add_subdirectory(exe exe) # for dxc executable
50+
5051
#if(_NBL_ENABLE_DXC_COMPILE_TESTS_)
5152
# add_subdirectory(CT CT)
5253
#endif()

3rdparty/dxc/exe/CMakeLists.txt

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
list(APPEND DXC_CMAKE_ARGS "-DHLSL_OPTIONAL_PROJS_IN_DEFAULT:BOOL=${HLSL_OPTIONAL_PROJS_IN_DEFAULT}")
2+
list(APPEND DXC_CMAKE_ARGS "-DHLSL_ENABLE_ANALYZE:BOOL=${HLSL_ENABLE_ANALYZE}")
3+
list(APPEND DXC_CMAKE_ARGS "-DHLSL_OFFICIAL_BUILD:BOOL=${HLSL_OFFICIAL_BUILD}")
4+
list(APPEND DXC_CMAKE_ARGS "-DHLSL_ENABLE_FIXED_VER:BOOL=${HLSL_ENABLE_FIXED_VER}")
5+
list(APPEND DXC_CMAKE_ARGS "-DHLSL_ENABLE_FIXED_VER:BOOL=${HLSL_ENABLE_FIXED_VER}")
6+
list(APPEND DXC_CMAKE_ARGS "-DHLSL_FIXED_VERSION_LOCATION:STRING=")
7+
list(APPEND DXC_CMAKE_ARGS "-DHLSL_BUILD_DXILCONV:BOOL=${HLSL_BUILD_DXILCONV}")
8+
list(APPEND DXC_CMAKE_ARGS "-DCLANG_VENDOR:STRING=")
9+
list(APPEND DXC_CMAKE_ARGS "-DENABLE_SPIRV_CODEGEN:BOOL=${ENABLE_SPIRV_CODEGEN}")
10+
list(APPEND DXC_CMAKE_ARGS "-DSPIRV_BUILD_TESTS:BOOL=${SPIRV_BUILD_TESTS}")
11+
list(APPEND DXC_CMAKE_ARGS "-DCLANG_ENABLE_ARCMT:BOOL=${CLANG_ENABLE_ARCMT}")
12+
list(APPEND DXC_CMAKE_ARGS "-DCLANG_ENABLE_STATIC_ANALYZER:BOOL=${CLANG_ENABLE_STATIC_ANALYZER}")
13+
list(APPEND DXC_CMAKE_ARGS "-DCLANG_INCLUDE_TESTS:BOOL=${CLANG_INCLUDE_TESTS}")
14+
list(APPEND DXC_CMAKE_ARGS "-DLLVM_INCLUDE_TESTS:BOOL=${LLVM_INCLUDE_TESTS}")
15+
list(APPEND DXC_CMAKE_ARGS "-DHLSL_INCLUDE_TESTS:BOOL=${HLSL_INCLUDE_TESTS}")
16+
list(APPEND DXC_CMAKE_ARGS "-DLLVM_TARGETS_TO_BUILD:STRING=${LLVM_TARGETS_TO_BUILD}")
17+
list(APPEND DXC_CMAKE_ARGS "-DLLVM_INCLUDE_DOCS:BOOL=${LLVM_INCLUDE_DOCS}")
18+
list(APPEND DXC_CMAKE_ARGS "-DLLVM_INCLUDE_TESTS:BOOL=${LLVM_INCLUDE_TESTS}")
19+
list(APPEND DXC_CMAKE_ARGS "-DLLVM_INCLUDE_EXAMPLES:BOOL=${LLVM_INCLUDE_EXAMPLES}")
20+
list(APPEND DXC_CMAKE_ARGS "-DLIBCLANG_BUILD_STATIC:BOOL=${LIBCLANG_BUILD_STATIC}")
21+
list(APPEND DXC_CMAKE_ARGS "-DLLVM_OPTIMIZED_TABLEGEN:BOOL=${LLVM_OPTIMIZED_TABLEGEN}")
22+
list(APPEND DXC_CMAKE_ARGS "-DLLVM_REQUIRES_EH:BOOL=${LLVM_REQUIRES_EH}")
23+
list(APPEND DXC_CMAKE_ARGS "-DLLVM_APPEND_VC_REV:BOOL=${LLVM_APPEND_VC_REV}")
24+
list(APPEND DXC_CMAKE_ARGS "-DLLVM_ENABLE_RTTI:BOOL=${LLVM_ENABLE_RTTI}")
25+
list(APPEND DXC_CMAKE_ARGS "-DLLVM_ENABLE_EH:BOOL=${LLVM_ENABLE_EH}")
26+
list(APPEND DXC_CMAKE_ARGS "-DLLVM_DEFAULT_TARGET_TRIPLE:STRING=${LLVM_DEFAULT_TARGET_TRIPLE}")
27+
list(APPEND DXC_CMAKE_ARGS "-DCLANG_BUILD_EXAMPLES:BOOL=${CLANG_BUILD_EXAMPLES}")
28+
list(APPEND DXC_CMAKE_ARGS "-DLLVM_REQUIRES_RTTI:BOOL=${LLVM_REQUIRES_RTTI}")
29+
list(APPEND DXC_CMAKE_ARGS "-DCLANG_CL:BOOL=${CLANG_CL}")
30+
list(APPEND DXC_CMAKE_ARGS "-DCMAKE_SYSTEM_VERSION=${CMAKE_SYSTEM_VERSION}")
31+
list(APPEND DXC_CMAKE_ARGS "-DDXC_BUILD_ARCH=${DXC_BUILD_ARCH}")
32+
33+
get_filename_component(_DXC_EXT_SOURCE_DIR_ "${CMAKE_CURRENT_SOURCE_DIR}/../dxc" ABSOLUTE)
34+
get_filename_component(_DXC_EXT_BINARY_DIR_ "${CMAKE_CURRENT_SOURCE_DIR}/../exe/build" ABSOLUTE)
35+
set(DXC_EXT_EXECUTABLE "${_DXC_EXT_BINARY_DIR_}/Release/bin/dxc.exe" CACHE INTERNAL "")
36+
37+
ExternalProject_Add(build_dxc_exe
38+
DOWNLOAD_COMMAND ""
39+
SOURCE_DIR "${_DXC_EXT_SOURCE_DIR_}"
40+
BINARY_DIR "${_DXC_EXT_BINARY_DIR_}"
41+
BUILD_COMMAND "${CMAKE_COMMAND}" --build "${_DXC_EXT_BINARY_DIR_}" --config Release --target dxc -v # we always compile DXC executable with Release configuration
42+
CONFIGURE_COMMAND "${CMAKE_COMMAND}" -S "${_DXC_EXT_SOURCE_DIR_}" -B "${_DXC_EXT_BINARY_DIR_}" -G "${CMAKE_GENERATOR}" "-Ax64" -T "${CMAKE_GENERATOR_TOOLSET}" ${DXC_CMAKE_ARGS}
43+
INSTALL_COMMAND ""
44+
TEST_COMMAND ""
45+
LOG_INSTALL 1
46+
)
47+
48+
unset(DXC_CMAKE_ARGS)

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 dxc)
586+
add_dependencies(Nabla dxcompiler build_dxc_exe)
587587
endif()
588588
target_include_directories(Nabla PRIVATE
589589
"${DXC_BINARY_DIR_GE}/tools/clang/tools/dxcompiler"

0 commit comments

Comments
 (0)