# This workflow generates artifacts such as avifenc.exe and avifdec.exe for convenience.

name: CI Windows Release Artifacts
on:
  release:
    types: [created]

permissions:
  contents: write

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

    steps:
      - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
        with:
          persist-credentials: false
      - uses: ./.github/actions/setup-windows
        id: setup
        with:
          codec-aom: "LOCAL"
          codec-dav1d: "LOCAL"
          libjpeg-turbo: "LOCAL"
          libxml2: "LOCAL"
          libyuv: "LOCAL"
          zlibpng: "LOCAL"

      - name: Build aom
        if: steps.setup.outputs.ext-cache-hit != 'true'
        working-directory: ./ext
        run: ./aom.cmd
      - name: Build dav1d
        if: steps.setup.outputs.ext-cache-hit != 'true'
        working-directory: ./ext
        run: ./dav1d.cmd
      - 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: Build libsharpyuv
        if: steps.setup.outputs.ext-cache-hit != 'true'
        working-directory: ./ext
        run: ./libsharpyuv.cmd
      - name: Build libjpeg
        if: steps.setup.outputs.ext-cache-hit != 'true'
        working-directory: ./ext
        run: ./libjpeg.cmd
      - name: Build zlib and libpng
        if: steps.setup.outputs.ext-cache-hit != 'true'
        working-directory: ./ext
        run: ./zlibpng.cmd

      - name: Prepare libavif (cmake)
        run: >
          cmake -A x64 -S . -B build
          -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF
          -DAVIF_CODEC_AOM=LOCAL -DAVIF_CODEC_AOM_ENCODE=ON
          -DAVIF_CODEC_AOM_DECODE=OFF -DAVIF_CODEC_DAV1D=LOCAL
          -DAVIF_LIBYUV=LOCAL -DAVIF_LIBSHARPYUV=LOCAL
          -DAVIF_JPEG=LOCAL -DAVIF_ZLIBPNG=LOCAL
          -DAVIF_BUILD_EXAMPLES=OFF -DAVIF_BUILD_APPS=ON
          -DAVIF_BUILD_TESTS=OFF -DAVIF_ENABLE_WERROR=ON
          -DCMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION=10
      - name: Build libavif
        run: cmake --build build --config Release --parallel 4
      - name: Archive artifacts
        uses: thedoctor0/zip-release@b57d897cb5d60cb78b51a507f63fa184cfe35554 # 0.7.6
        with:
          type: "zip"
          filename: "windows-artifacts.zip"
          directory: "build/Release"
          path: "*.exe"
      - name: Upload artifacts
        shell: pwsh
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          RELEASE_TAG: ${{ github.event.release.tag_name }}
        run: gh release upload "$env:RELEASE_TAG" "build/Release/windows-artifacts.zip"

    # Use the following instead of the above to test this workflow outside of a release event.
    # - name: Upload artifacts
    #   uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
    #   with:
    #     name: windows-artifacts.zip
    #     path: build/Release/windows-artifacts.zip
