xref: /Universal-ctags/m4/langinfo_h.m4 (revision 820c1a8d46849a90376d8eb15b319ac05439f656)
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