From c518c14d1ab225be89c541a2699ea70f335e860a Mon Sep 17 00:00:00 2001 From: Wan-Teh Chang Date: Mon, 22 Jul 2024 16:23:14 -0700 Subject: [PATCH 1/9] Add ci-windows-shared-local.yml Add a CI workflow for building shared libraries with local dependencies on Windows. --- .github/workflows/ci-windows-shared-local.yml | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 .github/workflows/ci-windows-shared-local.yml diff --git a/.github/workflows/ci-windows-shared-local.yml b/.github/workflows/ci-windows-shared-local.yml new file mode 100644 index 0000000000..4e9ea9cf41 --- /dev/null +++ b/.github/workflows/ci-windows-shared-local.yml @@ -0,0 +1,55 @@ +# This is a copy of ci-windows-installed.yml for building shared libraries with local dependencies. + +name: CI Windows Shared Local +on: [push, pull_request] + +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-shared-local: + runs-on: windows-latest + strategy: + fail-fast: false + matrix: + compiler: [msvc, clang-cl] + + steps: + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - uses: ./.github/actions/setup-windows + with: + codec-aom: 'LOCAL' + codec-dav1d: 'LOCAL' + extra-cache-key: ${{ matrix.compiler }} + - name: Leave compiler as default + if: matrix.compiler == 'msvc' + run: | + echo "AVIF_CMAKE_C_COMPILER=" >> $env:GITHUB_ENV + echo "AVIF_CMAKE_CXX_COMPILER=" >> $env:GITHUB_ENV + - name: Set clang-cl as compiler + if: matrix.compiler == 'clang-cl' + run: | + echo "AVIF_CMAKE_C_COMPILER=-DCMAKE_C_COMPILER=clang-cl" >> $env:GITHUB_ENV + echo "AVIF_CMAKE_CXX_COMPILER=-DCMAKE_CXX_COMPILER=clang-cl" >> $env:GITHUB_ENV + + - 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_JPEG=LOCAL -DAVIF_LIBSHARPYUV=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_WERROR=ON $env:AVIF_CMAKE_C_COMPILER $env:AVIF_CMAKE_CXX_COMPILER + - 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 From 6e8c53563b9082fe97c8f7cde35882739218dda1 Mon Sep 17 00:00:00 2001 From: Wan-Teh Chang Date: Mon, 22 Jul 2024 16:47:52 -0700 Subject: [PATCH 2/9] Set BUILD_SHARED_LIBS to ON --- .github/workflows/ci-windows-shared-local.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci-windows-shared-local.yml b/.github/workflows/ci-windows-shared-local.yml index 4e9ea9cf41..84be3acd0d 100644 --- a/.github/workflows/ci-windows-shared-local.yml +++ b/.github/workflows/ci-windows-shared-local.yml @@ -40,7 +40,7 @@ jobs: - name: Prepare libavif (cmake) run: > cmake -G Ninja -S . -B build - -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF + -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DAVIF_CODEC_AOM=LOCAL -DAVIF_CODEC_DAV1D=LOCAL -DAVIF_JPEG=LOCAL -DAVIF_LIBSHARPYUV=LOCAL -DAVIF_LIBYUV=LOCAL -DAVIF_ZLIBPNG=LOCAL From 02cb68c4f9296ac62676ddbf2d8171ed528b3950 Mon Sep 17 00:00:00 2001 From: Wan-Teh Chang Date: Mon, 22 Jul 2024 17:22:48 -0700 Subject: [PATCH 3/9] On Windows copy avif.dll to tests binary directory --- CMakeLists.txt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 881501355c..719847291a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -616,6 +616,14 @@ if(BUILD_SHARED_LIBS) if(AVIF_LIB_USE_CXX) set_target_properties(avif PROPERTIES LINKER_LANGUAGE "CXX") endif() + if(WIN32 AND AVIF_BUILD_TESTS) + add_custom_command( + TARGET avif + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/avif.dll ${CMAKE_CURRENT_BINARY_DIR}/tests + COMMENT "Copying avif.dll to the tests binary directory" + ) + endif() endif() # Give access to functions defined in internal.h when BUILD_SHARED_LIBS is ON, to tests for example. From 1ae0307cf6e505f481973d604273278d0b7c5fb5 Mon Sep 17 00:00:00 2001 From: Wan-Teh Chang Date: Mon, 22 Jul 2024 19:46:15 -0700 Subject: [PATCH 4/9] Enable experimental features --- .github/workflows/ci-windows-shared-local.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci-windows-shared-local.yml b/.github/workflows/ci-windows-shared-local.yml index 84be3acd0d..8f32c84ce1 100644 --- a/.github/workflows/ci-windows-shared-local.yml +++ b/.github/workflows/ci-windows-shared-local.yml @@ -1,4 +1,4 @@ -# This is a copy of ci-windows-installed.yml for building shared libraries with local dependencies. +# Do a shared library build with local dependencies. name: CI Windows Shared Local on: [push, pull_request] @@ -42,10 +42,14 @@ jobs: cmake -G Ninja -S . -B build -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DAVIF_CODEC_AOM=LOCAL -DAVIF_CODEC_DAV1D=LOCAL - -DAVIF_JPEG=LOCAL -DAVIF_LIBSHARPYUV=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 $env:AVIF_CMAKE_C_COMPILER $env:AVIF_CMAKE_CXX_COMPILER - name: Build libavif (ninja) working-directory: ./build From 12a030ac1daf12f5a7f0e3933cc3950bd22140dd Mon Sep 17 00:00:00 2001 From: Wan-Teh Chang Date: Tue, 23 Jul 2024 17:25:55 -0700 Subject: [PATCH 5/9] Move add_custom_command() after add_subdirectory() Also use the TARGET_FILE generator expression. --- CMakeLists.txt | 8 -------- 1 file changed, 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 719847291a..881501355c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -616,14 +616,6 @@ if(BUILD_SHARED_LIBS) if(AVIF_LIB_USE_CXX) set_target_properties(avif PROPERTIES LINKER_LANGUAGE "CXX") endif() - if(WIN32 AND AVIF_BUILD_TESTS) - add_custom_command( - TARGET avif - POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/avif.dll ${CMAKE_CURRENT_BINARY_DIR}/tests - COMMENT "Copying avif.dll to the tests binary directory" - ) - endif() endif() # Give access to functions defined in internal.h when BUILD_SHARED_LIBS is ON, to tests for example. From 4343fafadfc3395c2a6703d7eeeb9cc9f22e08c5 Mon Sep 17 00:00:00 2001 From: Wan-Teh Chang Date: Thu, 25 Jul 2024 18:31:11 -0700 Subject: [PATCH 6/9] Disable experimental features, add comment --- .github/workflows/ci-windows-shared-local.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/ci-windows-shared-local.yml b/.github/workflows/ci-windows-shared-local.yml index 8f32c84ce1..f338c24d9f 100644 --- a/.github/workflows/ci-windows-shared-local.yml +++ b/.github/workflows/ci-windows-shared-local.yml @@ -42,14 +42,10 @@ jobs: cmake -G Ninja -S . -B build -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DAVIF_CODEC_AOM=LOCAL -DAVIF_CODEC_DAV1D=LOCAL - -DAVIF_JPEG=LOCAL -DAVIF_LIBSHARPYUV=LOCAL -DAVIF_LIBXML2=LOCAL + -DAVIF_JPEG=LOCAL -DAVIF_LIBSHARPYUV=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 $env:AVIF_CMAKE_C_COMPILER $env:AVIF_CMAKE_CXX_COMPILER - name: Build libavif (ninja) working-directory: ./build From a757ce4113f4f2d9f72104395c22f2309306de52 Mon Sep 17 00:00:00 2001 From: Wan-Teh Chang Date: Mon, 29 Jul 2024 16:51:26 -0700 Subject: [PATCH 7/9] Re-enable experimental features --- .github/workflows/ci-windows-shared-local.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci-windows-shared-local.yml b/.github/workflows/ci-windows-shared-local.yml index f338c24d9f..8f32c84ce1 100644 --- a/.github/workflows/ci-windows-shared-local.yml +++ b/.github/workflows/ci-windows-shared-local.yml @@ -42,10 +42,14 @@ jobs: cmake -G Ninja -S . -B build -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DAVIF_CODEC_AOM=LOCAL -DAVIF_CODEC_DAV1D=LOCAL - -DAVIF_JPEG=LOCAL -DAVIF_LIBSHARPYUV=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 $env:AVIF_CMAKE_C_COMPILER $env:AVIF_CMAKE_CXX_COMPILER - name: Build libavif (ninja) working-directory: ./build From a94137286fc529e6d3187586a2e85ba1682acde5 Mon Sep 17 00:00:00 2001 From: Wan-Teh Chang Date: Mon, 29 Jul 2024 17:06:26 -0700 Subject: [PATCH 8/9] Disable AVIF_ENABLE_EXPERIMENTAL_GAIN_MAP --- .github/workflows/ci-windows-shared-local.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/ci-windows-shared-local.yml b/.github/workflows/ci-windows-shared-local.yml index 8f32c84ce1..6bd27742e7 100644 --- a/.github/workflows/ci-windows-shared-local.yml +++ b/.github/workflows/ci-windows-shared-local.yml @@ -42,12 +42,11 @@ jobs: cmake -G Ninja -S . -B build -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DAVIF_CODEC_AOM=LOCAL -DAVIF_CODEC_DAV1D=LOCAL - -DAVIF_JPEG=LOCAL -DAVIF_LIBSHARPYUV=LOCAL -DAVIF_LIBXML2=LOCAL + -DAVIF_JPEG=LOCAL -DAVIF_LIBSHARPYUV=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 $env:AVIF_CMAKE_C_COMPILER $env:AVIF_CMAKE_CXX_COMPILER From 4ba66e4841ca597d46bcf91c7a3251f494fb21e0 Mon Sep 17 00:00:00 2001 From: Wan-Teh Chang Date: Mon, 29 Jul 2024 18:25:54 -0700 Subject: [PATCH 9/9] Run on merge only --- .github/workflows/ci-windows-shared-local.yml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci-windows-shared-local.yml b/.github/workflows/ci-windows-shared-local.yml index 6bd27742e7..27d0a486f8 100644 --- a/.github/workflows/ci-windows-shared-local.yml +++ b/.github/workflows/ci-windows-shared-local.yml @@ -1,7 +1,14 @@ # Do a shared library build with local dependencies. name: CI Windows Shared Local -on: [push, pull_request] +on: + push: + pull_request: + paths: + - '.github/workflows/ci-windows-shared-local.yml' + - '**CMakeLists.txt' + - 'cmake/**' + - 'ext/**' permissions: contents: read