diff --git a/tools/pybind11NewTools.cmake b/tools/pybind11NewTools.cmake index 087784c22..e881ca7ca 100644 --- a/tools/pybind11NewTools.cmake +++ b/tools/pybind11NewTools.cmake @@ -243,6 +243,17 @@ if(TARGET ${_Python}::Python) endif() if(TARGET ${_Python}::Module) + # On Android, older versions of CMake don't know that modules need to link against + # libpython, so Python::Module will be an INTERFACE target with no associated library + # files. + get_target_property(module_target_type ${_Python}::Module TYPE) + if(ANDROID AND module_target_type STREQUAL INTERFACE_LIBRARY) + set_property( + TARGET ${_Python}::Module + APPEND + PROPERTY INTERFACE_LINK_LIBRARIES "${${_Python}_LIBRARIES}") + endif() + set_property( TARGET pybind11::module APPEND diff --git a/tools/pybind11Tools.cmake b/tools/pybind11Tools.cmake index 8ef2dbb84..a51efb39f 100644 --- a/tools/pybind11Tools.cmake +++ b/tools/pybind11Tools.cmake @@ -119,7 +119,8 @@ target_link_libraries( pybind11::module INTERFACE pybind11::python_link_helper - "$<$,$>:pybind11::_ClassicPythonLibraries>") + "$<$,$,$>:pybind11::_ClassicPythonLibraries>" +) target_link_libraries(pybind11::embed INTERFACE pybind11::pybind11 pybind11::_ClassicPythonLibraries)