summaryrefslogtreecommitdiff
path: root/m4/pid_t.m4
blob: cb26f3612efd8a93e1b234cd04c1614cff9fe2da (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# pid_t.m4 serial 4
dnl Copyright (C) 2020-2022 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.

# The following implementation works around a problem in autoconf <= 2.69.
m4_version_prereq([2.70], [], [

dnl Define pid_t if the headers don't define it.
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
          ]])
       ],
       [gl_pid_type='int'],
       [gl_pid_type='__int64'])
     AC_DEFINE_UNQUOTED([pid_t], [$gl_pid_type],
       [Define as a signed integer type capable of holding a process identifier.])
    ],
    [AC_INCLUDES_DEFAULT])
])

])# m4_version_prereq 2.70