set(COMPILER_FLAGS -Wall -Wcast-align -Wdouble-promotion -Wextra -Werror -Wformat=2 -Wimplicit-fallthrough -Wmisleading-indentation -Wno-narrowing -Wno-deprecated-declarations -Wno-dangling-else -Wno-unused-but-set-variable -Wnon-virtual-dtor -Wnull-dereference -Wold-style-cast -pedantic -Wpedantic -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: reenable 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 target_compile_options(clio_options INTERFACE ${COMPILER_FLAGS})