# ~~~ # 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)