diff --git a/cmake/dependencies/pybind11.cmake b/cmake/dependencies/pybind11.cmake index 3fe2c473..d7ad355c 100644 --- a/cmake/dependencies/pybind11.cmake +++ b/cmake/dependencies/pybind11.cmake @@ -12,6 +12,11 @@ function(find_pybind11) message(STATUS "pybind11 repository: ${pyAMReX_pybind11_repo} (${pyAMReX_pybind11_branch})") include(FetchContent) endif() + + # rely on our find_package(Python ...) call + # https://pybind11.readthedocs.io/en/stable/compiling.html#modules-with-cmake + set(PYBIND11_FINDPYTHON ON) + if(TARGET pybind11::module) # nothing to do, target already exists in the superbuild elseif(pyAMReX_pybind11_internal OR pyAMReX_pybind11_src) diff --git a/setup.py b/setup.py index 6e61cdd3..a356aeeb 100644 --- a/setup.py +++ b/setup.py @@ -77,11 +77,18 @@ def build_extension(self, ext): r_dim = re.search(r"amrex_(1|2|3)d", ext.name) dims = r_dim.group(1).upper() + pyv = sys.version_info cmake_args = [ + # Python: use the calling interpreter in CMake + # https://cmake.org/cmake/help/latest/module/FindPython.html#hints + # https://cmake.org/cmake/help/latest/command/find_package.html#config-mode-version-selection + f"-DPython_ROOT_DIR={sys.prefix}", + f"-DPython_FIND_VERSION={pyv.major}.{pyv.minor}", + "-DPython_FIND_VERSION_EXACT=TRUE", + "-DPython_FIND_STRATEGY=LOCATION", "-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=" + os.path.join(extdir, "amrex"), "-DCMAKE_VERBOSE_MAKEFILE=ON", "-DCMAKE_PYTHON_OUTPUT_DIRECTORY=" + extdir, - "-DPython_EXECUTABLE=" + sys.executable, "-DAMReX_SPACEDIM=" + dims, ## variants "-DAMReX_OMP=" + AMReX_OMP,