Android Testing WIP #63
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" # Androiod 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: -DSFML_RUN_DISPLAY_TESTS=ON -GNinja } | |
#- { name: Linux Clang, os: ubuntu-22.04, flags: -DCMAKE_CXX_COMPILER=clang++ -DSFML_RUN_DISPLAY_TESTS=ON -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 } | |
#- { 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: -DSFML_RUN_DISPLAY_TESTS=ON -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: -DSFML_RUN_DISPLAY_TESTS=ON -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: 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 | |
arch: x86 | |
api: 21 | |
libcxx: i686-linux-android/libc++_shared.so | |
emuarch: x86 | |
emuapi: 29 | |
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 | |
arch: x86_64 | |
api: 24 | |
libcxx: x86_64-linux-android/libc++_shared.so | |
emuarch: x86_64 | |
emuapi: 34 | |
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 | |
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 | |
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 } | |
#- platform: { name: macOS , os: macos-12 } | |
# config: { name: System Deps, flags: -GNinja -DBUILD_SHARED_LIBS=TRUE -DSFML_USE_SYSTEM_DEPS=TRUE } | |
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 libopenal-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: 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: | | |
# Do not run updates until GitHub has fixed all the issues: https://github.com/orgs/Homebrew/discussions/4612 | |
# 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, 'Android')) || contains(matrix.platform.name, 'MinGW') | |
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 | |
# adb push ${{ github.workspace }}/build/bin /data/local/tmp/ | |
# adb push ${{ github.workspace }}/build/lib /data/local/tmp/ | |
# for f in ${{ github.workspace }}/build/_deps/catch2-build/src/*.so; do adb push $f /data/local/tmp/lib/; done | |
# adb push $LIBCXX_SHARED_SO /data/local/tmp/lib/ | |
# adb shell "chmod 775 /data/local/tmp/bin/*" | |
# adb shell "ls -la /data/local/tmp/{bin,lib}" | |
# adb shell "LD_LIBRARY_PATH=/data/local/tmp/lib /data/local/tmp/bin/test-sfml-system --list-tests --verbosity high" | |
# script: pwd && ls -la . && ls -la ${{ github.workspace }}/build/bin && file ${{ github.workspace }}/build/bin/test-sfml-system && readelf -a ${{ github.workspace }}/build/bin/test-sfml-system && ${{ github.workspace }}/build/bin/test-sfml-system --list-tests --verbosity high | |
# script: ${{ github.workspace }}/build/bin/test-sfml-system --list-tests --verbosity high | |
# script: 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' # 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 -DSFML_BUILD_TEST_SUITE=FALSE -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 libopenal-dev libflac-dev libvorbis-dev libgl1-mesa-dev libegl1-mesa-dev libdrm-dev libgbm-dev | |
# | |
# - name: Install macOS Dependencies | |
# if: runner.os == 'macOS' | |
# run: | | |
# # Do not run updates until GitHub has fixed all the issues: https://github.com/orgs/Homebrew/discussions/4612 | |
# # 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: -DSFML_RUN_DISPLAY_TESTS=ON } | |
# - { 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 libopenal-dev libflac-dev libvorbis-dev libgl1-mesa-dev libegl1-mesa-dev libdrm-dev libgbm-dev xvfb fluxbox | |
# | |
# - 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 |