From c757fdb7792df9704e1c517a7f85279492745193 Mon Sep 17 00:00:00 2001 From: Laurens Voerman Date: Fri, 16 Sep 2016 17:12:41 +0200 Subject: [PATCH 1/2] enable some more aggressive warning flags for gcc 4.7 and cmake version below 3 --- CMakeLists.txt | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7b8d32e77..868220451 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1044,8 +1044,30 @@ IF(CMAKE_COMPILER_IS_GNUCXX) # to be the workaround. SET(OSG_AGGRESSIVE_WARNING_FLAGS -Wall -Wparentheses -Wno-long-long -Wno-import -pedantic -Wreturn-type -Wmissing-braces -Wunknown-pragmas -Wunused) - IF(${CMAKE_MAJOR_VERSION} GREATER 2 AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.9) - SET(OSG_AGGRESSIVE_WARNING_FLAGS ${OSG_AGGRESSIVE_WARNING_FLAGS} -Wshadow -Wmaybe-uninitialized -Wextra) + IF(${CMAKE_MAJOR_VERSION} GREATER 2 OR + (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} GREATER 6) OR + (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 6 AND ${CMAKE_PATCH_VERSION} GREATER 2)) + #cmake 2.6.1 introduces version check macro's needed to do something with the compiler version string + IF("${CMAKE_VERSION}" VERSION_LESS 2.8.8) + execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE CMAKE_CXX_COMPILER_VERSION) + ENDIF() + MESSAGE( STATUS "g++ version ${CMAKE_CXX_COMPILER_VERSION} ") + + IF(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.9) + SET(OSG_AGGRESSIVE_WARNING_FLAGS ${OSG_AGGRESSIVE_WARNING_FLAGS} -Wshadow -Wmaybe-uninitialized -Wextra) + ELSE() + IF(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.6) + SET(OSG_AGGRESSIVE_WARNING_FLAGS ${OSG_AGGRESSIVE_WARNING_FLAGS} -Wmaybe-uninitialized -Wextra) + ENDIF() + ENDIF() + + IF(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 6.0) + # -Wmisleading-indentation (in -Wall) generates less warnings when interpreting tab as 4 spaces instead of the default of 8 + #SET(OSG_AGGRESSIVE_WARNING_FLAGS ${OSG_AGGRESSIVE_WARNING_FLAGS} -ftabstop=4) + SET(OSG_AGGRESSIVE_WARNING_FLAGS ${OSG_AGGRESSIVE_WARNING_FLAGS} -Wno-misleading-indentation) + ENDIF() + ELSE() + MESSAGE( STATUS "cmake version < 2.6.2 missing VERSION_LESS and VERSION_GREATER macros - ignoring g++ version") ENDIF() # Previous included -Wformat=2 in OSG_AGGRESSIVE_WARNING_FLAGS but had to remove it due to standard library errors From 3b029f5d3e2e6348707a51b058c50c2a3519c68f Mon Sep 17 00:00:00 2001 From: Laurens Voerman Date: Tue, 20 Sep 2016 10:23:15 +0200 Subject: [PATCH 2/2] short version with gcc warning flags depending on compiler version. --- CMakeLists.txt | 33 ++++++++++----------------------- 1 file changed, 10 insertions(+), 23 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index adefaa2ef..801fee9da 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1044,30 +1044,17 @@ IF(CMAKE_COMPILER_IS_GNUCXX) # to be the workaround. SET(OSG_AGGRESSIVE_WARNING_FLAGS -Wall -Wparentheses -Wno-long-long -Wno-import -pedantic -Wreturn-type -Wmissing-braces -Wunknown-pragmas -Wunused) - IF(${CMAKE_MAJOR_VERSION} GREATER 2 OR - (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} GREATER 6) OR - (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 6 AND ${CMAKE_PATCH_VERSION} GREATER 2)) - #cmake 2.6.1 introduces version check macro's needed to do something with the compiler version string - IF("${CMAKE_VERSION}" VERSION_LESS 2.8.8) - execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE CMAKE_CXX_COMPILER_VERSION) + MESSAGE( STATUS "g++ version ${CMAKE_CXX_COMPILER_VERSION} ") + IF(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.6) + SET(OSG_AGGRESSIVE_WARNING_FLAGS ${OSG_AGGRESSIVE_WARNING_FLAGS} -Wmaybe-uninitialized -Wextra) + IF(CMAKE_CXX_COMPILER_VERSIO VERSION_GREATER 4.9) + SET(OSG_AGGRESSIVE_WARNING_FLAGS ${OSG_AGGRESSIVE_WARNING_FLAGS} -Wshadow) + IF(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 6.0) + # -Wmisleading-indentation (in -Wall) generates less warnings when interpreting tab as 4 spaces instead of the default of 8 + # SET(OSG_AGGRESSIVE_WARNING_FLAGS ${OSG_AGGRESSIVE_WARNING_FLAGS} -ftabstop=4) + SET(OSG_AGGRESSIVE_WARNING_FLAGS ${OSG_AGGRESSIVE_WARNING_FLAGS} -Wno-misleading-indentation) + ENDIF() ENDIF() - MESSAGE( STATUS "g++ version ${CMAKE_CXX_COMPILER_VERSION} ") - - IF(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.9) - SET(OSG_AGGRESSIVE_WARNING_FLAGS ${OSG_AGGRESSIVE_WARNING_FLAGS} -Wshadow -Wmaybe-uninitialized -Wextra) - ELSE() - IF(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.6) - SET(OSG_AGGRESSIVE_WARNING_FLAGS ${OSG_AGGRESSIVE_WARNING_FLAGS} -Wmaybe-uninitialized -Wextra) - ENDIF() - ENDIF() - - IF(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 6.0) - # -Wmisleading-indentation (in -Wall) generates less warnings when interpreting tab as 4 spaces instead of the default of 8 - #SET(OSG_AGGRESSIVE_WARNING_FLAGS ${OSG_AGGRESSIVE_WARNING_FLAGS} -ftabstop=4) - SET(OSG_AGGRESSIVE_WARNING_FLAGS ${OSG_AGGRESSIVE_WARNING_FLAGS} -Wno-misleading-indentation) - ENDIF() - ELSE() - MESSAGE( STATUS "cmake version < 2.6.2 missing VERSION_LESS and VERSION_GREATER macros - ignoring g++ version") ENDIF() # Previous included -Wformat=2 in OSG_AGGRESSIVE_WARNING_FLAGS but had to remove it due to standard library errors