1# stdlib_h.m4 serial 63 2dnl Copyright (C) 2007-2021 Free Software Foundation, Inc. 3dnl This file is free software; the Free Software Foundation 4dnl gives unlimited permission to copy and/or distribute it, 5dnl with or without modifications, as long as this notice is preserved. 6 7AC_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. 53AC_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. 65AC_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 119AC_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]) 195