name: generate-builds on: push: pull_request: concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: extract-assets: runs-on: [ self-hosted, asset-builder ] steps: - uses: actions/checkout@v3 with: submodules: true - name: Extract assets run: | cp ../../../ZELOOTD.z64 OTRExporter/baserom_non_mq.z64 cmake --no-warn-unused-cli -H. -Bbuild-cmake -GNinja -DCMAKE_BUILD_TYPE:STRING=Release cmake --build build-cmake --target ExtractAssets --config Release zip -r assets.zip soh/assets - uses: actions/upload-artifact@v3 with: name: assets path: assets.zip retention-days: 1 build-macos: needs: extract-assets runs-on: macos-12 steps: - uses: actions/checkout@v3 with: submodules: true - name: ccache uses: hendrikmuhs/ccache-action@v1.2 with: key: ${{ runner.os }}-ccache - name: Install gtar wrapper run: | sudo mv /usr/local/bin/gtar /usr/local/bin/gtar.orig sudo cp .github/workflows//gtar /usr/local/bin/gtar sudo chmod +x /usr/local/bin/gtar - name: Cache MacPorts id: cache-macports uses: actions/cache@v2 with: path: /opt/local/ key: ${{ runner.os }}-macports-${{ hashFiles('.github/workflows/macports-deps.txt') }} restore-keys: | ${{ runner.os }}-macports- - name: Install MacPorts (if necessary) run: | if [ -d /opt/local/ ]; then echo "MacPorts already installed" else wget https://github.com/macports/macports-base/releases/download/v2.7.2/MacPorts-2.7.2-12-Monterey.pkg sudo installer -pkg ./MacPorts-2.7.2-12-Monterey.pkg -target / fi echo "/opt/local/bin:/opt/local/sbin" >> $GITHUB_PATH - name: Install dependencies run: | brew uninstall --ignore-dependencies libpng sudo port install $(cat .github/workflows/macports-deps.txt) brew install ninja - name: Restore assets uses: actions/download-artifact@v3 with: name: assets - name: Build SoH run: | unzip -o assets.zip export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" cmake --no-warn-unused-cli -H. -Bbuild-cmake -GNinja -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" cmake --build build-cmake --config Release --parallel 10 (cd build-cmake && cpack) mv _packages/*.dmg SoH.dmg mv README.md readme.txt - name: Upload build uses: actions/upload-artifact@v3 with: name: soh-mac path: | SoH.dmg readme.txt build-linux: needs: extract-assets runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v3 with: submodules: true - name: Install dependencies run: | sudo apt-get update sudo apt-get install -y $(cat .github/workflows/apt-deps.txt) - name: ccache uses: hendrikmuhs/ccache-action@v1.2 with: key: ${{ runner.os }}-ccache - name: Install latest SDL run: | export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" wget https://www.libsdl.org/release/SDL2-2.24.1.tar.gz tar -xzf SDL2-2.24.1.tar.gz cd SDL2-2.24.1 ./configure make -j 10 sudo make install sudo cp -av /usr/local/lib/libSDL* /lib/x86_64-linux-gnu/ - name: Install latest SDL_net run: | export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" wget https://www.libsdl.org/projects/SDL_net/release/SDL2_net-2.2.0.tar.gz tar -xzf SDL2_net-2.2.0.tar.gz cd SDL2_net-2.2.0 ./configure make -j 10 sudo make install sudo cp -av /usr/local/lib/libSDL* /lib/x86_64-linux-gnu/ - name: Restore assets uses: actions/download-artifact@v3 with: name: assets - name: Build SoH run: | unzip -o assets.zip export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" cmake --no-warn-unused-cli -H. -Bbuild-cmake -GNinja -DCMAKE_BUILD_TYPE:STRING=Release cmake --build build-cmake --target OTRGui -j3 cmake --build build-cmake --config Release -j3 (cd build-cmake && cpack -G External) mv README.md readme.txt mv build-cmake/*.appimage soh.appimage env: CC: gcc-10 CXX: g++-10 - name: Upload build uses: actions/upload-artifact@v3 with: name: soh-linux path: | soh.appimage readme.txt build-switch: needs: extract-assets runs-on: ubuntu-latest container: image: devkitpro/devkita64:latest steps: - name: Install dependencies run: | sudo apt-get update sudo apt-get install -y ninja-build - uses: actions/checkout@v3 with: submodules: true - name: ccache uses: hendrikmuhs/ccache-action@v1.2 with: key: ${{ runner.os }}-switch-ccache - name: Restore assets uses: actions/download-artifact@v3 with: name: assets - name: Build SoH run: | unzip -o assets.zip cmake -H. -Bbuild-switch -GNinja -DCMAKE_TOOLCHAIN_FILE=/opt/devkitpro/cmake/Switch.cmake -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache cmake --build build-switch --target soh_nro -j3 mv build-switch/soh/*.nro soh.nro mv README.md readme.txt - name: Upload build uses: actions/upload-artifact@v3 with: name: soh-switch path: | soh.nro readme.txt build-wiiu: needs: extract-assets runs-on: ubuntu-latest container: image: devkitpro/devkitppc:latest steps: - name: Install dependencies run: | sudo apt-get update sudo apt-get install -y ninja-build - uses: actions/checkout@v3 with: submodules: true - name: ccache uses: hendrikmuhs/ccache-action@v1.2 with: key: ${{ runner.os }}-wiiu-ccache - name: Restore assets uses: actions/download-artifact@v3 with: name: assets - name: Build SoH run: | unzip -o assets.zip cmake -H. -Bbuild-wiiu -GNinja -DCMAKE_TOOLCHAIN_FILE=/opt/devkitpro/cmake/WiiU.cmake -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache cmake --build build-wiiu --target soh_wuhb --config Release -j3 mv build-wiiu/soh/*.rpx soh.rpx mv build-wiiu/soh/*.wuhb soh.wuhb mv README.md readme.txt env: DEVKITPRO: /opt/devkitpro DEVKITPPC: /opt/devkitpro/devkitPPC - name: Upload build uses: actions/upload-artifact@v3 with: name: soh-wiiu path: | soh.rpx soh.wuhb readme.txt build-windows: needs: extract-assets runs-on: windows-latest steps: - name: Install dependencies run: | choco install ninja Remove-Item -Path "C:\ProgramData\Chocolatey\bin\ccache.exe" -Force - uses: actions/checkout@v3 with: submodules: true - name: ccache uses: dcvz/ccache-action@27b9f33213c0079872f064f6b6ba0233dfa16ba2 with: key: ${{ runner.os }}-ccache - name: Restore assets uses: actions/download-artifact@v3 with: name: assets - uses: ilammy/msvc-dev-cmd@v1 - name: Setup 7-Zip run: | "C:\Program Files\7-Zip" >> $env:GITHUB_PATH - name: Build SoH run: | 7z x assets.zip -aoa set $env:PATH="$env:USERPROFILE/.cargo/bin;$env:PATH" cmake -S . -B build-windows -G Ninja -DCMAKE_MAKE_PROGRAM=ninja -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache cmake --build build-windows --target OTRGui --config Release --parallel 10 cmake --build build-windows --config Release --parallel 10 cd build-windows cpack -G ZIP - name: Upload build uses: actions/upload-artifact@v3 with: name: soh-windows path: _packages/*.zip