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