blob: 3dd54e0e1358664b77d9ae724cfb9dc23bb77929 [file] [log] [blame]
Vincent Rabaudf0a9e6c2024-04-15 16:09:29 +02001# This is a copy of ci-windows.yml for installed dependencies. It differs in the following ways:
2#
3# * vcpkg is used to install dependencies that are packaged.
4# * rav1e is installed from a binary upstream.
5# * TODO: use proper installations of libgav1, libsharpyuv and SVT once released.
6
7name: CI Windows Installed
Wan-Teh Chang4db10a82024-05-03 13:14:33 -07008on: [push, pull_request]
Vincent Rabaudf0a9e6c2024-04-15 16:09:29 +02009
10permissions:
11 contents: read
12
13# Cancel the workflow if a new one is triggered from the same PR, branch, or tag, except on main.
14concurrency:
15 group: ${{ github.workflow }}-${{ github.ref }}
16 cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
17
18jobs:
19 build-windows-installed:
20 runs-on: windows-latest
21 strategy:
22 fail-fast: false
Vincent Rabaud894e75b2024-07-17 17:06:50 +020023 matrix:
24 compiler: [msvc, clang-cl]
Vincent Rabaudf0a9e6c2024-04-15 16:09:29 +020025
26 steps:
Yannis Guyon1b1db682024-09-26 14:26:23 +000027 - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
28 - uses: ./.github/actions/setup-windows
29 with:
30 codec-aom: "SYSTEM"
31 codec-dav1d: "SYSTEM"
32 codec-rav1e: "SYSTEM"
33 extra-cache-key: ${{ matrix.compiler }}
34 - name: Leave compiler as default
35 if: matrix.compiler == 'msvc'
36 run: |
37 echo "AVIF_CMAKE_C_COMPILER=" >> $env:GITHUB_ENV
38 echo "AVIF_CMAKE_CXX_COMPILER=" >> $env:GITHUB_ENV
39 - name: Set clang-cl as compiler
40 if: matrix.compiler == 'clang-cl'
41 run: |
42 echo "AVIF_CMAKE_C_COMPILER=-DCMAKE_C_COMPILER=clang-cl" >> $env:GITHUB_ENV
43 echo "AVIF_CMAKE_CXX_COMPILER=-DCMAKE_CXX_COMPILER=clang-cl" >> $env:GITHUB_ENV
Vincent Rabaud3689cfb2024-05-31 11:28:00 +020044
Yannis Guyon1b1db682024-09-26 14:26:23 +000045 - name: vcpkg build
46 uses: johnwason/vcpkg-action@v6
47 id: vcpkg
48 with:
49 pkgs: aom dav1d libjpeg-turbo libpng libxml2 libyuv zlib
50 triplet: x64-windows-release
51 token: ${{ github.token }}
52 github-binarycache: true
53 cache-key: ${{ hashFiles('cmake/Modules/*', 'ext/*.cmd', 'ext/*.sh') }}
54 - name: Install rav1e
55 run: |
56 $LINK = "https://github.com/xiph/rav1e/releases/download/v0.7.1"
57 $FILE = "rav1e-0.7.1-windows-msvc-generic"
58 curl -LO "$LINK/$FILE.zip"
59 mkdir -p ${{ github.workspace }}\tmp
60 7z x -y "$FILE.zip" -o"${{ github.workspace }}\tmp"
61 # Do not mv the folder's content to not overwrite, and rsync is not installed.
62 mv ${{ github.workspace }}\tmp\rav1e-windows-msvc-sdk\bin\* ${{ github.workspace }}\vcpkg\installed\x64-windows-release\bin
63 mv ${{ github.workspace }}\tmp\rav1e-windows-msvc-sdk\include\* ${{ github.workspace }}\vcpkg\installed\x64-windows-release\include
64 mv ${{ github.workspace }}\tmp\rav1e-windows-msvc-sdk\lib\rav1e* ${{ github.workspace }}\vcpkg\installed\x64-windows-release\lib
65 mv ${{ github.workspace }}\tmp\rav1e-windows-msvc-sdk\lib\pkgconfig\* ${{ github.workspace }}\vcpkg\installed\x64-windows-release\lib\pkgconfig
66 - name: Prepare libavif (cmake)
67 run: >
68 cmake ${{ steps.vcpkg.outputs.vcpkg-cmake-config }} -G Ninja -S . -B build
69 -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF
70 -DAVIF_CODEC_AOM=SYSTEM -DAVIF_CODEC_DAV1D=SYSTEM
71 -DAVIF_CODEC_RAV1E=SYSTEM
72 -DAVIF_JPEG=SYSTEM -DAVIF_LIBXML2=SYSTEM
73 -DAVIF_LIBYUV=SYSTEM -DAVIF_ZLIBPNG=SYSTEM
74 -DAVIF_BUILD_EXAMPLES=ON -DAVIF_BUILD_APPS=ON
75 -DAVIF_BUILD_TESTS=ON -DAVIF_ENABLE_GTEST=ON -DAVIF_GTEST=LOCAL
76 -DAVIF_ENABLE_EXPERIMENTAL_YCGCO_R=ON
77 -DAVIF_ENABLE_EXPERIMENTAL_GAIN_MAP=ON
78 -DAVIF_ENABLE_EXPERIMENTAL_MINI=ON
79 -DAVIF_ENABLE_EXPERIMENTAL_SAMPLE_TRANSFORM=ON
80 -DAVIF_ENABLE_WERROR=ON $env:AVIF_CMAKE_C_COMPILER $env:AVIF_CMAKE_CXX_COMPILER
81 - name: Build libavif (ninja)
82 working-directory: ./build
83 run: ninja
84 - name: Run AVIF Tests
85 working-directory: ./build
86 run: ctest -j $Env:NUMBER_OF_PROCESSORS --output-on-failure