summaryrefslogtreecommitdiffhomepage
path: root/tests/integration/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'tests/integration/CMakeLists.txt')
-rw-r--r--tests/integration/CMakeLists.txt73
1 files changed, 73 insertions, 0 deletions
diff --git a/tests/integration/CMakeLists.txt b/tests/integration/CMakeLists.txt
new file mode 100644
index 0000000..6a3388e
--- /dev/null
+++ b/tests/integration/CMakeLists.txt
@@ -0,0 +1,73 @@
+# ~~~
+# 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)