1# locale-ja.m4 serial 15 2dnl Copyright (C) 2003, 2005-2021 Free Software Foundation, Inc. 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 japanese locale with EUC-JP encoding. 10AC_DEFUN([gt_LOCALE_JA], 11[ 12 AC_REQUIRE([AC_CANONICAL_HOST]) 13 AC_REQUIRE([AM_LANGINFO_CODESET]) 14 AC_CACHE_CHECK([for a traditional japanese locale], [gt_cv_locale_ja], [ 15 AC_LANG_CONFTEST([AC_LANG_SOURCE([[ 16#include <locale.h> 17#include <time.h> 18#if HAVE_LANGINFO_CODESET 19# include <langinfo.h> 20#endif 21#include <stdlib.h> 22#include <string.h> 23struct tm t; 24char buf[16]; 25int main () 26{ 27 /* On BeOS and Haiku, locales are not implemented in libc. Rather, libintl 28 imitates locale dependent behaviour by looking at the environment 29 variables, and all locales use the UTF-8 encoding. */ 30#if defined __BEOS__ || defined __HAIKU__ 31 return 1; 32#else 33 /* Check whether the given locale name is recognized by the system. */ 34# if defined _WIN32 && !defined __CYGWIN__ 35 /* On native Windows, setlocale(category, "") looks at the system settings, 36 not at the environment variables. Also, when an encoding suffix such 37 as ".65001" or ".54936" is specified, it succeeds but sets the LC_CTYPE 38 category of the locale to "C". */ 39 if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL 40 || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0) 41 return 1; 42# else 43 if (setlocale (LC_ALL, "") == NULL) return 1; 44# endif 45 /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646". 46 On Mac OS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET) 47 is empty, and the behaviour of Tcl 8.4 in this locale is not useful. 48 On OpenBSD 4.0, when an unsupported locale is specified, setlocale() 49 succeeds but then nl_langinfo(CODESET) is "646". In this situation, 50 some unit tests fail. 51 On MirBSD 10, when an unsupported locale is specified, setlocale() 52 succeeds but then nl_langinfo(CODESET) is "UTF-8". */ 53# if HAVE_LANGINFO_CODESET 54 { 55 const char *cs = nl_langinfo (CODESET); 56 if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0 57 || strcmp (cs, "UTF-8") == 0) 58 return 1; 59 } 60# endif 61# ifdef __CYGWIN__ 62 /* On Cygwin, avoid locale names without encoding suffix, because the 63 locale_charset() function relies on the encoding suffix. Note that 64 LC_ALL is set on the command line. */ 65 if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1; 66# endif 67 /* Check whether MB_CUR_MAX is > 1. This excludes the dysfunctional locales 68 on Cygwin 1.5.x. */ 69 if (MB_CUR_MAX == 1) 70 return 1; 71 /* Check whether in a month name, no byte in the range 0x80..0x9F occurs. 72 This excludes the UTF-8 encoding (except on MirBSD). */ 73 { 74 const char *p; 75 t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4; 76 if (strftime (buf, sizeof (buf), "%B", &t) < 2) return 1; 77 for (p = buf; *p != '\0'; p++) 78 if ((unsigned char) *p >= 0x80 && (unsigned char) *p < 0xa0) 79 return 1; 80 } 81 return 0; 82#endif 83} 84 ]])]) 85 if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then 86 case "$host_os" in 87 # Handle native Windows specially, because there setlocale() interprets 88 # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256", 89 # "fr" or "fra" as "French" or "French_France.1252", 90 # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252", 91 # "ja" as "Japanese" or "Japanese_Japan.932", 92 # and similar. 93 mingw*) 94 # Note that on native Windows, the Japanese locale is 95 # Japanese_Japan.932, and CP932 is very different from EUC-JP, so we 96 # cannot use it here. 97 gt_cv_locale_ja=none 98 ;; 99 *) 100 # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because 101 # otherwise on Mac OS X 10.3.5 the LC_TIME=C from the beginning of the 102 # configure script would override the LC_ALL setting. Likewise for 103 # LC_CTYPE, which is also set at the beginning of the configure script. 104 # Test for the AIX locale name. 105 if (LC_ALL=ja_JP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then 106 gt_cv_locale_ja=ja_JP 107 else 108 # Test for the locale name with explicit encoding suffix. 109 if (LC_ALL=ja_JP.EUC-JP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then 110 gt_cv_locale_ja=ja_JP.EUC-JP 111 else 112 # Test for the HP-UX, OSF/1, NetBSD locale name. 113 if (LC_ALL=ja_JP.eucJP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then 114 gt_cv_locale_ja=ja_JP.eucJP 115 else 116 # Test for the IRIX, FreeBSD locale name. 117 if (LC_ALL=ja_JP.EUC LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then 118 gt_cv_locale_ja=ja_JP.EUC 119 else 120 # Test for the Solaris 7 locale name. 121 if (LC_ALL=ja LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then 122 gt_cv_locale_ja=ja 123 else 124 # Special test for NetBSD 1.6. 125 if test -f /usr/share/locale/ja_JP.eucJP/LC_CTYPE; then 126 gt_cv_locale_ja=ja_JP.eucJP 127 else 128 # None found. 129 gt_cv_locale_ja=none 130 fi 131 fi 132 fi 133 fi 134 fi 135 fi 136 ;; 137 esac 138 fi 139 rm -fr conftest* 140 ]) 141 LOCALE_JA=$gt_cv_locale_ja 142 AC_SUBST([LOCALE_JA]) 143]) 144