summaryrefslogtreecommitdiff
path: root/src/third_party/wiredtiger/build_cmake/strict/gcc_strict.cmake
blob: d417315fc4bf18968e3f8ea57b341a37508b1d4c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#
# Public Domain 2014-present MongoDB, Inc.
# Public Domain 2008-2014 WiredTiger, Inc.
#  All rights reserved.
#
# See the file LICENSE for redistribution information.
#

string(APPEND gcc_base_c_flags " -Wall")
string(APPEND gcc_base_c_flags " -Wextra")
string(APPEND gcc_base_c_flags " -Werror")
string(APPEND gcc_base_c_flags " -Waggregate-return")
string(APPEND gcc_base_c_flags " -Wbad-function-cast")
string(APPEND gcc_base_c_flags " -Wcast-align")
string(APPEND gcc_base_c_flags " -Wdeclaration-after-statement")
string(APPEND gcc_base_c_flags " -Wdouble-promotion")
string(APPEND gcc_base_c_flags " -Wfloat-equal")
string(APPEND gcc_base_c_flags " -Wformat-nonliteral")
string(APPEND gcc_base_c_flags " -Wformat-security")
string(APPEND gcc_base_c_flags " -Wformat=2")
string(APPEND gcc_base_c_flags " -Winit-self")
string(APPEND gcc_base_c_flags " -Wjump-misses-init")
string(APPEND gcc_base_c_flags " -Wmissing-declarations")
string(APPEND gcc_base_c_flags " -Wmissing-field-initializers")
string(APPEND gcc_base_c_flags " -Wmissing-prototypes")
string(APPEND gcc_base_c_flags " -Wnested-externs")
string(APPEND gcc_base_c_flags " -Wold-style-definition")
string(APPEND gcc_base_c_flags " -Wpacked")
string(APPEND gcc_base_c_flags " -Wpointer-arith")
string(APPEND gcc_base_c_flags " -Wpointer-sign")
string(APPEND gcc_base_c_flags " -Wredundant-decls")
string(APPEND gcc_base_c_flags " -Wshadow")
string(APPEND gcc_base_c_flags " -Wsign-conversion")
string(APPEND gcc_base_c_flags " -Wstrict-prototypes")
string(APPEND gcc_base_c_flags " -Wswitch-enum")
string(APPEND gcc_base_c_flags " -Wundef")
string(APPEND gcc_base_c_flags " -Wuninitialized")
string(APPEND gcc_base_c_flags " -Wunreachable-code")
string(APPEND gcc_base_c_flags " -Wunused")
string(APPEND gcc_base_c_flags " -Wwrite-strings")

# Non-fatal informational warnings.
# We don't turn on the unsafe-loop-optimizations warning after gcc7,
# it's too noisy to tolerate. Regardless, don't fail even when it's
# configured.
string(APPEND gcc_base_c_flags " -Wno-error=unsafe-loop-optimizations")
if(${CMAKE_C_COMPILER_VERSION} VERSION_EQUAL 4.7)
    string(APPEND gcc_base_c_flags " -Wno-c11-extensions")
    string(APPEND gcc_base_c_flags " -Wunsafe-loop-optimizations")
elseif(${CMAKE_C_COMPILER_VERSION} VERSION_EQUAL 5)
    string(APPEND gcc_base_c_flags " -Wunsafe-loop-optimizations")
endif()

if(${CMAKE_C_COMPILER_VERSION} VERSION_GREATER_EQUAL 5)
    string(APPEND gcc_base_c_flags " -Wformat-signedness")
    string(APPEND gcc_base_c_flags " -Wjump-misses-init")
    string(APPEND gcc_base_c_flags " -Wredundant-decls")
    string(APPEND gcc_base_c_flags " -Wunused-macros")
    string(APPEND gcc_base_c_flags " -Wvariadic-macros")
endif()
if(${CMAKE_C_COMPILER_VERSION} VERSION_GREATER_EQUAL 6)
    string(APPEND gcc_base_c_flags " -Wduplicated-cond")
    string(APPEND gcc_base_c_flags " -Wlogical-op")
    string(APPEND gcc_base_c_flags " -Wunused-const-variable=2")
endif()
if(${CMAKE_C_COMPILER_VERSION} VERSION_GREATER_EQUAL 7)
    string(APPEND gcc_base_c_flags " -Walloca")
    string(APPEND gcc_base_c_flags " -Walloc-zero")
    string(APPEND gcc_base_c_flags " -Wduplicated-branches")
    string(APPEND gcc_base_c_flags " -Wformat-overflow=2")
    string(APPEND gcc_base_c_flags " -Wformat-truncation=2")
    string(APPEND gcc_base_c_flags " -Wrestrict")
endif()
if(${CMAKE_C_COMPILER_VERSION} VERSION_GREATER_EQUAL 8)
    string(APPEND gcc_base_c_flags " -Wmultistatement-macros")
endif()

# Set our base gcc flags to ensure it propogates to the rest of our build.
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${gcc_base_c_flags}" CACHE STRING "" FORCE)