Skip to content

Testing CI

Testing CI #8

Workflow file for this run

name: CI Ubuntu EXT
on:
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-24.04
defaults:
run:
shell: bash
strategy:
matrix:
clang_version: [19, 20]
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Install libraries
run: sudo apt update && sudo apt install libgl-dev libxcursor-dev libxi-dev libxinerama-dev libxrandr-dev
- name: Install Ninja
uses: ashutoshvarma/setup-ninja@master
with:
version: 1.11.0
- name: Install Clang and CMake
run: |
sudo apt-get update && sudo apt-get install lsb-release gpg software-properties-common wget
wget https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
sudo ./llvm.sh ${{matrix.clang_version}} all
sudo apt purge --auto-remove cmake
wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | sudo tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null
echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ noble main' | sudo tee /etc/apt/sources.list.d/kitware.list >/dev/null
sudo apt update && sudo apt install cmake
- name: Install glm, glfw and glslang
run: |
cd glm
cmake -B build -G Ninja \
-D CMAKE_CXX_COMPILER=clang++-${{matrix.clang_version}} \
-D CMAKE_CXX_STANDARD=11 \
-D CMAKE_BUILD_TYPE=Release \
-D GLM_BUILD_LIBRARY=ON \
-D GLM_BUILD_INSTALL=ON \
-D GLM_BUILD_TESTS=OFF
cmake --build build --parallel
sudo cmake --install build
cd ../glfw
cmake -B build -G Ninja \
-D CMAKE_CXX_COMPILER=clang++-${{matrix.clang_version}} \
-D CMAKE_CXX_STANDARD=11 \
-D CMAKE_BUILD_TYPE=Release \
-D GLFW_BUILD_EXAMPLES=OFF \
-D GLFW_BUILD_TESTS=OFF \
-D GLFW_BUILD_DOCS=OFF \
-D GLFW_INSTALL=ON
cmake --build build --parallel
sudo cmake --install build
cd ../glslang
cmake -B build -G Ninja \
-D CMAKE_CXX_COMPILER=clang++-${{matrix.clang_version}} \
-D CMAKE_CXX_STANDARD=11 \
-D CMAKE_BUILD_TYPE=Release \
-D ENABLE_OPT=OFF \
-D GLSLANG_TESTS_DEFAULT=OFF \
-D GLSLANG_ENABLE_INSTALL_DEFAULT=ON
cmake --build build --parallel
sudo cmake --install build
cd ..
- name: Generate headers
run: |
cmake -B build -G Ninja \
-D VULKAN_HPP_GENERATOR_BUILD=ON \
-D VULKAN_HPP_RUN_GENERATOR=OFF \
-D VULKAN_HPP_SAMPLES_BUILD=OFF \
-D VULKAN_HPP_TESTS_BUILD=OFF \
-D VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=ON \
-D VULKAN_HPP_BUILD_WITH_LOCAL_VULKAN_HPP=ON \
-D VULKAN_HPP_PRECOMPILE=OFF \
-D CMAKE_CXX_COMPILER=clang++-${{matrix.clang_version}} \
-D CMAKE_CXX_STANDARD=20 \
-D CMAKE_BUILD_TYPE=Debug
cmake --build build --parallel
cmake -B build -G Ninja --fresh \
-D VULKAN_HPP_GENERATOR_BUILD=ON \
-D VULKAN_HPP_RUN_GENERATOR=ON \
-D VULKAN_HPP_SAMPLES_BUILD=OFF \
-D VULKAN_HPP_TESTS_BUILD=OFF \
-D VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=ON \
-D VULKAN_HPP_BUILD_WITH_LOCAL_VULKAN_HPP=ON \
-D VULKAN_HPP_PRECOMPILE=OFF \
-D CMAKE_CXX_COMPILER=clang++-${{matrix.clang_version}} \
-D CMAKE_CXX_STANDARD=20 \
-D CMAKE_BUILD_TYPE=Release
cmake --build build --parallel --clean-first
- name: Build samples and tests
run: |
for CXX_STANDARD in 20 23; do
for BUILD_TYPE in Debug Release; do
CXX_MODULES=ON
if [ $CXX_STANDARD -lt 23 ]; then
CXX_MODULES=OFF
fi
echo "================================================================================="
echo "Building C++$CXX_STANDARD in $BUILD_TYPE"
echo "================================================================================="
cmake -B build -G Ninja --fresh \
-D CMAKE_EXPERIMENTAL_CXX_IMPORT_STD=d0edc3af-4c50-42ea-a356-e2862fe7a444 \
-D VULKAN_HPP_BUILD_CXX_MODULE=$CXX_MODULES \
-D VULKAN_HPP_GENERATOR_BUILD=OFF \
-D VULKAN_HPP_RUN_GENERATOR=OFF \
-D VULKAN_HPP_SAMPLES_BUILD=ON \
-D VULKAN_HPP_TESTS_BUILD=ON \
-D VULKAN_HPP_TESTS_CTEST=ON \
-D VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=ON \
-D VULKAN_HPP_BUILD_WITH_LOCAL_VULKAN_HPP=ON \
-D VULKAN_HPP_PRECOMPILE=OFF \
-D CMAKE_CXX_FLAGS=-stdlib=libc++ \
-D CMAKE_CXX_COMPILER=clang++-${{matrix.clang_version}} \
-D CMAKE_CXX_STANDARD=$CXX_STANDARD \
-D CMAKE_BUILD_TYPE=$BUILD_TYPE
cmake --build build --parallel --clean-first
cd build && ctest -j --output-on-failure
cd ..
done
done