Files
kichikuou 3e32da1d37 Add SDL3 support alongside SDL2
Add optional SDL3 support while keeping SDL2 as the default. SDL3 builds
must be selected explicitly with the SYSTEM3_SDL_VERSION CMake option.

Centralize most SDL2/SDL3 API differences behind compatibility interfaces.
Audio playback uses a dedicated SDL3 backend based on SDL3 audio streams,
implemented separately in mako_sdl3.cpp.

Android and Nintendo Switch remain on SDL2 for now.
2026-09-16 08:44:23 +09:00

77 lines
2.0 KiB
YAML

name: Windows Build
on: [push, pull_request]
jobs:
build:
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
include:
- sys: mingw32
package: "system3-sdl2-32bit"
sdl-version: 2
sdl-deps: "SDL2:p SDL2_ttf:p"
deps: ""
- sys: ucrt64
package: "system3-sdl2-64bit"
sdl-version: 2
sdl-deps: "SDL2:p SDL2_ttf:p"
deps: "nlohmann-json:p"
- sys: ucrt64
package: "system3-sdl3-64bit"
sdl-version: 3
sdl-deps: "sdl3:p sdl3-ttf:p"
deps: "nlohmann-json:p"
defaults:
run:
shell: msys2 {0}
name: MSYS2 SDL${{ matrix.sdl-version }} ${{ matrix.sys }}
steps:
- name: Set up MSYS2
uses: msys2/setup-msys2@v2
with:
msystem: ${{ matrix.sys }}
pacboy: >-
${{ matrix.sdl-deps }}
rtmidi:p
${{ matrix.deps }}
- name: Checkout
uses: actions/checkout@v6
with:
submodules: true
- name: Copy licenses
run: |
ls /${{ matrix.sys }}/share/licenses
mkdir dist
cp -r /${{ matrix.sys }}/share/licenses dist/
cp resources/fonts/*.license dist/licenses/
cp deps/ymfm/LICENSE dist/licenses/ymfm.license
- name: Install dev dependencies
run: pacboy --noconfirm -S --needed gcc:p cmake:p ninja:p
- name: Build
run: |
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_COMPILE_WARNING_AS_ERROR=YES \
-DSYSTEM3_SDL_VERSION=${{ matrix.sdl-version }}
cmake --build build
- name: Test
run: ctest --output-on-failure --test-dir build
- name: Package
run: |
cp build/system3.exe COPYING.txt dist/
- name: Upload
uses: actions/upload-artifact@v7
with:
name: ${{ matrix.package }}
path: dist
compression-level: 9 # because we use it for releases