diff options
| -rwxr-xr-x | cmake/mingw-w64.cmake | 36 | 
1 files changed, 34 insertions, 2 deletions
| diff --git a/cmake/mingw-w64.cmake b/cmake/mingw-w64.cmake index 9adfa907..7d3db429 100755 --- a/cmake/mingw-w64.cmake +++ b/cmake/mingw-w64.cmake @@ -44,10 +44,42 @@ set(_LDFLAGS " -Wl,--as-needed ${_CXXFLAGS} ")  set(_LDFLAGS_RELEASE " ${_CXXFLAGS_RELEASE} ")  set(_LDFLAGS_DEBUG " ${_CXXFLAGS_DEBUG} ") +set(WARNINGS_ENABLE TRUE CACHE BOOL "Emit additional warnings at compile-time") +# these are very noisy, high false positive rate. only for development. +set(WARNINGS_FINAL_SUGGESTIONS FALSE CACHE BOOL "Emit very noisy warnings at compile-time") +set(WARNINGS_PEDANTIC FALSE CACHE BOOL "Emit very noisy warnings at compile-time") +set(WARNINGS_NUMERIC FALSE CACHE BOOL "Emit very noisy warnings at compile-time") + +set(noisy-warns "") +set(suggest-final "") +set(pedantics "") +set(numerics "") +if(CMAKE_PROJECT_NAME STREQUAL "opentrack" AND WARNINGS_ENABLE) +    if(WARNINGS_FINAL_SUGGESTIONS) +        set(suggest-final "-Wsuggest-final-types -Wsuggest-final-methods") +    endif() +    if(WARNINGS_PEDANTIC) +        set(pedantics "-Wuseless-cast -Wsuggest-override") +    endif() +    if(WARNINGS_NUMERIC) +        set(numerics "-Wdouble-promotion") +    endif() +    set(noisy-warns "${suggest-final} ${pedantics} ${numerics}") +endif() + +# -Wodr and -Wattributes are disabled due to LTO false positives in dependencies. +set(clang-warns "") +if(CMAKE_COMPILER_IS_CLANG) +    set(clang-warns "-Wweak-vtables") +endif() +set(_CXX_WARNS "") +if(WARNINGS_ENABLE) +    set(_CXX_WARNS "-Wall -Wextra -pedantic -Wdelete-non-virtual-dtor -Wsign-compare -Wno-odr -Wno-attributes -Wcast-align -Wc++14-compat ${clang-warns} ${noisy-warns}") +endif() +  foreach(j C CXX)      foreach(i "" _DEBUG _RELEASE) -        set(OVERRIDE_${j}_FLAGS${i} "" CACHE STRING "") -        set(CMAKE_${j}_FLAGS${i} " ${_${j}FLAGS${i}} ${OVERRIDE_${j}_FLAGS${i}} " CACHE STRING "" FORCE) +        set(CMAKE_${j}_FLAGS${i} " ${_${j}FLAGS${i}} ${_${j}_WARNS} ${OVERRIDE_${j}_FLAGS${i}} " CACHE STRING "" FORCE)      endforeach()  endforeach() | 
