classicube-sys 6.0.4+ClassiCube.1.3.8

Rust C bindings for ClassiCube.
Documentation
name: build

on:
  pull_request:
    branches: [main, master, alpha, beta]
  workflow_call:
  workflow_dispatch:

concurrency:
  group: build-${{ github.ref }}
  cancel-in-progress: true

permissions:
  contents: read # for checkout

jobs:
  linux_nix:
    # Skip when dispatched from release.yml's publish phase: the smoke `build`
    # job already validated nix against this commit minutes earlier, and the
    # nix output isn't attached to the release.
    if: ${{ github.event_name != 'workflow_dispatch' }}
    uses: SpiralP/github-reusable-workflows/.github/workflows/build.yml@78cca1708ee40ff0f5cab7b971204653ddefcca0 # main

  windows:
    name: Build Windows ${{ matrix.config.arch }}
    runs-on: windows-2025
    strategy:
      fail-fast: false
      matrix:
        config:
          - { arch: x86_64, target: x86_64-pc-windows-msvc, build-docs: true }
          - { arch: i686, target: i686-pc-windows-msvc }
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
        with:
          submodules: recursive
      - uses: ./.github/actions/install-build-test
        with:
          target: ${{ matrix.config.target }}
      - uses: ./.github/actions/build-docs
        if: ${{ matrix.config.build-docs }}
        with:
          target: ${{ matrix.config.target }}
          upload: ${{ github.event_name == 'workflow_dispatch' }}

  linux:
    name: Build Linux ${{ matrix.config.arch }}
    runs-on: ubuntu-24.04
    strategy:
      fail-fast: false
      matrix:
        config:
          - { arch: x86_64, target: x86_64-unknown-linux-gnu }
          - { arch: i686, target: i686-unknown-linux-gnu, multilib: true }
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
        with:
          submodules: recursive
      - name: Install multilib
        if: ${{ matrix.config.multilib }}
        run: |
          sudo apt-get -y update
          sudo apt-get -y install gcc-multilib g++-multilib
      - uses: ./.github/actions/install-build-test
        with:
          target: ${{ matrix.config.target }}

  mac:
    name: Build MacOS ${{ matrix.config.arch }}
    runs-on: macos-15
    strategy:
      fail-fast: false
      matrix:
        config:
          - { arch: x86_64, target: x86_64-apple-darwin }
          - { arch: aarch64, target: aarch64-apple-darwin }
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
        with:
          submodules: recursive
      - uses: ./.github/actions/install-build-test
        with:
          target: ${{ matrix.config.target }}