0ce11da13b5367e60b0b56d3d06576cb39e17f39
[platform/upstream/libpipeline.git] / gnulib / m4 / vasnprintf.m4
1 # vasnprintf.m4 serial 35
2 dnl Copyright (C) 2002-2004, 2006-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.
6
7 AC_DEFUN([gl_FUNC_VASNPRINTF],
8 [
9   AC_CHECK_FUNCS_ONCE([vasnprintf])
10   if test $ac_cv_func_vasnprintf = no; then
11     gl_REPLACE_VASNPRINTF
12   fi
13 ])
14
15 AC_DEFUN([gl_REPLACE_VASNPRINTF],
16 [
17   AC_CHECK_FUNCS_ONCE([vasnprintf])
18   AC_LIBOBJ([vasnprintf])
19   AC_LIBOBJ([printf-args])
20   AC_LIBOBJ([printf-parse])
21   AC_LIBOBJ([asnprintf])
22   if test $ac_cv_func_vasnprintf = yes; then
23     AC_DEFINE([REPLACE_VASNPRINTF], [1],
24       [Define if vasnprintf exists but is overridden by gnulib.])
25   fi
26   gl_PREREQ_PRINTF_ARGS
27   gl_PREREQ_PRINTF_PARSE
28   gl_PREREQ_VASNPRINTF
29   gl_PREREQ_ASNPRINTF
30 ])
31
32 # Prerequisites of lib/printf-args.h, lib/printf-args.c.
33 AC_DEFUN([gl_PREREQ_PRINTF_ARGS],
34 [
35   AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
36   AC_REQUIRE([gt_TYPE_WCHAR_T])
37   AC_REQUIRE([gt_TYPE_WINT_T])
38 ])
39
40 # Prerequisites of lib/printf-parse.h, lib/printf-parse.c.
41 AC_DEFUN([gl_PREREQ_PRINTF_PARSE],
42 [
43   AC_REQUIRE([gl_FEATURES_H])
44   AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
45   AC_REQUIRE([gt_TYPE_WCHAR_T])
46   AC_REQUIRE([gt_TYPE_WINT_T])
47   AC_REQUIRE([AC_TYPE_SIZE_T])
48   AC_CHECK_TYPE([ptrdiff_t], ,
49     [AC_DEFINE([ptrdiff_t], [long],
50        [Define as the type of the result of subtracting two pointers, if the system doesn't define it.])
51     ])
52   AC_REQUIRE([gt_AC_TYPE_INTMAX_T])
53 ])
54
55 # Prerequisites of lib/vasnprintf.c.
56 AC_DEFUN_ONCE([gl_PREREQ_VASNPRINTF],
57 [
58   AC_REQUIRE([AC_C_INLINE])
59   AC_REQUIRE([AC_FUNC_ALLOCA])
60   AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
61   AC_REQUIRE([gt_TYPE_WCHAR_T])
62   AC_REQUIRE([gt_TYPE_WINT_T])
63   AC_CHECK_FUNCS([snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb])
64   dnl Use the _snprintf function only if it is declared (because on NetBSD it
65   dnl is defined as a weak alias of snprintf; we prefer to use the latter).
66   AC_CHECK_DECLS([_snprintf], , , [[#include <stdio.h>]])
67   dnl Knowing DBL_EXPBIT0_WORD and DBL_EXPBIT0_BIT enables an optimization
68   dnl in the code for NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_DOUBLE.
69   AC_REQUIRE([gl_DOUBLE_EXPONENT_LOCATION])
70   dnl We can avoid a lot of code by assuming that snprintf's return value
71   dnl conforms to ISO C99. So check that.
72   AC_REQUIRE([gl_SNPRINTF_RETVAL_C99])
73   case "$gl_cv_func_snprintf_retval_c99" in
74     *yes)
75       AC_DEFINE([HAVE_SNPRINTF_RETVAL_C99], [1],
76         [Define if the return value of the snprintf function is the number of
77          of bytes (excluding the terminating NUL) that would have been produced
78          if the buffer had been large enough.])
79       ;;
80   esac
81 ])
82
83 # Extra prerequisites of lib/vasnprintf.c for supporting 'long double'
84 # arguments.
85 AC_DEFUN_ONCE([gl_PREREQ_VASNPRINTF_LONG_DOUBLE],
86 [
87   AC_REQUIRE([gl_PRINTF_LONG_DOUBLE])
88   case "$gl_cv_func_printf_long_double" in
89     *yes)
90       ;;
91     *)
92       AC_DEFINE([NEED_PRINTF_LONG_DOUBLE], [1],
93         [Define if the vasnprintf implementation needs special code for
94          'long double' arguments.])
95       ;;
96   esac
97 ])
98
99 # Extra prerequisites of lib/vasnprintf.c for supporting infinite 'double'
100 # arguments.
101 AC_DEFUN([gl_PREREQ_VASNPRINTF_INFINITE_DOUBLE],
102 [
103   AC_REQUIRE([gl_PRINTF_INFINITE])
104   case "$gl_cv_func_printf_infinite" in
105     *yes)
106       ;;
107     *)
108       AC_DEFINE([NEED_PRINTF_INFINITE_DOUBLE], [1],
109         [Define if the vasnprintf implementation needs special code for
110          infinite 'double' arguments.])
111       ;;
112   esac
113 ])
114
115 # Extra prerequisites of lib/vasnprintf.c for supporting infinite 'long double'
116 # arguments.
117 AC_DEFUN([gl_PREREQ_VASNPRINTF_INFINITE_LONG_DOUBLE],
118 [
119   AC_REQUIRE([gl_PRINTF_INFINITE_LONG_DOUBLE])
120   dnl There is no need to set NEED_PRINTF_INFINITE_LONG_DOUBLE if
121   dnl NEED_PRINTF_LONG_DOUBLE is already set.
122   AC_REQUIRE([gl_PREREQ_VASNPRINTF_LONG_DOUBLE])
123   case "$gl_cv_func_printf_long_double" in
124     *yes)
125       case "$gl_cv_func_printf_infinite_long_double" in
126         *yes)
127           ;;
128         *)
129           AC_DEFINE([NEED_PRINTF_INFINITE_LONG_DOUBLE], [1],
130             [Define if the vasnprintf implementation needs special code for
131              infinite 'long double' arguments.])
132           ;;
133       esac
134       ;;
135   esac
136 ])
137
138 # Extra prerequisites of lib/vasnprintf.c for supporting the 'a' directive.
139 AC_DEFUN([gl_PREREQ_VASNPRINTF_DIRECTIVE_A],
140 [
141   AC_REQUIRE([gl_PRINTF_DIRECTIVE_A])
142   case "$gl_cv_func_printf_directive_a" in
143     *yes)
144       ;;
145     *)
146       AC_DEFINE([NEED_PRINTF_DIRECTIVE_A], [1],
147         [Define if the vasnprintf implementation needs special code for
148          the 'a' and 'A' directives.])
149       AC_CHECK_FUNCS([nl_langinfo])
150       ;;
151   esac
152 ])
153
154 # Extra prerequisites of lib/vasnprintf.c for supporting the 'F' directive.
155 AC_DEFUN([gl_PREREQ_VASNPRINTF_DIRECTIVE_F],
156 [
157   AC_REQUIRE([gl_PRINTF_DIRECTIVE_F])
158   case "$gl_cv_func_printf_directive_f" in
159     *yes)
160       ;;
161     *)
162       AC_DEFINE([NEED_PRINTF_DIRECTIVE_F], [1],
163         [Define if the vasnprintf implementation needs special code for
164          the 'F' directive.])
165       ;;
166   esac
167 ])
168
169 # Extra prerequisites of lib/vasnprintf.c for supporting the 'ls' directive.
170 AC_DEFUN([gl_PREREQ_VASNPRINTF_DIRECTIVE_LS],
171 [
172   AC_REQUIRE([gl_PRINTF_DIRECTIVE_LS])
173   case "$gl_cv_func_printf_directive_ls" in
174     *yes)
175       ;;
176     *)
177       AC_DEFINE([NEED_PRINTF_DIRECTIVE_LS], [1],
178         [Define if the vasnprintf implementation needs special code for
179          the 'ls' directive.])
180       ;;
181   esac
182 ])
183
184 # Extra prerequisites of lib/vasnprintf.c for supporting the ' flag.
185 AC_DEFUN([gl_PREREQ_VASNPRINTF_FLAG_GROUPING],
186 [
187   AC_REQUIRE([gl_PRINTF_FLAG_GROUPING])
188   case "$gl_cv_func_printf_flag_grouping" in
189     *yes)
190       ;;
191     *)
192       AC_DEFINE([NEED_PRINTF_FLAG_GROUPING], [1],
193         [Define if the vasnprintf implementation needs special code for the
194          ' flag.])
195       ;;
196   esac
197 ])
198
199 # Extra prerequisites of lib/vasnprintf.c for supporting the '-' flag.
200 AC_DEFUN([gl_PREREQ_VASNPRINTF_FLAG_LEFTADJUST],
201 [
202   AC_REQUIRE([gl_PRINTF_FLAG_LEFTADJUST])
203   case "$gl_cv_func_printf_flag_leftadjust" in
204     *yes)
205       ;;
206     *)
207       AC_DEFINE([NEED_PRINTF_FLAG_LEFTADJUST], [1],
208         [Define if the vasnprintf implementation needs special code for the
209          '-' flag.])
210       ;;
211   esac
212 ])
213
214 # Extra prerequisites of lib/vasnprintf.c for supporting the 0 flag.
215 AC_DEFUN([gl_PREREQ_VASNPRINTF_FLAG_ZERO],
216 [
217   AC_REQUIRE([gl_PRINTF_FLAG_ZERO])
218   case "$gl_cv_func_printf_flag_zero" in
219     *yes)
220       ;;
221     *)
222       AC_DEFINE([NEED_PRINTF_FLAG_ZERO], [1],
223         [Define if the vasnprintf implementation needs special code for the
224          0 flag.])
225       ;;
226   esac
227 ])
228
229 # Extra prerequisites of lib/vasnprintf.c for supporting large precisions.
230 AC_DEFUN([gl_PREREQ_VASNPRINTF_PRECISION],
231 [
232   AC_REQUIRE([gl_PRINTF_PRECISION])
233   case "$gl_cv_func_printf_precision" in
234     *yes)
235       ;;
236     *)
237       AC_DEFINE([NEED_PRINTF_UNBOUNDED_PRECISION], [1],
238         [Define if the vasnprintf implementation needs special code for
239          supporting large precisions without arbitrary bounds.])
240       AC_DEFINE([NEED_PRINTF_DOUBLE], [1],
241         [Define if the vasnprintf implementation needs special code for
242          'double' arguments.])
243       AC_DEFINE([NEED_PRINTF_LONG_DOUBLE], [1],
244         [Define if the vasnprintf implementation needs special code for
245          'long double' arguments.])
246       ;;
247   esac
248 ])
249
250 # Extra prerequisites of lib/vasnprintf.c for surviving out-of-memory
251 # conditions.
252 AC_DEFUN([gl_PREREQ_VASNPRINTF_ENOMEM],
253 [
254   AC_REQUIRE([gl_PRINTF_ENOMEM])
255   case "$gl_cv_func_printf_enomem" in
256     *yes)
257       ;;
258     *)
259       AC_DEFINE([NEED_PRINTF_ENOMEM], [1],
260         [Define if the vasnprintf implementation needs special code for
261          surviving out-of-memory conditions.])
262       AC_DEFINE([NEED_PRINTF_DOUBLE], [1],
263         [Define if the vasnprintf implementation needs special code for
264          'double' arguments.])
265       AC_DEFINE([NEED_PRINTF_LONG_DOUBLE], [1],
266         [Define if the vasnprintf implementation needs special code for
267          'long double' arguments.])
268       ;;
269   esac
270 ])
271
272 # Prerequisites of lib/vasnprintf.c including all extras for POSIX compliance.
273 AC_DEFUN([gl_PREREQ_VASNPRINTF_WITH_EXTRAS],
274 [
275   AC_REQUIRE([gl_PREREQ_VASNPRINTF])
276   gl_PREREQ_VASNPRINTF_LONG_DOUBLE
277   gl_PREREQ_VASNPRINTF_INFINITE_DOUBLE
278   gl_PREREQ_VASNPRINTF_INFINITE_LONG_DOUBLE
279   gl_PREREQ_VASNPRINTF_DIRECTIVE_A
280   gl_PREREQ_VASNPRINTF_DIRECTIVE_F
281   gl_PREREQ_VASNPRINTF_DIRECTIVE_LS
282   gl_PREREQ_VASNPRINTF_FLAG_GROUPING
283   gl_PREREQ_VASNPRINTF_FLAG_LEFTADJUST
284   gl_PREREQ_VASNPRINTF_FLAG_ZERO
285   gl_PREREQ_VASNPRINTF_PRECISION
286   gl_PREREQ_VASNPRINTF_ENOMEM
287 ])
288
289 # Prerequisites of lib/asnprintf.c.
290 AC_DEFUN([gl_PREREQ_ASNPRINTF],
291 [
292 ])