aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Lobodzinski <mark@lunarg.com>2018-06-13 11:03:46 -0600
committerMark Lobodzinski <mark@lunarg.com>2018-06-14 08:40:40 -0600
commite59e0f6c8412c1a927ac21d2b83a6aa8bb457bb6 (patch)
tree7f6f944e51ab7ead780564855e69e88d3e1f8deb
parentcb594cc883d4836fb360a4e99c01786eb3e4d351 (diff)
downloadusermoji-e59e0f6c8412c1a927ac21d2b83a6aa8bb457bb6.tar.xz
cmake: Use FindVulkanHeaders to get vulkan includes
-rw-r--r--CMakeLists.txt4
-rw-r--r--cmake/FindVulkanHeaders.cmake69
-rw-r--r--cube/CMakeLists.txt2
-rw-r--r--icd/CMakeLists.txt2
-rw-r--r--vulkaninfo/CMakeLists.txt4
-rw-r--r--vulkaninfo/macOS/vulkaninfo.cmake2
6 files changed, 77 insertions, 6 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f2a29815..e5256879 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -32,11 +32,13 @@ set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH};${VULKAN_HEADERS_INSTALL_DIR};${VULKA
$ENV{VULKAN_HEADERS_INSTALL_DIR};$ENV{VULKAN_LOADER_INSTALL_DIR})
message(STATUS "Using find_package to locate Vulkan")
find_package(Vulkan)
+find_package(VulkanHeaders)
# "Vulkan::Vulkan" on macOS causes the framework to be linked to the app instead of an individual library
set(LIBVK "Vulkan::Vulkan")
message(STATUS "Vulkan FOUND = ${Vulkan_FOUND}")
-message(STATUS "Vulkan Include = ${Vulkan_INCLUDE_DIR}")
message(STATUS "Vulkan Lib = ${Vulkan_LIBRARY}")
+message(STATUS "Vulkan Headers Include = ${VulkanHeaders_INCLUDE_DIR}")
+message(STATUS "Vulkan Headers Registry = ${VulkanRegistry_DIR}")
# Install-related settings
include(GNUInstallDirs)
diff --git a/cmake/FindVulkanHeaders.cmake b/cmake/FindVulkanHeaders.cmake
new file mode 100644
index 00000000..a1458fda
--- /dev/null
+++ b/cmake/FindVulkanHeaders.cmake
@@ -0,0 +1,69 @@
+#.rst:
+# FindVulkanHeaders
+# -----------------
+#
+# Try to find Vulkan Headers and Registry.
+#
+# This module is intended to be used by projects that build Vulkan
+# "system" components such as the loader and layers.
+# Vulkan applications should instead use the FindVulkan (or similar)
+# find module that locates the headers and the loader library.
+#
+# When using this find module to locate the headers and registry
+# in a Vulkan-Headers repository, the Vulkan-Headers repository
+# should be built with 'install' target and the following environment
+# or CMake variable set to the location of the install directory.
+#
+# VULKAN_HEADERS_INSTALL_DIR
+#
+# IMPORTED Targets
+# ^^^^^^^^^^^^^^^^
+#
+# This module defines no IMPORTED targets
+#
+# Result Variables
+# ^^^^^^^^^^^^^^^^
+#
+# This module defines the following variables::
+#
+# VulkanHeaders_FOUND - True if VulkanHeaders was found
+# VulkanHeaders_INCLUDE_DIRS - include directories for VulkanHeaders
+#
+# VulkanRegistry_FOUND - True if VulkanRegistry was found
+# VulkanRegistry_DIRS - directories for VulkanRegistry
+#
+# The module will also define two cache variables::
+#
+# VulkanHeaders_INCLUDE_DIR - the VulkanHeaders include directory
+# 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")
+
+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")
+endif()
+
+set(VulkanHeaders_INCLUDE_DIRS ${VulkanHeaders_INCLUDE_DIR})
+set(VulkanRegistry_DIRS ${VulkanRegistry_DIR})
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(VulkanHeaders
+ DEFAULT_MSG
+ VulkanHeaders_INCLUDE_DIR)
+find_package_handle_standard_args(VulkanRegistry
+ DEFAULT_MSG
+ VulkanRegistry_DIR)
+
+mark_as_advanced(VulkanHeaders_INCLUDE_DIR VulkanRegistry_DIR)
diff --git a/cube/CMakeLists.txt b/cube/CMakeLists.txt
index a2c3abaa..5574a8bc 100644
--- a/cube/CMakeLists.txt
+++ b/cube/CMakeLists.txt
@@ -1,7 +1,7 @@
set(CUBE_INCLUDE_DIRS
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_CURRENT_BINARY_DIR}/..
- ${Vulkan_INCLUDE_DIR}
+ ${VulkanHeaders_INCLUDE_DIR}
)
find_package(PythonInterp 3 REQUIRED)
diff --git a/icd/CMakeLists.txt b/icd/CMakeLists.txt
index a98b5cb5..3c4d17a5 100644
--- a/icd/CMakeLists.txt
+++ b/icd/CMakeLists.txt
@@ -160,7 +160,7 @@ endif()
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}
- ${Vulkan_INCLUDE_DIR}
+ ${VulkanHeaders_INCLUDE_DIR}
${CMAKE_CURRENT_BINARY_DIR}
${PROJECT_BINARY_DIR}
${CMAKE_BINARY_DIR}
diff --git a/vulkaninfo/CMakeLists.txt b/vulkaninfo/CMakeLists.txt
index 0b399925..6f0af14e 100644
--- a/vulkaninfo/CMakeLists.txt
+++ b/vulkaninfo/CMakeLists.txt
@@ -24,7 +24,7 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
if (BUILD_WSI_XLIB_SUPPORT)
find_package(X11 REQUIRED)
endif()
-
+
if (VULKANINFO_WSI_SELECTION STREQUAL "XCB")
if (NOT BUILD_WSI_XCB_SUPPORT)
message( FATAL_ERROR "Selected XCB for vulkaninfo build but not building Xcb support" )
@@ -45,7 +45,7 @@ endif()
if(APPLE)
# We do this so vulkaninfo is linked to an individual library and NOT a framework.
target_link_libraries(vulkaninfo ${Vulkan_LIBRARY} "-framework AppKit -framework QuartzCore")
- target_include_directories(vulkaninfo PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/macOS/vulkaninfo ${Vulkan_INCLUDE_DIR})
+ target_include_directories(vulkaninfo PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/macOS/vulkaninfo ${VulkanHeaders_INCLUDE_DIR})
else()
target_link_libraries(vulkaninfo ${LIBVK})
endif()
diff --git a/vulkaninfo/macOS/vulkaninfo.cmake b/vulkaninfo/macOS/vulkaninfo.cmake
index cea77117..7ed812e9 100644
--- a/vulkaninfo/macOS/vulkaninfo.cmake
+++ b/vulkaninfo/macOS/vulkaninfo.cmake
@@ -18,7 +18,7 @@ set_target_properties(vulkaninfo-bundle PROPERTIES
)
# We do this so vulkaninfo is linked to an individual library and NOT a framework.
target_link_libraries(vulkaninfo-bundle ${Vulkan_LIBRARY} "-framework AppKit -framework QuartzCore")
-target_include_directories(vulkaninfo-bundle PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/macOS/vulkaninfo ${Vulkan_INCLUDE_DIR})
+target_include_directories(vulkaninfo-bundle PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/macOS/vulkaninfo ${VulkanHeaders_INCLUDE_DIR})
add_dependencies(vulkaninfo-bundle MoltenVK_icd-staging-json)
set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/macOS/vulkaninfo.sh PROPERTIES
MACOSX_PACKAGE_LOCATION "MacOS"