Skip to content

Commit 0fa248a

Browse files
AnastaZIukdeprilula28
authored andcommitted
change approach of integrating DXC into Nabla because of DXC BS re-building each time we need to reconfigure on any change to Nabla solution. Also it seems we better separate those BSs due to various compile/link flags causing issues. TODO: use patched DXC and include generated cmake files to our BS. Set CMP0112 to NEW in order to make sure we don't add dependency rules by invoking special generator expressions on certain targets
1 parent b2c85ae commit 0fa248a

File tree

4 files changed

+63
-56
lines changed

4 files changed

+63
-56
lines changed

3rdparty/dxc/CMakeLists.txt

Lines changed: 48 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,42 @@
1-
set(HLSL_OPTIONAL_PROJS_IN_DEFAULT OFF CACHE BOOL "")
2-
set(HLSL_ENABLE_ANALYZE OFF CACHE BOOL "")
3-
set(HLSL_OFFICIAL_BUILD OFF CACHE BOOL "")
4-
set(HLSL_ENABLE_FIXED_VER OFF CACHE BOOL "")
5-
set(HLSL_ENABLE_FIXED_VER OFF CACHE BOOL "")
6-
set(HLSL_FIXED_VERSION_LOCATION "" CACHE STRING "")
7-
set(HLSL_BUILD_DXILCONV ON CACHE BOOL "")
8-
set(CLANG_VENDOR "" CACHE STRING "")
9-
set(ENABLE_SPIRV_CODEGEN ON CACHE BOOL "")
10-
set(SPIRV_BUILD_TESTS OFF CACHE BOOL "")
11-
set(CLANG_ENABLE_ARCMT OFF CACHE BOOL "")
12-
set(CLANG_ENABLE_STATIC_ANALYZER OFF CACHE BOOL "")
13-
set(CLANG_INCLUDE_TESTS Off CACHE BOOL "")
14-
set(LLVM_INCLUDE_TESTS Off CACHE BOOL "")
15-
set(HLSL_INCLUDE_TESTS OFF CACHE BOOL "")
16-
set(LLVM_TARGETS_TO_BUILD None CACHE STRING "")
17-
set(LLVM_INCLUDE_DOCS OFF CACHE BOOL "")
18-
set(LLVM_INCLUDE_TESTS OFF CACHE BOOL "")
19-
set(LLVM_INCLUDE_EXAMPLES OFF CACHE BOOL "")
20-
set(LIBCLANG_BUILD_STATIC ON CACHE BOOL "")
21-
set(LLVM_OPTIMIZED_TABLEGEN OFF CACHE BOOL "")
22-
set(LLVM_REQUIRES_EH ON CACHE BOOL "")
23-
set(LLVM_APPEND_VC_REV ON CACHE BOOL "")
24-
set(LLVM_ENABLE_RTTI ON CACHE BOOL "")
25-
set(LLVM_ENABLE_EH ON CACHE BOOL "")
26-
set(LLVM_DEFAULT_TARGET_TRIPLE "dxil-ms-dx" CACHE STRING "")
27-
set(CLANG_BUILD_EXAMPLES OFF CACHE BOOL "")
28-
set(LLVM_REQUIRES_RTTI ON CACHE BOOL "")
29-
set(CLANG_CL OFF CACHE BOOL "")
30-
set(LLVM_ENABLE_WERROR OFF CACHE BOOL "" FORCE)
31-
set(SPIRV_WERROR OFF CACHE BOOL "" FORCE)
32-
set(DXC_BUILD_ARCH x64 CACHE STRING "")
33-
set(SPIRV_HEADERS_SKIP_INSTALL ON CACHE INTERNAL "Skip SPIRV-Headers install")
34-
set(SPIRV_HEADERS_SKIP_EXAMPLES ON CACHE INTERNAL "Skip SPIRV-Headers examples")
35-
set(SKIP_SPIRV_TOOLS_INSTALL ON CACHE INTERNAL "Skip SPIRV-Tools install")
36-
set(SPIRV_SKIP_TESTS ON CACHE INTERNAL "Skip SPIRV-Tools tests")
37-
set(SPIRV_SKIP_EXECUTABLES ON CACHE INTERNAL "Skip SPIRV-Tools executable build")
38-
set(HLSL_ENABLE_DEBUG_ITERATORS ON CACHE BOOL "Enable Debug iterators" FORCE)
39-
40-
nbl_adjust_flags()
1+
list(APPEND NBL_DXC_CMAKE_OPTIONS "-DHLSL_OPTIONAL_PROJS_IN_DEFAULT:BOOL=OFF")
2+
list(APPEND NBL_DXC_CMAKE_OPTIONS "-DHLSL_ENABLE_ANALYZE:BOOL=OFF")
3+
list(APPEND NBL_DXC_CMAKE_OPTIONS "-DHLSL_OFFICIAL_BUILD:BOOL=OFF")
4+
list(APPEND NBL_DXC_CMAKE_OPTIONS "-DHLSL_ENABLE_FIXED_VER:BOOL=OFF")
5+
list(APPEND NBL_DXC_CMAKE_OPTIONS "-DHLSL_FIXED_VERSION_LOCATION:STRING=")
6+
list(APPEND NBL_DXC_CMAKE_OPTIONS "-DHLSL_BUILD_DXILCONV:BOOL=ON")
7+
list(APPEND NBL_DXC_CMAKE_OPTIONS "-DCLANG_VENDOR:STRING=")
8+
list(APPEND NBL_DXC_CMAKE_OPTIONS "-DENABLE_SPIRV_CODEGEN:BOOL=ON")
9+
list(APPEND NBL_DXC_CMAKE_OPTIONS "-DSPIRV_BUILD_TESTS:BOOL=OFF")
10+
list(APPEND NBL_DXC_CMAKE_OPTIONS "-DCLANG_ENABLE_ARCMT:BOOL=OFF")
11+
list(APPEND NBL_DXC_CMAKE_OPTIONS "-DCLANG_ENABLE_STATIC_ANALYZER:BOOL=OFF")
12+
list(APPEND NBL_DXC_CMAKE_OPTIONS "-DCLANG_INCLUDE_TESTS:BOOL=Off")
13+
list(APPEND NBL_DXC_CMAKE_OPTIONS "-DLLVM_INCLUDE_TESTS:BOOL=Off")
14+
list(APPEND NBL_DXC_CMAKE_OPTIONS "-DHLSL_INCLUDE_TESTS:BOOL=OFF")
15+
list(APPEND NBL_DXC_CMAKE_OPTIONS "-DLLVM_TARGETS_TO_BUILD:STRING=None")
16+
list(APPEND NBL_DXC_CMAKE_OPTIONS "-DLLVM_INCLUDE_DOCS:BOOL=OFF")
17+
list(APPEND NBL_DXC_CMAKE_OPTIONS "-DLLVM_INCLUDE_TESTS:BOOL=OFF")
18+
list(APPEND NBL_DXC_CMAKE_OPTIONS "-DLLVM_INCLUDE_EXAMPLES:BOOL=OFF")
19+
list(APPEND NBL_DXC_CMAKE_OPTIONS "-DLIBCLANG_BUILD_STATIC:BOOL=ON")
20+
list(APPEND NBL_DXC_CMAKE_OPTIONS "-DLLVM_OPTIMIZED_TABLEGEN:BOOL=OFF")
21+
list(APPEND NBL_DXC_CMAKE_OPTIONS "-DLLVM_REQUIRES_EH:BOOL=ON")
22+
list(APPEND NBL_DXC_CMAKE_OPTIONS "-DLLVM_APPEND_VC_REV:BOOL=ON")
23+
list(APPEND NBL_DXC_CMAKE_OPTIONS "-DLLVM_ENABLE_RTTI:BOOL=ON")
24+
list(APPEND NBL_DXC_CMAKE_OPTIONS "-DLLVM_ENABLE_EH:BOOL=ON")
25+
list(APPEND NBL_DXC_CMAKE_OPTIONS "-DLLVM_DEFAULT_TARGET_TRIPLE:STING=dxil-ms-dx")
26+
list(APPEND NBL_DXC_CMAKE_OPTIONS "-DCLANG_BUILD_EXAMPLES:BOOL=OFF")
27+
list(APPEND NBL_DXC_CMAKE_OPTIONS "-DLLVM_REQUIRES_RTTI:BOOL=ON")
28+
list(APPEND NBL_DXC_CMAKE_OPTIONS "-DCLANG_CL:BOOL=OFF")
29+
list(APPEND NBL_DXC_CMAKE_OPTIONS "-DLLVM_ENABLE_WERROR:BOOL=OFF")
30+
list(APPEND NBL_DXC_CMAKE_OPTIONS "-DSPIRV_WERROR:BOOL=OFF")
31+
list(APPEND NBL_DXC_CMAKE_OPTIONS "-DDXC_BUILD_ARCH:STRING=x64")
32+
list(APPEND NBL_DXC_CMAKE_OPTIONS "-DSPIRV_HEADERS_SKIP_INSTALL:BOOL=ON")
33+
list(APPEND NBL_DXC_CMAKE_OPTIONS "-DSPIRV_HEADERS_SKIP_EXAMPLES:BOOL=ON")
34+
list(APPEND NBL_DXC_CMAKE_OPTIONS "-DSKIP_SPIRV_TOOLS_INSTALL:BOOL=ON")
35+
list(APPEND NBL_DXC_CMAKE_OPTIONS "-DSPIRV_SKIP_TESTS:BOOL=ON")
36+
list(APPEND NBL_DXC_CMAKE_OPTIONS "-DSPIRV_SKIP_EXECUTABLES:BOOL=ON")
37+
list(APPEND NBL_DXC_CMAKE_OPTIONS "-DHLSL_ENABLE_DEBUG_ITERATORS:BOOL=ON")
4138

