Prechádzať zdrojové kódy

CMake: Fix per target disabling of compiler flags

The compiler flag detection was working incorrectly.
Max Bruckner 8 rokov pred
rodič
commit
76e5296d0d
2 zmenil súbory, kde vykonal 13 pridanie a 10 odobranie
  1. 9 6
      CMakeLists.txt
  2. 4 4
      tests/CMakeLists.txt

+ 9 - 6
CMakeLists.txt

@@ -1,8 +1,6 @@
 set(CMAKE_LEGACY_CYGWIN_WIN32 0)
 set(CMAKE_LEGACY_CYGWIN_WIN32 0)
 cmake_minimum_required(VERSION 2.8)
 cmake_minimum_required(VERSION 2.8)
 
 
-subdirs(tests fuzzing)
-
 include(GNUInstallDirs)
 include(GNUInstallDirs)
 
 
 project(cJSON C)
 project(cJSON C)
@@ -78,10 +76,13 @@ foreach(compiler_flag ${custom_compiler_flags})
 
 
     CHECK_C_COMPILER_FLAG(${compiler_flag} "FLAG_SUPPORTED_${current_variable}")
     CHECK_C_COMPILER_FLAG(${compiler_flag} "FLAG_SUPPORTED_${current_variable}")
     if (FLAG_SUPPORTED_${current_variable})
     if (FLAG_SUPPORTED_${current_variable})
+        list(APPEND supported_compiler_flags)
         set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${compiler_flag}")
         set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${compiler_flag}")
     endif()
     endif()
 endforeach()
 endforeach()
 
 
+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${supported_compiler_flags}")
+
 #variables for pkg-config
 #variables for pkg-config
 set(prefix "${CMAKE_INSTALL_PREFIX}")
 set(prefix "${CMAKE_INSTALL_PREFIX}")
 set(libdir "${CMAKE_INSTALL_LIBDIR}")
 set(libdir "${CMAKE_INSTALL_LIBDIR}")
@@ -168,9 +169,9 @@ if(ENABLE_CJSON_TEST)
     target_link_libraries("${TEST_CJSON}" "${CJSON_LIB}")
     target_link_libraries("${TEST_CJSON}" "${CJSON_LIB}")
 
 
     add_test(NAME ${TEST_CJSON} COMMAND "${CMAKE_CURRENT_BINARY_DIR}/${TEST_CJSON}")
     add_test(NAME ${TEST_CJSON} COMMAND "${CMAKE_CURRENT_BINARY_DIR}/${TEST_CJSON}")
+
     # Disable -fsanitize=float-divide-by-zero for cJSON_test
     # 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")
         target_compile_options(${TEST_CJSON} PRIVATE "-fno-sanitize=float-divide-by-zero")
     endif()
     endif()
 
 
@@ -185,6 +186,8 @@ if(ENABLE_CJSON_TEST)
     #"check" target that automatically builds everything and runs the tests
     #"check" target that automatically builds everything and runs the tests
     add_custom_target(check
     add_custom_target(check
         COMMAND ${CMAKE_CTEST_COMMAND} --output-on-failure
         COMMAND ${CMAKE_CTEST_COMMAND} --output-on-failure
-        DEPENDS ${unity_tests} ${TEST_CJSON} ${TEST_CJSON_UTILS})
-
+        DEPENDS ${TEST_CJSON} ${TEST_CJSON_UTILS})
 endif()
 endif()
+
+add_subdirectory(tests)
+add_subdirectory(fuzzing)

+ 4 - 4
tests/CMakeLists.txt

@@ -2,13 +2,11 @@ if(ENABLE_CJSON_TEST)
     add_library(unity unity/src/unity.c)
     add_library(unity unity/src/unity.c)
 
 
     # Disable -Werror for Unity
     # 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")
         target_compile_options(unity PRIVATE "-Wno-error")
     endif()
     endif()
     # Disable -fvisibility=hidden for Unity
     # 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")
         target_compile_options(unity PRIVATE "-fvisibility=default")
     endif()
     endif()
 
 
@@ -57,4 +55,6 @@ if(ENABLE_CJSON_TEST)
                 COMMAND "./${unity_test}")
                 COMMAND "./${unity_test}")
         endif()
         endif()
     endforeach()
     endforeach()
+
+    add_dependencies(check ${unity_tests})
 endif()
 endif()