# NONE = this project has no language toolchain requirement.
project(Vulkan-Headers NONE)
-file(READ "include/vulkan/vulkan_core.h" ver)
-string(REGEX MATCH "#define[ ]+VK_HEADER_VERSION_COMPLETE[ ]+VK_MAKE_VERSION\\([ ]*([0-9]+),[ ]*([0-9]+),[ ]*VK_HEADER_VERSION[ ]*\\)" _ ${ver})
-set(VK_VERSION_MAJOR "${CMAKE_MATCH_1}")
-set(VK_VERSION_MINOR "${CMAKE_MATCH_2}")
-string(REGEX MATCH "#define[ ]+VK_HEADER_VERSION[ ]+([0-9]+)" _ ${ver})
-set(VK_HEADER_VERSION "${CMAKE_MATCH_1}")
-# check if version parsing was successful
-if(VK_VERSION_MAJOR STREQUAL "")
- message(FATAL_ERROR "Error reading major version from 'include/vulkan/vulkan_core.h'")
-endif()
-if(VK_VERSION_MINOR STREQUAL "")
- message(FATAL_ERROR "Error reading minor version from 'include/vulkan/vulkan_core.h'")
-endif()
-if(VK_HEADER_VERSION STREQUAL "")
- message(FATAL_ERROR "Error reading header version from 'include/vulkan/vulkan_core.h'")
-endif()
-set(VK_VERSION_STRING "${VK_VERSION_MAJOR}.${VK_VERSION_MINOR}.${VK_HEADER_VERSION}")
-message(STATUS "Found Vulkan-Headers VK_VERSION_STRING '${VK_VERSION_STRING}'")
-
-option(VULKAN_HEADERS_SKIP_INSTALL "Skip install" OFF)
# User-interface declarations ----------------------------------------------------------------------------------------------------
# This section contains variables that affect development GUIs (e.g. CMake GUI and IDEs), such as option(), folders, and variables
# define exported targets for nested project builds to consume
add_library(Vulkan-Headers INTERFACE)
-target_include_directories(Vulkan-Headers INTERFACE
- $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
- $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
-)
+target_include_directories(Vulkan-Headers INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/include")
add_library(Vulkan::Headers ALIAS Vulkan-Headers)
add_library(Vulkan-Registry INTERFACE)
-target_include_directories(Vulkan-Registry INTERFACE
- $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/registry>
- $<INSTALL_INTERFACE:${CMAKE_INSTALL_DATADIR}/vulkan>
-)
+target_include_directories(Vulkan-Registry INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/registry")
add_library(Vulkan::Registry ALIAS Vulkan-Registry)
-# Installation
-# This adds the following files to the install target
-# - Vulkan Header files
-# - Vulkan Registry files
-# - CMake config files generated by CMake
-# - VulkanHeadersConfig.cmake: searched for by find_package(VulkanHeaders)
-# - VulkanHeadersConfigVersion.cmake: provides version numbers
-# - VulkanHeadersTargets.cmake: CMake target definitions used by config file
-if(NOT VULKAN_HEADERS_SKIP_INSTALL)
- set(config_install_dir "${CMAKE_INSTALL_DATADIR}/cmake/VulkanHeaders")
- set(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated")
- set(version_config "${generated_dir}/VulkanHeadersConfigVersion.cmake")
- set(project_config "${generated_dir}/VulkanHeadersConfig.cmake")
- set(TARGETS_EXPORT_NAME "VulkanHeadersTargets")
- set(namespace "Vulkan::")
-
- include(CMakePackageConfigHelpers)
- write_basic_package_version_file(
- "${version_config}"
- VERSION ${VK_VERSION_STRING}
- COMPATIBILITY AnyNewerVersion
- )
- configure_package_config_file(
- "cmake/Config.cmake.in"
- "${project_config}"
- INSTALL_DESTINATION "${config_install_dir}"
- )
- install(
- TARGETS Vulkan-Headers Vulkan-Registry
- EXPORT "${TARGETS_EXPORT_NAME}"
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
- )
- install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include/vulkan"
- DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
- )
- install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/registry"
- DESTINATION ${CMAKE_INSTALL_DATADIR}/vulkan
- )
- install(FILES "${project_config}" "${version_config}"
- DESTINATION "${config_install_dir}"
- )
- install(
- EXPORT "${TARGETS_EXPORT_NAME}"
- NAMESPACE "${namespace}"
- DESTINATION "${config_install_dir}")
+install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include/vulkan" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
+install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/registry" DESTINATION ${CMAKE_INSTALL_DATADIR}/vulkan)
- # uninstall target
- if(NOT TARGET uninstall)
- configure_file(
- "${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in"
- "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
- IMMEDIATE
- @ONLY)
- add_custom_target(uninstall COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
- endif()
+# uninstall target
+if(NOT TARGET uninstall)
+ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in"
+ "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
+ IMMEDIATE
+ @ONLY)
+ add_custom_target(uninstall COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
endif()