mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-25 07:28:20 +00:00
265 lines
12 KiB
Plaintext
265 lines
12 KiB
Plaintext
# stdlib_h.m4
|
|
# serial 78
|
|
dnl Copyright (C) 2007-2024 Free Software Foundation, Inc.
|
|
dnl This file is free software; the Free Software Foundation
|
|
dnl gives unlimited permission to copy and/or distribute it,
|
|
dnl with or without modifications, as long as this notice is preserved.
|
|
|
|
AC_DEFUN_ONCE([gl_STDLIB_H],
|
|
[
|
|
AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
|
|
gl_NEXT_HEADERS([stdlib.h])
|
|
|
|
dnl Check for declarations of anything we want to poison if the
|
|
dnl corresponding gnulib module is not in use, and which is not
|
|
dnl guaranteed by C89.
|
|
gl_WARN_ON_USE_PREPARE([[#include <stdlib.h>
|
|
#if HAVE_SYS_LOADAVG_H
|
|
/* OpenIndiana has a bug: <sys/time.h> must be included before
|
|
<sys/loadavg.h>. */
|
|
# include <sys/time.h>
|
|
# include <sys/loadavg.h>
|
|
#endif
|
|
#if HAVE_RANDOM_H
|
|
# include <random.h>
|
|
#endif
|
|
]], [_Exit aligned_alloc atoll canonicalize_file_name free
|
|
getloadavg getprogname getsubopt grantpt
|
|
initstate initstate_r mbstowcs mbtowc mkdtemp mkostemp mkostemps mkstemp
|
|
mkstemps posix_memalign posix_openpt ptsname ptsname_r qsort_r
|
|
random random_r reallocarray realpath rpmatch secure_getenv setenv
|
|
setstate setstate_r srandom srandom_r
|
|
strtod strtol strtold strtoll strtoul strtoull unlockpt unsetenv])
|
|
|
|
AC_REQUIRE([AC_C_RESTRICT])
|
|
|
|
dnl Test whether MB_CUR_MAX needs to be overridden.
|
|
dnl On Solaris 10, in UTF-8 locales, its value is 3 but needs to be 4.
|
|
dnl Fortunately, we can do this because on this platform MB_LEN_MAX is 5.
|
|
AC_REQUIRE([AC_CANONICAL_HOST])
|
|
AC_REQUIRE([gt_LOCALE_FR_UTF8])
|
|
AC_CACHE_CHECK([whether MB_CUR_MAX is correct],
|
|
[gl_cv_macro_MB_CUR_MAX_good],
|
|
[
|
|
dnl Initial guess, used when cross-compiling or when no suitable locale
|
|
dnl is present.
|
|
changequote(,)dnl
|
|
case "$host_os" in
|
|
# Guess no on Solaris.
|
|
solaris*) gl_cv_macro_MB_CUR_MAX_good="guessing no" ;;
|
|
# Guess yes otherwise.
|
|
*) gl_cv_macro_MB_CUR_MAX_good="guessing yes" ;;
|
|
esac
|
|
changequote([,])dnl
|
|
if test $LOCALE_FR_UTF8 != none; then
|
|
AC_RUN_IFELSE(
|
|
[AC_LANG_SOURCE([[
|
|
#include <locale.h>
|
|
#include <stdlib.h>
|
|
int main ()
|
|
{
|
|
int result = 0;
|
|
if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
|
|
{
|
|
if (MB_CUR_MAX < 4)
|
|
result |= 1;
|
|
}
|
|
return result;
|
|
}]])],
|
|
[gl_cv_macro_MB_CUR_MAX_good=yes],
|
|
[gl_cv_macro_MB_CUR_MAX_good=no],
|
|
[:])
|
|
fi
|
|
])
|
|
case "$gl_cv_macro_MB_CUR_MAX_good" in
|
|
*yes) ;;
|
|
*) REPLACE_MB_CUR_MAX=1 ;;
|
|
esac
|
|
|
|
AC_CHECK_DECLS_ONCE([ecvt])
|
|
if test $ac_cv_have_decl_ecvt = no; then
|
|
HAVE_DECL_ECVT=0
|
|
fi
|
|
AC_CHECK_DECLS_ONCE([fcvt])
|
|
if test $ac_cv_have_decl_fcvt = no; then
|
|
HAVE_DECL_FCVT=0
|
|
fi
|
|
AC_CHECK_DECLS_ONCE([gcvt])
|
|
if test $ac_cv_have_decl_gcvt = no; then
|
|
HAVE_DECL_GCVT=0
|
|
fi
|
|
])
|
|
|
|
# gl_STDLIB_MODULE_INDICATOR([modulename])
|
|
# sets the shell variable that indicates the presence of the given module
|
|
# to a C preprocessor expression that will evaluate to 1.
|
|
# This macro invocation must not occur in macros that are AC_REQUIREd.
|
|
AC_DEFUN([gl_STDLIB_MODULE_INDICATOR],
|
|
[
|
|
dnl Ensure to expand the default settings once only.
|
|
gl_STDLIB_H_REQUIRE_DEFAULTS
|
|
gl_MODULE_INDICATOR_SET_VARIABLE([$1])
|
|
dnl Define it also as a C macro, for the benefit of the unit tests.
|
|
gl_MODULE_INDICATOR_FOR_TESTS([$1])
|
|
])
|
|
|
|
# Initializes the default values for AC_SUBSTed shell variables.
|
|
# This macro must not be AC_REQUIREd. It must only be invoked, and only
|
|
# outside of macros or in macros that are not AC_REQUIREd.
|
|
AC_DEFUN([gl_STDLIB_H_REQUIRE_DEFAULTS],
|
|
[
|
|
m4_defun(GL_MODULE_INDICATOR_PREFIX[_STDLIB_H_MODULE_INDICATOR_DEFAULTS], [
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB__EXIT])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ABORT_DEBUG])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ALIGNED_ALLOC])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ATOLL])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CALLOC_GNU])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CALLOC_POSIX])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CANONICALIZE_FILE_NAME])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FREE_POSIX])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETLOADAVG])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETPROGNAME])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETSUBOPT])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GRANTPT])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MALLOC_GNU])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MALLOC_POSIX])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSTOWCS])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBTOWC])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKDTEMP])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKOSTEMP])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKOSTEMPS])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKSTEMP])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKSTEMPS])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_POSIX_MEMALIGN])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_POSIX_OPENPT])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PTSNAME])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PTSNAME_R])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PUTENV])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_QSORT_R])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RAND])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RANDOM])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RANDOM_R])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_REALLOCARRAY])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_REALLOC_GNU])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_REALLOC_POSIX])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_REALPATH])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RPMATCH])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SECURE_GETENV])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SETENV])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOD])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOF])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOL])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOLD])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOLL])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOUL])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOULL])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SYSTEM_POSIX])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNLOCKPT])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNSETENV])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCTOMB])
|
|
dnl Support Microsoft deprecated alias function names by default.
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_ECVT], [1])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_FCVT], [1])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_GCVT], [1])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_MKTEMP], [1])
|
|
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_PUTENV], [1])
|
|
])
|
|
m4_require(GL_MODULE_INDICATOR_PREFIX[_STDLIB_H_MODULE_INDICATOR_DEFAULTS])
|
|
AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
|
|
])
|
|
|
|
AC_DEFUN([gl_STDLIB_H_DEFAULTS],
|
|
[
|
|
dnl Assume proper GNU behavior unless another module says otherwise.
|
|
HAVE__EXIT=1; AC_SUBST([HAVE__EXIT])
|
|
HAVE_ALIGNED_ALLOC=1; AC_SUBST([HAVE_ALIGNED_ALLOC])
|
|
HAVE_ATOLL=1; AC_SUBST([HAVE_ATOLL])
|
|
HAVE_CANONICALIZE_FILE_NAME=1; AC_SUBST([HAVE_CANONICALIZE_FILE_NAME])
|
|
HAVE_DECL_ECVT=1; AC_SUBST([HAVE_DECL_ECVT])
|
|
HAVE_DECL_FCVT=1; AC_SUBST([HAVE_DECL_FCVT])
|
|
HAVE_DECL_GCVT=1; AC_SUBST([HAVE_DECL_GCVT])
|
|
HAVE_DECL_GETLOADAVG=1; AC_SUBST([HAVE_DECL_GETLOADAVG])
|
|
HAVE_DECL_PROGRAM_INVOCATION_NAME=1; AC_SUBST([HAVE_DECL_PROGRAM_INVOCATION_NAME])
|
|
HAVE_GETPROGNAME=1; AC_SUBST([HAVE_GETPROGNAME])
|
|
HAVE_GETSUBOPT=1; AC_SUBST([HAVE_GETSUBOPT])
|
|
HAVE_GRANTPT=1; AC_SUBST([HAVE_GRANTPT])
|
|
HAVE_INITSTATE=1; AC_SUBST([HAVE_INITSTATE])
|
|
HAVE_DECL_INITSTATE=1; AC_SUBST([HAVE_DECL_INITSTATE])
|
|
HAVE_MBTOWC=1; AC_SUBST([HAVE_MBTOWC])
|
|
HAVE_MKDTEMP=1; AC_SUBST([HAVE_MKDTEMP])
|
|
HAVE_MKOSTEMP=1; AC_SUBST([HAVE_MKOSTEMP])
|
|
HAVE_MKOSTEMPS=1; AC_SUBST([HAVE_MKOSTEMPS])
|
|
HAVE_MKSTEMP=1; AC_SUBST([HAVE_MKSTEMP])
|
|
HAVE_MKSTEMPS=1; AC_SUBST([HAVE_MKSTEMPS])
|
|
HAVE_POSIX_MEMALIGN=1; AC_SUBST([HAVE_POSIX_MEMALIGN])
|
|
HAVE_POSIX_OPENPT=1; AC_SUBST([HAVE_POSIX_OPENPT])
|
|
HAVE_PTSNAME=1; AC_SUBST([HAVE_PTSNAME])
|
|
HAVE_PTSNAME_R=1; AC_SUBST([HAVE_PTSNAME_R])
|
|
HAVE_QSORT_R=1; AC_SUBST([HAVE_QSORT_R])
|
|
HAVE_RANDOM=1; AC_SUBST([HAVE_RANDOM])
|
|
HAVE_RANDOM_H=1; AC_SUBST([HAVE_RANDOM_H])
|
|
HAVE_RANDOM_R=1; AC_SUBST([HAVE_RANDOM_R])
|
|
HAVE_REALLOCARRAY=1; AC_SUBST([HAVE_REALLOCARRAY])
|
|
HAVE_REALPATH=1; AC_SUBST([HAVE_REALPATH])
|
|
HAVE_RPMATCH=1; AC_SUBST([HAVE_RPMATCH])
|
|
HAVE_SECURE_GETENV=1; AC_SUBST([HAVE_SECURE_GETENV])
|
|
HAVE_SETENV=1; AC_SUBST([HAVE_SETENV])
|
|
HAVE_DECL_SETENV=1; AC_SUBST([HAVE_DECL_SETENV])
|
|
HAVE_SETSTATE=1; AC_SUBST([HAVE_SETSTATE])
|
|
HAVE_DECL_SETSTATE=1; AC_SUBST([HAVE_DECL_SETSTATE])
|
|
HAVE_STRTOD=1; AC_SUBST([HAVE_STRTOD])
|
|
HAVE_STRTOF=1; AC_SUBST([HAVE_STRTOF])
|
|
HAVE_STRTOL=1; AC_SUBST([HAVE_STRTOL])
|
|
HAVE_STRTOLD=1; AC_SUBST([HAVE_STRTOLD])
|
|
HAVE_STRTOLL=1; AC_SUBST([HAVE_STRTOLL])
|
|
HAVE_STRTOUL=1; AC_SUBST([HAVE_STRTOUL])
|
|
HAVE_STRTOULL=1; AC_SUBST([HAVE_STRTOULL])
|
|
HAVE_STRUCT_RANDOM_DATA=1; AC_SUBST([HAVE_STRUCT_RANDOM_DATA])
|
|
HAVE_SYS_LOADAVG_H=0; AC_SUBST([HAVE_SYS_LOADAVG_H])
|
|
HAVE_UNLOCKPT=1; AC_SUBST([HAVE_UNLOCKPT])
|
|
HAVE_DECL_UNSETENV=1; AC_SUBST([HAVE_DECL_UNSETENV])
|
|
REPLACE__EXIT=0; AC_SUBST([REPLACE__EXIT])
|
|
REPLACE_ABORT=0; AC_SUBST([REPLACE_ABORT])
|
|
REPLACE_ALIGNED_ALLOC=0; AC_SUBST([REPLACE_ALIGNED_ALLOC])
|
|
REPLACE_CALLOC_FOR_CALLOC_GNU=0; AC_SUBST([REPLACE_CALLOC_FOR_CALLOC_GNU])
|
|
REPLACE_CALLOC_FOR_CALLOC_POSIX=0; AC_SUBST([REPLACE_CALLOC_FOR_CALLOC_POSIX])
|
|
REPLACE_CANONICALIZE_FILE_NAME=0; AC_SUBST([REPLACE_CANONICALIZE_FILE_NAME])
|
|
REPLACE_FREE=0; AC_SUBST([REPLACE_FREE])
|
|
REPLACE_GETLOADAVG=0; AC_SUBST([REPLACE_GETLOADAVG])
|
|
REPLACE_GETPROGNAME=0; AC_SUBST([REPLACE_GETPROGNAME])
|
|
REPLACE_GETSUBOPT=0; AC_SUBST([REPLACE_GETSUBOPT])
|
|
REPLACE_INITSTATE=0; AC_SUBST([REPLACE_INITSTATE])
|
|
REPLACE_MALLOC_FOR_MALLOC_GNU=0; AC_SUBST([REPLACE_MALLOC_FOR_MALLOC_GNU])
|
|
REPLACE_MALLOC_FOR_MALLOC_POSIX=0; AC_SUBST([REPLACE_MALLOC_FOR_MALLOC_POSIX])
|
|
REPLACE_MB_CUR_MAX=0; AC_SUBST([REPLACE_MB_CUR_MAX])
|
|
REPLACE_MBSTOWCS=0; AC_SUBST([REPLACE_MBSTOWCS])
|
|
REPLACE_MBTOWC=0; AC_SUBST([REPLACE_MBTOWC])
|
|
REPLACE_MKOSTEMP=0; AC_SUBST([REPLACE_MKOSTEMP])
|
|
REPLACE_MKOSTEMPS=0; AC_SUBST([REPLACE_MKOSTEMPS])
|
|
REPLACE_MKSTEMP=0; AC_SUBST([REPLACE_MKSTEMP])
|
|
REPLACE_POSIX_MEMALIGN=0; AC_SUBST([REPLACE_POSIX_MEMALIGN])
|
|
REPLACE_POSIX_OPENPT=0; AC_SUBST([REPLACE_POSIX_OPENPT])
|
|
REPLACE_PTSNAME=0; AC_SUBST([REPLACE_PTSNAME])
|
|
REPLACE_PTSNAME_R=0; AC_SUBST([REPLACE_PTSNAME_R])
|
|
REPLACE_PUTENV=0; AC_SUBST([REPLACE_PUTENV])
|
|
REPLACE_QSORT_R=0; AC_SUBST([REPLACE_QSORT_R])
|
|
REPLACE_RAND=0; AC_SUBST([REPLACE_RAND])
|
|
REPLACE_RANDOM=0; AC_SUBST([REPLACE_RANDOM])
|
|
REPLACE_RANDOM_R=0; AC_SUBST([REPLACE_RANDOM_R])
|
|
REPLACE_REALLOC_FOR_REALLOC_GNU=0; AC_SUBST([REPLACE_REALLOC_FOR_REALLOC_GNU])
|
|
REPLACE_REALLOC_FOR_REALLOC_POSIX=0; AC_SUBST([REPLACE_REALLOC_FOR_REALLOC_POSIX])
|
|
REPLACE_REALLOCARRAY=0; AC_SUBST([REPLACE_REALLOCARRAY])
|
|
REPLACE_REALPATH=0; AC_SUBST([REPLACE_REALPATH])
|
|
REPLACE_SETENV=0; AC_SUBST([REPLACE_SETENV])
|
|
REPLACE_SETSTATE=0; AC_SUBST([REPLACE_SETSTATE])
|
|
REPLACE_STRTOD=0; AC_SUBST([REPLACE_STRTOD])
|
|
REPLACE_STRTOF=0; AC_SUBST([REPLACE_STRTOF])
|
|
REPLACE_STRTOL=0; AC_SUBST([REPLACE_STRTOL])
|
|
REPLACE_STRTOLD=0; AC_SUBST([REPLACE_STRTOLD])
|
|
REPLACE_STRTOLL=0; AC_SUBST([REPLACE_STRTOLL])
|
|
REPLACE_STRTOUL=0; AC_SUBST([REPLACE_STRTOUL])
|
|
REPLACE_STRTOULL=0; AC_SUBST([REPLACE_STRTOULL])
|
|
REPLACE_UNSETENV=0; AC_SUBST([REPLACE_UNSETENV])
|
|
REPLACE_WCTOMB=0; AC_SUBST([REPLACE_WCTOMB])
|
|
])
|