From 86f4764cc93c457caa3e4f7807864531eef2414c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20Omn=C3=A8s?= <26088210+flomnes@users.noreply.github.com> Date: Thu, 22 Feb 2024 16:59:19 +0100 Subject: [PATCH] Add python binding for Mersenne-Twister (#1942) --- .gitignore | 3 +-- src/CMakeLists.txt | 7 ++++++- src/libs/antares/mersenne-twister/CMakeLists.txt | 10 +++++++++- .../mersenne_twister_pybind11.cpp | 15 +++++++++++++++ 4 files changed, 31 insertions(+), 4 deletions(-) create mode 100644 src/libs/antares/mersenne-twister/mersenne_twister_pybind11.cpp diff --git a/.gitignore b/.gitignore index e9566a3906..1a35b988bf 100644 --- a/.gitignore +++ b/.gitignore @@ -21,8 +21,7 @@ Makefile *.layout src/.vs -src/config.h -src/config/include +src/config/include/antares/config/config.h # Yuni src/ext/yuni/src/ProfileBuild.cmake diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 56b7a8cfbf..292a476a8b 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -185,6 +185,11 @@ message(STATUS "Build OR-Tools: ${BUILD_ORTOOLS}") option(BUILD_MINIZIP "Build minizip" OFF) message(STATUS "Build minizip: ${BUILD_MINIZIP}") +option(BUILD_MERSENNE_TWISTER_PYBIND11 "Build pybind11 bindings for Mersenne-Twister" OFF) +if (${BUILD_MERSENNE_TWISTER_PYBIND11}) + find_package(pybind11 REQUIRED) +endif() + #Define install directory if (NOT DEPS_INSTALL_DIR) SET(DEPS_INSTALL_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../rte-antares-deps-${CMAKE_BUILD_TYPE}) @@ -459,4 +464,4 @@ endif() include(CPack) #Last. We need all target defined -add_subdirectory(packaging) \ No newline at end of file +add_subdirectory(packaging) diff --git a/src/libs/antares/mersenne-twister/CMakeLists.txt b/src/libs/antares/mersenne-twister/CMakeLists.txt index a37b0d7d68..ba1391a155 100644 --- a/src/libs/antares/mersenne-twister/CMakeLists.txt +++ b/src/libs/antares/mersenne-twister/CMakeLists.txt @@ -21,4 +21,12 @@ target_include_directories(${PROJ} install(DIRECTORY include/antares DESTINATION "include" -) \ No newline at end of file +) + +if (${BUILD_MERSENNE_TWISTER_PYBIND11}) + pybind11_add_module(mersenne_twister_pybind11 mersenne_twister_pybind11.cpp) + target_link_libraries(mersenne_twister_pybind11 + PRIVATE + ${PROJ} + yuni-static-core) +endif() diff --git a/src/libs/antares/mersenne-twister/mersenne_twister_pybind11.cpp b/src/libs/antares/mersenne-twister/mersenne_twister_pybind11.cpp new file mode 100644 index 0000000000..f303f09908 --- /dev/null +++ b/src/libs/antares/mersenne-twister/mersenne_twister_pybind11.cpp @@ -0,0 +1,15 @@ +#include +#include + +namespace py = pybind11; + +PYBIND11_MODULE(mersenne_twister_pybind11, m) { + using namespace Antares; + py::class_(m, "mersenne_twister") + .def(py::init<>()) // default constructor + .def("reset", py::overload_cast(&MersenneTwister::reset)) + .def("next", &MersenneTwister::next) + .def_static("min", &MersenneTwister::min) + .def_static("max", &MersenneTwister::max); +} +