# Build the version number
set(SIMGRID_VERSION_MAJOR "3")
-set(SIMGRID_VERSION_MINOR "26")
+set(SIMGRID_VERSION_MINOR "30")
set(SIMGRID_VERSION_PATCH "1") # odd => git branch; even => stable release or released snapshot
if(${SIMGRID_VERSION_PATCH} EQUAL "0")
# customizable installation directories
include(GNUInstallDirs)
-## Save compiler flags preset with environment variables CFLAGS or CXXFLAGS;
-## they will used within smpicc, smpicxx.
-## Do it early so that we get their genuine values. The same will be done later for Fortran.
-string(REGEX REPLACE " *-f[a-z]+-prefix-map=[^ ]*" "" SMPI_C_FLAGS "${CMAKE_C_FLAGS}")
-string(REGEX REPLACE " *-f[a-z]+-prefix-map=[^ ]*" "" SMPI_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
-
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
# 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
# Set flags/libs to be used in smpiff
if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU")
- set(SMPI_Fortran_FLAGS "\"-fpic\" \"-ff2c\" \"-fno-second-underscore\"")
+ set(SMPI_Fortran_FLAGS_ "\"-fpic\" \"-ff2c\" \"-fno-second-underscore\"")
set(SMPI_Fortran_LIBS "\"-lgfortran\"")
set(SMPI_GFORTRAN 1)
elseif(CMAKE_Fortran_COMPILER_ID MATCHES "Intel")
- set(SMPI_Fortran_FLAGS "\"-fPIC\" \"-nofor-main\"")
+ set(SMPI_Fortran_FLAGS_ "\"-fPIC\" \"-nofor-main\"")
set(SMPI_Fortran_LIBS "\"-lifcore\"")
set(SMPI_IFORT 1)
elseif(CMAKE_Fortran_COMPILER_ID MATCHES "PGI|Flang") # flang
- set(SMPI_Fortran_FLAGS "\"-fPIC\"")
+ set(SMPI_Fortran_FLAGS_ "\"-fPIC\"")
set(SMPI_Fortran_LIBS "")
set(SMPI_FLANG 1)
endif()
- string(REGEX REPLACE " *-f[a-z]+-prefix-map=[^ ]*" "" SMPI_Fortran_FLAGS "${SMPI_Fortran_FLAGS} ${CMAKE_Fortran_FLAGS}")
+ set(SMPI_Fortran_FLAGS "${SMPI_Fortran_FLAGS_} ${SMPI_Fortran_FLAGS}")
## Request debugging flags for Fortran too
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -g")
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)
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}")
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)
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)
set(enable_model-checking FALSE)
endif()
+if(enable_model-checking AND minimal-bindings)
+ message(FATAL_ERROR "Compile-time option 'minimal-bindings' cannot be enabled with 'model-checking'")
+endif()
+
if(HAVE_MMAP)
SET(HAVE_MMALLOC 1)
else()
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(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)
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)
### SMPI script used when simgrid is installed
set(exec_prefix ${CMAKE_INSTALL_PREFIX})
-set(includedir "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}")
-set(libdir "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
+set(includedir "${CMAKE_INSTALL_FULL_INCLUDEDIR}")
+set(libdir "${CMAKE_INSTALL_FULL_LIBDIR}")
set(includeflag "-I${includedir} -I${includedir}/smpi")
set(CMAKE_SMPI_COMMAND "export LD_LIBRARY_PATH=\"${libdir}")
if(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")
configure_file(${CMAKE_HOME_DIRECTORY}/examples/smpi/replay/actions_allgatherv.txt ${CMAKE_BINARY_DIR}/examples/smpi/replay/actions_allgatherv.txt COPYONLY)
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_griffon ${CMAKE_BINARY_DIR}/teshsuite/smpi/hostfile_griffon 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)
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)
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}")
message(" Compile Smpi ................: ${HAVE_SMPI}")
message(" Smpi fortran ..............: ${SMPI_FORTRAN}")
message(" MPICH3 testsuite ..........: ${enable_smpi_MPICH3_testsuite}")
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("")