-
Notifications
You must be signed in to change notification settings - Fork 18
Expand file tree
/
Copy pathCompilerWarningOptions.cmake
More file actions
72 lines (64 loc) · 2.81 KB
/
Copy pathCompilerWarningOptions.cmake
File metadata and controls
72 lines (64 loc) · 2.81 KB
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
include_guard()
option(WARNINGS "Enable compiler warnings" OFF)
if(WARNINGS)
option(WARNINGS_AS_ERRORS "Treat compiler warnings as errors" OFF)
endif()
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
if(WARNINGS)
if(WARNINGS_AS_ERRORS)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror")
endif()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wpedantic -Wshadow -Wswitch-default -Weffc++")
set(WARNINGS_THAT_SHOULD_BE_IGNORED # WHY it is ok to ignore
)
foreach(WARNING ${WARNINGS_THAT_SHOULD_BE_IGNORED})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-${WARNING}")
endforeach()
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w")
endif()
elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
if(WARNINGS)
if(WARNINGS_AS_ERRORS)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror")
endif()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Weverything")
set(WARNINGS_THAT_SHOULD_BE_FIXED
unsafe-buffer-usage # TODO(ZIVID-10837): Reenable this when we start using C++20
gnu-zero-variadic-macro-arguments
)
set(WARNINGS_THAT_SHOULD_BE_IGNORED # WHY it is ok to ignore
c++98-compat # Code base should be modern
c++98-compat-pedantic # Code base should be modern
nrvo # TODO(ZIVID-11540): Reenable when fixed - return value optimization warning
)
foreach(WARNING ${WARNINGS_THAT_SHOULD_BE_FIXED})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-${WARNING}")
endforeach()
foreach(WARNING ${WARNINGS_THAT_SHOULD_BE_IGNORED})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-${WARNING}")
endforeach()
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w")
endif()
elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
if(WARNINGS)
if(WARNINGS_AS_ERRORS)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /WX")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /WX")
endif()
set(WARNINGS_THAT_SHOULD_BE_IGNORED # WHY it is ok to ignore
4244 # Narrowing conversions: Too strict and noisy for this code base.
4267 # Conversion: Happens a lot in this code, would complicate them too much to handle manually.
4702 # Unreachable code: Ignoring because it triggers too many false positives on pybind11 wrapping code
)
foreach(WARNING ${WARNINGS_THAT_SHOULD_BE_IGNORED})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd${WARNING}")
endforeach()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W0")
endif()
else()
message(WARNING "Unknown compiler, not able to set compiler options for ${CMAKE_CXX_COMPILER_ID}")
endif()