@@ -6,9 +6,9 @@ set(CMAKE_C_STANDARD_REQUIRED ON)
6
6
set (CMAKE_C_EXTENSIONS OFF )
7
7
8
8
add_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 )
12
12
13
13
target_include_directories (sc_signal PUBLIC ${CMAKE_CURRENT_LIST_DIR} )
14
14
@@ -20,18 +20,18 @@ endif ()
20
20
# --------------------------------------------------------------------------- #
21
21
# --------------------- Test Configuration Start ---------------------------- #
22
22
# --------------------------------------------------------------------------- #
23
- if (SC_BUILD_TEST )
23
+ if (SC_BUILD_TEST )
24
24
25
- include (CTest )
26
- include (CheckCCompilerFlag )
25
+ include (CTest )
26
+ include (CheckCCompilerFlag )
27
27
28
- enable_testing ()
28
+ enable_testing ()
29
29
30
- add_executable (${PROJECT_NAME} _test signal_test.c sc_signal.c )
30
+ add_executable (${PROJECT_NAME} _test signal_test.c sc_signal.c )
31
31
32
- target_compile_options (${PROJECT_NAME} _test PRIVATE -DSC_SIZE_MAX=1400000ul )
32
+ target_compile_options (${PROJECT_NAME} _test PRIVATE -DSC_SIZE_MAX=1400000ul )
33
33
34
- check_c_source_compiles ("
34
+ check_c_source_compiles ("
35
35
#include <execinfo.h>
36
36
#include <unistd.h>
37
37
@@ -42,80 +42,84 @@ if(SC_BUILD_TEST)
42
42
return 0;
43
43
}" HAVE_BACKTRACE )
44
44
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 )
49
49
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 ()
53
53
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" )
57
57
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 )
63
62
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 ()
67
65
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" )
69
69
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 )
75
71
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 ()
76
77
77
- add_test (NAME ${PROJECT_NAME} _test COMMAND ${PROJECT_NAME} _test )
78
78
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 \
81
83
--leak-check=full --show-leak-kinds=all \
82
84
--error-exitcode=255" )
83
85
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} )
117
119
118
120
# -------------------------- Code Coverage End ------------------------------ #
121
+
119
122
endif ()
123
+
120
124
# ----------------------- Test Configuration End ---------------------------- #
121
125
0 commit comments