From b05076ca33239e209c3dda9f0d635baaaa1400b2 Mon Sep 17 00:00:00 2001 From: Tobias Frisch <tfrisch@uni-koblenz.de> Date: Tue, 23 Jul 2024 01:47:28 +0200 Subject: [PATCH] Fix build issues with slang Signed-off-by: Tobias Frisch <tfrisch@uni-koblenz.de> --- .gitmodules | 11 +++- lib/Vulkan-Headers | 2 +- lib/Vulkan-Hpp | 2 +- modules/gui/lib/imgui | 2 +- modules/shader_compiler/CMakeLists.txt | 3 + modules/shader_compiler/config/LZ4.cmake | 16 +++++ modules/shader_compiler/config/MINIZ.cmake | 14 +++++ modules/shader_compiler/config/SLANG.cmake | 61 ++++++++++++++++++- .../config/SPIRV-Headers.cmake | 6 +- modules/shader_compiler/config/Shady.cmake | 4 +- .../config/UNORDERED_DENSE.cmake | 8 +++ .../config/slang/CMakeLists.txt | 45 -------------- modules/shader_compiler/lib/glslang | 2 +- modules/shader_compiler/lib/lz4 | 1 + modules/shader_compiler/lib/miniz | 1 + modules/shader_compiler/lib/slang | 2 +- modules/shader_compiler/lib/unordered_dense | 1 + 17 files changed, 123 insertions(+), 58 deletions(-) create mode 100644 modules/shader_compiler/config/LZ4.cmake create mode 100644 modules/shader_compiler/config/MINIZ.cmake create mode 100644 modules/shader_compiler/config/UNORDERED_DENSE.cmake delete mode 100644 modules/shader_compiler/config/slang/CMakeLists.txt create mode 160000 modules/shader_compiler/lib/lz4 create mode 160000 modules/shader_compiler/lib/miniz create mode 160000 modules/shader_compiler/lib/unordered_dense diff --git a/.gitmodules b/.gitmodules index b92fdbd4..5f3821ff 100644 --- a/.gitmodules +++ b/.gitmodules @@ -84,5 +84,14 @@ url = https://github.com/json-c/json-c.git [submodule "modules/shader_compiler/lib/slang"] path = modules/shader_compiler/lib/slang - url = https://github.com/shader-slang/slang.git + url = https://github.com/TheJackiMonster/slang.git branch = master +[submodule "modules/shader_compiler/lib/unordered_dense"] + path = modules/shader_compiler/lib/unordered_dense + url = https://github.com/martinus/unordered_dense.git +[submodule "modules/shader_compiler/lib/lz4"] + path = modules/shader_compiler/lib/lz4 + url = https://github.com/lz4/lz4.git +[submodule "modules/shader_compiler/lib/miniz"] + path = modules/shader_compiler/lib/miniz + url = https://github.com/richgel999/miniz.git diff --git a/lib/Vulkan-Headers b/lib/Vulkan-Headers index b379292b..fabe9e26 160000 --- a/lib/Vulkan-Headers +++ b/lib/Vulkan-Headers @@ -1 +1 @@ -Subproject commit b379292b2ab6df5771ba9870d53cf8b2c9295daf +Subproject commit fabe9e2672334fdb9a622d42a2e8f94578952082 diff --git a/lib/Vulkan-Hpp b/lib/Vulkan-Hpp index 77f6a638..f7f0d8cc 160000 --- a/lib/Vulkan-Hpp +++ b/lib/Vulkan-Hpp @@ -1 +1 @@ -Subproject commit 77f6a638a725816291c1deaf5e82c56225951a99 +Subproject commit f7f0d8ccaae669b7cf8937211b5f0878cf919465 diff --git a/modules/gui/lib/imgui b/modules/gui/lib/imgui index d7e605d4..fe09ebbe 160000 --- a/modules/gui/lib/imgui +++ b/modules/gui/lib/imgui @@ -1 +1 @@ -Subproject commit d7e605d4309d7b054f4277b8968232749de2c6c4 +Subproject commit fe09ebbe0a1c8bb5f39f326658faa6bde75bb568 diff --git a/modules/shader_compiler/CMakeLists.txt b/modules/shader_compiler/CMakeLists.txt index 4dc2c556..ed1b7abd 100644 --- a/modules/shader_compiler/CMakeLists.txt +++ b/modules/shader_compiler/CMakeLists.txt @@ -54,6 +54,9 @@ include(config/Murmur3.cmake) include(config/Shady.cmake) # Check and load SLANG +include(config/MINIZ.cmake) +include(config/LZ4.cmake) +include(config/UNORDERED_DENSE.cmake) include(config/SLANG.cmake) # link the required libraries to the module diff --git a/modules/shader_compiler/config/LZ4.cmake b/modules/shader_compiler/config/LZ4.cmake new file mode 100644 index 00000000..87b2c906 --- /dev/null +++ b/modules/shader_compiler/config/LZ4.cmake @@ -0,0 +1,16 @@ + +use_git_submodule("${vkcv_shader_compiler_lib_path}/lz4" lz4_status) + +if (${lz4_status}) + set(LZ4_BUNDLED_MODE ON) + add_subdirectory(${vkcv_shader_compiler_lib}/lz4/build/cmake SYSTEM) + + if(MSVC) + target_compile_options( + lz4_static + PRIVATE /wd5045 /wd4820 /wd4711 /wd6385 /wd6262 + ) + endif() + + set(lz4_include ${vkcv_shader_compiler_lib}/lz4/lib) +endif () diff --git a/modules/shader_compiler/config/MINIZ.cmake b/modules/shader_compiler/config/MINIZ.cmake new file mode 100644 index 00000000..0b32ea36 --- /dev/null +++ b/modules/shader_compiler/config/MINIZ.cmake @@ -0,0 +1,14 @@ + +use_git_submodule("${vkcv_shader_compiler_lib_path}/miniz" miniz_status) + +if (${miniz_status}) + add_subdirectory(${vkcv_shader_compiler_lib}/miniz SYSTEM) + + set_property(TARGET miniz PROPERTY POSITION_INDEPENDENT_CODE ON) + # Work around https://github.com/richgel999/miniz/pull/292 + get_target_property(miniz_c_launcher miniz C_COMPILER_LAUNCHER) + if(MSVC AND miniz_c_launcher MATCHES "ccache") + set_property(TARGET miniz PROPERTY C_COMPILER_LAUNCHER) + set_property(TARGET miniz PROPERTY MSVC_DEBUG_INFORMATION_FORMAT "") + endif() +endif () diff --git a/modules/shader_compiler/config/SLANG.cmake b/modules/shader_compiler/config/SLANG.cmake index e9f5c26a..a9bd071f 100644 --- a/modules/shader_compiler/config/SLANG.cmake +++ b/modules/shader_compiler/config/SLANG.cmake @@ -2,8 +2,63 @@ use_git_submodule("${vkcv_shader_compiler_lib_path}/slang" slang_status) if (${slang_status}) - add_subdirectory(config/slang) + set(EXTERNAL_MINIZ ON CACHE INTERNAL "") + set(EXTERNAL_LZ4 ON CACHE INTERNAL "") + set(EXTERNAL_VULKAN_HEADERS ON CACHE INTERNAL "") + set(EXTERNAL_SPIRV_HEADERS ON CACHE INTERNAL "") + set(EXTERNAL_UNORDERED_DENSE ON CACHE INTERNAL "") + + set(SLANG_ENABLE_CUDA OFF CACHE INTERNAL "") + set(SLANG_ENABLE_OPTIX OFF CACHE INTERNAL "") + set(SLANG_ENABLE_NVAPI OFF CACHE INTERNAL "") + set(SLANG_ENABLE_XLIB OFF CACHE INTERNAL "") + set(SLANG_ENABLE_AFTERMATH OFF CACHE INTERNAL "") + set(SLANG_ENABLE_DX_ON_VK OFF CACHE INTERNAL "") + set(SLANG_EMBED_STDLIB_SOURCE OFF CACHE INTERNAL "") + set(SLANG_EMBED_STDLIB ON CACHE INTERNAL "") + set(SLANG_ENABLE_FULL_IR_VALIDATION OFF CACHE INTERNAL "") + set(SLANG_ENABLE_IR_BREAK_ALLOC OFF CACHE INTERNAL "") + set(SLANG_ENABLE_ASAN OFF CACHE INTERNAL "") + set(SLANG_ENABLE_PREBUILT_BINARIES OFF CACHE INTERNAL "") + set(SLANG_ENABLE_GFX OFF CACHE INTERNAL "") + set(SLANG_ENABLE_SLANGD OFF CACHE INTERNAL "") + set(SLANG_ENABLE_SLANGC OFF CACHE INTERNAL "") + set(SLANG_ENABLE_SLANGRT OFF CACHE INTERNAL "") + set(SLANG_ENABLE_SLANG_GLSLANG OFF CACHE INTERNAL "") + set(SLANG_ENABLE_TESTS OFF CACHE INTERNAL "") + set(SLANG_ENABLE_EXAMPLES OFF CACHE INTERNAL "") + set(SLANG_LIB_TYPE ${vkcv_build_attribute} CACHE INTERNAL "") + set(SLANG_SPIRV_HEADERS_INCLUDE_DIR ${spirv_headers_include} CACHE INTERNAL "") + + add_subdirectory(${vkcv_shader_compiler_lib}/slang) + + set(slang_system_includes "") + list(APPEND slang_system_includes ${spirv_headers_include}) + list(APPEND slang_system_includes ${unordered_dense_include}) + list(APPEND slang_system_includes ${lz4_include}) + + target_include_directories(core SYSTEM BEFORE PRIVATE ${slang_system_includes}) + target_include_directories(compiler-core SYSTEM BEFORE PRIVATE ${slang_system_includes}) + target_include_directories(slang SYSTEM BEFORE PRIVATE ${slang_system_includes}) + target_include_directories(slang-cpp-extractor SYSTEM BEFORE PRIVATE ${slang_system_includes}) + target_include_directories(slang-embed SYSTEM BEFORE PRIVATE ${slang_system_includes}) + target_include_directories(slang-generate SYSTEM BEFORE PRIVATE ${slang_system_includes}) + target_include_directories(slang-lookup-generator SYSTEM BEFORE PRIVATE ${slang_system_includes}) + target_include_directories(slang-capability-generator SYSTEM BEFORE PRIVATE ${slang_system_includes}) + target_include_directories(slang-spirv-embed-generator SYSTEM BEFORE PRIVATE ${slang_system_includes}) + target_include_directories(slang-bootstrap SYSTEM BEFORE PRIVATE ${slang_system_includes}) + target_include_directories(prelude SYSTEM BEFORE PRIVATE ${slang_system_includes}) + target_include_directories(slang-capability-defs SYSTEM BEFORE PRIVATE ${slang_system_includes}) + target_include_directories(slang-capability-lookup SYSTEM BEFORE PRIVATE ${slang_system_includes}) + target_include_directories(slang-lookup-tables SYSTEM BEFORE PRIVATE ${slang_system_includes}) + target_include_directories(slang-no-embedded-stdlib SYSTEM BEFORE PRIVATE ${slang_system_includes}) + + set(SLANG_STDLIB_META_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/${vkcv_shader_compiler_lib}/slang/source/slang/stdlib-meta) + + target_include_directories(slang BEFORE PUBLIC ${SLANG_STDLIB_META_OUTPUT_DIR}) + + message(WARNING ${SLANG_STDLIB_META_OUTPUT_DIR}) - list(APPEND vkcv_shader_compiler_libraries slang) - list(APPEND vkcv_shader_compiler_includes ${vkcv_shader_compiler_lib}) + list(APPEND vkcv_shader_compiler_libraries slang lz4_static miniz unordered_dense::unordered_dense) + list(APPEND vkcv_shader_compiler_includes ${vkcv_shader_compiler_lib}/slang/include ${slang_system_includes}) endif () diff --git a/modules/shader_compiler/config/SPIRV-Headers.cmake b/modules/shader_compiler/config/SPIRV-Headers.cmake index b5f47dbe..5ef39caa 100644 --- a/modules/shader_compiler/config/SPIRV-Headers.cmake +++ b/modules/shader_compiler/config/SPIRV-Headers.cmake @@ -2,8 +2,10 @@ use_git_submodule("${vkcv_shader_compiler_lib_path}/SPIRV-Headers" spriv_headers_status) if (${spriv_headers_status}) - add_subdirectory(${vkcv_shader_compiler_lib}/SPIRV-Headers) + add_subdirectory(${vkcv_shader_compiler_lib}/SPIRV-Headers SYSTEM) + + set(spirv_headers_include ${vkcv_shader_compiler_lib_path}/SPIRV-Headers/include) list(APPEND vkcv_shader_compiler_libraries SPIRV-Headers) - list(APPEND vkcv_shader_compiler_includes ${vkcv_shader_compiler_lib}/SPIRV-Headers/include) + list(APPEND vkcv_shader_compiler_includes ${spirv_headers_include}) endif () diff --git a/modules/shader_compiler/config/Shady.cmake b/modules/shader_compiler/config/Shady.cmake index 56da131a..3156521d 100644 --- a/modules/shader_compiler/config/Shady.cmake +++ b/modules/shader_compiler/config/Shady.cmake @@ -3,8 +3,8 @@ use_git_submodule("${vkcv_shader_compiler_lib_path}/shady" shady_status) if (${shady_status}) set(EXTERNAL_JSON_C ON CACHE INTERNAL "") - set(EXTERNAL_SPIRV_HEADERS ON CACHE INTERNAL "") - set(EXTERNAL_MURMUR3 ON CACHE INTERNAL "") + set(EXTERNAL_SPIRV_HEADERS ON CACHE INTERNAL "") + set(EXTERNAL_MURMUR3 ON CACHE INTERNAL "") set(EXTERNAL_JSON_C_INCLUDE ${JSON_C_INCLUDE_DIR} CACHE INTERNAL "") diff --git a/modules/shader_compiler/config/UNORDERED_DENSE.cmake b/modules/shader_compiler/config/UNORDERED_DENSE.cmake new file mode 100644 index 00000000..8c2e60aa --- /dev/null +++ b/modules/shader_compiler/config/UNORDERED_DENSE.cmake @@ -0,0 +1,8 @@ + +use_git_submodule("${vkcv_shader_compiler_lib_path}/unordered_dense" unordered_dense_status) + +if (${unordered_dense_status}) + add_subdirectory(${vkcv_shader_compiler_lib}/unordered_dense SYSTEM) + + set(unordered_dense_include ${vkcv_shader_compiler_lib_path}/unordered_dense/include) +endif () diff --git a/modules/shader_compiler/config/slang/CMakeLists.txt b/modules/shader_compiler/config/slang/CMakeLists.txt deleted file mode 100644 index 9c1a50bc..00000000 --- a/modules/shader_compiler/config/slang/CMakeLists.txt +++ /dev/null @@ -1,45 +0,0 @@ -cmake_minimum_required(VERSION 3.9) - -project(slang) - -# settings c++ standard for slang -set(CMAKE_CXX_STANDARD 20) -set(CMAKE_CXX_STANDARD_REQUIRED ON) - -find_package(Vulkan REQUIRED) - -set(slang_base external/source/base) - -set(slang_dir ../../${vkcv_shader_compiler_lib}/slang) - -set(slang_source ${slang_dir}/source) -set(slang_source_compiler_core ${slang_source}/compiler-core) -set(slang_source_core ${slang_source}/core) -set(slang_source_slang ${slang_source}/slang) - -file(GLOB slang_sources - ${slang_source_compiler_core}/*.cpp - ${slang_source_core}/*.cpp - ${slang_source_slang}/*.cpp -) - -if (${VMA_STATIC_VULKAN_FUNCTIONS}) - add_library(slang STATIC ${slang_sources}) -else() - add_library(slang SHARED ${slang_sources}) -endif() - -set_target_properties( - slang PROPERTIES - - CXX_EXTENSIONS OFF - CXX_STANDARD ${CMAKE_CXX_STANDARD} - CXX_STANDARD_REQUIRED ON -) - -target_include_directories(slang PUBLIC ${slang_base} ${slang_source}) - -# Only link to Vulkan if static linking is used -if (NOT ${VMA_DYNAMIC_VULKAN_FUNCTIONS}) - target_link_libraries(slang PUBLIC Vulkan::Vulkan) -endif() diff --git a/modules/shader_compiler/lib/glslang b/modules/shader_compiler/lib/glslang index 52f68dc6..592aed9c 160000 --- a/modules/shader_compiler/lib/glslang +++ b/modules/shader_compiler/lib/glslang @@ -1 +1 @@ -Subproject commit 52f68dc6b2a9d017b43161f31f13a6f44636ee7c +Subproject commit 592aed9c206c283cac98f7a86e5cc237dadb2638 diff --git a/modules/shader_compiler/lib/lz4 b/modules/shader_compiler/lib/lz4 new file mode 160000 index 00000000..68959d27 --- /dev/null +++ b/modules/shader_compiler/lib/lz4 @@ -0,0 +1 @@ +Subproject commit 68959d27c3ec37b339b3b8ecfea155faf0ef94f2 diff --git a/modules/shader_compiler/lib/miniz b/modules/shader_compiler/lib/miniz new file mode 160000 index 00000000..bf7a1f0a --- /dev/null +++ b/modules/shader_compiler/lib/miniz @@ -0,0 +1 @@ +Subproject commit bf7a1f0a5aa1deae9cab2d73b5ef9edec41b877c diff --git a/modules/shader_compiler/lib/slang b/modules/shader_compiler/lib/slang index 359fdc9d..e1734897 160000 --- a/modules/shader_compiler/lib/slang +++ b/modules/shader_compiler/lib/slang @@ -1 +1 @@ -Subproject commit 359fdc9d556b4c493c588c5b8f93df85933634f8 +Subproject commit e1734897a3681f7685b4768fd8d40f446134d483 diff --git a/modules/shader_compiler/lib/unordered_dense b/modules/shader_compiler/lib/unordered_dense new file mode 160000 index 00000000..d911053e --- /dev/null +++ b/modules/shader_compiler/lib/unordered_dense @@ -0,0 +1 @@ +Subproject commit d911053e390816ecc5dedd5a9d6b4bb5ed92b4c9 -- GitLab