From 1661ebb537bd6b1dc6664dd078df6fbe84fc6c6a Mon Sep 17 00:00:00 2001 From: hagen Date: Mon, 22 Sep 2014 22:36:06 +0000 Subject: [PATCH] * cmake : detect support of c++11 via compiler flags --- build/CMakeLists.txt | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/build/CMakeLists.txt b/build/CMakeLists.txt index f41e5d5c..1073a6dd 100644 --- a/build/CMakeLists.txt +++ b/build/CMakeLists.txt @@ -58,8 +58,20 @@ endif () # compiler flags customization (by vendor) add_definitions ( "-Wall -Wextra" ) -if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + +# check for c++11 support +include(CheckCXXCompilerFlag) +CHECK_CXX_COMPILER_FLAG("-std=c++11" CXX11_SUPPORTED) +CHECK_CXX_COMPILER_FLAG("-std=c++0x" CXX0X_SUPPORTED) +if (CXX11_SUPPORTED) add_definitions( "-std=c++11" ) +elseif (CXX0X_SUPPORTED) # gcc 4.6 + add_definitions( "-std=c++0x" ) +else () + message(SEND_ERROR "C++11 standart not seems to be supported by compiler. Too old version?") +endif () + +if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") if (WITH_HARDENING) add_definitions( "-D_FORTIFY_SOURCE=2" ) set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wformat -Wformat-security -Werror=format-security" ) @@ -67,7 +79,7 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIE -pie" ) endif () elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") - add_definitions( "-std=c++11" ) + # more tweaks endif () # compiler flags customization (by system)