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