name: build-wheels

# on: [push]
on: [pull_request]

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

jobs:
  build_sdist:
    name: Build source distribution
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Build sdist
        shell: bash
        run: pipx run build --sdist

      - name: check metadata
        run: pipx run twine check dist/*

  build_wheels:
    name: Build wheel for ${{ matrix.python }}-${{ matrix.buildplat[1] }}
    runs-on: ${{ matrix.buildplat[0] }}
    strategy:
      # Ensure that a wheel builder finishes even if another fails
      fail-fast: false
      matrix:
        # From NumPy
        # Github Actions doesn't support pairing matrix values together, let's improvise
        # https://github.com/github/feedback/discussions/7835#discussioncomment-1769026
        buildplat:
          - [ubuntu-24.04, manylinux_x86_64]
          - [ubuntu-24.04, manylinux_i686]
          - [ubuntu-24.04-arm, manylinux_aarch64]
          - [ubuntu-24.04, musllinux_x86_64] # No OpenBlas, no test
          - [ubuntu-24.04, musllinux_i686]
          - [ubuntu-24.04-arm, musllinux_aarch64]
          - [macos-15-intel, macosx_x86_64]
          - [macos-14, macosx_arm64]
          - [windows-2022, win_amd64]
          - [windows-2022, win32]
        python: ["cp38", "cp39","cp310", "cp311","cp312", "cp313", "cp314"]

    steps:
      - uses: actions/checkout@v4
      - name: Build wheels
        uses: pypa/cibuildwheel@v3.3.1
        env:
          CIBW_BUILD: ${{ matrix.python }}-${{ matrix.buildplat[1] }}
