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)
endif()
endif()
-# cmake up to 3.12.3 (at least) does not know about stacktrace components. Inform it.
+# cmake before 3.13.1 does not know about stacktrace components. Fix it.
# Usable components: https://www.boost.org/doc/libs/1_65_1/doc/html/stacktrace/configuration_and_build.html
set(_Boost_STACKTRACE_HEADERS "boost/stacktrace.hpp")
set(_Boost_STACKTRACE_BACKTRACE_HEADERS "boost/stacktrace.hpp")
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()
+
### 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}")