# 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/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@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
    - 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_ENABLE_GTEST=ON -DAVIF_GTEST=LOCAL
        -DAVIF_ENABLE_EXPERIMENTAL_YCGCO_R=ON
        -DAVIF_ENABLE_EXPERIMENTAL_GAIN_MAP=ON
        -DAVIF_ENABLE_EXPERIMENTAL_METAV1=ON
        -DAVIF_ENABLE_EXPERIMENTAL_SAMPLE_TRANSFORM=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
