diff --git a/cmake/DuneUtils.cmake b/cmake/DuneUtils.cmake index e70ad7d86de3923e3f57355fa2c7b4d10956b6c0..e2c2653990de59efc16509a1c039482acf6a18e1 100644 --- a/cmake/DuneUtils.cmake +++ b/cmake/DuneUtils.cmake @@ -120,14 +120,37 @@ add_custom_target( config_refresh ${CMAKE_CURRENT_SOURCE_DIR}/cmake/regen_config_header.sh ${CMAKE_CURRENT_BINARY_DIR}/cmake_config.h ) -ADD_CXX_FLAGS( "-DHAVE_CMAKE_CONFIG -std=c++0x" ) - INCLUDE (CheckIncludeFileCXX) CHECK_INCLUDE_FILE_CXX("tr1/array" HAVE_TR1_ARRAY) CHECK_INCLUDE_FILE_CXX("malloc.h" HAVE_MALLOC_H) +# try to use compiler flag -std=c++11 +include(TestCXXAcceptsFlag) +CHECK_CXX_ACCEPTS_FLAG("-std=c++11" CXX_FLAG_CXX11) +if(CXX_FLAG_CXX11) + set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -std=c++11") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 ") + set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -std=c++11 ") + set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} -std=c++11 ") + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -std=c++11 ") + set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -std=c++11 ") + set(CXX_STD0X_FLAGS "-std=c++11") +else() + # try to use compiler flag -std=c++0x for older compilers + CHECK_CXX_ACCEPTS_FLAG("-std=c++0x" CXX_FLAG_CXX0X) + if(CXX_FLAG_CXX0X) + set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -std=c++0x" ) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x ") + set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -std=c++0x ") + set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} -std=c++0x ") + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -std=c++0x ") + set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -std=c++0x ") + set(CXX_STD0X_FLAGS "-std=c++0x") + endif(CXX_FLAG_CXX0X) +endif(CXX_FLAG_CXX11) + SET( CUSTOM_FLAGS - "-Wall -Wextra -pedantic -O3 -DDNDEBUG -funroll-loops -g -ggdb -DENABLE_ADAPTIVE=1 -DADAPTIVE_SOLVER -DUSE_BFG_CG_SCHEME -fno-strict-aliasing" CACHE STRING + "-Wall -Wextra -pedantic -DDNDEBUG -funroll-loops -g -ggdb -fno-strict-aliasing" CACHE STRING "CUSTOM FLAGS") SET( BOOST_ROOT "/opt/boost-1.48" CACHE STRING @@ -135,7 +158,7 @@ SET( BOOST_ROOT FIND_PACKAGE( PkgConfig ) FIND_PACKAGE(Boost 1.42.0 REQUIRED) -ADD_CXX_FLAGS( -DHAVE_BOOST=1) +ADD_CXX_FLAGS( -DHAVE_CMAKE_CONFIG -DHAVE_BOOST=1 ${CXX_STD0X_FLAGS}) INCLUDE_SYS_DIR(${Boost_INCLUDE_DIRS}) #try to enable link-time-optimisation