-# serial 1
+# serial 6
# From Paul Eggert.
# 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_CACHE_CHECK([for mbstate_t object type], ac_cv_type_mbstate_t_object,
- [AC_TRY_COMPILE([#include <wchar.h>],
+ [
+ AC_CHECK_HEADERS(stdlib.h)
+
+ AC_CACHE_CHECK([for mbstate_t object], 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.])
+ else
+ 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
fi])