X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/ebcf5b5967286b2041615e8d777ac5edd7925b60..537493087681eaa29dd07a0b9577dbbbc911cf4a:/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index d1b67ba5ec..daefe9fd2e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ # Build the version number set(SIMGRID_VERSION_MAJOR "3") -set(SIMGRID_VERSION_MINOR "30") +set(SIMGRID_VERSION_MINOR "31") set(SIMGRID_VERSION_PATCH "1") # odd => git branch; even => stable release or released snapshot if(${SIMGRID_VERSION_PATCH} EQUAL "0") @@ -23,6 +23,7 @@ cmake_minimum_required(VERSION 3.5) if(NOT CMAKE_VERSION VERSION_LESS "3.9") cmake_policy(SET CMP0069 NEW) endif() +# once we move >= 3.13, we should use target_link_option in examples/sthread message(STATUS "Cmake version ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION}") set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_HOME_DIRECTORY}/tools/cmake/Modules) @@ -45,15 +46,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 "5.0") + if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "7.0") message(FATAL_ERROR - "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.") + "SimGrid needs at least g++ version 7.0 to compile but you have ${CMAKE_CXX_COMPILER_VERSION}." + "You need a sufficient support of c++17 to compile SimGrid.") endif() endif() -## We need a decent support of the C++14 and C11 standards -set(CMAKE_CXX_STANDARD 14) +## We need a decent support of the C++17 and C11 standards +set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_C_STANDARD 11) @@ -227,18 +228,32 @@ 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.") + if (NOT NS3_VERSION EQUAL "3-dev" AND NS3_VERSION VERSION_LESS "3.28") + message(FATAL_ERROR "SimGrid needs ns-3 in version 3.28 or higher. 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}") - endforeach() + set(SIMGRID_DEP "${SIMGRID_DEP} ${NS3_LIBRARIES}") else() message(FATAL_ERROR "Cannot find ns-3. Please install it (apt-get install ns3 libns3-dev) or disable that cmake option") endif() endif() +### Check for Eigen library +set(SIMGRID_HAVE_EIGEN3 0) +find_package (Eigen3 3.3 CONFIG + HINTS ${EIGEN3_HINT}) +if (Eigen3_FOUND) + set(SIMGRID_HAVE_EIGEN3 1) + message(STATUS "Found Eigen3: ${EIGEN3_INCLUDE_DIR}") + include_directories(${EIGEN3_INCLUDE_DIR}) + if ("3.3.4" VERSION_EQUAL EIGEN3_VERSION_STRING AND CMAKE_COMPILER_IS_GNUCC) + message(STATUS "Avoid build error of Eigen3 v3.3.4 using -Wno-error=int-in-bool-context") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=int-in-bool-context") + endif() +else() + message(STATUS "Disabling model BMF because Eigen3 was not found. If it's installed, use EIGEN3_HINT to hint cmake about the location of Eigen3Config.cmake") +endif() + set(SIMGRID_HAVE_MSG 0) if(enable_msg) set(SIMGRID_HAVE_MSG 1) @@ -397,6 +412,8 @@ if(enable_model-checking) message(WARNING "FreeBSD + Model-Checking + Java = too much for now. Disabling the Java bindings.") set(enable_java FALSE) endif() + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -gdwarf-4") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -gdwarf-4") else() SET(SIMGRID_HAVE_MC 0) set(HAVE_MMALLOC 0) @@ -439,27 +456,27 @@ else() OUTPUT_VARIABLE compile_makecontext_output) #If can have both context - if(compile_makecontext) - set(HAVE_UCONTEXT_CONTEXTS 1) - message(STATUS "Support for ucontext factory ok.") - else() + if(NOT compile_makecontext) message(STATUS "Error: exists, but makecontext is not compilable. Compilation output:\n ${compile_makecontext_output}") message(STATUS "No ucontext factory: makecontext() is not compilable.") - endif() - - # Stack setup (size and address) - try_run(RUN_makecontext_VAR COMPILE_makecontext_VAR - ${CMAKE_BINARY_DIR} ${CMAKE_HOME_DIRECTORY}/tools/cmake/test_prog/prog_stacksetup.c - RUN_OUTPUT_VARIABLE stack_setup) - - LIST(LENGTH stack_setup stack_setup_len) - if("${stack_setup_len}" STREQUAL "2") - LIST(GET stack_setup 0 makecontext_addr) - LIST(GET stack_setup 1 makecontext_size) - set(sg_makecontext_stack_addr "#define sg_makecontext_stack_addr(skaddr) (${makecontext_addr})") - set(sg_makecontext_stack_size "#define sg_makecontext_stack_size(sksize) (${makecontext_size})") else() - message(FATAL_ERROR "Could not figure out the stack setup. Compil: ${RUN_makecontext_VAR}. Exec: ${COMPILE_makecontext_VAR}. Output: ${stack_setup}") + message(STATUS "Support for ucontext factory ok.") + set(HAVE_UCONTEXT_CONTEXTS 1) + + # Stack setup (size and address) + try_run(RUN_makecontext_VAR COMPILE_makecontext_VAR + ${CMAKE_BINARY_DIR} ${CMAKE_HOME_DIRECTORY}/tools/cmake/test_prog/prog_stacksetup.c + RUN_OUTPUT_VARIABLE stack_setup) + + LIST(LENGTH stack_setup stack_setup_len) + if("${stack_setup_len}" STREQUAL "2") + LIST(GET stack_setup 0 makecontext_addr) + LIST(GET stack_setup 1 makecontext_size) + set(sg_makecontext_stack_addr "#define sg_makecontext_stack_addr(skaddr) (${makecontext_addr})") + set(sg_makecontext_stack_size "#define sg_makecontext_stack_size(sksize) (${makecontext_size})") + else() + message(FATAL_ERROR "Could not figure out the stack setup. Compil: ${RUN_makecontext_VAR}. Exec: ${COMPILE_makecontext_VAR}. Output: ${stack_setup}") + endif() endif() endif() @@ -847,7 +864,7 @@ if(enable_python) string(REGEX REPLACE "^/usr/" "${CMAKE_INSTALL_PREFIX}/" SIMGRID_PYTHON_LIBDIR ${Python3_SITEARCH}) endif("${CMAKE_INSTALL_PREFIX}" STREQUAL "/usr") endif() - install(TARGETS python-bindings + install(TARGETS python-bindings LIBRARY DESTINATION "${SIMGRID_PYTHON_LIBDIR}") else() message(FATAL_ERROR "Please install pybind11-dev to build the Python bindings (or disable that option).") @@ -957,6 +974,11 @@ if(pybind11_FOUND) else() message(" Compile Python bindings .....: OFF (disabled, or pybind11 not found)") endif() +if(Eigen3_FOUND) + message(" Eigen3 library ..............: ${EIGEN3_VERSION_STRING} in ${EIGEN3_INCLUDE_DIR}") +else() + message(" Eigen3 library ..............: not found (EIGEN3_HINT='${EIGEN3_HINT}').") +endif() message(" Compile Smpi ................: ${HAVE_SMPI}") message(" Smpi fortran ..............: ${SMPI_FORTRAN}") message(" MPICH3 testsuite ..........: ${enable_smpi_MPICH3_testsuite}")