Skip to content

Commit d120813

Browse files
committed
Enable additional compiler warnings for CMake build
1. add a CMake module to define additional warning flags to enable when compiling dispatch. 2. enable the additional warning flags by default for CMake 3. match autotools behavior of not including the BSD_OVERLAY when compiling the dispatch_c99 test case. This avoids a warning about __printflike being redefined when compiling this test case with the expanded set of warning flags.
1 parent 698d085 commit d120813

File tree

3 files changed

+104
-4
lines changed

3 files changed

+104
-4
lines changed

CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ set(WITH_BLOCKS_RUNTIME "" CACHE PATH "Path to blocks runtime")
2626

2727
include(DispatchAppleOptions)
2828

29+
include(DispatchCompilerWarnings)
30+
dispatch_common_warnings()
31+
2932
option(ENABLE_DISPATCH_INIT_CONSTRUCTOR "enable libdispatch_init as a constructor" ON)
3033
set(USE_LIBDISPATCH_INIT_CONSTRUCTOR ${ENABLE_DISPATCH_INIT_CONSTRUCTOR})
3134

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
2+
if("${CMAKE_C_SIMULATE_ID}" STREQUAL "MSVC")
3+
# TODO: someone needs to provide the msvc equivalent warning flags
4+
macro(dispatch_common_warnings)
5+
endmacro()
6+
else()
7+
macro(dispatch_common_warnings)
8+
add_compile_options(-Werror)
9+
add_compile_options(-Wall)
10+
add_compile_options(-Wextra)
11+
add_compile_options(-Wno-unknown-warning-option)
12+
add_compile_options(-Wno-trigraphs)
13+
add_compile_options(-Wmissing-field-initializers)
14+
add_compile_options(-Wmissing-prototypes)
15+
add_compile_options(-Wdocumentation)
16+
add_compile_options(-Wunreachable-code)
17+
add_compile_options(-Wmissing-braces)
18+
add_compile_options(-Wparentheses)
19+
add_compile_options(-Wswitch)
20+
add_compile_options(-Wunused-function)
21+
add_compile_options(-Wunused-label)
22+
add_compile_options(-Wunused-parameter)
23+
add_compile_options(-Wunused-variable)
24+
add_compile_options(-Wunused-value)
25+
add_compile_options(-Wempty-body)
26+
add_compile_options(-Wuninitialized)
27+
add_compile_options(-Wunknown-pragmas)
28+
add_compile_options(-Wshadow)
29+
add_compile_options(-Wno-four-char-constants)
30+
add_compile_options(-Wconversion)
31+
add_compile_options(-Wconstant-conversion)
32+
add_compile_options(-Wint-conversion)
33+
add_compile_options(-Wbool-conversion)
34+
add_compile_options(-Wenum-conversion)
35+
add_compile_options(-Wassign-enum)
36+
add_compile_options(-Wsign-compare)
37+
add_compile_options(-Wshorten-64-to-32)
38+
add_compile_options(-Wpointer-sign)
39+
add_compile_options(-Wnewline-eof)
40+
add_compile_options(-Wdeprecated-declarations)
41+
add_compile_options(-Wsign-conversion)
42+
add_compile_options(-Winfinite-recursion)
43+
add_compile_options(-Warray-bounds-pointer-arithmetic)
44+
add_compile_options(-Watomic-properties)
45+
add_compile_options(-Wcomma)
46+
add_compile_options(-Wconditional-uninitialized)
47+
add_compile_options(-Wcovered-switch-default)
48+
add_compile_options(-Wdate-time)
49+
add_compile_options(-Wdeprecated)
50+
add_compile_options(-Wdouble-promotion)
51+
add_compile_options(-Wduplicate-enum)
52+
add_compile_options(-Wexpansion-to-defined)
53+
add_compile_options(-Wfloat-equal)
54+
add_compile_options(-Widiomatic-parentheses)
55+
add_compile_options(-Wignored-qualifiers)
56+
add_compile_options(-Wimplicit-fallthrough)
57+
add_compile_options(-Wnullable-to-nonnull-conversion)
58+
add_compile_options(-Wobjc-interface-ivars)
59+
add_compile_options(-Wover-aligned)
60+
add_compile_options(-Wpacked)
61+
add_compile_options(-Wpointer-arith)
62+
add_compile_options(-Wselector)
63+
add_compile_options(-Wstatic-in-inline)
64+
add_compile_options(-Wsuper-class-method-mismatch)
65+
add_compile_options(-Wswitch-enum)
66+
add_compile_options(-Wtautological-compare)
67+
add_compile_options(-Wunguarded-availability)
68+
add_compile_options(-Wunused)
69+
add_compile_options(-Wno-disabled-macro-expansion)
70+
add_compile_options(-Wno-pedantic)
71+
add_compile_options(-Wno-bad-function-cast)
72+
add_compile_options(-Wno-c++-compat)
73+
add_compile_options(-Wno-c++98-compat)
74+
add_compile_options(-Wno-c++98-compat-pedantic)
75+
add_compile_options(-Wno-cast-align)
76+
add_compile_options(-Wno-cast-qual)
77+
add_compile_options(-Wno-documentation-unknown-command)
78+
add_compile_options(-Wno-format-nonliteral)
79+
add_compile_options(-Wno-missing-variable-declarations)
80+
add_compile_options(-Wno-old-style-cast)
81+
add_compile_options(-Wno-padded)
82+
add_compile_options(-Wno-reserved-id-macro)
83+
add_compile_options(-Wno-shift-sign-overflow)
84+
add_compile_options(-Wno-undef)
85+
add_compile_options(-Wno-unreachable-code-aggressive)
86+
add_compile_options(-Wno-unused-macros)
87+
add_compile_options(-Wno-used-but-marked-unused)
88+
add_compile_options(-Wno-vla)
89+
endmacro()
90+
endif()

