name: Rust on: push: branches: ["main"] pull_request: branches: ["main"] env: CARGO_TERM_COLOR: always jobs: build-linux: runs-on: ubuntu-latest strategy: fail-fast: false matrix: target: [x86_64-unknown-linux-gnu, aarch64-unknown-linux-gnu] steps: - uses: actions/checkout@v4 with: submodules: recursive - uses: actions-rust-lang/setup-rust-toolchain@v1 with: target: ${{ matrix.target }} rustflags: "" - name: Install SDL2 if: matrix.target == 'aarch64-unknown-linux-gnu' run: | cat < deb822sources Types: deb URIs: http://archive.ubuntu.com/ubuntu/ Suites: noble Components: main restricted universe Architectures: amd64 Types: deb URIs: http://security.ubuntu.com/ubuntu/ Suites: noble-security Components: main restricted universe Architectures: amd64 Types: deb URIs: http://archive.ubuntu.com/ubuntu/ Suites: noble-updates Components: main restricted universe Architectures: amd64 Types: deb URIs: http://azure.ports.ubuntu.com/ubuntu-ports/ Suites: noble Components: main restricted multiverse universe Architectures: arm64 Types: deb URIs: http://azure.ports.ubuntu.com/ubuntu-ports/ Suites: noble-updates Components: main restricted multiverse universe Architectures: arm64 EOF sudo mv deb822sources /etc/apt/sources.list.d/ubuntu.sources sudo dpkg --add-architecture arm64 sudo apt-get update sudo apt-get -y dist-upgrade sudo apt-get -y install libsdl2-dev:arm64 g++-aarch64-linux-gnu - name: Install SDL2 if: matrix.target == 'x86_64-unknown-linux-gnu' run: | sudo apt-get update sudo apt-get -y dist-upgrade sudo apt-get -y install libsdl2-dev - name: Set aarch64 linker if: matrix.target == 'aarch64-unknown-linux-gnu' run: echo "CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc" >> $GITHUB_ENV - name: Build run: | cargo build --release -v --target=${{ matrix.target }} - name: Upload file uses: actions/upload-artifact@v4 with: name: gopher64-${{ matrix.target }} path: target/${{ matrix.target }}/release/gopher64 build-windows: runs-on: windows-latest strategy: fail-fast: false matrix: target: [x86_64-pc-windows-msvc] 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 }} - name: Upload file uses: actions/upload-artifact@v4 with: name: gopher64-${{ matrix.target }} path: target/${{ matrix.target }}/release/gopher64.exe build-macos: runs-on: macos-latest strategy: fail-fast: false matrix: target: [x86_64-apple-darwin, aarch64-apple-darwin] 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 }} - name: Upload file uses: actions/upload-artifact@v4 with: name: gopher64-${{ matrix.target }} path: target/${{ matrix.target }}/release/gopher64