GBA.emu update and code cleanup #135
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: EX Emulators | |
on: [push, pull_request] | |
jobs: | |
build: | |
name: Build | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
image: ["2600.emu", "C64.emu", "GBA.emu", "GBC.emu", "Lynx.emu", "MD.emu", "MSX.emu", "NEO.emu", "NES.emu", "NGP.emu", "PCE.emu", "Snes9x", "Snes9x-1.43-9", "Snes9x-1.43-15", "Swan.emu", "Saturn.emu"] | |
steps: | |
- name: Checkout emu-ex-plus-alpha repo | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Decode debug keystore | |
env: | |
DEBUG_KEYSTORE: ${{ secrets.DEBUG_KEYSTORE }} | |
run: | | |
if [ -z "$DEBUG_KEYSTORE" ] | |
then | |
echo "No debug keystore value" | |
else | |
echo $DEBUG_KEYSTORE > debug.keystore.base64 | |
base64 --decode debug.keystore.base64 > debug.keystore | |
sudo cp -f debug.keystore /root/.android/. | |
fi | |
- name: Install build dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y --no-install-recommends autoconf automake autopoint bash binutils-arm-linux-gnueabi clang cmake file gawk gettext git libtool libtool-bin llvm make nasm pkg-config unzip wget | |
- name: Set up JDK 21 | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'temurin' | |
java-version: '21' | |
- name: Set up environment | |
run: | | |
mkdir imagine-sdk | |
mkdir EX-Emulators | |
wget "https://dl.google.com/android/repository/android-ndk-r27-beta1-linux.zip" | |
unzip android-ndk-r27-beta1-linux.zip | |
echo "ANDROID_NDK_PATH=${{ github.workspace }}/android-ndk-r27-beta1" >> $GITHUB_ENV | |
echo "EMUFRAMEWORK_PATH=${{ github.workspace }}/EmuFramework" >> $GITHUB_ENV | |
echo "IMAGINE_PATH=${{ github.workspace }}/imagine" >> $GITHUB_ENV | |
echo "IMAGINE_SDK_PATH=${{ github.workspace }}/imagine-sdk" >> $GITHUB_ENV | |
echo "COMMIT_PREFIX=$(echo ${{ github.sha }} | cut -c1-8)" >> $GITHUB_ENV | |
- name: Run script | |
run: | | |
cd imagine/bundle/all | |
chmod +x ./makeAll-android.sh | |
./makeAll-android.sh install | |
shell: bash | |
- name: Build environment | |
run: | | |
make -f $IMAGINE_PATH/android-release.mk install V=1 -j`nproc` | |
make -f $EMUFRAMEWORK_PATH/android-release.mk config -j`nproc` | |
make -f $EMUFRAMEWORK_PATH/android-release.mk install V=1 -j`nproc` | |
- name: Build 2600.emu | |
if: ${{ matrix.image == '2600.emu' }} | |
run: | | |
cd 2600.emu | |
make -f android-release.mk android-apk V=1 -j`nproc` | |
cp target/android-release/build/outputs/apk/release/2600Emu-release.apk "../EX-Emulators/2600Emu-${COMMIT_PREFIX}.apk" | |
- name: Build C64.emu | |
if: ${{ matrix.image == 'C64.emu' }} | |
run: | | |
cd C64.emu | |
make -f android-release.mk android-apk V=1 -j`nproc` | |
cp target/android-release/build/outputs/apk/release/C64Emu-release.apk "../EX-Emulators/C64Emu-${COMMIT_PREFIX}.apk" | |
- name: Build GBA.emu | |
if: ${{ matrix.image == 'GBA.emu' }} | |
run: | | |
cd GBA.emu | |
make -f android-release.mk android-apk V=1 -j`nproc` | |
cp target/android-release/build/outputs/apk/release/GbaEmu-release.apk "../EX-Emulators/GbaEmu-${COMMIT_PREFIX}.apk" | |
- name: Build GBC.emu | |
if: ${{ matrix.image == 'GBC.emu' }} | |
run: | | |
cd GBC.emu | |
make -f android-release.mk android-apk V=1 -j`nproc` | |
cp target/android-release/build/outputs/apk/release/GbcEmu-release.apk "../EX-Emulators/GbcEmu-${COMMIT_PREFIX}.apk" | |
- name: Build Lynx.emu | |
if: ${{ matrix.image == 'Lynx.emu' }} | |
run: | | |
cd Lynx.emu | |
make -f android-release.mk android-apk V=1 -j`nproc` | |
cp target/android-release/build/outputs/apk/release/LynxEmu-release.apk "../EX-Emulators/LynxEmu-${COMMIT_PREFIX}.apk" | |
- name: Build MD.emu | |
if: ${{ matrix.image == 'MD.emu' }} | |
run: | | |
cd MD.emu | |
make -f android-release.mk android-apk V=1 -j`nproc` | |
cp target/android-release/build/outputs/apk/release/MdEmu-release.apk "../EX-Emulators/MdEmu-${COMMIT_PREFIX}.apk" | |
- name: Build MSX.emu | |
if: ${{ matrix.image == 'MSX.emu' }} | |
run: | | |
cd MSX.emu | |
make -f android-release.mk android-apk V=1 -j`nproc` | |
cp target/android-release/build/outputs/apk/release/MsxEmu-release.apk "../EX-Emulators/MsxEmu-${COMMIT_PREFIX}.apk" | |
- name: Build NEO.emu | |
if: ${{ matrix.image == 'NEO.emu' }} | |
run: | | |
cd NEO.emu | |
make -f android-release.mk android-apk V=1 -j`nproc` | |
cp target/android-release/build/outputs/apk/release/NeoEmu-release.apk "../EX-Emulators/NeoEmu-${COMMIT_PREFIX}.apk" | |
- name: Build NES.emu | |
if: ${{ matrix.image == 'NES.emu' }} | |
run: | | |
cd NES.emu | |
make -f android-release.mk android-apk V=1 -j`nproc` | |
cp target/android-release/build/outputs/apk/release/NesEmu-release.apk "../EX-Emulators/NesEmu-${COMMIT_PREFIX}.apk" | |
- name: Build NGP.emu | |
if: ${{ matrix.image == 'NGP.emu' }} | |
run: | | |
cd NGP.emu | |
make -f android-release.mk android-apk V=1 -j`nproc` | |
cp target/android-release/build/outputs/apk/release/NgpEmu-release.apk "../EX-Emulators/NgpEmu-${COMMIT_PREFIX}.apk" | |
- name: Build PCE.emu | |
if: ${{ matrix.image == 'PCE.emu' }} | |
run: | | |
cd PCE.emu | |
make -f android-release.mk android-apk V=1 -j`nproc` | |
cp target/android-release/build/outputs/apk/release/PceEmu-release.apk "../EX-Emulators/PceEmu-${COMMIT_PREFIX}.apk" | |
- name: Build Snes9x | |
if: ${{ matrix.image == 'Snes9x' }} | |
run: | | |
cd Snes9x | |
make -f android-release.mk android-apk V=1 -j`nproc` | |
cp target/android-release/build/outputs/apk/release/Snes9xEXPlus-release.apk "../EX-Emulators/Snes9xEXPlus-${COMMIT_PREFIX}.apk" | |
- name: Build Snes9x-1.43-9 | |
if: ${{ matrix.image == 'Snes9x-1.43-9' }} | |
run: | | |
cd Snes9x/1.43 | |
make -f android-release-9.mk android-apk V=1 -j`nproc` | |
cp target/android-release-9/build/outputs/apk/release/Snes9xEX-release.apk "../../EX-Emulators/Snes9xEX-9-${COMMIT_PREFIX}.apk" | |
- name: Build Snes9x-1.43-15 | |
if: ${{ matrix.image == 'Snes9x-1.43-15' }} | |
run: | | |
cd Snes9x/1.43 | |
make -f android-release-15.mk android-apk V=1 -j`nproc` | |
cp target/android-release-15/build/outputs/apk/release/Snes9xEX-release.apk "../../EX-Emulators/Snes9xEX-15-${COMMIT_PREFIX}.apk" | |
- name: Build Swan.emu | |
if: ${{ matrix.image == 'Swan.emu' }} | |
run: | | |
cd Swan.emu | |
make -f android-release.mk android-apk V=1 -j`nproc` | |
cp target/android-release/build/outputs/apk/release/SwanEmu-release.apk "../EX-Emulators/SwanEmu-${COMMIT_PREFIX}.apk" | |
- name: Build Saturn.emu | |
if: ${{ matrix.image == 'Saturn.emu' }} | |
run: | | |
cd Saturn.emu | |
make -f android-release.mk android-apk V=1 -j`nproc` | |
cp target/android-release/build/outputs/apk/release/SaturnEmu-release.apk "../EX-Emulators/SaturnEmu-${COMMIT_PREFIX}.apk" | |
- name: Upload EX-Emulators artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ matrix.image }} | |
path: EX-Emulators/ | |
release: | |
name: Release | |
runs-on: ubuntu-latest | |
needs: [build] | |
if: github.ref == 'refs/heads/master' | |
steps: | |
- name: Checkout emu-ex-plus-alpha repo | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Download Artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
path: EX-Emulators | |
merge-multiple: true | |
- name: Re-ZIP artifacts | |
run: | | |
mkdir dist | |
cd EX-Emulators | |
COMMIT_PREFIX=$(echo ${{ github.sha }} | cut -c1-8) | |
for artifact in *.apk | |
do | |
file_name="${artifact%.apk}" | |
echo "-> Creating ${file_name//-${COMMIT_PREFIX}/}.zip" | |
zip "../dist/${file_name//-${COMMIT_PREFIX}/}.zip" "${file_name}.apk" | |
done | |
zip -r "../dist/EX-Emulators.zip" *.apk | |
- name: Update Git Tag | |
run: | | |
git tag -f Pre-release | |
git push -f origin Pre-release | |
- name: Create Release | |
uses: ncipollo/release-action@v1 | |
with: | |
prerelease: true | |
allowUpdates: true | |
removeArtifacts: true | |
replacesArtifacts: false | |
tag: Pre-release | |
artifacts: "dist/*.zip" |