From cb72b64c8833c1d03e0aa50e14a4b5d4174bb711 Mon Sep 17 00:00:00 2001 From: Tobias Frisch <tfrisch@uni-koblenz.de> Date: Mon, 22 Jul 2024 22:28:00 +0200 Subject: [PATCH] Add basic cmake configuration for slang Signed-off-by: Tobias Frisch <tfrisch@uni-koblenz.de> --- modules/shader_compiler/CMakeLists.txt | 3 ++ modules/shader_compiler/config/SLANG.cmake | 9 ++++ .../config/slang/CMakeLists.txt | 45 +++++++++++++++++++ 3 files changed, 57 insertions(+) create mode 100644 modules/shader_compiler/config/SLANG.cmake create mode 100644 modules/shader_compiler/config/slang/CMakeLists.txt diff --git a/modules/shader_compiler/CMakeLists.txt b/modules/shader_compiler/CMakeLists.txt index a00a896d..4dc2c556 100644 --- a/modules/shader_compiler/CMakeLists.txt +++ b/modules/shader_compiler/CMakeLists.txt @@ -53,6 +53,9 @@ include(config/GLSLANG.cmake) include(config/Murmur3.cmake) include(config/Shady.cmake) +# Check and load SLANG +include(config/SLANG.cmake) + # link the required libraries to the module target_link_libraries(vkcv_shader_compiler ${vkcv_shader_compiler_libraries} vkcv) diff --git a/modules/shader_compiler/config/SLANG.cmake b/modules/shader_compiler/config/SLANG.cmake new file mode 100644 index 00000000..e9f5c26a --- /dev/null +++ b/modules/shader_compiler/config/SLANG.cmake @@ -0,0 +1,9 @@ + +use_git_submodule("${vkcv_shader_compiler_lib_path}/slang" slang_status) + +if (${slang_status}) + add_subdirectory(config/slang) + + list(APPEND vkcv_shader_compiler_libraries slang) + list(APPEND vkcv_shader_compiler_includes ${vkcv_shader_compiler_lib}) +endif () diff --git a/modules/shader_compiler/config/slang/CMakeLists.txt b/modules/shader_compiler/config/slang/CMakeLists.txt new file mode 100644 index 00000000..9c1a50bc --- /dev/null +++ b/modules/shader_compiler/config/slang/CMakeLists.txt @@ -0,0 +1,45 @@ +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() -- GitLab