immutable: Add tests.
[gnulib.git] / m4 / stdlib_h.m4
blob5a02972e05dbea9cc2e655515b96a4fa2076d824
1 # stdlib_h.m4 serial 55
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.
7 AC_DEFUN([gl_STDLIB_H],
9   AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
10   gl_NEXT_HEADERS([stdlib.h])
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 strtold strtoll strtoull unlockpt unsetenv])
33   AC_REQUIRE([AC_C_RESTRICT])
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
49 AC_DEFUN([gl_STDLIB_MODULE_INDICATOR],
51   dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
52   AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
53   gl_MODULE_INDICATOR_SET_VARIABLE([$1])
54   dnl Define it also as a C macro, for the benefit of the unit tests.
55   gl_MODULE_INDICATOR_FOR_TESTS([$1])
58 AC_DEFUN([gl_STDLIB_H_DEFAULTS],
60   GNULIB__EXIT=0;         AC_SUBST([GNULIB__EXIT])
61   GNULIB_ALIGNED_ALLOC=0; AC_SUBST([GNULIB_ALIGNED_ALLOC])
62   GNULIB_ATOLL=0;         AC_SUBST([GNULIB_ATOLL])
63   GNULIB_CALLOC_POSIX=0;  AC_SUBST([GNULIB_CALLOC_POSIX])
64   GNULIB_CANONICALIZE_FILE_NAME=0;  AC_SUBST([GNULIB_CANONICALIZE_FILE_NAME])
65   GNULIB_FREE_POSIX=0;    AC_SUBST([GNULIB_FREE_POSIX])
66   GNULIB_GETLOADAVG=0;    AC_SUBST([GNULIB_GETLOADAVG])
67   GNULIB_GETSUBOPT=0;     AC_SUBST([GNULIB_GETSUBOPT])
68   GNULIB_GRANTPT=0;       AC_SUBST([GNULIB_GRANTPT])
69   GNULIB_MALLOC_POSIX=0;  AC_SUBST([GNULIB_MALLOC_POSIX])
70   GNULIB_MBTOWC=0;        AC_SUBST([GNULIB_MBTOWC])
71   GNULIB_MKDTEMP=0;       AC_SUBST([GNULIB_MKDTEMP])
72   GNULIB_MKOSTEMP=0;      AC_SUBST([GNULIB_MKOSTEMP])
73   GNULIB_MKOSTEMPS=0;     AC_SUBST([GNULIB_MKOSTEMPS])
74   GNULIB_MKSTEMP=0;       AC_SUBST([GNULIB_MKSTEMP])
75   GNULIB_MKSTEMPS=0;      AC_SUBST([GNULIB_MKSTEMPS])
76   GNULIB_POSIX_MEMALIGN=0;AC_SUBST([GNULIB_POSIX_MEMALIGN])
77   GNULIB_POSIX_OPENPT=0;  AC_SUBST([GNULIB_POSIX_OPENPT])
78   GNULIB_PTSNAME=0;       AC_SUBST([GNULIB_PTSNAME])
79   GNULIB_PTSNAME_R=0;     AC_SUBST([GNULIB_PTSNAME_R])
80   GNULIB_PUTENV=0;        AC_SUBST([GNULIB_PUTENV])
81   GNULIB_QSORT_R=0;       AC_SUBST([GNULIB_QSORT_R])
82   GNULIB_RANDOM=0;        AC_SUBST([GNULIB_RANDOM])
83   GNULIB_RANDOM_R=0;      AC_SUBST([GNULIB_RANDOM_R])
84   GNULIB_REALLOCARRAY=0;  AC_SUBST([GNULIB_REALLOCARRAY])
85   GNULIB_REALLOC_POSIX=0; AC_SUBST([GNULIB_REALLOC_POSIX])
86   GNULIB_REALPATH=0;      AC_SUBST([GNULIB_REALPATH])
87   GNULIB_RPMATCH=0;       AC_SUBST([GNULIB_RPMATCH])
88   GNULIB_SECURE_GETENV=0; AC_SUBST([GNULIB_SECURE_GETENV])
89   GNULIB_SETENV=0;        AC_SUBST([GNULIB_SETENV])
90   GNULIB_STRTOD=0;        AC_SUBST([GNULIB_STRTOD])
91   GNULIB_STRTOLD=0;       AC_SUBST([GNULIB_STRTOLD])
92   GNULIB_STRTOLL=0;       AC_SUBST([GNULIB_STRTOLL])
93   GNULIB_STRTOULL=0;      AC_SUBST([GNULIB_STRTOULL])
94   GNULIB_SYSTEM_POSIX=0;  AC_SUBST([GNULIB_SYSTEM_POSIX])
95   GNULIB_UNLOCKPT=0;      AC_SUBST([GNULIB_UNLOCKPT])
96   GNULIB_UNSETENV=0;      AC_SUBST([GNULIB_UNSETENV])
97   GNULIB_WCTOMB=0;        AC_SUBST([GNULIB_WCTOMB])
98   dnl Support Microsoft deprecated alias function names by default.
99   GNULIB_MDA_ECVT=1;      AC_SUBST([GNULIB_MDA_ECVT])
100   GNULIB_MDA_FCVT=1;      AC_SUBST([GNULIB_MDA_FCVT])
101   GNULIB_MDA_GCVT=1;      AC_SUBST([GNULIB_MDA_GCVT])
102   GNULIB_MDA_MKTEMP=1;    AC_SUBST([GNULIB_MDA_MKTEMP])
103   GNULIB_MDA_PUTENV=1;    AC_SUBST([GNULIB_MDA_PUTENV])
104   dnl Assume proper GNU behavior unless another module says otherwise.
105   HAVE__EXIT=1;              AC_SUBST([HAVE__EXIT])
106   HAVE_ALIGNED_ALLOC=1;      AC_SUBST([HAVE_ALIGNED_ALLOC])
107   HAVE_ATOLL=1;              AC_SUBST([HAVE_ATOLL])
108   HAVE_CANONICALIZE_FILE_NAME=1;  AC_SUBST([HAVE_CANONICALIZE_FILE_NAME])
109   HAVE_DECL_ECVT=1;          AC_SUBST([HAVE_DECL_ECVT])
110   HAVE_DECL_FCVT=1;          AC_SUBST([HAVE_DECL_FCVT])
111   HAVE_DECL_GCVT=1;          AC_SUBST([HAVE_DECL_GCVT])
112   HAVE_DECL_GETLOADAVG=1;    AC_SUBST([HAVE_DECL_GETLOADAVG])
113   HAVE_GETSUBOPT=1;          AC_SUBST([HAVE_GETSUBOPT])
114   HAVE_GRANTPT=1;            AC_SUBST([HAVE_GRANTPT])
115   HAVE_INITSTATE=1;          AC_SUBST([HAVE_INITSTATE])
116   HAVE_DECL_INITSTATE=1;     AC_SUBST([HAVE_DECL_INITSTATE])
117   HAVE_MBTOWC=1;             AC_SUBST([HAVE_MBTOWC])
118   HAVE_MKDTEMP=1;            AC_SUBST([HAVE_MKDTEMP])
119   HAVE_MKOSTEMP=1;           AC_SUBST([HAVE_MKOSTEMP])
120   HAVE_MKOSTEMPS=1;          AC_SUBST([HAVE_MKOSTEMPS])
121   HAVE_MKSTEMP=1;            AC_SUBST([HAVE_MKSTEMP])
122   HAVE_MKSTEMPS=1;           AC_SUBST([HAVE_MKSTEMPS])
123   HAVE_POSIX_MEMALIGN=1;     AC_SUBST([HAVE_POSIX_MEMALIGN])
124   HAVE_POSIX_OPENPT=1;       AC_SUBST([HAVE_POSIX_OPENPT])
125   HAVE_PTSNAME=1;            AC_SUBST([HAVE_PTSNAME])
126   HAVE_PTSNAME_R=1;          AC_SUBST([HAVE_PTSNAME_R])
127   HAVE_QSORT_R=1;            AC_SUBST([HAVE_QSORT_R])
128   HAVE_RANDOM=1;             AC_SUBST([HAVE_RANDOM])
129   HAVE_RANDOM_H=1;           AC_SUBST([HAVE_RANDOM_H])
130   HAVE_RANDOM_R=1;           AC_SUBST([HAVE_RANDOM_R])
131   HAVE_REALLOCARRAY=1;       AC_SUBST([HAVE_REALLOCARRAY])
132   HAVE_REALPATH=1;           AC_SUBST([HAVE_REALPATH])
133   HAVE_RPMATCH=1;            AC_SUBST([HAVE_RPMATCH])
134   HAVE_SECURE_GETENV=1;      AC_SUBST([HAVE_SECURE_GETENV])
135   HAVE_SETENV=1;             AC_SUBST([HAVE_SETENV])
136   HAVE_DECL_SETENV=1;        AC_SUBST([HAVE_DECL_SETENV])
137   HAVE_SETSTATE=1;           AC_SUBST([HAVE_SETSTATE])
138   HAVE_DECL_SETSTATE=1;      AC_SUBST([HAVE_DECL_SETSTATE])
139   HAVE_STRTOD=1;             AC_SUBST([HAVE_STRTOD])
140   HAVE_STRTOLD=1;            AC_SUBST([HAVE_STRTOLD])
141   HAVE_STRTOLL=1;            AC_SUBST([HAVE_STRTOLL])
142   HAVE_STRTOULL=1;           AC_SUBST([HAVE_STRTOULL])
143   HAVE_STRUCT_RANDOM_DATA=1; AC_SUBST([HAVE_STRUCT_RANDOM_DATA])
144   HAVE_SYS_LOADAVG_H=0;      AC_SUBST([HAVE_SYS_LOADAVG_H])
145   HAVE_UNLOCKPT=1;           AC_SUBST([HAVE_UNLOCKPT])
146   HAVE_DECL_UNSETENV=1;      AC_SUBST([HAVE_DECL_UNSETENV])
147   REPLACE_ALIGNED_ALLOC=0;   AC_SUBST([REPLACE_ALIGNED_ALLOC])
148   REPLACE_CALLOC=0;          AC_SUBST([REPLACE_CALLOC])
149   REPLACE_CANONICALIZE_FILE_NAME=0;  AC_SUBST([REPLACE_CANONICALIZE_FILE_NAME])
150   REPLACE_FREE=0;            AC_SUBST([REPLACE_FREE])
151   REPLACE_INITSTATE=0;       AC_SUBST([REPLACE_INITSTATE])
152   REPLACE_MALLOC=0;          AC_SUBST([REPLACE_MALLOC])
153   REPLACE_MBTOWC=0;          AC_SUBST([REPLACE_MBTOWC])
154   REPLACE_MKSTEMP=0;         AC_SUBST([REPLACE_MKSTEMP])
155   REPLACE_POSIX_MEMALIGN=0;  AC_SUBST([REPLACE_POSIX_MEMALIGN])
156   REPLACE_PTSNAME=0;         AC_SUBST([REPLACE_PTSNAME])
157   REPLACE_PTSNAME_R=0;       AC_SUBST([REPLACE_PTSNAME_R])
158   REPLACE_PUTENV=0;          AC_SUBST([REPLACE_PUTENV])
159   REPLACE_QSORT_R=0;         AC_SUBST([REPLACE_QSORT_R])
160   REPLACE_RANDOM=0;          AC_SUBST([REPLACE_RANDOM])
161   REPLACE_RANDOM_R=0;        AC_SUBST([REPLACE_RANDOM_R])
162   REPLACE_REALLOC=0;         AC_SUBST([REPLACE_REALLOC])
163   REPLACE_REALPATH=0;        AC_SUBST([REPLACE_REALPATH])
164   REPLACE_SETENV=0;          AC_SUBST([REPLACE_SETENV])
165   REPLACE_SETSTATE=0;        AC_SUBST([REPLACE_SETSTATE])
166   REPLACE_STRTOD=0;          AC_SUBST([REPLACE_STRTOD])
167   REPLACE_STRTOLD=0;         AC_SUBST([REPLACE_STRTOLD])
168   REPLACE_UNSETENV=0;        AC_SUBST([REPLACE_UNSETENV])
169   REPLACE_WCTOMB=0;          AC_SUBST([REPLACE_WCTOMB])