X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/8bc85164acb335cf909052b966b2ee4932e06cd7..a831415e35172e5ffe0b7878c5c2ea6e73f35720:/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index bae099b0eb..8fc0284ae2 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,6 +237,9 @@ 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 wifi) set(SIMGRID_DEP "${SIMGRID_DEP} -lns${NS3_VERSION}-${lib}${NS3_SUFFIX}") @@ -328,15 +339,11 @@ endif() CHECK_INCLUDE_FILE("valgrind/valgrind.h" HAVE_VALGRIND_H) CHECK_INCLUDE_FILE("unistd.h" HAVE_UNISTD_H) -CHECK_INCLUDE_FILE("signal.h" HAVE_SIGNAL_H) -CHECK_INCLUDE_FILE("sys/param.h" HAVE_SYS_PARAM_H) -CHECK_INCLUDE_FILE("sys/sysctl.h" HAVE_SYS_SYSCTL_H) CHECK_INCLUDE_FILE("linux/futex.h" HAVE_FUTEX_H) CHECK_FUNCTION_EXISTS(dlfunc HAVE_DLFUNC) CHECK_FUNCTION_EXISTS(gettimeofday HAVE_GETTIMEOFDAY) CHECK_FUNCTION_EXISTS(nanosleep HAVE_NANOSLEEP) -CHECK_FUNCTION_EXISTS(getdtablesize HAVE_GETDTABLESIZE) CHECK_FUNCTION_EXISTS(sysconf HAVE_SYSCONF) CHECK_FUNCTION_EXISTS(process_vm_readv HAVE_PROCESS_VM_READV) CHECK_FUNCTION_EXISTS(mmap HAVE_MMAP) @@ -385,23 +392,13 @@ else() SET(SIMGRID_HAVE_MALLOCATOR 0) endif() -if (minimal-bindings) - message(STATUS "Don't look for libunwind as we build minimal binding libraries.") - if(enable_model-checking) - message(FATAL_ERROR "You cannot enable model-checking and minimal-bindings at the same time.") - endif() -else() +if(enable_model-checking) include(FindLibunwind) if(HAVE_LIBUNWIND) SET(SIMGRID_DEP "${SIMGRID_DEP} ${LIBUNWIND_LIBRARIES}") else() - if(enable_model-checking) - message(FATAL_ERROR "Please install libunwind-dev libdw-dev libelf-dev libevent-dev if you want to compile the SimGrid model checker.") - endif() + message(FATAL_ERROR "Please install libunwind-dev libdw-dev libelf-dev libevent-dev if you want to compile the SimGrid model checker.") endif() -endif() - -if(enable_model-checking) find_package(Libdw REQUIRED) find_package(Libelf REQUIRED) find_package(Libevent REQUIRED) @@ -427,8 +424,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) @@ -643,6 +638,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 +774,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 +792,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) + 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) - 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) - - 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 +829,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()