diff --git a/.github/workflows/ci-windows-installed.yml b/.github/workflows/ci-windows-installed.yml new file mode 100644 index 0000000000..3955e78c0d --- /dev/null +++ b/.github/workflows/ci-windows-installed.yml @@ -0,0 +1,77 @@ +# This is a copy of ci-windows.yml for installed dependencies. It differs in the following ways: +# +# * vcpkg is used to install dependencies that are packaged. +# * rav1e is installed from a binary upstream. +# * TODO: use proper installations of libgav1, libsharpyuv and SVT once released. + +name: CI Windows Installed +on: + push: + branches: + - main + +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-installed: + runs-on: windows-latest + strategy: + fail-fast: false + + steps: + - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 + - name: Setup Visual Studio shell + uses: egor-tensin/vs-shell@9a932a62d05192eae18ca370155cf877eecc2202 # v2.1 + - name: Print CMake version + run: cmake --version + - uses: seanmiddleditch/gha-setup-ninja@8b297075da4cd2a5f1fd21fe011b499edf06e9d2 # v4 + - name: Print ImageMagick version + run: magick --version + - name: vcpkg build + uses: johnwason/vcpkg-action@v6 + id: vcpkg + with: + pkgs: aom dav1d libjpeg-turbo libpng libxml2 libyuv zlib + triplet: x64-windows-release + token: ${{ github.token }} + github-binarycache: true + cache-key: ${{ hashFiles('cmake/Modules/*', 'ext/*.cmd', 'ext/*.sh') }} + - name: Install rav1e + run: | + $LINK = "https://github.com/xiph/rav1e/releases/download/v0.7.1" + $FILE = "rav1e-0.7.1-windows-msvc-generic" + curl -LO "$LINK/$FILE.zip" + mkdir -p ${{ github.workspace }}\tmp + 7z x -y "$FILE.zip" -o"${{ github.workspace }}\tmp" + # Do not mv the folder's content to not overwrite, and rsync is not installed. + mv ${{ github.workspace }}\tmp\rav1e-windows-msvc-sdk\bin\* ${{ github.workspace }}\vcpkg\installed\x64-windows-release\bin + mv ${{ github.workspace }}\tmp\rav1e-windows-msvc-sdk\include\* ${{ github.workspace }}\vcpkg\installed\x64-windows-release\include + mv ${{ github.workspace }}\tmp\rav1e-windows-msvc-sdk\lib\rav1e* ${{ github.workspace }}\vcpkg\installed\x64-windows-release\lib + mv ${{ github.workspace }}\tmp\rav1e-windows-msvc-sdk\lib\pkgconfig\* ${{ github.workspace }}\vcpkg\installed\x64-windows-release\lib\pkgconfig + - name: Prepare libavif (cmake) + run: > + cmake ${{ steps.vcpkg.outputs.vcpkg-cmake-config }} -G Ninja -S ./ -B build + -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF + -DAVIF_CODEC_AOM=SYSTEM -DAVIF_CODEC_DAV1D=SYSTEM + -DAVIF_CODEC_RAV1E=SYSTEM + -DAVIF_JPEG=SYSTEM -DAVIF_LIBXML2=SYSTEM + -DAVIF_LIBYUV=SYSTEM -DAVIF_ZLIBPNG=SYSTEM + -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_AVIR=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