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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
    - name: Setup Ccache
      uses: hendrikmuhs/ccache-action@bfa03e1de4d7f7c3e80ad9109feedd05c4f5a716 # v1.2.19
      with:
        variant: sccache
        key: ${{ github.job }}-${{ matrix.os }}-${{ matrix.ARCH }}
    - name: Setup Python
      uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.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
    - name: Build
      run: meson compile -Cbuild
    - name: Test
      run: meson test --print-errorlogs --suite=harfbuzz -Cbuild
