Files
nunuhara_xsystem4/.github/workflows/build.yml
T

195 lines
5.5 KiB
YAML

name: Build
on: [push, pull_request]
jobs:
linux-build:
runs-on: ubuntu-latest
strategy:
matrix:
build-type: ["debug", "release"]
name: Linux ${{ matrix.build-type }}
steps:
- name: Checkout Source
uses: actions/checkout@v4
with:
submodules: recursive
- name: Install Dependencies
run: |
sudo apt update
sudo apt install flex bison meson libfreetype-dev libglew-dev libffi-dev libpng-dev libsndfile-dev libturbojpeg0-dev libwebp-dev libsdl2-dev zlib1g-dev
- name: Build
run: |
mkdir -p out/${{ matrix.build-type }}
meson -Dbuildtype=${{ matrix.build-type }} out/${{ matrix.build-type }}
ninja -C out/${{ matrix.build-type }}
- name: Test
run: out/${{ matrix.build-type }}/src/xsystem4 test/Run/test.ain
flatpak-build:
name: Flatpak
runs-on: ubuntu-latest
container:
image: ghcr.io/flathub-infra/flatpak-github-actions:gnome-48
options: --privileged
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: flatpak/flatpak-github-actions/flatpak-builder@v6
with:
bundle: xsystem4-linux-x86_64-nightly.flatpak
manifest-path: technology.haniwa.xsystem4.yml
cache-key: flatpak-builder-${{ github.sha }}
windows-build:
runs-on: windows-latest
name: Windows
defaults:
run:
shell: msys2 {0}
steps:
- name: Checkout Source
uses: actions/checkout@v4
with:
submodules: recursive
- name: Setup MSYS2
uses: msys2/setup-msys2@v2
with:
update: true
install: >-
base-devel
git
nasm
diffutils
zip
mingw-w64-x86_64-gcc
mingw-w64-x86_64-meson
mingw-w64-x86_64-pkg-config
mingw-w64-x86_64-SDL2
mingw-w64-x86_64-freetype
mingw-w64-x86_64-libjpeg-turbo
mingw-w64-x86_64-libwebp
mingw-w64-x86_64-libpng
mingw-w64-x86_64-libsndfile
mingw-w64-x86_64-glew
- name: Cache FFmpeg
id: cache-ffmpeg
uses: actions/cache@v4
with:
path: FFmpeg/destdir
key: ${{ runner.os }}-ffmpeg-n7.1.2
- name: Build FFmpeg
if: ${{ steps.cache-ffmpeg.outputs.cache-hit != 'true' }}
run: |
git clone --depth 1 --branch n7.1.2 https://github.com/FFmpeg/FFmpeg.git
cd FFmpeg
./configure --disable-everything \
--enable-decoder=mpegvideo \
--enable-decoder=mpeg1video \
--enable-decoder=mpeg2video \
--enable-decoder=mp2 \
--enable-parser=mpegaudio \
--enable-parser=mpegvideo \
--enable-demuxer=mpegps \
--enable-demuxer=mpegts \
--enable-demuxer=mpegtsraw \
--enable-demuxer=mpegvideo \
--enable-decoder=vc1 \
--enable-decoder=wmapro \
--enable-parser=vc1 \
--enable-hwaccel=vc1_d3d11va \
--enable-hwaccel=vc1_d3d11va2 \
--enable-hwaccel=vc1_dxva2 \
--enable-demuxer=asf \
--enable-protocol=file \
--enable-filter=scale \
--enable-static \
--disable-shared \
--extra-libs=-static \
--extra-cflags=--static \
--prefix=/mingw64
make -j$(nproc)
mkdir destdir
DESTDIR=destdir make install
cd ..
- name: Install FFmpeg
run: |
cp -a FFmpeg/destdir/. /
- name: Build
run: |
mkdir debug
meson debug -Dbuildtype=debug
ninja -C debug
mkdir release
meson release -Dbuildtype=release
ninja -C release
- name: Test
run: |
debug/src/xsystem4.exe test/Run/test.ain
release/src/xsystem4.exe test/Run/test.ain
- name: Copy licenses
run: |
ls /mingw64/share/licenses
mkdir dist
cp -r /mingw64/share/licenses dist/
- name: Package
run: |
cp release/src/xsystem4.exe COPYING README.md game_compatibility.md dist/
cp debug/src/xsystem4.exe dist/xsystem4-debug.exe
cp /mingw64/bin/glew32.dll dist/
cp extra/*.lnk dist/
cp -r fonts dist/
cp -r shaders dist/
mv dist xsystem4
zip -r -9 xsystem4-windows-x86_64-nightly.zip xsystem4
- name: Upload build artifact
uses: actions/upload-artifact@v4
with:
name: xsystem4
path: xsystem4-windows-x86_64-nightly.zip
nightly:
name: Update nightly release
needs: [windows-build, flatpak-build]
if: ${{ github.repository == 'nunuhara/xsystem4' && github.ref == 'refs/heads/master' }}
runs-on: ubuntu-latest
steps:
- name: Download release artifacts
uses: actions/download-artifact@v5
with:
merge-multiple: true
- name: Update nightly tag
uses: richardsimko/update-tag@v1
with:
tag_name: nightly
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Release nightly
uses: softprops/action-gh-release@v2
with:
prerelease: true
name: nightly
tag_name: nightly
files: |
xsystem4-windows-x86_64-nightly.zip
xsystem4-linux-x86_64-nightly.flatpak
fail_on_unmatched_files: true