diff --git a/tests/env.py b/tests/env.py index d234c425d4..95cc1ac611 100644 --- a/tests/env.py +++ b/tests/env.py @@ -6,6 +6,7 @@ import pytest +ANDROID = sys.platform.startswith("android") LINUX = sys.platform.startswith("linux") MACOS = sys.platform.startswith("darwin") WIN = sys.platform.startswith("win32") or sys.platform.startswith("cygwin") diff --git a/tests/pyproject.toml b/tests/pyproject.toml index dbb693d753..c91388ca0d 100644 --- a/tests/pyproject.toml +++ b/tests/pyproject.toml @@ -33,6 +33,4 @@ pyodide.test-groups = ["numpy", "scipy"] ios.test-groups = ["numpy"] ios.xbuild-tools = ["cmake", "ninja"] ios.environment.PIP_EXTRA_INDEX_URL = "https://pypi.anaconda.org/beeware/simple" -android.test-groups = ["numpy"] -android.xbuild-tools = ["cmake", "ninja"] -android.environment.PIP_EXTRA_INDEX_URL = "https://chaquo.com/pypi-13.1" +android.environment.ANDROID_API_LEVEL = "24" # Needed to include libc++ in the wheel. diff --git a/tests/test_exceptions.py b/tests/test_exceptions.py index 921540194a..79b3879034 100644 --- a/tests/test_exceptions.py +++ b/tests/test_exceptions.py @@ -76,7 +76,7 @@ def test_cross_module_exceptions(msg): # TODO: FIXME @pytest.mark.xfail( - "env.MACOS and env.PYPY", + "(env.MACOS and env.PYPY) or env.ANDROID", raises=RuntimeError, reason="See Issue #2847, PR #2999, PR #4324", strict=not env.PYPY, # PR 5569 diff --git a/tools/pybind11NewTools.cmake b/tools/pybind11NewTools.cmake index 087784c22c..e881ca7ca2 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 8ef2dbb842..ac24e315d8 100644 --- a/tools/pybind11Tools.cmake +++ b/tools/pybind11Tools.cmake @@ -119,7 +119,7 @@ target_link_libraries( pybind11::module INTERFACE pybind11::python_link_helper - "$<$,$>:pybind11::_ClassicPythonLibraries>") + "$<$,$,$>:pybind11::_ClassicPythonLibraries>") target_link_libraries(pybind11::embed INTERFACE pybind11::pybind11 pybind11::_ClassicPythonLibraries)