Skip to content

Commit 5b21f14

Browse files
authored
Merge pull request KhronosGroup#330 from dneto0/revert-cmake-changes
Revert "Merge pull request KhronosGroup#326 from juan-lunarg/juaramos/cmake"
2 parents a41cf67 + e0087ad commit 5b21f14

File tree

9 files changed

+112
-199
lines changed

9 files changed

+112
-199
lines changed

.github/workflows/presubmit.yml

Lines changed: 1 addition & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ jobs:
99
matrix:
1010
os: [ubuntu-latest, macos-latest, windows-latest]
1111
steps:
12-
- uses: actions/checkout@v3
12+
- uses: actions/checkout@v2
1313
- name: Install Ubuntu packages
1414
if: matrix.os == 'ubuntu-latest'
1515
run: sudo apt install -y dos2unix
@@ -35,86 +35,3 @@ jobs:
3535
./bin/makeHeaders
3636
- name: Check generated headers
3737
run: git diff --exit-code
38-
39-
test_cmake_min_required:
40-
runs-on: ubuntu-latest
41-
steps:
42-
- uses: actions/checkout@v3
43-
- uses: lukka/get-cmake@latest
44-
with:
45-
cmakeVersion: 3.14.0
46-
- name: CMake build
47-
run: |
48-
cmake -S . -B build/ -D CMAKE_BUILD_TYPE=Debug -G "Ninja" -D CMAKE_INSTALL_PREFIX=${GITHUB_WORKSPACE}/build/install/
49-
cmake --build build --target install
50-
51-
test_cmake_latest:
52-
runs-on: ubuntu-latest
53-
steps:
54-
- uses: actions/checkout@v3
55-
- uses: lukka/get-cmake@latest
56-
- name: CMake build
57-
run: |
58-
cmake -S . -B build/ -D CMAKE_BUILD_TYPE=Debug -G "Ninja"
59-
cmake --install build/ --prefix build/install
60-
61-
add_subdirectory:
62-
runs-on: ubuntu-latest
63-
steps:
64-
- uses: actions/checkout@v3
65-
- uses: lukka/get-cmake@latest
66-
with:
67-
cmakeVersion: 3.15.0
68-
- name: Build spirv-headers with testing enabled
69-
run: |
70-
cmake -S . -B build/ -D BUILD_TESTS=ON -D CMAKE_BUILD_TYPE=Debug -G "Ninja"
71-
cmake --build build
72-
73-
find_package:
74-
runs-on: ubuntu-latest
75-
steps:
76-
- uses: actions/checkout@v3
77-
- uses: lukka/get-cmake@latest
78-
with:
79-
cmakeVersion: 3.15.0
80-
- name: Install spirv-headers
81-
run: |
82-
cmake -S . -B build/
83-
cmake --install build/ --prefix build/install
84-
- name: Check spirv-headers find_package support
85-
run: |
86-
cmake -S tests/find_package -B tests/find_package/build/ -D CMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/build/install
87-
cmake --build tests/find_package/build/
88-
89-
find_pkg_config:
90-
runs-on: ubuntu-latest
91-
steps:
92-
- uses: actions/checkout@v3
93-
- uses: lukka/get-cmake@latest
94-
with:
95-
cmakeVersion: 3.15.0
96-
- name: Install spirv-headers
97-
run: |
98-
cmake -S . -B build/ -D CMAKE_INSTALL_PREFIX=${GITHUB_WORKSPACE}/build/install/
99-
cmake --install build/
100-
- name: Check spirv-headers pkg_config support
101-
run: |
102-
cmake -S tests/pkg_config -B tests/pkg_config/build/ -D CMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/build/install
103-
cmake --build tests/pkg_config/build/
104-
105-
# https://github.com/KhronosGroup/SPIRV-Headers/issues/282
106-
find_pkg_config_absolute:
107-
runs-on: ubuntu-latest
108-
steps:
109-
- uses: actions/checkout@v3
110-
- uses: lukka/get-cmake@latest
111-
with:
112-
cmakeVersion: 3.15.0
113-
- name: Install spirv-headers with CMAKE_INSTALL_INCLUDEDIR being absolute
114-
run: |
115-
cmake -S . -B build/ -D CMAKE_INSTALL_INCLUDEDIR=${GITHUB_WORKSPACE}/build/install/include -D CMAKE_INSTALL_PREFIX=${GITHUB_WORKSPACE}/build/install/
116-
cmake --install build/
117-
- name: Check spirv-headers pkg_config support
118-
run: |
119-
cmake -S tests/pkg_config -B tests/pkg_config/build/ -D CMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/build/install
120-
cmake --build tests/pkg_config/build/

