summaryrefslogtreecommitdiff
path: root/.github/workflows/ci.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/ci.yml')
-rw-r--r--.github/workflows/ci.yml89
1 files changed, 89 insertions, 0 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 000000000..cd2132a82
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,89 @@
+name: Build
+
+# Build on every branch push, tag push, and pull request change:
+on:
+ push:
+ pull_request:
+
+jobs:
+ build_repo:
+ # This is a *private* build container.
+ container: ghcr.io/zeldaret/oot-build:main
+
+ name: Build repo (${{ matrix.version }})
+ runs-on: ubuntu-latest
+
+ strategy:
+ fail-fast: false
+ matrix:
+ version:
+ - ntsc-1.0 # N64 NTSC 1.0 (Japan/US depending on REGION)
+ - ntsc-1.1 # N64 NTSC 1.1 (Japan/US depending on REGION)
+ - pal-1.0 # N64 PAL 1.0 (Europe)
+ - ntsc-1.2 # N64 NTSC 1.2 (Japan/US depending on REGION)
+ - pal-1.1 # N64 PAL 1.1 (Europe)
+ - gc-jp # GameCube Japan
+ - gc-jp-mq # GameCube Japan Master Quest
+ - gc-us # GameCube US
+ - gc-us-mq # GameCube US Master Quest
+ - gc-eu-dbg-2 # GameCube Europe/PAL Debug (earlier build)
+ - gc-eu-mq-dbg # GameCube Europe/PAL Master Quest Debug
+ - gc-eu-dbg # GameCube Europe/PAL Debug
+ - gc-eu # GameCube Europe/PAL
+ - gc-eu-mq # GameCube Europe/PAL Master Quest
+ - gc-jp-ce # GameCube Japan (Collector's Edition disc)
+ - ique-cn # iQue Player (Simplified Chinese)
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v6
+
+ - name: git config safe.directory
+ run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
+
+ - name: Install system dependencies
+ run: |
+ apt-get install -y git build-essential binutils-mips-linux-gnu curl python3 python3-pip python3-venv libxml2-dev
+
+ - name: Get the dependency
+ run: ln -s /orig/${{ matrix.version }}/baserom.z64 baseroms/${{ matrix.version }}/baserom.z64
+
+ - name: Setup
+ run: make -j $(nproc) VERSION=${{ matrix.version }} setup
+
+ - name: Build ${{ matrix.version }}
+ id: build
+ run: make -j $(nproc) VERSION=${{ matrix.version }}
+
+ - name: Fix BSS and generate patch
+ if: failure() && steps.build.outcome == 'failure'
+ uses: ./.github/actions/fix-bss-and-generate-patch
+ with:
+ version: ${{ matrix.version }}
+
+ - name: Upload map
+ uses: actions/upload-artifact@v6
+ with:
+ name: oot-${{ matrix.version }}.map
+ path: build/${{ matrix.version }}/oot-${{ matrix.version }}.map
+
+ merge_bss_fixes:
+ name: Merge BSS fixes
+ runs-on: ubuntu-latest
+ needs: [build_repo]
+ if: '!cancelled()' # Run even if build_repo fails
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v6
+
+ - name: Download patches
+ uses: actions/download-artifact@v8
+ with:
+ pattern: fix_bss_*.patch
+ merge-multiple: true
+
+ - name: Apply patches
+ run: python3 .github/scripts/apply_fix_bss_patches.py
+
+ - name: Generate patch
+ run: .github/scripts/generate_patch.sh