Home | History | Annotate | Download | only in m4
      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