X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/92e4eb1c61e62840aa7cc4be72aad837d0fe8249..0ac4ca0aa56954ca1100688ba670cef8d017c948:/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index daab600043..ce93b4aee7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -121,11 +121,6 @@ endif() 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) @@ -139,7 +134,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 +249,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 +421,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 +453,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 +842,27 @@ 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 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) @@ -938,6 +954,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}")