execute_process(COMMAND ${CMAKE_LINKER} -version OUTPUT_VARIABLE LINKER_VERSION ERROR_VARIABLE LINKER_VERSION)
string(REGEX MATCH "[0-9].[0-9]*" LINKER_VERSION "${LINKER_VERSION}")
-### Set the library providing dlopen
-if("${CMAKE_SYSTEM_NAME}" MATCHES "kFreeBSD|Linux")
- find_library(DL_LIBRARY dl)
-endif()
-
### Find programs and paths
FIND_PROGRAM(GCOV_PATH gcov)
include(FindPerl)
set(PythonInterp_FIND_VERSION_MAJOR 3)
include(FindPythonInterp)
if(NOT PYTHONINTERP_FOUND)
- message(FATAL_ERROR "Please install Python (version 3 or higher).")
+ message(FATAL_ERROR "Please install Python (version 3 or higher) to compile SimGrid.")
endif()
SET(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib)
include(${CMAKE_HOME_DIRECTORY}/tools/cmake/Java.cmake)
endif()
+# Python binding, generated with pybind11
+set(PYBIND11_CPP_STANDARD -std=c++11)
+find_package(pybind11 2.2.0)
+if(NOT PYTHONLIBS_FOUND)
+ set(pybind11_FOUND OFF)
+endif()
+option(enable_python "Whether the Python bindings are activated." ${pybind11_FOUND}) # ON by default if dependencies are met
+
+if(enable_python)
+ if(pybind11_FOUND)
+ pybind11_add_module(simgrid_python src/bindings/python/simgrid_python.cpp)
+ set_source_files_properties(src/bindings/python/simgrid_python.cpp PROPERTIES COMPILE_FLAGS -std=c++14)
+ target_link_libraries(simgrid_python PUBLIC simgrid)
+ set_target_properties(simgrid_python PROPERTIES LIBRARY_OUTPUT_NAME simgrid)
+ else()
+ message(FATAL_ERROR "Please install pybind11-dev to build the Python bindings (or disable that option).")
+ endif()
+endif()
+mark_as_advanced(PYBIND11_PYTHON_VERSION)
+mark_as_advanced(pybind11_DIR)
+
### Make tests
if(enable_memcheck_xml)
set(enable_memcheck true)
else()
message(" Compile Java ................: NO")
endif()
+if(pybind11_FOUND)
+ message(" Compile Python bindings .....: ${enable_python}")
+ message(" module ....................: ${PYTHON_MODULE_PREFIX}simgrid${PYTHON_MODULE_EXTENSION}")
+else()
+ message(" Compile Python bindings .....: NO (disabled, or pybind11 not found)")
+endif()
message(" Compile Lua .................: ${SIMGRID_HAVE_LUA}")
message(" Compile Smpi ................: ${HAVE_SMPI}")
message(" Smpi fortran ..............: ${SMPI_FORTRAN}")