X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/adab702a13b6d64bd50ce0e3db7aa6a8574459d5..606eb4d9ca85d580d0291fb09e3cd7fba3ece3e7:/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index ba2abf569b..92cb5e3127 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,9 +6,13 @@ if(WIN32) endif() project(SimGrid C) +#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# +# Check for the compiler # +#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# + ## ## Check the C/C++ standard that we need -## See also buildtools/Cmake/Flags.cmake that sets our paranoid warning flags +## See also tools/cmake/Flags.cmake that sets our paranoid warning flags enable_language(CXX) @@ -20,25 +24,28 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -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) -CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X) -if(COMPILER_SUPPORTS_CXX11) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") -elseif(COMPILER_SUPPORTS_CXX0X) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x") -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_CXX_VERSION_MAJOR_MINOR STRLESS "4.7") message(FATAL_ERROR - "SimGrid needs g++ version 4.7 to compile " + "SimGrid needs at least g++ version 4.7 to compile " "(c++11 support of previous versions is too limited).") endif() + + if(COMPILER_C_VERSION_MAJOR_MINOR STRGREATER "4.8") + set (CMAKE_AR gcc-ar) + set (CMAKE_RANLIB gcc-ranlib) + 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() ### And we need C11 standard, too @@ -49,11 +56,10 @@ if(COMPILER_SUPPORTS_C11) 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).") + "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 @@ -79,6 +85,10 @@ if ((NOT DEFINED enable_smpi OR enable_smpi) AND NOT APPLE) # smpi is enabled by enable_language(Fortran OPTIONAL) endif() +#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# +# Build the version number # +#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# + ## Mapping version number -> version name # 3.5.99 -> alpha1 (oops) # 3.5.9{1,2} -> beta{1,2} @@ -111,10 +121,9 @@ set(SIMGRID_VERSION_BANNER set(libsimgrid_version "${release_version}") set(libsimgrid-java_version "${release_version}") -set(GCC_NEED_VERSION "4.0") set(APPLE_NEED_GCC_VERSION "4.6") -### SET THE LIBRARY EXTENSION AND GCC VERSION +### SET THE LIBRARY EXTENSION if(APPLE) #MAC set(LIB_EXE "dylib") else() @@ -133,17 +142,7 @@ if(${CMAKE_C_COMPILER_ID} STREQUAL "GNU") string(REGEX MATCH "[0-9].[0-9].[0-9]" COMPILER_CXX_VERSION "${COMPILER_CXX_VERSION}") string(REGEX MATCH "^[0-9].[0-9]" COMPILER_C_VERSION_MAJOR_MINOR "${COMPILER_C_VERSION}") - string(REPLACE "${COMPILER_C_VERSION_MAJOR_MINOR}." "" COMPILER_C_VERSION_PATCH "${COMPILER_C_VERSION}") - - if(${GCC_NEED_VERSION} GREATER COMPILER_C_VERSION_MAJOR_MINOR) - message(FATAL_ERROR "Gcc must be to version ${GCC_NEED_VERSION} current version ${COMPILER_C_VERSION_MAJOR_MINOR}") - endif() - - if(COMPILER_C_VERSION_MAJOR_MINOR STRGREATER "4.8") - set (CMAKE_AR gcc-ar) - set (CMAKE_RANLIB gcc-ranlib) - endif() - + string(REPLACE "${COMPILER_C_VERSION_MAJOR_MINOR}." "" COMPILER_C_VERSION_PATCH "${COMPILER_C_VERSION}") endif() exec_program("${CMAKE_LINKER} --version" OUTPUT_VARIABLE "LINKER_VERSION") @@ -151,7 +150,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 @@ -220,7 +219,7 @@ if(WIN32) # set(__GNUC_MINOR__ ${COMPILER_C_MINOR_VERSION}) endif() 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 @@ -239,8 +238,8 @@ if(WIN32) set(_XBT_WIN32 1) - message(STATUS "C_COMPILER ${CMAKE_C_COMPILER} ${COMPILER_C_VERSION}") - message(STATUS "CXX_COMPILER ${CMAKE_CXX_COMPILER} ${COMPILER_CXX_VERSION}") + message(STATUS "C_COMPILER ${CMAKE_C_COMPILER} ${COMPILER_C_VERSION_MAJOR_MINOR}") + message(STATUS "CXX_COMPILER ${CMAKE_CXX_COMPILER} ${COMPILER_CXX_VERSION_MAJOR_MINOR}") message(STATUS "CMAKE_RC_COMPILER ${CMAKE_RC_COMPILER}") message(STATUS "INCLUDE ${CMAKE_INCLUDE_WIN}") message(STATUS "LIB ${CMAKE_LIB_WIN}") @@ -255,53 +254,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)