1 # wcrtomb.m4 serial 4 2 dnl Copyright (C) 2008-2009 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_WCRTOMB], 8 [ 9 AC_REQUIRE([gl_WCHAR_H_DEFAULTS]) 10 11 AC_REQUIRE([AC_TYPE_MBSTATE_T]) 12 gl_MBSTATE_T_BROKEN 13 if test $REPLACE_MBSTATE_T = 1; then 14 REPLACE_WCRTOMB=1 15 fi 16 AC_CHECK_FUNCS_ONCE([wcrtomb]) 17 if test $ac_cv_func_wcrtomb = no; then 18 HAVE_WCRTOMB=0 19 fi 20 if test $HAVE_WCRTOMB != 0 && test $REPLACE_WCRTOMB != 1; then 21 dnl On AIX 4.3, OSF/1 5.1 and Solaris 10, wcrtomb (NULL, 0, NULL) sometimes 22 dnl returns 0 instead of 1. 23 AC_REQUIRE([AC_PROG_CC]) 24 AC_REQUIRE([gt_LOCALE_FR]) 25 AC_REQUIRE([gt_LOCALE_FR_UTF8]) 26 AC_REQUIRE([gt_LOCALE_JA]) 27 AC_REQUIRE([gt_LOCALE_ZH_CN]) 28 AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles 29 AC_CACHE_CHECK([whether wcrtomb return value is correct], 30 [gl_cv_func_wcrtomb_retval], 31 [ 32 dnl Initial guess, used when cross-compiling or when no suitable locale 33 dnl is present. 34 changequote(,)dnl 35 case "$host_os" in 36 # Guess no on AIX 4, OSF/1 and Solaris. 37 aix4* | osf* | solaris*) gl_cv_func_wcrtomb_retval="guessing no" ;; 38 # Guess yes otherwise. 39 *) gl_cv_func_wcrtomb_retval="guessing yes" ;; 40 esac 41 changequote([,])dnl 42 if test $LOCALE_FR != none || test $LOCALE_FR_UTF8 != none || test $LOCALE_JA != none || test $LOCALE_ZH_CN != none; then 43 AC_TRY_RUN([ 44 #include <locale.h> 45 #include <stdio.h> 46 #include <string.h> 47 #include <wchar.h> 48 int main () 49 { 50 if (setlocale (LC_ALL, "$LOCALE_FR") != NULL) 51 { 52 if (wcrtomb (NULL, 0, NULL) != 1) 53 return 1; 54 } 55 if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL) 56 { 57 if (wcrtomb (NULL, 0, NULL) != 1) 58 return 1; 59 } 60 if (setlocale (LC_ALL, "$LOCALE_JA") != NULL) 61 { 62 if (wcrtomb (NULL, 0, NULL) != 1) 63 return 1; 64 } 65 if (setlocale (LC_ALL, "$LOCALE_ZH_CN") != NULL) 66 { 67 if (wcrtomb (NULL, 0, NULL) != 1) 68 return 1; 69 } 70 return 0; 71 }], 72 [gl_cv_func_wcrtomb_retval=yes], 73 [gl_cv_func_wcrtomb_retval=no], 74 [:]) 75 fi 76 ]) 77 case "$gl_cv_func_wcrtomb_retval" in 78 *yes) ;; 79 *) REPLACE_WCRTOMB=1 ;; 80 esac 81 fi 82 if test $HAVE_WCRTOMB = 0 || test $REPLACE_WCRTOMB = 1; then 83 gl_REPLACE_WCHAR_H 84 AC_LIBOBJ([wcrtomb]) 85 gl_PREREQ_WCRTOMB 86 fi 87 ]) 88 89 # Prerequisites of lib/wcrtomb.c. 90 AC_DEFUN([gl_PREREQ_WCRTOMB], [ 91 : 92 ]) 93