# Build the version number
set(SIMGRID_VERSION_MAJOR "3")
-set(SIMGRID_VERSION_MINOR "29")
-set(SIMGRID_VERSION_PATCH "0") # odd => git branch; even => stable release or released snapshot
+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")
set(release_version "${SIMGRID_VERSION_MAJOR}.${SIMGRID_VERSION_MINOR}")
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
# Check for the compiler #
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
-##
+##
## Check the C/C++ standard that we need
## See also tools/cmake/Flags.cmake that sets our paranoid warning flags
INCLUDE(CheckCCompilerFlag)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g3")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g3")
-if (CMAKE_COMPILER_IS_GNUCC)
+if (CMAKE_COMPILER_IS_GNUCC)
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "5.0")
message(FATAL_ERROR
"SimGrid needs at least g++ version 5.0 to compile but you have ${CMAKE_CXX_COMPILER_VERSION}."
include(${CMAKE_HOME_DIRECTORY}/tools/cmake/Option.cmake)
### SMPI vs. Fortran
-if ((NOT DEFINED enable_smpi) OR enable_smpi)
+if ((NOT DEFINED enable_smpi) OR enable_smpi)
# First unset the compiler in case we're re-running cmake over a previous
# configuration where it was saved as smpiff
unset(CMAKE_Fortran_COMPILER)
-
+
SET(SMPI_FORTRAN 0)
if(enable_fortran)
enable_language(Fortran OPTIONAL)
endif()
-
+
if(CMAKE_Fortran_COMPILER)
# Fortran compiler detected: save it, then replace by smpiff
endif()
-### SET THE LIBRARY EXTENSION
+### SET THE LIBRARY EXTENSION
if(APPLE)
set(LIB_EXE "dylib")
elseif(WIN32)
endif()
# library dependency cannot start with a space (CMP0004), so initialize it with something that is never deactivated.
-set(SIMGRID_DEP "-lm")
+set(SIMGRID_DEP "-lm")
### Determine the assembly flavor that we need today
set(HAVE_RAW_CONTEXTS 0)
include(CheckSymbolExists)
set(HAVE_GRAPHVIZ 0)
-set(SIMGRID_HAVE_LUA 0)
if(minimal-bindings)
- message(STATUS "Don't even look for graphviz nor lua, as we build minimal binding libraries.")
+ message(STATUS "Don't even look for graphviz, as we build minimal binding libraries.")
else()
include(FindGraphviz)
- if(enable_lua)
- include(FindLuaSimgrid)
- endif()
endif()
set(SIMGRID_HAVE_NS3 0)
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)
message(STATUS "Mandatory components found. SimGrid is compilable.")
endif()
endif()
- endif()
+ endif()
# Checks for header libraries functions.
CHECK_LIBRARY_EXISTS(rt clock_gettime "" HAVE_POSIX_GETTIME)
SET(enable_model-checking 0)
endif()
-if(enable_jedule)
- set(SIMGRID_HAVE_JEDULE 1)
-else()
- set(SIMGRID_HAVE_JEDULE 0)
-endif()
-
if(enable_mallocators)
SET(SIMGRID_HAVE_MALLOCATOR 1)
else()
set(enable_java FALSE)
endif()
else()
- SET(SIMGRID_HAVE_MC 0)
+ SET(SIMGRID_HAVE_MC 0)
set(HAVE_MMALLOC 0)
endif()
mark_as_advanced(PATH_LIBDW_H)
endif()
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")
+ message(WARNING "Activating both model-checking and ns-3 bindings is considered experimental.")
endif()
if(enable_smpi)
set(exec_prefix ${CMAKE_INSTALL_PREFIX})
set(includedir "${CMAKE_INSTALL_FULL_INCLUDEDIR}")
set(libdir "${CMAKE_INSTALL_FULL_LIBDIR}")
-set(includeflag "-I${includedir} -I${includedir}/smpi")
+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}")
configure_file(${CMAKE_HOME_DIRECTORY}/src/smpi/smpi${script}.in ${CMAKE_BINARY_DIR}/bin/smpi${script} @ONLY)
endforeach()
-### SMPI scripts used when compiling simgrid
+### SMPI scripts used when compiling simgrid
set(exec_prefix "${CMAKE_BINARY_DIR}/smpi_script/")
set(includedir "${CMAKE_HOME_DIRECTORY}/include")
set(libdir "${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(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}")
add_dependencies(tests python-bindings)
set_property(TARGET python-bindings
APPEND PROPERTY INCLUDE_DIRECTORIES "${INTERNAL_INCLUDES}")
+
+ if("${SIMGRID_PYTHON_LIBDIR}" STREQUAL "") # value not manually set
+ if("${CMAKE_INSTALL_PREFIX}" STREQUAL "/usr")
+ set(SIMGRID_PYTHON_LIBDIR ${Python3_SITEARCH})
+ else("${CMAKE_INSTALL_PREFIX}" STREQUAL "/usr")
+ string(REGEX REPLACE "^/usr/" "${CMAKE_INSTALL_PREFIX}/" SIMGRID_PYTHON_LIBDIR ${Python3_SITEARCH})
+ endif("${CMAKE_INSTALL_PREFIX}" STREQUAL "/usr")
+ endif()
+ 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).")
endif()
if(pybind11_FOUND)
message(" Compile Python bindings .....: ${enable_python}")
message(" module ....................: ${PYTHON_MODULE_PREFIX}simgrid${PYTHON_MODULE_EXTENSION}")
+ message(" install path ..............: ${SIMGRID_PYTHON_LIBDIR} (force another value with -DSIMGRID_PYTHON_LIBDIR)")
else()
message(" Compile Python bindings .....: OFF (disabled, or pybind11 not found)")
endif()
-message(" Compile Lua .................: ${SIMGRID_HAVE_LUA}")
+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}")
+message(" MBI testsuite .............: ${enable_smpi_MBI_testsuite}")
message(" Privatization .............: ${HAVE_PRIVATIZATION}")
message(" PAPI support...............: ${HAVE_PAPI}")
message(" Compile Boost.Context support: ${HAVE_BOOST_CONTEXTS}")
message(" Maintainer mode .............: ${enable_maintainer_mode}")
message(" Documentation................: ${enable_documentation}")
message(" Model checking ..............: ${SIMGRID_HAVE_MC}")
-message(" Jedule mode ................: ${SIMGRID_HAVE_JEDULE}")
message(" Graphviz mode ...............: ${HAVE_GRAPHVIZ}")
message(" Mallocators .................: ${enable_mallocators}")
message("")