name: Build

on: [push, pull_request]

jobs:

  build_sdist:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4

      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: '3.10'

      - name: Install dependencies
        run: |
          python -m pip install --upgrade build

      - name: Build sdist
        run: python -m build --sdist

      - uses: actions/upload-artifact@v4
        with:
          name: sdist
          path: ./dist/*.tar.gz

  build_wheels:
    name: Build wheels on ${{ matrix.os }} (${{ matrix.platform_id }})
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        include:
          - os: windows-2022
            platform_id: win_amd64
            cairo_plat: x64
            msvc_arch: x64
          - os: windows-2022
            platform_id: win32
            cairo_plat: x86
            msvc_arch: x86

    steps:
      - uses: actions/checkout@v4

      - name: Setup MSVC
        uses: ilammy/msvc-dev-cmd@v1.13.0
        with:
          arch : ${{ matrix.msvc_arch }}

      - name: Build wheels
        uses: pypa/cibuildwheel@v2.20
        env:
          CFLAGS: "-DCAIRO_WIN32_STATIC_BUILD=1"
          CIBW_BEFORE_BUILD: "python {package}/.ci/download-cairo-win32.py ${{ matrix.cairo_plat }}"
          CIBW_BUILD: cp39-${{ matrix.platform_id }} cp310-${{ matrix.platform_id }} cp311-${{ matrix.platform_id }} cp312-${{ matrix.platform_id }} cp313-${{ matrix.platform_id }}
          CIBW_TEST_REQUIRES: pytest==7.4.4 hypothesis==6.98.3 attrs==23.2.0
          CIBW_TEST_COMMAND: bash {package}/.ci/test-wheels.sh {package}
          CIBW_TEST_SKIP: "*-win_arm64"
          CIBW_ENVIRONMENT_WINDOWS: PKG_CONFIG_PATH='${{ github.workspace }}/cairo-prebuild/lib/pkgconfig' PKG_CONFIG='${{ github.workspace }}/cairo-prebuild/bin/pkgconf.exe'

      - uses: actions/upload-artifact@v4
        with:
          name: "wheel-${{ matrix.cairo_plat }}"
          path: ./wheelhouse/*.whl
