Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/KhronosGroup/SPIRV-Headers.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMathieu-Andre Chiasson <mchiasson@gmail.com>2019-05-11 22:49:18 +0300
committerMathieu-Andre Chiasson <mchiasson@gmail.com>2019-05-11 23:24:44 +0300
commitc5a291f7a5c35a878c4a1cd37db7b85eef1c6f71 (patch)
tree12f20ce84afe0feb085cae97e3984d354ab05bd0 /CMakeLists.txt
parent30ebd2f19c8d1e604bdeb3cbf9a16adf4c6df325 (diff)
cmake development configuration package
Fixes #104
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt65
1 files changed, 57 insertions, 8 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 167a3e7..65e102b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -44,14 +44,6 @@ project(SPIRV-Headers)
# 2. cmake ..
# 3. cmake --build . --target install
-file(GLOB_RECURSE HEADER_FILES
- RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
- include/spirv/*)
-foreach(HEADER_FILE ${HEADER_FILES})
- get_filename_component(HEADER_INSTALL_DIR ${HEADER_FILE} PATH)
- install(FILES ${HEADER_FILE} DESTINATION ${HEADER_INSTALL_DIR})
-endforeach()
-
# legacy
add_custom_target(install-headers
COMMAND cmake -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/include/spirv
@@ -66,3 +58,60 @@ if (SPIRV_HEADERS_ENABLE_EXAMPLES)
message(STATUS "Building SPIRV-Header examples")
add_subdirectory(example)
endif()
+
+include(GNUInstallDirs)
+add_library(${PROJECT_NAME} INTERFACE)
+target_include_directories(${PROJECT_NAME} INTERFACE
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
+)
+
+# Installation
+
+set(config_install_dir "${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/cmake")
+
+set(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated")
+
+set(version_config "${generated_dir}/${PROJECT_NAME}ConfigVersion.cmake")
+set(project_config "${generated_dir}/${PROJECT_NAME}Config.cmake")
+set(TARGETS_EXPORT_NAME "${PROJECT_NAME}Targets")
+set(namespace "${PROJECT_NAME}::")
+
+include(CMakePackageConfigHelpers)
+write_basic_package_version_file(
+ "${version_config}"
+ VERSION "1.4.1"
+ COMPATIBILITY SameMajorVersion
+)
+
+configure_package_config_file(
+ "cmake/Config.cmake.in"
+ "${project_config}"
+ INSTALL_DESTINATION "${config_install_dir}"
+)
+
+install(
+ TARGETS ${PROJECT_NAME}
+ EXPORT "${TARGETS_EXPORT_NAME}"
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+ INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
+)
+
+install(
+ DIRECTORY include/spirv
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
+)
+
+install(
+ FILES "${project_config}" "${version_config}"
+ DESTINATION "${config_install_dir}"
+)
+
+install(
+ EXPORT "${TARGETS_EXPORT_NAME}"
+ NAMESPACE "${namespace}"
+ DESTINATION "${config_install_dir}"
+)
+