summaryrefslogtreecommitdiff
path: root/vulkan-validation-layers-32/vulkan-layers-1.3.204-Fix-dependency-detection.patch
blob: 25f3b4bafd2779b3ebbf5a85016643c0a8f26b30 (plain)
    1 From 534810e26e0be782b2c702a97bf726af250b8cd6 Mon Sep 17 00:00:00 2001
    2 From: Jeremy Gebben <jeremyg@lunarg.com>
    3 Date: Thu, 17 Feb 2022 15:26:25 -0700
    4 Subject: [PATCH] build: Handle many permutations of SPIRV-Headers locations
    5 
    6 If the SPIRV-Headers package is not found, fall back to looking for
    7 headers in SPIRV_HEADERS_INSTALL_DIR or SPIRV_HEADERS_INCLUDE_DIR.
    8 
    9 Fixes #3765
   10 ---
   11  CMakeLists.txt        | 19 ++++++++++++++++---
   12  layers/CMakeLists.txt |  7 +------
   13  tests/CMakeLists.txt  |  6 +++---
   14  3 files changed, 20 insertions(+), 12 deletions(-)
   15 
   16 diff --git a/CMakeLists.txt b/CMakeLists.txt
   17 index d4ca786ca07..58a966f03d6 100644
   18 --- a/CMakeLists.txt
   19 +++ b/CMakeLists.txt
   20 @@ -256,10 +256,23 @@ if (USE_ROBIN_HOOD_HASHING)
   21      endif()
   22  endif()
   23  
   24 -set(SPIRV_HEADERS_INCLUDE_DIR "" CACHE STRING "")
   25  if(BUILD_LAYERS OR BUILD_TESTS)
   26 -    if (SPIRV_HEADERS_INCLUDE_DIR STREQUAL "")
   27 -        find_package(SPIRV-Headers REQUIRED CONFIG)
   28 +    find_package(SPIRV-Headers CONFIG QUIET)
   29 +    if(SPIRV-Headers_FOUND)
   30 +	# pefer the package if found. Note that if SPIRV_HEADERS_INSTALL_DIR points at an 'installed'
   31 +	# version of SPIRV-Headers, the package will be found.
   32 +	get_target_property(SPIRV_HEADERS_INCLUDE_DIR SPIRV-Headers::SPIRV-Headers INTERFACE_INCLUDE_DIRECTORIES)
   33 +    elseif(SPIRV_HEADERS_INCLUDE_DIR)
   34 +	# This is set by SPIRV-Tools (in parent scope!) and also some packages that include VVL with add_subdirectory
   35 +	if (NOT EXISTS "${SPIRV_HEADERS_INCLUDE_DIR}/spirv/unified1/spirv.h")
   36 +	    message(FATAL_ERROR "Cannot find SPIRV-Headers from SPIRV_HEADERS_INCLUDE_DIR: ${SPIRV_HEADERS_INCLUDE_DIR}")
   37 +        endif()
   38 +    elseif(SPIRV_HEADERS_INSTALL_DIR)
   39 +        # This is our official variable for setting SPIRV-Headers location, but pointing at the raw source of SPIRV-Headers
   40 +	if (NOT EXISTS "${SPIRV_HEADERS_INSTALL_DIR}/include/spirv/unified1/spirv.h")
   41 +	    message(FATAL_ERROR "Cannot find SPIRV-Headers from SPIRV_HEADERS_INSTALL_DIR: ${SPIRV_HEADERS_INSTALL_DIR}")
   42 +        endif()
   43 +	set(SPIRV_HEADERS_INCLUDE_DIR "${SPIRV_HEADERS_INSTALL_DIR}/include")
   44      endif()
   45  endif()
   46  
   47 diff --git a/layers/CMakeLists.txt b/layers/CMakeLists.txt
   48 index 6edcf6eb5ab..59e294a0793 100644
   49 --- a/layers/CMakeLists.txt
   50 +++ b/layers/CMakeLists.txt
   51 @@ -309,12 +309,7 @@ if(BUILD_LAYERS)
   52      if (USE_ROBIN_HOOD_HASHING)
   53          target_include_directories(VkLayer_khronos_validation PRIVATE ${ROBIN_HOOD_HASHING_INCLUDE_DIR})
   54      endif()
   55 -    if (SPIRV_HEADERS_INCLUDE_DIR STREQUAL "")
   56 -        target_link_libraries(VkLayer_khronos_validation PRIVATE SPIRV-Headers::SPIRV-Headers)
   57 -    else()
   58 -        target_include_directories(VkLayer_khronos_validation PRIVATE ${SPIRV_HEADERS_INCLUDE_DIR})
   59 -    endif()
   60 -
   61 +    target_include_directories(VkLayer_khronos_validation PRIVATE ${SPIRV_HEADERS_INCLUDE_DIR})
   62      target_link_libraries(VkLayer_khronos_validation PRIVATE SPIRV-Tools-static SPIRV-Tools-opt)
   63  
   64  
   65 diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
   66 index 2b98d109b7f..780c0538486 100644
   67 --- a/tests/CMakeLists.txt
   68 +++ b/tests/CMakeLists.txt
   69 @@ -1,6 +1,6 @@
   70  # ~~~
   71 -# Copyright (c) 2014-2021 Valve Corporation
   72 -# Copyright (c) 2014-2021 LunarG, Inc.
   73 +# Copyright (c) 2014-2022 Valve Corporation
   74 +# Copyright (c) 2014-2022 LunarG, Inc.
   75  #
   76  # Licensed under the Apache License, Version 2.0 (the "License");
   77  # you may not use this file except in compliance with the License.
   78 @@ -149,11 +149,11 @@ if (NOT MSVC)
   79      target_compile_options(vk_layer_validation_tests PRIVATE "-Wno-sign-compare")
   80  endif()
   81  
   82 +target_include_directories(vk_layer_validation_tests PRIVATE ${SPIRV_HEADERS_INCLUDE_DIR})
   83  # Specify target_link_libraries
   84  target_link_libraries(vk_layer_validation_tests
   85                        PRIVATE VkLayer_utils
   86                                ${GLSLANG_LIBRARIES}
   87 -			      SPIRV-Headers::SPIRV-Headers
   88  			      SPIRV-Tools-static SPIRV-Tools-opt
   89  			      GTest::gtest GTest::gtest_main)
   90  

Generated by cgit