tests/CMakeLists.txt

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ endif()
6060

6161
function(add_unit_test name)
6262
set(options DISABLED_TEST)
63+
set(options NO_BSD_OVERLAY)
6364
set(single_value_args)
6465
set(multiple_value_args SOURCES)
6566
cmake_parse_arguments(AUT "${options}" "${single_value_args}" "${multiple_value_args}" ${ARGN})
@@ -79,7 +80,7 @@ function(add_unit_test name)
7980
SYSTEM BEFORE PRIVATE
8081
"${WITH_BLOCKS_RUNTIME}")
8182
endif()
82-
if(BSD_OVERLAY_FOUND)
83+
if(BSD_OVERLAY_FOUND AND NOT AUT_NO_BSD_OVERLAY)
8384
target_compile_options(${name}
8485
PRIVATE
8586
${BSD_OVERLAY_CFLAGS})
@@ -91,7 +92,7 @@ function(add_unit_test name)
9192
if(WITH_BLOCKS_RUNTIME)
9293
target_link_libraries(${name} PRIVATE BlocksRuntime)
9394
endif()
94-
if(BSD_OVERLAY_FOUND)
95+
if(BSD_OVERLAY_FOUND AND NOT AUT_NO_BSD_OVERLAY)
9596
target_link_libraries(${name}
9697
PRIVATE
9798
${BSD_OVERLAY_LDFLAGS})
@@ -120,7 +121,6 @@ endfunction()
120121
set(DISPATCH_C_TESTS
121122
apply
122123
api
123-
c99
124124
debug
125125
queue_finalizer
126126
group
@@ -138,6 +138,8 @@ set(DISPATCH_C_TESTS
138138
data
139139
io_net
140140
select)
141+
set(DISPATCH_C99_TESTS
142+
c99)
141143
set(DISPATCH_CPP_TESTS
142144
plusplus)
143145

@@ -146,11 +148,16 @@ foreach(test ${DISPATCH_C_TESTS})
146148
SOURCES
147149
dispatch_${test}.c)
148150
endforeach()
151+
foreach(test ${DISPATCH_C99_TESTS})
152+
add_unit_test(dispatch_${test}
153+
NO_BSD_OVERLAY
154+
SOURCES
155+
dispatch_${test}.c)
156+
endforeach()
149157
foreach(test ${DISPATCH_CPP_TESTS})
150158
add_unit_test(dispatch_${test}
151159
SOURCES
152160
dispatch_${test}.cpp)
153161
endforeach()
154162
target_link_libraries(dispatch_group PRIVATE m)
155163
target_link_libraries(dispatch_timer_short PRIVATE m)
156-

0 commit comments

Comments
 (0)