diff options
author | Juan Ramos <[email protected]> | 2023-06-29 11:10:07 -0600 |
---|---|---|
committer | Juan Ramos <[email protected]> | 2023-06-30 09:56:11 -0600 |
commit | ad5f8ee9750e99c5397d44c075ae5d8a38271de4 (patch) | |
tree | c2d7f5f74dc61235d3546bc23c5224b1393296f1 | |
parent | 60b89abf43a687e454f7ff6f6bfe642118e358e8 (diff) | |
download | Vulkan-Headers-ad5f8ee9750e99c5397d44c075ae5d8a38271de4.tar.gz Vulkan-Headers-ad5f8ee9750e99c5397d44c075ae5d8a38271de4.zip |
cmake: Add VULKAN_HEADERS_INSTALL option
Allows add_subdirectory users to install vulkan-headers
-rw-r--r-- | .github/workflows/linux.yml | 19 | ||||
-rw-r--r-- | CMakeLists.txt | 3 | ||||
-rw-r--r-- | tests/add_subdirectory/CMakeLists.txt | 26 |
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 +) |