xref: /aosp_15_r20/external/vulkan-validation-layers/cmake/FindVulkanHeaders.cmake (revision b7893ccf7851cd6a48cc5a1e965257d8a5cdcc70)
1*b7893ccfSSadaf Ebrahimi#.rst:
2*b7893ccfSSadaf Ebrahimi# FindVulkanHeaders
3*b7893ccfSSadaf Ebrahimi# -----------------
4*b7893ccfSSadaf Ebrahimi#
5*b7893ccfSSadaf Ebrahimi# Try to find Vulkan Headers and Registry.
6*b7893ccfSSadaf Ebrahimi#
7*b7893ccfSSadaf Ebrahimi# This module is intended to be used by projects that build Vulkan
8*b7893ccfSSadaf Ebrahimi# "system" components such as the loader and layers.
9*b7893ccfSSadaf Ebrahimi# Vulkan applications should instead use the FindVulkan (or similar)
10*b7893ccfSSadaf Ebrahimi# find module that locates the headers and the loader library.
11*b7893ccfSSadaf Ebrahimi#
12*b7893ccfSSadaf Ebrahimi# When using this find module to locate the headers and registry
13*b7893ccfSSadaf Ebrahimi# in a Vulkan-Headers repository, the Vulkan-Headers repository
14*b7893ccfSSadaf Ebrahimi# should be built with 'install' target and the following environment
15*b7893ccfSSadaf Ebrahimi# or CMake variable set to the location of the install directory.
16*b7893ccfSSadaf Ebrahimi#
17*b7893ccfSSadaf Ebrahimi#    VULKAN_HEADERS_INSTALL_DIR
18*b7893ccfSSadaf Ebrahimi#
19*b7893ccfSSadaf Ebrahimi# IMPORTED Targets
20*b7893ccfSSadaf Ebrahimi# ^^^^^^^^^^^^^^^^
21*b7893ccfSSadaf Ebrahimi#
22*b7893ccfSSadaf Ebrahimi# This module defines no IMPORTED targets
23*b7893ccfSSadaf Ebrahimi#
24*b7893ccfSSadaf Ebrahimi# Result Variables
25*b7893ccfSSadaf Ebrahimi# ^^^^^^^^^^^^^^^^
26*b7893ccfSSadaf Ebrahimi#
27*b7893ccfSSadaf Ebrahimi# This module defines the following variables::
28*b7893ccfSSadaf Ebrahimi#
29*b7893ccfSSadaf Ebrahimi#   VulkanHeaders_FOUND          - True if VulkanHeaders was found
30*b7893ccfSSadaf Ebrahimi#   VulkanHeaders_INCLUDE_DIRS   - include directories for VulkanHeaders
31*b7893ccfSSadaf Ebrahimi#
32*b7893ccfSSadaf Ebrahimi#   VulkanRegistry_FOUND         - True if VulkanRegistry was found
33*b7893ccfSSadaf Ebrahimi#   VulkanRegistry_DIRS          - directories for VulkanRegistry
34*b7893ccfSSadaf Ebrahimi#
35*b7893ccfSSadaf Ebrahimi# The module will also define two cache variables::
36*b7893ccfSSadaf Ebrahimi#
37*b7893ccfSSadaf Ebrahimi#   VulkanHeaders_INCLUDE_DIR    - the VulkanHeaders include directory
38*b7893ccfSSadaf Ebrahimi#   VulkanRegistry_DIR           - the VulkanRegistry directory
39*b7893ccfSSadaf Ebrahimi#
40*b7893ccfSSadaf Ebrahimi
41*b7893ccfSSadaf Ebrahimi# Use HINTS instead of PATH to search these locations before
42*b7893ccfSSadaf Ebrahimi# searching system environment variables like $PATH that may
43*b7893ccfSSadaf Ebrahimi# contain SDK directories.
44*b7893ccfSSadaf Ebrahimifind_path(VulkanHeaders_INCLUDE_DIR
45*b7893ccfSSadaf Ebrahimi    NAMES vulkan/vulkan.h
46*b7893ccfSSadaf Ebrahimi    HINTS
47*b7893ccfSSadaf Ebrahimi        ${VULKAN_HEADERS_INSTALL_DIR}/include
48*b7893ccfSSadaf Ebrahimi        "$ENV{VULKAN_HEADERS_INSTALL_DIR}/include"
49*b7893ccfSSadaf Ebrahimi        "$ENV{VULKAN_SDK}/include")
50*b7893ccfSSadaf Ebrahimi
51*b7893ccfSSadaf Ebrahimiif(VulkanHeaders_INCLUDE_DIR)
52*b7893ccfSSadaf Ebrahimi   get_filename_component(VULKAN_REGISTRY_PATH_HINT ${VulkanHeaders_INCLUDE_DIR} DIRECTORY)
53*b7893ccfSSadaf Ebrahimi   find_path(VulkanRegistry_DIR
54*b7893ccfSSadaf Ebrahimi       NAMES vk.xml
55*b7893ccfSSadaf Ebrahimi       HINTS "${VULKAN_REGISTRY_PATH_HINT}/share/vulkan/registry")
56*b7893ccfSSadaf Ebrahimiendif()
57*b7893ccfSSadaf Ebrahimi
58*b7893ccfSSadaf Ebrahimiset(VulkanHeaders_INCLUDE_DIRS ${VulkanHeaders_INCLUDE_DIR})
59*b7893ccfSSadaf Ebrahimiset(VulkanRegistry_DIRS ${VulkanRegistry_DIR})
60*b7893ccfSSadaf Ebrahimi
61*b7893ccfSSadaf Ebrahimiinclude(FindPackageHandleStandardArgs)
62*b7893ccfSSadaf Ebrahimifind_package_handle_standard_args(VulkanHeaders
63*b7893ccfSSadaf Ebrahimi    DEFAULT_MSG
64*b7893ccfSSadaf Ebrahimi    VulkanHeaders_INCLUDE_DIR)
65*b7893ccfSSadaf Ebrahimifind_package_handle_standard_args(VulkanRegistry
66*b7893ccfSSadaf Ebrahimi    DEFAULT_MSG
67*b7893ccfSSadaf Ebrahimi    VulkanRegistry_DIR)
68*b7893ccfSSadaf Ebrahimi
69*b7893ccfSSadaf Ebrahimimark_as_advanced(VulkanHeaders_INCLUDE_DIR VulkanRegistry_DIR)
70