39+
# perform DXC compile standard requirement test
4240
set(CMAKE_CXX_STANDARD_REQUIRED ON)
4341
set(CMAKE_CXX_STANDARD 11) # compiler must support exactly c++11 or c++14 standard in order to be able to build DXC libraries
4442
if(NBL_DYNAMIC_MSVC_RUNTIME)
@@ -60,7 +58,16 @@ else()
6058
message(FATAL_ERROR "${DXC_COMPILE_RET_VAL}")
6159
endif()
6260

63-
add_subdirectory(dxc dxc)
61+
set(DXC_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/build" CACHE INTERNAL "")
62+
execute_process(COMMAND "${CMAKE_COMMAND}" -S "${CMAKE_CURRENT_SOURCE_DIR}/dxc" -B "${DXC_BUILD_DIR}" -G "${CMAKE_GENERATOR}" "-Ax64" -T "${CMAKE_GENERATOR_TOOLSET}" ${NBL_DXC_CMAKE_OPTIONS}
63+
RESULT_VARIABLE DXC_CMAKE_RESULT
64+
OUTPUT_VARIABLE DXC_CMAKE_STREAM_PIPE
65+
)
66+
67+
if(NOT "${DXC_CMAKE_RESULT}" STREQUAL "0")
68+
message(FATAL_ERROR "${DXC_CMAKE_STREAM_PIPE}")
69+
endif()
70+
6471
set(CMAKE_CXX_STANDARD 20) # it's mandatory
6572
unset(CMAKE_CXX_STANDARD_REQUIRED)
6673

CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44

55
cmake_minimum_required(VERSION 3.25)
66
#policies
7-
cmake_policy(SET CMP0072 OLD) #not yet, would need to get pointers to all OpenGL functions
7+
cmake_policy(SET CMP0072 OLD) # not yet, would need to get pointers to all OpenGL functions
8+
cmake_policy(SET CMP0112 NEW)
89
set(OpenGL_GL_PREFERENCE LEGACY)
9-
#cmake_policy(SET CMP )
1010

1111
set(NBL_BUILD_ANDROID OFF)
1212

src/nbl/CMakeLists.txt

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -581,18 +581,18 @@ if(_NBL_COMPILE_WITH_GLI_)
581581
endif()
582582

583583
# DXC
584-
if(_NBL_ENABLE_DXC_COMPILE_TESTS_)
585-
add_dependencies(Nabla HLSL_NABLA_COMPILE_TEST)
586-
else()
587-
add_dependencies(Nabla dxcompiler)
588-
endif()
589-
590-
target_include_directories(Nabla PRIVATE $<TARGET_PROPERTY:dxcompiler,INCLUDE_DIRECTORIES>)
591-
if(NBL_STATIC_BUILD)
592-
target_link_libraries(Nabla INTERFACE dxcompiler)
593-
else()
594-
target_link_libraries(Nabla PRIVATE dxcompiler)
595-
endif()
584+
#if(_NBL_ENABLE_DXC_COMPILE_TESTS_)
585+
# add_dependencies(Nabla HLSL_NABLA_COMPILE_TEST)
586+
#else()
587+
# add_dependencies(Nabla dxcompiler)
588+
#endif()
589+
590+
#target_include_directories(Nabla PRIVATE $<TARGET_PROPERTY:dxcompiler,INCLUDE_DIRECTORIES>)
591+
#if(NBL_STATIC_BUILD)
592+
# target_link_libraries(Nabla INTERFACE dxcompiler)
593+
#else()
594+
# target_link_libraries(Nabla PRIVATE dxcompiler)
595+
#endif()
596596

597597
# Linux Display Systems
598598
if (UNIX AND NOT ANDROID AND NOT APPLE)

0 commit comments

Comments
 (0)