From 8359c96621b6b8fcaa59c8f4beb5ab1792f79352 Mon Sep 17 00:00:00 2001 From: Rene Sugar Date: Thu, 28 Sep 2017 11:35:15 -0700 Subject: [PATCH 01/11] ARROW-1615 Added BUILD_WARNING_LEVEL and BUILD_WARNING_FLAGS to SetupCxxFlags.cmake --- cpp/CMakeLists.txt | 6 +- cpp/cmake_modules/SetupCxxFlags.cmake | 82 ++++++++++++++++++++++++++- 2 files changed, 84 insertions(+), 4 deletions(-) diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index 972132f29e9..ad99970e9b2 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -229,6 +229,9 @@ include(BuildUtils) # Compiler flags ############################################################ +# Determine compiler version +include(CompilerInfo) + if (ARROW_NO_DEPRECATED_API) add_definitions(-DARROW_NO_DEPRECATED_API) endif() @@ -253,9 +256,6 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${ARROW_CXXFLAGS}") message(STATUS "CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}") -# Determine compiler version -include(CompilerInfo) - if ("${COMPILER_FAMILY}" STREQUAL "clang") # Using Clang with ccache causes a bunch of spurious warnings that are # purportedly fixed in the next version of ccache. See the following for details: diff --git a/cpp/cmake_modules/SetupCxxFlags.cmake b/cpp/cmake_modules/SetupCxxFlags.cmake index 6e92c4b1c1b..d050d96709a 100644 --- a/cpp/cmake_modules/SetupCxxFlags.cmake +++ b/cpp/cmake_modules/SetupCxxFlags.cmake @@ -48,9 +48,89 @@ if (MSVC) set(CXX_COMMON_FLAGS "/W3") endif() else() - set(CXX_COMMON_FLAGS "-Wall -std=c++11") + # Common flags set below with warning level + set(CXX_COMMON_FLAGS "") endif() +# Build warning level (CHECKIN, EVERYTHING, etc.) + +# GCC/Clang warning flags by version: +# https://github.com/Barro/compiler-warnings + +# if no build warning level is specified, default to development warning level +if (NOT BUILD_WARNING_LEVEL) + set(BUILD_WARNING_LEVEL Development) +endif(NOT BUILD_WARNING_LEVEL) + +string(TOUPPER ${BUILD_WARNING_LEVEL} UPPERCASE_BUILD_WARNING_LEVEL) + +if ("${UPPERCASE_BUILD_WARNING_LEVEL}" STREQUAL "CHECKIN") + # Pre-checkin builds + if ("${COMPILER_FAMILY}" STREQUAL "msvc") + string(REPLACE "/W3" "" CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS}") + set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} /W3") + # Treat all compiler warnings as errors + set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} /WX") + elseif ("${COMPILER_FAMILY}" STREQUAL "clang") + # NOTE: -Wconversion does not return the same warnings on CLang and GNU (build can still fail even when enabled) + set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Weverything -Wno-c++98-compat -Wno-c++98-compat-pedantic -Wno-deprecated -Wno-weak-vtables -Wno-padded -Wno-unused-parameter -Wno-undef -Wno-documentation-deprecated-sync -Wno-reserved-id-macro -Wno-shadow -Wno-switch-enum -Wno-documentation -Wno-exit-time-destructors -Wno-global-constructors -Wno-weak-template-vtables -Wno-undefined-reinterpret-cast -Wno-implicit-fallthrough -Wno-old-style-cast -Wno-unreachable-code-return -Wno-float-equal -Wno-missing-prototypes -Wno-double-promotion -Wno-non-virtual-dtor -Wno-unused-macros -Wno-covered-switch-default -Wno-unreachable-code-break -Wno-extra-semi -Wno-range-loop-analysis -Wno-shift-sign-overflow -Wno-used-but-marked-unused -Wno-missing-variable-declarations -Wno-gnu-zero-variadic-macro-arguments -Wconversion -Wno-sign-conversion -Wc++11-narrowing -Wnarrowing") + # Treat all compiler warnings as errors + set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Werror") + elseif ("${COMPILER_FAMILY}" STREQUAL "gcc") + set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wall -Wconversion -Wno-sign-conversion") + # Treat all compiler warnings as errors + set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Werror") + else() + message(FATAL_ERROR "Unknown compiler. Version info:\n${COMPILER_VERSION_FULL}") + endif() +elseif ("${UPPERCASE_BUILD_WARNING_LEVEL}" STREQUAL "EVERYTHING") + # Development builds for fixing warnings + if ("${COMPILER_FAMILY}" STREQUAL "msvc") + string(REPLACE "/W3" "" CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS}") + set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} /Wall") + # https://docs.microsoft.com/en-us/cpp/build/reference/compiler-option-warning-level + # /wdnnnn disables a warning where "nnnn" is a warning number + # Treat all compiler warnings as errors + set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} /WX") + elseif ("${COMPILER_FAMILY}" STREQUAL "clang") + set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Weverything -Wno-c++98-compat -Wno-c++98-compat-pedantic") + # Treat all compiler warnings as errors + set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Werror") + elseif ("${COMPILER_FAMILY}" STREQUAL "gcc") + set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wall -Wpedantic -Wextra -Wno-unused-parameter") + # Treat all compiler warnings as errors + set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Werror") + else() + message(FATAL_ERROR "Unknown compiler. Version info:\n${COMPILER_VERSION_FULL}") + endif() +else() + # Development builds (warning are not treated as errors) + if ("${COMPILER_FAMILY}" STREQUAL "msvc") + # https://docs.microsoft.com/en-us/cpp/build/reference/compiler-option-warning-level + # TODO: Enable /Wall and disable individual warnings until build compiles without errors + # /wdnnnn disables a warning where "nnnn" is a warning number + string(REPLACE "/W3" "" CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS}") + set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} /W3") + elseif ("${COMPILER_FAMILY}" STREQUAL "clang") + set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Weverything -Wno-c++98-compat -Wno-c++98-compat-pedantic -Wno-deprecated -Wno-weak-vtables -Wno-padded -Wno-unused-parameter -Wno-undef -Wno-documentation-deprecated-sync -Wno-reserved-id-macro -Wno-shadow -Wno-switch-enum -Wno-documentation -Wno-exit-time-destructors -Wno-global-constructors -Wno-weak-template-vtables -Wno-undefined-reinterpret-cast -Wno-implicit-fallthrough -Wno-old-style-cast -Wno-unreachable-code-return -Wno-float-equal -Wno-missing-prototypes -Wno-double-promotion -Wno-non-virtual-dtor -Wno-unused-macros -Wno-covered-switch-default -Wno-unreachable-code-break -Wno-extra-semi -Wno-range-loop-analysis -Wno-shift-sign-overflow -Wno-used-but-marked-unused -Wno-missing-variable-declarations -Wno-gnu-zero-variadic-macro-arguments -Wconversion -Wno-sign-conversion -Wc++11-narrowing -Wnarrowing") + elseif ("${COMPILER_FAMILY}" STREQUAL "gcc") + set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wall") + else() + message(FATAL_ERROR "Unknown compiler. Version info:\n${COMPILER_VERSION_FULL}") + endif() +endif() + +# if build warning flags is set, add to CXX_COMMON_FLAGS +if (BUILD_WARNING_FLAGS) + # Use BUILD_WARNING_FLAGS with BUILD_WARNING_LEVEL=everything to disable + # warnings (use with Clang's -Weverything flag to find potential errors) + set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} ${BUILD_WARNING_FLAGS}") +endif(NOT BUILD_WARNING_FLAGS) + +if (NOT ("${COMPILER_FAMILY}" STREQUAL "msvc")) +set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -std=c++11") +endif() +message( STATUS "APPLE: " ${APPLE} ) # Only enable additional instruction sets if they are supported if (CXX_SUPPORTS_SSE3 AND ARROW_SSE3) set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -msse3") From 159e189782ec4219797ea1d6b69115cacdcf096b Mon Sep 17 00:00:00 2001 From: Rene Sugar Date: Thu, 28 Sep 2017 15:16:18 -0700 Subject: [PATCH 02/11] ARROW-1615 Include CompilerInfo before SetupCxxFlags in arrow/python --- cpp/cmake_modules/SetupCxxFlags.cmake | 2 +- python/CMakeLists.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cpp/cmake_modules/SetupCxxFlags.cmake b/cpp/cmake_modules/SetupCxxFlags.cmake index d050d96709a..ad1d7c32f40 100644 --- a/cpp/cmake_modules/SetupCxxFlags.cmake +++ b/cpp/cmake_modules/SetupCxxFlags.cmake @@ -125,7 +125,7 @@ if (BUILD_WARNING_FLAGS) # Use BUILD_WARNING_FLAGS with BUILD_WARNING_LEVEL=everything to disable # warnings (use with Clang's -Weverything flag to find potential errors) set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} ${BUILD_WARNING_FLAGS}") -endif(NOT BUILD_WARNING_FLAGS) +endif(BUILD_WARNING_FLAGS) if (NOT ("${COMPILER_FAMILY}" STREQUAL "msvc")) set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -std=c++11") diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index a636d51b420..d148d1105b6 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -72,8 +72,8 @@ endif(CCACHE_FOUND) ############################################################ include(BuildUtils) -include(SetupCxxFlags) include(CompilerInfo) +include(SetupCxxFlags) # Add common flags set(CMAKE_CXX_FLAGS "${CXX_COMMON_FLAGS} ${CMAKE_CXX_FLAGS}") From ea906eb4ba0dc3284bac7049bf966dfb4f4b54cb Mon Sep 17 00:00:00 2001 From: Rene Sugar Date: Thu, 28 Sep 2017 17:23:59 -0700 Subject: [PATCH 03/11] ARROW-1615 Check compiler version before disabling some warnings --- cpp/cmake_modules/SetupCxxFlags.cmake | 56 ++++++++++++++++++++++----- 1 file changed, 46 insertions(+), 10 deletions(-) diff --git a/cpp/cmake_modules/SetupCxxFlags.cmake b/cpp/cmake_modules/SetupCxxFlags.cmake index ad1d7c32f40..5dd6982328b 100644 --- a/cpp/cmake_modules/SetupCxxFlags.cmake +++ b/cpp/cmake_modules/SetupCxxFlags.cmake @@ -52,10 +52,7 @@ else() set(CXX_COMMON_FLAGS "") endif() -# Build warning level (CHECKIN, EVERYTHING, etc.) - -# GCC/Clang warning flags by version: -# https://github.com/Barro/compiler-warnings +# Build warning level (PRODUCTION, EVERYTHING, etc.) # if no build warning level is specified, default to development warning level if (NOT BUILD_WARNING_LEVEL) @@ -64,7 +61,7 @@ endif(NOT BUILD_WARNING_LEVEL) string(TOUPPER ${BUILD_WARNING_LEVEL} UPPERCASE_BUILD_WARNING_LEVEL) -if ("${UPPERCASE_BUILD_WARNING_LEVEL}" STREQUAL "CHECKIN") +if ("${UPPERCASE_BUILD_WARNING_LEVEL}" STREQUAL "PRODUCTION") # Pre-checkin builds if ("${COMPILER_FAMILY}" STREQUAL "msvc") string(REPLACE "/W3" "" CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS}") @@ -73,13 +70,33 @@ if ("${UPPERCASE_BUILD_WARNING_LEVEL}" STREQUAL "CHECKIN") set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} /WX") elseif ("${COMPILER_FAMILY}" STREQUAL "clang") # NOTE: -Wconversion does not return the same warnings on CLang and GNU (build can still fail even when enabled) - set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Weverything -Wno-c++98-compat -Wno-c++98-compat-pedantic -Wno-deprecated -Wno-weak-vtables -Wno-padded -Wno-unused-parameter -Wno-undef -Wno-documentation-deprecated-sync -Wno-reserved-id-macro -Wno-shadow -Wno-switch-enum -Wno-documentation -Wno-exit-time-destructors -Wno-global-constructors -Wno-weak-template-vtables -Wno-undefined-reinterpret-cast -Wno-implicit-fallthrough -Wno-old-style-cast -Wno-unreachable-code-return -Wno-float-equal -Wno-missing-prototypes -Wno-double-promotion -Wno-non-virtual-dtor -Wno-unused-macros -Wno-covered-switch-default -Wno-unreachable-code-break -Wno-extra-semi -Wno-range-loop-analysis -Wno-shift-sign-overflow -Wno-used-but-marked-unused -Wno-missing-variable-declarations -Wno-gnu-zero-variadic-macro-arguments -Wconversion -Wno-sign-conversion -Wc++11-narrowing -Wnarrowing") + set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Weverything -Wno-c++98-compat \ + -Wno-c++98-compat-pedantic -Wno-deprecated -Wno-weak-vtables -Wno-padded \ + -Wno-unused-parameter -Wno-undef -Wno-documentation-deprecated-sync \ + -Wno-shadow -Wno-switch-enum -Wno-documentation -Wno-exit-time-destructors \ + -Wno-global-constructors -Wno-weak-template-vtables -Wno-undefined-reinterpret-cast \ + -Wno-implicit-fallthrough -Wno-old-style-cast -Wno-unreachable-code-return \ + -Wno-float-equal -Wno-missing-prototypes -Wno-non-virtual-dtor \ + -Wno-unused-macros -Wno-covered-switch-default -Wno-unreachable-code-break \ + -Wno-extra-semi -Wno-range-loop-analysis -Wno-shift-sign-overflow \ + -Wno-used-but-marked-unused -Wno-missing-variable-declarations \ + -Wno-gnu-zero-variadic-macro-arguments -Wconversion -Wno-sign-conversion \ + -Wc++11-narrowing -Wnarrowing") + + # Version numbers where warnings are introduced are off so add one + if ("${COMPILER_VERSION}" VERSION_GREATER "3.6") + set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wno-reserved-id-macro") + endif() + if ("${COMPILER_VERSION}" VERSION_GREATER "3.7") + set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wno-double-promotion") + endif() + # Treat all compiler warnings as errors - set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Werror") + set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wunknown-warning-option -Werror") elseif ("${COMPILER_FAMILY}" STREQUAL "gcc") set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wall -Wconversion -Wno-sign-conversion") # Treat all compiler warnings as errors - set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Werror") + set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wunknown-warning-option -Werror") else() message(FATAL_ERROR "Unknown compiler. Version info:\n${COMPILER_VERSION_FULL}") endif() @@ -112,7 +129,26 @@ else() string(REPLACE "/W3" "" CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS}") set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} /W3") elseif ("${COMPILER_FAMILY}" STREQUAL "clang") - set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Weverything -Wno-c++98-compat -Wno-c++98-compat-pedantic -Wno-deprecated -Wno-weak-vtables -Wno-padded -Wno-unused-parameter -Wno-undef -Wno-documentation-deprecated-sync -Wno-reserved-id-macro -Wno-shadow -Wno-switch-enum -Wno-documentation -Wno-exit-time-destructors -Wno-global-constructors -Wno-weak-template-vtables -Wno-undefined-reinterpret-cast -Wno-implicit-fallthrough -Wno-old-style-cast -Wno-unreachable-code-return -Wno-float-equal -Wno-missing-prototypes -Wno-double-promotion -Wno-non-virtual-dtor -Wno-unused-macros -Wno-covered-switch-default -Wno-unreachable-code-break -Wno-extra-semi -Wno-range-loop-analysis -Wno-shift-sign-overflow -Wno-used-but-marked-unused -Wno-missing-variable-declarations -Wno-gnu-zero-variadic-macro-arguments -Wconversion -Wno-sign-conversion -Wc++11-narrowing -Wnarrowing") + set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Weverything -Wno-c++98-compat \ + -Wno-c++98-compat-pedantic -Wno-deprecated -Wno-weak-vtables -Wno-padded \ + -Wno-unused-parameter -Wno-undef -Wno-documentation-deprecated-sync \ + -Wno-shadow -Wno-switch-enum -Wno-documentation -Wno-exit-time-destructors \ + -Wno-global-constructors -Wno-weak-template-vtables -Wno-undefined-reinterpret-cast \ + -Wno-implicit-fallthrough -Wno-old-style-cast -Wno-unreachable-code-return \ + -Wno-float-equal -Wno-missing-prototypes -Wno-non-virtual-dtor \ + -Wno-unused-macros -Wno-covered-switch-default -Wno-unreachable-code-break \ + -Wno-extra-semi -Wno-range-loop-analysis -Wno-shift-sign-overflow \ + -Wno-used-but-marked-unused -Wno-missing-variable-declarations \ + -Wno-gnu-zero-variadic-macro-arguments -Wconversion -Wno-sign-conversion \ + -Wc++11-narrowing -Wnarrowing") + + # Version numbers where warnings are introduced are off so add one + if ("${COMPILER_VERSION}" VERSION_GREATER "3.6") + set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wno-reserved-id-macro") + endif() + if ("${COMPILER_VERSION}" VERSION_GREATER "3.7") + set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wno-double-promotion") + endif() elseif ("${COMPILER_FAMILY}" STREQUAL "gcc") set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wall") else() @@ -130,7 +166,7 @@ endif(BUILD_WARNING_FLAGS) if (NOT ("${COMPILER_FAMILY}" STREQUAL "msvc")) set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -std=c++11") endif() -message( STATUS "APPLE: " ${APPLE} ) + # Only enable additional instruction sets if they are supported if (CXX_SUPPORTS_SSE3 AND ARROW_SSE3) set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -msse3") From 50def4390856af141acea16f64b4ae7a2632d12c Mon Sep 17 00:00:00 2001 From: Rene Sugar Date: Thu, 28 Sep 2017 17:37:19 -0700 Subject: [PATCH 04/11] ARROW-1615 Updated build warning level terminology --- cpp/cmake_modules/SetupCxxFlags.cmake | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cpp/cmake_modules/SetupCxxFlags.cmake b/cpp/cmake_modules/SetupCxxFlags.cmake index 5dd6982328b..7b3db77aee8 100644 --- a/cpp/cmake_modules/SetupCxxFlags.cmake +++ b/cpp/cmake_modules/SetupCxxFlags.cmake @@ -52,16 +52,16 @@ else() set(CXX_COMMON_FLAGS "") endif() -# Build warning level (PRODUCTION, EVERYTHING, etc.) +# Build warning level (CHECKIN, EVERYTHING, etc.) # if no build warning level is specified, default to development warning level if (NOT BUILD_WARNING_LEVEL) - set(BUILD_WARNING_LEVEL Development) + set(BUILD_WARNING_LEVEL Production) endif(NOT BUILD_WARNING_LEVEL) string(TOUPPER ${BUILD_WARNING_LEVEL} UPPERCASE_BUILD_WARNING_LEVEL) -if ("${UPPERCASE_BUILD_WARNING_LEVEL}" STREQUAL "PRODUCTION") +if ("${UPPERCASE_BUILD_WARNING_LEVEL}" STREQUAL "CHECKIN") # Pre-checkin builds if ("${COMPILER_FAMILY}" STREQUAL "msvc") string(REPLACE "/W3" "" CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS}") @@ -121,7 +121,7 @@ elseif ("${UPPERCASE_BUILD_WARNING_LEVEL}" STREQUAL "EVERYTHING") message(FATAL_ERROR "Unknown compiler. Version info:\n${COMPILER_VERSION_FULL}") endif() else() - # Development builds (warning are not treated as errors) + # Production builds (warning are not treated as errors) if ("${COMPILER_FAMILY}" STREQUAL "msvc") # https://docs.microsoft.com/en-us/cpp/build/reference/compiler-option-warning-level # TODO: Enable /Wall and disable individual warnings until build compiles without errors From 6cf249775cfd93301c5c92eddbaab2fc752f8bd0 Mon Sep 17 00:00:00 2001 From: Rene Sugar Date: Thu, 28 Sep 2017 19:55:41 -0700 Subject: [PATCH 05/11] ARROW-1615 Added more version specific Clang warning entries --- cpp/cmake_modules/SetupCxxFlags.cmake | 61 +++++++++++++++------------ 1 file changed, 34 insertions(+), 27 deletions(-) diff --git a/cpp/cmake_modules/SetupCxxFlags.cmake b/cpp/cmake_modules/SetupCxxFlags.cmake index 7b3db77aee8..2ae16e30251 100644 --- a/cpp/cmake_modules/SetupCxxFlags.cmake +++ b/cpp/cmake_modules/SetupCxxFlags.cmake @@ -69,27 +69,30 @@ if ("${UPPERCASE_BUILD_WARNING_LEVEL}" STREQUAL "CHECKIN") # Treat all compiler warnings as errors set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} /WX") elseif ("${COMPILER_FAMILY}" STREQUAL "clang") - # NOTE: -Wconversion does not return the same warnings on CLang and GNU (build can still fail even when enabled) set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Weverything -Wno-c++98-compat \ - -Wno-c++98-compat-pedantic -Wno-deprecated -Wno-weak-vtables -Wno-padded \ - -Wno-unused-parameter -Wno-undef -Wno-documentation-deprecated-sync \ - -Wno-shadow -Wno-switch-enum -Wno-documentation -Wno-exit-time-destructors \ - -Wno-global-constructors -Wno-weak-template-vtables -Wno-undefined-reinterpret-cast \ - -Wno-implicit-fallthrough -Wno-old-style-cast -Wno-unreachable-code-return \ - -Wno-float-equal -Wno-missing-prototypes -Wno-non-virtual-dtor \ - -Wno-unused-macros -Wno-covered-switch-default -Wno-unreachable-code-break \ - -Wno-extra-semi -Wno-range-loop-analysis -Wno-shift-sign-overflow \ - -Wno-used-but-marked-unused -Wno-missing-variable-declarations \ - -Wno-gnu-zero-variadic-macro-arguments -Wconversion -Wno-sign-conversion \ - -Wc++11-narrowing -Wnarrowing") - - # Version numbers where warnings are introduced are off so add one + -Wno-c++98-compat-pedantic -Wno-deprecated -Wno-weak-vtables -Wno-padded \ + -Wno-unused-parameter -Wno-undef -Wno-documentation-deprecated-sync \ + -Wno-shadow -Wno-switch-enum -Wno-documentation -Wno-exit-time-destructors \ + -Wno-global-constructors -Wno-weak-template-vtables -Wno-undefined-reinterpret-cast \ + -Wno-implicit-fallthrough -Wno-old-style-cast -Wno-unreachable-code-return \ + -Wno-float-equal -Wno-missing-prototypes -Wno-non-virtual-dtor \ + -Wno-unused-macros -Wno-covered-switch-default -Wno-unreachable-code-break \ + -Wno-extra-semi -Wno-range-loop-analysis -Wno-shift-sign-overflow \ + -Wno-used-but-marked-unused -Wno-missing-variable-declarations \ + -Wno-gnu-zero-variadic-macro-arguments -Wconversion -Wno-sign-conversion \ + -Wno-disabled-macro-expansion -Wc++11-narrowing -Wnarrowing") + + # Version numbers where warnings are introduced if ("${COMPILER_VERSION}" VERSION_GREATER "3.6") set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wno-reserved-id-macro") + set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wno-range-loop-analysis") endif() if ("${COMPILER_VERSION}" VERSION_GREATER "3.7") set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wno-double-promotion") endif() + if ("${COMPILER_VERSION}" VERSION_GREATER "3.8") + set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wundefined-func-template") + endif() # Treat all compiler warnings as errors set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wunknown-warning-option -Werror") @@ -130,25 +133,29 @@ else() set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} /W3") elseif ("${COMPILER_FAMILY}" STREQUAL "clang") set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Weverything -Wno-c++98-compat \ - -Wno-c++98-compat-pedantic -Wno-deprecated -Wno-weak-vtables -Wno-padded \ - -Wno-unused-parameter -Wno-undef -Wno-documentation-deprecated-sync \ - -Wno-shadow -Wno-switch-enum -Wno-documentation -Wno-exit-time-destructors \ - -Wno-global-constructors -Wno-weak-template-vtables -Wno-undefined-reinterpret-cast \ - -Wno-implicit-fallthrough -Wno-old-style-cast -Wno-unreachable-code-return \ - -Wno-float-equal -Wno-missing-prototypes -Wno-non-virtual-dtor \ - -Wno-unused-macros -Wno-covered-switch-default -Wno-unreachable-code-break \ - -Wno-extra-semi -Wno-range-loop-analysis -Wno-shift-sign-overflow \ - -Wno-used-but-marked-unused -Wno-missing-variable-declarations \ - -Wno-gnu-zero-variadic-macro-arguments -Wconversion -Wno-sign-conversion \ - -Wc++11-narrowing -Wnarrowing") - - # Version numbers where warnings are introduced are off so add one + -Wno-c++98-compat-pedantic -Wno-deprecated -Wno-weak-vtables -Wno-padded \ + -Wno-unused-parameter -Wno-undef -Wno-documentation-deprecated-sync \ + -Wno-shadow -Wno-switch-enum -Wno-documentation -Wno-exit-time-destructors \ + -Wno-global-constructors -Wno-weak-template-vtables -Wno-undefined-reinterpret-cast \ + -Wno-implicit-fallthrough -Wno-old-style-cast -Wno-unreachable-code-return \ + -Wno-float-equal -Wno-missing-prototypes -Wno-non-virtual-dtor \ + -Wno-unused-macros -Wno-covered-switch-default -Wno-unreachable-code-break \ + -Wno-extra-semi -Wno-range-loop-analysis -Wno-shift-sign-overflow \ + -Wno-used-but-marked-unused -Wno-missing-variable-declarations \ + -Wno-gnu-zero-variadic-macro-arguments -Wconversion -Wno-sign-conversion \ + -Wno-disabled-macro-expansion -Wc++11-narrowing -Wnarrowing") + + # Version numbers where warnings are introduced if ("${COMPILER_VERSION}" VERSION_GREATER "3.6") set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wno-reserved-id-macro") + set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wno-range-loop-analysis") endif() if ("${COMPILER_VERSION}" VERSION_GREATER "3.7") set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wno-double-promotion") endif() + if ("${COMPILER_VERSION}" VERSION_GREATER "3.8") + set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wundefined-func-template") + endif() elseif ("${COMPILER_FAMILY}" STREQUAL "gcc") set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wall") else() From 971e61aaa65c6b7935d7f885e27902bb51ebf6db Mon Sep 17 00:00:00 2001 From: Rene Sugar Date: Thu, 28 Sep 2017 20:35:29 -0700 Subject: [PATCH 06/11] ARROW-1615 Fixed version specific warning entry --- cpp/cmake_modules/SetupCxxFlags.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cpp/cmake_modules/SetupCxxFlags.cmake b/cpp/cmake_modules/SetupCxxFlags.cmake index 2ae16e30251..48ffc88644b 100644 --- a/cpp/cmake_modules/SetupCxxFlags.cmake +++ b/cpp/cmake_modules/SetupCxxFlags.cmake @@ -91,7 +91,7 @@ if ("${UPPERCASE_BUILD_WARNING_LEVEL}" STREQUAL "CHECKIN") set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wno-double-promotion") endif() if ("${COMPILER_VERSION}" VERSION_GREATER "3.8") - set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wundefined-func-template") + set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wno-undefined-func-template") endif() # Treat all compiler warnings as errors @@ -154,7 +154,7 @@ else() set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wno-double-promotion") endif() if ("${COMPILER_VERSION}" VERSION_GREATER "3.8") - set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wundefined-func-template") + set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wno-undefined-func-template") endif() elseif ("${COMPILER_FAMILY}" STREQUAL "gcc") set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wall") From 5ebaf86e560627bd19d58280130a07087d53055a Mon Sep 17 00:00:00 2001 From: Rene Sugar Date: Thu, 28 Sep 2017 22:20:06 -0700 Subject: [PATCH 07/11] ARROW-1615 Moved version specific warning entry --- cpp/cmake_modules/SetupCxxFlags.cmake | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cpp/cmake_modules/SetupCxxFlags.cmake b/cpp/cmake_modules/SetupCxxFlags.cmake index 48ffc88644b..a7de0ef0d59 100644 --- a/cpp/cmake_modules/SetupCxxFlags.cmake +++ b/cpp/cmake_modules/SetupCxxFlags.cmake @@ -77,7 +77,7 @@ if ("${UPPERCASE_BUILD_WARNING_LEVEL}" STREQUAL "CHECKIN") -Wno-implicit-fallthrough -Wno-old-style-cast -Wno-unreachable-code-return \ -Wno-float-equal -Wno-missing-prototypes -Wno-non-virtual-dtor \ -Wno-unused-macros -Wno-covered-switch-default -Wno-unreachable-code-break \ - -Wno-extra-semi -Wno-range-loop-analysis -Wno-shift-sign-overflow \ + -Wno-extra-semi -Wno-shift-sign-overflow \ -Wno-used-but-marked-unused -Wno-missing-variable-declarations \ -Wno-gnu-zero-variadic-macro-arguments -Wconversion -Wno-sign-conversion \ -Wno-disabled-macro-expansion -Wc++11-narrowing -Wnarrowing") @@ -104,7 +104,7 @@ if ("${UPPERCASE_BUILD_WARNING_LEVEL}" STREQUAL "CHECKIN") message(FATAL_ERROR "Unknown compiler. Version info:\n${COMPILER_VERSION_FULL}") endif() elseif ("${UPPERCASE_BUILD_WARNING_LEVEL}" STREQUAL "EVERYTHING") - # Development builds for fixing warnings + # Pedantic builds for fixing warnings if ("${COMPILER_FAMILY}" STREQUAL "msvc") string(REPLACE "/W3" "" CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS}") set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} /Wall") @@ -140,7 +140,7 @@ else() -Wno-implicit-fallthrough -Wno-old-style-cast -Wno-unreachable-code-return \ -Wno-float-equal -Wno-missing-prototypes -Wno-non-virtual-dtor \ -Wno-unused-macros -Wno-covered-switch-default -Wno-unreachable-code-break \ - -Wno-extra-semi -Wno-range-loop-analysis -Wno-shift-sign-overflow \ + -Wno-extra-semi -Wno-shift-sign-overflow \ -Wno-used-but-marked-unused -Wno-missing-variable-declarations \ -Wno-gnu-zero-variadic-macro-arguments -Wconversion -Wno-sign-conversion \ -Wno-disabled-macro-expansion -Wc++11-narrowing -Wnarrowing") From 9d3c7ec33b8f423e57017fd2c725c9010930b4b1 Mon Sep 17 00:00:00 2001 From: Rene Sugar Date: Fri, 29 Sep 2017 00:43:46 -0700 Subject: [PATCH 08/11] ARROW-1615 Identify compiler version for clang-802 plus more warning entries --- cpp/cmake_modules/CompilerInfo.cmake | 5 +++++ cpp/cmake_modules/SetupCxxFlags.cmake | 10 ++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/cpp/cmake_modules/CompilerInfo.cmake b/cpp/cmake_modules/CompilerInfo.cmake index a1b470182a8..5ff1d861415 100644 --- a/cpp/cmake_modules/CompilerInfo.cmake +++ b/cpp/cmake_modules/CompilerInfo.cmake @@ -63,6 +63,11 @@ elseif("${COMPILER_VERSION_FULL}" MATCHES ".*clang-7") set(COMPILER_FAMILY "clang") set(COMPILER_VERSION "3.7.0svn") +# clang on Mac OS X, XCode 8. +elseif("${COMPILER_VERSION_FULL}" MATCHES ".*clang-802") + set(COMPILER_FAMILY "clang") + set(COMPILER_VERSION "3.9.0svn") + # clang on Mac OS X, XCode 8. elseif("${COMPILER_VERSION_FULL}" MATCHES ".*clang-8") set(COMPILER_FAMILY "clang") diff --git a/cpp/cmake_modules/SetupCxxFlags.cmake b/cpp/cmake_modules/SetupCxxFlags.cmake index a7de0ef0d59..43caf9ad693 100644 --- a/cpp/cmake_modules/SetupCxxFlags.cmake +++ b/cpp/cmake_modules/SetupCxxFlags.cmake @@ -77,12 +77,15 @@ if ("${UPPERCASE_BUILD_WARNING_LEVEL}" STREQUAL "CHECKIN") -Wno-implicit-fallthrough -Wno-old-style-cast -Wno-unreachable-code-return \ -Wno-float-equal -Wno-missing-prototypes -Wno-non-virtual-dtor \ -Wno-unused-macros -Wno-covered-switch-default -Wno-unreachable-code-break \ - -Wno-extra-semi -Wno-shift-sign-overflow \ + -Wno-extra-semi -Wno-shorten-64-to-32 -Wno-shift-sign-overflow \ -Wno-used-but-marked-unused -Wno-missing-variable-declarations \ -Wno-gnu-zero-variadic-macro-arguments -Wconversion -Wno-sign-conversion \ -Wno-disabled-macro-expansion -Wc++11-narrowing -Wnarrowing") # Version numbers where warnings are introduced + if ("${COMPILER_VERSION}" VERSION_GREATER "3.3") + set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wno-gnu-folding-constant") + endif() if ("${COMPILER_VERSION}" VERSION_GREATER "3.6") set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wno-reserved-id-macro") set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wno-range-loop-analysis") @@ -140,12 +143,15 @@ else() -Wno-implicit-fallthrough -Wno-old-style-cast -Wno-unreachable-code-return \ -Wno-float-equal -Wno-missing-prototypes -Wno-non-virtual-dtor \ -Wno-unused-macros -Wno-covered-switch-default -Wno-unreachable-code-break \ - -Wno-extra-semi -Wno-shift-sign-overflow \ + -Wno-extra-semi -Wno-shorten-64-to-32 -Wno-shift-sign-overflow \ -Wno-used-but-marked-unused -Wno-missing-variable-declarations \ -Wno-gnu-zero-variadic-macro-arguments -Wconversion -Wno-sign-conversion \ -Wno-disabled-macro-expansion -Wc++11-narrowing -Wnarrowing") # Version numbers where warnings are introduced + if ("${COMPILER_VERSION}" VERSION_GREATER "3.3") + set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wno-gnu-folding-constant") + endif() if ("${COMPILER_VERSION}" VERSION_GREATER "3.6") set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wno-reserved-id-macro") set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wno-range-loop-analysis") From 5fe4e8e8d0d42d89ca8dbf0a26d7d6897b8547ec Mon Sep 17 00:00:00 2001 From: Rene Sugar Date: Fri, 29 Sep 2017 02:00:18 -0700 Subject: [PATCH 09/11] ARROW-1615 Move -Wno-shorten-64-to-32 after -Wconversion --- cpp/cmake_modules/SetupCxxFlags.cmake | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cpp/cmake_modules/SetupCxxFlags.cmake b/cpp/cmake_modules/SetupCxxFlags.cmake index 43caf9ad693..eda4068edbf 100644 --- a/cpp/cmake_modules/SetupCxxFlags.cmake +++ b/cpp/cmake_modules/SetupCxxFlags.cmake @@ -77,10 +77,10 @@ if ("${UPPERCASE_BUILD_WARNING_LEVEL}" STREQUAL "CHECKIN") -Wno-implicit-fallthrough -Wno-old-style-cast -Wno-unreachable-code-return \ -Wno-float-equal -Wno-missing-prototypes -Wno-non-virtual-dtor \ -Wno-unused-macros -Wno-covered-switch-default -Wno-unreachable-code-break \ - -Wno-extra-semi -Wno-shorten-64-to-32 -Wno-shift-sign-overflow \ + -Wno-extra-semi -Wno-shift-sign-overflow \ -Wno-used-but-marked-unused -Wno-missing-variable-declarations \ -Wno-gnu-zero-variadic-macro-arguments -Wconversion -Wno-sign-conversion \ - -Wno-disabled-macro-expansion -Wc++11-narrowing -Wnarrowing") + -Wno-disabled-macro-expansion -Wc++11-narrowing -Wnarrowing -Wno-shorten-64-to-32") # Version numbers where warnings are introduced if ("${COMPILER_VERSION}" VERSION_GREATER "3.3") @@ -143,10 +143,10 @@ else() -Wno-implicit-fallthrough -Wno-old-style-cast -Wno-unreachable-code-return \ -Wno-float-equal -Wno-missing-prototypes -Wno-non-virtual-dtor \ -Wno-unused-macros -Wno-covered-switch-default -Wno-unreachable-code-break \ - -Wno-extra-semi -Wno-shorten-64-to-32 -Wno-shift-sign-overflow \ + -Wno-extra-semi -Wno-shift-sign-overflow \ -Wno-used-but-marked-unused -Wno-missing-variable-declarations \ -Wno-gnu-zero-variadic-macro-arguments -Wconversion -Wno-sign-conversion \ - -Wno-disabled-macro-expansion -Wc++11-narrowing -Wnarrowing") + -Wno-disabled-macro-expansion -Wc++11-narrowing -Wnarrowing -Wno-shorten-64-to-32") # Version numbers where warnings are introduced if ("${COMPILER_VERSION}" VERSION_GREATER "3.3") From 1895843039a66a98cd536d7199946fd42b9e8587 Mon Sep 17 00:00:00 2001 From: Rene Sugar Date: Fri, 29 Sep 2017 09:21:56 -0700 Subject: [PATCH 10/11] ARROW-1615 Add -Wno-cast-align --- cpp/cmake_modules/SetupCxxFlags.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cpp/cmake_modules/SetupCxxFlags.cmake b/cpp/cmake_modules/SetupCxxFlags.cmake index eda4068edbf..c97f77f70ad 100644 --- a/cpp/cmake_modules/SetupCxxFlags.cmake +++ b/cpp/cmake_modules/SetupCxxFlags.cmake @@ -77,7 +77,7 @@ if ("${UPPERCASE_BUILD_WARNING_LEVEL}" STREQUAL "CHECKIN") -Wno-implicit-fallthrough -Wno-old-style-cast -Wno-unreachable-code-return \ -Wno-float-equal -Wno-missing-prototypes -Wno-non-virtual-dtor \ -Wno-unused-macros -Wno-covered-switch-default -Wno-unreachable-code-break \ - -Wno-extra-semi -Wno-shift-sign-overflow \ + -Wno-extra-semi -Wno-cast-align -Wno-shift-sign-overflow \ -Wno-used-but-marked-unused -Wno-missing-variable-declarations \ -Wno-gnu-zero-variadic-macro-arguments -Wconversion -Wno-sign-conversion \ -Wno-disabled-macro-expansion -Wc++11-narrowing -Wnarrowing -Wno-shorten-64-to-32") @@ -143,7 +143,7 @@ else() -Wno-implicit-fallthrough -Wno-old-style-cast -Wno-unreachable-code-return \ -Wno-float-equal -Wno-missing-prototypes -Wno-non-virtual-dtor \ -Wno-unused-macros -Wno-covered-switch-default -Wno-unreachable-code-break \ - -Wno-extra-semi -Wno-shift-sign-overflow \ + -Wno-extra-semi -Wno-cast-align -Wno-shift-sign-overflow \ -Wno-used-but-marked-unused -Wno-missing-variable-declarations \ -Wno-gnu-zero-variadic-macro-arguments -Wconversion -Wno-sign-conversion \ -Wno-disabled-macro-expansion -Wc++11-narrowing -Wnarrowing -Wno-shorten-64-to-32") From 71a615e32326fc5a39a85da07453dff9d39b33b2 Mon Sep 17 00:00:00 2001 From: Rene Sugar Date: Fri, 29 Sep 2017 10:26:50 -0700 Subject: [PATCH 11/11] ARROW-1615 Add -Wno-vla-extension and change non-checkin builds back to -Wall --- cpp/cmake_modules/SetupCxxFlags.cmake | 30 ++------------------------- 1 file changed, 2 insertions(+), 28 deletions(-) diff --git a/cpp/cmake_modules/SetupCxxFlags.cmake b/cpp/cmake_modules/SetupCxxFlags.cmake index c97f77f70ad..1f4c898cfcf 100644 --- a/cpp/cmake_modules/SetupCxxFlags.cmake +++ b/cpp/cmake_modules/SetupCxxFlags.cmake @@ -77,7 +77,7 @@ if ("${UPPERCASE_BUILD_WARNING_LEVEL}" STREQUAL "CHECKIN") -Wno-implicit-fallthrough -Wno-old-style-cast -Wno-unreachable-code-return \ -Wno-float-equal -Wno-missing-prototypes -Wno-non-virtual-dtor \ -Wno-unused-macros -Wno-covered-switch-default -Wno-unreachable-code-break \ - -Wno-extra-semi -Wno-cast-align -Wno-shift-sign-overflow \ + -Wno-extra-semi -Wno-cast-align -Wno-vla-extension -Wno-shift-sign-overflow \ -Wno-used-but-marked-unused -Wno-missing-variable-declarations \ -Wno-gnu-zero-variadic-macro-arguments -Wconversion -Wno-sign-conversion \ -Wno-disabled-macro-expansion -Wc++11-narrowing -Wnarrowing -Wno-shorten-64-to-32") @@ -135,33 +135,7 @@ else() string(REPLACE "/W3" "" CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS}") set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} /W3") elseif ("${COMPILER_FAMILY}" STREQUAL "clang") - set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Weverything -Wno-c++98-compat \ - -Wno-c++98-compat-pedantic -Wno-deprecated -Wno-weak-vtables -Wno-padded \ - -Wno-unused-parameter -Wno-undef -Wno-documentation-deprecated-sync \ - -Wno-shadow -Wno-switch-enum -Wno-documentation -Wno-exit-time-destructors \ - -Wno-global-constructors -Wno-weak-template-vtables -Wno-undefined-reinterpret-cast \ - -Wno-implicit-fallthrough -Wno-old-style-cast -Wno-unreachable-code-return \ - -Wno-float-equal -Wno-missing-prototypes -Wno-non-virtual-dtor \ - -Wno-unused-macros -Wno-covered-switch-default -Wno-unreachable-code-break \ - -Wno-extra-semi -Wno-cast-align -Wno-shift-sign-overflow \ - -Wno-used-but-marked-unused -Wno-missing-variable-declarations \ - -Wno-gnu-zero-variadic-macro-arguments -Wconversion -Wno-sign-conversion \ - -Wno-disabled-macro-expansion -Wc++11-narrowing -Wnarrowing -Wno-shorten-64-to-32") - - # Version numbers where warnings are introduced - if ("${COMPILER_VERSION}" VERSION_GREATER "3.3") - set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wno-gnu-folding-constant") - endif() - if ("${COMPILER_VERSION}" VERSION_GREATER "3.6") - set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wno-reserved-id-macro") - set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wno-range-loop-analysis") - endif() - if ("${COMPILER_VERSION}" VERSION_GREATER "3.7") - set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wno-double-promotion") - endif() - if ("${COMPILER_VERSION}" VERSION_GREATER "3.8") - set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wno-undefined-func-template") - endif() + set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wall") elseif ("${COMPILER_FAMILY}" STREQUAL "gcc") set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wall") else()