From cb39817f8024abd559ca17ccc0bc14ea17ffd499 Mon Sep 17 00:00:00 2001 From: Wan-Teh Chang Date: Tue, 30 Jul 2024 21:43:41 -0700 Subject: [PATCH] Enable warnings in tests Note that the fuzztest targets are not compiled with warnings enabled because the FuzzTest and Abseil headers have compiler warnings. Part 2 of the fix for https://github.com/AOMediaCodec/libavif/issues/2340. --- tests/CMakeLists.txt | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index be184780d8..41e60a15b2 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -26,7 +26,7 @@ add_executable(aviftest aviftest.c) if(AVIF_CODEC_LIBGAV1_ENABLED OR AVIF_LIBYUV_ENABLED) set_target_properties(aviftest PROPERTIES LINKER_LANGUAGE "CXX") endif() -target_link_libraries(aviftest avif) +target_link_libraries(aviftest avif avif_enable_warnings) add_test(NAME aviftest COMMAND aviftest ${CMAKE_CURRENT_SOURCE_DIR}/data) register_test_for_coverage(aviftest ${CMAKE_CURRENT_SOURCE_DIR}/data/) @@ -35,23 +35,25 @@ if(AVIF_CODEC_LIBGAV1_ENABLED OR AVIF_LIBYUV_ENABLED) set_target_properties(avifyuv PROPERTIES LINKER_LANGUAGE "CXX") endif() -target_link_libraries(avifyuv avif) +target_link_libraries(avifyuv avif avif_enable_warnings) foreach(AVIFYUV_MODE limited rgb) # Modes drift and premultiply take more than 2 minutes each so they are disabled. add_test(NAME avifyuv_${AVIFYUV_MODE} COMMAND avifyuv -m ${AVIFYUV_MODE}) endforeach() if(AVIF_ENABLE_FUZZTEST OR AVIF_ENABLE_GTEST OR AVIF_BUILD_APPS) add_library(aviftest_helpers OBJECT gtest/aviftest_helpers.cc) - target_link_libraries(aviftest_helpers avif_apps avif) + target_link_libraries(aviftest_helpers PUBLIC avif_apps avif) + target_link_libraries(aviftest_helpers PRIVATE avif_enable_warnings) add_library(aviftest_helpers_internal OBJECT gtest/aviftest_helpers.cc) - target_link_libraries(aviftest_helpers_internal avif_apps_internal avif_internal) + target_link_libraries(aviftest_helpers_internal PUBLIC avif_apps_internal avif_internal) + target_link_libraries(aviftest_helpers_internal PRIVATE avif_enable_warnings) endif() if(CMAKE_CXX_COMPILER_LOADED) # Fuzz target without any fuzzing engine dependency. For easy reproduction of oss-fuzz issues. add_executable(repro_avif_decode_fuzzer oss-fuzz/avif_decode_fuzzer.cc oss-fuzz/repro_fuzz.cc) set_target_properties(repro_avif_decode_fuzzer PROPERTIES LINKER_LANGUAGE "CXX") - target_link_libraries(repro_avif_decode_fuzzer avif) + target_link_libraries(repro_avif_decode_fuzzer avif avif_enable_warnings) # The test below exists for coverage and as a usage example: repro_avif_decode_fuzzer [reproducer file path] add_test(NAME repro_avif_decode_fuzzer COMMAND repro_avif_decode_fuzzer ${CMAKE_CURRENT_SOURCE_DIR}/data/color_grid_alpha_nogrid.avif @@ -65,25 +67,25 @@ endif() # are considered as extra linked libraries. macro(add_avif_gtest TEST_NAME) add_executable(${TEST_NAME} gtest/${TEST_NAME}.cc) - target_link_libraries(${TEST_NAME} PRIVATE aviftest_helpers GTest::GTest GTest::Main ${ARGN}) + target_link_libraries(${TEST_NAME} PRIVATE aviftest_helpers GTest::GTest GTest::Main ${ARGN} avif_enable_warnings) add_test(NAME ${TEST_NAME} COMMAND ${TEST_NAME}) register_test_for_coverage(${TEST_NAME}) endmacro() macro(add_avif_internal_gtest TEST_NAME) add_executable(${TEST_NAME} gtest/${TEST_NAME}.cc) - target_link_libraries(${TEST_NAME} PRIVATE aviftest_helpers_internal GTest::GTest GTest::Main ${ARGN}) + target_link_libraries(${TEST_NAME} PRIVATE aviftest_helpers_internal GTest::GTest GTest::Main ${ARGN} avif_enable_warnings) add_test(NAME ${TEST_NAME} COMMAND ${TEST_NAME}) register_test_for_coverage(${TEST_NAME}) endmacro() macro(add_avif_gtest_with_data TEST_NAME) add_executable(${TEST_NAME} gtest/${TEST_NAME}.cc) - target_link_libraries(${TEST_NAME} PRIVATE aviftest_helpers GTest::GTest ${ARGN}) + target_link_libraries(${TEST_NAME} PRIVATE aviftest_helpers GTest::GTest ${ARGN} avif_enable_warnings) add_test(NAME ${TEST_NAME} COMMAND ${TEST_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/data/) register_test_for_coverage(${TEST_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/data/) endmacro() macro(add_avif_internal_gtest_with_data TEST_NAME) add_executable(${TEST_NAME} gtest/${TEST_NAME}.cc) - target_link_libraries(${TEST_NAME} PRIVATE aviftest_helpers_internal GTest::GTest ${ARGN}) + target_link_libraries(${TEST_NAME} PRIVATE aviftest_helpers_internal GTest::GTest ${ARGN} avif_enable_warnings) add_test(NAME ${TEST_NAME} COMMAND ${TEST_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/data/) register_test_for_coverage(${TEST_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/data/) endmacro() @@ -91,9 +93,9 @@ endmacro() if(AVIF_ENABLE_GTEST) check_avif_option(AVIF_GTEST TARGET GTest::GTest PKG_NAME GTest) add_library(avifincrtest_helpers OBJECT gtest/avifincrtest_helpers.cc) - target_link_libraries(avifincrtest_helpers avif GTest::GTest) + target_link_libraries(avifincrtest_helpers avif GTest::GTest avif_enable_warnings) add_library(avifincrtest_helpers_internal OBJECT gtest/avifincrtest_helpers.cc) - target_link_libraries(avifincrtest_helpers_internal avif_internal GTest::GTest) + target_link_libraries(avifincrtest_helpers_internal avif_internal GTest::GTest avif_enable_warnings) endif() if(AVIF_ENABLE_GTEST) @@ -185,6 +187,9 @@ if(AVIF_ENABLE_FUZZTEST) macro(add_avif_fuzztest TEST_NAME) add_executable(${TEST_NAME} gtest/${TEST_NAME}.cc gtest/avif_fuzztest_helpers.cc ${ARGN}) # FuzzTest bundles GoogleTest so no need to link to gtest librairies. + # NOTE: FuzzTest and Abseil headers have compiler warnings (mostly + # -Wsign-compare and some -Wunused-parameter and -Wshorten-64-to-32), + # so we don't enable compiler warnings on the fuzztest targets. target_link_libraries(${TEST_NAME} PRIVATE aviftest_helpers_internal) link_fuzztest(${TEST_NAME}) add_test(NAME ${TEST_NAME} COMMAND ${TEST_NAME}) @@ -238,7 +243,7 @@ if(AVIF_BUILD_APPS) target_link_options(are_images_equal PRIVATE /MANIFEST:NO) endif() endif() - target_link_libraries(are_images_equal aviftest_helpers) + target_link_libraries(are_images_equal aviftest_helpers avif_enable_warnings) add_test(NAME test_cmd COMMAND bash ${CMAKE_CURRENT_SOURCE_DIR}/test_cmd.sh ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/data )