diff --git a/CMakeLists.txt b/CMakeLists.txt index c58409d..3bfd03e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,8 +1,6 @@ set(CMAKE_LEGACY_CYGWIN_WIN32 0) cmake_minimum_required(VERSION 2.8) -subdirs(tests fuzzing) - include(GNUInstallDirs) project(cJSON C) @@ -78,10 +76,13 @@ foreach(compiler_flag ${custom_compiler_flags}) CHECK_C_COMPILER_FLAG(${compiler_flag} "FLAG_SUPPORTED_${current_variable}") if (FLAG_SUPPORTED_${current_variable}) + list(APPEND supported_compiler_flags) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${compiler_flag}") endif() endforeach() +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${supported_compiler_flags}") + #variables for pkg-config set(prefix "${CMAKE_INSTALL_PREFIX}") set(libdir "${CMAKE_INSTALL_LIBDIR}") @@ -168,9 +169,9 @@ if(ENABLE_CJSON_TEST) target_link_libraries("${TEST_CJSON}" "${CJSON_LIB}") add_test(NAME ${TEST_CJSON} COMMAND "${CMAKE_CURRENT_BINARY_DIR}/${TEST_CJSON}") + # Disable -fsanitize=float-divide-by-zero for cJSON_test - list(FIND custom_compiler_flags "-fsanitize=float-divide-by-zero" float_divide_by_zero_found) - if (float_divide_by_zero_found) + if (FLAG_SUPPORTED_fsanitizefloatdividebyzero) target_compile_options(${TEST_CJSON} PRIVATE "-fno-sanitize=float-divide-by-zero") endif() @@ -185,6 +186,8 @@ if(ENABLE_CJSON_TEST) #"check" target that automatically builds everything and runs the tests add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND} --output-on-failure - DEPENDS ${unity_tests} ${TEST_CJSON} ${TEST_CJSON_UTILS}) - + DEPENDS ${TEST_CJSON} ${TEST_CJSON_UTILS}) endif() + +add_subdirectory(tests) +add_subdirectory(fuzzing) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index e0d5876..484c676 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -2,13 +2,11 @@ if(ENABLE_CJSON_TEST) add_library(unity unity/src/unity.c) # Disable -Werror for Unity - list(FIND custom_compiler_flags "-Werror" werror_found) - if (werror_found) + if (FLAG_SUPPORTED_Werror) target_compile_options(unity PRIVATE "-Wno-error") endif() # Disable -fvisibility=hidden for Unity - list(FIND custom_compiler_flags "-fvisibility=hidden" visibility_found) - if (visibility_found) + if (FLAG_SUPPORTED_fvisibilityhidden) target_compile_options(unity PRIVATE "-fvisibility=default") endif() @@ -57,4 +55,6 @@ if(ENABLE_CJSON_TEST) COMMAND "./${unity_test}") endif() endforeach() + + add_dependencies(check ${unity_tests}) endif()