xref: /aosp_15_r20/external/vulkan-validation-layers/cmake/FindVulkan.cmake (revision b7893ccf7851cd6a48cc5a1e965257d8a5cdcc70)
1*b7893ccfSSadaf Ebrahimi# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
2*b7893ccfSSadaf Ebrahimi# file Copyright.txt or https://cmake.org/licensing for details.
3*b7893ccfSSadaf Ebrahimi
4*b7893ccfSSadaf Ebrahimi#.rst:
5*b7893ccfSSadaf Ebrahimi# FindVulkan
6*b7893ccfSSadaf Ebrahimi# ----------
7*b7893ccfSSadaf Ebrahimi#
8*b7893ccfSSadaf Ebrahimi# Try to find Vulkan
9*b7893ccfSSadaf Ebrahimi#
10*b7893ccfSSadaf Ebrahimi# IMPORTED Targets
11*b7893ccfSSadaf Ebrahimi# ^^^^^^^^^^^^^^^^
12*b7893ccfSSadaf Ebrahimi#
13*b7893ccfSSadaf Ebrahimi# This module defines :prop_tgt:`IMPORTED` target ``Vulkan::Vulkan``, if
14*b7893ccfSSadaf Ebrahimi# Vulkan has been found.
15*b7893ccfSSadaf Ebrahimi#
16*b7893ccfSSadaf Ebrahimi# Result Variables
17*b7893ccfSSadaf Ebrahimi# ^^^^^^^^^^^^^^^^
18*b7893ccfSSadaf Ebrahimi#
19*b7893ccfSSadaf Ebrahimi# This module defines the following variables::
20*b7893ccfSSadaf Ebrahimi#
21*b7893ccfSSadaf Ebrahimi#   Vulkan_FOUND          - True if Vulkan was found
22*b7893ccfSSadaf Ebrahimi#   Vulkan_INCLUDE_DIRS   - include directories for Vulkan
23*b7893ccfSSadaf Ebrahimi#   Vulkan_LIBRARIES      - link against this library to use Vulkan
24*b7893ccfSSadaf Ebrahimi#
25*b7893ccfSSadaf Ebrahimi# The module will also define two cache variables::
26*b7893ccfSSadaf Ebrahimi#
27*b7893ccfSSadaf Ebrahimi#   Vulkan_INCLUDE_DIR    - the Vulkan include directory
28*b7893ccfSSadaf Ebrahimi#   Vulkan_LIBRARY        - the path to the Vulkan library
29*b7893ccfSSadaf Ebrahimi#
30*b7893ccfSSadaf Ebrahimi
31*b7893ccfSSadaf Ebrahimiif(WIN32)
32*b7893ccfSSadaf Ebrahimi  find_path(Vulkan_INCLUDE_DIR
33*b7893ccfSSadaf Ebrahimi    NAMES vulkan/vulkan.h
34*b7893ccfSSadaf Ebrahimi    PATHS
35*b7893ccfSSadaf Ebrahimi      "$ENV{VULKAN_SDK}/Include"
36*b7893ccfSSadaf Ebrahimi    )
37*b7893ccfSSadaf Ebrahimi
38*b7893ccfSSadaf Ebrahimi  if(CMAKE_SIZEOF_VOID_P EQUAL 8)
39*b7893ccfSSadaf Ebrahimi    find_library(Vulkan_LIBRARY
40*b7893ccfSSadaf Ebrahimi      NAMES vulkan-1
41*b7893ccfSSadaf Ebrahimi      PATHS
42*b7893ccfSSadaf Ebrahimi        "$ENV{VULKAN_SDK}/Lib"
43*b7893ccfSSadaf Ebrahimi        "$ENV{VULKAN_SDK}/Bin"
44*b7893ccfSSadaf Ebrahimi        )
45*b7893ccfSSadaf Ebrahimi  elseif(CMAKE_SIZEOF_VOID_P EQUAL 4)
46*b7893ccfSSadaf Ebrahimi    find_library(Vulkan_LIBRARY
47*b7893ccfSSadaf Ebrahimi      NAMES vulkan-1
48*b7893ccfSSadaf Ebrahimi      PATHS
49*b7893ccfSSadaf Ebrahimi        "$ENV{VULKAN_SDK}/Lib32"
50*b7893ccfSSadaf Ebrahimi        "$ENV{VULKAN_SDK}/Bin32"
51*b7893ccfSSadaf Ebrahimi        NO_SYSTEM_ENVIRONMENT_PATH
52*b7893ccfSSadaf Ebrahimi        )
53*b7893ccfSSadaf Ebrahimi  endif()
54*b7893ccfSSadaf Ebrahimielse()
55*b7893ccfSSadaf Ebrahimi    find_path(Vulkan_INCLUDE_DIR
56*b7893ccfSSadaf Ebrahimi      NAMES vulkan/vulkan.h
57*b7893ccfSSadaf Ebrahimi      PATHS
58*b7893ccfSSadaf Ebrahimi        "$ENV{VULKAN_SDK}/include")
59*b7893ccfSSadaf Ebrahimi    find_library(Vulkan_LIBRARY
60*b7893ccfSSadaf Ebrahimi      NAMES vulkan
61*b7893ccfSSadaf Ebrahimi      PATHS
62*b7893ccfSSadaf Ebrahimi        "$ENV{VULKAN_SDK}/lib")
63*b7893ccfSSadaf Ebrahimiendif()
64*b7893ccfSSadaf Ebrahimi
65*b7893ccfSSadaf Ebrahimiset(Vulkan_LIBRARIES ${Vulkan_LIBRARY})
66*b7893ccfSSadaf Ebrahimiset(Vulkan_INCLUDE_DIRS ${Vulkan_INCLUDE_DIR})
67*b7893ccfSSadaf Ebrahimi
68*b7893ccfSSadaf Ebrahimiinclude(FindPackageHandleStandardArgs)
69*b7893ccfSSadaf Ebrahimifind_package_handle_standard_args(Vulkan
70*b7893ccfSSadaf Ebrahimi  DEFAULT_MSG
71*b7893ccfSSadaf Ebrahimi  Vulkan_LIBRARY Vulkan_INCLUDE_DIR)
72*b7893ccfSSadaf Ebrahimi
73*b7893ccfSSadaf Ebrahimimark_as_advanced(Vulkan_INCLUDE_DIR Vulkan_LIBRARY)
74*b7893ccfSSadaf Ebrahimi
75*b7893ccfSSadaf Ebrahimiif(Vulkan_FOUND AND NOT TARGET Vulkan::Vulkan)
76*b7893ccfSSadaf Ebrahimi  add_library(Vulkan::Vulkan UNKNOWN IMPORTED)
77*b7893ccfSSadaf Ebrahimi  set_target_properties(Vulkan::Vulkan PROPERTIES
78*b7893ccfSSadaf Ebrahimi    IMPORTED_LOCATION "${Vulkan_LIBRARIES}"
79*b7893ccfSSadaf Ebrahimi    INTERFACE_INCLUDE_DIRECTORIES "${Vulkan_INCLUDE_DIRS}")
80*b7893ccfSSadaf Ebrahimiendif()
81