X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/1fc52b3b94e6c88b3321d6b44753c6ee7324d96a..bad14d23aa8bca6a7a96a68f8e64ea74ee7b20b0:/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 503c71b38e..87a0e1e95d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ # Build the version number set(SIMGRID_VERSION_MAJOR "3") -set(SIMGRID_VERSION_MINOR "25") +set(SIMGRID_VERSION_MINOR "27") set(SIMGRID_VERSION_PATCH "1") # odd => git branch; even => stable release or released snapshot if(${SIMGRID_VERSION_PATCH} EQUAL "0") @@ -51,15 +51,15 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g3") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g3") if (CMAKE_COMPILER_IS_GNUCC) - if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.7") + if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "5.0") message(FATAL_ERROR - "SimGrid needs at least g++ version 4.7 to compile but you have ${CMAKE_CXX_COMPILER_VERSION}." - "You need a sufficient support of c++11 to compile SimGrid.") + "SimGrid needs at least g++ version 5.0 to compile but you have ${CMAKE_CXX_COMPILER_VERSION}." + "You need a sufficient support of c++14 to compile SimGrid.") endif() endif() -## We need a decent support of the C++11 and C11 standards -set(CMAKE_CXX_STANDARD 11) +## We need a decent support of the C++14 and C11 standards +set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_C_STANDARD 11) @@ -137,12 +137,20 @@ if(NOT PERL_FOUND) endif() # tesh.py needs python 3 (or the module python-subprocess32 on python2.8+) -set(PythonInterp_FIND_VERSION 3) -set(PythonInterp_FIND_VERSION_COUNT 1) -set(PythonInterp_FIND_VERSION_MAJOR 3) -include(FindPythonInterp) -if(NOT PYTHONINTERP_FOUND) - message(FATAL_ERROR "Please install Python (version 3 or higher) to compile SimGrid.") +if(CMAKE_VERSION VERSION_LESS "3.12") + set(PythonInterp_FIND_VERSION 3) + set(PythonInterp_FIND_VERSION_COUNT 1) + set(PythonInterp_FIND_VERSION_MAJOR 3) + include(FindPythonInterp) + if(NOT PYTHONINTERP_FOUND) + message(FATAL_ERROR "Please install Python (version 3 or higher) to compile SimGrid.") + endif() +else() + find_package(Python3 COMPONENTS Interpreter Development) + if(NOT Python3_Interpreter_FOUND) + message(FATAL_ERROR "Please install Python (version 3 or higher) to compile SimGrid.") + endif() + set(PYTHON_EXECUTABLE ${Python3_EXECUTABLE}) endif() SET(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib) @@ -229,8 +237,11 @@ set(SIMGRID_HAVE_NS3 0) if(enable_ns3) include(FindNS3) if (SIMGRID_HAVE_NS3) + if (NS3_VERSION VERSION_LESS "3.28") + message(FATAL_ERROR "SimGrid needs at least ns-3.28. Please upgrade or disable that cmake option.") + endif() set(SIMGRID_HAVE_NS3 1) - foreach(lib core csma point-to-point internet network applications) + foreach(lib core csma point-to-point internet network applications wifi) set(SIMGRID_DEP "${SIMGRID_DEP} -lns${NS3_VERSION}-${lib}${NS3_SUFFIX}") endforeach() else() @@ -427,8 +438,6 @@ if (enable_model-checking AND enable_ns3) message(FATAL_ERROR "Cannot activate both model-checking and ns-3 bindings: ns-3 pulls too much dependencies for the MC to work") endif() -get_property(known_features GLOBAL PROPERTY CMAKE_CXX_KNOWN_FEATURES) - if(enable_smpi) SET(HAVE_SMPI 1) if(WIN32) @@ -555,10 +564,10 @@ file(READ ${CMAKE_HOME_DIRECTORY}/src/smpi/smpitools.sh SMPITOOLS_SH) # Definiti ### SMPI script used when simgrid is installed set(exec_prefix ${CMAKE_INSTALL_PREFIX}) -set(includeflag "-I${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR} -I${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}/smpi") set(includedir "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}") set(libdir "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}") -set(CMAKE_SMPI_COMMAND "export LD_LIBRARY_PATH=\"${CMAKE_INSTALL_LIBDIR}") +set(includeflag "-I${includedir} -I${includedir}/smpi") +set(CMAKE_SMPI_COMMAND "export LD_LIBRARY_PATH=\"${libdir}") if(NS3_LIBRARY_PATH) set(CMAKE_SMPI_COMMAND "${CMAKE_SMPI_COMMAND}:${NS3_LIBRARY_PATH}") endif() @@ -583,17 +592,17 @@ endforeach() ### SMPI scripts used when compiling simgrid set(exec_prefix "${CMAKE_BINARY_DIR}/smpi_script/") -set(includeflag "-I${CMAKE_HOME_DIRECTORY}/include -I${CMAKE_HOME_DIRECTORY}/include/smpi") -set(includeflag "${includeflag} -I${CMAKE_BINARY_DIR}/include -I${CMAKE_BINARY_DIR}/include/smpi") set(includedir "${CMAKE_HOME_DIRECTORY}/include") set(libdir "${CMAKE_BINARY_DIR}/lib") -set(CMAKE_SMPI_COMMAND "export LD_LIBRARY_PATH=\"${CMAKE_BINARY_DIR}/lib") +set(includeflag "-I${includedir} -I${includedir}/smpi") +set(includeflag "${includeflag} -I${CMAKE_BINARY_DIR}/include -I${CMAKE_BINARY_DIR}/include/smpi") +set(CMAKE_SMPI_COMMAND "export LD_LIBRARY_PATH=\"${libdir}") if(NS3_LIBRARY_PATH) set(CMAKE_SMPI_COMMAND "${CMAKE_SMPI_COMMAND}:${NS3_LIBRARY_PATH}") endif() set(CMAKE_SMPI_COMMAND "${CMAKE_SMPI_COMMAND}\${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}\"") -set(SMPIMAIN ${CMAKE_BINARY_DIR}/lib/simgrid/smpimain) -set(SMPIREPLAYMAIN ${CMAKE_BINARY_DIR}/lib/simgrid/smpireplaymain) +set(SMPIMAIN ${libdir}/simgrid/smpimain) +set(SMPIREPLAYMAIN ${libdir}/simgrid/smpireplaymain) foreach(script cc cxx ff f90 run) configure_file(${CMAKE_HOME_DIRECTORY}/src/smpi/smpi${script}.in ${CMAKE_BINARY_DIR}/smpi_script/bin/smpi${script} @ONLY) @@ -643,6 +652,8 @@ if(NOT "${CMAKE_BINARY_DIR}" STREQUAL "${CMAKE_HOME_DIRECTORY}") configure_file(${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/hostfile ${CMAKE_BINARY_DIR}/teshsuite/smpi/hostfile COPYONLY) configure_file(${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/hostfile_cluster ${CMAKE_BINARY_DIR}/teshsuite/smpi/hostfile_cluster COPYONLY) configure_file(${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/hostfile_coll ${CMAKE_BINARY_DIR}/teshsuite/smpi/hostfile_coll COPYONLY) + configure_file(${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/hostfile_io ${CMAKE_BINARY_DIR}/teshsuite/smpi/hostfile_io COPYONLY) + configure_file(${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/hostfile_empty ${CMAKE_BINARY_DIR}/teshsuite/smpi/hostfile_empty COPYONLY) configure_file(${CMAKE_HOME_DIRECTORY}/examples/smpi/replay_multiple/description_file ${CMAKE_BINARY_DIR}/examples/smpi/replay_multiple/description_file COPYONLY) configure_file(${CMAKE_HOME_DIRECTORY}/examples/smpi/replay_multiple/README ${CMAKE_BINARY_DIR}/examples/smpi/replay_multiple/README COPYONLY) @@ -777,7 +788,9 @@ endif() SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${generated_files_to_clean}") -add_custom_target(tests COMMENT "Recompiling the tests") +add_custom_target(tests COMMENT "Recompiling the tests") +add_custom_target(tests-mc COMMENT "Recompiling the MC tests and tools.") +add_dependencies(tests tests-mc) ### Build some Maintainer files include(${CMAKE_HOME_DIRECTORY}/tools/cmake/MaintainerMode.cmake) @@ -793,49 +806,32 @@ if(enable_java) include(${CMAKE_HOME_DIRECTORY}/tools/cmake/Java.cmake) endif() -if (enable_model-checking AND (NOT ("cxx_std_14" IN_LIST known_features))) - message(WARNING "C++14 not found. The model-checker will use a slow hash function. You should upgrade your compiler") - set(SG_HAVE_CPP14 0) -else() - set(SG_HAVE_CPP14 1) - set_property(TARGET simgrid PROPERTY CXX_STANDARD 14) -endif() - # Python binding (with pybind11) ################ -# Our usage of pybind11::overload_cast mandates C++14 if((NOT DEFINED enable_python) OR enable_python) - if("cxx_std_14" IN_LIST known_features) - - if(EXISTS ${CMAKE_HOME_DIRECTORY}/pybind11) # Try to use a local copy of pybind11, if any - message(STATUS "Use the internal copy of pybind11 (using C++14).") - add_subdirectory(${CMAKE_HOME_DIRECTORY}/pybind11) - set(pybind11_FOUND ON) - - set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_HOME_DIRECTORY}/pybind11/tools/) - set(Python_ADDITIONAL_VERSIONS 3.7 3.6 3.5 3.4) - find_package(PythonLibsNew ${PYBIND11_PYTHON_VERSION} REQUIRED) + if(EXISTS ${CMAKE_HOME_DIRECTORY}/pybind11) # Try to use a local copy of pybind11, if any + message(STATUS "Use the internal copy of pybind11.") + add_subdirectory(${CMAKE_HOME_DIRECTORY}/pybind11) + set(pybind11_FOUND ON) - else() - find_package(pybind11 CONFIG) - message(STATUS "Pybind11 version: ${pybind11_VERSION}") - if (pybind11_VERSION VERSION_LESS 2.4) - message(STATUS "SimGrid needs at least v2.4 of pybind11. Disabling the Python bindings.") - set(pybind11_FOUND OFF) - endif() - endif() - - if(NOT PYTHONLIBS_FOUND) - message(STATUS "Python libs not found. Turn pybind11 off.") + set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_HOME_DIRECTORY}/pybind11/tools/) + set(Python_ADDITIONAL_VERSIONS 3.9 3.8 3.7 3.6 3.5 3.4) + find_package(PythonLibsNew ${PYBIND11_PYTHON_VERSION} REQUIRED) + else() + find_package(pybind11 CONFIG) + message(STATUS "Pybind11 version: ${pybind11_VERSION}") + if (pybind11_VERSION VERSION_LESS 2.4) + message(STATUS "SimGrid needs at least v2.4 of pybind11. Disabling the Python bindings.") set(pybind11_FOUND OFF) endif() + endif() + + if(NOT PYTHONLIBS_FOUND AND NOT Python3_Development_FOUND) + message(STATUS "Python libs not found. Turn pybind11 off.") - else() - message(STATUS "No support for C++14 detected, don't even search for pybind11.") set(pybind11_FOUND OFF) endif() - unset(known_features) endif() option(enable_python "Whether the Python bindings are activated." ${pybind11_FOUND}) # ON by default if dependencies are met @@ -847,7 +843,7 @@ endif() if(enable_python) if(pybind11_FOUND) - message(STATUS "Found pybind11, with C++14.") + message(STATUS "Found pybind11.") if(NOT enable_lto) set(pybind11_options NO_EXTRAS) endif()