diff --git a/tests/framework/CMakeLists.txt b/tests/framework/CMakeLists.txt index 1950b4b06..3fee44ae0 100644 --- a/tests/framework/CMakeLists.txt +++ b/tests/framework/CMakeLists.txt @@ -74,7 +74,6 @@ target_include_directories(vk_test_framework PUBLIC find_package(GTest CONFIG) find_package(glslang CONFIG) -find_package(SPIRV-Tools CONFIG) if(${CMAKE_CXX_COMPILER_ID} MATCHES "(GNU|Clang)") target_compile_options(vk_test_framework PUBLIC @@ -103,7 +102,6 @@ endif() target_link_libraries(vk_test_framework PUBLIC VkLayer_utils glslang::SPIRV - SPIRV-Tools-static SPIRV-Headers::SPIRV-Headers GTest::gtest GTest::gtest_main @@ -112,6 +110,21 @@ target_link_libraries(vk_test_framework PUBLIC $ ) +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_test_framework PRIVATE SPIRV-Tools) +elseif(TARGET SPIRV-Tools-static) + target_link_libraries(vk_test_framework PRIVATE SPIRV-Tools-static) +elseif(TARGET SPIRV-Tools-shared) + target_link_libraries(vk_test_framework 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 "config.h.in")