temporarily disable elisp exception tests
[bpt/guile.git] / m4 / locale-fr.m4
CommitLineData
005de2e8 1# locale-fr.m4 serial 17
5e69ceb7 2dnl Copyright (C) 2003, 2005-2014 Free Software Foundation, Inc.
eb4a14ed
LC
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
7dnl From Bruno Haible.
8
9dnl Determine the name of a french locale with traditional encoding.
10AC_DEFUN([gt_LOCALE_FR],
11[
12 AC_REQUIRE([AC_CANONICAL_HOST])
13 AC_REQUIRE([AM_LANGINFO_CODESET])
14 AC_CACHE_CHECK([for a traditional french locale], [gt_cv_locale_fr], [
15 AC_LANG_CONFTEST([AC_LANG_SOURCE([
16changequote(,)dnl
17#include <locale.h>
18#include <time.h>
19#if HAVE_LANGINFO_CODESET
20# include <langinfo.h>
21#endif
22#include <stdlib.h>
23#include <string.h>
24struct tm t;
25char buf[16];
26int main () {
27 /* Check whether the given locale name is recognized by the system. */
28#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
29 /* On native Windows, setlocale(category, "") looks at the system settings,
30 not at the environment variables. Also, when an encoding suffix such
005de2e8 31 as ".65001" or ".54936" is specified, it succeeds but sets the LC_CTYPE
eb4a14ed
LC
32 category of the locale to "C". */
33 if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
34 || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
35 return 1;
36#else
37 if (setlocale (LC_ALL, "") == NULL) return 1;
38#endif
39 /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
005de2e8 40 On Mac OS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
eb4a14ed
LC
41 is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
42 On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
43 succeeds but then nl_langinfo(CODESET) is "646". In this situation,
44 some unit tests fail.
45 On MirBSD 10, when an unsupported locale is specified, setlocale()
46 succeeds but then nl_langinfo(CODESET) is "UTF-8". */
47#if HAVE_LANGINFO_CODESET
48 {
49 const char *cs = nl_langinfo (CODESET);
50 if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0
51 || strcmp (cs, "UTF-8") == 0)
52 return 1;
53 }
54#endif
55#ifdef __CYGWIN__
56 /* On Cygwin, avoid locale names without encoding suffix, because the
57 locale_charset() function relies on the encoding suffix. Note that
58 LC_ALL is set on the command line. */
59 if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
60#endif
61 /* Check whether in the abbreviation of the second month, the second
62 character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is only
63 one byte long. This excludes the UTF-8 encoding. */
64 t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
65 if (strftime (buf, sizeof (buf), "%b", &t) < 3 || buf[2] != 'v') return 1;
005de2e8 66#if !defined __BIONIC__ /* Bionic libc's 'struct lconv' is just a dummy. */
eb4a14ed
LC
67 /* Check whether the decimal separator is a comma.
68 On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
69 are nl_langinfo(RADIXCHAR) are both ".". */
70 if (localeconv () ->decimal_point[0] != ',') return 1;
005de2e8 71#endif
eb4a14ed
LC
72 return 0;
73}
74changequote([,])dnl
75 ])])
76 if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
77 case "$host_os" in
78 # Handle native Windows specially, because there setlocale() interprets
79 # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
80 # "fr" or "fra" as "French" or "French_France.1252",
81 # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
82 # "ja" as "Japanese" or "Japanese_Japan.932",
83 # and similar.
84 mingw*)
85 # Test for the native Windows locale name.
86 if (LC_ALL=French_France.1252 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
87 gt_cv_locale_fr=French_France.1252
88 else
89 # None found.
90 gt_cv_locale_fr=none
91 fi
92 ;;
93 *)
94 # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
005de2e8 95 # otherwise on Mac OS X 10.3.5 the LC_TIME=C from the beginning of the
eb4a14ed
LC
96 # configure script would override the LC_ALL setting. Likewise for
97 # LC_CTYPE, which is also set at the beginning of the configure script.
98 # Test for the usual locale name.
99 if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
100 gt_cv_locale_fr=fr_FR
101 else
102 # Test for the locale name with explicit encoding suffix.
103 if (LC_ALL=fr_FR.ISO-8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
104 gt_cv_locale_fr=fr_FR.ISO-8859-1
105 else
106 # Test for the AIX, OSF/1, FreeBSD, NetBSD, OpenBSD locale name.
107 if (LC_ALL=fr_FR.ISO8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
108 gt_cv_locale_fr=fr_FR.ISO8859-1
109 else
110 # Test for the HP-UX locale name.
111 if (LC_ALL=fr_FR.iso88591 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
112 gt_cv_locale_fr=fr_FR.iso88591
113 else
114 # Test for the Solaris 7 locale name.
115 if (LC_ALL=fr LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
116 gt_cv_locale_fr=fr
117 else
118 # None found.
119 gt_cv_locale_fr=none
120 fi
121 fi
122 fi
123 fi
124 fi
125 ;;
126 esac
127 fi
128 rm -fr conftest*
129 ])
130 LOCALE_FR=$gt_cv_locale_fr
131 AC_SUBST([LOCALE_FR])
132])
133
134dnl Determine the name of a french locale with UTF-8 encoding.
135AC_DEFUN([gt_LOCALE_FR_UTF8],
136[
137 AC_REQUIRE([AM_LANGINFO_CODESET])
138 AC_CACHE_CHECK([for a french Unicode locale], [gt_cv_locale_fr_utf8], [
139 AC_LANG_CONFTEST([AC_LANG_SOURCE([
140changequote(,)dnl
141#include <locale.h>
142#include <time.h>
143#if HAVE_LANGINFO_CODESET
144# include <langinfo.h>
145#endif
146#include <stdlib.h>
147#include <string.h>
148struct tm t;
149char buf[16];
150int main () {
151 /* On BeOS and Haiku, locales are not implemented in libc. Rather, libintl
152 imitates locale dependent behaviour by looking at the environment
153 variables, and all locales use the UTF-8 encoding. */
154#if !(defined __BEOS__ || defined __HAIKU__)
155 /* Check whether the given locale name is recognized by the system. */
156# if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
157 /* On native Windows, setlocale(category, "") looks at the system settings,
158 not at the environment variables. Also, when an encoding suffix such
005de2e8 159 as ".65001" or ".54936" is specified, it succeeds but sets the LC_CTYPE
eb4a14ed
LC
160 category of the locale to "C". */
161 if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
162 || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
163 return 1;
164# else
165 if (setlocale (LC_ALL, "") == NULL) return 1;
166# endif
167 /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
005de2e8 168 On Mac OS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
eb4a14ed
LC
169 is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
170 On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
171 succeeds but then nl_langinfo(CODESET) is "646". In this situation,
172 some unit tests fail. */
173# if HAVE_LANGINFO_CODESET
174 {
175 const char *cs = nl_langinfo (CODESET);
176 if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
177 return 1;
178 }
179# endif
180# ifdef __CYGWIN__
181 /* On Cygwin, avoid locale names without encoding suffix, because the
182 locale_charset() function relies on the encoding suffix. Note that
183 LC_ALL is set on the command line. */
184 if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
185# endif
186 /* Check whether in the abbreviation of the second month, the second
187 character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is
188 two bytes long, with UTF-8 encoding. */
189 t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
190 if (strftime (buf, sizeof (buf), "%b", &t) < 4
191 || buf[1] != (char) 0xc3 || buf[2] != (char) 0xa9 || buf[3] != 'v')
192 return 1;
193#endif
005de2e8 194#if !defined __BIONIC__ /* Bionic libc's 'struct lconv' is just a dummy. */
eb4a14ed
LC
195 /* Check whether the decimal separator is a comma.
196 On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
197 are nl_langinfo(RADIXCHAR) are both ".". */
198 if (localeconv () ->decimal_point[0] != ',') return 1;
005de2e8 199#endif
eb4a14ed
LC
200 return 0;
201}
202changequote([,])dnl
203 ])])
204 if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
205 case "$host_os" in
206 # Handle native Windows specially, because there setlocale() interprets
207 # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
208 # "fr" or "fra" as "French" or "French_France.1252",
209 # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
210 # "ja" as "Japanese" or "Japanese_Japan.932",
211 # and similar.
212 mingw*)
213 # Test for the hypothetical native Windows locale name.
214 if (LC_ALL=French_France.65001 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
215 gt_cv_locale_fr_utf8=French_France.65001
216 else
217 # None found.
218 gt_cv_locale_fr_utf8=none
219 fi
220 ;;
221 *)
222 # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
005de2e8 223 # otherwise on Mac OS X 10.3.5 the LC_TIME=C from the beginning of the
eb4a14ed
LC
224 # configure script would override the LC_ALL setting. Likewise for
225 # LC_CTYPE, which is also set at the beginning of the configure script.
226 # Test for the usual locale name.
227 if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
228 gt_cv_locale_fr_utf8=fr_FR
229 else
230 # Test for the locale name with explicit encoding suffix.
231 if (LC_ALL=fr_FR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
232 gt_cv_locale_fr_utf8=fr_FR.UTF-8
233 else
234 # Test for the Solaris 7 locale name.
235 if (LC_ALL=fr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
236 gt_cv_locale_fr_utf8=fr.UTF-8
237 else
238 # None found.
239 gt_cv_locale_fr_utf8=none
240 fi
241 fi
242 fi
243 ;;
244 esac
245 fi
246 rm -fr conftest*
247 ])
248 LOCALE_FR_UTF8=$gt_cv_locale_fr_utf8
249 AC_SUBST([LOCALE_FR_UTF8])
250])