115 lines
3.4 KiB
Diff
115 lines
3.4 KiB
Diff
From 2976481933b3e7f0caf0ffeccac580f16f796ea8 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 8ef0f20..1f21d35 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 c21c6f0..1a62ddd 100644
|
|
--- a/Modules/posixmodule.c
|
|
+++ b/Modules/posixmodule.c
|
|
@@ -369,6 +369,26 @@ corresponding Unix manual entries for more information on calls.");
|
|
# define HAVE_PIPE 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 /* ! __WATCOMC__ || __QNX__ */
|
|
|
|
/*[clinic input]
|
|
@@ -446,7 +466,7 @@ extern char *ctermid_r(char *);
|
|
# endif
|
|
#endif
|
|
|
|
-#ifdef _MSC_VER
|
|
+#ifdef MS_WINDOWS
|
|
# ifdef HAVE_DIRECT_H
|
|
# include <direct.h>
|
|
# endif
|
|
@@ -457,7 +477,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
|
|
@@ -1594,9 +1614,9 @@ error:
|
|
** 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 aeb9928..1bc4974 100644
|
|
--- a/configure.ac
|
|
+++ b/configure.ac
|
|
@@ -755,6 +755,14 @@ then
|
|
[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
|