diff options
author | Malcolm Smith <smith@chaquo.com> | 2024-02-21 23:18:57 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-21 23:18:57 (GMT) |
commit | 7f5e3f04f838686d65f1053a5e47f5d3faf0b228 (patch) | |
tree | 3460842977a6392fa59715777ecdf130667079c6 /configure | |
parent | 113687a8381d6dde179aeede607bcbca5c09d182 (diff) | |
download | cpython-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-x | configure | 13 |
1 files changed, 8 insertions, 5 deletions
@@ -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 |