mirror of
https://github.com/XRPLF/clio.git
synced 2025-11-04 11:55:51 +00:00
83 lines
3.4 KiB
CMake
83 lines
3.4 KiB
CMake
set(COMPILER_FLAGS
|
|
-pedantic
|
|
-Wall
|
|
-Wcast-align
|
|
-Wdouble-promotion
|
|
-Werror
|
|
-Wextra
|
|
-Wformat=2
|
|
-Wimplicit-fallthrough
|
|
-Wmisleading-indentation
|
|
-Wno-dangling-else
|
|
-Wno-deprecated-declarations
|
|
-Wno-narrowing
|
|
-Wno-unused-but-set-variable
|
|
-Wnon-virtual-dtor
|
|
-Wnull-dereference
|
|
-Wold-style-cast
|
|
-Wpedantic
|
|
-Wunreachable-code
|
|
-Wunused
|
|
# FIXME: The following bunch are needed for gcc12 atm.
|
|
-Wno-missing-requires
|
|
-Wno-restrict
|
|
-Wno-null-dereference
|
|
-Wno-maybe-uninitialized
|
|
-Wno-unknown-warning-option # and this to work with clang
|
|
# TODO: Address these and others in https://github.com/XRPLF/clio/issues/1273
|
|
)
|
|
|
|
# TODO: re-enable when we change CI #884 if (is_gcc AND NOT lint) list(APPEND COMPILER_FLAGS -Wduplicated-branches
|
|
# -Wduplicated-cond -Wlogical-op -Wuseless-cast ) endif ()
|
|
|
|
if (is_clang)
|
|
list(APPEND COMPILER_FLAGS -Wshadow # gcc is to aggressive with shadowing
|
|
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78147
|
|
)
|
|
endif ()
|
|
|
|
if (is_appleclang)
|
|
list(APPEND COMPILER_FLAGS -Wreorder-init-list)
|
|
endif ()
|
|
|
|
if (san)
|
|
# When building with sanitizers some compilers will actually produce extra warnings/errors. We don't want this yet, at
|
|
# least not until we have fixed all runtime issues reported by the sanitizers. Once that is done we can start removing
|
|
# some of these and trying to fix it in our codebase. We can never remove all of below because most of them are
|
|
# reported from deep inside libraries like boost or libxrpl.
|
|
#
|
|
# TODO: Address in https://github.com/XRPLF/clio/issues/1885
|
|
list(
|
|
APPEND
|
|
COMPILER_FLAGS
|
|
-Wno-error=tsan # Disables treating TSAN warnings as errors
|
|
-Wno-tsan # Disables TSAN warnings (thread-safety analysis)
|
|
-Wno-uninitialized # Disables warnings about uninitialized variables (AddressSanitizer, UndefinedBehaviorSanitizer,
|
|
# etc.)
|
|
-Wno-stringop-overflow # Disables warnings about potential string operation overflows (AddressSanitizer)
|
|
-Wno-unsafe-buffer-usage # Disables warnings about unsafe memory operations (AddressSanitizer)
|
|
-Wno-frame-larger-than # Disables warnings about stack frame size being too large (AddressSanitizer)
|
|
-Wno-unused-function # Disables warnings about unused functions (LeakSanitizer, memory-related issues)
|
|
-Wno-unused-but-set-variable # Disables warnings about unused variables (MemorySanitizer)
|
|
-Wno-thread-safety-analysis # Disables warnings related to thread safety usage (ThreadSanitizer)
|
|
-Wno-thread-safety # Disables warnings related to thread safety usage (ThreadSanitizer)
|
|
-Wno-sign-compare # Disables warnings about signed/unsigned comparison (UndefinedBehaviorSanitizer)
|
|
-Wno-nonnull # Disables warnings related to null pointer dereferencing (UndefinedBehaviorSanitizer)
|
|
-Wno-address # Disables warnings about address-related issues (UndefinedBehaviorSanitizer)
|
|
-Wno-array-bounds # Disables array bounds checks (UndefinedBehaviorSanitizer)
|
|
)
|
|
endif ()
|
|
|
|
# See https://github.com/cpp-best-practices/cppbestpractices/blob/master/02-Use_the_Tools_Available.md#gcc--clang for
|
|
# the flags description
|
|
|
|
if (time_trace)
|
|
if (is_clang OR is_appleclang)
|
|
list(APPEND COMPILER_FLAGS -ftime-trace)
|
|
else ()
|
|
message(FATAL_ERROR "Clang or AppleClang is required to use `-ftime-trace`")
|
|
endif ()
|
|
endif ()
|
|
|
|
target_compile_options(clio_options INTERFACE ${COMPILER_FLAGS})
|