Decompose Structs.h into domain-specific headers #165
This file contains hidden or 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: 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 |