Vincent Rabaud | f0a9e6c | 2024-04-15 16:09:29 +0200 | [diff] [blame] | 1 | # 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 | |
| 7 | name: CI Windows Installed |
Wan-Teh Chang | 4db10a8 | 2024-05-03 13:14:33 -0700 | [diff] [blame] | 8 | on: [push, pull_request] |
Vincent Rabaud | f0a9e6c | 2024-04-15 16:09:29 +0200 | [diff] [blame] | 9 | |
| 10 | permissions: |
| 11 | contents: read |
| 12 | |
| 13 | # Cancel the workflow if a new one is triggered from the same PR, branch, or tag, except on main. |
| 14 | concurrency: |
| 15 | group: ${{ github.workflow }}-${{ github.ref }} |
| 16 | cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} |
| 17 | |
| 18 | jobs: |
| 19 | build-windows-installed: |
| 20 | runs-on: windows-latest |
| 21 | strategy: |
| 22 | fail-fast: false |
Vincent Rabaud | 894e75b | 2024-07-17 17:06:50 +0200 | [diff] [blame] | 23 | matrix: |
| 24 | compiler: [msvc, clang-cl] |
Vincent Rabaud | f0a9e6c | 2024-04-15 16:09:29 +0200 | [diff] [blame] | 25 | |
| 26 | steps: |
Yannis Guyon | 1b1db68 | 2024-09-26 14:26:23 +0000 | [diff] [blame^] | 27 | - 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 Rabaud | 3689cfb | 2024-05-31 11:28:00 +0200 | [diff] [blame] | 44 | |
Yannis Guyon | 1b1db68 | 2024-09-26 14:26:23 +0000 | [diff] [blame^] | 45 | - 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 |