Skip to content

Decompose Structs.h into domain-specific headers #165

Decompose Structs.h into domain-specific headers

Decompose Structs.h into domain-specific headers #165

Workflow file for this run

---
name: Multi-Distro Build (CMake)
on:
push:
branches: [ main, sdl3 ]
pull_request:
branches: [ main, sdl3 ]
env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
jobs:
# 1. Ubuntu LTS (x86_64)
ubuntu-build:
name: Ubuntu ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-24.04]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- name: Install Dependencies
run: |
sudo apt-get update
sudo apt-get install -y g++ cmake imagemagick libzip-dev \
libcurl4-openssl-dev zlib1g-dev git libxkbcommon-dev
- name: Setup SDL3
uses: libsdl-org/setup-sdl@main
id: sdl
with:
version: 3-latest
version-sdl-image: 3-latest
install-linux-dependencies: true
- name: Configure
run: cmake -B build -DFRONTEND=sdl3 -DCMAKE_PREFIX_PATH="${{ steps.sdl.outputs.prefix }}" -DCMAKE_POLICY_VERSION_MINIMUM=3.5
- name: Build
run: cmake --build build -j$(nproc)
- name: Test
env:
SDL_VIDEODRIVER: dummy
SDL_AUDIODRIVER: dummy
run: cd build && ctest --output-on-failure
- name: Install
run: sudo cmake --install build
# 2. Fedora (RPM-based)
rpm-build:
name: ${{ matrix.distro }}
runs-on: ubuntu-latest
strategy:
matrix:
distro: ["fedora:latest"]
container:
image: ${{ matrix.distro }}
steps:
- uses: actions/checkout@v4
- name: Install Dependencies
run: |
dnf install -y gcc-c++ cmake ImageMagick libzip-devel SDL3-devel \
SDL3_image-devel libcurl-devel zlib-devel git
- name: Configure
run: cmake -B build -DFRONTEND=sdl3 -DCMAKE_POLICY_VERSION_MINIMUM=3.5
- name: Build
run: cmake --build build -j$(nproc)
- name: Test
env:
SDL_VIDEODRIVER: dummy
SDL_AUDIODRIVER: dummy
run: cd build && ctest --output-on-failure
- name: Install
run: cmake --install build
# 3. Arch Linux
arch-build:
name: Arch Linux (Rolling)
runs-on: ubuntu-latest
container:
image: archlinux:latest
steps:
- uses: actions/checkout@v4
- name: Install Dependencies
run: |
pacman -Syu --noconfirm
pacman -S --noconfirm base-devel cmake imagemagick libzip sdl3 sdl3_image \
libcurl-gnutls zlib git
- name: Configure
run: cmake -B build -DFRONTEND=sdl3 -DCMAKE_POLICY_VERSION_MINIMUM=3.5
- name: Build
run: cmake --build build -j$(nproc)
- name: Test
env:
SDL_VIDEODRIVER: dummy
SDL_AUDIODRIVER: dummy
run: cd build && ctest --output-on-failure
- name: Install
run: cmake --install build
# 4. SDL1 Build (Ubuntu 24.04)
sdl1-build:
name: SDL1 (Ubuntu 24.04)
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- name: Install Dependencies
run: |
sudo apt-get update
sudo apt-get install -y g++ cmake imagemagick libzip-dev \
libcurl4-openssl-dev zlib1g-dev git libsdl1.2-dev libsdl-image1.2-dev
- name: Configure
run: cmake -B build -DFRONTEND=sdl1 -DCMAKE_POLICY_VERSION_MINIMUM=3.5
- name: Build
run: cmake --build build -j$(nproc)
- name: Test
env:
SDL_VIDEODRIVER: dummy
SDL_AUDIODRIVER: dummy
run: cd build && ctest --output-on-failure
- name: Install
run: sudo cmake --install build
# 5. Headless Build (Minimal Deps)
headless-build:
name: Headless (Ubuntu 24.04)
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- name: Install Dependencies
run: |
sudo apt-get update
sudo apt-get install -y g++ cmake imagemagick libzip-dev \
libcurl4-openssl-dev zlib1g-dev git libxkbcommon-dev
- name: Configure
run: cmake -B build -DFRONTEND=headless -DCMAKE_POLICY_VERSION_MINIMUM=3.5
- name: Build
run: cmake --build build -j$(nproc)
- name: Test
run: cd build && ctest --output-on-failure
- name: Install
run: sudo cmake --install build
# 5. Headless Build with Sanitizers (ASAN/UBSAN)
headless-sanitizers:
name: Headless Sanitizers (ASAN/UBSAN)
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- name: Install Dependencies
run: |
sudo apt-get update
sudo apt-get install -y g++ cmake imagemagick libzip-dev \
libcurl4-openssl-dev zlib1g-dev git libxkbcommon-dev
- name: Configure
run: >
cmake -B build -DFRONTEND=headless -DCMAKE_POLICY_VERSION_MINIMUM=3.5
-DCMAKE_CXX_FLAGS="-fsanitize=address,undefined -g"
-DCMAKE_C_FLAGS="-fsanitize=address,undefined -g"
-DCMAKE_EXE_LINKER_FLAGS="-fsanitize=address,undefined"
- name: Build
run: cmake --build build -j$(nproc)
- name: Test
env:
ASAN_OPTIONS: "detect_leaks=1"
UBSAN_OPTIONS: "print_stacktrace=1"
run: cd build && ctest --output-on-failure
# 5. Raspberry Pi OS (64-bit) - Native
rpi-arm64:
name: Raspberry Pi OS (arm64)
runs-on: ubuntu-24.04-arm
steps:
- uses: actions/checkout@v4
- name: Install Dependencies
run: |
sudo apt-get update
sudo apt-get install -y g++ cmake imagemagick libzip-dev \
libcurl4-openssl-dev zlib1g-dev git libxkbcommon-dev \
libx11-dev libxext-dev libxrandr-dev libxinerama-dev \
libxcursor-dev libxi-dev libwayland-dev libasound2-dev \
libpulse-dev libxss-dev libxtst-dev libxv-dev
- name: Build SDL3 from source
run: |
git clone --depth 1 https://github.com/libsdl-org/SDL.git -b main
cmake -S SDL -B SDL/build -DCMAKE_BUILD_TYPE=Release
cmake --build SDL/build -j$(nproc)
sudo cmake --install SDL/build
git clone --depth 1 https://github.com/libsdl-org/SDL_image.git -b main
cmake -S SDL_image -B SDL_image/build -DCMAKE_BUILD_TYPE=Release
cmake --build SDL_image/build -j$(nproc)
sudo cmake --install SDL_image/build
- name: Configure
run: cmake -B build -DFRONTEND=sdl3 -DCMAKE_POLICY_VERSION_MINIMUM=3.5
- name: Build
run: cmake --build build -j$(nproc)
- name: Test
env:
SDL_VIDEODRIVER: dummy
SDL_AUDIODRIVER: dummy
run: cd build && ctest --output-on-failure
# # 6. Raspberry Pi OS (32-bit) - QEMU
# rpi-armhf:
# name: Raspberry Pi OS (armhf)
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v4
# - name: Build and Test
# uses: uraimo/run-on-arch-action@v3
# with:
# arch: armv7
# distro: ubuntu24.04
# githubToken: ${{ github.token }}
# install: |
# apt-get update
# apt-get install -y g++ cmake imagemagick libzip-dev \
# libcurl4-openssl-dev zlib1g-dev git libxkbcommon-dev curl \
# libx11-dev libxext-dev libxrandr-dev libxinerama-dev \
# libxcursor-dev libxi-dev libwayland-dev libasound2-dev \
# libpulse-dev libxss-dev libxtst-dev libxv-dev
# run: |
# # Build SDL3 from source (not in repos for noble yet)
# git clone --depth 1 https://github.com/libsdl-org/SDL.git -b main
# cmake -S SDL -B SDL/build -DCMAKE_BUILD_TYPE=Release
# cmake --build SDL/build -j$(nproc)
# cmake --install SDL/build
#
# git clone --depth 1 https://github.com/libsdl-org/SDL_image.git -b main
# cmake -S SDL_image -B SDL_image/build -DCMAKE_BUILD_TYPE=Release
# cmake --build SDL_image/build -j$(nproc)
# cmake --install SDL_image/build
#
# # Build Project
# cmake -B build -DFRONTEND=sdl3 -DCMAKE_POLICY_VERSION_MINIMUM=3.5
# cmake --build build -j$(nproc)
# cd build && SDL_VIDEODRIVER=dummy SDL_AUDIODRIVER=dummy ctest --output-on-failure