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