summaryrefslogtreecommitdiffstats
path: root/third_party/jpeg-xl/lib/jxl_tests.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/jpeg-xl/lib/jxl_tests.cmake')
-rw-r--r--third_party/jpeg-xl/lib/jxl_tests.cmake84
1 files changed, 84 insertions, 0 deletions
diff --git a/third_party/jpeg-xl/lib/jxl_tests.cmake b/third_party/jpeg-xl/lib/jxl_tests.cmake
new file mode 100644
index 0000000000..88c5a89f5c
--- /dev/null
+++ b/third_party/jpeg-xl/lib/jxl_tests.cmake
@@ -0,0 +1,84 @@
+# Use of this source code is governed by a BSD-style
+# license that can be found in the LICENSE file.
+
+include(compatibility.cmake)
+include(jxl_lists.cmake)
+
+if(BUILD_TESTING OR JPEGXL_ENABLE_TOOLS)
+# Library with test-only code shared between all tests / fuzzers.
+add_library(jxl_testlib-static STATIC ${JPEGXL_INTERNAL_TESTLIB_FILES})
+target_compile_options(jxl_testlib-static PRIVATE
+ ${JPEGXL_INTERNAL_FLAGS}
+ ${JPEGXL_COVERAGE_FLAGS}
+)
+target_compile_definitions(jxl_testlib-static PUBLIC
+ -DTEST_DATA_PATH="${JPEGXL_TEST_DATA_PATH}")
+target_include_directories(jxl_testlib-static PUBLIC
+ "${PROJECT_SOURCE_DIR}"
+)
+target_link_libraries(jxl_testlib-static
+ hwy
+ jxl_extras_nocodec-static
+ jxl-static
+)
+endif()
+
+if(NOT BUILD_TESTING)
+ return()
+endif()
+
+list(APPEND JPEGXL_INTERNAL_TESTS
+ # TODO(deymo): Move this to tools/
+ ../tools/box/box_test.cc
+ ../tools/djxl_fuzzer_test.cc
+)
+
+find_package(GTest)
+
+# Individual test binaries:
+file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/tests)
+foreach (TESTFILE IN LISTS JPEGXL_INTERNAL_TESTS)
+ # The TESTNAME is the name without the extension or directory.
+ get_filename_component(TESTNAME ${TESTFILE} NAME_WE)
+ if(TESTFILE STREQUAL ../tools/djxl_fuzzer_test.cc)
+ add_executable(${TESTNAME} ${TESTFILE} ../tools/djxl_fuzzer.cc)
+ else()
+ add_executable(${TESTNAME} ${TESTFILE})
+ endif()
+ if(JPEGXL_EMSCRIPTEN)
+ # The emscripten linking step takes too much memory and crashes during the
+ # wasm-opt step when using -O2 optimization level
+ set_target_properties(${TESTNAME} PROPERTIES LINK_FLAGS "\
+ -O1 \
+ -s USE_LIBPNG=1 \
+ -s ALLOW_MEMORY_GROWTH=1 \
+ -s SINGLE_FILE=1 \
+ -s PROXY_TO_PTHREAD \
+ -s EXIT_RUNTIME=1 \
+ -s USE_PTHREADS=1 \
+ -s NODERAWFS=1 \
+ ")
+ else()
+ set_target_properties(${TESTNAME} PROPERTIES LINK_FLAGS "${JPEGXL_COVERAGE_LINK_FLAGS}")
+ endif()
+ target_compile_options(${TESTNAME} PRIVATE
+ ${JPEGXL_INTERNAL_FLAGS}
+ # Add coverage flags to the test binary so code in the private headers of
+ # the library is also instrumented when running tests that execute it.
+ ${JPEGXL_COVERAGE_FLAGS}
+ )
+ target_link_libraries(${TESTNAME}
+ box
+ gmock
+ GTest::GTest
+ GTest::Main
+ jxl_extras-static
+ jxl_testlib-static
+ )
+ # Output test targets in the test directory.
+ set_target_properties(${TESTNAME} PROPERTIES PREFIX "tests/")
+ if (WIN32 AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
+ set_target_properties(${TESTNAME} PROPERTIES COMPILE_FLAGS "-Wno-error")
+ endif ()
+ jxl_discover_tests(${TESTNAME})
+endforeach ()