diff -Naur Python-2.7.9-orig/configure.ac Python-2.7.9/configure.ac --- Python-2.7.9-orig/configure.ac 2014-12-11 13:49:57.831800000 +0300 +++ Python-2.7.9/configure.ac 2014-12-11 13:49:57.941000000 +0300 @@ -1890,6 +1890,9 @@ *) enable_toolbox_glue="no";; esac + case $host_os in + mingw*) SHLIB_SUFFIX=.dll;; + esac fi case "$enable_toolbox_glue" in yes) @@ -2035,6 +2038,16 @@ CYGWIN*) SO=.dll;; *) SO=.so;; esac + case $host in + *-*-mingw*) + #NOTE: see _PyImport_DynLoadFiletab in dynload_win.c + if test "x$Py_DEBUG" = xtrue; then + SO=_d.pyd + else + SO=.pyd + fi + ;; + esac else # this might also be a termcap variable, see #610332 echo @@ -3035,6 +3048,12 @@ fi ;; esac + case $host in + *-*-mingw*) + DYNLOADFILE="dynload_win.o" + extra_machdep_objs="$extra_machdep_objs PC/dl_nt.o PC/import_nt.o" + ;; + esac fi AC_MSG_RESULT($DYNLOADFILE) if test "$DYNLOADFILE" != "dynload_stub.o" diff -Naur Python-2.7.9-orig/Python/dynload_win.c Python-2.7.9/Python/dynload_win.c --- Python-2.7.9-orig/Python/dynload_win.c 2014-12-10 18:59:59.000000000 +0300 +++ Python-2.7.9/Python/dynload_win.c 2014-12-11 13:49:57.941000000 +0300 @@ -11,9 +11,11 @@ #include "importdl.h" #include -// "activation context" magic - see dl_nt.c... +#ifdef Py_ENABLE_SHARED +/* "activation context" magic - see dl_nt.c... */ extern ULONG_PTR _Py_ActivateActCtx(); void _Py_DeactivateActCtx(ULONG_PTR cookie); +#endif const struct filedescr _PyImport_DynLoadFiletab[] = { #ifdef _DEBUG @@ -25,6 +27,10 @@ }; +#if defined(__MINGW32__) +/* avoid compile error: conflicting types for 'strcasecmp' */ +# define strcasecmp fake_strcasecmp +#endif /* Case insensitive string compare, to avoid any dependencies on particular C RTL implementations */ @@ -190,11 +196,15 @@ sizeof(pathbuf), pathbuf, &dummy)) { +#ifdef Py_ENABLE_SHARED ULONG_PTR cookie = _Py_ActivateActCtx(); +#endif /* XXX This call doesn't exist in Windows CE */ hDLL = LoadLibraryEx(pathname, NULL, LOAD_WITH_ALTERED_SEARCH_PATH); +#ifdef Py_ENABLE_SHARED _Py_DeactivateActCtx(cookie); +#endif } /* restore old error mode settings */