diff --git a/externals/CMakeLists.txt b/externals/CMakeLists.txt index 21a32d642..4f6f1949e 100644 --- a/externals/CMakeLists.txt +++ b/externals/CMakeLists.txt @@ -402,6 +402,19 @@ endif() # Vulkan dependencies if (ENABLE_VULKAN) + # spirv-headers + if(USE_SYSTEM_SPIRV_HEADERS) + find_package(SPIRV-Headers REQUIRED) + if(TARGET SPIRV-Headers::SPIRV-Headers) + message(STATUS "Found SPIRV headers") + get_target_property(SPIRV-Headers_SOURCE_DIR SPIRV-Headers::SPIRV-Headers INTERFACE_INCLUDE_DIRECTORIES) + set(SPIRV-Headers_SOURCE_DIR "${SPIRV-Headers_SOURCE_DIR}/../") # Not sure why this is necessary + endif() + else() + set(SPIRV-Headers_SOURCE_DIR "${CMAKE_SOURCE_DIR}/externals/spirv-headers") + add_subdirectory(spirv-headers EXCLUDE_FROM_ALL) + endif() + # glslang if(USE_SYSTEM_GLSLANG) find_package(glslang REQUIRED) @@ -413,8 +426,6 @@ if (ENABLE_VULKAN) get_target_property(GLSLANG_PREFIX glslang::SPIRV INTERFACE_INCLUDE_DIRECTORIES) target_include_directories(SPIRV SYSTEM INTERFACE "${GLSLANG_PREFIX}/glslang") else() - set(SPIRV-Headers_SOURCE_DIR "${CMAKE_SOURCE_DIR}/externals/spirv-headers") - add_subdirectory(spirv-headers EXCLUDE_FROM_ALL) set(SPIRV_SKIP_EXECUTABLES ON) add_subdirectory(spirv-tools EXCLUDE_FROM_ALL) set(SKIP_GLSLANG_INSTALL ON CACHE BOOL "") diff --git a/externals/cmake-modules/CitraHandleSystemLibs.cmake b/externals/cmake-modules/CitraHandleSystemLibs.cmake index b1bb7ccd9..d45e129bb 100644 --- a/externals/cmake-modules/CitraHandleSystemLibs.cmake +++ b/externals/cmake-modules/CitraHandleSystemLibs.cmake @@ -25,6 +25,7 @@ option(USE_SYSTEM_LODEPNG "Use the system lodepng (instead of the bundled one)" option(USE_SYSTEM_OPENAL "Use the system OpenAL (instead of the bundled one)" OFF) option(USE_SYSTEM_VMA "Use the system VulkanMemoryAllocator (instead of the bundled one)" OFF) option(USE_SYSTEM_VULKAN_HEADERS "Use the system Vulkan headers (instead of the bundled ones)" OFF) +option(USE_SYSTEM_SPIRV_HEADERS "Use the system SPIRV headers (instead of the bundled ones)" OFF) option(USE_SYSTEM_CATCH2 "Use the system Catch2 (instead of the bundled one)" OFF) # Qt and MoltenVK are handled separately @@ -50,6 +51,7 @@ CMAKE_DEPENDENT_OPTION(DISABLE_SYSTEM_LODEPNG "Disable system lodepng" OFF "USE_ CMAKE_DEPENDENT_OPTION(DISABLE_SYSTEM_OPENAL "Disable system OpenAL" OFF "USE_SYSTEM_LIBS" OFF) CMAKE_DEPENDENT_OPTION(DISABLE_SYSTEM_VMA "Disable system VulkanMemoryAllocator" OFF "USE_SYSTEM_LIBS" OFF) CMAKE_DEPENDENT_OPTION(DISABLE_SYSTEM_VULKAN_HEADERS "Disable system Vulkan headers" OFF "USE_SYSTEM_LIBS" OFF) +CMAKE_DEPENDENT_OPTION(DISABLE_SYSTEM_SPIRV_HEADERS "Disable system SPIRV headers" OFF "USE_SYSTEM_LIBS" OFF) CMAKE_DEPENDENT_OPTION(DISABLE_SYSTEM_CATCH2 "Disable system Catch2" OFF "USE_SYSTEM_LIBS" OFF) set(LIB_VAR_LIST