diff --git a/CMakeLists.txt b/CMakeLists.txt index 657b6fc68..bd35fa3ad 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -210,6 +210,11 @@ if (OPM_ENABLE_PYTHON) endif() set(PYTHON_INCLUDE_DIRS ${PYTHON_INCLUDE_DIR}) endif() + find_package(pybind11 2.2 CONFIG) + if (NOT pybind11_FOUND) + # Use full path for reuse with pypi + set(pybind11_INCLUDE_DIRS ${PROJECT_SOURCE_DIR}/python/pybind11/include ${PYTHON_INCLUDE_DIRS}) + endif() endif() @@ -356,6 +361,10 @@ if (OPM_ENABLE_PYTHON) set(opm-common_PYTHON_PACKAGE_VERSION ${OPM_PYTHON_PACKAGE_VERSION_TAG}) # Generate versioned setup.py + if (pybind11_INCLUDE_DIRS) + string(REGEX REPLACE ";" "', '" _tmp "${pybind11_INCLUDE_DIRS}" ) + set(SETUP_PY_PYBIND_INCLUDE_DIR "'${_tmp}'") + endif() configure_file (${PROJECT_SOURCE_DIR}/python/setup.py.in ${PROJECT_BINARY_DIR}/python/setup.py) file(COPY ${PROJECT_SOURCE_DIR}/python/README.md DESTINATION ${PROJECT_BINARY_DIR}/python) execute_process(COMMAND ${Python3_EXECUTABLE} target_name.py @@ -433,7 +442,7 @@ if (OPM_ENABLE_PYTHON) # ------------------------------------------------------------------------- # 2: Embed the Python interpreter for keywords like PYACTION and PYINPUT - target_include_directories(opmcommon SYSTEM PRIVATE "python/pybind11/include;${PYTHON_INCLUDE_DIRS}") + target_include_directories(opmcommon SYSTEM PRIVATE "${pybind11_INCLUDE_DIRS}") if (OPM_ENABLE_EMBEDDED_PYTHON) target_link_libraries(opmcommon PUBLIC ${PYTHON_LIBRARY}) add_definitions(-DEMBEDDED_PYTHON) diff --git a/python/setup.py.in b/python/setup.py.in index 88afc1229..5eb544d13 100644 --- a/python/setup.py.in +++ b/python/setup.py.in @@ -65,7 +65,7 @@ ext_modules = [ libraries=libs, language='c++', undef_macros=["NDEBUG"], - include_dirs=["pybind11/include"], + include_dirs=[@SETUP_PY_PYBIND_INCLUDE_DIR@], extra_compile_args=['-std=c++17', '-fopenmp'], extra_link_args=['-fopenmp', @opm-common_PYTHON_LINKAGE@] )