Allow more GitHub Actions runners to run the audio tests. #79
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: [push, pull_request, workflow_dispatch] | |
concurrency: | |
group: environment-${{github.ref}} | |
cancel-in-progress: true | |
env: | |
DISPLAY: ":99" # Display number to use for the X server | |
GALLIUM_DRIVER: llvmpipe # Use Mesa 3D software OpenGL renderer | |
ANDROID_NDK_VERSION: "26.1.10909125" # Android NDK version to use | |
defaults: | |
run: | |
shell: bash | |
jobs: | |
build: | |
name: ${{ matrix.platform.name }} ${{ matrix.config.name }} ${{ matrix.type.name }} | |
runs-on: ${{ matrix.platform.os }} | |
env: | |
CMAKE_CXX_COMPILER_LAUNCHER: ccache # Use ccache to cache C++ compiler output | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: | |
- { name: Windows VS2019 x86, os: windows-2019, flags: -DSFML_USE_MESA3D=TRUE -GNinja } | |
- { name: Windows VS2019 x64, os: windows-2019, flags: -DSFML_USE_MESA3D=TRUE -GNinja } | |
- { name: Windows VS2022 x86, os: windows-2022, flags: -DSFML_USE_MESA3D=TRUE -GNinja } | |
- { name: Windows VS2022 x64, os: windows-2022, flags: -DSFML_USE_MESA3D=TRUE -GNinja } | |
- { name: Windows VS2022 ClangCL MSBuild, os: windows-2022, flags: -DSFML_USE_MESA3D=TRUE -T ClangCL } # ninja doesn't support specifying the toolset, so use the ClangCL toolset to test building with MSBuild as well | |
- { name: Windows VS2022 OpenGL ES, os: windows-2022, flags: -DSFML_USE_MESA3D=TRUE -DSFML_OPENGL_ES=ON -GNinja } | |
- { name: Windows VS2022 Unity, os: windows-2022, flags: -DSFML_USE_MESA3D=TRUE -DCMAKE_UNITY_BUILD=ON -GNinja } | |
- { name: Windows LLVM/Clang, os: windows-2022, flags: -DSFML_USE_MESA3D=TRUE -DCMAKE_CXX_COMPILER=clang++ -GNinja } | |
- { name: Windows MinGW, os: windows-2022, flags: -DSFML_USE_MESA3D=TRUE -DCMAKE_CXX_COMPILER=g++ -GNinja } | |
- { name: Linux GCC, os: ubuntu-22.04, flags: -GNinja } | |
- { name: Linux Clang, os: ubuntu-22.04, flags: -DCMAKE_CXX_COMPILER=clang++ -GNinja , gcovr_options: '--gcov-executable="llvm-cov-$CLANG_VERSION gcov"' } | |
- { name: Linux GCC DRM, os: ubuntu-22.04, flags: -DSFML_USE_DRM=ON -DSFML_RUN_DISPLAY_TESTS=OFF -GNinja } | |
- { name: Linux GCC OpenGL ES, os: ubuntu-22.04, flags: -DSFML_OPENGL_ES=ON -DSFML_RUN_DISPLAY_TESTS=OFF -GNinja } | |
- { name: macOS x64, os: macos-12, flags: -GNinja } | |
- { name: macOS x64 Xcode, os: macos-12, flags: -GXcode } | |
- { name: macOS arm64, os: macos-14, flags: -GNinja -DSFML_RUN_AUDIO_DEVICE_TESTS=OFF } | |
- { name: iOS, os: macos-12, flags: -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_ARCHITECTURES=arm64 } | |
- { name: iOS Xcode, os: macos-12, flags: -DCMAKE_SYSTEM_NAME=iOS -GXcode -DCMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED=NO } | |
config: | |
- { name: Shared, flags: -DBUILD_SHARED_LIBS=TRUE } | |
- { name: Static, flags: -DBUILD_SHARED_LIBS=FALSE } | |
type: | |
- { name: Release } | |
- { name: Debug, flags: -DCMAKE_BUILD_TYPE=Debug -DSFML_ENABLE_COVERAGE=TRUE } | |
include: | |
- platform: { name: Windows VS2022 x64, os: windows-2022 } | |
config: { name: Static with PCH (MSVC), flags: -DSFML_USE_MESA3D=TRUE -GNinja -DBUILD_SHARED_LIBS=FALSE -DSFML_ENABLE_PCH=1 } | |
- platform: { name: Linux GCC, os: ubuntu-22.04 } | |
config: { name: Static with PCH (GCC), flags: -GNinja -DCMAKE_CXX_COMPILER=g++ -DBUILD_SHARED_LIBS=FALSE -DSFML_ENABLE_PCH=1 } | |
- platform: { name: Linux Clang, os: ubuntu-22.04 } | |
config: { name: Static with PCH (Clang), flags: -GNinja -DCMAKE_CXX_COMPILER=clang++ -DBUILD_SHARED_LIBS=FALSE -DSFML_ENABLE_PCH=1 } | |
- platform: { name: Windows MinGW, os: windows-2022 } | |
config: { name: Static Standard Libraries, flags: -GNinja -DSFML_USE_MESA3D=TRUE -DCMAKE_CXX_COMPILER=g++ -DSFML_USE_STATIC_STD_LIBS=TRUE } | |
- platform: { name: Windows MinGW, os: windows-2022 } | |
config: { name: Static with PCH (GCC), flags: -GNinja -DSFML_USE_MESA3D=TRUE -DCMAKE_CXX_COMPILER=g++ -DBUILD_SHARED_LIBS=FALSE -DSFML_ENABLE_PCH=1 } | |
- platform: { name: macOS, os: macos-12 } | |
config: { name: Frameworks, flags: -GNinja -DSFML_BUILD_FRAMEWORKS=TRUE -DBUILD_SHARED_LIBS=TRUE } | |
- platform: { name: macOS , os: macos-12 } | |
config: { name: System Deps, flags: -GNinja -DBUILD_SHARED_LIBS=TRUE -DSFML_USE_SYSTEM_DEPS=TRUE } | |
- platform: { name: Android, os: ubuntu-latest } | |
config: | |
name: x86 (API 21) | |
flags: -GNinja -DCMAKE_ANDROID_ARCH_ABI=x86 -DCMAKE_SYSTEM_NAME=Android -DCMAKE_SYSTEM_VERSION=21 -DCMAKE_ANDROID_NDK=$ANDROID_NDK_ROOT -DBUILD_SHARED_LIBS=TRUE -DCMAKE_ANDROID_STL_TYPE=c++_shared -DSFML_RUN_DISPLAY_TESTS=OFF -DSFML_RUN_AUDIO_DEVICE_TESTS=OFF | |
arch: x86 | |
api: 21 | |
libcxx: i686-linux-android/libc++_shared.so | |
emuarch: x86 | |
# emuapi: 29 # Removing this causes the tests to not run. This works around an issue that causes the test step to hang indefinitely. | |
type: { name: Release } | |
- platform: { name: Android, os: ubuntu-latest } | |
config: | |
name: x86_64 (API 24) | |
flags: -GNinja -DCMAKE_ANDROID_ARCH_ABI=x86_64 -DCMAKE_SYSTEM_NAME=Android -DCMAKE_SYSTEM_VERSION=24 -DCMAKE_ANDROID_NDK=$ANDROID_NDK_ROOT -DBUILD_SHARED_LIBS=TRUE -DCMAKE_ANDROID_STL_TYPE=c++_shared -DSFML_RUN_DISPLAY_TESTS=OFF -DSFML_RUN_AUDIO_DEVICE_TESTS=OFF | |
arch: x86_64 | |
api: 24 | |
libcxx: x86_64-linux-android/libc++_shared.so | |
emuarch: x86_64 | |
# emuapi: 34 # Removing this causes the tests to not run. This works around an issue that causes the Network module tests to fail. | |
type: { name: Release } | |
- platform: { name: Android, os: ubuntu-latest } | |
config: | |
name: armeabi-v7a (API 29) | |
flags: -GNinja -DCMAKE_ANDROID_ARCH_ABI=armeabi-v7a -DCMAKE_SYSTEM_NAME=Android -DCMAKE_SYSTEM_VERSION=29 -DCMAKE_ANDROID_NDK=$ANDROID_NDK_ROOT -DBUILD_SHARED_LIBS=TRUE -DCMAKE_ANDROID_STL_TYPE=c++_shared | |
arch: armeabi-v7a | |
api: 29 | |
# There are no emulators available for armeabi-v7a so we skip running the tests (we still build them) by not specifying emuapi | |
type: { name: Debug, flags: -DCMAKE_BUILD_TYPE=Debug } | |
- platform: { name: Android, os: ubuntu-latest } | |
config: | |
name: arm64-v8a (API 33) | |
flags: -GNinja -DCMAKE_ANDROID_ARCH_ABI=arm64-v8a -DCMAKE_SYSTEM_NAME=Android -DCMAKE_SYSTEM_VERSION=33 -DCMAKE_ANDROID_NDK=$ANDROID_NDK_ROOT -DBUILD_SHARED_LIBS=TRUE -DCMAKE_ANDROID_STL_TYPE=c++_shared -DSFML_RUN_DISPLAY_TESTS=OFF -DSFML_RUN_AUDIO_DEVICE_TESTS=OFF | |
arch: arm64-v8a | |
api: 33 | |
libcxx: aarch64-linux-android/libc++_shared.so | |
emuarch: arm64-v8a | |
emuapi: 27 | |
emuflags: -qemu -machine virt | |
type: { name: Debug, flags: -DCMAKE_BUILD_TYPE=Debug } | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Set Visual Studio Architecture | |
if: contains(matrix.platform.name, 'Windows VS') && !contains(matrix.platform.name, 'MSBuild') | |
uses: ilammy/msvc-dev-cmd@v1 | |
with: | |
arch: ${{ contains(matrix.platform.name, 'x86') && 'x86' || 'x64' }} | |
# Although the CMake configuration will run with 3.24 on Windows and 3.22 | |
# elsewhere, we install 3.25 on Windows in order to support specifying | |
# CMAKE_MSVC_DEBUG_INFORMATION_FORMAT which allows CCache to cache MSVC object | |
# files, see: https://cmake.org/cmake/help/latest/release/3.25.html#variables | |
- name: Get CMake and Ninja | |
uses: lukka/get-cmake@latest | |
with: | |
cmakeVersion: ${{ runner.os == 'Windows' && '3.25' || '3.22' }} | |
ninjaVersion: latest | |
- name: Install Linux Dependencies and Tools | |
if: runner.os == 'Linux' | |
run: | | |
CLANG_VERSION=$(clang++ --version | sed -n 's/.*version \([0-9]\+\)\..*/\1/p') | |
echo "CLANG_VERSION=$CLANG_VERSION" >> $GITHUB_ENV | |
sudo apt-get update && sudo apt-get install xorg-dev libxrandr-dev libxcursor-dev libudev-dev libflac-dev libvorbis-dev libgl1-mesa-dev libegl1-mesa-dev libdrm-dev libgbm-dev xvfb fluxbox ccache gcovr ${{ matrix.platform.name == 'Linux Clang' && 'llvm-$CLANG_VERSION' || '' }} | |
- name: Remove ALSA Library | |
if: runner.os == 'Linux' && matrix.platform.name != 'Android' | |
run: sudo apt-get remove -y libasound2 | |
# LIBCXX_SHARED_SO is the path used by CMake to copy the necessary runtime library to the AVD | |
# We find it by searching ANDROID_NDK_ROOT for file paths ending with matrix.config.libcxx | |
- name: Install Android Components | |
if: matrix.platform.name == 'Android' | |
run: | | |
echo "y" | ${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --install "build-tools;33.0.2" | |
echo "y" | ${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --install "ndk;26.1.10909125" | |
ANDROID_NDK_ROOT=$(echo $ANDROID_SDK_ROOT/ndk/$ANDROID_NDK_VERSION) | |
echo "ANDROID_NDK_ROOT=$ANDROID_NDK_ROOT" >> $GITHUB_ENV | |
LIBCXX_SHARED_SO=$(find $ANDROID_NDK_ROOT -path \*/${{ matrix.config.libcxx }}) | |
echo "LIBCXX_SHARED_SO=$LIBCXX_SHARED_SO" >> $GITHUB_ENV | |
- name: Install macOS Tools | |
if: runner.os == 'macOS' | |
run: | | |
brew update | |
brew install gcovr ccache || true | |
# In addition to installing a known working version of CCache, this action also takes care of saving and restoring the cache for us | |
# Additionally it outputs information at the end of each job that helps us to verify if the cache is working properly | |
- name: Setup CCache | |
uses: hendrikmuhs/[email protected] | |
with: | |
verbose: 2 | |
key: ${{ matrix.platform.name }}-${{ matrix.config.name }}-${{ matrix.type.name }} | |
- name: Install Gcovr for MinGW | |
if: matrix.type.name == 'Debug' && contains(matrix.platform.name, 'MinGW') | |
uses: threeal/[email protected] | |
with: | |
packages: gcovr | |
- name: Cache OpenCppCoverage | |
if: matrix.type.name == 'Debug' && runner.os == 'Windows' | |
id: opencppcoverage-cache | |
uses: actions/cache@v4 | |
with: | |
path: C:\Program Files\OpenCppCoverage | |
key: opencppcoverage | |
- name: Install OpenCppCoverage | |
uses: nick-fields/retry@v3 | |
if: matrix.type.name == 'Debug' && runner.os == 'Windows' && steps.opencppcoverage-cache.outputs.cache-hit != 'true' | |
with: | |
max_attempts: 10 | |
timeout_minutes: 3 | |
command: choco install OpenCppCoverage -y | |
- name: Cache MinGW | |
if: matrix.platform.name == 'Windows MinGW' | |
id: mingw-cache | |
uses: actions/cache@v4 | |
with: | |
path: "C:\\Program Files\\mingw64" | |
key: winlibs-x86_64-posix-seh-gcc-12.2.0-llvm-16.0.0-mingw-w64msvcrt-10.0.0-r5 | |
- name: Install MinGW | |
if: matrix.platform.name == 'Windows MinGW' && steps.mingw-cache.outputs.cache-hit != 'true' | |
run: | | |
curl -Lo mingw64.zip https://github.com/brechtsanders/winlibs_mingw/releases/download/12.2.0-16.0.0-10.0.0-msvcrt-r5/winlibs-x86_64-posix-seh-gcc-12.2.0-llvm-16.0.0-mingw-w64msvcrt-10.0.0-r5.zip | |
unzip -qq -d "C:\Program Files" mingw64.zip | |
- name: Add OpenCppCoverage and MinGW to PATH and remove MinGW-supplied CCache | |
if: runner.os == 'Windows' | |
run: | | |
echo "C:\Program Files\OpenCppCoverage" >> $GITHUB_PATH | |
echo "C:\Program Files\mingw64\bin" >> $GITHUB_PATH | |
rm -f "C:\Program Files\mingw64\bin\ccache.exe" | |
echo "Using $(which ccache)" | |
ccache --version | |
- name: Configure CMake | |
run: cmake --preset dev -DCMAKE_VERBOSE_MAKEFILE=ON ${{matrix.platform.flags}} ${{matrix.config.flags}} ${{matrix.type.flags}} | |
- name: Build | |
run: cmake --build build --config ${{ matrix.type.name == 'Debug' && 'Debug' || 'Release' }} --target install | |
- name: Build Android example | |
if: matrix.platform.name == 'Android' | |
run: examples/android/gradlew ${{ matrix.type.name == 'Debug' && 'assembleDebug' || 'assembleRelease' }} -p examples/android -P ARCH_ABI=${{matrix.config.arch}} -P MIN_SDK=${{matrix.config.api}} | |
- name: Prepare Test | |
run: | | |
set -e | |
# Start up Xvfb and fluxbox to host display tests | |
if [ "${{ runner.os }}" == "Linux" ]; then | |
Xvfb $DISPLAY -screen 0 1920x1080x24 & | |
sleep 5 | |
fluxbox > /dev/null 2>&1 & | |
sleep 5 | |
fi | |
# Make sure the build/bin directory exists so that the find command does not fail if no executables are built | |
mkdir -p build/bin | |
# Make use of a test to print OpenGL vendor/renderer/version info to the console | |
find build/bin -name test-sfml-window -or -name test-sfml-window.exe -exec sh -c "{} *sf::Context* --section=\"Version String\" --success | grep OpenGL" \; | |
- name: Test (Windows) | |
if: runner.os == 'Windows' && !contains(matrix.platform.name, 'MinGW') | |
run: cmake --build build --target runtests --config ${{ matrix.type.name == 'Debug' && 'Debug' || 'Release' }} | |
- name: Test (Linux/macOS/MinGW) | |
if: (runner.os != 'Windows' || contains(matrix.platform.name, 'MinGW')) && !contains(matrix.platform.name, 'iOS') && !contains(matrix.platform.name, 'Android') | |
run: | | |
ctest --test-dir build --output-on-failure -C ${{ matrix.type.name == 'Debug' && 'Debug' || 'Release' }} --repeat until-pass:3 | |
# Run gcovr to extract coverage information from the test run | |
if [ "${{ matrix.type.name }}" == "Debug" ]; then | |
gcovr -r $GITHUB_WORKSPACE -x build/coverage.out -s -f 'src/SFML/.*' -f 'include/SFML/.*' ${{ matrix.platform.gcovr_options }} $GITHUB_WORKSPACE | |
fi | |
- name: Enable KVM | |
if: contains(matrix.platform.name, 'Android') && matrix.config.emuapi | |
run: | | |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules | |
sudo udevadm control --reload-rules | |
sudo udevadm trigger --name-match=kvm | |
- name: Cache AVD | |
if: contains(matrix.platform.name, 'Android') && matrix.config.emuapi | |
uses: actions/cache@v4 | |
id: avd-cache | |
with: | |
path: | | |
~/.android/avd/* | |
~/.android/adb* | |
key: avd-${{ matrix.config.emuarch }}-${{ matrix.config.emuapi }} | |
- name: Create AVD and Generate Snapshot for Caching | |
if: contains(matrix.platform.name, 'Android') && matrix.config.emuapi && steps.avd-cache.outputs.cache-hit != 'true' | |
uses: reactivecircus/android-emulator-runner@v2 | |
with: | |
api-level: ${{ matrix.config.emuapi }} | |
arch: ${{ matrix.config.emuarch }} | |
force-avd-creation: false | |
emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none ${{ matrix.config.emuflags }} | |
disable-animations: false | |
script: echo "Generated AVD snapshot for caching." | |
- name: Test (Android) | |
if: contains(matrix.platform.name, 'Android') && matrix.config.emuapi | |
uses: reactivecircus/android-emulator-runner@v2 | |
with: | |
api-level: ${{ matrix.config.emuapi }} | |
arch: ${{ matrix.config.emuarch }} | |
force-avd-creation: false | |
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none ${{ matrix.config.emuflags }} | |
disable-animations: true | |
script: | | |
cmake --build build --config ${{ matrix.type.name == 'Debug' && 'Debug' || 'Release' }} --target prepare-android-files | |
ctest --test-dir build --output-on-failure -C ${{ matrix.type.name == 'Debug' && 'Debug' || 'Release' }} --repeat until-pass:3 | |
- name: Upload Coverage Report to Coveralls | |
if: matrix.type.name == 'Debug' && github.repository == 'SFML/SFML' && !contains(matrix.platform.name, 'iOS') && !contains(matrix.platform.name, 'Android') # Disable upload in forks | |
uses: coverallsapp/github-action@v2 | |
with: | |
file: ./build/coverage.out | |
flag-name: ${{ matrix.platform.name }} ${{ matrix.config.name }} ${{ matrix.type.name }} | |
parallel: true | |
allow-empty: true | |
base-path: ${{ github.workspace }} | |
- name: Test Install Interface | |
if: matrix.platform.name != 'Android' | |
run: | | |
cmake -S test/install -B test/install/build -DSFML_ROOT=build/install -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_BUILD_TYPE=${{ matrix.type.name == 'Debug' && 'Debug' || 'Release' }} ${{matrix.platform.flags}} ${{matrix.config.flags}} ${{matrix.type.flags}} | |
cmake --build test/install/build --config ${{ matrix.type.name == 'Debug' && 'Debug' || 'Release' }} | |
coverage: | |
name: Finalize Coverage Upload | |
needs: build | |
runs-on: ubuntu-22.04 | |
if: github.repository == 'SFML/SFML' # Disable upload in forks | |
steps: | |
- name: Coveralls Finished | |
uses: coverallsapp/github-action@v2 | |
with: | |
parallel-finished: true | |
format: | |
name: Formatting | |
runs-on: ubuntu-22.04 | |
strategy: | |
fail-fast: false | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Format Code | |
run: cmake -DCLANG_FORMAT_EXECUTABLE=clang-format-14 -P cmake/Format.cmake | |
- name: Check Formatting | |
run: git diff --exit-code | |
tidy: | |
name: Analyzing on ${{ matrix.platform.name }} | |
runs-on: ${{ matrix.platform.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: | |
- { name: Windows, os: windows-2022, flags: -GNinja } | |
- { name: Linux, os: ubuntu-22.04 } | |
- { name: Linux DRM, os: ubuntu-22.04, flags: -DSFML_USE_DRM=TRUE } | |
- { name: Linux OpenGL ES, os: ubuntu-22.04, flags: -DSFML_OPENGL_ES=ON } | |
- { name: macOS, os: macos-12 } | |
- { name: iOS, os: macos-12, flags: -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_ARCHITECTURES=arm64 } | |
- { name: Android, os: ubuntu-22.04, flags: -DCMAKE_ANDROID_ARCH_ABI=x86_64 -DCMAKE_SYSTEM_NAME=Android -DCMAKE_SYSTEM_VERSION=21 -DCMAKE_ANDROID_NDK=$ANDROID_NDK -DCMAKE_ANDROID_STL_TYPE=c++_shared } | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Get CMake and Ninja | |
uses: lukka/get-cmake@latest | |
with: | |
cmakeVersion: latest | |
ninjaVersion: latest | |
- name: Install Windows Dependencies | |
if: runner.os == 'Windows' | |
run: | | |
curl.exe -o run-clang-tidy https://raw.githubusercontent.com/llvm/llvm-project/llvmorg-15.0.7/clang-tools-extra/clang-tidy/tool/run-clang-tidy.py | |
- name: Install Linux Dependencies | |
if: runner.os == 'Linux' | |
run: sudo apt-get update && sudo apt-get install libxrandr-dev libxcursor-dev libudev-dev libflac-dev libvorbis-dev libgl1-mesa-dev libegl1-mesa-dev libdrm-dev libgbm-dev | |
- name: Install macOS Dependencies | |
if: runner.os == 'macOS' | |
run: | | |
brew update | |
brew install llvm || true | |
echo /usr/local/opt/llvm/bin >> $GITHUB_PATH | |
- name: Configure | |
run: cmake --preset dev -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_UNITY_BUILD=ON ${{matrix.platform.flags}} | |
- name: Analyze Code | |
run: cmake --build build --target tidy | |
sanitize: | |
name: Sanitizing on ${{ matrix.platform.name }} | |
runs-on: ${{ matrix.platform.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: | |
- { name: Linux, os: ubuntu-22.04, flags: } | |
- { name: Linux DRM, os: ubuntu-22.04, flags: -DSFML_RUN_DISPLAY_TESTS=OFF -DSFML_USE_DRM=ON } | |
- { name: Linux GCC OpenGL ES, os: ubuntu-22.04, flags: -DSFML_RUN_DISPLAY_TESTS=OFF -DSFML_OPENGL_ES=ON } | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Get CMake and Ninja | |
uses: lukka/get-cmake@latest | |
with: | |
cmakeVersion: latest | |
ninjaVersion: latest | |
- name: Install Linux Dependencies | |
if: runner.os == 'Linux' | |
run: sudo apt-get update && sudo apt-get install xorg-dev libxrandr-dev libxcursor-dev libudev-dev libflac-dev libvorbis-dev libgl1-mesa-dev libegl1-mesa-dev libdrm-dev libgbm-dev xvfb fluxbox && sudo apt-get remove -y libasound2 | |
- name: Configure | |
run: cmake --preset dev -GNinja -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_COMPILER=clang++ -DSFML_BUILD_EXAMPLES=OFF -DSFML_ENABLE_SANITIZERS=ON ${{matrix.platform.flags}} | |
- name: Build | |
run: cmake --build build | |
- name: Prepare Test | |
run: | | |
set -e | |
# Start up Xvfb and fluxbox to host display tests | |
if [ "${{ runner.os }}" == "Linux" ]; then | |
Xvfb $DISPLAY -screen 0 1920x1080x24 & | |
sleep 5 | |
fluxbox > /dev/null 2>&1 & | |
sleep 5 | |
fi | |
- name: Test | |
run: ctest --test-dir build --output-on-failure |