Files
kichikuou_xsystem35-sdl2/.github/workflows/windows.yml
T
kichikuou 3cbe4c73d8 CI: Add SDL2 and SDL3 build matrix
Document the supported SDL configurations and build dependencies for each
platform. Keep Android on SDL3 only and identify every packaged artifact by
its SDL version.
2026-09-22 21:39:05 +09:00

87 lines
2.4 KiB
YAML

name: Windows Build
on: [push, pull_request]
jobs:
build:
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
include:
- sys: mingw32
package: "xsystem35-sdl2-32bit"
sdl-version: 2
sdl-deps: "SDL2:p SDL2_mixer:p"
cmake_args: "-DENABLE_DEBUGGER=no"
deps: ""
- sys: ucrt64
package: "xsystem35-sdl2-64bit"
sdl-version: 2
sdl-deps: "SDL2:p SDL2_mixer:p"
cmake_args: ""
deps: >-
cjson:p
portmidi:p
- sys: ucrt64
package: "xsystem35-sdl3-64bit"
sdl-version: 3
sdl-deps: "sdl3:p sdl3-mixer:p"
cmake_args: ""
deps: >-
cjson:p
portmidi: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 }}
freetype:p
libwebp:p
${{ matrix.deps }}
- name: Checkout
uses: actions/checkout@v6
- name: Copy licenses
run: |
ls /${{ matrix.sys }}/share/licenses
mkdir dist
cp -r /${{ matrix.sys }}/share/licenses dist/
cp licenses/* dist/licenses/
- name: Install dev dependencies
run: pacboy --noconfirm -S --needed gcc:p cmake:p ninja:p asciidoctor:p
- name: Build
run: |
cmake -S . -B out/release -GNinja -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_COMPILE_WARNING_AS_ERROR=YES \
-DXSYSTEM35_SDL_VERSION=${{ matrix.sdl-version }} \
${{ matrix.cmake_args }}
cmake --build out/release
- name: Test
run: ctest --output-on-failure
working-directory: out/release
- name: Package
run: |
cp out/release/src/xsystem35.exe out/release/doc/*.html *.md COPYING xsys35rc.sample dist/
ldd out/release/src/xsystem35.exe \
| awk '$2 == "=>" && tolower($3) ~ /\.dll$/ && $3 !~ /WINDOWS/ { print $3 }' \
| xargs -r cp -t dist/
- name: Upload
uses: actions/upload-artifact@v7
with:
name: ${{ matrix.package }}
path: dist
compression-level: 9 # because we use it for releases