diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index c7e2a73d8..1ae06aee9 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -337,7 +337,6 @@ endif() find_package(GTest CONFIG) find_package(glslang CONFIG) -find_package(SPIRV-Tools CONFIG) # Slang # --- @@ -533,7 +532,6 @@ target_link_libraries(vk_layer_validation_tests PRIVATE VkLayer_utils $<$:slang> glslang::SPIRV - SPIRV-Tools-static SPIRV-Headers::SPIRV-Headers GTest::gtest GTest::gtest_main @@ -542,6 +540,21 @@ target_link_libraries(vk_layer_validation_tests PRIVATE $ ) +find_package(SPIRV-Tools CONFIG QUIET) + +# See https://github.com/KhronosGroup/SPIRV-Tools/issues/3909 for background on this. +# The targets available from SPIRV-Tools change depending on how SPIRV_TOOLS_BUILD_STATIC is set. +# Try to handle all possible combinations so that we work with externally built packages. +if (TARGET SPIRV-Tools) + target_link_libraries(vk_layer_validation_tests PRIVATE SPIRV-Tools) +elseif(TARGET SPIRV-Tools-static) + target_link_libraries(vk_layer_validation_tests PRIVATE SPIRV-Tools-static) +elseif(TARGET SPIRV-Tools-shared) + target_link_libraries(vk_layer_validation_tests PRIVATE SPIRV-Tools-shared) +else() + message(FATAL_ERROR "Cannot determine SPIRV-Tools target name") +endif( + # setup framework/config.h using framework/config.h.in as a source file(GENERATE OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/config_$.h" INPUT "${CMAKE_CURRENT_SOURCE_DIR}/framework/config.h.in")