name: generate-builds on: push: pull_request: concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: # build-linux-self-hosted: # strategy: # fail-fast: true # runs-on: [self-hosted, Linux] # steps: # - uses: actions/checkout@v4 # with: # submodules: true # - name: Install dependencies # run: | # sudo apt update # sudo apt install -y $(cat .github/workflows/apt-deps.txt) file # - name: Install latest SDL # run: | # export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" # if [ ! -d "SDL2-2.26.1" ]; then # wget https://www.libsdl.org/release/SDL2-2.26.1.tar.gz # tar -xzf SDL2-2.26.1.tar.gz # fi # cd SDL2-2.26.1 # ./configure # make -j # sudo make install # sudo cp -av /usr/local/lib/libSDL* /lib/x86_64-linux-gnu/ # - name: Build 2Ship # run: | # 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 --config Release --target Generate2ShipOtr -j # cmake --build build-cmake --config Release -j # (cd build-cmake && cpack -G External) # mv README.md readme.txt # mv build-cmake/*.appimage 2ship.appimage # env: # CC: gcc # CXX: g++ # # - name: Upload build # # uses: actions/upload-artifact@v4 # # with: # # name: 2ship-linux # # path: | # # 2ship.appimage # # readme.txt # build-windows-self-hosted: # runs-on: [self-hosted, Windows] # steps: # - name: Install dependencies # run: | # choco install ninja -y # choco install gzip -y # Add-Content $env:GITHUB_PATH $env:ChocolateyInstall # - uses: actions/checkout@v4 # with: # submodules: true # - name: Configure Developer Command Prompt # uses: ilammy/msvc-dev-cmd@v1 # - name: Copy Rom # run: Copy-Item -Path C:\baserom_mm.z64 -Destination ${{github.workspace}}/OTRExporter/baserom.z64 # - name: Build 2Ship # env: # VCPKG_ROOT: ${{github.workspace}}/vcpkg # run: | # 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 # cmake --build build-windows --config Release --target Generate2ShipOtr --parallel 10 # cmake --build build-windows --config Release --parallel 10 # (cd build-windows && cpack) # cd .. # mv _packages/*.zip _packages/2ship-windows.zip # # Temporarily replaced with an upload to R2 until we go public # # - name: Unzip package # # run: Expand-Archive -Path 2ship-windows.zip -DestinationPath 2ship-windows # # - name: Upload build # # if: ${{ startsWith(github.ref, 'refs/heads/develop') }} # # uses: actions/upload-artifact@v4 # # with: # # name: 2ship-windows # # path: 2ship-windows # - name: Upload build # if: ${{ startsWith(github.ref, 'refs/heads/develop') }} # uses: ryand56/r2-upload-action@latest # with: # r2-account-id: ${{ secrets.R2_ACCOUNT_ID }} # r2-access-key-id: ${{ secrets.R2_ACCESS_KEY_ID }} # r2-secret-access-key: ${{ secrets.R2_SECRET_ACCESS_KEY }} # r2-bucket: ${{ secrets.R2_BUCKET }} # source-dir: _packages # destination-dir: ./ generate-2ship-otr: runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 with: submodules: true - name: ccache uses: hendrikmuhs/ccache-action@v1.2.13 with: key: ${{ runner.os }}-otr-ccache-${{ github.ref }}-${{ github.sha }} restore-keys: | ${{ runner.os }}-otr-ccache-${{ github.ref }} ${{ runner.os }}-otr-ccache- - name: Install dependencies run: | sudo apt-get update sudo apt-get install -y $(cat .github/workflows/apt-deps.txt) - name: Cache build folders uses: actions/cache@v4 with: key: ${{ runner.os }}-otr-build-${{ github.ref }}-${{ github.sha }} restore-keys: | ${{ runner.os }}-otr-build-${{ github.ref }} ${{ runner.os }}-otr-build- path: | build-cmake SDL2-2.28.5 tinyxml2-10.0.0 - name: Install latest SDL run: | export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" if [ ! -d "SDL2-2.28.5" ]; then wget https://www.libsdl.org/release/SDL2-2.28.5.tar.gz tar -xzf SDL2-2.28.5.tar.gz fi cd SDL2-2.28.5 ./configure --enable-hidapi-libusb make -j 10 sudo make install sudo cp -av /usr/local/lib/libSDL* /lib/x86_64-linux-gnu/ - name: Install latest tinyxml2 run: | sudo apt-get remove libtinyxml2-dev export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" if [ ! -d "tinyxml2-10.0.0" ]; then wget https://github.com/leethomason/tinyxml2/archive/refs/tags/10.0.0.tar.gz tar -xzf 10.0.0.tar.gz fi cd tinyxml2-10.0.0 mkdir -p build cd build cmake .. make sudo make install - name: Generate 2ship.o2r run: | 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 --config Release --target Generate2ShipOtr -j3 - uses: actions/upload-artifact@v4 with: name: 2ship.o2r path: 2ship.o2r retention-days: 1 build-macos: needs: generate-2ship-otr runs-on: macos-14 steps: - uses: actions/checkout@v4 with: submodules: true - name: ccache uses: hendrikmuhs/ccache-action@v1.2.13 with: create-symlink: true key: ${{ runner.os }}-14-ccache-${{ github.ref }}-${{ github.sha }} restore-keys: | ${{ runner.os }}-14-ccache-${{ github.ref }} ${{ runner.os }}-14-ccache- # Needed to apply sudo for macports cache restore - name: Install gtar wrapper run: | sudo mv /opt/homebrew/bin/gtar /opt/homebrew/bin/gtar.orig sudo cp .github/workflows/gtar /opt/homebrew/bin/gtar sudo chmod +x /opt/homebrew/bin/gtar - name: Cache MacPorts id: cache-macports uses: actions/cache@v4 with: path: /opt/local/ key: ${{ runner.os }}-14-macports-${{ hashFiles('.github/workflows/macports-deps.txt') }} restore-keys: | ${{ runner.os }}-14-macports- - name: Install MacPorts (if necessary) run: | if [ command -v port &>/dev/null ]; then echo "MacPorts already installed" else wget https://github.com/macports/macports-base/releases/download/v2.9.3/MacPorts-2.9.3-14-Sonoma.pkg sudo installer -pkg ./MacPorts-2.9.3-14-Sonoma.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: Download 2ship.o2r uses: actions/download-artifact@v4 with: name: 2ship.o2r path: build-cmake/mm - name: Build 2Ship run: | 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 2Ship.dmg mv README.md readme.txt - name: Upload build uses: actions/upload-artifact@v4 with: name: 2ship-mac path: | 2Ship.dmg readme.txt build-linux: needs: generate-2ship-otr runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 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.13 with: key: linux-ccache-${{ github.ref }}-${{ github.sha }} restore-keys: | linux-ccache-${{ github.ref }} linux-ccache- - name: Cache build folders uses: actions/cache@v4 with: key: linux-build-${{ github.ref }}-${{ github.sha }} restore-keys: | linux-build-${{ github.ref }} linux-build- path: | SDL2-2.28.5 SDL2_net-2.2.0 tinyxml2-10.0.0 - name: Install latest SDL run: | export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" if [ ! -d "SDL2-2.28.5" ]; then wget https://www.libsdl.org/release/SDL2-2.28.5.tar.gz tar -xzf SDL2-2.28.5.tar.gz fi cd SDL2-2.28.5 ./configure --enable-hidapi-libusb make -j 10 sudo make install sudo cp -av /usr/local/lib/libSDL* /lib/x86_64-linux-gnu/ - name: Install latest tinyxml2 run: | sudo apt-get remove libtinyxml2-dev export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" if [ ! -d "tinyxml2-10.0.0" ]; then wget https://github.com/leethomason/tinyxml2/archive/refs/tags/10.0.0.tar.gz tar -xzf 10.0.0.tar.gz fi cd tinyxml2-10.0.0 mkdir -p build cd build cmake .. make sudo make install - name: Install latest SDL_net run: | export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" if [ ! -d "SDL2_net-2.2.0" ]; then 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 fi 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: Download 2ship.o2r uses: actions/download-artifact@v4 with: name: 2ship.o2r path: build-cmake/mm - name: Build 2Ship run: | 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 -DBUILD_REMOTE_CONTROL=1 cmake --build build-cmake --config Release -j3 (cd build-cmake && cpack -G External) mv README.md readme.txt mv build-cmake/*.appimage 2ship.appimage env: CC: gcc-12 CXX: g++-12 - name: Upload build uses: actions/upload-artifact@v4 with: name: 2ship-linux path: | 2ship.appimage readme.txt build-windows: needs: generate-2ship-otr runs-on: windows-latest steps: - name: Install dependencies run: | choco install ninja -y Remove-Item -Path "C:\ProgramData\Chocolatey\bin\ccache.exe" -Force -ErrorAction SilentlyContinue - uses: actions/checkout@v4 with: submodules: true - name: ccache uses: hendrikmuhs/ccache-action@v1.2.13 with: variant: sccache max-size: "1G" key: ${{ runner.os }}-ccache1-${{ github.ref }}-${{ github.sha }} restore-keys: | ${{ runner.os }}-ccache1-${{ github.ref }} ${{ runner.os }}-ccache1- - name: Cache build folder uses: actions/cache@v4 with: save-always: true key: ${{ runner.os }}-build1-${{ github.ref }}-${{ github.sha }} restore-keys: | ${{ runner.os }}-build1-${{ github.ref }} ${{ runner.os }}-build1- path: | build-windows vcpkg - name: Configure Developer Command Prompt uses: ilammy/msvc-dev-cmd@v1 - name: Download 2ship.o2r uses: actions/download-artifact@v4 with: name: 2ship.o2r path: build-windows/mm - name: Build 2Ship env: VCPKG_ROOT: ${{github.workspace}}/vcpkg run: | 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=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache cmake --build build-windows --config Release --parallel 10 (cd build-windows && cpack) cd .. mv _packages/*.zip _packages/2ship-windows.zip - name: Unzip package run: Expand-Archive -Path _packages/2ship-windows.zip -DestinationPath 2ship-windows - name: Upload build uses: actions/upload-artifact@v4 with: name: 2ship-windows path: 2ship-windows