89 lines
3.8 KiB
CMake
89 lines
3.8 KiB
CMake
include_guard(GLOBAL)
|
|
|
|
option(MYXX_CMAKE_WARNINGS_NORMAL "Normal level" ON)
|
|
cmake_dependent_option(MYXX_CMAKE_WARNINGS_VERBOSE "Verbose level" OFF "MYXX_CMAKE_WARNINGS_NORMAL" OFF)
|
|
|
|
if(MYXX_CMAKE_WARNINGS_NORMAL)
|
|
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
|
check_enable_cxx_compiler_flag(-Wshadow)
|
|
check_enable_cxx_compiler_flag(-Wtautological-overlap-compare)
|
|
check_enable_cxx_compiler_flag(-Wtautological-compare)
|
|
check_enable_cxx_compiler_flag(-Wtautological-bitwise-compare)
|
|
check_enable_cxx_compiler_flag(-Wbitwise-conditional-parentheses)
|
|
check_enable_cxx_compiler_flag(-Wrange-loop-analysis)
|
|
check_enable_cxx_compiler_flag(-Wmisleading-indentation)
|
|
check_enable_cxx_compiler_flag(-Wc99-designator)
|
|
check_enable_cxx_compiler_flag(-Wreorder-init-list)
|
|
check_enable_cxx_compiler_flag(-Wsizeof-pointer-div)
|
|
check_enable_cxx_compiler_flag(-Wsizeof-array-div)
|
|
check_enable_cxx_compiler_flag(-Wxor-used-as-pow)
|
|
check_enable_cxx_compiler_flag(-Wfinal-dtor-non-final-class)
|
|
endif()
|
|
|
|
if((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") OR
|
|
(CMAKE_CXX_COMPILER_ID STREQUAL "GNU"))
|
|
check_enable_cxx_compiler_flag(-Wall)
|
|
check_enable_cxx_compiler_flag(-Wextra)
|
|
check_enable_cxx_compiler_flag(-Wnon-virtual-dtor)
|
|
check_enable_cxx_compiler_flag(-Wlogical-op)
|
|
check_enable_cxx_compiler_flag(-Wconversion)
|
|
check_enable_cxx_compiler_flag(-Wdeprecated)
|
|
check_enable_cxx_compiler_flag(-ftemplate-depth=1024)
|
|
check_enable_cxx_compiler_flag(-Wold-style-cast)
|
|
check_enable_cxx_compiler_flag(-Wdisabled-optimization)
|
|
check_enable_cxx_compiler_flag(-ftemplate-backtrace-limit=0)
|
|
check_enable_cxx_compiler_flag(-fstack-protector-all)
|
|
check_enable_cxx_compiler_flag(-Wodr)
|
|
check_enable_cxx_compiler_flag(-Wsuggest-final-types)
|
|
check_enable_cxx_compiler_flag(-Wsuggest-final-methods)
|
|
check_enable_cxx_compiler_flag(-Wsuggest-override)
|
|
check_enable_cxx_compiler_flag(-fdiagnostics-show-template-tree)
|
|
|
|
if(NOT MYXX_CMAKE_WARNINGS_VERBOSE)
|
|
check_enable_cxx_compiler_flag(-Wno-float-conversion)
|
|
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
|
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER "5.999")
|
|
check_enable_cxx_compiler_flag(-Wno-attributes)
|
|
endif()
|
|
check_enable_cxx_compiler_flag(-Wno-maybe-uninitialized)
|
|
endif()
|
|
endif()
|
|
endif()
|
|
endif()
|
|
|
|
if(MYXX_CMAKE_WARNINGS_VERBOSE)
|
|
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
|
check_enable_cxx_compiler_flag(-Wpointer-to-int-cast)
|
|
check_enable_cxx_compiler_flag(-Wuninitialized-const-reference)
|
|
check_enable_cxx_compiler_flag(-Wunused-but-set-parameter)
|
|
check_enable_cxx_compiler_flag(-Wunused-but-set-variable)
|
|
check_enable_cxx_compiler_flag(-Wnull-pointer-subtraction)
|
|
check_enable_cxx_compiler_flag(-Wno-reserved-identifier)
|
|
endif()
|
|
|
|
if((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") OR
|
|
(CMAKE_CXX_COMPILER_ID STREQUAL "GNU"))
|
|
check_enable_cxx_compiler_flag(-Wshadow)
|
|
check_enable_cxx_compiler_flag(-Wpedantic)
|
|
check_enable_cxx_compiler_flag(-Wnoexcept)
|
|
check_enable_cxx_compiler_flag(-Wzero-as-null-pointer-constant)
|
|
# From GCC 6.
|
|
check_enable_cxx_compiler_flag(-Wshift-negative-value)
|
|
check_enable_cxx_compiler_flag(-Wshift-overflow=2)
|
|
check_enable_cxx_compiler_flag(-Wduplicated-cond)
|
|
check_enable_cxx_compiler_flag(-Wnull-dereference)
|
|
# From GCC 7.
|
|
check_enable_cxx_compiler_flag(-Wduplicated-branches)
|
|
check_enable_cxx_compiler_flag(-Wrestrict)
|
|
check_enable_cxx_compiler_flag(-Waligned-new)
|
|
# From GCC 8.
|
|
check_enable_cxx_compiler_flag(-Wcast-align=strict)
|
|
# From GCC 10.
|
|
check_enable_cxx_compiler_flag(-Wmismatched-tags)
|
|
check_enable_cxx_compiler_flag(-Wredundant-tags)
|
|
# From GCC 12.
|
|
check_enable_cxx_compiler_flag(-Warray-compare)
|
|
check_enable_cxx_compiler_flag(-Wmissing-requires)
|
|
endif()
|
|
endif()
|