name: Build Zenyx ⚡ on: push: pull_request: env: CARGO_TERM_COLOR: always jobs: build: name: Build ${{ matrix.target }} strategy: fail-fast: false matrix: target: - x86_64-unknown-linux-gnu - aarch64-unknown-linux-gnu - x86_64-pc-windows-gnu - x86_64-apple-darwin - aarch64-apple-darwin include: # Linux targets - target: x86_64-unknown-linux-gnu binary_name: zenyx-x86_64-linux source_binary: zenyx deps: libwayland-dev wayland-protocols linker_env_var: "" linker_env_value: "" cargo_command: build - target: aarch64-unknown-linux-gnu binary_name: zenyx-aarch64-linux source_binary: zenyx deps: gcc-aarch64-linux-gnu g++-aarch64-linux-gnu qemu-user libwayland-dev wayland-protocols linker_env_var: CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER linker_env_value: aarch64-linux-gnu-gcc cargo_command: build # Windows target - target: x86_64-pc-windows-gnu binary_name: zenyx-x86_64-windows.exe source_binary: zenyx.exe deps: mingw-w64 linker_env_var: CARGO_TARGET_X86_64_PC_WINDOWS_GNU_LINKER linker_env_value: x86_64-w64-mingw32-gcc cargo_command: build # macOS targets - target: x86_64-apple-darwin binary_name: zenyx-x86_64-macos source_binary: zenyx deps: linker_env_var: CARGO_TARGET_X86_64_APPLE_DARWIN_LINKER linker_env_value: zig cargo_command: zigbuild - target: aarch64-apple-darwin binary_name: zenyx-aarch64-macos source_binary: zenyx deps: linker_env_var: CARGO_TARGET_AARCH64_APPLE_DARWIN_LINKER linker_env_value: zig cargo_command: zigbuild runs-on: ubuntu-latest steps: - name: 📥 Clone repository uses: actions/checkout@v4 - name: 🐧 Install Linux dependencies if: contains(matrix.target, 'linux') run: | apt-get update apt-get install -y ${{ matrix.deps }} - name: 🪟 Install Windows dependencies if: contains(matrix.target, 'windows') run: | apt-get update apt-get install -y ${{ matrix.deps }} - name: 🍎 Install macOS dependencies (Zig) if: contains(matrix.target, 'apple-darwin') run: | wget https://ziglang.org/builds/zig-linux-x86_64-0.11.0.tar.xz tar xf zig-linux-x86_64-0.11.0.tar.xz echo "$(pwd)/zig-linux-x86_64-0.11.0" >> $GITHUB_PATH - name: 🔧 Install Rust uses: https://github.com/actions-rs/toolchain@v1 with: toolchain: stable override: true target: ${{ matrix.target }} profile: minimal - name: 🔧 Install cargo-zigbuild if: contains(matrix.target, 'apple-darwin') run: cargo install cargo-zigbuild - name: 🏗️ Build run: cargo ${{ matrix.cargo_command }} --release --target ${{ matrix.target }} env: ${{ matrix.linker_env_var }}: ${{ matrix.linker_env_value }} CARGO_TERM_COLOR: always - name: 📦 Prepare binary run: | mkdir -p artifacts cp target/${{ matrix.target }}/release/${{ matrix.source_binary }} artifacts/${{ matrix.binary_name }} chmod +x artifacts/${{ matrix.binary_name }} - name: Upload artifacts uses: https://code.forgejo.org/forgejo/upload-artifact@v4 with: name: ${{ matrix.binary_name }} path: artifacts/${{ matrix.binary_name }} compression-level: 9