X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/8614314e15433c18f67638fdcb519a12608e49c2..18b038a13c3502d5787a3c8e6bc02f81aecd4781:/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index a7266ebbe0..6e628d32af 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,17 +1,20 @@ cmake_minimum_required(VERSION 2.6) +# Java requires 2.8.6 + +project(SimGrid C CXX) + +#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# +# Check for the compiler # +#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# ### 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 buildtools/Cmake/Flags.cmake that sets our paranoid warning flags - -enable_language(CXX) - +## See also tools/cmake/Flags.cmake that sets our paranoid warning flags INCLUDE(CheckCCompilerFlag) CHECK_C_COMPILER_FLAG(-fstack-cleaner HAVE_C_STACK_CLEANER) @@ -20,24 +23,25 @@ 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) -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_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() 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 include(CheckCCompilerFlag) CHECK_C_COMPILER_FLAG("-std=gnu11" COMPILER_SUPPORTS_C11) @@ -46,8 +50,13 @@ 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() +if(APPLE AND ("4.6" GREATER COMPILER_C_VERSION_MAJOR_MINOR)) + ### gcc 4.[1-5] cannot compile ucontext on OSX + message(STATUS "Ucontext can't be used with this version of gcc (must be greater than 4.5)") + set(HAVE_UCONTEXT_H 0) endif() @@ -76,18 +85,9 @@ if ((NOT DEFINED enable_smpi OR enable_smpi) AND NOT APPLE) # smpi is enabled by enable_language(Fortran OPTIONAL) endif() -## Mapping version number -> version name -# 3.5.99 -> alpha1 (oops) -# 3.5.9{1,2} -> beta{1,2} -# 3.5.9{3,4,5} -> rc{1,2,3} -# 3.6.{0,1,2} -> release 3.6, 3.6.1, 3.6.2 -# 3.7.{0,1} -> release 3.7, 3.7.1 -# 3.8.{0,1} -> release 3.8, 3.8.1 -# 3.9.0 -> release 3.9 -# 3.9.90 -> release 3.10pre1 -# 3.10.0 -> release 3.10 -# 3.11.0 -> release 3.11 -# 3.12.0 -> release 3.12 +#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# +# Build the version number # +#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# set(SIMGRID_VERSION_MAJOR "3") set(SIMGRID_VERSION_MINOR "12") @@ -108,10 +108,8 @@ 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() @@ -130,17 +128,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") @@ -148,7 +136,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 @@ -217,13 +205,7 @@ if(WIN32) # set(__GNUC_MINOR__ ${COMPILER_C_MINOR_VERSION}) endif() else() - message(FATAL_ERROR "Please use MinGW to compile SimGrid!") - endif() - - if(ARCH_32_BITS) ### Arch 32bits - set(_WIN32 1) - else() ### Arch 64bits - set(_WIN64 1) + message("You REALLY should use MinGW to compile SimGrid on Windows!") endif() set(NSIS_WIN_VERSION $ENV{PROCESSOR_ARCHITEW6432}) @@ -236,8 +218,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}") @@ -252,53 +234,57 @@ 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() + +if(enable_java) + include(${CMAKE_HOME_DIRECTORY}/tools/cmake/MakeJava.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)