Skip to content

Commit 881106d

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 881106d

File tree

3 files changed

+106
-6
lines changed

3 files changed

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

tests/CMakeLists.txt

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ if(ENABLE_SWIFT)
5858
swiftSwiftOnoneSupport)
5959
endif()
6060

61-
function(add_unit_test name)
61+
function(add_unit_test name uses_bsd_overlay)
6262
set(options DISABLED_TEST)
6363
set(single_value_args)
6464
set(multiple_value_args SOURCES)
@@ -79,7 +79,7 @@ function(add_unit_test name)
7979
SYSTEM BEFORE PRIVATE
8080
"${WITH_BLOCKS_RUNTIME}")
8181
endif()
82-
if(BSD_OVERLAY_FOUND)
82+
if(BSD_OVERLAY_FOUND AND uses_bsd_overlay)
8383
target_compile_options(${name}
8484
PRIVATE
8585
${BSD_OVERLAY_CFLAGS})
@@ -91,7 +91,7 @@ function(add_unit_test name)
9191
if(WITH_BLOCKS_RUNTIME)
9292
target_link_libraries(${name} PRIVATE BlocksRuntime)
9393
endif()
94-
if(BSD_OVERLAY_FOUND)
94+
if(BSD_OVERLAY_FOUND AND uses_bsd_overlay)
9595
target_link_libraries(${name}
9696
PRIVATE
9797
${BSD_OVERLAY_LDFLAGS})
@@ -120,7 +120,6 @@ endfunction()
120120
set(DISPATCH_C_TESTS
121121
apply
122122
api
123-
c99
124123
debug
125124
queue_finalizer
126125
group
@@ -138,16 +137,23 @@ set(DISPATCH_C_TESTS
138137
data
139138
io_net
140139
select)
140+
set(DISPATCH_C99_TESTS
141+
c99)
141142
set(DISPATCH_CPP_TESTS
142143
plusplus)
143144

144145
foreach(test ${DISPATCH_C_TESTS})
145-
add_unit_test(dispatch_${test}
146+
add_unit_test(dispatch_${test} true
147+
SOURCES
148+
dispatch_${test}.c)
149+
endforeach()
150+
foreach(test ${DISPATCH_C99_TESTS})
151+
add_unit_test(dispatch_${test} false
146152
SOURCES
147153
dispatch_${test}.c)
148154
endforeach()
149155
foreach(test ${DISPATCH_CPP_TESTS})
150-
add_unit_test(dispatch_${test}
156+
add_unit_test(dispatch_${test} true
151157
SOURCES
152158
dispatch_${test}.cpp)
153159
endforeach()

0 commit comments

Comments
 (0)