Commit | Line | Data |
---|---|---|
a927b6c1 LC |
1 | # locale_h.m4 serial 10 |
2 | dnl Copyright (C) 2007, 2009-2010 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], | |
21 | [AC_TRY_COMPILE([#include <locale.h> | |
22 | int x = LC_MESSAGES;], [], | |
23 | [gl_cv_header_locale_h_posix2001=yes], | |
24 | [gl_cv_header_locale_h_posix2001=no])]) | |
25 | ||
26 | dnl Check for <xlocale.h>. | |
27 | AC_CHECK_HEADERS_ONCE([xlocale.h]) | |
28 | if test $ac_cv_header_xlocale_h = yes; then | |
29 | HAVE_XLOCALE_H=1 | |
30 | dnl Check whether use of locale_t requires inclusion of <xlocale.h>, | |
31 | dnl e.g. on MacOS X 10.5. If <locale.h> does not define locale_t by | |
32 | dnl itself, we assume that <xlocale.h> will do so. | |
33 | AC_CACHE_CHECK([whether locale.h defines locale_t], | |
34 | [gl_cv_header_locale_has_locale_t], | |
35 | [AC_TRY_COMPILE([#include <locale.h> | |
36 | locale_t x;], [], | |
37 | [gl_cv_header_locale_has_locale_t=yes], | |
38 | [gl_cv_header_locale_has_locale_t=no]) | |
39 | ]) | |
40 | if test $gl_cv_header_locale_has_locale_t = yes; then | |
41 | gl_cv_header_locale_h_needs_xlocale_h=no | |
42 | else | |
43 | gl_cv_header_locale_h_needs_xlocale_h=yes | |
44 | fi | |
45 | else | |
46 | HAVE_XLOCALE_H=0 | |
47 | gl_cv_header_locale_h_needs_xlocale_h=no | |
48 | fi | |
49 | AC_SUBST([HAVE_XLOCALE_H]) | |
50 | ||
61cd9dc9 | 51 | dnl <locale.h> is always overridden, because of GNULIB_POSIXCHECK. |
414e4441 LC |
52 | gl_CHECK_NEXT_HEADERS([locale.h]) |
53 | ||
54 | if test -n "$STDDEF_H" \ | |
55 | || test $gl_cv_header_locale_h_posix2001 = no \ | |
56 | || test $gl_cv_header_locale_h_needs_xlocale_h = yes; then | |
57 | gl_REPLACE_LOCALE_H | |
58 | fi | |
61cd9dc9 LC |
59 | |
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 | |
67 | ]], [duplocale]) | |
414e4441 LC |
68 | ]) |
69 | ||
70 | dnl Unconditionally enables the replacement of <locale.h>. | |
71 | AC_DEFUN([gl_REPLACE_LOCALE_H], | |
72 | [ | |
61cd9dc9 LC |
73 | dnl This is a no-op, because <locale.h> is always overridden. |
74 | : | |
414e4441 LC |
75 | ]) |
76 | ||
77 | AC_DEFUN([gl_LOCALE_MODULE_INDICATOR], | |
78 | [ | |
79 | dnl Use AC_REQUIRE here, so that the default settings are expanded once only. | |
80 | AC_REQUIRE([gl_LOCALE_H_DEFAULTS]) | |
a927b6c1 | 81 | gl_MODULE_INDICATOR_SET_VARIABLE([$1]) |
f4c79b3c | 82 | dnl Define it also as a C macro, for the benefit of the unit tests. |
a927b6c1 | 83 | gl_MODULE_INDICATOR_FOR_TESTS([$1]) |
414e4441 LC |
84 | ]) |
85 | ||
86 | AC_DEFUN([gl_LOCALE_H_DEFAULTS], | |
87 | [ | |
88 | GNULIB_DUPLOCALE=0; AC_SUBST([GNULIB_DUPLOCALE]) | |
89 | dnl Assume proper GNU behavior unless another module says otherwise. | |
f4c79b3c | 90 | HAVE_DUPLOCALE=1; AC_SUBST([HAVE_DUPLOCALE]) |
414e4441 | 91 | REPLACE_DUPLOCALE=0; AC_SUBST([REPLACE_DUPLOCALE]) |
414e4441 | 92 | ]) |