[Inagaki] Add GameAudio::GameSoundTable implementation #550
Workflow file for this run
This file contains hidden or 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 | |
| on: | |
| push: | |
| pull_request: | |
| jobs: | |
| build: | |
| container: ghcr.io/doldecomp/mkdd-build:main | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| version: [MarioClub_us] | |
| steps: | |
| # Checkout the repository | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| submodules: recursive | |
| # Set Git config | |
| - name: Git config | |
| run: git config --global --add safe.directory "$GITHUB_WORKSPACE" | |
| # Determine which .cpp files changed (PR: vs base branch; push: vs prev commit) | |
| - name: Changed .cpp files | |
| run: | | |
| if [ "${{ github.event_name }}" = "pull_request" ]; then | |
| base="${{ github.event.pull_request.base.sha }}" | |
| else | |
| base="${{ github.event.before }}" | |
| fi | |
| if [ -z "$base" ] \ | |
| || [ "$base" = "0000000000000000000000000000000000000000" ] \ | |
| || ! git rev-parse -q --verify "$base^{commit}" >/dev/null 2>&1; then | |
| base="$(git rev-parse -q --verify HEAD~1 || true)" | |
| fi | |
| if [ -n "$base" ]; then | |
| git diff --name-only --diff-filter=d "$base" HEAD -- '*.cpp' \ | |
| > changed_cpp.txt | |
| else | |
| : > changed_cpp.txt | |
| fi | |
| echo "Changed .cpp files:"; cat changed_cpp.txt | |
| # Normalize file mod times | |
| - name: Restore timestamps | |
| run: | | |
| uv run https://raw.githubusercontent.com/MestreLion/git-tools/refs/tags/v2022.12/git-restore-mtime \ | |
| --merge --commit-time | |
| # Copy the original files to the workspace | |
| - name: Prepare | |
| run: cp -a /orig . | |
| # Restore cached files | |
| - name: Cache build | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| build | |
| .ninja_deps | |
| .ninja_log | |
| key: ${{ runner.os }}-${{ matrix.version }}-${{ github.sha }} | |
| restore-keys: ${{ runner.os }}-${{ matrix.version }}- | |
| # Build the project | |
| - name: Build | |
| run: | | |
| python configure.py --map --version ${{ matrix.version }} \ | |
| --binutils /binutils --compilers /compilers | |
| ninja all_source progress build/${{ matrix.version }}/report.json | |
| # Upload map files | |
| - name: Upload map | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ matrix.version }}_maps | |
| path: build/${{ matrix.version }}/**/*.MAP | |
| # Upload progress report | |
| - name: Upload report | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ matrix.version }}_report | |
| path: build/${{ matrix.version }}/report.json | |
| # Validate map symbol presence/order/linkage for each changed .cpp | |
| - name: Validate symbol order | |
| run: | | |
| if [ ! -s changed_cpp.txt ]; then | |
| echo "No changed .cpp files; nothing to validate." | |
| exit 0 | |
| fi | |
| NM="$(command -v powerpc-eabi-nm || true)" | |
| if [ -z "$NM" ]; then | |
| NM="$(find /binutils -name powerpc-eabi-nm -type f 2>/dev/null | head -1)" | |
| fi | |
| if [ -z "$NM" ] || [ ! -x "$NM" ]; then | |
| echo "::error:: powerpc-eabi-nm not found; cannot run symbol-order check." | |
| exit 1 | |
| fi | |
| export NM | |
| echo "Using nm: $NM" | |
| python tools/check-changed-symbol-order.py $(cat changed_cpp.txt) |