| From 5cf0ca1ebaec17df425a2b2829f6520e355f81cc 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:23 +0530 |
| Subject: [PATCH 014/N] issue6672 v2 Add Mingw recognition to pyport.h to al |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| Co-authored-by: Алексей <alexey.pawlow@gmail.com> |
| --- |
| Include/pyport.h | 20 +++++++++++--------- |
| setup.py | 3 +++ |
| 2 files changed, 14 insertions(+), 9 deletions(-) |
| |
| diff --git a/Include/pyport.h b/Include/pyport.h |
| index 475c2a8..a05fa3a 100644 |
| --- a/Include/pyport.h |
| +++ b/Include/pyport.h |
| @@ -664,12 +664,12 @@ extern char * _getpty(int *, int, mode_t, int); |
| */ |
| |
| /* |
| - All windows ports, except cygwin, are handled in PC/pyconfig.h. |
| + Only MSVC windows ports is handled in PC/pyconfig.h. |
| |
| - Cygwin is the only other autoconf platform requiring special |
| + Cygwin and Mingw is the only other autoconf platform requiring special |
| linkage handling and it uses __declspec(). |
| */ |
| -#if defined(__CYGWIN__) |
| +#if defined(__CYGWIN__) || defined(__MINGW32__) |
| # define HAVE_DECLSPEC_DLL |
| #endif |
| |
| @@ -682,21 +682,23 @@ extern char * _getpty(int *, int, mode_t, int); |
| # define PyAPI_FUNC(RTYPE) Py_EXPORTED_SYMBOL RTYPE |
| # define PyAPI_DATA(RTYPE) extern Py_EXPORTED_SYMBOL RTYPE |
| /* module init functions inside the core need no external linkage */ |
| - /* except for Cygwin to handle embedding */ |
| -# if defined(__CYGWIN__) |
| + /* except for Cygwin/Mingw to handle embedding */ |
| +# if defined(__CYGWIN__) || defined(__MINGW32__) |
| # define PyMODINIT_FUNC Py_EXPORTED_SYMBOL PyObject* |
| -# else /* __CYGWIN__ */ |
| +# else /* __CYGWIN__ || __MINGW32__*/ |
| # define PyMODINIT_FUNC PyObject* |
| -# endif /* __CYGWIN__ */ |
| +# endif /* __CYGWIN__ || __MINGW32__*/ |
| # else /* Py_BUILD_CORE */ |
| /* Building an extension module, or an embedded situation */ |
| /* public Python functions and data are imported */ |
| /* Under Cygwin, auto-import functions to prevent compilation */ |
| /* failures similar to those described at the bottom of 4.1: */ |
| /* http://docs.python.org/extending/windows.html#a-cookbook-approach */ |
| -# if !defined(__CYGWIN__) |
| +# if defined(__CYGWIN__) || defined(__MINGW32__) |
| +# define PyAPI_FUNC(RTYPE) RTYPE |
| +# else |
| # define PyAPI_FUNC(RTYPE) Py_IMPORTED_SYMBOL RTYPE |
| -# endif /* !__CYGWIN__ */ |
| +# endif /* __CYGWIN__ || __MINGW32__*/ |
| # define PyAPI_DATA(RTYPE) extern Py_IMPORTED_SYMBOL RTYPE |
| /* module init functions outside the core must be exported */ |
| # if defined(__cplusplus) |
| diff --git a/setup.py b/setup.py |
| index 04eb6b2..b483dd3 100644 |
| --- a/setup.py |
| +++ b/setup.py |
| @@ -444,6 +444,9 @@ class PyBuildExt(build_ext): |
| def build_extensions(self): |
| self.set_srcdir() |
| |
| + if MS_WINDOWS: |
| + self.compiler.define_macro("Py_BUILD_CORE_MODULE") |
| + |
| # Detect which modules should be compiled |
| self.detect_modules() |
| |
| -- |
| 2.32.0 |
| |