Files
RMG/.github/workflows/build.yml
T
2025-10-03 22:35:35 +02:00

174 lines
7.0 KiB
YAML

name: RMG
on: [push, pull_request]
jobs:
build-linux:
strategy:
matrix:
include:
- { os: ubuntu-24.04, features: ON, architecture: x86_64 }
- { os: ubuntu-24.04, features: OFF, architecture: x86_64 }
- { os: ubuntu-24.04-arm, features: ON, architecture: aarch64 }
- { os: ubuntu-24.04-arm, features: OFF, architecture: aarch64 }
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: hendrikmuhs/ccache-action@v1.2
with:
key: linux-${{ matrix.architecture }}-features-${{ matrix.features }}
- name: Install Packages
run: |
# remove and disable snap, this fixes long update times
# taken from https://github.com/ading2210/gh-actions-remove-snap/blob/main/workflow.sh
sudo systemctl disable --now snapd
sudo apt-get purge -y snapd
echo "Package: snapd" | sudo tee /etc/apt/preferences.d/disable-snap.pref
echo "Pin: release a=*" | sudo tee -a /etc/apt/preferences.d/disable-snap.pref
echo "Pin-Priority: -10" | sudo tee -a /etc/apt/preferences.d/disable-snap.pref
sudo apt-mark hold firefox
sudo apt-get -y update
sudo apt-get -y upgrade
sudo apt-get -y install cmake libhidapi-dev libsamplerate0-dev libspeex-dev libminizip-dev libfreetype6-dev \
libgl1-mesa-dev libglu1-mesa-dev pkg-config zlib1g-dev binutils-dev libspeexdsp-dev qt6-base-dev libqt6svg6-dev libqt6websockets6-dev libvulkan-dev \
build-essential nasm git zip appstream xvfb qt6ct mesa-vulkan-drivers
# sdl3 dependencies
sudo apt-get -y install build-essential git make \
pkg-config cmake ninja-build gnome-desktop-testing libasound2-dev libpulse-dev \
libaudio-dev libjack-dev libsndio-dev libx11-dev libxext-dev \
libxrandr-dev libxcursor-dev libxfixes-dev libxi-dev libxss-dev libxtst-dev \
libxkbcommon-dev libdrm-dev libgbm-dev libgl1-mesa-dev libgles2-mesa-dev \
libegl1-mesa-dev libdbus-1-dev libibus-1.0-dev libudev-dev
- name: Prepare Environment
run: |
echo "GIT_REVISION=$(git describe --tags --always)" >> $GITHUB_ENV
- name: Build SDL3
run: |
export sdl_dir="$(pwd)/../SDL3"
git clone https://github.com/libsdl-org/SDL.git "$sdl_dir" -b release-3.2.22 --depth=1
mkdir -p "$sdl_dir/build"
cmake -S "$sdl_dir" -B "$sdl_dir/build" \
-DCMAKE_BUILD_TYPE="Release" \
-DCMAKE_INSTALL_LIBDIR="lib/${{ matrix.architecture }}-linux-gnu" \
-DCMAKE_INSTALL_FULL_LIBDIR="/usr/lib/${{ matrix.architecture }}-linux-gnu" \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache
cmake --build "$sdl_dir/build" --parallel "$(nproc)"
sudo cmake --install "$sdl_dir/build" --prefix /usr/
- name: Build RMG (AppImage)
run: |
export src_dir="$(pwd)"
export build_dir="$(pwd)/Build/AppImage"
export bin_dir="$(pwd)/Bin/AppImage"
mkdir $build_dir Bin/ -p
cmake -S "$src_dir" -B "$build_dir" -DCMAKE_BUILD_TYPE="Release" \
-DDRAG_DROP=${{ matrix.features }} \
-DNETPLAY=${{ matrix.features }} \
-DVRU=${{ matrix.features }} \
-DUSE_ANGRYLION=${{ matrix.features }} \
-DUPDATER=${{ matrix.features }} \
-DAPPIMAGE_UPDATER=${{ matrix.features }} \
-DPORTABLE_INSTALL=OFF \
-DCMAKE_INSTALL_PREFIX="/usr" \
-DCMAKE_INSTALL_LIBDIR="lib" \
-G "Unix Makefiles"
cmake --build "$build_dir" --parallel "$(nproc)"
cmake --install "$build_dir" --strip --prefix="$bin_dir/usr"
shell: bash
- name: Create AppImage
if: ${{ matrix.features == 'ON' && matrix.architecture == 'x86_64' }}
run: |
./Package/AppImage/Create.sh
shell: bash
- name: Upload RMG (AppImage)
if: ${{ matrix.features == 'ON' && matrix.architecture == 'x86_64' }}
uses: actions/upload-artifact@v4
with:
name: RMG-Portable-Linux64-${{ env.GIT_REVISION }}
path: Bin/*.AppImage
build-windows:
runs-on: windows-2022
strategy:
matrix:
features: [ ON, OFF ]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: hendrikmuhs/ccache-action@v1.2
with:
key: windows-features-${{ matrix.features }}
- uses: msys2/setup-msys2@v2
with:
path-type: inherit
update: true
msystem: ucrt64
install: >-
make
mingw-w64-ucrt-x86_64-cmake
mingw-w64-ucrt-x86_64-gcc
mingw-w64-ucrt-x86_64-hidapi
mingw-w64-ucrt-x86_64-freetype
mingw-w64-ucrt-x86_64-libpng
mingw-w64-ucrt-x86_64-sdl3
mingw-w64-ucrt-x86_64-qt6
mingw-w64-ucrt-x86_64-hidapi
mingw-w64-ucrt-x86_64-speexdsp
mingw-w64-ucrt-x86_64-libsamplerate
mingw-w64-ucrt-x86_64-nasm
mingw-w64-ucrt-x86_64-minizip
mingw-w64-ucrt-x86_64-vulkan-headers
git
- name: Prepare Environment
run: |
$env:revision = git describe --tags --always
echo "GIT_REVISION=$env:revision" >> $env:GITHUB_ENV
shell: pwsh
- name: Build RMG (Portable)
run: |
export src_dir="$(pwd)"
export build_dir="$(pwd)/Build/Release"
cmake -S "$src_dir" -B "$build_dir" -DCMAKE_BUILD_TYPE="Release" \
-DDRAG_DROP=${{ matrix.features }} \
-DNETPLAY=${{ matrix.features }} \
-DVRU=${{ matrix.features }} \
-DUSE_ANGRYLION=${{ matrix.features }} \
-DUPDATER=${{ matrix.features }} \
-DPORTABLE_INSTALL=ON \
-G "MSYS Makefiles"
cmake --build "$build_dir" --parallel "$(nproc)"
cmake --install "$build_dir" --strip --prefix="$src_dir"
cmake --build "$build_dir" --target=bundle_dependencies
shell: msys2 {0}
- name: Create Installer
if: ${{ matrix.features == 'ON' }}
run: .\Build\Release\Source\Installer\CreateInstaller.bat
- name: Configure RMG (Portable)
if: ${{ matrix.features == 'ON' }}
run: touch Bin/Release/portable.txt
shell: msys2 {0}
- name: Upload RMG (Portable)
if: ${{ matrix.features == 'ON' }}
uses: actions/upload-artifact@v4
with:
name: RMG-Portable-Windows64-${{ env.GIT_REVISION }}
path: Bin/Release/*
- name: Upload RMG (Installer)
if: ${{ matrix.features == 'ON' }}
uses: actions/upload-artifact@v4
with:
name: RMG-Setup-Windows64-${{ env.GIT_REVISION }}
path: Bin/*.exe