Home | History | Annotate | Line # | Download | only in m4
btowc.m4 revision 1.1
      1 # btowc.m4 serial 11
      2 dnl Copyright (C) 2008-2020 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_BTOWC],
      8 [
      9   AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
     10 
     11   dnl Check whether <wchar.h> is usable at all, first. Otherwise the test
     12   dnl program below may lead to an endless loop. See
     13   dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=42440>.
     14   AC_REQUIRE([gl_WCHAR_H_INLINE_OK])
     15 
     16   AC_CHECK_FUNCS_ONCE([btowc])
     17   if test $ac_cv_func_btowc = no; then
     18     HAVE_BTOWC=0
     19   else
     20 
     21     AC_REQUIRE([AC_PROG_CC])
     22     AC_REQUIRE([gt_LOCALE_FR])
     23     AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
     24 
     25     dnl Cygwin 1.7.2 btowc('\0') is WEOF, not 0.
     26     AC_CACHE_CHECK([whether btowc(0) is correct],
     27       [gl_cv_func_btowc_nul],
     28       [
     29         AC_RUN_IFELSE(
     30           [AC_LANG_SOURCE([[
     31 #include <string.h>
     32 /* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
     33    <wchar.h>.
     34    BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
     35    included before <wchar.h>.  */
     36 #include <stddef.h>
     37 #include <stdio.h>
     38 #include <time.h>
     39 #include <wchar.h>
     40 int main ()
     41 {
     42   if (btowc ('\0') != 0)
     43     return 1;
     44   return 0;
     45 }]])],
     46           [gl_cv_func_btowc_nul=yes],
     47           [gl_cv_func_btowc_nul=no],
     48           [
     49 changequote(,)dnl
     50            case "$host_os" in
     51                       # Guess no on Cygwin.
     52              cygwin*) gl_cv_func_btowc_nul="guessing no" ;;
     53                       # Guess yes on native Windows.
     54              mingw*)  gl_cv_func_btowc_nul="guessing yes" ;;
     55                       # Guess yes otherwise.
     56              *)       gl_cv_func_btowc_nul="guessing yes" ;;
     57            esac
     58 changequote([,])dnl
     59           ])
     60       ])
     61 
     62     dnl IRIX 6.5 btowc(EOF) is 0xFF, not WEOF.
     63     AC_CACHE_CHECK([whether btowc(EOF) is correct],
     64       [gl_cv_func_btowc_eof],
     65       [
     66         dnl Initial guess, used when cross-compiling or when no suitable locale
     67         dnl is present.
     68 changequote(,)dnl
     69         case "$host_os" in
     70                   # Guess no on IRIX.
     71           irix*)  gl_cv_func_btowc_eof="guessing no" ;;
     72                   # Guess yes on native Windows.
     73           mingw*) gl_cv_func_btowc_eof="guessing yes" ;;
     74                   # Guess yes otherwise.
     75           *)      gl_cv_func_btowc_eof="guessing yes" ;;
     76         esac
     77 changequote([,])dnl
     78         if test $LOCALE_FR != none; then
     79           AC_RUN_IFELSE(
     80             [AC_LANG_SOURCE([[
     81 #include <locale.h>
     82 #include <string.h>
     83 /* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
     84    <wchar.h>.
     85    BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
     86    included before <wchar.h>.  */
     87 #include <stddef.h>
     88 #include <stdio.h>
     89 #include <time.h>
     90 #include <wchar.h>
     91 int main ()
     92 {
     93   if (setlocale (LC_ALL, "$LOCALE_FR") != NULL)
     94     {
     95       if (btowc (EOF) != WEOF)
     96         return 1;
     97     }
     98   return 0;
     99 }]])],
    100             [gl_cv_func_btowc_eof=yes],
    101             [gl_cv_func_btowc_eof=no],
    102             [:])
    103         fi
    104       ])
    105 
    106     case "$gl_cv_func_btowc_nul" in
    107       *yes) ;;
    108       *) REPLACE_BTOWC=1 ;;
    109     esac
    110     case "$gl_cv_func_btowc_eof" in
    111       *yes) ;;
    112       *) REPLACE_BTOWC=1 ;;
    113     esac
    114   fi
    115 ])
    116 
    117 # Prerequisites of lib/btowc.c.
    118 AC_DEFUN([gl_PREREQ_BTOWC], [
    119   :
    120 ])
    121