Bump to m4 1.4.19
[platform/upstream/m4.git] / m4 / stdlib_h.m4
1 # stdlib_h.m4 serial 63
2 dnl Copyright (C) 2007-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 AC_DEFUN_ONCE([gl_STDLIB_H],
8 [
9   AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
10   gl_NEXT_HEADERS([stdlib.h])
11
12   dnl Check for declarations of anything we want to poison if the
13   dnl corresponding gnulib module is not in use, and which is not
14   dnl guaranteed by C89.
15   gl_WARN_ON_USE_PREPARE([[#include <stdlib.h>
16 #if HAVE_SYS_LOADAVG_H
17 /* OpenIndiana has a bug: <sys/time.h> must be included before
18    <sys/loadavg.h>.  */
19 # include <sys/time.h>
20 # include <sys/loadavg.h>
21 #endif
22 #if HAVE_RANDOM_H
23 # include <random.h>
24 #endif
25     ]], [_Exit aligned_alloc atoll canonicalize_file_name free
26     getloadavg getsubopt grantpt
27     initstate initstate_r mbtowc mkdtemp mkostemp mkostemps mkstemp mkstemps
28     posix_memalign posix_openpt ptsname ptsname_r qsort_r
29     random random_r reallocarray realpath rpmatch secure_getenv setenv
30     setstate setstate_r srandom srandom_r
31     strtod strtol strtold strtoll strtoul strtoull unlockpt unsetenv])
32
33   AC_REQUIRE([AC_C_RESTRICT])
34
35   AC_CHECK_DECLS_ONCE([ecvt])
36   if test $ac_cv_have_decl_ecvt = no; then
37     HAVE_DECL_ECVT=0
38   fi
39   AC_CHECK_DECLS_ONCE([fcvt])
40   if test $ac_cv_have_decl_fcvt = no; then
41     HAVE_DECL_FCVT=0
42   fi
43   AC_CHECK_DECLS_ONCE([gcvt])
44   if test $ac_cv_have_decl_gcvt = no; then
45     HAVE_DECL_GCVT=0
46   fi
47 ])
48
49 # gl_STDLIB_MODULE_INDICATOR([modulename])
50 # sets the shell variable that indicates the presence of the given module
51 # to a C preprocessor expression that will evaluate to 1.
52 # This macro invocation must not occur in macros that are AC_REQUIREd.
53 AC_DEFUN([gl_STDLIB_MODULE_INDICATOR],
54 [
55   dnl Ensure to expand the default settings once only.
56   gl_STDLIB_H_REQUIRE_DEFAULTS
57   gl_MODULE_INDICATOR_SET_VARIABLE([$1])
58   dnl Define it also as a C macro, for the benefit of the unit tests.
59   gl_MODULE_INDICATOR_FOR_TESTS([$1])
60 ])
61
62 # Initializes the default values for AC_SUBSTed shell variables.
63 # This macro must not be AC_REQUIREd.  It must only be invoked, and only
64 # outside of macros or in macros that are not AC_REQUIREd.
65 AC_DEFUN([gl_STDLIB_H_REQUIRE_DEFAULTS],
66 [
67   m4_defun(GL_MODULE_INDICATOR_PREFIX[_STDLIB_H_MODULE_INDICATOR_DEFAULTS], [
68     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB__EXIT])
69     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ALIGNED_ALLOC])
70     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ATOLL])
71     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CALLOC_POSIX])
72     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CANONICALIZE_FILE_NAME])
73     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FREE_POSIX])
74     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETLOADAVG])
75     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETSUBOPT])
76     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GRANTPT])
77     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MALLOC_POSIX])
78     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBTOWC])
79     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKDTEMP])
80     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKOSTEMP])
81     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKOSTEMPS])
82     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKSTEMP])
83     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKSTEMPS])
84     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_POSIX_MEMALIGN])
85     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_POSIX_OPENPT])
86     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PTSNAME])
87     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PTSNAME_R])
88     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PUTENV])
89     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_QSORT_R])
90     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RANDOM])
91     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RANDOM_R])
92     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_REALLOCARRAY])
93     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_REALLOC_POSIX])
94     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_REALPATH])
95     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RPMATCH])
96     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SECURE_GETENV])
97     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SETENV])
98     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOD])
99     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOL])
100     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOLD])
101     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOLL])
102     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOUL])
103     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOULL])
104     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SYSTEM_POSIX])
105     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNLOCKPT])
106     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNSETENV])
107     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCTOMB])
108     dnl Support Microsoft deprecated alias function names by default.
109     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_ECVT], [1])
110     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_FCVT], [1])
111     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_GCVT], [1])
112     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_MKTEMP], [1])
113     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_PUTENV], [1])
114   ])
115   m4_require(GL_MODULE_INDICATOR_PREFIX[_STDLIB_H_MODULE_INDICATOR_DEFAULTS])
116   AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
117 ])
118
119 AC_DEFUN([gl_STDLIB_H_DEFAULTS],
120 [
121   dnl Assume proper GNU behavior unless another module says otherwise.
122   HAVE__EXIT=1;              AC_SUBST([HAVE__EXIT])
123   HAVE_ALIGNED_ALLOC=1;      AC_SUBST([HAVE_ALIGNED_ALLOC])
124   HAVE_ATOLL=1;              AC_SUBST([HAVE_ATOLL])
125   HAVE_CANONICALIZE_FILE_NAME=1;  AC_SUBST([HAVE_CANONICALIZE_FILE_NAME])
126   HAVE_DECL_ECVT=1;          AC_SUBST([HAVE_DECL_ECVT])
127   HAVE_DECL_FCVT=1;          AC_SUBST([HAVE_DECL_FCVT])
128   HAVE_DECL_GCVT=1;          AC_SUBST([HAVE_DECL_GCVT])
129   HAVE_DECL_GETLOADAVG=1;    AC_SUBST([HAVE_DECL_GETLOADAVG])
130   HAVE_GETSUBOPT=1;          AC_SUBST([HAVE_GETSUBOPT])
131   HAVE_GRANTPT=1;            AC_SUBST([HAVE_GRANTPT])
132   HAVE_INITSTATE=1;          AC_SUBST([HAVE_INITSTATE])
133   HAVE_DECL_INITSTATE=1;     AC_SUBST([HAVE_DECL_INITSTATE])
134   HAVE_MBTOWC=1;             AC_SUBST([HAVE_MBTOWC])
135   HAVE_MKDTEMP=1;            AC_SUBST([HAVE_MKDTEMP])
136   HAVE_MKOSTEMP=1;           AC_SUBST([HAVE_MKOSTEMP])
137   HAVE_MKOSTEMPS=1;          AC_SUBST([HAVE_MKOSTEMPS])
138   HAVE_MKSTEMP=1;            AC_SUBST([HAVE_MKSTEMP])
139   HAVE_MKSTEMPS=1;           AC_SUBST([HAVE_MKSTEMPS])
140   HAVE_POSIX_MEMALIGN=1;     AC_SUBST([HAVE_POSIX_MEMALIGN])
141   HAVE_POSIX_OPENPT=1;       AC_SUBST([HAVE_POSIX_OPENPT])
142   HAVE_PTSNAME=1;            AC_SUBST([HAVE_PTSNAME])
143   HAVE_PTSNAME_R=1;          AC_SUBST([HAVE_PTSNAME_R])
144   HAVE_QSORT_R=1;            AC_SUBST([HAVE_QSORT_R])
145   HAVE_RANDOM=1;             AC_SUBST([HAVE_RANDOM])
146   HAVE_RANDOM_H=1;           AC_SUBST([HAVE_RANDOM_H])
147   HAVE_RANDOM_R=1;           AC_SUBST([HAVE_RANDOM_R])
148   HAVE_REALLOCARRAY=1;       AC_SUBST([HAVE_REALLOCARRAY])
149   HAVE_REALPATH=1;           AC_SUBST([HAVE_REALPATH])
150   HAVE_RPMATCH=1;            AC_SUBST([HAVE_RPMATCH])
151   HAVE_SECURE_GETENV=1;      AC_SUBST([HAVE_SECURE_GETENV])
152   HAVE_SETENV=1;             AC_SUBST([HAVE_SETENV])
153   HAVE_DECL_SETENV=1;        AC_SUBST([HAVE_DECL_SETENV])
154   HAVE_SETSTATE=1;           AC_SUBST([HAVE_SETSTATE])
155   HAVE_DECL_SETSTATE=1;      AC_SUBST([HAVE_DECL_SETSTATE])
156   HAVE_STRTOD=1;             AC_SUBST([HAVE_STRTOD])
157   HAVE_STRTOL=1;             AC_SUBST([HAVE_STRTOL])
158   HAVE_STRTOLD=1;            AC_SUBST([HAVE_STRTOLD])
159   HAVE_STRTOLL=1;            AC_SUBST([HAVE_STRTOLL])
160   HAVE_STRTOUL=1;            AC_SUBST([HAVE_STRTOUL])
161   HAVE_STRTOULL=1;           AC_SUBST([HAVE_STRTOULL])
162   HAVE_STRUCT_RANDOM_DATA=1; AC_SUBST([HAVE_STRUCT_RANDOM_DATA])
163   HAVE_SYS_LOADAVG_H=0;      AC_SUBST([HAVE_SYS_LOADAVG_H])
164   HAVE_UNLOCKPT=1;           AC_SUBST([HAVE_UNLOCKPT])
165   HAVE_DECL_UNSETENV=1;      AC_SUBST([HAVE_DECL_UNSETENV])
166   REPLACE_ALIGNED_ALLOC=0;   AC_SUBST([REPLACE_ALIGNED_ALLOC])
167   REPLACE_CALLOC=0;          AC_SUBST([REPLACE_CALLOC])
168   REPLACE_CANONICALIZE_FILE_NAME=0;  AC_SUBST([REPLACE_CANONICALIZE_FILE_NAME])
169   REPLACE_FREE=0;            AC_SUBST([REPLACE_FREE])
170   REPLACE_INITSTATE=0;       AC_SUBST([REPLACE_INITSTATE])
171   REPLACE_MALLOC=0;          AC_SUBST([REPLACE_MALLOC])
172   REPLACE_MBTOWC=0;          AC_SUBST([REPLACE_MBTOWC])
173   REPLACE_MKSTEMP=0;         AC_SUBST([REPLACE_MKSTEMP])
174   REPLACE_POSIX_MEMALIGN=0;  AC_SUBST([REPLACE_POSIX_MEMALIGN])
175   REPLACE_PTSNAME=0;         AC_SUBST([REPLACE_PTSNAME])
176   REPLACE_PTSNAME_R=0;       AC_SUBST([REPLACE_PTSNAME_R])
177   REPLACE_PUTENV=0;          AC_SUBST([REPLACE_PUTENV])
178   REPLACE_QSORT_R=0;         AC_SUBST([REPLACE_QSORT_R])
179   REPLACE_RANDOM=0;          AC_SUBST([REPLACE_RANDOM])
180   REPLACE_RANDOM_R=0;        AC_SUBST([REPLACE_RANDOM_R])
181   REPLACE_REALLOC=0;         AC_SUBST([REPLACE_REALLOC])
182   REPLACE_REALLOCARRAY=0;    AC_SUBST([REPLACE_REALLOCARRAY])
183   REPLACE_REALPATH=0;        AC_SUBST([REPLACE_REALPATH])
184   REPLACE_SETENV=0;          AC_SUBST([REPLACE_SETENV])
185   REPLACE_SETSTATE=0;        AC_SUBST([REPLACE_SETSTATE])
186   REPLACE_STRTOD=0;          AC_SUBST([REPLACE_STRTOD])
187   REPLACE_STRTOL=0;          AC_SUBST([REPLACE_STRTOL])
188   REPLACE_STRTOLD=0;         AC_SUBST([REPLACE_STRTOLD])
189   REPLACE_STRTOLL=0;         AC_SUBST([REPLACE_STRTOLL])
190   REPLACE_STRTOUL=0;         AC_SUBST([REPLACE_STRTOUL])
191   REPLACE_STRTOULL=0;        AC_SUBST([REPLACE_STRTOULL])
192   REPLACE_UNSETENV=0;        AC_SUBST([REPLACE_UNSETENV])
193   REPLACE_WCTOMB=0;          AC_SUBST([REPLACE_WCTOMB])
194 ])