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@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
    - name: Setup Ccache
      uses: hendrikmuhs/ccache-action@d62db5f07c26379fc4b4e0916f098a92573c3b03 # v1.2.23
      with:
        variant: sccache
        key: ${{ github.job }}-${{ matrix.os }}-${{ matrix.ARCH }}
    - name: Setup Python
      uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.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 `
            -Dgpu_demo=disabled
    - name: Build
      run: meson compile -Cbuild
    - name: Test
      run: meson test --print-errorlogs --suite=harfbuzz -Cbuild
