Build RSDKv5 #50
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build RSDKv5 | |
on: workflow_dispatch | |
# each artifact is like 15MB so we'll start by only doing it manually | |
# on: | |
# push: | |
# branches: | |
# - master | |
env: | |
GENERAL_FLAGS: "-DRETRO_DISABLE_PLUS=ON -DCMAKE_BUILD_TYPE=Release" | |
V5_FLAGS: "-DRETRO_REVISION=2" | |
V5U_FLAGS: "-DRETRO_REVISION=3" | |
# Normally you would use $VCPKG_INSTALLATION_PATH, but it's broken...so hardcode C:/vcpkg | |
GENERAL_WIN_FLAGS: "-DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake" | |
WIN32_FLAGS: "-DVCPKG_TARGET_TRIPLET=x86-windows-static -A Win32" | |
WIN64_FLAGS: "-DVCPKG_TARGET_TRIPLET=x64-windows-static" | |
# FIXME: For some reason ubuntu enables _FORTIFY_SOURCE by default, so let's override it to prevent IO bugs | |
GENERAL_LINUX_FLAGS: "-DCMAKE_CXX_FLAGS='-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0'" | |
jobs: | |
v5-windows: | |
runs-on: windows-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Install dependencies | |
run: vcpkg install libtheora libogg --triplet=x86-windows-static | |
- name: Build RSDKv5 + U | |
run: | | |
cmake -B build_v5 ${{env.GENERAL_FLAGS}} ${{env.GENERAL_WIN_FLAGS}} ${{env.WIN32_FLAGS}} ${{env.V5_FLAGS}} | |
cmake --build build_v5 --parallel --config Release | |
cmake -B build_v5U ${{env.GENERAL_FLAGS}} ${{env.GENERAL_WIN_FLAGS}} ${{env.WIN32_FLAGS}} ${{env.V5U_FLAGS}} | |
cmake --build build_v5U --parallel --config Release | |
- name: Move artifacts | |
run: | | |
mkdir artifacts | |
mv ./build_*/Release/*.exe ./artifacts | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: v5-windows | |
path: artifacts | |
v5-windows-x64: | |
runs-on: windows-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Install dependencies | |
run: vcpkg install libtheora libogg --triplet=x64-windows-static | |
- name: Build RSDKv5 + U | |
run: | | |
cmake -B build_v5 ${{env.GENERAL_FLAGS}} ${{env.GENERAL_WIN_FLAGS}} ${{env.WIN64_FLAGS}} ${{env.V5_FLAGS}} | |
cmake --build build_v5 --parallel --config Release | |
cmake -B build_v5U ${{env.GENERAL_FLAGS}} ${{env.GENERAL_WIN_FLAGS}} ${{env.WIN64_FLAGS}} ${{env.V5U_FLAGS}} | |
cmake --build build_v5U --parallel --config Release | |
- name: Move artifacts | |
run: | | |
mkdir artifacts | |
mv ./build_*/Release/*.exe ./artifacts | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: v5-windows-x64 | |
path: artifacts | |
v5-linux: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Install dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install libogg-dev libtheora-dev libglew-dev libglfw3-dev | |
- name: Build RSDKv5 + U OGL | |
run: | | |
cmake -B build_v5 ${{env.GENERAL_FLAGS}} ${{env.GENERAL_LINUX_FLAGS}} ${{env.V5_FLAGS}} | |
cmake --build build_v5 --parallel | |
cmake -B build_v5U ${{env.GENERAL_FLAGS}} ${{env.GENERAL_LINUX_FLAGS}} ${{env.V5U_FLAGS}} | |
cmake --build build_v5U --parallel | |
# tar the executables so that they don't lose exec permissions | |
# see: https://github.com/actions/upload-artifact?tab=readme-ov-file#permission-loss | |
- name: Move artifacts | |
run: | | |
mkdir artifacts | |
mv ./build_*/RSDKv5* ./artifacts | |
tar -czvf linux.tar.gz -C ./artifacts . | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: v5-linux | |
path: linux.tar.gz | |
v5-android: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout RSDKv5 | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Checkout Sonic Mania | |
uses: actions/checkout@v4 | |
with: | |
repository: "RSDKModding/Sonic-Mania-Decompilation" | |
path: "Sonic-Mania-Decompilation" | |
- name: Checkout Example-Mods | |
uses: actions/checkout@v4 | |
with: | |
repository: "RSDKModding/RSDKv5-Example-Mods" | |
path: "RSDKv5-Example-Mods" | |
- name: Checkout GameAPI | |
uses: actions/checkout@v4 | |
with: | |
repository: "RSDKModding/RSDKv5-GameAPI" | |
path: "RSDKv5-GameAPI" | |
- name: Setup RSDKv5 dependencies | |
working-directory: ./dependencies/android | |
run: | | |
curl -L -O https://downloads.xiph.org/releases/ogg/libogg-1.3.5.zip | |
curl -L -O https://downloads.xiph.org/releases/theora/libtheora-1.1.1.zip | |
unzip \*.zip | |
rm *.zip | |
rsync -ar libogg-*/* libogg | |
mv libtheora-* libtheora | |
- name: Setup RSDKv5 & mods symlinks | |
run: | | |
rm Game | |
rmdir $PWD/Sonic-Mania-Decompilation/dependencies/RSDKv5 | |
ln -s $PWD $PWD/Sonic-Mania-Decompilation/dependencies/RSDKv5 | |
ln -s $PWD/RSDKv5-GameAPI RSDKv5-Example-Mods/ManiaTouchControls/GameAPI | |
ln -s $PWD/RSDKv5-GameAPI RSDKv5-Example-Mods/UltrawideMania/GameAPI | |
ln -s $PWD/Sonic-Mania-Decompilation ./android/app/jni/Game | |
ln -s $PWD/RSDKv5-GameAPI ./android/app/jni/GameAPI | |
ln -s $PWD/RSDKv5-Example-Mods/ManiaTouchControls ./android/app/jni/MTC | |
ln -s $PWD/RSDKv5-Example-Mods/UltrawideMania ./android/app/jni/UWM | |
- name: Set up JDK 21 | |
uses: actions/setup-java@v4 | |
with: | |
java-version: '21' | |
distribution: 'temurin' | |
- name: Setup Android SDK | |
uses: android-actions/setup-android@v3 | |
- name: Build Mania+RSDKv5 Android | |
working-directory: ./android | |
run: | | |
./gradlew assemble --no-daemon -PABIFILTERS="armeabi-v7a;arm64-v8a" -PRETRO_DISABLE_PLUS | |
- name: Bundle APK & mods | |
run: | | |
mkdir -p artifacts/mods | |
cp -r android/app/build/outputs/apk/release/*.apk artifacts | |
mkdir -p artifacts/mods/MTC | |
cp -r android/app/jni/MTC/build/* artifacts/mods/MTC | |
mkdir -p artifacts/mods/UWM | |
cp -r android/app/jni/UWM/build/* artifacts/mods/UWM | |
mkdir -p artifacts/mods/GLShaders/Data/Shaders | |
cp -r RSDKv5/Shaders/OGL artifacts/mods/GLShaders/Data/Shaders | |
printf "Name=GLShaders\nDescription=OGLShaders\nAuthor=Ducky\nVersion=1.0.0\nTargetVersion=5\n" > artifacts/mods/GLShaders/mod.ini | |
printf "[Mods]\nMTC=y\nUWM=y\nGLShaders=y\n" > artifacts/mods/modconfig.ini | |
# HACK: Remove RSDKv5 symlink in Mania to prevent warning in post checkout cleanup | |
- name: Cleanup | |
run: rm $PWD/Sonic-Mania-Decompilation/dependencies/RSDKv5 | |
- name: Upload artifact Android | |
uses: actions/upload-artifact@v4 | |
with: | |
name: v5-android | |
path: artifacts |