Fix build with CMake 3.22 (#3096)
Fixes https://github.com/AOMediaCodec/libavif/issues/3095
diff --git a/.github/workflows/ci-linux-oldest-cmake.yml b/.github/workflows/ci-linux-oldest-cmake.yml
new file mode 100644
index 0000000..b54d0ca
--- /dev/null
+++ b/.github/workflows/ci-linux-oldest-cmake.yml
@@ -0,0 +1,55 @@
+# This is a copy of ci-unix-shared-local.yml for Linux only and using the oldest supported CMake
+
+name: CI Linux Oldest CMake
+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-shared-local:
+ runs-on: ubuntu-latest
+ strategy:
+ fail-fast: false
+
+ name: build-linux-oldest-cmake
+
+ steps:
+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: ./.github/actions/setup-linux
+ with:
+ codec-aom: "LOCAL"
+ codec-dav1d: "LOCAL"
+ codec-rav1e: "LOCAL"
+ codec-svt: "LOCAL"
+ libjpeg-turbo: "LOCAL"
+ libxml2: "LOCAL"
+ libyuv: "LOCAL"
+ oldest-cmake: true
+ zlibpng: "LOCAL"
+
+ - name: Prepare libavif (cmake)
+ run: >
+ cmake -G Ninja -S . -B build
+ -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON
+ -DAVIF_CODEC_AOM=LOCAL -DAVIF_CODEC_DAV1D=LOCAL
+ -DAVIF_CODEC_LIBGAV1=LOCAL -DAVIF_CODEC_RAV1E=LOCAL
+ -DAVIF_CODEC_SVT=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_GTEST=LOCAL
+ -DAVIF_ENABLE_EXPERIMENTAL_MINI=ON
+ -DAVIF_ENABLE_EXPERIMENTAL_EXTENDED_PIXI=ON
+ -DAVIF_ENABLE_WERROR=ON
+ - name: Build libavif
+ run: cmake --build build --config Release --parallel 4
+ - name: Run AVIF Tests
+ working-directory: ./build
+ run: ctest -j $(getconf _NPROCESSORS_ONLN) --output-on-failure
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 09985ff..af04b31 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,6 +8,10 @@
## [Unreleased]
+### Changed since 1.4.0
+
+* Fix build with CMake 3.22
+
### Removed since 1.4.0
* Remove experimental status for the following options of avifenc: --progressive,
diff --git a/cmake/Modules/LocalAom.cmake b/cmake/Modules/LocalAom.cmake
index 88fb596..ab8382c 100644
--- a/cmake/Modules/LocalAom.cmake
+++ b/cmake/Modules/LocalAom.cmake
@@ -144,7 +144,7 @@
endif()
set_property(TARGET aom PROPERTY AVIF_LOCAL ON)
- target_include_directories(aom INTERFACE $<BUILD_INTERFACE:$<PATH:ABSOLUTE_PATH,${libaom_SOURCE_DIR},/>>)
+ target_include_directories(aom INTERFACE $<BUILD_INTERFACE:${libaom_SOURCE_DIR}>)
message(CHECK_PASS "complete")
endif()
diff --git a/cmake/Modules/LocalAvm.cmake b/cmake/Modules/LocalAvm.cmake
index 1fa3080..2953b67 100644
--- a/cmake/Modules/LocalAvm.cmake
+++ b/cmake/Modules/LocalAvm.cmake
@@ -118,7 +118,7 @@
target_link_libraries(avm PRIVATE tensorflow-lite)
set_property(TARGET avm PROPERTY AVIF_LOCAL ON)
-target_include_directories(avm INTERFACE $<BUILD_INTERFACE:$<PATH:ABSOLUTE_PATH,${libavm_SOURCE_DIR},/>>)
+target_include_directories(avm INTERFACE $<BUILD_INTERFACE:${libavm_SOURCE_DIR}>)
# libavm-src/avm/avm_encoder.h includes config/avm_config.h which is generated by the local build of avm.
target_include_directories(avm INTERFACE $<BUILD_INTERFACE:${libavm_BINARY_DIR}>)