diff --git a/CMakeLists.txt b/CMakeLists.txt index c245b3e..48c2d49 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -68,6 +68,7 @@ ELSE(SDL2PP_WITH_MIXER) ENDIF(SDL2PP_WITH_MIXER) # compiler flags & definitions +MESSAGE(STATUS "Compiler: ${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}") IF(MSVC) SET(SDL2PP_WARNINGS "${SDL2PP_WARNINGS} /W3") SET(SDL2PP_WERROR_FLAG "/WX") @@ -82,17 +83,26 @@ ELSE(MSVC) INCLUDE(AppendCXXFlagIfSupported) - IF(SDL2PP_EXTENDED_CLANG_WARNINGS) - APPEND_CXX_FLAG_IF_SUPPORTED(-Weverything SDL2PP_WARNINGS) - APPEND_CXX_FLAG_IF_SUPPORTED(-Wno-c++98-compat SDL2PP_WARNINGS) - APPEND_CXX_FLAG_IF_SUPPORTED(-Wno-c++98-compat-pedantic SDL2PP_WARNINGS) - APPEND_CXX_FLAG_IF_SUPPORTED(-Wno-padded SDL2PP_WARNINGS) - ENDIF(SDL2PP_EXTENDED_CLANG_WARNINGS) + IF(CMAKE_COMPILER_IS_GNUCXX) + # gcc + IF(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.1.1) + # gcc < 5 has overly strict missing initializers warning, fixed in later versions + # See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=36750 + APPEND_CXX_FLAG_IF_SUPPORTED(-Wno-missing-field-initializers SDL2PP_WARNINGS) + ENDIF(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.1.1) + ELSEIF(CMAKE_CXX_COMPILER_ID MATCHES "Clang") + # clang + IF(SDL2PP_EXTENDED_CLANG_WARNINGS) + APPEND_CXX_FLAG_IF_SUPPORTED(-Weverything SDL2PP_WARNINGS) + APPEND_CXX_FLAG_IF_SUPPORTED(-Wno-c++98-compat SDL2PP_WARNINGS) + APPEND_CXX_FLAG_IF_SUPPORTED(-Wno-c++98-compat-pedantic SDL2PP_WARNINGS) + APPEND_CXX_FLAG_IF_SUPPORTED(-Wno-padded SDL2PP_WARNINGS) + ENDIF(SDL2PP_EXTENDED_CLANG_WARNINGS) - # always try to enable some warnings beyond -Wall - APPEND_CXX_FLAG_IF_SUPPORTED(-Wmissing-prototypes SDL2PP_WARNINGS) - APPEND_CXX_FLAG_IF_SUPPORTED(-Wtautological-compare SDL2PP_WARNINGS) - APPEND_CXX_FLAG_IF_SUPPORTED(-Wshorten-64-to-32 SDL2PP_WARNINGS) + APPEND_CXX_FLAG_IF_SUPPORTED(-Wmissing-prototypes SDL2PP_WARNINGS) + APPEND_CXX_FLAG_IF_SUPPORTED(-Wtautological-compare SDL2PP_WARNINGS) + APPEND_CXX_FLAG_IF_SUPPORTED(-Wshorten-64-to-32 SDL2PP_WARNINGS) + ENDIF(CMAKE_COMPILER_IS_GNUCXX) ENDIF(MSVC) LIST(REMOVE_DUPLICATES SDL2_ALL_INCLUDE_DIRS)