name: msvc

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

permissions:
  contents: read

jobs:
  msvc:
    runs-on: ${{ matrix.os }}

    strategy:
      fail-fast: false
      matrix:
        include:
          - name: msvc-2025-x86
            os: windows-2025
            ARCH: x86
          - name: msvc-2025-amd64
            os: windows-2025
            ARCH: amd64
    name: ${{ matrix.name }}

    steps:
    - name: Checkout
      uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
    - name: Setup Ccache
      uses: hendrikmuhs/ccache-action@5ebbd400eff9e74630f759d94ddd7b6c26299639 # v1.2.20
      with:
        variant: sccache
        key: ${{ github.job }}-${{ matrix.os }}-${{ matrix.ARCH }}
    - name: Setup Python
      uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
      with:
        python-version: '3.12'
    - name: Setup MSVC
      uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756 # v1.13.0
      with:
        arch : ${{ matrix.ARCH }}
    - name: Install Python Dependencies
      run: |
        pip3 install -r .ci/requirements.txt --require-hashes
    - name: Setup Meson
      run: |
          sccache --version
          meson setup build `
            --wrap-mode=forcefallback `
            --buildtype=release `
            -Dglib=enabled `
            -Dfreetype=enabled `
            -Dgdi=enabled `
            -Ddirectwrite=enabled
    - name: Build
      run: meson compile -Cbuild
    - name: Test
      run: meson test --print-errorlogs --suite=harfbuzz -Cbuild
