X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/ff2c445076022fd70eac05aaa740a8d1e2cd39ec..983ca84f3ac2d74ba56145026d89bd11f3f096e5:/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index d783249ebe..f60a3966d9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,21 +1,58 @@ cmake_minimum_required(VERSION 2.6) + ### Need to set rc ccompiler before enable language if(WIN32) SET(CMAKE_RC_COMPILER "windres") endif() project(SimGrid C) +## +## Check the C/C++ standard that we need +## See also tools/cmake/Flags.cmake that sets our paranoid warning flags + enable_language(CXX) INCLUDE(CheckCCompilerFlag) CHECK_C_COMPILER_FLAG(-fstack-cleaner HAVE_C_STACK_CLEANER) -if (APPLE) #MAC - set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") - set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) +## Request full debugging flags +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g3") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g3") +set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -g") + +if (CMAKE_COMPILER_IS_GNUCC) + if (COMPILER_CXX_VERSION_MAJOR_MINOR STRLESS "4.7") + message(FATAL_ERROR + "SimGrid needs at least g++ version 4.7 to compile " + "(c++11 support of previous versions is too limited).") + endif() +endif() + +## We need a decent support of the c++11 standard +include(CheckCXXCompilerFlag) +CHECK_CXX_COMPILER_FLAG("-std=gnu++11" COMPILER_SUPPORTS_CXX11) +if(COMPILER_SUPPORTS_CXX11) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11") +else() + message(FATAL_ERROR + "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. " + "Please use a decent C++ compiler.") endif() -if (NOT DEFINED enable_smpi OR enable_smpi) # smpi is enabled by default +### And we need C11 standard, too +include(CheckCCompilerFlag) +CHECK_C_COMPILER_FLAG("-std=gnu11" COMPILER_SUPPORTS_C11) +if(COMPILER_SUPPORTS_C11) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu11") +else() + message(FATAL_ERROR + "The compiler ${CMAKE_C_COMPILER} has no C11 support. " + "Please use a decent C compiler " + "(note that c++11 support of ${CMAKE_CXX_COMPILER} seems ok).") +endif() + +### SMPI vs. Fortran +if ((NOT DEFINED enable_smpi OR enable_smpi) AND NOT APPLE) # smpi is enabled by default # Call enable_language(Fortran) in order to load the build rules for # this language, needed by teshsuite/smpi/mpich-test/. Use # CMAKE_FORCE_Fortran_COMPILER to bypass checks for a working @@ -65,8 +102,9 @@ else() set(release_version "${SIMGRID_VERSION_MAJOR}.${SIMGRID_VERSION_MINOR}.${SIMGRID_VERSION_PATCH}") endif() -set(SIMGRID_VERSION_STRING - "SimGrid version ${release_version}${SIMGRID_VERSION_EXTRA}\\nCopyright (c) 2004-${SIMGRID_VERSION_DATE}. The Simgrid Team.") +set(SIMGRID_VERSION_STRING "SimGrid version ${release_version}${SIMGRID_VERSION_EXTRA}") +set(SIMGRID_VERSION_BANNER + "SIMGRID_VERSION_STRING\\nCopyright (c) 2004-${SIMGRID_VERSION_DATE}. The Simgrid Team.") set(libsimgrid_version "${release_version}") set(libsimgrid-java_version "${release_version}") @@ -110,7 +148,7 @@ string(REGEX MATCH "[0-9].[0-9]*" LINKER_VERSION "${LINKER_VERSION}") string(REGEX MATCH "cl.exe" VBC "${CMAKE_C_COMPILER}") if(VBC) - message(FATAL_ERROR "VB is not yet supported by Simgrid.") + message("VB is not yet supported by Simgrid. Proceed with extrem caution") endif() ### Find programs and paths @@ -120,6 +158,11 @@ if(NOT PERL_EXECUTABLE) message(FATAL_ERROR "-- SimGrid cannot be compiled without Perl installed -- sorry. Bailling out.") endif() +if (APPLE) + set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") + set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) +endif() + ### Set some variables for Cmake SET(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib) @@ -173,10 +216,8 @@ if(WIN32) if(COMPILER_C_MINOR_VERSION) # set(__GNUC_MINOR__ ${COMPILER_C_MINOR_VERSION}) endif() - set(MSVC 0) - set(BORLAND 0) else() - message(FATAL_ERROR "Please use MinGW to compile SimGrid!") + message("You REALLY should use MinGW to compile SimGrid on Windows!") endif() if(ARCH_32_BITS) ### Arch 32bits @@ -204,8 +245,6 @@ if(WIN32) message(STATUS "CMAKE_BUILD_TOOL ${CMAKE_BUILD_TOOL}") message(STATUS "LINKER ${CMAKE_LINKER}") message(STATUS "CMAKE_GENERATOR ${CMAKE_GENERATOR}") - message(STATUS "BORLAND ${BORLAND}") - message(STATUS "VISUALC ${MSVC}") message(STATUS "GNUC ${CMAKE_COMPILER_IS_GNUCC}") endif() @@ -213,53 +252,53 @@ endif() include_directories(${INCLUDES}) ### Setup Options -include(${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/Option.cmake) +include(${CMAKE_HOME_DIRECTORY}/tools/cmake/Option.cmake) ### Make the *.h files with *.h.in files -include(${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/CompleteInFiles.cmake) +include(${CMAKE_HOME_DIRECTORY}/tools/cmake/CompleteInFiles.cmake) ### Define source packages for Libs -include(${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/DefinePackages.cmake) +include(${CMAKE_HOME_DIRECTORY}/tools/cmake/DefinePackages.cmake) ### Build some Maintainer files -include(${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/MaintainerMode.cmake) -include(${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/UnitTesting.cmake) +include(${CMAKE_HOME_DIRECTORY}/tools/cmake/MaintainerMode.cmake) +include(${CMAKE_HOME_DIRECTORY}/tools/cmake/UnitTesting.cmake) ### Setup gcc flags -include(${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/Flags.cmake) +include(${CMAKE_HOME_DIRECTORY}/tools/cmake/Flags.cmake) ### Make Libs if(NOT WIN32) - include(${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/MakeLib.cmake) + include(${CMAKE_HOME_DIRECTORY}/tools/cmake/MakeLib.cmake) else() - include(${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/MakeLibWin.cmake) + include(${CMAKE_HOME_DIRECTORY}/tools/cmake/MakeLibWin.cmake) endif() ### Make Exes -include(${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/MakeExe.cmake) +include(${CMAKE_HOME_DIRECTORY}/tools/cmake/MakeExe.cmake) ### Make tests if(enable_memcheck_xml) set(enable_memcheck true) endif() -include(${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/AddTests.cmake) -include(${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/CTestConfig.cmake) +include(${CMAKE_HOME_DIRECTORY}/tools/cmake/AddTests.cmake) +include(${CMAKE_HOME_DIRECTORY}/tools/cmake/CTestConfig.cmake) ### Setup the distrib -include(${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/Distrib.cmake) +include(${CMAKE_HOME_DIRECTORY}/tools/cmake/Distrib.cmake) ### Pipol compilation -include(${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/Pipol.cmake) +include(${CMAKE_HOME_DIRECTORY}/tools/cmake/Pipol.cmake) ### Build the doc if(NOT WIN32) - include(${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/GenerateDoc.cmake) + include(${CMAKE_HOME_DIRECTORY}/tools/cmake/GenerateDoc.cmake) else() - include(${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/GenerateDocWin.cmake) + include(${CMAKE_HOME_DIRECTORY}/tools/cmake/GenerateDocWin.cmake) endif() ### Print ARGS -include(${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/PrintArgs.cmake) +include(${CMAKE_HOME_DIRECTORY}/tools/cmake/PrintArgs.cmake) INCLUDE(Dart)