Imported Upstream version 3.8
[platform/upstream/diffutils.git] / m4 / unistd_h.m4
1 # unistd_h.m4 serial 89
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_GETOPT])
137     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNISTD_H_NONBLOCKING])
138     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNISTD_H_SIGPIPE])
139     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNLINK])
140     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNLINKAT])
141     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_USLEEP])
142     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WRITE])
143     dnl Support Microsoft deprecated alias function names by default.
144     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_ACCESS], [1])
145     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_CHDIR], [1])
146     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_CLOSE], [1])
147     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_DUP], [1])
148     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_DUP2], [1])
149     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECL], [1])
150     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECLE], [1])
151     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECLP], [1])
152     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECV], [1])
153     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECVE], [1])
154     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECVP], [1])
155     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECVPE], [1])
156     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_GETCWD], [1])
157     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_GETPID], [1])
158     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_ISATTY], [1])
159     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_LSEEK], [1])
160     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_READ], [1])
161     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_RMDIR], [1])
162     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_SWAB], [1])
163     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_UNLINK], [1])
164     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_WRITE], [1])
165   ])
166   m4_require(GL_MODULE_INDICATOR_PREFIX[_UNISTD_H_MODULE_INDICATOR_DEFAULTS])
167   AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
168 ])
169
170 AC_DEFUN([gl_UNISTD_H_DEFAULTS],
171 [
172   dnl Assume proper GNU behavior unless another module says otherwise.
173   HAVE_CHOWN=1;           AC_SUBST([HAVE_CHOWN])
174   HAVE_COPY_FILE_RANGE=1; AC_SUBST([HAVE_COPY_FILE_RANGE])
175   HAVE_DUP3=1;            AC_SUBST([HAVE_DUP3])
176   HAVE_EUIDACCESS=1;      AC_SUBST([HAVE_EUIDACCESS])
177   HAVE_EXECVPE=1;         AC_SUBST([HAVE_EXECVPE])
178   HAVE_FACCESSAT=1;       AC_SUBST([HAVE_FACCESSAT])
179   HAVE_FCHDIR=1;          AC_SUBST([HAVE_FCHDIR])
180   HAVE_FCHOWNAT=1;        AC_SUBST([HAVE_FCHOWNAT])
181   HAVE_FDATASYNC=1;       AC_SUBST([HAVE_FDATASYNC])
182   HAVE_FSYNC=1;           AC_SUBST([HAVE_FSYNC])
183   HAVE_FTRUNCATE=1;       AC_SUBST([HAVE_FTRUNCATE])
184   HAVE_GETDTABLESIZE=1;   AC_SUBST([HAVE_GETDTABLESIZE])
185   HAVE_GETENTROPY=1;      AC_SUBST([HAVE_GETENTROPY])
186   HAVE_GETGROUPS=1;       AC_SUBST([HAVE_GETGROUPS])
187   HAVE_GETHOSTNAME=1;     AC_SUBST([HAVE_GETHOSTNAME])
188   HAVE_GETLOGIN=1;        AC_SUBST([HAVE_GETLOGIN])
189   HAVE_GETPAGESIZE=1;     AC_SUBST([HAVE_GETPAGESIZE])
190   HAVE_GETPASS=1;         AC_SUBST([HAVE_GETPASS])
191   HAVE_GROUP_MEMBER=1;    AC_SUBST([HAVE_GROUP_MEMBER])
192   HAVE_LCHOWN=1;          AC_SUBST([HAVE_LCHOWN])
193   HAVE_LINK=1;            AC_SUBST([HAVE_LINK])
194   HAVE_LINKAT=1;          AC_SUBST([HAVE_LINKAT])
195   HAVE_PIPE=1;            AC_SUBST([HAVE_PIPE])
196   HAVE_PIPE2=1;           AC_SUBST([HAVE_PIPE2])
197   HAVE_PREAD=1;           AC_SUBST([HAVE_PREAD])
198   HAVE_PWRITE=1;          AC_SUBST([HAVE_PWRITE])
199   HAVE_READLINK=1;        AC_SUBST([HAVE_READLINK])
200   HAVE_READLINKAT=1;      AC_SUBST([HAVE_READLINKAT])
201   HAVE_SETHOSTNAME=1;     AC_SUBST([HAVE_SETHOSTNAME])
202   HAVE_SLEEP=1;           AC_SUBST([HAVE_SLEEP])
203   HAVE_SYMLINK=1;         AC_SUBST([HAVE_SYMLINK])
204   HAVE_SYMLINKAT=1;       AC_SUBST([HAVE_SYMLINKAT])
205   HAVE_UNLINKAT=1;        AC_SUBST([HAVE_UNLINKAT])
206   HAVE_USLEEP=1;          AC_SUBST([HAVE_USLEEP])
207   HAVE_DECL_ENVIRON=1;    AC_SUBST([HAVE_DECL_ENVIRON])
208   HAVE_DECL_EXECVPE=1;    AC_SUBST([HAVE_DECL_EXECVPE])
209   HAVE_DECL_FCHDIR=1;     AC_SUBST([HAVE_DECL_FCHDIR])
210   HAVE_DECL_FDATASYNC=1;  AC_SUBST([HAVE_DECL_FDATASYNC])
211   HAVE_DECL_GETDOMAINNAME=1; AC_SUBST([HAVE_DECL_GETDOMAINNAME])
212   HAVE_DECL_GETLOGIN=1;   AC_SUBST([HAVE_DECL_GETLOGIN])
213   HAVE_DECL_GETLOGIN_R=1; AC_SUBST([HAVE_DECL_GETLOGIN_R])
214   HAVE_DECL_GETPAGESIZE=1; AC_SUBST([HAVE_DECL_GETPAGESIZE])
215   HAVE_DECL_GETUSERSHELL=1; AC_SUBST([HAVE_DECL_GETUSERSHELL])
216   HAVE_DECL_SETHOSTNAME=1; AC_SUBST([HAVE_DECL_SETHOSTNAME])
217   HAVE_DECL_TRUNCATE=1;   AC_SUBST([HAVE_DECL_TRUNCATE])
218   HAVE_DECL_TTYNAME_R=1;  AC_SUBST([HAVE_DECL_TTYNAME_R])
219   HAVE_OS_H=0;            AC_SUBST([HAVE_OS_H])
220   HAVE_SYS_PARAM_H=0;     AC_SUBST([HAVE_SYS_PARAM_H])
221   REPLACE_ACCESS=0;       AC_SUBST([REPLACE_ACCESS])
222   REPLACE_CHOWN=0;        AC_SUBST([REPLACE_CHOWN])
223   REPLACE_CLOSE=0;        AC_SUBST([REPLACE_CLOSE])
224   REPLACE_DUP=0;          AC_SUBST([REPLACE_DUP])
225   REPLACE_DUP2=0;         AC_SUBST([REPLACE_DUP2])
226   REPLACE_EXECL=0;        AC_SUBST([REPLACE_EXECL])
227   REPLACE_EXECLE=0;       AC_SUBST([REPLACE_EXECLE])
228   REPLACE_EXECLP=0;       AC_SUBST([REPLACE_EXECLP])
229   REPLACE_EXECV=0;        AC_SUBST([REPLACE_EXECV])
230   REPLACE_EXECVE=0;       AC_SUBST([REPLACE_EXECVE])
231   REPLACE_EXECVP=0;       AC_SUBST([REPLACE_EXECVP])
232   REPLACE_EXECVPE=0;      AC_SUBST([REPLACE_EXECVPE])
233   REPLACE_FACCESSAT=0;    AC_SUBST([REPLACE_FACCESSAT])
234   REPLACE_FCHOWNAT=0;     AC_SUBST([REPLACE_FCHOWNAT])
235   REPLACE_FTRUNCATE=0;    AC_SUBST([REPLACE_FTRUNCATE])
236   REPLACE_GETCWD=0;       AC_SUBST([REPLACE_GETCWD])
237   REPLACE_GETDOMAINNAME=0; AC_SUBST([REPLACE_GETDOMAINNAME])
238   REPLACE_GETDTABLESIZE=0; AC_SUBST([REPLACE_GETDTABLESIZE])
239   REPLACE_GETLOGIN_R=0;   AC_SUBST([REPLACE_GETLOGIN_R])
240   REPLACE_GETGROUPS=0;    AC_SUBST([REPLACE_GETGROUPS])
241   REPLACE_GETPAGESIZE=0;  AC_SUBST([REPLACE_GETPAGESIZE])
242   REPLACE_GETPASS=0;      AC_SUBST([REPLACE_GETPASS])
243   REPLACE_ISATTY=0;       AC_SUBST([REPLACE_ISATTY])
244   REPLACE_LCHOWN=0;       AC_SUBST([REPLACE_LCHOWN])
245   REPLACE_LINK=0;         AC_SUBST([REPLACE_LINK])
246   REPLACE_LINKAT=0;       AC_SUBST([REPLACE_LINKAT])
247   REPLACE_LSEEK=0;        AC_SUBST([REPLACE_LSEEK])
248   REPLACE_PREAD=0;        AC_SUBST([REPLACE_PREAD])
249   REPLACE_PWRITE=0;       AC_SUBST([REPLACE_PWRITE])
250   REPLACE_READ=0;         AC_SUBST([REPLACE_READ])
251   REPLACE_READLINK=0;     AC_SUBST([REPLACE_READLINK])
252   REPLACE_READLINKAT=0;   AC_SUBST([REPLACE_READLINKAT])
253   REPLACE_RMDIR=0;        AC_SUBST([REPLACE_RMDIR])
254   REPLACE_SLEEP=0;        AC_SUBST([REPLACE_SLEEP])
255   REPLACE_SYMLINK=0;      AC_SUBST([REPLACE_SYMLINK])
256   REPLACE_SYMLINKAT=0;    AC_SUBST([REPLACE_SYMLINKAT])
257   REPLACE_TRUNCATE=0;     AC_SUBST([REPLACE_TRUNCATE])
258   REPLACE_TTYNAME_R=0;    AC_SUBST([REPLACE_TTYNAME_R])
259   REPLACE_UNLINK=0;       AC_SUBST([REPLACE_UNLINK])
260   REPLACE_UNLINKAT=0;     AC_SUBST([REPLACE_UNLINKAT])
261   REPLACE_USLEEP=0;       AC_SUBST([REPLACE_USLEEP])
262   REPLACE_WRITE=0;        AC_SUBST([REPLACE_WRITE])
263   UNISTD_H_HAVE_SYS_RANDOM_H=0; AC_SUBST([UNISTD_H_HAVE_SYS_RANDOM_H])
264   UNISTD_H_HAVE_WINSOCK2_H=0; AC_SUBST([UNISTD_H_HAVE_WINSOCK2_H])
265   UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS=0;
266                            AC_SUBST([UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS])
267 ])