Skip to content

Commit

Permalink
CMake: Fix per target disabling of compiler flags
Browse files Browse the repository at this point in the history
The compiler flag detection was working incorrectly.
  • Loading branch information
FSMaxB committed Mar 15, 2017
1 parent c597601 commit 76e5296
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 10 deletions.
15 changes: 9 additions & 6 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
set(CMAKE_LEGACY_CYGWIN_WIN32 0)
cmake_minimum_required(VERSION 2.8)

subdirs(tests fuzzing)

include(GNUInstallDirs)

project(cJSON C)
Expand Down Expand Up @@ -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}")
Expand Down Expand Up @@ -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()

Expand All @@ -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)
8 changes: 4 additions & 4 deletions tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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()

Expand Down Expand Up @@ -57,4 +55,6 @@ if(ENABLE_CJSON_TEST)
COMMAND "./${unity_test}")
endif()
endforeach()

add_dependencies(check ${unity_tests})
endif()

0 comments on commit 76e5296

Please sign in to comment.