diff options
author | John Kessenich <johnkslang@users.noreply.github.com> | 2019-06-08 02:01:20 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-06-08 02:01:20 -0600 |
commit | 9242862c84fe295ca0c9d26b36a6a891bb3ed6a7 (patch) | |
tree | fef4d9ca9de2c4bd889c99fb21e35d7f661ed8d5 | |
parent | a7741727e25171acee151396691672dc88e6d85e (diff) | |
parent | ed8674d2287705699a4720a5482adb9816acc413 (diff) | |
download | spirv-headers-9242862c84fe295ca0c9d26b36a6a891bb3ed6a7.tar.gz |
Merge pull request #105 from mchiasson/cmake_install_config
cmake development configuration package
-rw-r--r-- | CMakeLists.txt | 67 | ||||
-rw-r--r-- | cmake/Config.cmake.in | 4 |
2 files changed, 61 insertions, 10 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 167a3e7..5fd0196 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,8 +28,8 @@ # The SPIR-V headers from the SPIR-V Registry # https://www.khronos.org/registry/spir-v/ # -cmake_minimum_required(VERSION 2.8.11) -project(SPIRV-Headers) +cmake_minimum_required(VERSION 3.0) +project(SPIRV-Headers VERSION 1.4.1) # There are two ways to use this project. # @@ -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,58 @@ 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> +) + +# Installation + +set(config_install_dir "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}") + +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}" + 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}" +) + diff --git a/cmake/Config.cmake.in b/cmake/Config.cmake.in new file mode 100644 index 0000000..38bbde7 --- /dev/null +++ b/cmake/Config.cmake.in @@ -0,0 +1,4 @@ +@PACKAGE_INIT@ + +include("${CMAKE_CURRENT_LIST_DIR}/@TARGETS_EXPORT_NAME@.cmake") +check_required_components("@PROJECT_NAME@") |