From 76e5296d0d05ceb3018a9901639e0e171b44a557 Mon Sep 17 00:00:00 2001 From: Max Bruckner Date: Thu, 16 Mar 2017 00:22:53 +0100 Subject: [PATCH] CMake: Fix per target disabling of compiler flags The compiler flag detection was working incorrectly. --- CMakeLists.txt | 15 +++++++++------ tests/CMakeLists.txt | 8 ++++---- 2 files changed, 13 insertions(+), 10 deletions(-) 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() -- GitLab