name: Rust on: push: branches: ["main"] pull_request: branches: ["main"] env: CARGO_TERM_COLOR: always jobs: build-linux: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: include: - os: ubuntu-24.04 target: x86_64-unknown-linux-gnu arch: linux-x86_64 - os: ubuntu-24.04-arm target: aarch64-unknown-linux-gnu arch: linux-aarch64 steps: - uses: actions/checkout@v4 with: submodules: recursive - uses: actions-rust-lang/setup-rust-toolchain@v1 with: target: ${{ matrix.target }} rustflags: "" - name: Install SDL Dependencies # https://wiki.libsdl.org/SDL3/README/linux#build-dependencies uses: awalsh128/cache-apt-pkgs-action@v1 with: packages: build-essential git make \ pkg-config cmake ninja-build gnome-desktop-testing libasound2-dev libpulse-dev \ libaudio-dev libjack-dev libsndio-dev libx11-dev libxext-dev \ libxrandr-dev libxcursor-dev libxfixes-dev libxi-dev libxss-dev \ libxkbcommon-dev libdrm-dev libgbm-dev libgl1-mesa-dev libgles2-mesa-dev \ libegl1-mesa-dev libdbus-1-dev libibus-1.0-dev libudev-dev fcitx-libs-dev \ libpipewire-0.3-dev libwayland-dev libdecor-0-dev liburing-dev version: ${{ matrix.target }}-1.0 - name: Build run: | cargo build --release -v --target=${{ matrix.target }} mkdir output cp target/${{ matrix.target }}/release/gopher64 output/gopher64-${{ matrix.arch }} - name: Upload file uses: actions/upload-artifact@v4 with: name: gopher64-${{ matrix.arch }} path: output/gopher64-${{ matrix.arch }} build-windows: runs-on: windows-2025 strategy: fail-fast: false matrix: include: - target: x86_64-pc-windows-msvc arch: windows-x86_64 steps: - uses: actions/checkout@v4 with: submodules: recursive - uses: actions-rust-lang/setup-rust-toolchain@v1 with: target: ${{ matrix.target }} rustflags: "" - name: Build run: | cargo build --release -v --target=${{ matrix.target }} mkdir output cp target/${{ matrix.target }}/release/gopher64.exe output/gopher64-${{ matrix.arch }}.exe - name: Upload file uses: actions/upload-artifact@v4 with: name: gopher64-${{ matrix.arch }} path: output/gopher64-${{ matrix.arch }}.exe build-macos: runs-on: macos-14 strategy: fail-fast: false matrix: include: - target: x86_64-apple-darwin arch: mac-x86_64 - target: aarch64-apple-darwin arch: mac-aarch64 steps: - uses: actions/checkout@v4 with: submodules: recursive - uses: actions-rust-lang/setup-rust-toolchain@v1 with: target: ${{ matrix.target }} rustflags: "" - name: Build run: | cargo build --release -v --target=${{ matrix.target }} mkdir output cp target/${{ matrix.target }}/release/gopher64 output/gopher64-${{ matrix.arch }} - name: Upload file uses: actions/upload-artifact@v4 with: name: gopher64-${{ matrix.arch }} path: output/gopher64-${{ matrix.arch }}