• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1dnl A placeholder for ISO C99 <wchar.h>, for platforms that have issues.
2
3dnl Copyright (C) 2007-2009 Free Software Foundation, Inc.
4dnl This file is free software; the Free Software Foundation
5dnl gives unlimited permission to copy and/or distribute it,
6dnl with or without modifications, as long as this notice is preserved.
7
8dnl Written by Eric Blake.
9
10# wchar.m4 serial 23
11
12AC_DEFUN([gl_WCHAR_H],
13[
14  AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
15  AC_CACHE_CHECK([whether <wchar.h> is standalone],
16    [gl_cv_header_wchar_h_standalone],
17    [AC_COMPILE_IFELSE([[#include <wchar.h>
18wchar_t w;]],
19      [gl_cv_header_wchar_h_standalone=yes],
20      [gl_cv_header_wchar_h_standalone=no])])
21
22  AC_REQUIRE([gt_TYPE_WINT_T])
23  if test $gt_cv_c_wint_t = yes; then
24    HAVE_WINT_T=1
25  else
26    HAVE_WINT_T=0
27  fi
28  AC_SUBST([HAVE_WINT_T])
29
30  if test $gl_cv_header_wchar_h_standalone != yes || test $gt_cv_c_wint_t != yes; then
31    WCHAR_H=wchar.h
32  fi
33
34  dnl Prepare for creating substitute <wchar.h>.
35  dnl Do it always: WCHAR_H may be empty here but can be set later.
36  dnl Check for <wchar.h> (missing in Linux uClibc when built without wide
37  dnl character support).
38  AC_CHECK_HEADERS_ONCE([wchar.h])
39  if test $ac_cv_header_wchar_h = yes; then
40    HAVE_WCHAR_H=1
41  else
42    HAVE_WCHAR_H=0
43  fi
44  AC_SUBST([HAVE_WCHAR_H])
45  gl_CHECK_NEXT_HEADERS([wchar.h])
46])
47
48dnl Unconditionally enables the replacement of <wchar.h>.
49AC_DEFUN([gl_REPLACE_WCHAR_H],
50[
51  AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
52  WCHAR_H=wchar.h
53])
54
55AC_DEFUN([gl_WCHAR_MODULE_INDICATOR],
56[
57  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
58  AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
59  GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
60])
61
62AC_DEFUN([gl_WCHAR_H_DEFAULTS],
63[
64  GNULIB_BTOWC=0;      AC_SUBST([GNULIB_BTOWC])
65  GNULIB_WCTOB=0;      AC_SUBST([GNULIB_WCTOB])
66  GNULIB_MBSINIT=0;    AC_SUBST([GNULIB_MBSINIT])
67  GNULIB_MBRTOWC=0;    AC_SUBST([GNULIB_MBRTOWC])
68  GNULIB_MBRLEN=0;     AC_SUBST([GNULIB_MBRLEN])
69  GNULIB_MBSRTOWCS=0;  AC_SUBST([GNULIB_MBSRTOWCS])
70  GNULIB_MBSNRTOWCS=0; AC_SUBST([GNULIB_MBSNRTOWCS])
71  GNULIB_WCRTOMB=0;    AC_SUBST([GNULIB_WCRTOMB])
72  GNULIB_WCSRTOMBS=0;  AC_SUBST([GNULIB_WCSRTOMBS])
73  GNULIB_WCSNRTOMBS=0; AC_SUBST([GNULIB_WCSNRTOMBS])
74  GNULIB_WCWIDTH=0;    AC_SUBST([GNULIB_WCWIDTH])
75  dnl Assume proper GNU behavior unless another module says otherwise.
76  HAVE_BTOWC=1;         AC_SUBST([HAVE_BTOWC])
77  HAVE_MBSINIT=1;       AC_SUBST([HAVE_MBSINIT])
78  HAVE_MBRTOWC=1;       AC_SUBST([HAVE_MBRTOWC])
79  HAVE_MBRLEN=1;        AC_SUBST([HAVE_MBRLEN])
80  HAVE_MBSRTOWCS=1;     AC_SUBST([HAVE_MBSRTOWCS])
81  HAVE_MBSNRTOWCS=1;    AC_SUBST([HAVE_MBSNRTOWCS])
82  HAVE_WCRTOMB=1;       AC_SUBST([HAVE_WCRTOMB])
83  HAVE_WCSRTOMBS=1;     AC_SUBST([HAVE_WCSRTOMBS])
84  HAVE_WCSNRTOMBS=1;    AC_SUBST([HAVE_WCSNRTOMBS])
85  HAVE_DECL_WCTOB=1;    AC_SUBST([HAVE_DECL_WCTOB])
86  HAVE_DECL_WCWIDTH=1;  AC_SUBST([HAVE_DECL_WCWIDTH])
87  REPLACE_MBSTATE_T=0;  AC_SUBST([REPLACE_MBSTATE_T])
88  REPLACE_BTOWC=0;      AC_SUBST([REPLACE_BTOWC])
89  REPLACE_WCTOB=0;      AC_SUBST([REPLACE_WCTOB])
90  REPLACE_MBSINIT=0;    AC_SUBST([REPLACE_MBSINIT])
91  REPLACE_MBRTOWC=0;    AC_SUBST([REPLACE_MBRTOWC])
92  REPLACE_MBRLEN=0;     AC_SUBST([REPLACE_MBRLEN])
93  REPLACE_MBSRTOWCS=0;  AC_SUBST([REPLACE_MBSRTOWCS])
94  REPLACE_MBSNRTOWCS=0; AC_SUBST([REPLACE_MBSNRTOWCS])
95  REPLACE_WCRTOMB=0;    AC_SUBST([REPLACE_WCRTOMB])
96  REPLACE_WCSRTOMBS=0;  AC_SUBST([REPLACE_WCSRTOMBS])
97  REPLACE_WCSNRTOMBS=0; AC_SUBST([REPLACE_WCSNRTOMBS])
98  REPLACE_WCWIDTH=0;    AC_SUBST([REPLACE_WCWIDTH])
99  WCHAR_H='';           AC_SUBST([WCHAR_H])
100])
101