aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuan Ramos <juan@lunarg.com>2023-06-29 11:10:07 -0600
committerJuan Ramos <114601453+juan-lunarg@users.noreply.github.com>2023-06-30 09:56:11 -0600
commitad5f8ee9750e99c5397d44c075ae5d8a38271de4 (patch)
treec2d7f5f74dc61235d3546bc23c5224b1393296f1
parent60b89abf43a687e454f7ff6f6bfe642118e358e8 (diff)
downloadvulkan-headers-ad5f8ee9750e99c5397d44c075ae5d8a38271de4.tar.gz
cmake: Add VULKAN_HEADERS_INSTALL option
Allows add_subdirectory users to install vulkan-headers
-rw-r--r--.github/workflows/linux.yml19
-rw-r--r--CMakeLists.txt3
-rw-r--r--tests/add_subdirectory/CMakeLists.txt26
3 files changed, 45 insertions, 3 deletions
diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml
index 0160c3b..a15e439 100644
--- a/.github/workflows/linux.yml
+++ b/.github/workflows/linux.yml
@@ -19,6 +19,9 @@ on:
pull_request:
branches:
- main
+
+env:
+ CMAKE_GENERATOR: Ninja
permissions:
contents: read
@@ -32,7 +35,7 @@ jobs:
with:
cmakeVersion: 3.17.0
- name: Configure Vulkan-Headers
- run: cmake -S . -B build -G "Ninja"
+ run: cmake -S . -B build
- name: Install Vulkan-Headers
run: cmake --install build --prefix ${{ github.workspace }}/build/install
- name: Test Vulkan-Headers find_package support
@@ -46,7 +49,7 @@ jobs:
with:
cmakeVersion: 3.25.0
- name: Configure Vulkan-Headers
- run: cmake -S . -B build -D BUILD_TESTS=ON --log-level=DEBUG -G "Ninja"
+ run: cmake -S . -B build -D BUILD_TESTS=ON --log-level=DEBUG
- name: Build Vulkan-Headers Tests
run: cmake --build build
@@ -58,6 +61,16 @@ jobs:
with:
cmakeVersion: 3.15.0
- name: Configure Vulkan-Headers
- run: cmake -S . -B build/ -G "Ninja" --loglevel=DEBUG
+ run: cmake -S . -B build/ --loglevel=DEBUG
- name: Install Vulkan-Headers
run: cmake --install build/ --prefix build/install
+
+ ubuntu-cmake-add_subdirectory:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: lukka/get-cmake@latest
+ - name: Test add_subdirectory support
+ run: cmake -S tests/add_subdirectory -B tests/add_subdirectory/build
+ - name: Build
+ run: cmake --build tests/add_subdirectory/build
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 860acd8..3144c58 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -57,7 +57,10 @@ if (PROJECT_IS_TOP_LEVEL)
if (BUILD_TESTS)
add_subdirectory(tests)
endif()
+endif()
+option(VULKAN_HEADERS_INSTALL "Install Vulkan Headers" ${PROJECT_IS_TOP_LEVEL})
+if (VULKAN_HEADERS_INSTALL)
include(GNUInstallDirs)
include(CMakePackageConfigHelpers)
diff --git a/tests/add_subdirectory/CMakeLists.txt b/tests/add_subdirectory/CMakeLists.txt
new file mode 100644
index 0000000..74f2066
--- /dev/null
+++ b/tests/add_subdirectory/CMakeLists.txt
@@ -0,0 +1,26 @@
+cmake_minimum_required(VERSION 3.14.2)
+
+project(TEST_VULKAN_HEADERS_ADD_SUBDIRECTORY_SUPPORT LANGUAGES C)
+
+add_subdirectory(../../ ${CMAKE_CURRENT_BINARY_DIR}/headers)
+
+if (NOT TARGET Vulkan::Headers)
+ message(FATAL_ERROR "Vulkan::Headers target not defined")
+endif()
+
+# By default installation for a subproject should be disabled.
+# This makes it easier to consume for most projects.
+# Consuming the vulkan-headers via add_subdirectory and installing
+# them is the more niche use case.
+if (VULKAN_HEADERS_INSTALL)
+ message(FATAL_ERROR "VULKAN_HEADERS_INSTALL should be OFF!")
+endif()
+
+add_library(foobar STATIC)
+
+target_link_libraries(foobar PRIVATE Vulkan::Headers)
+
+target_sources(foobar PRIVATE
+ ../vk_icd.c
+ ../vk_layer.c
+)