# 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@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
    - uses: ./.github/actions/setup-windows
      id: setup
      with:
        codec-aom: 'LOCAL'
        codec-dav1d: 'LOCAL'
        codec-rav1e: 'LOCAL'

    - name: Build aom
      if: steps.setup.outputs.ext-cache-hit != 'true'
      working-directory: ./ext
      run: ./aom.cmd
      # Visual Studio 2022 has an issue starting at 17.8.0 which might cause
      # AVX-512 instructions to be emitted in non-AVX-512 code. See
      # https://github.com/AOMediaCodec/libavif/issues/2033#issuecomment-1960062751.
      env:
        CC: clang-cl
        CXX: clang-cl
    - 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_MINI=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
