diff options
author | Bruno Haible <bruno@clisp.org> | 2020-08-24 01:38:14 +0200 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2020-08-23 19:27:56 -0700 |
commit | da4c468de90c941506ab8c67c586810151bb899f (patch) | |
tree | 1479688ba88af7514fdc1584d6c6c741fcf3d31b | |
parent | 9b5c0f17741836e99d0a801c6309389d391c03f9 (diff) | |
download | autoconf-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.m4 | 27 |
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)]) |