diff --git a/CMakeLists.txt b/CMakeLists.txt index 9ca1621b4a4..a5870b45282 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -175,6 +175,16 @@ advanced_option( "Build using system unordered dense" OFF ) +advanced_option( + SLANG_USE_SYSTEM_SPIRV_TOOLS + "Build using system SPIR-V tools library" + OFF +) +advanced_option( + SLANG_USE_SYSTEM_GLSLANG + "Build using system glslang library" + OFF +) option( SLANG_SPIRV_HEADERS_INCLUDE_DIR @@ -408,6 +418,29 @@ if(SLANG_USE_SYSTEM_SPIRV_HEADERS) find_package(SPIRV-Headers REQUIRED) endif() +if(${SLANG_USE_SYSTEM_MINIZ}) + find_package(miniz REQUIRED) + add_library(miniz ALIAS miniz::miniz) +endif() + +if(${SLANG_USE_SYSTEM_LZ4}) + find_package(lz4 REQUIRED) + add_library(lz4_static ALIAS LZ4::lz4) +endif() + +if(${SLANG_USE_SYSTEM_VULKAN_HEADERS}) + find_package(VulkanHeaders REQUIRED) +endif() + +if(${SLANG_USE_SYSTEM_SPIRV_TOOLS}) + find_package(SPIRV-Tools REQUIRED) +endif() + +if(${SLANG_USE_SYSTEM_GLSLANG}) + find_package(glslang REQUIRED) + add_library(glslang ALIAS glslang::glslang) +endif() + add_subdirectory(external) # webgpu_dawn is only available as a fetched shared library, since Dawn's nested source diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt index d8b4c2bcabc..faa8a5730c9 100644 --- a/external/CMakeLists.txt +++ b/external/CMakeLists.txt @@ -142,35 +142,40 @@ if(SLANG_ENABLE_SLANG_GLSLANG) ) endif() - # SPIRV-Tools - set(SPIRV_TOOLS_BUILD_STATIC ON) - set(SPIRV_WERROR OFF) - set(SPIRV_SKIP_TESTS ON) - # Tools - if(NOT SLANG_OVERRIDE_SPIRV_TOOLS_PATH) - add_subdirectory(spirv-tools EXCLUDE_FROM_ALL ${system}) - else() - add_subdirectory( - ${SLANG_OVERRIDE_SPIRV_TOOLS_PATH}/spirv-tools - spirv-tools - EXCLUDE_FROM_ALL - ${system} - ) + if(NOT ${SLANG_USE_SYSTEM_SPIRV_TOOLS}) + # SPIRV-Tools + set(SPIRV_TOOLS_BUILD_STATIC ON) + set(SPIRV_WERROR OFF) + set(SPIRV_SKIP_TESTS ON) + # Tools + if(NOT SLANG_OVERRIDE_SPIRV_TOOLS_PATH) + add_subdirectory(spirv-tools EXCLUDE_FROM_ALL ${system}) + else() + add_subdirectory( + ${SLANG_OVERRIDE_SPIRV_TOOLS_PATH}/spirv-tools + spirv-tools + EXCLUDE_FROM_ALL + ${system} + ) + endif() endif() - # glslang - set(SKIP_GLSLANG_INSTALL ON) - set(ENABLE_OPT ON) - set(ENABLE_PCH OFF) - if(NOT SLANG_OVERRIDE_GLSLANG_PATH) - add_subdirectory(glslang EXCLUDE_FROM_ALL ${system}) - else() - add_subdirectory( - ${SLANG_OVERRIDE_GLSLANG_PATH}/glslang - glslang - EXCLUDE_FROM_ALL - ${system} - ) + if(NOT ${SLANG_USE_SYSTEM_GLSLANG}) + # glslang + set(SKIP_GLSLANG_INSTALL ON) + set(ENABLE_OPT ON) + set(ENABLE_PCH OFF) + set(ALLOW_EXTERNAL_SPIRV_TOOLS ${SLANG_USE_SYSTEM_SPIRV_TOOLS}) + if(NOT SLANG_OVERRIDE_GLSLANG_PATH) + add_subdirectory(glslang EXCLUDE_FROM_ALL ${system}) + else() + add_subdirectory( + ${SLANG_OVERRIDE_GLSLANG_PATH}/glslang + glslang + EXCLUDE_FROM_ALL + ${system} + ) + endif() endif() endif()