CMakeLists.txt

Lines changed: 101 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Copyright (c) 2015-2023 The Khronos Group Inc.
1+
# Copyright (c) 2015-2016 The Khronos Group Inc.
22
#
33
# Permission is hereby granted, free of charge, to any person obtaining a
44
# copy of this software and/or associated documentation files (the
@@ -23,43 +23,115 @@
2323
# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
2424
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
2525
# 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)
2826

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)
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)
3255
endif()
3356

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>)
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()
3764

38-
if (PROJECT_IS_TOP_LEVEL)
39-
option(BUILD_TESTS "Build the tests")
40-
if (BUILD_TESTS)
41-
add_subdirectory(tests)
42-
endif()
65+
if (SPIRV_HEADERS_ENABLE_EXAMPLES)
66+
message(STATUS "Building SPIRV-Header examples")
67+
add_subdirectory(example)
68+
endif()
4369

44-
include(GNUInstallDirs)
45-
include(CMakePackageConfigHelpers)
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
4677

47-
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/spirv DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
78+
if (SPIRV_HEADERS_ENABLE_INSTALL)
79+
message(STATUS "Installing SPIRV-Header")
4880

49-
set(cmake_install_dir "${CMAKE_INSTALL_DATADIR}/cmake/SPIRV-Headers")
50-
set(version_config "${CMAKE_CURRENT_BINARY_DIR}/generated/SPIRV-HeadersConfigVersion.cmake")
81+
set(config_install_dir "${CMAKE_INSTALL_DATADIR}/cmake/${PROJECT_NAME}")
5182

52-
write_basic_package_version_file("${version_config}" COMPATIBILITY SameMajorVersion ARCH_INDEPENDENT)
53-
install(FILES "${version_config}" DESTINATION "${cmake_install_dir}")
83+
set(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated")
5484

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}")
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}::")
5789

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})
90+
include(CMakePackageConfigHelpers)
91+
92+
if (NOT CMAKE_VERSION VERSION_LESS 3.14)
93+
set(arch_independent_str ARCH_INDEPENDENT)
6294
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)
95+
write_basic_package_version_file(
96+
"${version_config}"
97+
COMPATIBILITY SameMajorVersion
98+
${arch_independent_str}
99+
)
100+
101+
configure_package_config_file(
102+
"cmake/Config.cmake.in"
103+
"${project_config}"
104+
INSTALL_DESTINATION "${config_install_dir}"
105+
)
106+
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+
)
115+
116+
install(
117+
DIRECTORY include/spirv
118+
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
119+
)
120+
121+
install(
122+
FILES "${project_config}" "${version_config}"
123+
DESTINATION "${config_install_dir}"
124+
)
125+
126+
install(
127+
EXPORT "${TARGETS_EXPORT_NAME}"
128+
NAMESPACE "${namespace}"
129+
DESTINATION "${config_install_dir}"
130+
)
131+
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+
)
65137
endif()

cmake/SPIRV-Headers.pc.in renamed to SPIRV-Headers.pc.in

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
includedir=@SPIRV_HEADERS_PKGCONFIG_INCLUDE_DIR@
1+
prefix=@CMAKE_INSTALL_PREFIX@
2+
includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
23

34
Name: SPIRV-Headers
45
Description: Header files from the SPIR-V registry

cmake/Config.cmake.in

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
@PACKAGE_INIT@
2+
3+
include("${CMAKE_CURRENT_LIST_DIR}/@[email protected]")
4+
check_required_components("@PROJECT_NAME@")

example/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
add_library(SPIRV-Headers-example
2+
${CMAKE_CURRENT_SOURCE_DIR}/example.cpp)
3+
target_include_directories(SPIRV-Headers-example
4+
PRIVATE ${SPIRV-Headers_SOURCE_DIR}/include)
File renamed without changes.

tests/CMakeLists.txt

Lines changed: 0 additions & 39 deletions
This file was deleted.

tests/find_package/CMakeLists.txt

Lines changed: 0 additions & 23 deletions
This file was deleted.

tests/pkg_config/CMakeLists.txt

Lines changed: 0 additions & 23 deletions
This file was deleted.

0 commit comments

Comments
 (0)