summaryrefslogtreecommitdiff
path: root/media-libs/vulkan-layers/files/vulkan-layers-1.3.204-Fix-dependency-detection.patch
blob: 25f3b4bafd2779b3ebbf5a85016643c0a8f26b30 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
From 534810e26e0be782b2c702a97bf726af250b8cd6 Mon Sep 17 00:00:00 2001
From: Jeremy Gebben <jeremyg@lunarg.com>
Date: Thu, 17 Feb 2022 15:26:25 -0700
Subject: [PATCH] build: Handle many permutations of SPIRV-Headers locations

If the SPIRV-Headers package is not found, fall back to looking for
headers in SPIRV_HEADERS_INSTALL_DIR or SPIRV_HEADERS_INCLUDE_DIR.

Fixes #3765
---
 CMakeLists.txt        | 19 ++++++++++++++++---
 layers/CMakeLists.txt |  7 +------
 tests/CMakeLists.txt  |  6 +++---
 3 files changed, 20 insertions(+), 12 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index d4ca786ca07..58a966f03d6 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -256,10 +256,23 @@ if (USE_ROBIN_HOOD_HASHING)
     endif()
 endif()
 
-set(SPIRV_HEADERS_INCLUDE_DIR "" CACHE STRING "")
 if(BUILD_LAYERS OR BUILD_TESTS)
-    if (SPIRV_HEADERS_INCLUDE_DIR STREQUAL "")
-        find_package(SPIRV-Headers REQUIRED CONFIG)
+    find_package(SPIRV-Headers CONFIG QUIET)
+    if(SPIRV-Headers_FOUND)
+	# pefer the package if found. Note that if SPIRV_HEADERS_INSTALL_DIR points at an 'installed'
+	# version of SPIRV-Headers, the package will be found.
+	get_target_property(SPIRV_HEADERS_INCLUDE_DIR SPIRV-Headers::SPIRV-Headers INTERFACE_INCLUDE_DIRECTORIES)
+    elseif(SPIRV_HEADERS_INCLUDE_DIR)
+	# This is set by SPIRV-Tools (in parent scope!) and also some packages that include VVL with add_subdirectory
+	if (NOT EXISTS "${SPIRV_HEADERS_INCLUDE_DIR}/spirv/unified1/spirv.h")
+	    message(FATAL_ERROR "Cannot find SPIRV-Headers from SPIRV_HEADERS_INCLUDE_DIR: ${SPIRV_HEADERS_INCLUDE_DIR}")
+        endif()
+    elseif(SPIRV_HEADERS_INSTALL_DIR)
+        # This is our official variable for setting SPIRV-Headers location, but pointing at the raw source of SPIRV-Headers
+	if (NOT EXISTS "${SPIRV_HEADERS_INSTALL_DIR}/include/spirv/unified1/spirv.h")
+	    message(FATAL_ERROR "Cannot find SPIRV-Headers from SPIRV_HEADERS_INSTALL_DIR: ${SPIRV_HEADERS_INSTALL_DIR}")
+        endif()
+	set(SPIRV_HEADERS_INCLUDE_DIR "${SPIRV_HEADERS_INSTALL_DIR}/include")
     endif()
 endif()
 
diff --git a/layers/CMakeLists.txt b/layers/CMakeLists.txt
index 6edcf6eb5ab..59e294a0793 100644
--- a/layers/CMakeLists.txt
+++ b/layers/CMakeLists.txt
@@ -309,12 +309,7 @@ if(BUILD_LAYERS)
     if (USE_ROBIN_HOOD_HASHING)
         target_include_directories(VkLayer_khronos_validation PRIVATE ${ROBIN_HOOD_HASHING_INCLUDE_DIR})
     endif()
-    if (SPIRV_HEADERS_INCLUDE_DIR STREQUAL "")
-        target_link_libraries(VkLayer_khronos_validation PRIVATE SPIRV-Headers::SPIRV-Headers)
-    else()
-        target_include_directories(VkLayer_khronos_validation PRIVATE ${SPIRV_HEADERS_INCLUDE_DIR})
-    endif()
-
+    target_include_directories(VkLayer_khronos_validation PRIVATE ${SPIRV_HEADERS_INCLUDE_DIR})
     target_link_libraries(VkLayer_khronos_validation PRIVATE SPIRV-Tools-static SPIRV-Tools-opt)
 
 
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 2b98d109b7f..780c0538486 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -1,6 +1,6 @@
 # ~~~
-# Copyright (c) 2014-2021 Valve Corporation
-# Copyright (c) 2014-2021 LunarG, Inc.
+# Copyright (c) 2014-2022 Valve Corporation
+# Copyright (c) 2014-2022 LunarG, Inc.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -149,11 +149,11 @@ if (NOT MSVC)
     target_compile_options(vk_layer_validation_tests PRIVATE "-Wno-sign-compare")
 endif()
 
+target_include_directories(vk_layer_validation_tests PRIVATE ${SPIRV_HEADERS_INCLUDE_DIR})
 # Specify target_link_libraries
 target_link_libraries(vk_layer_validation_tests
                       PRIVATE VkLayer_utils
                               ${GLSLANG_LIBRARIES}
-			      SPIRV-Headers::SPIRV-Headers
 			      SPIRV-Tools-static SPIRV-Tools-opt
 			      GTest::gtest GTest::gtest_main)