Skip to content

Initial SDL3 support. #900

Initial SDL3 support.

Initial SDL3 support. #900

Workflow file for this run

name: Regression tests
env:
MZXDEPS_DEBIAN_SDL2: "zlib1g-dev libpng-dev libogg-dev libvorbis-dev libsdl2-dev"
MZXDEPS_DEBIAN_MISC: "libsdl1.2-dev libegl1-mesa-dev libmikmod-dev libopenmpt-dev"
MZXDEPS_DEBIAN_CROSS: "p7zip-full"
MZXDEPS_MACOS: "libpng libogg libvorbis sdl2"
MZX_MAKE: "make -j4"
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
workflow_dispatch:
jobs:
#
# Platform variants and distribution packages.
#
unix:
runs-on: ubuntu-latest
steps:
- name: Install dependencies
run: sudo apt update && sudo apt install -y --no-install-recommends $MZXDEPS_DEBIAN_SDL2
- uses: actions/checkout@v4
- name: Configure
run: ./config.sh --platform unix --enable-release --enable-sdlaccel
- name: Build
run: $MZX_MAKE
- name: Run tests
run: $MZX_MAKE test
- name: Install
run: sudo $MZX_MAKE install V=1
- name: Check install
run: command -v megazeux && [ -f "/usr/share/doc/megazeux/LICENSE" ] && [ -f "/etc/megazeux-config" ]
- name: Uninstall
run: sudo $MZX_MAKE uninstall V=1
- name: Check uninstall
run: true && [ ! -f "/usr/bin/megazeux" ] && [ ! -f "/usr/share/doc/megazeux/LICENSE" ] && [ ! -f "/etc/megazeux-config" ]
- name: Package source .tar.xz
run: make source
unix-portable:
runs-on: ubuntu-latest
steps:
- name: Install dependencies
run: sudo apt update && sudo apt install -y --no-install-recommends $MZXDEPS_DEBIAN_SDL2
- uses: actions/checkout@v4
- name: Configure
run: ./config.sh --platform unix-devel --enable-release --enable-sdlaccel
- name: Build
run: $MZX_MAKE
- name: Run tests
run: $MZX_MAKE test
- name: Package linux-amd64 .zip
run: make archive
unix-misc:
runs-on: ubuntu-latest
steps:
- name: Install dependencies
run: sudo apt update && sudo apt install -y --no-install-recommends $MZXDEPS_DEBIAN_SDL2 $MZXDEPS_DEBIAN_MISC
- uses: actions/checkout@v4
- name: Configure (SDL 1.2)
run: ./config.sh --platform unix-devel --enable-release --enable-sdl1
- name: Build (SDL 1.2)
run: $MZX_MAKE
- name: Run tests (SDL 1.2)
run: $MZX_MAKE test
- name: Distclean (SDL 1.2)
run: $MZX_MAKE distclean
- name: Configure (EGL/X11)
run: ./config.sh --platform unix-devel --enable-release --disable-sdl --enable-egl
- name: Build (EGL/X11)
run: $MZX_MAKE
# Note: EGL mzxrun builds can't run headless, unit tests only.
- name: Run tests (EGL/X11)
run: $MZX_MAKE unit
- name: Distclean (EGL/X11)
run: $MZX_MAKE distclean
- name: Configure (ModPlug)
run: ./config.sh --platform unix-devel --enable-release --enable-modplug
- name: Build (Modplug)
run: $MZX_MAKE
- name: Run tests (Modplug)
run: $MZX_MAKE test
- name: Distclean (Modplug)
run: $MZX_MAKE distclean
- name: Configure (MikMod)
run: ./config.sh --platform unix-devel --enable-release --enable-mikmod
- name: Build (MikMod)
run: $MZX_MAKE
- name: Run tests (MikMod)
run: $MZX_MAKE test
- name: Distclean (MikMod)
run: $MZX_MAKE distclean
- name: Configure (OpenMPT)
run: ./config.sh --platform unix-devel --enable-release --enable-openmpt
- name: Build (OpenMPT)
run: $MZX_MAKE
- name: Run tests (OpenMPT)
run: $MZX_MAKE test
- name: Distclean (OpenMPT)
run: $MZX_MAKE distclean
darwin-arm64:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: brew install $MZXDEPS_MACOS
- name: Configure (darwin-devel)
run: ./config.sh --platform darwin-devel --prefix /opt/homebrew --enable-release --enable-sdlaccel
- name: Build (darwin-devel)
run: $MZX_MAKE
- name: Run tests (darwin-devel)
run: $MZX_MAKE test
darwin-x86_64:
runs-on: macos-13
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: brew install $MZXDEPS_MACOS
- name: Configure (darwin-devel)
run: ./config.sh --platform darwin-devel --prefix /usr/local --enable-release --enable-sdlaccel
- name: Build (darwin-devel)
run: $MZX_MAKE
- name: Run tests (darwin-devel)
run: $MZX_MAKE test
MSYS2-MINGW64:
runs-on: windows-latest
defaults:
run:
shell: msys2 {0}
steps:
- name: Setup msys2
uses: msys2/setup-msys2@v2
with:
msystem: MINGW64
update: true
install: >-
base-devel git p7zip
mingw-w64-x86_64-gcc mingw-w64-x86_64-zlib mingw-w64-x86_64-libpng
mingw-w64-x86_64-libogg mingw-w64-x86_64-libvorbis mingw-w64-x86_64-SDL2
- uses: actions/checkout@v4
- name: Configure x64
run: ./config.sh --platform win64 --enable-release
- name: Build x64
run: $MZX_MAKE
- name: Test x64
run: $MZX_MAKE test
- name: Package x64 .zip
run: make archive
MSYS2-MINGW32:
runs-on: windows-latest
defaults:
run:
shell: msys2 {0}
steps:
- name: Setup msys2
uses: msys2/setup-msys2@v2
with:
msystem: MINGW32
update: true
install: >-
base-devel git p7zip
mingw-w64-i686-gcc mingw-w64-i686-zlib mingw-w64-i686-libpng
mingw-w64-i686-libogg mingw-w64-i686-libvorbis mingw-w64-i686-SDL2
- uses: actions/checkout@v4
- name: Configure x86
run: ./config.sh --platform win32 --enable-release
- name: Build x86
run: $MZX_MAKE
- name: Test x86
run: $MZX_MAKE test
- name: Package x86 .zip
run: make archive
AArch64-Switch:
runs-on: ubuntu-latest
container: devkitpro/devkita64
steps:
- name: Install dependencies
run: sudo apt update && sudo apt install -y --no-install-recommends $MZXDEPS_DEBIAN_CROSS
- run: echo "PATH=$DEVKITPRO/devkitA64/bin:$PATH" >> $GITHUB_ENV
- uses: actions/checkout@v4
- name: Configure Switch
run: arch/switch/CONFIG.SWITCH
- name: Build Switch
run: $MZX_MAKE
- name: Package Switch .zip
run: make archive
ARM-3DS:
runs-on: ubuntu-latest
container: devkitpro/devkitarm
steps:
- name: Install dependencies
run: sudo apt update && sudo apt install -y --no-install-recommends $MZXDEPS_DEBIAN_CROSS
- run: echo "PATH=$DEVKITPRO/devkitARM/bin:$PATH" >> $GITHUB_ENV
- uses: actions/checkout@v4
- name: Configure 3DS
run: arch/3ds/CONFIG.3DS
- name: Build 3DS
run: $MZX_MAKE
- name: Package 3DS .zip
run: make archive
ARM-NDS:
runs-on: ubuntu-latest
container: devkitpro/devkitarm
steps:
- name: Install dependencies
run: sudo apt update && sudo apt install -y --no-install-recommends $MZXDEPS_DEBIAN_CROSS
- run: echo "PATH=$DEVKITPRO/devkitARM/bin:$PATH" >> $GITHUB_ENV
- uses: actions/checkout@v4
- name: Configure NDS
run: arch/nds/CONFIG.NDS
- name: Build NDS
run: $MZX_MAKE
- name: Package NDS .zip
run: make archive
ARM-NDS-BlocksDS:
runs-on: ubuntu-latest
container: skylyrac/blocksds:slim-latest
steps:
- name: Install dependencies
run: apt update && apt install -y --no-install-recommends $MZXDEPS_DEBIAN_CROSS
- name: Install target dependencies
run: wf-pacman -Syu --noconfirm && wf-pacman -S --noconfirm toolchain-gcc-arm-none-eabi-zlib
- run: echo "BLOCKSDS=/opt/blocksds/core" >> $GITHUB_ENV
- uses: actions/checkout@v4
- name: Configure NDS/BlocksDS
run: arch/nds-blocksds/CONFIG.NDS
- name: Build NDS/BlocksDS
run: $MZX_MAKE
- name: Package NDS/BlocksDS .zip
run: make archive
PowerPC-Wii:
runs-on: ubuntu-latest
container: devkitpro/devkitppc
steps:
- name: Install dependencies
run: sudo apt update && sudo apt install -y --no-install-recommends $MZXDEPS_DEBIAN_CROSS
- run: echo "PATH=$DEVKITPRO/devkitPPC/bin:$PATH" >> $GITHUB_ENV
- uses: actions/checkout@v4
- name: Configure Wii
run: arch/wii/CONFIG.WII
- name: Build Wii
run: $MZX_MAKE
- name: Package Wii .zip
run: make archive
PowerPC-WiiU:
runs-on: ubuntu-latest
container: devkitpro/devkitppc
steps:
- name: Install dependencies
run: sudo apt update && sudo apt install -y --no-install-recommends $MZXDEPS_DEBIAN_CROSS
- run: echo "PATH=$DEVKITPRO/devkitPPC/bin:$PATH" >> $GITHUB_ENV
- uses: actions/checkout@v4
- name: Configure Wii U
run: arch/wiiu/CONFIG.WIIU
- name: Build Wii U
run: $MZX_MAKE
- name: Package Wii U .zip
run: make archive
Emscripten-HTML5:
runs-on: ubuntu-latest
steps:
- name: Install dependencies
run: sudo apt update && sudo apt install -y --no-install-recommends $MZXDEPS_DEBIAN_CROSS
- name: Install Emscripten
uses: mymindstorm/setup-emsdk@v14
with:
version: 3.1.57
# actions-cache-folder: 'emsdk-cache'
- uses: actions/checkout@v4
- name: Configure HTML5
run: arch/emscripten/CONFIG.HTML5
- name: Build HTML5
run: $MZX_MAKE && make build
- name: Package HTML5 .zip
run: make archive
#
# Sanitizers.
#
AddressSanitizer:
runs-on: ubuntu-latest
env:
CC: clang
CXX: clang++
steps:
- name: Install dependencies
run: sudo apt update && sudo apt install -y --no-install-recommends $MZXDEPS_DEBIAN_SDL2
- uses: actions/checkout@v4
- name: Configure
run: ./config.sh --platform unix-devel --enable-asan --enable-extram
- name: Build
run: $MZX_MAKE
- name: Run tests
run: $MZX_MAKE test
# Note: requires all non-system/libc calls to be from instrumented libraries.
# For the regression tests, MZX can get away with just zlib.
# SDL calls into uninstrumented functions and is not built at all.
# libpng is temporarily disabled. libogg/libvorbis work with no issue.
# MemorySanitizer:
# runs-on: ubuntu-latest
# env:
# CC: clang
# CXX: clang++
# steps:
# - uses: actions/checkout@v4
# - name: Fetch dependencies
# run: |
# (cd scripts/deps;
# wget https://github.com/AliceLR/megazeux-dependencies/releases/download/v2.93c/megazeux-dependencies-2.93c-r0-linux-msan.tar.xz;
# tar -xJf megazeux-dependencies-*-linux-msan.tar.xz)
# - name: Configure
# run: ./config.sh --platform unix-devel --prefix scripts/deps/linux-msan/x86_64 --enable-msan --disable-sdl --disable-libpng --disable-x11 --enable-extram
# - name: Build
# run: $MZX_MAKE V=1
# - name: Run tests
# run: $MZX_MAKE V=1 test
UndefinedBehaviorSanitizer:
runs-on: ubuntu-latest
env:
CC: clang
CXX: clang++
UBSAN_OPTIONS: print_stacktrace=1
steps:
- name: Install dependencies
run: sudo apt update && sudo apt install -y --no-install-recommends $MZXDEPS_DEBIAN_SDL2
- uses: actions/checkout@v4
- name: Configure
run: ./config.sh --platform unix-devel --enable-ubsan --enable-extram
- name: Build
run: $MZX_MAKE
- name: Run tests
run: $MZX_MAKE test