immutable: Add tests.
[gnulib.git] / m4 / unistd_h.m4
blob0f26fb908d356f45b590ac2c18426a42f868227a
1 # unistd_h.m4 serial 85
2 dnl Copyright (C) 2006-2021 Free Software Foundation, Inc.
3 dnl This file is free software; the Free Software Foundation
4 dnl gives unlimited permission to copy and/or distribute it,
5 dnl with or without modifications, as long as this notice is preserved.
7 dnl Written by Simon Josefsson, Bruno Haible.
9 AC_DEFUN([gl_UNISTD_H],
11   dnl Use AC_REQUIRE here, so that the default behavior below is expanded
12   dnl once only, before all statements that occur in other macros.
13   AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
15   gl_CHECK_NEXT_HEADERS([unistd.h])
16   if test $ac_cv_header_unistd_h = yes; then
17     HAVE_UNISTD_H=1
18   else
19     HAVE_UNISTD_H=0
20   fi
21   AC_SUBST([HAVE_UNISTD_H])
23   dnl Ensure the type pid_t gets defined.
24   AC_REQUIRE([AC_TYPE_PID_T])
26   dnl Determine WINDOWS_64_BIT_OFF_T.
27   AC_REQUIRE([gl_TYPE_OFF_T])
29   dnl Check for declarations of anything we want to poison if the
30   dnl corresponding gnulib module is not in use.
31   gl_WARN_ON_USE_PREPARE([[
32 #if HAVE_UNISTD_H
33 # include <unistd.h>
34 #endif
35 /* Some systems declare various items in the wrong headers.  */
36 #if !(defined __GLIBC__ && !defined __UCLIBC__)
37 # include <fcntl.h>
38 # include <stdio.h>
39 # include <stdlib.h>
40 # if defined _WIN32 && ! defined __CYGWIN__
41 #  include <io.h>
42 # endif
43 #endif
44     ]], [access chdir chown copy_file_range dup dup2 dup3 environ euidaccess
45     execl execle execlp execv execve execvp execvpe
46     faccessat fchdir
47     fchownat fdatasync fsync ftruncate getcwd getdomainname getdtablesize
48     getentropy getgroups gethostname getlogin getlogin_r getpagesize getpass
49     getusershell setusershell endusershell
50     group_member isatty lchown link linkat lseek pipe pipe2 pread pwrite
51     readlink readlinkat rmdir sethostname sleep symlink symlinkat
52     truncate ttyname_r unlink unlinkat usleep])
54   AC_REQUIRE([AC_C_RESTRICT])
56   AC_CHECK_DECLS_ONCE([execvpe])
57   if test $ac_cv_have_decl_execvpe = no; then
58     HAVE_DECL_EXECVPE=0
59   fi
62 AC_DEFUN([gl_UNISTD_MODULE_INDICATOR],
64   dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
65   AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
66   gl_MODULE_INDICATOR_SET_VARIABLE([$1])
67   dnl Define it also as a C macro, for the benefit of the unit tests.
68   gl_MODULE_INDICATOR_FOR_TESTS([$1])
71 AC_DEFUN([gl_UNISTD_H_DEFAULTS],
73   GNULIB_ACCESS=0;               AC_SUBST([GNULIB_ACCESS])
74   GNULIB_CHDIR=0;                AC_SUBST([GNULIB_CHDIR])
75   GNULIB_CHOWN=0;                AC_SUBST([GNULIB_CHOWN])
76   GNULIB_CLOSE=0;                AC_SUBST([GNULIB_CLOSE])
77   GNULIB_COPY_FILE_RANGE=0;      AC_SUBST([GNULIB_COPY_FILE_RANGE])
78   GNULIB_DUP=0;                  AC_SUBST([GNULIB_DUP])
79   GNULIB_DUP2=0;                 AC_SUBST([GNULIB_DUP2])
80   GNULIB_DUP3=0;                 AC_SUBST([GNULIB_DUP3])
81   GNULIB_ENVIRON=0;              AC_SUBST([GNULIB_ENVIRON])
82   GNULIB_EUIDACCESS=0;           AC_SUBST([GNULIB_EUIDACCESS])
83   GNULIB_EXECL=0;                AC_SUBST([GNULIB_EXECL])
84   GNULIB_EXECLE=0;               AC_SUBST([GNULIB_EXECLE])
85   GNULIB_EXECLP=0;               AC_SUBST([GNULIB_EXECLP])
86   GNULIB_EXECV=0;                AC_SUBST([GNULIB_EXECV])
87   GNULIB_EXECVE=0;               AC_SUBST([GNULIB_EXECVE])
88   GNULIB_EXECVP=0;               AC_SUBST([GNULIB_EXECVP])
89   GNULIB_EXECVPE=0;              AC_SUBST([GNULIB_EXECVPE])
90   GNULIB_FACCESSAT=0;            AC_SUBST([GNULIB_FACCESSAT])
91   GNULIB_FCHDIR=0;               AC_SUBST([GNULIB_FCHDIR])
92   GNULIB_FCHOWNAT=0;             AC_SUBST([GNULIB_FCHOWNAT])
93   GNULIB_FDATASYNC=0;            AC_SUBST([GNULIB_FDATASYNC])
94   GNULIB_FSYNC=0;                AC_SUBST([GNULIB_FSYNC])
95   GNULIB_FTRUNCATE=0;            AC_SUBST([GNULIB_FTRUNCATE])
96   GNULIB_GETCWD=0;               AC_SUBST([GNULIB_GETCWD])
97   GNULIB_GETDOMAINNAME=0;        AC_SUBST([GNULIB_GETDOMAINNAME])
98   GNULIB_GETDTABLESIZE=0;        AC_SUBST([GNULIB_GETDTABLESIZE])
99   GNULIB_GETENTROPY=0;           AC_SUBST([GNULIB_GETENTROPY])
100   GNULIB_GETGROUPS=0;            AC_SUBST([GNULIB_GETGROUPS])
101   GNULIB_GETHOSTNAME=0;          AC_SUBST([GNULIB_GETHOSTNAME])
102   GNULIB_GETLOGIN=0;             AC_SUBST([GNULIB_GETLOGIN])
103   GNULIB_GETLOGIN_R=0;           AC_SUBST([GNULIB_GETLOGIN_R])
104   GNULIB_GETOPT_POSIX=0;         AC_SUBST([GNULIB_GETOPT_POSIX])
105   GNULIB_GETPAGESIZE=0;          AC_SUBST([GNULIB_GETPAGESIZE])
106   GNULIB_GETPASS=0;              AC_SUBST([GNULIB_GETPASS])
107   GNULIB_GETUSERSHELL=0;         AC_SUBST([GNULIB_GETUSERSHELL])
108   GNULIB_GROUP_MEMBER=0;         AC_SUBST([GNULIB_GROUP_MEMBER])
109   GNULIB_ISATTY=0;               AC_SUBST([GNULIB_ISATTY])
110   GNULIB_LCHOWN=0;               AC_SUBST([GNULIB_LCHOWN])
111   GNULIB_LINK=0;                 AC_SUBST([GNULIB_LINK])
112   GNULIB_LINKAT=0;               AC_SUBST([GNULIB_LINKAT])
113   GNULIB_LSEEK=0;                AC_SUBST([GNULIB_LSEEK])
114   GNULIB_PIPE=0;                 AC_SUBST([GNULIB_PIPE])
115   GNULIB_PIPE2=0;                AC_SUBST([GNULIB_PIPE2])
116   GNULIB_PREAD=0;                AC_SUBST([GNULIB_PREAD])
117   GNULIB_PWRITE=0;               AC_SUBST([GNULIB_PWRITE])
118   GNULIB_READ=0;                 AC_SUBST([GNULIB_READ])
119   GNULIB_READLINK=0;             AC_SUBST([GNULIB_READLINK])
120   GNULIB_READLINKAT=0;           AC_SUBST([GNULIB_READLINKAT])
121   GNULIB_RMDIR=0;                AC_SUBST([GNULIB_RMDIR])
122   GNULIB_SETHOSTNAME=0;          AC_SUBST([GNULIB_SETHOSTNAME])
123   GNULIB_SLEEP=0;                AC_SUBST([GNULIB_SLEEP])
124   GNULIB_SYMLINK=0;              AC_SUBST([GNULIB_SYMLINK])
125   GNULIB_SYMLINKAT=0;            AC_SUBST([GNULIB_SYMLINKAT])
126   GNULIB_TRUNCATE=0;             AC_SUBST([GNULIB_TRUNCATE])
127   GNULIB_TTYNAME_R=0;            AC_SUBST([GNULIB_TTYNAME_R])
128   GNULIB_UNISTD_H_NONBLOCKING=0; AC_SUBST([GNULIB_UNISTD_H_NONBLOCKING])
129   GNULIB_UNISTD_H_SIGPIPE=0;     AC_SUBST([GNULIB_UNISTD_H_SIGPIPE])
130   GNULIB_UNLINK=0;               AC_SUBST([GNULIB_UNLINK])
131   GNULIB_UNLINKAT=0;             AC_SUBST([GNULIB_UNLINKAT])
132   GNULIB_USLEEP=0;               AC_SUBST([GNULIB_USLEEP])
133   GNULIB_WRITE=0;                AC_SUBST([GNULIB_WRITE])
134   dnl Support Microsoft deprecated alias function names by default.
135   GNULIB_MDA_ACCESS=1;           AC_SUBST([GNULIB_MDA_ACCESS])
136   GNULIB_MDA_CHDIR=1;            AC_SUBST([GNULIB_MDA_CHDIR])
137   GNULIB_MDA_CLOSE=1;            AC_SUBST([GNULIB_MDA_CLOSE])
138   GNULIB_MDA_DUP=1;              AC_SUBST([GNULIB_MDA_DUP])
139   GNULIB_MDA_DUP2=1;             AC_SUBST([GNULIB_MDA_DUP2])
140   GNULIB_MDA_EXECL=1;            AC_SUBST([GNULIB_MDA_EXECL])
141   GNULIB_MDA_EXECLE=1;           AC_SUBST([GNULIB_MDA_EXECLE])
142   GNULIB_MDA_EXECLP=1;           AC_SUBST([GNULIB_MDA_EXECLP])
143   GNULIB_MDA_EXECV=1;            AC_SUBST([GNULIB_MDA_EXECV])
144   GNULIB_MDA_EXECVE=1;           AC_SUBST([GNULIB_MDA_EXECVE])
145   GNULIB_MDA_EXECVP=1;           AC_SUBST([GNULIB_MDA_EXECVP])
146   GNULIB_MDA_EXECVPE=1;          AC_SUBST([GNULIB_MDA_EXECVPE])
147   GNULIB_MDA_GETCWD=1;           AC_SUBST([GNULIB_MDA_GETCWD])
148   GNULIB_MDA_GETPID=1;           AC_SUBST([GNULIB_MDA_GETPID])
149   GNULIB_MDA_ISATTY=1;           AC_SUBST([GNULIB_MDA_ISATTY])
150   GNULIB_MDA_LSEEK=1;            AC_SUBST([GNULIB_MDA_LSEEK])
151   GNULIB_MDA_READ=1;             AC_SUBST([GNULIB_MDA_READ])
152   GNULIB_MDA_RMDIR=1;            AC_SUBST([GNULIB_MDA_RMDIR])
153   GNULIB_MDA_SWAB=1;             AC_SUBST([GNULIB_MDA_SWAB])
154   GNULIB_MDA_UNLINK=1;           AC_SUBST([GNULIB_MDA_UNLINK])
155   GNULIB_MDA_WRITE=1;            AC_SUBST([GNULIB_MDA_WRITE])
156   dnl Assume proper GNU behavior unless another module says otherwise.
157   HAVE_CHOWN=1;           AC_SUBST([HAVE_CHOWN])
158   HAVE_COPY_FILE_RANGE=1; AC_SUBST([HAVE_COPY_FILE_RANGE])
159   HAVE_DUP3=1;            AC_SUBST([HAVE_DUP3])
160   HAVE_EUIDACCESS=1;      AC_SUBST([HAVE_EUIDACCESS])
161   HAVE_EXECVPE=1;         AC_SUBST([HAVE_EXECVPE])
162   HAVE_FACCESSAT=1;       AC_SUBST([HAVE_FACCESSAT])
163   HAVE_FCHDIR=1;          AC_SUBST([HAVE_FCHDIR])
164   HAVE_FCHOWNAT=1;        AC_SUBST([HAVE_FCHOWNAT])
165   HAVE_FDATASYNC=1;       AC_SUBST([HAVE_FDATASYNC])
166   HAVE_FSYNC=1;           AC_SUBST([HAVE_FSYNC])
167   HAVE_FTRUNCATE=1;       AC_SUBST([HAVE_FTRUNCATE])
168   HAVE_GETDTABLESIZE=1;   AC_SUBST([HAVE_GETDTABLESIZE])
169   HAVE_GETENTROPY=1;      AC_SUBST([HAVE_GETENTROPY])
170   HAVE_GETGROUPS=1;       AC_SUBST([HAVE_GETGROUPS])
171   HAVE_GETHOSTNAME=1;     AC_SUBST([HAVE_GETHOSTNAME])
172   HAVE_GETLOGIN=1;        AC_SUBST([HAVE_GETLOGIN])
173   HAVE_GETPAGESIZE=1;     AC_SUBST([HAVE_GETPAGESIZE])
174   HAVE_GETPASS=1;         AC_SUBST([HAVE_GETPASS])
175   HAVE_GROUP_MEMBER=1;    AC_SUBST([HAVE_GROUP_MEMBER])
176   HAVE_LCHOWN=1;          AC_SUBST([HAVE_LCHOWN])
177   HAVE_LINK=1;            AC_SUBST([HAVE_LINK])
178   HAVE_LINKAT=1;          AC_SUBST([HAVE_LINKAT])
179   HAVE_PIPE=1;            AC_SUBST([HAVE_PIPE])
180   HAVE_PIPE2=1;           AC_SUBST([HAVE_PIPE2])
181   HAVE_PREAD=1;           AC_SUBST([HAVE_PREAD])
182   HAVE_PWRITE=1;          AC_SUBST([HAVE_PWRITE])
183   HAVE_READLINK=1;        AC_SUBST([HAVE_READLINK])
184   HAVE_READLINKAT=1;      AC_SUBST([HAVE_READLINKAT])
185   HAVE_SETHOSTNAME=1;     AC_SUBST([HAVE_SETHOSTNAME])
186   HAVE_SLEEP=1;           AC_SUBST([HAVE_SLEEP])
187   HAVE_SYMLINK=1;         AC_SUBST([HAVE_SYMLINK])
188   HAVE_SYMLINKAT=1;       AC_SUBST([HAVE_SYMLINKAT])
189   HAVE_UNLINKAT=1;        AC_SUBST([HAVE_UNLINKAT])
190   HAVE_USLEEP=1;          AC_SUBST([HAVE_USLEEP])
191   HAVE_DECL_ENVIRON=1;    AC_SUBST([HAVE_DECL_ENVIRON])
192   HAVE_DECL_EXECVPE=1;    AC_SUBST([HAVE_DECL_EXECVPE])
193   HAVE_DECL_FCHDIR=1;     AC_SUBST([HAVE_DECL_FCHDIR])
194   HAVE_DECL_FDATASYNC=1;  AC_SUBST([HAVE_DECL_FDATASYNC])
195   HAVE_DECL_GETDOMAINNAME=1; AC_SUBST([HAVE_DECL_GETDOMAINNAME])
196   HAVE_DECL_GETLOGIN=1;   AC_SUBST([HAVE_DECL_GETLOGIN])
197   HAVE_DECL_GETLOGIN_R=1; AC_SUBST([HAVE_DECL_GETLOGIN_R])
198   HAVE_DECL_GETPAGESIZE=1; AC_SUBST([HAVE_DECL_GETPAGESIZE])
199   HAVE_DECL_GETUSERSHELL=1; AC_SUBST([HAVE_DECL_GETUSERSHELL])
200   HAVE_DECL_SETHOSTNAME=1; AC_SUBST([HAVE_DECL_SETHOSTNAME])
201   HAVE_DECL_TRUNCATE=1;   AC_SUBST([HAVE_DECL_TRUNCATE])
202   HAVE_DECL_TTYNAME_R=1;  AC_SUBST([HAVE_DECL_TTYNAME_R])
203   HAVE_OS_H=0;            AC_SUBST([HAVE_OS_H])
204   HAVE_SYS_PARAM_H=0;     AC_SUBST([HAVE_SYS_PARAM_H])
205   REPLACE_ACCESS=0;       AC_SUBST([REPLACE_ACCESS])
206   REPLACE_CHOWN=0;        AC_SUBST([REPLACE_CHOWN])
207   REPLACE_CLOSE=0;        AC_SUBST([REPLACE_CLOSE])
208   REPLACE_DUP=0;          AC_SUBST([REPLACE_DUP])
209   REPLACE_DUP2=0;         AC_SUBST([REPLACE_DUP2])
210   REPLACE_EXECL=0;        AC_SUBST([REPLACE_EXECL])
211   REPLACE_EXECLE=0;       AC_SUBST([REPLACE_EXECLE])
212   REPLACE_EXECLP=0;       AC_SUBST([REPLACE_EXECLP])
213   REPLACE_EXECV=0;        AC_SUBST([REPLACE_EXECV])
214   REPLACE_EXECVE=0;       AC_SUBST([REPLACE_EXECVE])
215   REPLACE_EXECVP=0;       AC_SUBST([REPLACE_EXECVP])
216   REPLACE_EXECVPE=0;      AC_SUBST([REPLACE_EXECVPE])
217   REPLACE_FACCESSAT=0;    AC_SUBST([REPLACE_FACCESSAT])
218   REPLACE_FCHOWNAT=0;     AC_SUBST([REPLACE_FCHOWNAT])
219   REPLACE_FTRUNCATE=0;    AC_SUBST([REPLACE_FTRUNCATE])
220   REPLACE_GETCWD=0;       AC_SUBST([REPLACE_GETCWD])
221   REPLACE_GETDOMAINNAME=0; AC_SUBST([REPLACE_GETDOMAINNAME])
222   REPLACE_GETDTABLESIZE=0; AC_SUBST([REPLACE_GETDTABLESIZE])
223   REPLACE_GETLOGIN_R=0;   AC_SUBST([REPLACE_GETLOGIN_R])
224   REPLACE_GETGROUPS=0;    AC_SUBST([REPLACE_GETGROUPS])
225   REPLACE_GETPAGESIZE=0;  AC_SUBST([REPLACE_GETPAGESIZE])
226   REPLACE_GETPASS=0;      AC_SUBST([REPLACE_GETPASS])
227   REPLACE_ISATTY=0;       AC_SUBST([REPLACE_ISATTY])
228   REPLACE_LCHOWN=0;       AC_SUBST([REPLACE_LCHOWN])
229   REPLACE_LINK=0;         AC_SUBST([REPLACE_LINK])
230   REPLACE_LINKAT=0;       AC_SUBST([REPLACE_LINKAT])
231   REPLACE_LSEEK=0;        AC_SUBST([REPLACE_LSEEK])
232   REPLACE_PREAD=0;        AC_SUBST([REPLACE_PREAD])
233   REPLACE_PWRITE=0;       AC_SUBST([REPLACE_PWRITE])
234   REPLACE_READ=0;         AC_SUBST([REPLACE_READ])
235   REPLACE_READLINK=0;     AC_SUBST([REPLACE_READLINK])
236   REPLACE_READLINKAT=0;   AC_SUBST([REPLACE_READLINKAT])
237   REPLACE_RMDIR=0;        AC_SUBST([REPLACE_RMDIR])
238   REPLACE_SLEEP=0;        AC_SUBST([REPLACE_SLEEP])
239   REPLACE_SYMLINK=0;      AC_SUBST([REPLACE_SYMLINK])
240   REPLACE_SYMLINKAT=0;    AC_SUBST([REPLACE_SYMLINKAT])
241   REPLACE_TRUNCATE=0;     AC_SUBST([REPLACE_TRUNCATE])
242   REPLACE_TTYNAME_R=0;    AC_SUBST([REPLACE_TTYNAME_R])
243   REPLACE_UNLINK=0;       AC_SUBST([REPLACE_UNLINK])
244   REPLACE_UNLINKAT=0;     AC_SUBST([REPLACE_UNLINKAT])
245   REPLACE_USLEEP=0;       AC_SUBST([REPLACE_USLEEP])
246   REPLACE_WRITE=0;        AC_SUBST([REPLACE_WRITE])
247   UNISTD_H_HAVE_SYS_RANDOM_H=0; AC_SUBST([UNISTD_H_HAVE_SYS_RANDOM_H])
248   UNISTD_H_HAVE_WINSOCK2_H=0; AC_SUBST([UNISTD_H_HAVE_WINSOCK2_H])
249   UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS=0;
250                            AC_SUBST([UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS])