diff options
| author | Mike Schuchardt <mikes@lunarg.com> | 2022-10-26 13:31:08 -0700 |
|---|---|---|
| committer | Mike Schuchardt <mikes@lunarg.com> | 2022-10-26 16:56:08 -0500 |
| commit | cff7777139a9a6f22933795fbcd3b78777ca36bb (patch) | |
| tree | 34b9bf3e0b18d645f370e065d822006b5b7b97f1 | |
| parent | 28e73b113da0c8e2d287e7c8a275611ea9c7dbc1 (diff) | |
| download | usermoji-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.cmake | 47 |
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}) |
