| # ~~~ |
| # Copyright 2022-2023 The Khronos Group Inc. |
| # Copyright 2022-2023 Valve Corporation |
| # Copyright 2022-2023 LunarG, Inc. |
| # |
| # SPDX-License-Identifier: Apache-2.0 |
| # ~~~ |
| cmake_minimum_required(VERSION 3.14.2) |
| |
| project(API LANGUAGES C) |
| |
| if (FIND_PACKAGE_TESTING) |
| find_package(VulkanHeaders REQUIRED CONFIG) |
| else() |
| add_subdirectory(../../ ${CMAKE_CURRENT_BINARY_DIR}/headers) |
| endif() |
| |
| if (NOT TARGET Vulkan::Headers) |
| message(FATAL_ERROR "Vulkan::Headers target not defined") |
| endif() |
| |
| if (FIND_PACKAGE_TESTING) |
| if (NOT DEFINED VulkanHeaders_VERSION) |
| message(FATAL_ERROR "VulkanHeaders_VERSION not defined!") |
| endif() |
| message(STATUS "VulkanHeaders_VERSION = ${VulkanHeaders_VERSION}") |
| endif() |
| |
| if (NOT FIND_PACKAGE_TESTING) |
| # Consuming vulkan-headers via add_subdirectory should NOT add installation code to the parent CMake project. |
| if (DEFINED CMAKE_INSTALL_INCLUDEDIR) |
| message(FATAL_ERROR "CMAKE_INSTALL_INCLUDEDIR was defined!") |
| endif() |
| |
| # NOTE: Some users may not be using the namespace target. |
| # Don't accidentally break them unless we have to. |
| if (NOT TARGET Vulkan-Headers) |
| message(FATAL_ERROR "Backcompat for Vulkan-Headers target broken!") |
| endif() |
| endif() |
| |
| set(CMAKE_C_STANDARD 99) |
| set(CMAKE_C_STANDARD_REQUIRED ON) |
| set(CMAKE_C_EXTENSIONS OFF) |
| |
| if(${CMAKE_C_COMPILER_ID} MATCHES "(GNU|Clang)") |
| add_compile_options( |
| -Wpedantic |
| -Wall |
| -Wextra |
| -Werror |
| ) |
| endif() |
| |
| if (MSVC) |
| add_compile_options( |
| /W4 |
| /permissive- |
| /WX |
| ) |
| endif() |
| |
| # Test the non-API headers provided by this repo |
| # NOTE: For us testing just means that these header files compile |
| # with reasonable warnings. |
| |
| # vk_icd.h |
| add_library(vk_icd MODULE ../vk_icd.c) |
| target_link_libraries(vk_icd PRIVATE Vulkan::Headers) |
| |
| # vk_layer.h |
| add_library(vk_layer MODULE ../vk_layer.c) |
| target_link_libraries(vk_layer PRIVATE Vulkan::Headers) |