Bump to m4 1.4.19
[platform/upstream/m4.git] / m4 / unistd_h.m4
1 # unistd_h.m4 serial 88
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.
6
7 dnl Written by Simon Josefsson, Bruno Haible.
8
9 AC_DEFUN_ONCE([gl_UNISTD_H],
10 [
11   dnl Ensure to expand the default settings once only, before all statements
12   dnl that occur in other macros.
13   AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
14
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])
22
23   dnl Ensure the type pid_t gets defined.
24   AC_REQUIRE([AC_TYPE_PID_T])
25
26   dnl Determine WINDOWS_64_BIT_OFF_T.
27   AC_REQUIRE([gl_TYPE_OFF_T])
28
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])
53
54   AC_REQUIRE([AC_C_RESTRICT])
55
56   AC_CHECK_DECLS_ONCE([execvpe])
57   if test $ac_cv_have_decl_execvpe = no; then
58     HAVE_DECL_EXECVPE=0
59   fi
60 ])
61
62 # gl_UNISTD_MODULE_INDICATOR([modulename])
63 # sets the shell variable that indicates the presence of the given module
64 # to a C preprocessor expression that will evaluate to 1.
65 # This macro invocation must not occur in macros that are AC_REQUIREd.
66 AC_DEFUN([gl_UNISTD_MODULE_INDICATOR],
67 [
68   dnl Ensure to expand the default settings once only.
69   gl_UNISTD_H_REQUIRE_DEFAULTS
70   gl_MODULE_INDICATOR_SET_VARIABLE([$1])
71   dnl Define it also as a C macro, for the benefit of the unit tests.
72   gl_MODULE_INDICATOR_FOR_TESTS([$1])
73 ])
74
75 # Initializes the default values for AC_SUBSTed shell variables.
76 # This macro must not be AC_REQUIREd.  It must only be invoked, and only
77 # outside of macros or in macros that are not AC_REQUIREd.
78 AC_DEFUN([gl_UNISTD_H_REQUIRE_DEFAULTS],
79 [
80   m4_defun(GL_MODULE_INDICATOR_PREFIX[_UNISTD_H_MODULE_INDICATOR_DEFAULTS], [
81     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ACCESS])
82     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CHDIR])
83     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CHOWN])
84     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CLOSE])
85     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_COPY_FILE_RANGE])
86     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_DUP])
87     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_DUP2])
88     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_DUP3])
89     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ENVIRON])
90     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EUIDACCESS])
91     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXECL])
92     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXECLE])
93     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXECLP])
94     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXECV])
95     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXECVE])
96     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXECVP])
97     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXECVPE])
98     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FACCESSAT])
99     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FCHDIR])
100     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FCHOWNAT])
101     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FDATASYNC])
102     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FSYNC])
103     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FTRUNCATE])
104     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETCWD])
105     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETDOMAINNAME])
106     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETDTABLESIZE])
107     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETENTROPY])
108     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETGROUPS])
109     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETHOSTNAME])
110     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETLOGIN])
111     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETLOGIN_R])
112     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETOPT_POSIX])
113     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETPAGESIZE])
114     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETPASS])
115     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETUSERSHELL])
116     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GROUP_MEMBER])
117     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISATTY])
118     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LCHOWN])
119     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LINK])
120     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LINKAT])
121     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LSEEK])
122     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PIPE])
123     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PIPE2])
124     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PREAD])
125     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PWRITE])
126     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_READ])
127     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_READLINK])
128     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_READLINKAT])
129     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RMDIR])
130     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SETHOSTNAME])
131     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SLEEP])
132     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SYMLINK])
133     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SYMLINKAT])
134     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TRUNCATE])
135     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TTYNAME_R])
136     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNISTD_H_NONBLOCKING])
137     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNISTD_H_SIGPIPE])
138     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNLINK])
139     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNLINKAT])
140     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_USLEEP])
141     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WRITE])
142     dnl Support Microsoft deprecated alias function names by default.
143     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_ACCESS], [1])
144     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_CHDIR], [1])
145     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_CLOSE], [1])
146     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_DUP], [1])
147     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_DUP2], [1])
148     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECL], [1])
149     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECLE], [1])
150     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECLP], [1])
151     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECV], [1])
152     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECVE], [1])
153     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECVP], [1])
154     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECVPE], [1])
155     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_GETCWD], [1])
156     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_GETPID], [1])
157     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_ISATTY], [1])
158     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_LSEEK], [1])
159     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_READ], [1])
160     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_RMDIR], [1])
161     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_SWAB], [1])
162     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_UNLINK], [1])
163     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_WRITE], [1])
164   ])
165   m4_require(GL_MODULE_INDICATOR_PREFIX[_UNISTD_H_MODULE_INDICATOR_DEFAULTS])
166   AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
167 ])
168
169 AC_DEFUN([gl_UNISTD_H_DEFAULTS],
170 [
171   dnl Assume proper GNU behavior unless another module says otherwise.
172   HAVE_CHOWN=1;           AC_SUBST([HAVE_CHOWN])
173   HAVE_COPY_FILE_RANGE=1; AC_SUBST([HAVE_COPY_FILE_RANGE])
174   HAVE_DUP3=1;            AC_SUBST([HAVE_DUP3])
175   HAVE_EUIDACCESS=1;      AC_SUBST([HAVE_EUIDACCESS])
176   HAVE_EXECVPE=1;         AC_SUBST([HAVE_EXECVPE])
177   HAVE_FACCESSAT=1;       AC_SUBST([HAVE_FACCESSAT])
178   HAVE_FCHDIR=1;          AC_SUBST([HAVE_FCHDIR])
179   HAVE_FCHOWNAT=1;        AC_SUBST([HAVE_FCHOWNAT])
180   HAVE_FDATASYNC=1;       AC_SUBST([HAVE_FDATASYNC])
181   HAVE_FSYNC=1;           AC_SUBST([HAVE_FSYNC])
182   HAVE_FTRUNCATE=1;       AC_SUBST([HAVE_FTRUNCATE])
183   HAVE_GETDTABLESIZE=1;   AC_SUBST([HAVE_GETDTABLESIZE])
184   HAVE_GETENTROPY=1;      AC_SUBST([HAVE_GETENTROPY])
185   HAVE_GETGROUPS=1;       AC_SUBST([HAVE_GETGROUPS])
186   HAVE_GETHOSTNAME=1;     AC_SUBST([HAVE_GETHOSTNAME])
187   HAVE_GETLOGIN=1;        AC_SUBST([HAVE_GETLOGIN])
188   HAVE_GETPAGESIZE=1;     AC_SUBST([HAVE_GETPAGESIZE])
189   HAVE_GETPASS=1;         AC_SUBST([HAVE_GETPASS])
190   HAVE_GROUP_MEMBER=1;    AC_SUBST([HAVE_GROUP_MEMBER])
191   HAVE_LCHOWN=1;          AC_SUBST([HAVE_LCHOWN])
192   HAVE_LINK=1;            AC_SUBST([HAVE_LINK])
193   HAVE_LINKAT=1;          AC_SUBST([HAVE_LINKAT])
194   HAVE_PIPE=1;            AC_SUBST([HAVE_PIPE])
195   HAVE_PIPE2=1;           AC_SUBST([HAVE_PIPE2])
196   HAVE_PREAD=1;           AC_SUBST([HAVE_PREAD])
197   HAVE_PWRITE=1;          AC_SUBST([HAVE_PWRITE])
198   HAVE_READLINK=1;        AC_SUBST([HAVE_READLINK])
199   HAVE_READLINKAT=1;      AC_SUBST([HAVE_READLINKAT])
200   HAVE_SETHOSTNAME=1;     AC_SUBST([HAVE_SETHOSTNAME])
201   HAVE_SLEEP=1;           AC_SUBST([HAVE_SLEEP])
202   HAVE_SYMLINK=1;         AC_SUBST([HAVE_SYMLINK])
203   HAVE_SYMLINKAT=1;       AC_SUBST([HAVE_SYMLINKAT])
204   HAVE_UNLINKAT=1;        AC_SUBST([HAVE_UNLINKAT])
205   HAVE_USLEEP=1;          AC_SUBST([HAVE_USLEEP])
206   HAVE_DECL_ENVIRON=1;    AC_SUBST([HAVE_DECL_ENVIRON])
207   HAVE_DECL_EXECVPE=1;    AC_SUBST([HAVE_DECL_EXECVPE])
208   HAVE_DECL_FCHDIR=1;     AC_SUBST([HAVE_DECL_FCHDIR])
209   HAVE_DECL_FDATASYNC=1;  AC_SUBST([HAVE_DECL_FDATASYNC])
210   HAVE_DECL_GETDOMAINNAME=1; AC_SUBST([HAVE_DECL_GETDOMAINNAME])
211   HAVE_DECL_GETLOGIN=1;   AC_SUBST([HAVE_DECL_GETLOGIN])
212   HAVE_DECL_GETLOGIN_R=1; AC_SUBST([HAVE_DECL_GETLOGIN_R])
213   HAVE_DECL_GETPAGESIZE=1; AC_SUBST([HAVE_DECL_GETPAGESIZE])
214   HAVE_DECL_GETUSERSHELL=1; AC_SUBST([HAVE_DECL_GETUSERSHELL])
215   HAVE_DECL_SETHOSTNAME=1; AC_SUBST([HAVE_DECL_SETHOSTNAME])
216   HAVE_DECL_TRUNCATE=1;   AC_SUBST([HAVE_DECL_TRUNCATE])
217   HAVE_DECL_TTYNAME_R=1;  AC_SUBST([HAVE_DECL_TTYNAME_R])
218   HAVE_OS_H=0;            AC_SUBST([HAVE_OS_H])
219   HAVE_SYS_PARAM_H=0;     AC_SUBST([HAVE_SYS_PARAM_H])
220   REPLACE_ACCESS=0;       AC_SUBST([REPLACE_ACCESS])
221   REPLACE_CHOWN=0;        AC_SUBST([REPLACE_CHOWN])
222   REPLACE_CLOSE=0;        AC_SUBST([REPLACE_CLOSE])
223   REPLACE_DUP=0;          AC_SUBST([REPLACE_DUP])
224   REPLACE_DUP2=0;         AC_SUBST([REPLACE_DUP2])
225   REPLACE_EXECL=0;        AC_SUBST([REPLACE_EXECL])
226   REPLACE_EXECLE=0;       AC_SUBST([REPLACE_EXECLE])
227   REPLACE_EXECLP=0;       AC_SUBST([REPLACE_EXECLP])
228   REPLACE_EXECV=0;        AC_SUBST([REPLACE_EXECV])
229   REPLACE_EXECVE=0;       AC_SUBST([REPLACE_EXECVE])
230   REPLACE_EXECVP=0;       AC_SUBST([REPLACE_EXECVP])
231   REPLACE_EXECVPE=0;      AC_SUBST([REPLACE_EXECVPE])
232   REPLACE_FACCESSAT=0;    AC_SUBST([REPLACE_FACCESSAT])
233   REPLACE_FCHOWNAT=0;     AC_SUBST([REPLACE_FCHOWNAT])
234   REPLACE_FTRUNCATE=0;    AC_SUBST([REPLACE_FTRUNCATE])
235   REPLACE_GETCWD=0;       AC_SUBST([REPLACE_GETCWD])
236   REPLACE_GETDOMAINNAME=0; AC_SUBST([REPLACE_GETDOMAINNAME])
237   REPLACE_GETDTABLESIZE=0; AC_SUBST([REPLACE_GETDTABLESIZE])
238   REPLACE_GETLOGIN_R=0;   AC_SUBST([REPLACE_GETLOGIN_R])
239   REPLACE_GETGROUPS=0;    AC_SUBST([REPLACE_GETGROUPS])
240   REPLACE_GETPAGESIZE=0;  AC_SUBST([REPLACE_GETPAGESIZE])
241   REPLACE_GETPASS=0;      AC_SUBST([REPLACE_GETPASS])
242   REPLACE_ISATTY=0;       AC_SUBST([REPLACE_ISATTY])
243   REPLACE_LCHOWN=0;       AC_SUBST([REPLACE_LCHOWN])
244   REPLACE_LINK=0;         AC_SUBST([REPLACE_LINK])
245   REPLACE_LINKAT=0;       AC_SUBST([REPLACE_LINKAT])
246   REPLACE_LSEEK=0;        AC_SUBST([REPLACE_LSEEK])
247   REPLACE_PREAD=0;        AC_SUBST([REPLACE_PREAD])
248   REPLACE_PWRITE=0;       AC_SUBST([REPLACE_PWRITE])
249   REPLACE_READ=0;         AC_SUBST([REPLACE_READ])
250   REPLACE_READLINK=0;     AC_SUBST([REPLACE_READLINK])
251   REPLACE_READLINKAT=0;   AC_SUBST([REPLACE_READLINKAT])
252   REPLACE_RMDIR=0;        AC_SUBST([REPLACE_RMDIR])
253   REPLACE_SLEEP=0;        AC_SUBST([REPLACE_SLEEP])
254   REPLACE_SYMLINK=0;      AC_SUBST([REPLACE_SYMLINK])
255   REPLACE_SYMLINKAT=0;    AC_SUBST([REPLACE_SYMLINKAT])
256   REPLACE_TRUNCATE=0;     AC_SUBST([REPLACE_TRUNCATE])
257   REPLACE_TTYNAME_R=0;    AC_SUBST([REPLACE_TTYNAME_R])
258   REPLACE_UNLINK=0;       AC_SUBST([REPLACE_UNLINK])
259   REPLACE_UNLINKAT=0;     AC_SUBST([REPLACE_UNLINKAT])
260   REPLACE_USLEEP=0;       AC_SUBST([REPLACE_USLEEP])
261   REPLACE_WRITE=0;        AC_SUBST([REPLACE_WRITE])
262   UNISTD_H_HAVE_SYS_RANDOM_H=0; AC_SUBST([UNISTD_H_HAVE_SYS_RANDOM_H])
263   UNISTD_H_HAVE_WINSOCK2_H=0; AC_SUBST([UNISTD_H_HAVE_WINSOCK2_H])
264   UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS=0;
265                            AC_SUBST([UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS])
266 ])