diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/CMakeLists.txt | 63 | ||||
-rw-r--r-- | tests/add_subdirectory/CMakeLists.txt | 30 | ||||
-rw-r--r-- | tests/find_package/CMakeLists.txt | 30 | ||||
-rw-r--r-- | tests/integration/CMakeLists.txt | 73 |
4 files changed, 100 insertions, 96 deletions
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 8af9447..93e8078 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -6,41 +6,32 @@ # SPDX-License-Identifier: Apache-2.0 # ~~~ -# Test the non-API headers provided by this repo -# NOTE: For us testing just means that these header files compile -# with reasonable warnings. - -message(STATUS "${PROJECT_NAME} = ${PROJECT_VERSION}") - -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 - ) +if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.24") + set(fresh "--fresh") endif() -# 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) - -if (NOT TARGET Vulkan-Headers) - message(FATAL_ERROR "Backcompat for Vulkan-Headers target broken!") -endif() +# Test add_subdirectory suppport +add_test(NAME integration.add_subdirectory + COMMAND ${CMAKE_CTEST_COMMAND} + --build-and-test ${CMAKE_CURRENT_LIST_DIR}/integration + ${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory + --build-generator ${CMAKE_GENERATOR} + --build-options -DFIND_PACKAGE_TESTING=OFF "${fresh}" +) + +set(test_install_dir "${CMAKE_CURRENT_BINARY_DIR}/install") +add_test(NAME integration.install + COMMAND ${CMAKE_COMMAND} --install ${VULKAN_HEADERS_BINARY_DIR} --prefix ${test_install_dir} +) + +# Test find_package suppport +add_test(NAME integration.find_package + COMMAND ${CMAKE_CTEST_COMMAND} + --build-and-test ${CMAKE_CURRENT_LIST_DIR}/integration + ${CMAKE_CURRENT_BINARY_DIR}/find_package + --build-generator ${CMAKE_GENERATOR} + --build-options -DFIND_PACKAGE_TESTING=ON -DCMAKE_PREFIX_PATH=${test_install_dir} "${fresh}" +) + +# Installing comes before testing +set_tests_properties(integration.find_package PROPERTIES DEPENDS integration.install) diff --git a/tests/add_subdirectory/CMakeLists.txt b/tests/add_subdirectory/CMakeLists.txt deleted file mode 100644 index 286c36e..0000000 --- a/tests/add_subdirectory/CMakeLists.txt +++ /dev/null @@ -1,30 +0,0 @@ -# ~~~ -# 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(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() - -# 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() - -add_library(foobar STATIC) - -target_link_libraries(foobar PRIVATE Vulkan::Headers) - -target_sources(foobar PRIVATE - ../vk_icd.c - ../vk_layer.c -) diff --git a/tests/find_package/CMakeLists.txt b/tests/find_package/CMakeLists.txt deleted file mode 100644 index c1a9900..0000000 --- a/tests/find_package/CMakeLists.txt +++ /dev/null @@ -1,30 +0,0 @@ -# ~~~ -# 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(TEST_VULKAN_HEADERS_FIND_PACKAGE_SUPPORT LANGUAGES C) - -find_package(VulkanHeaders REQUIRED CONFIG) - -if (NOT TARGET Vulkan::Headers) - message(FATAL_ERROR "Vulkan::Headers target not defined") -endif() - -if (NOT DEFINED VulkanHeaders_VERSION) - message(FATAL_ERROR "VulkanHeaders_VERSION not defined!") -endif() -message(STATUS "VulkanHeaders_VERSION = ${VulkanHeaders_VERSION}") - -add_library(foobar STATIC) - -target_link_libraries(foobar PRIVATE Vulkan::Headers) - -target_sources(foobar PRIVATE - ../vk_icd.c - ../vk_layer.c -) 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) |