Skip to content

Commit cffdf51

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 cffdf51

File tree

3 files changed

+90
-2
lines changed

3 files changed

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

tests/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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 (NOT ${name} MATCHES "dispatch_c99"))
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 (NOT ${name} MATCHES "dispatch_c99"))
9595
target_link_libraries(${name}
9696
PRIVATE
9797
${BSD_OVERLAY_LDFLAGS})

0 commit comments

Comments
 (0)