aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Schuchardt <mikes@lunarg.com>2022-10-26 13:31:08 -0700
committerMike Schuchardt <mikes@lunarg.com>2022-10-26 16:56:08 -0500
commitcff7777139a9a6f22933795fbcd3b78777ca36bb (patch)
tree34b9bf3e0b18d645f370e065d822006b5b7b97f1
parent28e73b113da0c8e2d287e7c8a275611ea9c7dbc1 (diff)
downloadusermoji-cff7777139a9a6f22933795fbcd3b78777ca36bb.tar.xz
cmake: Sync FindVulkanHeaders.cmake with VVL
This picks up a few fixes, notably https://github.com/KhronosGroup/Vulkan-ValidationLayers/pull/1393 which helps with cross-compiling.
-rw-r--r--cmake/FindVulkanHeaders.cmake47
1 files changed, 33 insertions, 14 deletions
diff --git a/cmake/FindVulkanHeaders.cmake b/cmake/FindVulkanHeaders.cmake
index c84d9489..6779beec 100644
--- a/cmake/FindVulkanHeaders.cmake
+++ b/cmake/FindVulkanHeaders.cmake
@@ -38,21 +38,40 @@
# VulkanRegistry_DIR - the VulkanRegistry directory
#
-# Use HINTS instead of PATH to search these locations before
-# searching system environment variables like $PATH that may
-# contain SDK directories.
-find_path(VulkanHeaders_INCLUDE_DIR
- NAMES vulkan/vulkan.h
- HINTS
- ${VULKAN_HEADERS_INSTALL_DIR}/include
- "$ENV{VULKAN_HEADERS_INSTALL_DIR}/include"
- "$ENV{VULKAN_SDK}/include")
+# Probe command-line arguments and the environment to see if they specify the
+# Vulkan headers installation path.
+if(NOT DEFINED VULKAN_HEADERS_INSTALL_DIR)
+ if (DEFINED ENV{VULKAN_HEADERS_INSTALL_DIR})
+ set(VULKAN_HEADERS_INSTALL_DIR "$ENV{VULKAN_HEADERS_INSTALL_DIR}")
+ elseif(DEFINED ENV{VULKAN_SDK})
+ set(VULKAN_HEADERS_INSTALL_DIR "$ENV{VULKAN_SDK}")
+ endif()
+endif()
+
+if(DEFINED VULKAN_HEADERS_INSTALL_DIR)
+ # When CMAKE_FIND_ROOT_PATH_INCLUDE is set to ONLY, the HINTS in find_path()
+ # are re-rooted, which prevents VULKAN_HEADERS_INSTALL_DIR to work as
+ # expected. So use NO_CMAKE_FIND_ROOT_PATH to avoid it.
-if(VulkanHeaders_INCLUDE_DIR)
- get_filename_component(VULKAN_REGISTRY_PATH_HINT ${VulkanHeaders_INCLUDE_DIR} DIRECTORY)
- find_path(VulkanRegistry_DIR
- NAMES vk.xml
- HINTS "${VULKAN_REGISTRY_PATH_HINT}/share/vulkan/registry")
+ # Use HINTS instead of PATH to search these locations before
+ # searching system environment variables like $PATH that may
+ # contain SDK directories.
+ find_path(VulkanHeaders_INCLUDE_DIR
+ NAMES vulkan/vulkan.h
+ HINTS ${VULKAN_HEADERS_INSTALL_DIR}/include
+ NO_CMAKE_FIND_ROOT_PATH
+ NO_DEFAULT_PATH)
+ find_path(VulkanRegistry_DIR
+ NAMES vk.xml
+ HINTS ${VULKAN_HEADERS_INSTALL_DIR}/share/vulkan/registry
+ NO_CMAKE_FIND_ROOT_PATH
+ NO_DEFAULT_PATH)
+else()
+ # If VULKAN_HEADERS_INSTALL_DIR, or one of its variants was not specified,
+ # do a normal search without hints.
+ find_path(VulkanHeaders_INCLUDE_DIR NAMES vulkan/vulkan.h)
+ get_filename_component(VULKAN_REGISTRY_PATH_HINT ${VulkanHeaders_INCLUDE_DIR} DIRECTORY)
+ find_path(VulkanRegistry_DIR NAMES vk.xml HINTS ${VULKAN_REGISTRY_PATH_HINT})
endif()
set(VulkanHeaders_INCLUDE_DIRS ${VulkanHeaders_INCLUDE_DIR})