1# langinfo_h.m4 serial 12 2dnl Copyright (C) 2009-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_LANGINFO_H], 8[ 9 AC_REQUIRE([gl_LANGINFO_H_DEFAULTS]) 10 11 dnl Persuade glibc-2.0.6 <langinfo.h> to define CODESET. 12 AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) 13 14 dnl <langinfo.h> is always overridden, because of GNULIB_POSIXCHECK. 15 gl_CHECK_NEXT_HEADERS([langinfo.h]) 16 17 dnl Determine whether <langinfo.h> exists. It is missing on mingw and BeOS. 18 HAVE_LANGINFO_CODESET=0 19 HAVE_LANGINFO_T_FMT_AMPM=0 20 HAVE_LANGINFO_ALTMON=0 21 HAVE_LANGINFO_ERA=0 22 HAVE_LANGINFO_YESEXPR=0 23 AC_CHECK_HEADERS_ONCE([langinfo.h]) 24 if test $ac_cv_header_langinfo_h = yes; then 25 HAVE_LANGINFO_H=1 26 dnl Determine what <langinfo.h> defines. 27 dnl CODESET is missing on OpenBSD 3.8. 28 dnl ERA etc. are missing on OpenBSD 6.7. 29 dnl T_FMT_AMPM and YESEXPR, NOEXPR are missing on IRIX 5.3. 30 dnl ALTMON_* are missing on glibc 2.26 and many other systems. 31 AC_CACHE_CHECK([whether langinfo.h defines CODESET], 32 [gl_cv_header_langinfo_codeset], 33 [AC_COMPILE_IFELSE( 34 [AC_LANG_PROGRAM([[#include <langinfo.h> 35int a = CODESET; 36]])], 37 [gl_cv_header_langinfo_codeset=yes], 38 [gl_cv_header_langinfo_codeset=no]) 39 ]) 40 if test $gl_cv_header_langinfo_codeset = yes; then 41 HAVE_LANGINFO_CODESET=1 42 fi 43 AC_CACHE_CHECK([whether langinfo.h defines T_FMT_AMPM], 44 [gl_cv_header_langinfo_t_fmt_ampm], 45 [AC_COMPILE_IFELSE( 46 [AC_LANG_PROGRAM([[#include <langinfo.h> 47int a = T_FMT_AMPM; 48]])], 49 [gl_cv_header_langinfo_t_fmt_ampm=yes], 50 [gl_cv_header_langinfo_t_fmt_ampm=no]) 51 ]) 52 if test $gl_cv_header_langinfo_t_fmt_ampm = yes; then 53 HAVE_LANGINFO_T_FMT_AMPM=1 54 fi 55 AC_CACHE_CHECK([whether langinfo.h defines ALTMON_1], 56 [gl_cv_header_langinfo_altmon], 57 [AC_COMPILE_IFELSE( 58 [AC_LANG_PROGRAM([[#include <langinfo.h> 59int a = ALTMON_1; 60]])], 61 [gl_cv_header_langinfo_altmon=yes], 62 [gl_cv_header_langinfo_altmon=no]) 63 ]) 64 if test $gl_cv_header_langinfo_altmon = yes; then 65 HAVE_LANGINFO_ALTMON=1 66 fi 67 AC_CACHE_CHECK([whether langinfo.h defines ERA], 68 [gl_cv_header_langinfo_era], 69 [AC_COMPILE_IFELSE( 70 [AC_LANG_PROGRAM([[#include <langinfo.h> 71int a = ERA; 72]])], 73 [gl_cv_header_langinfo_era=yes], 74 [gl_cv_header_langinfo_era=no]) 75 ]) 76 if test $gl_cv_header_langinfo_era = yes; then 77 HAVE_LANGINFO_ERA=1 78 fi 79 AC_CACHE_CHECK([whether langinfo.h defines YESEXPR], 80 [gl_cv_header_langinfo_yesexpr], 81 [AC_COMPILE_IFELSE( 82 [AC_LANG_PROGRAM([[#include <langinfo.h> 83int a = YESEXPR; 84]])], 85 [gl_cv_header_langinfo_yesexpr=yes], 86 [gl_cv_header_langinfo_yesexpr=no]) 87 ]) 88 if test $gl_cv_header_langinfo_yesexpr = yes; then 89 HAVE_LANGINFO_YESEXPR=1 90 fi 91 else 92 HAVE_LANGINFO_H=0 93 fi 94 AC_SUBST([HAVE_LANGINFO_H]) 95 AC_SUBST([HAVE_LANGINFO_CODESET]) 96 AC_SUBST([HAVE_LANGINFO_T_FMT_AMPM]) 97 AC_SUBST([HAVE_LANGINFO_ALTMON]) 98 AC_SUBST([HAVE_LANGINFO_ERA]) 99 AC_SUBST([HAVE_LANGINFO_YESEXPR]) 100 101 dnl Check for declarations of anything we want to poison if the 102 dnl corresponding gnulib module is not in use. 103 gl_WARN_ON_USE_PREPARE([[#include <langinfo.h> 104 ]], [nl_langinfo]) 105]) 106 107# gl_LANGINFO_MODULE_INDICATOR([modulename]) 108# sets the shell variable that indicates the presence of the given module 109# to a C preprocessor expression that will evaluate to 1. 110# This macro invocation must not occur in macros that are AC_REQUIREd. 111AC_DEFUN([gl_LANGINFO_MODULE_INDICATOR], 112[ 113 dnl Ensure to expand the default settings once only. 114 gl_LANGINFO_H_REQUIRE_DEFAULTS 115 gl_MODULE_INDICATOR_SET_VARIABLE([$1]) 116 dnl Define it also as a C macro, for the benefit of the unit tests. 117 gl_MODULE_INDICATOR_FOR_TESTS([$1]) 118]) 119 120# Initializes the default values for AC_SUBSTed shell variables. 121# This macro must not be AC_REQUIREd. It must only be invoked, and only 122# outside of macros or in macros that are not AC_REQUIREd. 123AC_DEFUN([gl_LANGINFO_H_REQUIRE_DEFAULTS], 124[ 125 m4_defun(GL_MODULE_INDICATOR_PREFIX[_LANGINFO_H_MODULE_INDICATOR_DEFAULTS], [ 126 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_NL_LANGINFO]) 127 ]) 128 m4_require(GL_MODULE_INDICATOR_PREFIX[_LANGINFO_H_MODULE_INDICATOR_DEFAULTS]) 129 AC_REQUIRE([gl_LANGINFO_H_DEFAULTS]) 130]) 131 132AC_DEFUN([gl_LANGINFO_H_DEFAULTS], 133[ 134 dnl Assume proper GNU behavior unless another module says otherwise. 135 HAVE_NL_LANGINFO=1; AC_SUBST([HAVE_NL_LANGINFO]) 136 REPLACE_NL_LANGINFO=0; AC_SUBST([REPLACE_NL_LANGINFO]) 137]) 138