@@ -18,12 +18,51 @@ if( ${PROJECT_SOURCE_DIR} STREQUAL ${PROJECT_BINARY_DIR} )
1818 message ( FATAL_ERROR "In-source build is not allowed. Please build in a separate directory, such as ${PROJECT_SOURCE_DIR} /build." )
1919endif ()
2020
21- set (SANITIZE "" CACHE STRING "Comma-separated list of compiler sanitizers to enable; empty string disables." )
22- if (NOT ${SANITIZE} STREQUAL "" )
21+ set ( SANITIZE "" CACHE STRING "Comma-separated list of compiler sanitizers to enable; empty string disables." )
22+ if ( NOT ${SANITIZE} STREQUAL "" )
2323 add_compile_options (-fsanitize=${SANITIZE} -fno-sanitize-recover)
2424 add_link_options (-fsanitize=${SANITIZE} -fno-sanitize-recover)
2525endif ()
2626
27+ # Align with: test/build-combination/CMakeLists.txt
28+ add_compile_options (
29+ $<$<COMPILE_LANG_AND_ID:C,GNU>:-fdiagnostics-color=always>
30+ $<$<COMPILE_LANG_AND_ID:C,Clang>:-fcolor-diagnostics>
31+
32+ ### On the road to -Wall: Forbid warnings that need not be tolerated.
33+ $<$<COMPILE_LANG_AND_ID:C,GNU,Clang>:-Werror=uninitialized> # definite use of uninitialized variable
34+ $<$<COMPILE_LANG_AND_ID:C,GNU,Clang>:-Werror=array-bounds> # indexing outside sized array
35+ $<$<COMPILE_LANG_AND_ID:C,GNU,Clang>:-Werror=switch> # enum switch with unhandled value
36+ $<$<COMPILE_LANG_AND_ID:C,GNU,Clang>:-Werror=format> # format string wrong
37+ $<$<COMPILE_LANG_AND_ID:C,GNU,Clang>:-Werror=format-security> # format string missing
38+ $<$<COMPILE_LANG_AND_ID:C,GNU,Clang>:-Werror=comment > # comment within a comment
39+ $<$<COMPILE_LANG_AND_ID:C,GNU,Clang>:-Werror=unused-value > # "statement has no effect"
40+ $<$<COMPILE_LANG_AND_ID:C,GNU>:-Werror=maybe-uninitialized> # possible use of uninitialized variable
41+ $<$<COMPILE_LANG_AND_ID:C,GNU>:-Werror=memset-elt-size> # memsetting array by length instead of size
42+ # FIXME (part of -Wall):
43+ # -Werror=return-type # "control reaches end of non-void function"
44+ # -Werror=array-parameter # name clash
45+ # -Werror=implicit-function-declaration # need header
46+ # -Werror=unused-but-set-variable
47+ # -Werror=unused-variable
48+ # -Werror=unused-function
49+ # -Werror=unused-parameter
50+ # -Werror=missing-braces
51+ # -Werror=pointer-sign
52+ # -Werror=dangling-pointer
53+ # -Werror=vla
54+
55+ ### Currently needed to build cleanly with Clang 19:
56+ $<$<COMPILE_LANG_AND_ID:C,Clang>:-Werror>
57+ $<$<COMPILE_LANG_AND_ID:C,Clang>:-Wno-pragma-pack>
58+ $<$<COMPILE_LANG_AND_ID:C,Clang>:-Wno-unused-parameter>
59+ $<$<COMPILE_LANG_AND_ID:C,Clang>:-Wno-return-type >
60+ $<$<COMPILE_LANG_AND_ID:C,Clang>:-Wno-pointer-sign>
61+ $<$<COMPILE_LANG_AND_ID:C,Clang>:-Wno-typedef-redefinition>
62+ $<$<COMPILE_LANG_AND_ID:C,Clang>:-Wno-strict-prototypes>
63+ $<$<COMPILE_LANG_AND_ID:C,Clang>:-Wno-sometimes-uninitialized>
64+ )
65+
2766# Set global path variables.
2867get_filename_component ( __MODULE_ROOT_DIR "${CMAKE_CURRENT_LIST_DIR} /../.." ABSOLUTE )
2968set ( MODULE_ROOT_DIR ${__MODULE_ROOT_DIR} CACHE INTERNAL "FreeRTOS-Plus-TCP repository root." )
0 commit comments