aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuan Ramos <juan@lunarg.com>2022-11-10 14:55:46 -0700
committerJuan Ramos <114601453+juan-lunarg@users.noreply.github.com>2022-11-10 16:52:25 -0700
commitc4839afe758d3c8fb5c46792398509b4fee0a28a (patch)
tree13ff13a1014bd90c497cb415d2547d83e717b4e4
parent3a729c0a9d581d21f9f36cb1831281cb526834d5 (diff)
downloadusermoji-c4839afe758d3c8fb5c46792398509b4fee0a28a.tar.xz
cmake: Use new VulkanHeaders cmake support
-rw-r--r--CMakeLists.txt5
-rw-r--r--cmake/FindVulkanHeaders.cmake90
-rw-r--r--cube/CMakeLists.txt2
-rw-r--r--icd/CMakeLists.txt4
-rw-r--r--vulkaninfo/CMakeLists.txt6
-rw-r--r--vulkaninfo/macOS/vulkaninfo.cmake4
6 files changed, 11 insertions, 100 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 27acca86..e4ec4edd 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -85,13 +85,11 @@ if(APPLE)
endif()
message(STATUS "Using find_package to locate Vulkan")
find_package(Vulkan)
-find_package(VulkanHeaders)
+find_package(VulkanHeaders REQUIRED CONFIG)
get_filename_component(Vulkan_LIBRARY_DIR ${Vulkan_LIBRARY} DIRECTORY)
message(STATUS "Vulkan FOUND = ${Vulkan_FOUND}")
message(STATUS "Vulkan Lib Dir = ${Vulkan_LIBRARY_DIR}")
message(STATUS "Vulkan Lib = ${Vulkan_LIBRARY}")
-message(STATUS "Vulkan Headers Include = ${VulkanHeaders_INCLUDE_DIR}")
-message(STATUS "Vulkan Headers Registry = ${VulkanRegistry_DIR}")
include(GNUInstallDirs)
@@ -160,6 +158,7 @@ endif()
# Optional codegen target
if(PYTHONINTERP_FOUND)
+ get_target_property(VulkanRegistry_DIR Vulkan::Registry INTERFACE_INCLUDE_DIRECTORIES)
add_custom_target(VulkanTools_generated_source
COMMAND ${PYTHON_EXECUTABLE} ${PROJECT_SOURCE_DIR}/scripts/generate_source.py
${VulkanRegistry_DIR} --incremental
diff --git a/cmake/FindVulkanHeaders.cmake b/cmake/FindVulkanHeaders.cmake
deleted file mode 100644
index 6779beec..00000000
--- a/cmake/FindVulkanHeaders.cmake
+++ /dev/null
@@ -1,90 +0,0 @@
-#.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
-#
-
-# Probe command-line arguments and the environment to see if they specify the
-# Vulkan headers installation path.
-if(NOT DEFINED VULKAN_HEADERS_INSTALL_DIR)
- if (DEFINED ENV{VULKAN_HEADERS_INSTALL_DIR})
- set(VULKAN_HEADERS_INSTALL_DIR "$ENV{VULKAN_HEADERS_INSTALL_DIR}")
- elseif(DEFINED ENV{VULKAN_SDK})
- set(VULKAN_HEADERS_INSTALL_DIR "$ENV{VULKAN_SDK}")
- endif()
-endif()
-
-if(DEFINED VULKAN_HEADERS_INSTALL_DIR)
- # When CMAKE_FIND_ROOT_PATH_INCLUDE is set to ONLY, the HINTS in find_path()
- # are re-rooted, which prevents VULKAN_HEADERS_INSTALL_DIR to work as
- # expected. So use NO_CMAKE_FIND_ROOT_PATH to avoid it.
-
- # 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
- NO_CMAKE_FIND_ROOT_PATH
- NO_DEFAULT_PATH)
- find_path(VulkanRegistry_DIR
- NAMES vk.xml
- HINTS ${VULKAN_HEADERS_INSTALL_DIR}/share/vulkan/registry
- NO_CMAKE_FIND_ROOT_PATH
- NO_DEFAULT_PATH)
-else()
- # If VULKAN_HEADERS_INSTALL_DIR, or one of its variants was not specified,
- # do a normal search without hints.
- find_path(VulkanHeaders_INCLUDE_DIR NAMES vulkan/vulkan.h)
- get_filename_component(VULKAN_REGISTRY_PATH_HINT ${VulkanHeaders_INCLUDE_DIR} DIRECTORY)
- find_path(VulkanRegistry_DIR NAMES vk.xml HINTS ${VULKAN_REGISTRY_PATH_HINT})
-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)
-set(FPHSA_NAME_MISMATCHED TRUE)
-find_package_handle_standard_args(VulkanRegistry
- DEFAULT_MSG
- VulkanRegistry_DIR)
-unset(FPHSA_NAME_MISMATCHED)
-
-mark_as_advanced(VulkanHeaders_INCLUDE_DIR VulkanRegistry_DIR)
diff --git a/cube/CMakeLists.txt b/cube/CMakeLists.txt
index 48805b3e..9db7d5ba 100644
--- a/cube/CMakeLists.txt
+++ b/cube/CMakeLists.txt
@@ -15,7 +15,7 @@
# limitations under the License.
# ~~~
-set(CUBE_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}/.. ${VulkanHeaders_INCLUDE_DIR})
+set(CUBE_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}/..)
set(SCRIPTS_DIR "${PROJECT_SOURCE_DIR}/scripts")
diff --git a/icd/CMakeLists.txt b/icd/CMakeLists.txt
index 5daa9ab8..ded0baaf 100644
--- a/icd/CMakeLists.txt
+++ b/icd/CMakeLists.txt
@@ -110,6 +110,7 @@ if(WIN32)
VERBATIM)
set_target_properties(copy-${target}-def-file PROPERTIES FOLDER ${TOOLS_HELPER_FOLDER})
add_library(VkICD_${target} SHARED ${ARGN} VkICD_${target}.def)
+ target_link_libraries(VkICD_${target} PRIVATE Vulkan::Headers)
if(INSTALL_ICD)
install(TARGETS VkICD_${target} DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif()
@@ -117,6 +118,7 @@ if(WIN32)
elseif(APPLE)
macro(add_vk_icd target)
add_library(VkICD_${target} SHARED ${ARGN})
+ target_link_libraries(VkICD_${target} PRIVATE Vulkan::Headers)
set_target_properties(VkICD_${target} PROPERTIES LINK_FLAGS "-Wl")
if(INSTALL_ICD)
install(TARGETS VkICD_${target} DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
@@ -125,6 +127,7 @@ elseif(APPLE)
else()
macro(add_vk_icd target)
add_library(VkICD_${target} SHARED ${ARGN})
+ target_link_libraries(VkICD_${target} PRIVATE Vulkan::Headers)
set_target_properties(VkICD_${target} PROPERTIES LINK_FLAGS "-Wl,-export-dynamic,-Bsymbolic,--exclude-libs,ALL")
if((UNIX AND NOT APPLE) AND INSTALL_ICD) # i.e. Linux
install(TARGETS VkICD_${target} DESTINATION ${CMAKE_INSTALL_LIBDIR})
@@ -133,7 +136,6 @@ else()
endif()
include_directories(${CMAKE_CURRENT_SOURCE_DIR}
- ${VulkanHeaders_INCLUDE_DIR}
${WAYLAND_CLIENT_INCLUDE_DIR}
${CMAKE_CURRENT_BINARY_DIR}
${PROJECT_BINARY_DIR}
diff --git a/vulkaninfo/CMakeLists.txt b/vulkaninfo/CMakeLists.txt
index 47a15a9e..84eea956 100644
--- a/vulkaninfo/CMakeLists.txt
+++ b/vulkaninfo/CMakeLists.txt
@@ -99,11 +99,11 @@ 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 ${VulkanHeaders_INCLUDE_DIR})
-else()
- target_include_directories(vulkaninfo PRIVATE ${VulkanHeaders_INCLUDE_DIR})
+ target_include_directories(vulkaninfo PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/macOS/vulkaninfo)
endif()
+target_link_libraries(vulkaninfo Vulkan::Headers)
+
# Create vulkaninfo application bundle for MacOS
if(APPLE)
include(${CMAKE_CURRENT_SOURCE_DIR}/macOS/vulkaninfo.cmake)
diff --git a/vulkaninfo/macOS/vulkaninfo.cmake b/vulkaninfo/macOS/vulkaninfo.cmake
index 9614530e..97830d0e 100644
--- a/vulkaninfo/macOS/vulkaninfo.cmake
+++ b/vulkaninfo/macOS/vulkaninfo.cmake
@@ -34,8 +34,8 @@ set_target_properties(vulkaninfo-bundle
MACOSX_BUNDLE_INFO_PLIST
${CMAKE_CURRENT_SOURCE_DIR}/macOS/Info.plist)
# 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} ${CMAKE_CURRENT_SOURCE_DIR}/macOS/vulkaninfo ${CMAKE_CURRENT_SOURCE_DIR}/generated ${CMAKE_BINARY_DIR}/vulkaninfo ${VulkanHeaders_INCLUDE_DIR})
+target_link_libraries(vulkaninfo-bundle ${Vulkan_LIBRARY} "-framework AppKit -framework QuartzCore" Vulkan::Headers)
+target_include_directories(vulkaninfo-bundle PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/macOS/vulkaninfo ${CMAKE_CURRENT_SOURCE_DIR}/generated ${CMAKE_BINARY_DIR}/vulkaninfo)
add_dependencies(vulkaninfo-bundle MoltenVK_icd-staging-json)
set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/macOS/vulkaninfo.sh PROPERTIES MACOSX_PACKAGE_LOCATION "MacOS")