diff --git a/cmake/ThirdPartyPython.cmake b/cmake/ThirdPartyPython.cmake index f1e37ba1a..643bf225c 100644 --- cmake/ThirdPartyPython.cmake +++ cmake/ThirdPartyPython.cmake @@ -40,18 +40,27 @@ IF (NEKTAR_BUILD_PYTHON) COMMAND ${Python3_EXECUTABLE} -m pip install . WORKING_DIRECTORY ${NEKPY_BASE_DIR}) - EXTERNALPROJECT_ADD( - pybind11 - PREFIX ${TPSRC} - URL ${TPURL}/pybind11-002c05b17.zip - URL_MD5 4fd2f2df6a8a4f28c260e56163bf4481 - STAMP_DIR ${TPBUILD}/stamp - DOWNLOAD_DIR ${TPSRC} - SOURCE_DIR ${TPSRC}/pybind11 - BINARY_DIR ${TPBUILD}/pybind11 - TMP_DIR ${TPBUILD}/pybind11-tmp - INSTALL_DIR ${TPDIST} - CONFIGURE_COMMAND ${CMAKE_COMMAND} + # Require pybind11 v3 or later for unique_ptr transfer + FIND_PACKAGE(pybind11 3 CONFIG QUIET) + + IF (pybind11_FOUND) + MESSAGE(STATUS "Found pybind11: ${pybind11_INCLUDE_DIR}") + ADD_CUSTOM_TARGET(pybind11 ALL) + INCLUDE_DIRECTORIES(${pybind11_INCLUDE_DIR}) + ELSE() + MESSAGE(STATUS "Build pybind11: ${TPDIST}/include/pybind11") + EXTERNALPROJECT_ADD( + pybind11 + PREFIX ${TPSRC} + URL ${TPURL}/pybind11-3.0.1.zip + URL_MD5 53f015a45ffaeeec2ad605ac436526ba + STAMP_DIR ${TPBUILD}/stamp + DOWNLOAD_DIR ${TPSRC} + SOURCE_DIR ${TPSRC}/pybind11 + BINARY_DIR ${TPBUILD}/pybind11 + TMP_DIR ${TPBUILD}/pybind11-tmp + INSTALL_DIR ${TPDIST} + CONFIGURE_COMMAND ${CMAKE_COMMAND} -G ${CMAKE_GENERATOR} -DCMAKE_C_COMPILER:FILEPATH=${CMAKE_C_COMPILER} -DCMAKE_CXX_COMPILER:FILEPATH=${CMAKE_CXX_COMPILER} @@ -59,12 +68,13 @@ IF (NEKTAR_BUILD_PYTHON) -DPYBIND11_TEST=OFF ${TPSRC}/pybind11) - # Add third-party include to include path. - INCLUDE_DIRECTORIES(${TPDIST}/include) + # Add third-party include to include path. + INCLUDE_DIRECTORIES(${TPDIST}/include) - ADD_DEPENDENCIES(thirdparty pybind11) + ADD_DEPENDENCIES(thirdparty pybind11) + ENDIF() - FILE(WRITE ${NEKPY_BASE_DIR}/NekPy/__init__.py "# Adjust dlopen flags to avoid OpenMPI issues + FILE(WRITE ${NEKPY_BASE_DIR}/NekPy/__init__.py "# Adjust dlopen flags to avoid OpenMPI issues try: import DLFCN as dl import sys