X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/92e4eb1c61e62840aa7cc4be72aad837d0fe8249..a539cc1790aed8a1549a6cde5cdddc0876615851:/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index daab600043..c8cbaee659 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -139,7 +139,7 @@ set(PythonInterp_FIND_VERSION_COUNT 1) 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) @@ -254,7 +254,7 @@ else() 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") @@ -426,7 +426,7 @@ if(CMAKE_USE_PTHREADS_INIT) RUN_OUTPUT_VARIABLE semopen_runmsg) if(semopen_compilable) - if(NOT semopen_retval) # error if not 0 + if(NOT semopen_retval) # error if not 0 message(STATUS "sem_open is compilable and executable") set(HAVE_SEM_OPEN 1) else() @@ -458,7 +458,7 @@ if(CMAKE_USE_PTHREADS_INIT) RUN_OUTPUT_VARIABLE seminit_runmsg) if(seminit_compilable) - if(NOT seminit_retval) # error if not 0 + if(NOT seminit_retval) # error if not 0 message(STATUS "sem_init is compilable and executable") set(HAVE_SEM_INIT 1) else() @@ -847,6 +847,26 @@ if(enable_java) include(${CMAKE_HOME_DIRECTORY}/tools/cmake/Java.cmake) endif() +# Python binding, generated with pybind11 +set(PYBIND11_CPP_STANDARD -std=c++11) +find_package(pybind11) +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 -Wno-attributes) + set_source_files_properties(src/bindings/python/simgrid_python.cpp PROPERTIES COMPILE_FLAGS -std=gnu++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) @@ -938,6 +958,12 @@ if (${Java_FOUND}) 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}")