@@ -6,9 +6,9 @@ set(CMAKE_C_STANDARD_REQUIRED ON)
66set (CMAKE_C_EXTENSIONS OFF )
77
88add_library (
9- sc_signal SHARED
10- sc_signal.c
11- sc_signal.h )
9+ sc_signal SHARED
10+ sc_signal.c
11+ sc_signal.h )
1212
1313target_include_directories (sc_signal PUBLIC ${CMAKE_CURRENT_LIST_DIR } )
1414
@@ -20,18 +20,18 @@ endif ()
2020# --------------------------------------------------------------------------- #
2121# --------------------- Test Configuration Start ---------------------------- #
2222# --------------------------------------------------------------------------- #
23- if (SC_BUILD_TEST)
23+ if (SC_BUILD_TEST)
2424
25- include (CTest )
26- include (CheckCCompilerFlag )
25+ include (CTest )
26+ include (CheckCCompilerFlag )
2727
28- enable_testing ()
28+ enable_testing ()
2929
30- add_executable (${PROJECT_NAME } _test signal_test.c sc_signal.c )
30+ add_executable (${PROJECT_NAME } _test signal_test.c sc_signal.c )
3131
32- target_compile_options (${PROJECT_NAME } _test PRIVATE -DSC_SIZE_MAX=1400000ul )
32+ target_compile_options (${PROJECT_NAME } _test PRIVATE -DSC_SIZE_MAX=1400000ul )
3333
34- check_c_source_compiles ("
34+ check_c_source_compiles ("
3535 #include <execinfo.h>
3636 #include <unistd.h>
3737
@@ -42,80 +42,84 @@ if(SC_BUILD_TEST)
4242 return 0;
4343 }" HAVE_BACKTRACE )
4444
45- FIND_LIBRARY (EXECINFO_LIBRARY NAMES execinfo )
46- IF (EXECINFO_LIBRARY)
47- SET (CMAKE_REQUIRED_LIBRARIES "${EXECINFO_LIBRARY} " )
48- ENDIF (EXECINFO_LIBRARY )
45+ FIND_LIBRARY (EXECINFO_LIBRARY NAMES execinfo )
46+ IF (EXECINFO_LIBRARY)
47+ SET (CMAKE_REQUIRED_LIBRARIES "${EXECINFO_LIBRARY} " )
48+ ENDIF (EXECINFO_LIBRARY )
4949
50- if (${HAVE_BACKTRACE} )
51- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS } -DHAVE_BACKTRACE" )
52- endif ()
50+ if (${HAVE_BACKTRACE} )
51+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS } -DHAVE_BACKTRACE" )
52+ endif ()
5353
54- if (${CMAKE_SYSTEM_NAME } STREQUAL "Linux" )
55- if ("${CMAKE_C_COMPILER_ID } " STREQUAL "Clang" OR
56- "${CMAKE_C_COMPILER_ID } " STREQUAL "GNU" )
54+ if (${CMAKE_SYSTEM_NAME } STREQUAL "Linux" )
55+ if ("${CMAKE_C_COMPILER_ID } " STREQUAL "Clang" OR
56+ "${CMAKE_C_COMPILER_ID } " STREQUAL "GNU" )
5757
58- target_compile_options (${PROJECT_NAME } _test PRIVATE -fno-omit-frame-pointer )
59- target_compile_options (${PROJECT_NAME } _test PRIVATE -DSC_HAVE_WRAP -DSC_SIGNAL_TEST )
60- target_compile_options (${PROJECT_NAME } _test PRIVATE -fno-builtin )
61- endif ()
62- endif ()
58+ target_compile_options (${PROJECT_NAME } _test PRIVATE -fno-omit-frame-pointer )
59+ target_compile_options (${PROJECT_NAME } _test PRIVATE -DSC_HAVE_WRAP -DSC_SIGNAL_TEST )
60+ target_compile_options (${PROJECT_NAME } _test PRIVATE -fno-builtin )
61+ target_link_options (${PROJECT_NAME } _test PRIVATE -Wl,--wrap=signal )
6362
64- if ("${CMAKE_C_COMPILER_ID } " STREQUAL "Clang" OR
65- "${CMAKE_C_COMPILER_ID } " STREQUAL "AppleClang" OR
66- "${CMAKE_C_COMPILER_ID } " STREQUAL "GNU" )
63+ endif ()
64+ endif ()
6765
68- target_compile_options (${PROJECT_NAME } _test PRIVATE -fno-omit-frame-pointer )
66+ if ("${CMAKE_C_COMPILER_ID } " STREQUAL "Clang" OR
67+ "${CMAKE_C_COMPILER_ID } " STREQUAL "AppleClang" OR
68+ "${CMAKE_C_COMPILER_ID } " STREQUAL "GNU" )
6969
70- if (SANITIZER)
71- target_compile_options (${PROJECT_NAME } _test PRIVATE -fsanitize=${SANITIZER} )
72- target_link_options (${PROJECT_NAME } _test PRIVATE -fsanitize=${SANITIZER} )
73- endif ()
74- endif ()
70+ target_compile_options (${PROJECT_NAME } _test PRIVATE -fno-omit-frame-pointer )
7571
72+ if (SANITIZER)
73+ target_compile_options (${PROJECT_NAME } _test PRIVATE -fsanitize=${SANITIZER} )
74+ target_link_options (${PROJECT_NAME } _test PRIVATE -fsanitize=${SANITIZER} )
75+ endif ()
76+ endif ()
7677
77- add_test (NAME ${PROJECT_NAME } _test COMMAND ${PROJECT_NAME } _test )
7878
79- SET (MEMORYCHECK_COMMAND_OPTIONS
80- "-q --log-fd=2 --trace-children=yes --track-origins=yes \
79+ add_test (NAME ${PROJECT_NAME } _test COMMAND ${PROJECT_NAME } _test )
80+
81+ SET (MEMORYCHECK_COMMAND_OPTIONS
82+ "-q --log-fd=2 --trace-children=yes --track-origins=yes \
8183 --leak-check=full --show-leak-kinds=all \
8284 --error-exitcode=255" )
8385
84- add_custom_target (valgrind_${PROJECT_NAME} ${CMAKE_COMMAND }
85- -E env CTEST_OUTPUT_ON_FAILURE=1
86- ${CMAKE_CTEST_COMMAND } -C $<CONFIG >
87- --overwrite MemoryCheckCommandOptions=${MEMORYCHECK_COMMAND_OPTIONS}
88- --verbose -T memcheck WORKING_DIRECTORY ${CMAKE_BINARY_DIR } )
89-
90- add_custom_target (check_${PROJECT_NAME} ${CMAKE_COMMAND }
91- -E env CTEST_OUTPUT_ON_FAILURE=1
92- ${CMAKE_CTEST_COMMAND } -C $<CONFIG > --verbose
93- WORKING_DIRECTORY ${CMAKE_BINARY_DIR } )
94-
95- # ----------------------- - Code Coverage Start ----------------------------- #
96-
97- if (${CMAKE_BUILD_TYPE } MATCHES "Coverage" )
98- if ("${CMAKE_C_COMPILER_ID } " STREQUAL "GNU" )
99- target_compile_options (${PROJECT_NAME } _test PRIVATE --coverage )
100- target_link_libraries (${PROJECT_NAME } _test gcov )
101- else ()
102- message (FATAL_ERROR "Only GCC is supported for coverage" )
103- endif ()
104- endif ()
105-
106- add_custom_target (coverage_${PROJECT_NAME} )
107- add_custom_command (
108- TARGET coverage_${PROJECT_NAME}
109- COMMAND lcov --capture --directory .
110- --output-file coverage.info --rc lcov_branch_coverage=1 --rc lcov_excl_br_line='assert'
111- COMMAND lcov --remove coverage.info '/usr/*' '*example*' '*test*'
112- --output-file coverage.info --rc lcov_branch_coverage=1 --rc lcov_excl_br_line='assert'
113- COMMAND lcov --list coverage.info --rc lcov_branch_coverage=1 --rc lcov_excl_br_line='assert'
114- )
115-
116- add_dependencies (coverage_${PROJECT_NAME} check_${PROJECT_NAME} )
86+ add_custom_target (valgrind_${PROJECT_NAME} ${CMAKE_COMMAND }
87+ -E env CTEST_OUTPUT_ON_FAILURE=1
88+ ${CMAKE_CTEST_COMMAND } -C $<CONFIG >
89+ --overwrite MemoryCheckCommandOptions=${MEMORYCHECK_COMMAND_OPTIONS}
90+ --verbose -T memcheck WORKING_DIRECTORY ${CMAKE_BINARY_DIR } )
91+
92+ add_custom_target (check_${PROJECT_NAME} ${CMAKE_COMMAND }
93+ -E env CTEST_OUTPUT_ON_FAILURE=1
94+ ${CMAKE_CTEST_COMMAND } -C $<CONFIG > --verbose
95+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR } )
96+
97+ # ------------------------ - Code Coverage Start ----------------------------- #
98+
99+ if (${CMAKE_BUILD_TYPE } MATCHES "Coverage" )
100+ if ("${CMAKE_C_COMPILER_ID } " STREQUAL "GNU" )
101+ target_compile_options (${PROJECT_NAME } _test PRIVATE --coverage )
102+ target_link_libraries (${PROJECT_NAME } _test gcov )
103+ else ()
104+ message (FATAL_ERROR "Only GCC is supported for coverage" )
105+ endif ()
106+ endif ()
107+
108+ add_custom_target (coverage_${PROJECT_NAME} )
109+ add_custom_command (
110+ TARGET coverage_${PROJECT_NAME}
111+ COMMAND lcov --capture --directory .
112+ --output-file coverage.info --rc lcov_branch_coverage=1 --rc lcov_excl_br_line='assert'
113+ COMMAND lcov --remove coverage.info '/usr/*' '*example*' '*test*'
114+ --output-file coverage.info --rc lcov_branch_coverage=1 --rc lcov_excl_br_line='assert'
115+ COMMAND lcov --list coverage.info --rc lcov_branch_coverage=1 --rc lcov_excl_br_line='assert'
116+ )
117+
118+ add_dependencies (coverage_${PROJECT_NAME} check_${PROJECT_NAME} )
117119
118120# -------------------------- Code Coverage End ------------------------------ #
121+
119122endif ()
123+
120124# ----------------------- Test Configuration End ---------------------------- #
121125
0 commit comments