1 | # setlocale.m4 serial 7
|
---|
2 | dnl Copyright (C) 2011-2021 Free Software Foundation, Inc.
|
---|
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_FUNC_SETLOCALE],
|
---|
8 | [
|
---|
9 | AC_REQUIRE([gl_LOCALE_H_DEFAULTS])
|
---|
10 | AC_REQUIRE([gl_FUNC_SETLOCALE_NULL])
|
---|
11 | AC_REQUIRE([AC_CANONICAL_HOST])
|
---|
12 |
|
---|
13 | dnl Test whether we need to improve on the general working of setlocale.
|
---|
14 | NEED_SETLOCALE_IMPROVED=0
|
---|
15 | case "$host_os" in
|
---|
16 | dnl On native Windows systems, setlocale(category,NULL) does not look at
|
---|
17 | dnl the environment variables LC_ALL, category, and LANG.
|
---|
18 | mingw*) NEED_SETLOCALE_IMPROVED=1 ;;
|
---|
19 | dnl On Cygwin 1.5.x, setlocale always succeeds but setlocale(LC_CTYPE,NULL)
|
---|
20 | dnl is then still "C".
|
---|
21 | cygwin*)
|
---|
22 | case `uname -r` in
|
---|
23 | 1.5.*) NEED_SETLOCALE_IMPROVED=1 ;;
|
---|
24 | esac
|
---|
25 | ;;
|
---|
26 | dnl On Android 4.3, setlocale(category,"C") always fails.
|
---|
27 | *)
|
---|
28 | AC_CACHE_CHECK([whether setlocale supports the C locale],
|
---|
29 | [gl_cv_func_setlocale_works],
|
---|
30 | [AC_RUN_IFELSE(
|
---|
31 | [AC_LANG_SOURCE([[
|
---|
32 | #include <locale.h>
|
---|
33 | int main ()
|
---|
34 | {
|
---|
35 | return setlocale (LC_ALL, "C") == NULL;
|
---|
36 | }]])],
|
---|
37 | [gl_cv_func_setlocale_works=yes],
|
---|
38 | [gl_cv_func_setlocale_works=no],
|
---|
39 | [case "$host_os" in
|
---|
40 | # Guess no on Android.
|
---|
41 | linux*-android*) gl_cv_func_setlocale_works="guessing no";;
|
---|
42 | # Guess yes otherwise.
|
---|
43 | *) gl_cv_func_setlocale_works="guessing yes";;
|
---|
44 | esac
|
---|
45 | ])
|
---|
46 | ])
|
---|
47 | case "$gl_cv_func_setlocale_works" in
|
---|
48 | *yes) ;;
|
---|
49 | *) NEED_SETLOCALE_IMPROVED=1 ;;
|
---|
50 | esac
|
---|
51 | ;;
|
---|
52 | esac
|
---|
53 | AC_DEFINE_UNQUOTED([NEED_SETLOCALE_IMPROVED], [$NEED_SETLOCALE_IMPROVED],
|
---|
54 | [Define to 1 to enable general improvements of setlocale.])
|
---|
55 |
|
---|
56 | dnl Test whether we need a multithread-safe setlocale(category,NULL).
|
---|
57 | NEED_SETLOCALE_MTSAFE=0
|
---|
58 | if test $SETLOCALE_NULL_ALL_MTSAFE = 0 || test $SETLOCALE_NULL_ONE_MTSAFE = 0; then
|
---|
59 | NEED_SETLOCALE_MTSAFE=1
|
---|
60 | fi
|
---|
61 | AC_DEFINE_UNQUOTED([NEED_SETLOCALE_MTSAFE], [$NEED_SETLOCALE_MTSAFE],
|
---|
62 | [Define to 1 to enable a multithread-safety fix of setlocale.])
|
---|
63 |
|
---|
64 | if test $NEED_SETLOCALE_IMPROVED = 1 || test $NEED_SETLOCALE_MTSAFE = 1; then
|
---|
65 | REPLACE_SETLOCALE=1
|
---|
66 | fi
|
---|
67 |
|
---|
68 | if test $NEED_SETLOCALE_MTSAFE = 1; then
|
---|
69 | LIB_SETLOCALE="$LIB_SETLOCALE_NULL"
|
---|
70 | else
|
---|
71 | LIB_SETLOCALE=
|
---|
72 | fi
|
---|
73 | dnl LIB_SETLOCALE is expected to be '-pthread' or '-lpthread' on AIX with gcc
|
---|
74 | dnl or xlc, and empty otherwise.
|
---|
75 | AC_SUBST([LIB_SETLOCALE])
|
---|
76 | ])
|
---|
77 |
|
---|
78 | # Prerequisites of lib/setlocale.c.
|
---|
79 | AC_DEFUN([gl_PREREQ_SETLOCALE],
|
---|
80 | [
|
---|
81 | dnl No need to check for CFLocaleCopyPreferredLanguages and
|
---|
82 | dnl CFPreferencesCopyAppValue because lib/setlocale.c is not used on Mac OS X.
|
---|
83 | dnl (The Mac OS X specific code is only used in libintl.)
|
---|
84 | :
|
---|
85 | ])
|
---|