summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruno Haible <bruno@clisp.org>2020-08-24 01:38:14 +0200
committerPaul Eggert <eggert@cs.ucla.edu>2020-08-23 19:27:56 -0700
commitda4c468de90c941506ab8c67c586810151bb899f (patch)
tree1479688ba88af7514fdc1584d6c6c741fcf3d31b
parent9b5c0f17741836e99d0a801c6309389d391c03f9 (diff)
downloadautoconf-da4c468de90c941506ab8c67c586810151bb899f.tar.gz
AC_TYPE_PID_T: Define pid_t correctly on 64-bit native Windows.
Reported at <https://savannah.gnu.org/support/index.php?110296>. * lib/autoconf/types.m4 (AC_TYPE_PID_T): Define pid_t to '__int64' on 64-bit native Windows, and to 'int' otherwise.
-rw-r--r--lib/autoconf/types.m427
1 files changed, 26 insertions, 1 deletions
diff --git a/lib/autoconf/types.m4 b/lib/autoconf/types.m4
index 543a638e..d28a8efe 100644
--- a/lib/autoconf/types.m4
+++ b/lib/autoconf/types.m4
@@ -610,7 +610,32 @@ AN_IDENTIFIER([ssize_t], [AC_TYPE_SSIZE_T])
AC_DEFUN([AC_TYPE_SSIZE_T], [AC_CHECK_TYPE(ssize_t, int)])
AN_IDENTIFIER([pid_t], [AC_TYPE_PID_T])
-AC_DEFUN([AC_TYPE_PID_T], [AC_CHECK_TYPE(pid_t, int)])
+AC_DEFUN([AC_TYPE_PID_T],
+[
+ AC_CHECK_TYPE([pid_t],
+ [],
+ [dnl On 64-bit native Windows, define it to the equivalent of 'intptr_t'
+ dnl (= 'long long' = '__int64'), because that is the return type
+ dnl of the _spawnv* functions
+ dnl <https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/spawnvp-wspawnvp>
+ dnl and the argument type of the _cwait function
+ dnl <https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/cwait>.
+ dnl Otherwise (on 32-bit Windows and on old Unix platforms), define it
+ dnl to 'int'.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([[
+ #if defined _WIN64 && !defined __CYGWIN__
+ LLP64
+ #endif
+ ]])
+ ],
+ [ac_pid_type='int'],
+ [ac_pid_type='__int64'])
+ AC_DEFINE_UNQUOTED([pid_t], [$ac_pid_type],
+ [Define as a signed integer type capable of holding a process identifier.])
+ ],
+ [AC_INCLUDES_DEFAULT])
+])
AN_IDENTIFIER([off_t], [AC_TYPE_OFF_T])
AC_DEFUN([AC_TYPE_OFF_T], [AC_CHECK_TYPE(off_t, long int)])