summaryrefslogtreecommitdiff
path: root/m4/mbstate_t.m4
blob: 693613324792195bf7692edf1dbd7760ad5bf415 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# serial 5

# From Paul Eggert.

# Some versions of BeOS define mbstate_t to be an incomplete type,
# so you can't declare an object of that type.
# Check for this incompatibility with Standard C.

# Include stdlib.h first, because otherwise this test would fail on Linux
# (at least glibc-2.1.3) because the `_XOPEN_SOURCE 500' definition elicits
# a syntax error in wchar.h due to the use of undefined __int32_t.

AC_DEFUN(AC_MBSTATE_T_OBJECT,
  [
   AC_CHECK_HEADERS(stdlib.h)

   AC_CACHE_CHECK([for mbstate_t], ac_cv_type_mbstate_t,
    [AC_TRY_COMPILE([
#if HAVE_STDLIB_H
# include <stdlib.h>
#endif
#include <wchar.h>],
      [mbstate_t *x; return sizeof x;],
      ac_cv_type_mbstate_t=yes,
      ac_cv_type_mbstate_t=no)])
   if test $ac_cv_type_mbstate_t != yes; then
     AC_DEFINE(mbstate_t, int,
	       [Define to int if <wchar.h> does not define.])
   fi

   AC_CACHE_CHECK([for mbstate_t object type], ac_cv_type_mbstate_t_object,
    [AC_TRY_COMPILE([
#if HAVE_STDLIB_H
# include <stdlib.h>
#endif
#include <wchar.h>],
      [mbstate_t x; return sizeof x;],
      ac_cv_type_mbstate_t_object=yes,
      ac_cv_type_mbstate_t_object=no)])
   if test $ac_cv_type_mbstate_t_object = yes; then
     AC_DEFINE(HAVE_MBSTATE_T_OBJECT, 1,
	       [Define if mbstate_t is an object type.])
   fi])