ci: Run on push only in the main
branch
#3349
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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: | |
branches: | |
- main | |
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 |