# This is a copy of ci-unix-static.yml for Windows. It differs from ci-unix-static.yml as follows:
#
#   * The os matrix consists of windows-latest only.
#   * Installs Visual Studio in the os image.
#   * Doesn't install cmake 3.17.x, because only cmake 3.18 or later, with the
#     following bug fix, detects Visual Studio compilers correctly:
#     https://gitlab.kitware.com/cmake/cmake/-/issues/20585
#   * Runs ext/*.cmd as Windows batch files rather than using bash. This is
#     important for ext/svt.cmd, to prevent it from running ext/svt.sh.
#   * Builds with local libjpeg (-DAVIF_JPEG=LOCAL).
#   * Builds with local zlib and libpng (-DAVIF_ZLIBPNG=LOCAL).

name: CI Windows
on:
  push:
  pull_request:
    paths:
      - ".github/actions/**"
      - ".github/workflows/ci-windows.yml"
      - "**CMakeLists.txt"
      - "cmake/**"
      - "ext/**"

permissions:
  contents: read

# Cancel the workflow if a new one is triggered from the same PR, branch, or tag, except on main.
concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}

jobs:
  build-windows:
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [windows-latest]

    steps:
      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
      - uses: ./.github/actions/setup-windows
        id: setup
        with:
          codec-aom: "LOCAL"
          codec-dav1d: "LOCAL"
          codec-rav1e: "LOCAL"

      - name: Build libyuv
        if: steps.setup.outputs.ext-cache-hit != 'true'
        working-directory: ./ext
        run: ./libyuv.cmd
        # Use clang-cl to build libyuv. The assembly code in libyuv is written in the
        # GCC inline assembly format. Visual C++ doesn't support GCC inline assembly.
        env:
          CC: clang-cl
          CXX: clang-cl

      - name: Prepare libavif (cmake)
        run: >
          cmake -G Ninja -S . -B build
          -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF
          -DAVIF_CODEC_AOM=LOCAL -DAVIF_CODEC_DAV1D=LOCAL
          -DAVIF_CODEC_RAV1E=LOCAL -DAVIF_CODEC_SVT=LOCAL
          -DAVIF_CODEC_LIBGAV1=LOCAL
          -DAVIF_JPEG=LOCAL -DAVIF_LIBSHARPYUV=LOCAL -DAVIF_LIBXML2=LOCAL
          -DAVIF_LIBYUV=LOCAL -DAVIF_ZLIBPNG=LOCAL
          -DAVIF_BUILD_EXAMPLES=ON -DAVIF_BUILD_APPS=ON
          -DAVIF_BUILD_TESTS=ON -DAVIF_GTEST=LOCAL
          -DAVIF_ENABLE_EXPERIMENTAL_MINI=ON
          -DAVIF_ENABLE_EXPERIMENTAL_SAMPLE_TRANSFORM=ON
          -DAVIF_ENABLE_EXPERIMENTAL_EXTENDED_PIXI=ON
          -DAVIF_ENABLE_WERROR=ON
      - name: Build libavif (ninja)
        working-directory: ./build
        run: ninja
      - name: Run AVIF Tests
        working-directory: ./build
        run: ctest -j $Env:NUMBER_OF_PROCESSORS --output-on-failure
      - name: Check static link bundling
        run: >
          cl .\apps\avifenc.c .\apps\shared\*.c .\third_party\iccjpeg\iccjpeg.c /nologo
          /DWIN32 /D_WINDOWS /MD /O2 /Ob2
          -I.\apps\shared -I.\include -I.\third_party\iccjpeg
          -external:W0
          -external:I.\build\_deps\libpng-src
          -external:I.\build\libjpeg\src\libjpeg
          -external:I.\build\libjpeg\src\libjpeg-build
          -external:I.\build\_deps\zlib-src
          -external:I.\build\_deps\libpng
          -external:I.\build\_deps\zlib
          /link
          build\libjpeg\src\libjpeg-build\jpeg-static.lib
          build\_deps\libpng\libpng16_static.lib
          build\_deps\zlib\zlibstatic.lib
          build\avif.lib
          ws2_32.lib ntdll.lib userenv.lib bcrypt.lib advapi32.lib
          /out:avifenc.exe

          .\avifenc.exe --help
