tests: Test Non-API headers

Ensures the non-API headers compile correctly
This commit is contained in:
Juan Ramos 2022-12-20 15:11:39 -07:00 committed by Juan Ramos
parent 1401f7a3b3
commit 43946b0feb
7 changed files with 84 additions and 2 deletions

View file

@ -23,7 +23,7 @@ on:
jobs:
# Configure/Install the headers.
# No need to build since it's a header only library.
ubuntu-latest:
ubuntu-cmake-install:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
@ -35,3 +35,17 @@ jobs:
run: cmake -S . -B build
- name: Install Vulkan-Headers
run: cmake --install build --prefix build/install
# Enable testing
ubuntu-cmake-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install build dependencies
run: |
sudo apt-get -qq update
sudo apt-get install -y cmake
- name: Configure Vulkan-Headers
run: cmake -S . -B build -D BUILD_TESTS=ON
- name: Build Vulkan-Headers Tests
run: cmake --build build

View file

@ -60,6 +60,11 @@ add_library(Vulkan::Registry ALIAS Vulkan-Registry)
string(COMPARE EQUAL ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_SOURCE_DIR} PROJECT_IS_TOP_LEVEL)
if (PROJECT_IS_TOP_LEVEL)
option(BUILD_TESTS "Build the tests" OFF)
if (BUILD_TESTS)
add_subdirectory(tests)
endif()
include(GNUInstallDirs)
include(CMakePackageConfigHelpers)

View file

@ -21,7 +21,7 @@ Files in this repository originate from:
* BUILD.gn
* BUILD.md
* CMakeLists.txt
* cmake/*
* tests/*
* CODE_OF_CONDUCT.md
* INTEGRATION.md
* LICENSE.txt

44
tests/CMakeLists.txt Normal file
View file

@ -0,0 +1,44 @@
# ~~~
# Copyright (c) 2022 LunarG, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ~~~
# Test the non-API headers provided by this repo
# NOTE: For us testing just means that these header files compile
# with reasonable warnings.
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()
# vk_icd.h
add_executable(vk_icd 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)
# vk_sdk_platform.h
add_executable(vk_sdk_platform vk_sdk_platform.c)
target_link_libraries(vk_sdk_platform PRIVATE Vulkan::Headers)

6
tests/vk_icd.c Normal file
View file

@ -0,0 +1,6 @@
#include "vulkan/vk_icd.h"
int main()
{
return 0;
}

7
tests/vk_layer.c Normal file
View file

@ -0,0 +1,7 @@
#include "vulkan/vk_layer.h"
// Use helper macro intended for vulkan layers to export functions
VK_LAYER_EXPORT int foobar()
{
return 0;
}

6
tests/vk_sdk_platform.c Normal file
View file

@ -0,0 +1,6 @@
#include "vulkan/vk_sdk_platform.h"
int main()
{
return 0;
}