|
|
@ -26,11 +26,23 @@ if( CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang" ) |
|
|
|
include( CheckCXXCompilerFlag ) |
|
|
|
|
|
|
|
|
|
|
|
# The SWIG-generated files tend to throw a lot of warnings, so |
|
|
|
# we do not add the warnings directly to the flags here but instead |
|
|
|
# keep track of them and add them to the flags later in a controlled manner |
|
|
|
# (that way we can not put any warnings on the SWIG-generated files) |
|
|
|
set( COMPILER_SUPPORTS_WARNINGS TRUE ) |
|
|
|
|
|
|
|
# Establish -Wall early, so specialized relaxations of this may come |
|
|
|
# subsequently on the command line, such as in pcbnew/github/CMakeLists.txt |
|
|
|
set( WARN_FLAGS_C "-Wall" ) |
|
|
|
set( WARN_FLAGS_CXX "-Wall" ) |
|
|
|
|
|
|
|
|
|
|
|
# Warn about missing override specifiers |
|
|
|
CHECK_CXX_COMPILER_FLAG( "-Wsuggest-override" COMPILER_SUPPORTS_WSUGGEST_OVERRIDE ) |
|
|
|
|
|
|
|
if( COMPILER_SUPPORTS_WSUGGEST_OVERRIDE ) |
|
|
|
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wsuggest-override" ) |
|
|
|
set( WARN_FLAGS_CXX "${WARN_FLAGS_CXX} -Wsuggest-override" ) |
|
|
|
message( STATUS "Enabling warning -Wsuggest-override" ) |
|
|
|
endif() |
|
|
|
|
|
|
@ -39,15 +51,34 @@ if( CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang" ) |
|
|
|
CHECK_CXX_COMPILER_FLAG( "-Winconsistent-missing-override" COMPILER_SUPPORTS_WINCONSISTENT_MISSING_OVERRIDE ) |
|
|
|
|
|
|
|
if( COMPILER_SUPPORTS_WINCONSISTENT_MISSING_OVERRIDE ) |
|
|
|
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Winconsistent-missing-override" ) |
|
|
|
set( WARN_FLAGS_CXX "${WARN_FLAGS_CXX} -Winconsistent-missing-override" ) |
|
|
|
message( STATUS "Enabling warning -Winconsistent-missing-override" ) |
|
|
|
endif() |
|
|
|
|
|
|
|
|
|
|
|
# Warn on duplicated branches |
|
|
|
CHECK_CXX_COMPILER_FLAG( "-Wduplicated-branches" COMPILER_SUPPORTS_WDUPLICATED_BRANCHES ) |
|
|
|
|
|
|
|
if( COMPILER_SUPPORTS_WDUPLICATED_BRANCHES ) |
|
|
|
set( WARN_FLAGS_CXX "${WARN_FLAGS_CXX} -Wduplicated-branches" ) |
|
|
|
message( STATUS "Enabling warning -Wduplicated-branches" ) |
|
|
|
endif() |
|
|
|
|
|
|
|
|
|
|
|
# Warn on duplicated conditions |
|
|
|
CHECK_CXX_COMPILER_FLAG( "-Wduplicated-cond" COMPILER_SUPPORTS_WDUPLICATED_COND ) |
|
|
|
|
|
|
|
if( COMPILER_SUPPORTS_WDUPLICATED_COND ) |
|
|
|
set( WARN_FLAGS_CXX "${WARN_FLAGS_CXX} -Wduplicated-cond" ) |
|
|
|
message( STATUS "Enabling warning -Wduplicated-cond" ) |
|
|
|
endif() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CHECK_CXX_COMPILER_FLAG( "-Wvla" COMPILER_SUPPORTS_WVLA ) |
|
|
|
|
|
|
|
if( COMPILER_SUPPORTS_WVLA ) |
|
|
|
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror=vla" ) |
|
|
|
set( WARN_FLAGS_CXX "${WARN_FLAGS_CXX} -Werror=vla" ) |
|
|
|
message( STATUS "Enabling error for -Wvla" ) |
|
|
|
endif() |
|
|
|
|
|
|
@ -56,7 +87,13 @@ if( CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang" ) |
|
|
|
CHECK_CXX_COMPILER_FLAG( "-Wimplicit-fallthrough" COMPILER_SUPPORTS_WIMPLICIT_FALLTHROUGH ) |
|
|
|
|
|
|
|
if( COMPILER_SUPPORTS_WIMPLICIT_FALLTHROUGH ) |
|
|
|
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wimplicit-fallthrough" ) |
|
|
|
if( CMAKE_COMPILER_IS_GNUCXX ) |
|
|
|
# GCC level 5 does not allow comments - mirrors the Clang warning |
|
|
|
set( WARN_FLAGS_CXX "${WARN_FLAGS_CXX} -Wimplicit-fallthrough=5" ) |
|
|
|
else() |
|
|
|
set( WARN_FLAGS_CXX "${WARN_FLAGS_CXX} -Wimplicit-fallthrough" ) |
|
|
|
endif() |
|
|
|
|
|
|
|
message( STATUS "Enabling warning -Wimplicit-fallthrough" ) |
|
|
|
endif() |
|
|
|
|
|
|
@ -65,20 +102,16 @@ if( CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang" ) |
|
|
|
CHECK_CXX_COMPILER_FLAG( "-Wreturn-type" COMPILER_SUPPORTS_WRETURN_TYPE ) |
|
|
|
|
|
|
|
if( COMPILER_SUPPORTS_WRETURN_TYPE ) |
|
|
|
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror=return-type" ) |
|
|
|
set( WARN_FLAGS_CXX "${WARN_FLAGS_CXX} -Werror=return-type" ) |
|
|
|
message( STATUS "Enabling error for -Wreturn-type" ) |
|
|
|
endif() |
|
|
|
|
|
|
|
|
|
|
|
# Warn about shadowed variables (-Wshadow option), if supported |
|
|
|
# Unfortunately, the swig autogenerated files have a lot of shadowed variables |
|
|
|
# and -Wno-shadow does not exist. |
|
|
|
# Adding -Wshadow can be made only for .cpp files |
|
|
|
# and will be added later in CMakeLists.txt |
|
|
|
# Warn about shadowed variables |
|
|
|
CHECK_CXX_COMPILER_FLAG( "-Wshadow" COMPILER_SUPPORTS_WSHADOW ) |
|
|
|
|
|
|
|
if( COMPILER_SUPPORTS_WSHADOW ) |
|
|
|
set( WSHADOW_FLAGS "-Wshadow" ) |
|
|
|
set( WARN_FLAGS_CXX "${WARN_FLAGS_CXX} -Wshadow" ) |
|
|
|
message( STATUS "Enabling warning -Wshadow" ) |
|
|
|
endif() |
|
|
|
|
|
|
|