Blame m4/locale_h.m4

Packit Service c30d13
# locale_h.m4 serial 20
Packit Service c30d13
dnl Copyright (C) 2007, 2009-2018 Free Software Foundation, Inc.
Packit Service c30d13
dnl This file is free software; the Free Software Foundation
Packit Service c30d13
dnl gives unlimited permission to copy and/or distribute it,
Packit Service c30d13
dnl with or without modifications, as long as this notice is preserved.
Packit Service c30d13
Packit Service c30d13
AC_DEFUN([gl_LOCALE_H],
Packit Service c30d13
[
Packit Service c30d13
  dnl Use AC_REQUIRE here, so that the default behavior below is expanded
Packit Service c30d13
  dnl once only, before all statements that occur in other macros.
Packit Service c30d13
  AC_REQUIRE([gl_LOCALE_H_DEFAULTS])
Packit Service c30d13
Packit Service c30d13
  dnl Persuade glibc <locale.h> to define locale_t and the int_p_*, int_n_*
Packit Service c30d13
  dnl members of 'struct lconv'.
Packit Service c30d13
  AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
Packit Service c30d13
Packit Service c30d13
  dnl If <stddef.h> is replaced, then <locale.h> must also be replaced.
Packit Service c30d13
  AC_REQUIRE([gl_STDDEF_H])
Packit Service c30d13
Packit Service c30d13
  dnl Solaris 11.0 defines the int_p_*, int_n_* members of 'struct lconv'
Packit Service c30d13
  dnl only if _LCONV_C99 is defined.
Packit Service c30d13
  AC_REQUIRE([AC_CANONICAL_HOST])
Packit Service c30d13
  case "$host_os" in
Packit Service c30d13
    solaris*)
Packit Service c30d13
      AC_DEFINE([_LCONV_C99], [1], [Define to 1 on Solaris.])
Packit Service c30d13
      ;;
Packit Service c30d13
  esac
Packit Service c30d13
Packit Service c30d13
  AC_CACHE_CHECK([whether locale.h conforms to POSIX:2001],
Packit Service c30d13
    [gl_cv_header_locale_h_posix2001],
Packit Service c30d13
    [AC_COMPILE_IFELSE(
Packit Service c30d13
       [AC_LANG_PROGRAM(
Packit Service c30d13
          [[#include <locale.h>
Packit Service c30d13
            int x = LC_MESSAGES;
Packit Service c30d13
            int y = sizeof (((struct lconv *) 0)->decimal_point);]],
Packit Service c30d13
          [[]])],
Packit Service c30d13
       [gl_cv_header_locale_h_posix2001=yes],
Packit Service c30d13
       [gl_cv_header_locale_h_posix2001=no])])
Packit Service c30d13
Packit Service c30d13
  dnl Check for <xlocale.h>.
Packit Service c30d13
  AC_CHECK_HEADERS_ONCE([xlocale.h])
Packit Service c30d13
  if test $ac_cv_header_xlocale_h = yes; then
Packit Service c30d13
    HAVE_XLOCALE_H=1
Packit Service c30d13
    dnl Check whether use of locale_t requires inclusion of <xlocale.h>,
Packit Service c30d13
    dnl e.g. on Mac OS X 10.5. If <locale.h> does not define locale_t by
Packit Service c30d13
    dnl itself, we assume that <xlocale.h> will do so.
Packit Service c30d13
    AC_CACHE_CHECK([whether locale.h defines locale_t],
Packit Service c30d13
      [gl_cv_header_locale_has_locale_t],
Packit Service c30d13
      [AC_COMPILE_IFELSE(
Packit Service c30d13
         [AC_LANG_PROGRAM(
Packit Service c30d13
            [[#include <locale.h>
Packit Service c30d13
              locale_t x;]],
Packit Service c30d13
            [[]])],
Packit Service c30d13
         [gl_cv_header_locale_has_locale_t=yes],
Packit Service c30d13
         [gl_cv_header_locale_has_locale_t=no])
Packit Service c30d13
      ])
Packit Service c30d13
    if test $gl_cv_header_locale_has_locale_t = yes; then
Packit Service c30d13
      gl_cv_header_locale_h_needs_xlocale_h=no
Packit Service c30d13
    else
Packit Service c30d13
      gl_cv_header_locale_h_needs_xlocale_h=yes
Packit Service c30d13
    fi
Packit Service c30d13
  else
Packit Service c30d13
    HAVE_XLOCALE_H=0
Packit Service c30d13
    gl_cv_header_locale_h_needs_xlocale_h=no
Packit Service c30d13
  fi
Packit Service c30d13
  AC_SUBST([HAVE_XLOCALE_H])
Packit Service c30d13
Packit Service c30d13
  dnl Check whether 'struct lconv' is complete.
Packit Service c30d13
  dnl Bionic libc's 'struct lconv' is just a dummy.
Packit Service c30d13
  dnl On OpenBSD 4.9, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin 1.5.x,
Packit Service c30d13
  dnl mingw, MSVC 9, it lacks the int_p_* and int_n_* members.
Packit Service c30d13
  AC_CACHE_CHECK([whether struct lconv is properly defined],
Packit Service c30d13
    [gl_cv_sys_struct_lconv_ok],
Packit Service c30d13
    [AC_COMPILE_IFELSE(
Packit Service c30d13
       [AC_LANG_PROGRAM(
Packit Service c30d13
          [[#include <locale.h>
Packit Service c30d13
            struct lconv l;
Packit Service c30d13
            int x = sizeof (l.decimal_point);
Packit Service c30d13
            int y = sizeof (l.int_p_cs_precedes);]],
Packit Service c30d13
          [[]])],
Packit Service c30d13
       [gl_cv_sys_struct_lconv_ok=yes],
Packit Service c30d13
       [gl_cv_sys_struct_lconv_ok=no])
Packit Service c30d13
    ])
Packit Service c30d13
  if test $gl_cv_sys_struct_lconv_ok = no; then
Packit Service c30d13
    REPLACE_STRUCT_LCONV=1
Packit Service c30d13
  fi
Packit Service c30d13
Packit Service c30d13
  dnl <locale.h> is always overridden, because of GNULIB_POSIXCHECK.
Packit Service c30d13
  gl_NEXT_HEADERS([locale.h])
Packit Service c30d13
Packit Service c30d13
  dnl Check for declarations of anything we want to poison if the
Packit Service c30d13
  dnl corresponding gnulib module is not in use.
Packit Service c30d13
  gl_WARN_ON_USE_PREPARE([[#include <locale.h>
Packit Service c30d13
/* Some systems provide declarations in a non-standard header.  */
Packit Service c30d13
#if HAVE_XLOCALE_H
Packit Service c30d13
# include <xlocale.h>
Packit Service c30d13
#endif
Packit Service c30d13
    ]],
Packit Service c30d13
    [setlocale duplocale])
Packit Service c30d13
])
Packit Service c30d13
Packit Service c30d13
AC_DEFUN([gl_LOCALE_MODULE_INDICATOR],
Packit Service c30d13
[
Packit Service c30d13
  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
Packit Service c30d13
  AC_REQUIRE([gl_LOCALE_H_DEFAULTS])
Packit Service c30d13
  gl_MODULE_INDICATOR_SET_VARIABLE([$1])
Packit Service c30d13
  dnl Define it also as a C macro, for the benefit of the unit tests.
Packit Service c30d13
  gl_MODULE_INDICATOR_FOR_TESTS([$1])
Packit Service c30d13
])
Packit Service c30d13
Packit Service c30d13
AC_DEFUN([gl_LOCALE_H_DEFAULTS],
Packit Service c30d13
[
Packit Service c30d13
  GNULIB_LOCALECONV=0; AC_SUBST([GNULIB_LOCALECONV])
Packit Service c30d13
  GNULIB_SETLOCALE=0;  AC_SUBST([GNULIB_SETLOCALE])
Packit Service c30d13
  GNULIB_DUPLOCALE=0;  AC_SUBST([GNULIB_DUPLOCALE])
Packit Service c30d13
  dnl Assume proper GNU behavior unless another module says otherwise.
Packit Service c30d13
  HAVE_DUPLOCALE=1;       AC_SUBST([HAVE_DUPLOCALE])
Packit Service c30d13
  REPLACE_LOCALECONV=0;   AC_SUBST([REPLACE_LOCALECONV])
Packit Service c30d13
  REPLACE_SETLOCALE=0;    AC_SUBST([REPLACE_SETLOCALE])
Packit Service c30d13
  REPLACE_DUPLOCALE=0;    AC_SUBST([REPLACE_DUPLOCALE])
Packit Service c30d13
  REPLACE_STRUCT_LCONV=0; AC_SUBST([REPLACE_STRUCT_LCONV])
Packit Service c30d13
])