name: CIBW

on:
  workflow_dispatch:
  pull_request:
    branches:
    - master
    - stable
    - v*

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

jobs:
  build-wasm-emscripten:
    name: Pyodide wheel
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v6
      with:
        submodules: true
        fetch-depth: 0

    - uses: pypa/cibuildwheel@v3.4
      env:
        PYODIDE_BUILD_EXPORTS: whole_archive
      with:
        package-dir: tests
        only: cp312-pyodide_wasm32

  build-ios:
    name: iOS wheel ${{ matrix.runs-on }}
    runs-on: ${{ matrix.runs-on }}
    strategy:
      fail-fast: false
      matrix:
        runs-on: [macos-14, macos-15-intel]
    steps:
    - uses: actions/checkout@v6
      with:
        submodules: true
        fetch-depth: 0

    # We have to uninstall first because GH is now using a local tap to build cmake<4, iOS needs cmake>=4
    - run: brew uninstall cmake && brew install cmake

    - uses: pypa/cibuildwheel@v3.4
      env:
        CIBW_PLATFORM: ios
        CIBW_SKIP: cp314-*  # https://github.com/pypa/cibuildwheel/issues/2494
      with:
        package-dir: tests

  build-android:
    name: Android wheel ${{ matrix.runs-on }}
    runs-on: ${{ matrix.runs-on }}
    strategy:
      fail-fast: false
      matrix:
        runs-on: [macos-latest, macos-15-intel, ubuntu-latest]
    steps:
    - uses: actions/checkout@v6
      with:
        submodules: true
        fetch-depth: 0

    # GitHub Actions can't currently run the Android emulator on macOS.
    - name: Skip Android tests on macOS
      if: contains(matrix.runs-on, 'macos')
      run: echo "CIBW_TEST_COMMAND=" >> "$GITHUB_ENV"

    - uses: pypa/cibuildwheel@v3.4
      env:
        CIBW_PLATFORM: android
      with:
        package-dir: tests
