name: Build Emulator on: push: branches: [ "main" ] paths: ["gb-emu/**", "lib/**", "vendored/**", "Cargo.toml", ".github/workflows/build-emu.yml"] env: CARGO_TERM_COLOR: always MACOSX_DEPLOYMENT_TARGET: 10.7 jobs: build: runs-on: ${{ matrix.os }}-latest strategy: fail-fast: false matrix: os: [ubuntu, macos, windows] steps: - name: checkout uses: actions/checkout@v3 - name: pull submodules run: git submodule update --init --recursive - name: get rust toolchain uses: dtolnay/rust-toolchain@nightly - name: install rust aarch64 and x86_64 targets for mac run: rustup target add aarch64-apple-darwin x86_64-apple-darwin if: ${{ matrix.os == 'macos' }} - name: cache rust build uses: Swatinem/rust-cache@v2 with: shared-key: emulator-${{ matrix.os }} - name: install cached apt packages uses: awalsh128/cache-apt-pkgs-action@latest if: ${{ matrix.os == 'ubuntu' }} with: packages: libasound2-dev libudev-dev version: 1.0 - name: build run: cargo build --release if: ${{ matrix.os != 'macos' }} - name: build x86_64 run: cargo build --release --target x86_64-apple-darwin if: ${{ matrix.os == 'macos' }} - name: build aarch64 run: cargo build --release --target aarch64-apple-darwin if: ${{ matrix.os == 'macos' }} - name: upload build (linux) uses: actions/upload-artifact@v3 if: ${{ matrix.os == 'ubuntu' }} with: name: gb-emu-linux path: target/release/gb-emu - name: upload build (windows) uses: actions/upload-artifact@v3 if: ${{ matrix.os == 'windows' }} with: name: gb-emu-windows path: target/release/gb-emu.exe - name: upload build (macos x86_64) uses: actions/upload-artifact@v3 if: ${{ matrix.os == 'macos' }} with: name: gb-emu-macos-x86_64 path: target/x86_64-apple-darwin/release/gb-emu - name: upload build (macos aarch64) uses: actions/upload-artifact@v3 if: ${{ matrix.os == 'macos' }} with: name: gb-emu-macos-aarch64 path: target/aarch64-apple-darwin/release/gb-emu