]> granicus.if.org Git - icinga2/commitdiff
Add support for the C++11 keyword 'override'
authorGunnar Beutner <gunnar@beutner.name>
Mon, 23 Mar 2015 06:55:06 +0000 (07:55 +0100)
committerGunnar Beutner <gunnar@beutner.name>
Mon, 23 Mar 2015 06:55:06 +0000 (07:55 +0100)
fixes #8842

CMakeLists.txt
lib/config/CMakeLists.txt
tools/mkclass/CMakeLists.txt

index 1a9ce720a62c5536ba36c8bcf2e6c56a8f3f0ef5..fe4c7a7295159dca6b47ca05f79a9f28db4b06a1 100644 (file)
@@ -196,6 +196,29 @@ if(HAVE_LIBEXECINFO)
   set(HAVE_BACKTRACE_SYMBOLS TRUE)
 endif()
 
+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(CXX_FLAG_CXX11)
+    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)
+  if(CXX_FLAG_NO_OVERRIDE_WARNING)
+    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-inconsistent-missing-override")
+  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)
+
+if(NOT CXX_FEATURE_OVERRIDE)
+  add_definitions("-Doverride=")
+endif()
+
 configure_file(config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h ESCAPE_QUOTES)
 
 install(
index 52cbf5640ef738afd4f3141c03972dfad7b68b65..1a54fc9864717d6dbe8da32940f93488c723fd5f 100644 (file)
@@ -24,6 +24,11 @@ set_property(SOURCE ${CMAKE_CURRENT_BINARY_DIR}/config_parser.cc PROPERTY EXCLUD
 flex_target(config_lexer config_lexer.ll ${CMAKE_CURRENT_BINARY_DIR}/config_lexer.cc)
 set_property(SOURCE ${CMAKE_CURRENT_BINARY_DIR}/config_lexer.cc PROPERTY EXCLUDE_UNITY_BUILD TRUE)
 
+if(UNIX)
+  set_property(SOURCE ${CMAKE_CURRENT_BINARY_DIR}/config_parser.cc PROPERTY COMPILE_FLAGS "-Wno-deprecated-register")
+  set_property(SOURCE ${CMAKE_CURRENT_BINARY_DIR}/config_lexer.cc PROPERTY COMPILE_FLAGS "-Wno-deprecated-register")
+endif()
+
 add_flex_bison_dependency(config_lexer config_parser)
 
 mkembedconfig_target(base-type.conf base-type.cpp)
index a94c6046d568d0249740508978c21fc20777b565..f49ed9eb358c29d7118692f57517cb56ed2b2624 100644 (file)
@@ -22,6 +22,11 @@ bison_target(class_parser class_parser.yy ${CMAKE_CURRENT_BINARY_DIR}/class_pars
 flex_target(class_lexer class_lexer.ll ${CMAKE_CURRENT_BINARY_DIR}/class_lexer.cc)
 add_flex_bison_dependency(class_lexer class_parser)
 
+if(UNIX)
+  set_property(SOURCE ${CMAKE_CURRENT_BINARY_DIR}/class_parser.cc PROPERTY COMPILE_FLAGS "-Wno-deprecated-register")
+  set_property(SOURCE ${CMAKE_CURRENT_BINARY_DIR}/class_lexer.cc PROPERTY COMPILE_FLAGS "-Wno-deprecated-register")
+endif()
+
 include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
 
 add_executable(mkclass mkclass.cpp classcompiler.cpp classcompiler.hpp ${FLEX_class_lexer_OUTPUTS} ${BISON_class_parser_OUTPUTS})