MINGW-packages/mingw-w64-python/0008-posixmodule.c-Define-necessary-headers-for-compiling.patch
2023-12-07 08:12:51 +01:00

115 lines
3.5 KiB
Diff

From 357802d21d34d14f3c083c68d4ba08c2ab3d0d6e 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:19 +0530
Subject: [PATCH 008/N] posixmodule.c: Define necessary headers for compiling
on MINGW
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Also, build `nt` module instead of `posix` when compiling
with MINGW.
Co-authored-by: Naveen M K <naveen521kk@gmail.com>
Co-authored-by: Алексей <alexey.pawlow@gmail.com>
---
Modules/Setup.bootstrap.in | 2 +-
Modules/posixmodule.c | 28 ++++++++++++++++++++++++----
configure.ac | 8 ++++++++
3 files changed, 33 insertions(+), 5 deletions(-)
diff --git a/Modules/Setup.bootstrap.in b/Modules/Setup.bootstrap.in
index e3e9b96..814acbc 100644
--- a/Modules/Setup.bootstrap.in
+++ b/Modules/Setup.bootstrap.in
@@ -8,7 +8,7 @@
# module C APIs are used in core
atexit atexitmodule.c
faulthandler faulthandler.c
-posix posixmodule.c
+@INITSYS@ posixmodule.c
_signal signalmodule.c
_tracemalloc _tracemalloc.c
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index 9ac021f..d9633f0 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -350,6 +350,26 @@ corresponding Unix manual entries for more information on calls.");
# define HAVE_CWAIT 1
# define HAVE_FSYNC 1
# define fsync _commit
+# elif defined(__MINGW32__) /* GCC for windows hosts */
+/* getlogin is detected by configure on mingw-w64 */
+# undef HAVE_GETLOGIN
+/*# define HAVE_GETCWD 1 - detected by configure*/
+# define HAVE_GETPPID 1
+# define HAVE_GETLOGIN 1
+# define HAVE_SPAWNV 1
+# define HAVE_WSPAWNV 1
+# define HAVE_WEXECV 1
+/*# define HAVE_EXECV 1 - detected by configure*/
+# define HAVE_PIPE 1
+# define HAVE_POPEN 1
+# define HAVE_SYSTEM 1
+# define HAVE_CWAIT 1
+# define HAVE_FSYNC 1
+# define fsync _commit
+# include <winioctl.h>
+# ifndef _MAX_ENV
+# define _MAX_ENV 32767
+# endif
# endif /* _MSC_VER */
#endif /* ! __WATCOMC__ || __QNX__ */
@@ -428,7 +448,7 @@ extern char *ctermid_r(char *);
# endif
#endif
-#ifdef _MSC_VER
+#ifdef MS_WINDOWS
# ifdef HAVE_DIRECT_H
# include <direct.h>
# endif
@@ -439,7 +459,7 @@ extern char *ctermid_r(char *);
# include <process.h>
# endif
# include <malloc.h>
-#endif /* _MSC_VER */
+#endif /* MS_WINDOWS */
#ifndef MAXPATHLEN
# if defined(PATH_MAX) && PATH_MAX > 1024
@@ -1593,9 +1613,9 @@ win32_get_reparse_tag(HANDLE reparse_point_handle, ULONG *reparse_tag)
** man environ(7).
*/
#include <crt_externs.h>
-#elif !defined(_MSC_VER) && (!defined(__WATCOMC__) || defined(__QNX__) || defined(__VXWORKS__))
+#elif !defined(MS_WINDOWS) && (!defined(__WATCOMC__) || defined(__QNX__) || defined(__VXWORKS__))
extern char **environ;
-#endif /* !_MSC_VER */
+#endif /* !MS_WINDOWS */
static PyObject *
convertenviron(void)
diff --git a/configure.ac b/configure.ac
index 5604578..846f265 100644
--- a/configure.ac
+++ b/configure.ac
@@ -746,6 +746,14 @@ then
AC_DEFINE(_INCLUDE__STDC_A1_SOURCE, 1, Define to include mbstate_t for mbrtowc)
fi
+AC_MSG_CHECKING([for init system calls])
+AC_SUBST(INITSYS)
+case $host in
+ *-*-mingw*) INITSYS=nt;;
+ *) INITSYS=posix;;
+esac
+AC_MSG_RESULT([$INITSYS])
+
# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
# it may influence the way we can build extensions, so distutils
# needs to check it