Build aviftest_helpers for are_images_equal.cc
If are_images_equal.cc is built, enable CXX and build the
aviftest_helpers library.
Fix the build failure when -DAVIF_BUILD_APPS=ON -DAVIF_BUILD_TESTS=ON
-DAVIF_ENABLE_GTEST=OFF is passed to the cmake command.
Add a CI build with -DAVIF_ENABLE_GTEST=OFF.
diff --git a/.github/workflows/ci-disable-gtest.yml b/.github/workflows/ci-disable-gtest.yml
new file mode 100644
index 0000000..a64ad96
--- /dev/null
+++ b/.github/workflows/ci-disable-gtest.yml
@@ -0,0 +1,88 @@
+# This is a copy of ci.yml with gtest disabled. It differs from ci.yml as follows:
+#
+# * The os matrix consists of ubuntu-latest only.
+# * Does not build libgav1. (Building libgav1 would enable CXX in CMakeLists.txt.)
+# * Disables gtest.
+
+name: CI
+on: [push, pull_request]
+jobs:
+ build-disable-gtest:
+ runs-on: ${{ matrix.os }}
+ strategy:
+ fail-fast: false
+ matrix:
+ os: [ubuntu-latest]
+
+ steps:
+ - uses: actions/checkout@v3
+ - name: Set GCC & G++ 10 compiler (on Linux)
+ if: runner.os == 'Linux'
+ run: echo "CC=gcc-10" >> $GITHUB_ENV && echo "CXX=g++-10" >> $GITHUB_ENV
+ - uses: actions/setup-python@v4
+ with:
+ python-version: '3.x'
+
+ - name: Cache external dependencies
+ id: cache-ext
+ uses: actions/cache@v3
+ with:
+ path: ext
+ key: ${{ runner.os }}-${{ hashFiles('ext/*.cmd') }}
+ - name: Setup cmake
+ uses: jwlawson/actions-setup-cmake@v1.12
+ with:
+ # CMake version 3.17 is required to build libwebp (which libsharpyuv is part of) on macOS.
+ cmake-version: '3.17.x'
+ - name: Print cmake version
+ run: cmake --version
+ - uses: ilammy/setup-nasm@v1
+ with:
+ version: 2.15.05
+ - uses: seanmiddleditch/gha-setup-ninja@v3
+ - run: pip install meson
+ - name: Build aom
+ if: steps.cache-ext.outputs.cache-hit != 'true'
+ working-directory: ./ext
+ run: bash aom.cmd
+ - name: Build dav1d
+ if: steps.cache-ext.outputs.cache-hit != 'true'
+ working-directory: ./ext
+ run: bash dav1d.cmd
+ - name: Build rav1e
+ if: steps.cache-ext.outputs.cache-hit != 'true'
+ working-directory: ./ext
+ run: bash rav1e.cmd
+ - name: Build SVT-AV1
+ if: steps.cache-ext.outputs.cache-hit != 'true'
+ working-directory: ./ext
+ run: bash svt.cmd
+ - name: Build libyuv
+ if: steps.cache-ext.outputs.cache-hit != 'true'
+ working-directory: ./ext
+ run: bash libyuv.cmd
+ - name: Build libsharpyuv
+ if: steps.cache-ext.outputs.cache-hit != 'true'
+ working-directory: ./ext
+ run: bash libsharpyuv.cmd
+
+ - name: Prepare libavif (cmake)
+ run: >
+ mkdir build && cd build
+
+ cmake .. -G Ninja
+ -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF
+ -DAVIF_CODEC_AOM=ON -DAVIF_LOCAL_AOM=ON
+ -DAVIF_CODEC_DAV1D=ON -DAVIF_LOCAL_DAV1D=ON
+ -DAVIF_CODEC_RAV1E=ON -DAVIF_LOCAL_RAV1E=ON
+ -DAVIF_CODEC_SVT=ON -DAVIF_LOCAL_SVT=ON
+ -DAVIF_LOCAL_LIBYUV=ON
+ -DAVIF_LOCAL_LIBSHARPYUV=ON
+ -DAVIF_BUILD_EXAMPLES=ON -DAVIF_BUILD_APPS=ON
+ -DAVIF_BUILD_TESTS=ON -DAVIF_ENABLE_GTEST=OFF
+ - name: Build libavif (ninja)
+ working-directory: ./build
+ run: ninja
+ - name: Run AVIF Tests
+ working-directory: ./build
+ run: ctest -j $(getconf _NPROCESSORS_ONLN)
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 5af7ea5..632ba7a 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -39,15 +39,17 @@
add_test(NAME avifyuv_${AVIFYUV_MODE} COMMAND avifyuv -m ${AVIFYUV_MODE})
endforeach()
-################################################################################
-# GoogleTest
-
-if(AVIF_ENABLE_GTEST)
+if(AVIF_ENABLE_GTEST OR AVIF_BUILD_APPS)
enable_language(CXX)
set(CMAKE_CXX_STANDARD 11)
add_library(aviftest_helpers OBJECT gtest/aviftest_helpers.cc)
target_link_libraries(aviftest_helpers avif_apps)
+endif()
+################################################################################
+# GoogleTest
+
+if(AVIF_ENABLE_GTEST)
if(AVIF_LOCAL_GTEST)
set(GTEST_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/ext/googletest/googletest/include)
set(GTEST_LIBRARIES ${CMAKE_SOURCE_DIR}/ext/googletest/build/lib/${AVIF_LIBRARY_PREFIX}gtest${AVIF_LIBRARY_SUFFIX})