lisp/let-alist.el (let-alist): Evaluate `alist' only once.
[emacs.git] / m4 / stdio_h.m4
blobef0dcc12d26e62667f02369f0f41a4a2059c0855
1 # stdio_h.m4 serial 43
2 dnl Copyright (C) 2007-2014 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 AC_DEFUN([gl_STDIO_H],
9   dnl For __USE_MINGW_ANSI_STDIO
10   AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
12   AC_REQUIRE([gl_STDIO_H_DEFAULTS])
13   gl_NEXT_HEADERS([stdio.h])
15   dnl No need to create extra modules for these functions. Everyone who uses
16   dnl <stdio.h> likely needs them.
17   GNULIB_FSCANF=1
18   gl_MODULE_INDICATOR([fscanf])
19   GNULIB_SCANF=1
20   gl_MODULE_INDICATOR([scanf])
21   GNULIB_FGETC=1
22   GNULIB_GETC=1
23   GNULIB_GETCHAR=1
24   GNULIB_FGETS=1
25   GNULIB_FREAD=1
26   dnl This ifdef is necessary to avoid an error "missing file lib/stdio-read.c"
27   dnl "expected source file, required through AC_LIBSOURCES, not found". It is
28   dnl also an optimization, to avoid performing a configure check whose result
29   dnl is not used. But it does not make the test of GNULIB_STDIO_H_NONBLOCKING
30   dnl or GNULIB_NONBLOCKING redundant.
31   m4_ifdef([gl_NONBLOCKING_IO], [
32     gl_NONBLOCKING_IO
33     if test $gl_cv_have_nonblocking != yes; then
34       REPLACE_STDIO_READ_FUNCS=1
35       AC_LIBOBJ([stdio-read])
36     fi
37   ])
39   dnl No need to create extra modules for these functions. Everyone who uses
40   dnl <stdio.h> likely needs them.
41   GNULIB_FPRINTF=1
42   GNULIB_PRINTF=1
43   GNULIB_VFPRINTF=1
44   GNULIB_VPRINTF=1
45   GNULIB_FPUTC=1
46   GNULIB_PUTC=1
47   GNULIB_PUTCHAR=1
48   GNULIB_FPUTS=1
49   GNULIB_PUTS=1
50   GNULIB_FWRITE=1
51   dnl This ifdef is necessary to avoid an error "missing file lib/stdio-write.c"
52   dnl "expected source file, required through AC_LIBSOURCES, not found". It is
53   dnl also an optimization, to avoid performing a configure check whose result
54   dnl is not used. But it does not make the test of GNULIB_STDIO_H_SIGPIPE or
55   dnl GNULIB_SIGPIPE redundant.
56   m4_ifdef([gl_SIGNAL_SIGPIPE], [
57     gl_SIGNAL_SIGPIPE
58     if test $gl_cv_header_signal_h_SIGPIPE != yes; then
59       REPLACE_STDIO_WRITE_FUNCS=1
60       AC_LIBOBJ([stdio-write])
61     fi
62   ])
63   dnl This ifdef is necessary to avoid an error "missing file lib/stdio-write.c"
64   dnl "expected source file, required through AC_LIBSOURCES, not found". It is
65   dnl also an optimization, to avoid performing a configure check whose result
66   dnl is not used. But it does not make the test of GNULIB_STDIO_H_NONBLOCKING
67   dnl or GNULIB_NONBLOCKING redundant.
68   m4_ifdef([gl_NONBLOCKING_IO], [
69     gl_NONBLOCKING_IO
70     if test $gl_cv_have_nonblocking != yes; then
71       REPLACE_STDIO_WRITE_FUNCS=1
72       AC_LIBOBJ([stdio-write])
73     fi
74   ])
76   dnl Check for declarations of anything we want to poison if the
77   dnl corresponding gnulib module is not in use, and which is not
78   dnl guaranteed by both C89 and C11.
79   gl_WARN_ON_USE_PREPARE([[#include <stdio.h>
80     ]], [dprintf fpurge fseeko ftello getdelim getline gets pclose popen
81     renameat snprintf tmpfile vdprintf vsnprintf])
84 AC_DEFUN([gl_STDIO_MODULE_INDICATOR],
86   dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
87   AC_REQUIRE([gl_STDIO_H_DEFAULTS])
88   gl_MODULE_INDICATOR_SET_VARIABLE([$1])
89   dnl Define it also as a C macro, for the benefit of the unit tests.
90   gl_MODULE_INDICATOR_FOR_TESTS([$1])
93 AC_DEFUN([gl_STDIO_H_DEFAULTS],
95   GNULIB_DPRINTF=0;              AC_SUBST([GNULIB_DPRINTF])
96   GNULIB_FCLOSE=0;               AC_SUBST([GNULIB_FCLOSE])
97   GNULIB_FDOPEN=0;               AC_SUBST([GNULIB_FDOPEN])
98   GNULIB_FFLUSH=0;               AC_SUBST([GNULIB_FFLUSH])
99   GNULIB_FGETC=0;                AC_SUBST([GNULIB_FGETC])
100   GNULIB_FGETS=0;                AC_SUBST([GNULIB_FGETS])
101   GNULIB_FOPEN=0;                AC_SUBST([GNULIB_FOPEN])
102   GNULIB_FPRINTF=0;              AC_SUBST([GNULIB_FPRINTF])
103   GNULIB_FPRINTF_POSIX=0;        AC_SUBST([GNULIB_FPRINTF_POSIX])
104   GNULIB_FPURGE=0;               AC_SUBST([GNULIB_FPURGE])
105   GNULIB_FPUTC=0;                AC_SUBST([GNULIB_FPUTC])
106   GNULIB_FPUTS=0;                AC_SUBST([GNULIB_FPUTS])
107   GNULIB_FREAD=0;                AC_SUBST([GNULIB_FREAD])
108   GNULIB_FREOPEN=0;              AC_SUBST([GNULIB_FREOPEN])
109   GNULIB_FSCANF=0;               AC_SUBST([GNULIB_FSCANF])
110   GNULIB_FSEEK=0;                AC_SUBST([GNULIB_FSEEK])
111   GNULIB_FSEEKO=0;               AC_SUBST([GNULIB_FSEEKO])
112   GNULIB_FTELL=0;                AC_SUBST([GNULIB_FTELL])
113   GNULIB_FTELLO=0;               AC_SUBST([GNULIB_FTELLO])
114   GNULIB_FWRITE=0;               AC_SUBST([GNULIB_FWRITE])
115   GNULIB_GETC=0;                 AC_SUBST([GNULIB_GETC])
116   GNULIB_GETCHAR=0;              AC_SUBST([GNULIB_GETCHAR])
117   GNULIB_GETDELIM=0;             AC_SUBST([GNULIB_GETDELIM])
118   GNULIB_GETLINE=0;              AC_SUBST([GNULIB_GETLINE])
119   GNULIB_OBSTACK_PRINTF=0;       AC_SUBST([GNULIB_OBSTACK_PRINTF])
120   GNULIB_OBSTACK_PRINTF_POSIX=0; AC_SUBST([GNULIB_OBSTACK_PRINTF_POSIX])
121   GNULIB_PCLOSE=0;               AC_SUBST([GNULIB_PCLOSE])
122   GNULIB_PERROR=0;               AC_SUBST([GNULIB_PERROR])
123   GNULIB_POPEN=0;                AC_SUBST([GNULIB_POPEN])
124   GNULIB_PRINTF=0;               AC_SUBST([GNULIB_PRINTF])
125   GNULIB_PRINTF_POSIX=0;         AC_SUBST([GNULIB_PRINTF_POSIX])
126   GNULIB_PUTC=0;                 AC_SUBST([GNULIB_PUTC])
127   GNULIB_PUTCHAR=0;              AC_SUBST([GNULIB_PUTCHAR])
128   GNULIB_PUTS=0;                 AC_SUBST([GNULIB_PUTS])
129   GNULIB_REMOVE=0;               AC_SUBST([GNULIB_REMOVE])
130   GNULIB_RENAME=0;               AC_SUBST([GNULIB_RENAME])
131   GNULIB_RENAMEAT=0;             AC_SUBST([GNULIB_RENAMEAT])
132   GNULIB_SCANF=0;                AC_SUBST([GNULIB_SCANF])
133   GNULIB_SNPRINTF=0;             AC_SUBST([GNULIB_SNPRINTF])
134   GNULIB_SPRINTF_POSIX=0;        AC_SUBST([GNULIB_SPRINTF_POSIX])
135   GNULIB_STDIO_H_NONBLOCKING=0;  AC_SUBST([GNULIB_STDIO_H_NONBLOCKING])
136   GNULIB_STDIO_H_SIGPIPE=0;      AC_SUBST([GNULIB_STDIO_H_SIGPIPE])
137   GNULIB_TMPFILE=0;              AC_SUBST([GNULIB_TMPFILE])
138   GNULIB_VASPRINTF=0;            AC_SUBST([GNULIB_VASPRINTF])
139   GNULIB_VFSCANF=0;              AC_SUBST([GNULIB_VFSCANF])
140   GNULIB_VSCANF=0;               AC_SUBST([GNULIB_VSCANF])
141   GNULIB_VDPRINTF=0;             AC_SUBST([GNULIB_VDPRINTF])
142   GNULIB_VFPRINTF=0;             AC_SUBST([GNULIB_VFPRINTF])
143   GNULIB_VFPRINTF_POSIX=0;       AC_SUBST([GNULIB_VFPRINTF_POSIX])
144   GNULIB_VPRINTF=0;              AC_SUBST([GNULIB_VPRINTF])
145   GNULIB_VPRINTF_POSIX=0;        AC_SUBST([GNULIB_VPRINTF_POSIX])
146   GNULIB_VSNPRINTF=0;            AC_SUBST([GNULIB_VSNPRINTF])
147   GNULIB_VSPRINTF_POSIX=0;       AC_SUBST([GNULIB_VSPRINTF_POSIX])
148   dnl Assume proper GNU behavior unless another module says otherwise.
149   HAVE_DECL_FPURGE=1;            AC_SUBST([HAVE_DECL_FPURGE])
150   HAVE_DECL_FSEEKO=1;            AC_SUBST([HAVE_DECL_FSEEKO])
151   HAVE_DECL_FTELLO=1;            AC_SUBST([HAVE_DECL_FTELLO])
152   HAVE_DECL_GETDELIM=1;          AC_SUBST([HAVE_DECL_GETDELIM])
153   HAVE_DECL_GETLINE=1;           AC_SUBST([HAVE_DECL_GETLINE])
154   HAVE_DECL_OBSTACK_PRINTF=1;    AC_SUBST([HAVE_DECL_OBSTACK_PRINTF])
155   HAVE_DECL_SNPRINTF=1;          AC_SUBST([HAVE_DECL_SNPRINTF])
156   HAVE_DECL_VSNPRINTF=1;         AC_SUBST([HAVE_DECL_VSNPRINTF])
157   HAVE_DPRINTF=1;                AC_SUBST([HAVE_DPRINTF])
158   HAVE_FSEEKO=1;                 AC_SUBST([HAVE_FSEEKO])
159   HAVE_FTELLO=1;                 AC_SUBST([HAVE_FTELLO])
160   HAVE_PCLOSE=1;                 AC_SUBST([HAVE_PCLOSE])
161   HAVE_POPEN=1;                  AC_SUBST([HAVE_POPEN])
162   HAVE_RENAMEAT=1;               AC_SUBST([HAVE_RENAMEAT])
163   HAVE_VASPRINTF=1;              AC_SUBST([HAVE_VASPRINTF])
164   HAVE_VDPRINTF=1;               AC_SUBST([HAVE_VDPRINTF])
165   REPLACE_DPRINTF=0;             AC_SUBST([REPLACE_DPRINTF])
166   REPLACE_FCLOSE=0;              AC_SUBST([REPLACE_FCLOSE])
167   REPLACE_FDOPEN=0;              AC_SUBST([REPLACE_FDOPEN])
168   REPLACE_FFLUSH=0;              AC_SUBST([REPLACE_FFLUSH])
169   REPLACE_FOPEN=0;               AC_SUBST([REPLACE_FOPEN])
170   REPLACE_FPRINTF=0;             AC_SUBST([REPLACE_FPRINTF])
171   REPLACE_FPURGE=0;              AC_SUBST([REPLACE_FPURGE])
172   REPLACE_FREOPEN=0;             AC_SUBST([REPLACE_FREOPEN])
173   REPLACE_FSEEK=0;               AC_SUBST([REPLACE_FSEEK])
174   REPLACE_FSEEKO=0;              AC_SUBST([REPLACE_FSEEKO])
175   REPLACE_FTELL=0;               AC_SUBST([REPLACE_FTELL])
176   REPLACE_FTELLO=0;              AC_SUBST([REPLACE_FTELLO])
177   REPLACE_GETDELIM=0;            AC_SUBST([REPLACE_GETDELIM])
178   REPLACE_GETLINE=0;             AC_SUBST([REPLACE_GETLINE])
179   REPLACE_OBSTACK_PRINTF=0;      AC_SUBST([REPLACE_OBSTACK_PRINTF])
180   REPLACE_PERROR=0;              AC_SUBST([REPLACE_PERROR])
181   REPLACE_POPEN=0;               AC_SUBST([REPLACE_POPEN])
182   REPLACE_PRINTF=0;              AC_SUBST([REPLACE_PRINTF])
183   REPLACE_REMOVE=0;              AC_SUBST([REPLACE_REMOVE])
184   REPLACE_RENAME=0;              AC_SUBST([REPLACE_RENAME])
185   REPLACE_RENAMEAT=0;            AC_SUBST([REPLACE_RENAMEAT])
186   REPLACE_SNPRINTF=0;            AC_SUBST([REPLACE_SNPRINTF])
187   REPLACE_SPRINTF=0;             AC_SUBST([REPLACE_SPRINTF])
188   REPLACE_STDIO_READ_FUNCS=0;    AC_SUBST([REPLACE_STDIO_READ_FUNCS])
189   REPLACE_STDIO_WRITE_FUNCS=0;   AC_SUBST([REPLACE_STDIO_WRITE_FUNCS])
190   REPLACE_TMPFILE=0;             AC_SUBST([REPLACE_TMPFILE])
191   REPLACE_VASPRINTF=0;           AC_SUBST([REPLACE_VASPRINTF])
192   REPLACE_VDPRINTF=0;            AC_SUBST([REPLACE_VDPRINTF])
193   REPLACE_VFPRINTF=0;            AC_SUBST([REPLACE_VFPRINTF])
194   REPLACE_VPRINTF=0;             AC_SUBST([REPLACE_VPRINTF])
195   REPLACE_VSNPRINTF=0;           AC_SUBST([REPLACE_VSNPRINTF])
196   REPLACE_VSPRINTF=0;            AC_SUBST([REPLACE_VSPRINTF])