From c46c0b0d1e605253fa05ccf16251d1a753b3fec7 Mon Sep 17 00:00:00 2001 From: Martin Quinson Date: Sat, 25 Jul 2015 10:40:43 +0200 Subject: [PATCH 1/1] proper check for the -std=gnu++11 standard, and take in on clang too Kill some old code pretending that we support Visual C or Borland compilers. --- CMakeLists.txt | 2 +- buildtools/Cmake/Flags.cmake | 43 ++++++++++++++++++------------------ 2 files changed, 22 insertions(+), 23 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9f85a08141..f8fc1825f7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,7 +10,7 @@ enable_language(CXX) INCLUDE(CheckCCompilerFlag) CHECK_C_COMPILER_FLAG(-fstack-cleaner HAVE_C_STACK_CLEANER) -if (APPLE) #MAC +if (APPLE) set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) endif() diff --git a/buildtools/Cmake/Flags.cmake b/buildtools/Cmake/Flags.cmake index 09753b0764..6df76ebe45 100644 --- a/buildtools/Cmake/Flags.cmake +++ b/buildtools/Cmake/Flags.cmake @@ -1,34 +1,33 @@ set(warnCFLAGS "") set(optCFLAGS "") +## +## Request full debugging flags +## +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99 -g3") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g3") +set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -g") + +## +## We need a decent support of the c++11 standard +## include(CheckCXXCompilerFlag) - +CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11) +if(COMPILER_SUPPORTS_CXX11) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") +else() + message(FATAL_ERROR + "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. " + "Please use a decent C++ compiler.") +endif() if (CMAKE_COMPILER_IS_GNUCC) if (COMPILER_C_VERSION_MAJOR_MINOR STRLESS "4.7") - message(FATAL_ERROR "SimGrid needs g++ version 4.7 to compile.") - endif() -endif() - -if(NOT __VISUALC__ AND NOT __BORLANDC__) - CHECK_CXX_COMPILER_FLAG("-std=gnu++11" HAVE_CXX11) - CHECK_CXX_COMPILER_FLAG("-std=gnu++0x" HAVE_CXX0X) - if(HAVE_CXX11) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11") - elseif(HAVE_CXX0X) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++0x") - else() - message(FATAL_ERROR "Missing support for C++11.") + message(FATAL_ERROR + "SimGrid needs g++ version 4.7 to compile " + "(c++11 support of previous versions is too limited).") endif() endif() -if(NOT __VISUALC__ AND NOT __BORLANDC__) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99 -g3") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g3") - set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -g") -else() - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}/Zi") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}/Zi") -endif() if(enable_compile_warnings) set(warnCFLAGS "-fno-common -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wchar-subscripts -Wcomment -Wformat -Wwrite-strings -Wno-unused-function -Wno-unused-parameter -Wno-strict-aliasing -Wno-format-nonliteral -Werror ") -- 2.20.1