summaryrefslogtreecommitdiffstats
path: root/configure
diff options
context:
space:
mode:
authorMalcolm Smith <smith@chaquo.com>2024-02-21 23:18:57 (GMT)
committerGitHub <noreply@github.com>2024-02-21 23:18:57 (GMT)
commit7f5e3f04f838686d65f1053a5e47f5d3faf0b228 (patch)
tree3460842977a6392fa59715777ecdf130667079c6 /configure
parent113687a8381d6dde179aeede607bcbca5c09d182 (diff)
downloadcpython-7f5e3f04f838686d65f1053a5e47f5d3faf0b228.zip
cpython-7f5e3f04f838686d65f1053a5e47f5d3faf0b228.tar.gz
cpython-7f5e3f04f838686d65f1053a5e47f5d3faf0b228.tar.bz2
gh-111225: Link extension modules against libpython on Android (#115780)
Part of the work on PEP 738: Adding Android as a supported platform. * Rename the LIBPYTHON variable to MODULE_LDFLAGS, to more accurately reflect its purpose. * Edit makesetup to use MODULE_LDFLAGS when linking extension modules. * Edit the Makefile so that extension modules depend on libpython on Android and Cygwin. * Restore `-fPIC` on Android. It was removed several years ago with a note that the toolchain used it automatically, but this is no longer the case. Omitting it causes all linker commands to fail with an error like `relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol '_Py_FalseStruct'; recompile with -fPIC`.
Diffstat (limited to 'configure')
-rwxr-xr-xconfigure13
1 files changed, 8 insertions, 5 deletions
diff --git a/configure b/configure
index ba2d49d..a08fc1c 100755
--- a/configure
+++ b/configure
@@ -834,7 +834,8 @@ LIBPL
PY_ENABLE_SHARED
PLATLIBDIR
BINLIBDEST
-LIBPYTHON
+MODULE_LDFLAGS
+MODULE_DEPS_SHARED
EXT_SUFFIX
ALT_SOABI
SOABI
@@ -7330,6 +7331,7 @@ printf "%s\n" "#define Py_ENABLE_SHARED 1" >>confdefs.h
case $ac_sys_system in
CYGWIN*)
LDLIBRARY='libpython$(LDVERSION).dll.a'
+ BLDLIBRARY='-L. -lpython$(LDVERSION)'
DLLLIBRARY='libpython$(LDVERSION).dll'
;;
SunOS*)
@@ -12789,7 +12791,6 @@ then
then CCSHARED="-fPIC";
else CCSHARED="+z";
fi;;
- Linux-android*) ;;
Linux*|GNU*) CCSHARED="-fPIC";;
Emscripten*|WASI*)
if test "x$enable_wasm_dynamic_linking" = xyes
@@ -23959,10 +23960,12 @@ printf "%s\n" "$LDVERSION" >&6; }
# On Android and Cygwin the shared libraries must be linked with libpython.
+
+MODULE_DEPS_SHARED='$(MODULE_DEPS_STATIC) $(EXPORTSYMS)'
+MODULE_LDFLAGS=''
if test "$PY_ENABLE_SHARED" = "1" && ( test -n "$ANDROID_API_LEVEL" || test "$MACHDEP" = "cygwin"); then
- LIBPYTHON="-lpython${VERSION}${ABIFLAGS}"
-else
- LIBPYTHON=''
+ MODULE_DEPS_SHARED="$MODULE_DEPS_SHARED \$(LDLIBRARY)"
+ MODULE_LDFLAGS="\$(BLDLIBRARY)"
fi