From 91c2a590ba9ad02d1f0a5c59d7232f77e85f028f Mon Sep 17 00:00:00 2001 From: Gunnar Beutner Date: Mon, 30 Nov 2015 08:16:39 +0100 Subject: [PATCH] Disable --std=c++11 for ancient GCC versions fixes #10744 --- CMakeLists.txt | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a280a88ae..ae16c3ecc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -199,14 +199,27 @@ if(HAVE_LIBEXECINFO) set(HAVE_BACKTRACE_SYMBOLS TRUE) endif() +set(_ICINGA2_CXX11 OFF) + if(UNIX) include(CheckCXXCompilerFlag) check_cxx_compiler_flag("-std=c++11" CXX_FLAG_CXX11) - check_cxx_compiler_flag("-std=c++0x" CXX_FLAG_CXX0X) + + if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + exec_program(${CMAKE_CXX_COMPILER} + ARGS -dumpversion + OUTPUT_VARIABLE _ICINGA2_COMPILER_VERSION + ) + + if (${_ICINGA2_COMPILER_VERSION} VERSION_LESS "4.7.0") + message(STATUS "Your version of GCC is too old for building Icinga 2 in C++11 mode.") + set(CXX_FLAG_CXX11 OFF) + endif() + endif() + if(CXX_FLAG_CXX11) + set(_ICINGA2_CXX11 ON) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") - elseif(CXX_FLAG_CXX0X) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x") endif() check_cxx_compiler_flag("-Wno-inconsistent-missing-override" CXX_FLAG_NO_OVERRIDE_WARNING) @@ -215,8 +228,12 @@ if(UNIX) endif() endif() -include(CheckCXXSourceCompiles) -check_cxx_source_compiles("class Base { public: virtual void test(void) { } }; class Derived : public Base { virtual void test(void) override { } }; int main(){}" CXX_FEATURE_OVERRIDE) +set(CXX_FEATURE_OVERRIDE OFF) + +if(_ICINGA2_CXX11) + include(CheckCXXSourceCompiles) + check_cxx_source_compiles("class Base { public: virtual void test(void) { } }; class Derived : public Base { virtual void test(void) override { } }; int main(){}" CXX_FEATURE_OVERRIDE) +endif() if(NOT CXX_FEATURE_OVERRIDE) add_definitions("-Doverride=") -- 2.40.0