Yannis Guyon | 8d61469 | 2022-04-01 17:44:40 +0000 | [diff] [blame] | 1 | # Copyright 2022 Joe Drago. All rights reserved. |
| 2 | # SPDX-License-Identifier: BSD-2-Clause |
| 3 | |
| 4 | # With testing enabled, all targets referenced by add_test() can be run |
| 5 | # at once with CMake's ctest command line tool from the build folder. |
| 6 | enable_testing() |
Yannis Guyon | 8d61469 | 2022-04-01 17:44:40 +0000 | [diff] [blame] | 7 | |
| 8 | add_executable(aviftest aviftest.c) |
| 9 | if(AVIF_LOCAL_LIBGAV1) |
| 10 | set_target_properties(aviftest PROPERTIES LINKER_LANGUAGE "CXX") |
| 11 | endif() |
| 12 | target_link_libraries(aviftest avif ${AVIF_PLATFORM_LIBRARIES}) |
Yannis Guyon | 2d271dd | 2022-05-13 12:27:06 +0200 | [diff] [blame] | 13 | add_test(NAME aviftest COMMAND aviftest ${CMAKE_CURRENT_SOURCE_DIR}/data) |
Yannis Guyon | 8d61469 | 2022-04-01 17:44:40 +0000 | [diff] [blame] | 14 | |
Yannis Guyon | 3a9ae26 | 2022-04-30 04:07:19 +0000 | [diff] [blame] | 15 | add_executable(avifincrtest avifincrtest.c avifincrtest_helpers.c) |
Yannis Guyon | 8d61469 | 2022-04-01 17:44:40 +0000 | [diff] [blame] | 16 | if(AVIF_LOCAL_LIBGAV1) |
| 17 | set_target_properties(avifincrtest PROPERTIES LINKER_LANGUAGE "CXX") |
| 18 | endif() |
| 19 | target_link_libraries(avifincrtest avif ${AVIF_PLATFORM_LIBRARIES}) |
| 20 | add_test(NAME avifincrtest COMMAND avifincrtest ${CMAKE_CURRENT_SOURCE_DIR}/data/sofa_grid1x5_420.avif) |
| 21 | |
Yannis Guyon | 6226485 | 2022-05-17 11:15:57 +0200 | [diff] [blame] | 22 | add_executable(avifmetadatatest avifmetadatatest.c) |
| 23 | if(AVIF_LOCAL_LIBGAV1) |
| 24 | set_target_properties(avifmetadatatest PROPERTIES LINKER_LANGUAGE "CXX") |
| 25 | endif() |
| 26 | target_link_libraries(avifmetadatatest avif ${AVIF_PLATFORM_LIBRARIES}) |
| 27 | add_test(NAME avifmetadatatest COMMAND avifmetadatatest) |
| 28 | |
Yannis Guyon | 8d61469 | 2022-04-01 17:44:40 +0000 | [diff] [blame] | 29 | add_executable(avifyuv avifyuv.c) |
| 30 | if(AVIF_LOCAL_LIBGAV1) |
| 31 | set_target_properties(avifyuv PROPERTIES LINKER_LANGUAGE "CXX") |
| 32 | endif() |
| 33 | target_link_libraries(avifyuv avif ${AVIF_PLATFORM_LIBRARIES}) |
Yannis Guyon | 8efe1a8 | 2022-05-16 11:48:01 +0200 | [diff] [blame] | 34 | foreach(AVIFYUV_MODE limited rgb) # Modes drift and premultiply take more than 2 minutes each so they are disabled. |
Yannis Guyon | 2d271dd | 2022-05-13 12:27:06 +0200 | [diff] [blame] | 35 | add_test(NAME avifyuv_${AVIFYUV_MODE} COMMAND avifyuv -m ${AVIFYUV_MODE}) |
| 36 | endforeach() |
Yannis Guyon | 8d61469 | 2022-04-01 17:44:40 +0000 | [diff] [blame] | 37 | |
Yannis Guyon | 44b086a | 2022-05-18 10:47:52 +0200 | [diff] [blame] | 38 | if(AVIF_ENABLE_GTEST) |
| 39 | enable_language(CXX) |
| 40 | set(CMAKE_CXX_STANDARD 11) |
| 41 | if(AVIF_LOCAL_GTEST) |
| 42 | set(GTEST_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/ext/googletest/googletest/include) |
| 43 | set(GTEST_LIBRARIES ${CMAKE_SOURCE_DIR}/ext/googletest/build/lib/libgtest${CMAKE_STATIC_LIBRARY_SUFFIX}) |
| 44 | set(GTEST_MAIN_LIBRARIES ${CMAKE_SOURCE_DIR}/ext/googletest/build/lib/libgtest_main${CMAKE_STATIC_LIBRARY_SUFFIX}) |
| 45 | set(GTEST_BOTH_LIBRARIES ${GTEST_LIBRARIES} ${GTEST_MAIN_LIBRARIES}) |
| 46 | if(NOT EXISTS ${GTEST_INCLUDE_DIRS}/gtest/gtest.h) |
| 47 | message(FATAL_ERROR "googletest(AVIF_LOCAL_GTEST): ${GTEST_INCLUDE_DIRS}/gtest/gtest.h is missing, bailing out") |
| 48 | elseif(NOT EXISTS ${GTEST_LIBRARIES}) |
| 49 | message(FATAL_ERROR "googletest(AVIF_LOCAL_GTEST): ${GTEST_LIBRARIES} is missing, bailing out") |
| 50 | elseif(NOT EXISTS ${GTEST_MAIN_LIBRARIES}) |
| 51 | message(FATAL_ERROR "googletest(AVIF_LOCAL_GTEST): ${GTEST_MAIN_LIBRARIES} is missing, bailing out") |
| 52 | else() |
| 53 | message(STATUS "Found local ext/googletest") |
| 54 | endif() |
| 55 | else() |
| 56 | find_package(GTest REQUIRED) |
| 57 | endif() |
| 58 | |
Yannis Guyon | 9b43185 | 2022-06-15 15:37:38 +0200 | [diff] [blame] | 59 | add_executable(avifgridapitest avifgridapitest.cc aviftest_helpers.cc) |
Yannis Guyon | 44b086a | 2022-05-18 10:47:52 +0200 | [diff] [blame] | 60 | target_link_libraries(avifgridapitest avif ${AVIF_PLATFORM_LIBRARIES} ${GTEST_BOTH_LIBRARIES}) |
| 61 | target_include_directories(avifgridapitest PRIVATE ${GTEST_INCLUDE_DIRS}) |
| 62 | add_test(NAME avifgridapitest COMMAND avifgridapitest) |
| 63 | |
Yannis Guyon | 9b43185 | 2022-06-15 15:37:38 +0200 | [diff] [blame] | 64 | add_executable(avify4mtest avify4mtest.cc aviftest_helpers.cc) |
Yannis Guyon | 44b086a | 2022-05-18 10:47:52 +0200 | [diff] [blame] | 65 | target_link_libraries(avify4mtest avif avif_apps ${AVIF_PLATFORM_LIBRARIES} ${GTEST_BOTH_LIBRARIES}) |
| 66 | target_include_directories(avify4mtest PRIVATE ${GTEST_INCLUDE_DIRS}) |
| 67 | add_test(NAME avify4mtest COMMAND avify4mtest) |
| 68 | else() |
| 69 | message(STATUS "Most tests are disabled because AVIF_ENABLE_GTEST is OFF.") |
| 70 | endif() |
| 71 | |
Yannis Guyon | 8d61469 | 2022-04-01 17:44:40 +0000 | [diff] [blame] | 72 | if(AVIF_ENABLE_COVERAGE) |
Yannis Guyon | bceac50 | 2022-04-12 18:32:21 +0000 | [diff] [blame] | 73 | add_custom_target( |
| 74 | avif_coverage |
| 75 | COMMAND ${CMAKE_COMMAND} -E env "LLVM_PROFILE_FILE=${CMAKE_CURRENT_BINARY_DIR}/aviftest.profraw" $<TARGET_FILE:aviftest> |
| 76 | ${CMAKE_CURRENT_SOURCE_DIR}/data |
| 77 | COMMAND ${XCRUN} llvm-profdata merge -sparse ${CMAKE_CURRENT_BINARY_DIR}/aviftest.profraw -o |
| 78 | ${CMAKE_CURRENT_BINARY_DIR}/aviftest.profdata |
Yannis Guyon | 8d61469 | 2022-04-01 17:44:40 +0000 | [diff] [blame] | 79 | COMMAND cmake -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/coverage |
Yannis Guyon | bceac50 | 2022-04-12 18:32:21 +0000 | [diff] [blame] | 80 | COMMAND ${XCRUN} llvm-cov show $<TARGET_FILE:aviftest> -instr-profile=${CMAKE_CURRENT_BINARY_DIR}/aviftest.profdata |
| 81 | -project-title=libavif --format html -output-dir=${CMAKE_CURRENT_BINARY_DIR}/coverage |
Yannis Guyon | 8d61469 | 2022-04-01 17:44:40 +0000 | [diff] [blame] | 82 | COMMAND echo Coverage report here: ${CMAKE_CURRENT_BINARY_DIR}/coverage/index.html |
| 83 | DEPENDS aviftest |
| 84 | ) |
| 85 | endif() |