FindVulkan.cmake 2.0 KB

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