|
1 |
| -# Copyright (c) 2015-2016 The Khronos Group Inc. |
| 1 | +# Copyright (c) 2015-2023 The Khronos Group Inc. |
2 | 2 | #
|
3 | 3 | # Permission is hereby granted, free of charge, to any person obtaining a
|
4 | 4 | # copy of this software and/or associated documentation files (the
|
|
23 | 23 | # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
24 | 24 | # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
25 | 25 | # MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
| 26 | +cmake_minimum_required(VERSION 3.14) |
| 27 | +project(SPIRV-Headers LANGUAGES CXX VERSION 1.5.5) |
26 | 28 |
|
27 |
| -# |
28 |
| -# The SPIR-V headers from the SPIR-V Registry |
29 |
| -# https://www.khronos.org/registry/spir-v/ |
30 |
| -# |
31 |
| -cmake_minimum_required(VERSION 3.0) |
32 |
| -project(SPIRV-Headers VERSION 1.5.5) |
33 |
| - |
34 |
| -# There are two ways to use this project. |
35 |
| -# |
36 |
| -# Using this source tree directly from a CMake-based project: |
37 |
| -# 1. Add an add_subdirectory directive to include this sub directory. |
38 |
| -# 2. Use ${SPIRV-Headers_SOURCE_DIR}/include} in a target_include_directories |
39 |
| -# command. |
40 |
| -# |
41 |
| -# Installing the headers first, then using them with an implicit include |
42 |
| -# directory. To install the headers: |
43 |
| -# 1. mkdir build ; cd build |
44 |
| -# 2. cmake .. |
45 |
| -# 3. cmake --build . --target install |
46 |
| - |
47 |
| -option(SPIRV_HEADERS_SKIP_EXAMPLES "Skip building examples" |
48 |
| - ${SPIRV_HEADERS_SKIP_EXAMPLES}) |
49 |
| - |
50 |
| -option(SPIRV_HEADERS_SKIP_INSTALL "Skip install" |
51 |
| - ${SPIRV_HEADERS_SKIP_INSTALL}) |
52 |
| - |
53 |
| -if(NOT ${SPIRV_HEADERS_SKIP_EXAMPLES}) |
54 |
| - set(SPIRV_HEADERS_ENABLE_EXAMPLES ON) |
| 29 | +if (CMAKE_VERSION VERSION_LESS "3.21") |
| 30 | + # https://cmake.org/cmake/help/latest/variable/PROJECT_IS_TOP_LEVEL.html |
| 31 | + string(COMPARE EQUAL ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_SOURCE_DIR} PROJECT_IS_TOP_LEVEL) |
55 | 32 | endif()
|
56 | 33 |
|
57 |
| -if(NOT ${SPIRV_HEADERS_SKIP_INSTALL}) |
58 |
| - set(SPIRV_HEADERS_ENABLE_INSTALL ON) |
59 |
| - # legacy |
60 |
| - add_custom_target(install-headers |
61 |
| - COMMAND cmake -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/include/spirv |
62 |
| - $ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/include/spirv) |
63 |
| -endif() |
64 |
| - |
65 |
| -if (SPIRV_HEADERS_ENABLE_EXAMPLES) |
66 |
| - message(STATUS "Building SPIRV-Header examples") |
67 |
| - add_subdirectory(example) |
68 |
| -endif() |
| 34 | +add_library(SPIRV-Headers INTERFACE) |
| 35 | +add_library(SPIRV-Headers::SPIRV-Headers ALIAS SPIRV-Headers) |
| 36 | +target_include_directories(SPIRV-Headers INTERFACE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>) |
69 | 37 |
|
70 |
| -include(GNUInstallDirs) |
71 |
| -add_library(${PROJECT_NAME} INTERFACE) |
72 |
| -target_include_directories(${PROJECT_NAME} INTERFACE |
73 |
| - $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> |
74 |
| -) |
75 |
| - |
76 |
| -# Installation |
77 |
| - |
78 |
| -if (SPIRV_HEADERS_ENABLE_INSTALL) |
79 |
| - message(STATUS "Installing SPIRV-Header") |
80 |
| - |
81 |
| - set(config_install_dir "${CMAKE_INSTALL_DATADIR}/cmake/${PROJECT_NAME}") |
82 |
| - |
83 |
| - set(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated") |
84 |
| - |
85 |
| - set(version_config "${generated_dir}/${PROJECT_NAME}ConfigVersion.cmake") |
86 |
| - set(project_config "${generated_dir}/${PROJECT_NAME}Config.cmake") |
87 |
| - set(TARGETS_EXPORT_NAME "${PROJECT_NAME}Targets") |
88 |
| - set(namespace "${PROJECT_NAME}::") |
89 |
| - |
90 |
| - include(CMakePackageConfigHelpers) |
91 |
| - |
92 |
| - if (NOT CMAKE_VERSION VERSION_LESS 3.14) |
93 |
| - set(arch_independent_str ARCH_INDEPENDENT) |
| 38 | +if (PROJECT_IS_TOP_LEVEL) |
| 39 | + option(BUILD_TESTS "Build the tests") |
| 40 | + if (BUILD_TESTS) |
| 41 | + add_subdirectory(tests) |
94 | 42 | endif()
|
95 |
| - write_basic_package_version_file( |
96 |
| - "${version_config}" |
97 |
| - COMPATIBILITY SameMajorVersion |
98 |
| - ${arch_independent_str} |
99 |
| - ) |
100 | 43 |
|
101 |
| - configure_package_config_file( |
102 |
| - "cmake/Config.cmake.in" |
103 |
| - "${project_config}" |
104 |
| - INSTALL_DESTINATION "${config_install_dir}" |
105 |
| - ) |
| 44 | + include(GNUInstallDirs) |
| 45 | + include(CMakePackageConfigHelpers) |
106 | 46 |
|
107 |
| - install( |
108 |
| - TARGETS ${PROJECT_NAME} |
109 |
| - EXPORT "${TARGETS_EXPORT_NAME}" |
110 |
| - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} |
111 |
| - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} |
112 |
| - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} |
113 |
| - INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} |
114 |
| - ) |
| 47 | + install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/spirv DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) |
115 | 48 |
|
116 |
| - install( |
117 |
| - DIRECTORY include/spirv |
118 |
| - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} |
119 |
| - ) |
| 49 | + set(cmake_install_dir "${CMAKE_INSTALL_DATADIR}/cmake/SPIRV-Headers") |
| 50 | + set(version_config "${CMAKE_CURRENT_BINARY_DIR}/generated/SPIRV-HeadersConfigVersion.cmake") |
120 | 51 |
|
121 |
| - install( |
122 |
| - FILES "${project_config}" "${version_config}" |
123 |
| - DESTINATION "${config_install_dir}" |
124 |
| - ) |
| 52 | + write_basic_package_version_file("${version_config}" COMPATIBILITY SameMajorVersion ARCH_INDEPENDENT) |
| 53 | + install(FILES "${version_config}" DESTINATION "${cmake_install_dir}") |
125 | 54 |
|
126 |
| - install( |
127 |
| - EXPORT "${TARGETS_EXPORT_NAME}" |
128 |
| - NAMESPACE "${namespace}" |
129 |
| - DESTINATION "${config_install_dir}" |
130 |
| - ) |
| 55 | + install(TARGETS SPIRV-Headers EXPORT "SPIRV-HeadersConfig" INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) |
| 56 | + install(EXPORT "SPIRV-HeadersConfig" NAMESPACE "SPIRV-Headers::" DESTINATION "${cmake_install_dir}") |
131 | 57 |
|
132 |
| - configure_file(${CMAKE_CURRENT_SOURCE_DIR}/SPIRV-Headers.pc.in ${CMAKE_BINARY_DIR}/SPIRV-Headers.pc @ONLY) |
133 |
| - install( |
134 |
| - FILES "${CMAKE_BINARY_DIR}/SPIRV-Headers.pc" |
135 |
| - DESTINATION ${CMAKE_INSTALL_DATADIR}/pkgconfig |
136 |
| - ) |
| 58 | + if (IS_ABSOLUTE ${CMAKE_INSTALL_INCLUDEDIR}) |
| 59 | + set(SPIRV_HEADERS_PKGCONFIG_INCLUDE_DIR ${CMAKE_INSTALL_INCLUDEDIR}) |
| 60 | + else() |
| 61 | + set(SPIRV_HEADERS_PKGCONFIG_INCLUDE_DIR ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}) |
| 62 | + endif() |
| 63 | + configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/SPIRV-Headers.pc.in ${CMAKE_CURRENT_BINARY_DIR}/SPIRV-Headers.pc @ONLY) |
| 64 | + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/SPIRV-Headers.pc" DESTINATION ${CMAKE_INSTALL_DATADIR}/pkgconfig) |
137 | 65 | endif()
|
0 commit comments