Commit | Line | Data |
---|---|---|
3d458a81 | 1 | # locale_h.m4 serial 14 |
f0007cad | 2 | dnl Copyright (C) 2007, 2009-2012 Free Software Foundation, Inc. |
414e4441 LC |
3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | |
5 | dnl with or without modifications, as long as this notice is preserved. | |
6 | ||
7 | AC_DEFUN([gl_LOCALE_H], | |
8 | [ | |
9 | dnl Use AC_REQUIRE here, so that the default behavior below is expanded | |
10 | dnl once only, before all statements that occur in other macros. | |
11 | AC_REQUIRE([gl_LOCALE_H_DEFAULTS]) | |
12 | ||
13 | dnl Persuade glibc <locale.h> to define locale_t. | |
14 | AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) | |
15 | ||
16 | dnl If <stddef.h> is replaced, then <locale.h> must also be replaced. | |
17 | AC_REQUIRE([gl_STDDEF_H]) | |
18 | ||
19 | AC_CACHE_CHECK([whether locale.h conforms to POSIX:2001], | |
20 | [gl_cv_header_locale_h_posix2001], | |
9157d901 LC |
21 | [AC_COMPILE_IFELSE( |
22 | [AC_LANG_PROGRAM( | |
23 | [[#include <locale.h> | |
24 | int x = LC_MESSAGES;]], | |
25 | [[]])], | |
414e4441 LC |
26 | [gl_cv_header_locale_h_posix2001=yes], |
27 | [gl_cv_header_locale_h_posix2001=no])]) | |
28 | ||
29 | dnl Check for <xlocale.h>. | |
30 | AC_CHECK_HEADERS_ONCE([xlocale.h]) | |
31 | if test $ac_cv_header_xlocale_h = yes; then | |
32 | HAVE_XLOCALE_H=1 | |
33 | dnl Check whether use of locale_t requires inclusion of <xlocale.h>, | |
34 | dnl e.g. on MacOS X 10.5. If <locale.h> does not define locale_t by | |
35 | dnl itself, we assume that <xlocale.h> will do so. | |
36 | AC_CACHE_CHECK([whether locale.h defines locale_t], | |
37 | [gl_cv_header_locale_has_locale_t], | |
9157d901 LC |
38 | [AC_COMPILE_IFELSE( |
39 | [AC_LANG_PROGRAM( | |
40 | [[#include <locale.h> | |
41 | locale_t x;]], | |
42 | [[]])], | |
414e4441 LC |
43 | [gl_cv_header_locale_has_locale_t=yes], |
44 | [gl_cv_header_locale_has_locale_t=no]) | |
45 | ]) | |
46 | if test $gl_cv_header_locale_has_locale_t = yes; then | |
47 | gl_cv_header_locale_h_needs_xlocale_h=no | |
48 | else | |
49 | gl_cv_header_locale_h_needs_xlocale_h=yes | |
50 | fi | |
51 | else | |
52 | HAVE_XLOCALE_H=0 | |
53 | gl_cv_header_locale_h_needs_xlocale_h=no | |
54 | fi | |
55 | AC_SUBST([HAVE_XLOCALE_H]) | |
56 | ||
61cd9dc9 | 57 | dnl <locale.h> is always overridden, because of GNULIB_POSIXCHECK. |
49114fd4 | 58 | gl_NEXT_HEADERS([locale.h]) |
414e4441 | 59 | |
61cd9dc9 LC |
60 | dnl Check for declarations of anything we want to poison if the |
61 | dnl corresponding gnulib module is not in use. | |
62 | gl_WARN_ON_USE_PREPARE([[#include <locale.h> | |
63 | /* Some systems provide declarations in a non-standard header. */ | |
64 | #if HAVE_XLOCALE_H | |
65 | # include <xlocale.h> | |
66 | #endif | |
49114fd4 LC |
67 | ]], |
68 | [setlocale duplocale]) | |
414e4441 LC |
69 | ]) |
70 | ||
414e4441 LC |
71 | AC_DEFUN([gl_LOCALE_MODULE_INDICATOR], |
72 | [ | |
73 | dnl Use AC_REQUIRE here, so that the default settings are expanded once only. | |
74 | AC_REQUIRE([gl_LOCALE_H_DEFAULTS]) | |
a927b6c1 | 75 | gl_MODULE_INDICATOR_SET_VARIABLE([$1]) |
f4c79b3c | 76 | dnl Define it also as a C macro, for the benefit of the unit tests. |
a927b6c1 | 77 | gl_MODULE_INDICATOR_FOR_TESTS([$1]) |
414e4441 LC |
78 | ]) |
79 | ||
80 | AC_DEFUN([gl_LOCALE_H_DEFAULTS], | |
81 | [ | |
49114fd4 | 82 | GNULIB_SETLOCALE=0; AC_SUBST([GNULIB_SETLOCALE]) |
414e4441 LC |
83 | GNULIB_DUPLOCALE=0; AC_SUBST([GNULIB_DUPLOCALE]) |
84 | dnl Assume proper GNU behavior unless another module says otherwise. | |
f4c79b3c | 85 | HAVE_DUPLOCALE=1; AC_SUBST([HAVE_DUPLOCALE]) |
49114fd4 | 86 | REPLACE_SETLOCALE=0; AC_SUBST([REPLACE_SETLOCALE]) |
414e4441 | 87 | REPLACE_DUPLOCALE=0; AC_SUBST([REPLACE_DUPLOCALE]) |
414e4441 | 88 | ]) |