| From ae8ad2a897af02bb36b723276f7382c5dd240447 Mon Sep 17 00:00:00 2001 |
| From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= |
| <alexey.pawlow@gmail.com> |
| Date: Thu, 17 Jun 2021 18:51:25 +0530 |
| Subject: [PATCH 016/N] MINGW dynamic loading support |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| Co-authored-by: Алексей <alexey.pawlow@gmail.com> |
| --- |
| Makefile.pre.in | 6 ++++++ |
| Python/dynload_win.c | 9 +++++++-- |
| configure.ac | 15 +++++++++++++++ |
| 3 files changed, 28 insertions(+), 2 deletions(-) |
| |
| diff --git a/Makefile.pre.in b/Makefile.pre.in |
| index f738b3b..9f2475d 100644 |
| --- a/Makefile.pre.in |
| +++ b/Makefile.pre.in |
| @@ -823,6 +823,12 @@ Python/dynload_hpux.o: $(srcdir)/Python/dynload_hpux.c Makefile |
| -DSHLIB_EXT='"$(EXT_SUFFIX)"' \ |
| -o $@ $(srcdir)/Python/dynload_hpux.c |
| |
| +Python/dynload_win.o: $(srcdir)/Python/dynload_win.c Makefile |
| + $(CC) -c $(PY_CORE_CFLAGS) \ |
| + -DSHLIB_SUFFIX='"$(SHLIB_SUFFIX)"' \ |
| + -DEXT_SUFFIX='"$(EXT_SUFFIX)"' \ |
| + -o $@ $(srcdir)/Python/dynload_win.c |
| + |
| Python/sysmodule.o: $(srcdir)/Python/sysmodule.c Makefile $(srcdir)/Include/pydtrace.h |
| $(CC) -c $(PY_CORE_CFLAGS) \ |
| -DABIFLAGS='"$(ABIFLAGS)"' \ |
| diff --git a/Python/dynload_win.c b/Python/dynload_win.c |
| index 81787e5..9d7690e 100644 |
| --- a/Python/dynload_win.c |
| +++ b/Python/dynload_win.c |
| @@ -27,6 +27,12 @@ |
| #define PYD_UNTAGGED_SUFFIX PYD_DEBUG_SUFFIX ".pyd" |
| |
| const char *_PyImport_DynLoadFiletab[] = { |
| +#ifdef EXT_SUFFIX |
| + EXT_SUFFIX, /* include SOABI flags where is encoded debug */ |
| +#endif |
| +#ifdef SHLIB_SUFFIX |
| + "-abi" PYTHON_ABI_STRING SHLIB_SUFFIX, |
| +#endif |
| PYD_TAGGED_SUFFIX, |
| PYD_UNTAGGED_SUFFIX, |
| NULL |
| @@ -192,8 +198,7 @@ _Py_COMP_DIAG_POP |
| ensure DLLs adjacent to the PYD are preferred. */ |
| Py_BEGIN_ALLOW_THREADS |
| hDLL = LoadLibraryExW(wpathname, NULL, |
| - LOAD_LIBRARY_SEARCH_DEFAULT_DIRS | |
| - LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR); |
| + LOAD_WITH_ALTERED_SEARCH_PATH); |
| Py_END_ALLOW_THREADS |
| |
| /* restore old error mode settings */ |
| diff --git a/configure.ac b/configure.ac |
| index 592b61a..dfe55ad 100644 |
| --- a/configure.ac |
| +++ b/configure.ac |
| @@ -2718,6 +2718,9 @@ if test -z "$SHLIB_SUFFIX"; then |
| CYGWIN*) SHLIB_SUFFIX=.dll;; |
| *) SHLIB_SUFFIX=.so;; |
| esac |
| + case $host_os in |
| + mingw*) SHLIB_SUFFIX=.dll;; |
| + esac |
| fi |
| AC_MSG_RESULT($SHLIB_SUFFIX) |
| |
| @@ -3831,6 +3834,12 @@ then |
| fi |
| ;; |
| esac |
| + case $host in |
| + *-*-mingw*) |
| + DYNLOADFILE="dynload_win.o" |
| + extra_machdep_objs="$extra_machdep_objs PC/dl_nt.o" |
| + ;; |
| + esac |
| fi |
| AC_MSG_RESULT($DYNLOADFILE) |
| if test "$DYNLOADFILE" != "dynload_stub.o" |
| @@ -5667,6 +5676,12 @@ case "$ac_cv_computed_gotos" in yes*) |
| AC_DEFINE(HAVE_COMPUTED_GOTOS, 1, |
| [Define if the C compiler supports computed gotos.]) |
| esac |
| +case $host_os in |
| + mingw*) |
| + dnl Synchronized with _PyImport_DynLoadFiletab (dynload_win.c) |
| + dnl Do not use more then one dot on this platform ! |
| + EXT_SUFFIX=-$SOABI$SHLIB_SUFFIX;; |
| +esac |
| |
| case $ac_sys_system in |
| AIX*) |
| -- |
| 2.32.0 |
| |