Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
typo in comments
[simgrid.git] / CMakeLists.txt
index 786e63d..ce93b4a 100644 (file)
@@ -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)
@@ -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}")