Skip to content
Snippets Groups Projects
Verified Commit b05076ca authored by Tobias Frisch's avatar Tobias Frisch
Browse files

Fix build issues with slang

parent cb72b64c
No related branches found
No related tags found
1 merge request!115Resolve "Slang Compiler"
Showing
with 123 additions and 58 deletions
......@@ -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
Subproject commit b379292b2ab6df5771ba9870d53cf8b2c9295daf
Subproject commit fabe9e2672334fdb9a622d42a2e8f94578952082
Subproject commit 77f6a638a725816291c1deaf5e82c56225951a99
Subproject commit f7f0d8ccaae669b7cf8937211b5f0878cf919465
Subproject commit d7e605d4309d7b054f4277b8968232749de2c6c4
Subproject commit fe09ebbe0a1c8bb5f39f326658faa6bde75bb568
......@@ -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
......
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 ()
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 ()
......@@ -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 ()
......@@ -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 ()
......@@ -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 "")
......
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 ()
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()
Subproject commit 52f68dc6b2a9d017b43161f31f13a6f44636ee7c
Subproject commit 592aed9c206c283cac98f7a86e5cc237dadb2638
Subproject commit 68959d27c3ec37b339b3b8ecfea155faf0ef94f2
Subproject commit bf7a1f0a5aa1deae9cab2d73b5ef9edec41b877c
Subproject commit 359fdc9d556b4c493c588c5b8f93df85933634f8
Subproject commit e1734897a3681f7685b4768fd8d40f446134d483
Subproject commit d911053e390816ecc5dedd5a9d6b4bb5ed92b4c9
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment