On OSF/1 5.1 with cc, but not with gcc, the test "checking whether wctob works" fails, because the test program does not include all prerequisites of <wchar.h>:
configure:63150: cc -O -o conftest -ieee conftest.c >&5 cc: Error: /usr/include.dtk/wchar.h, line 78: Ill-formed parameter type list. (p armtyplist) __VA_LIST__ __arg); ----------------^ cc: Error: /usr/include.dtk/wchar.h, line 83: Ill-formed parameter type list. (p armtyplist) __VA_LIST__ __arg); ----------------^ cc: Error: /usr/include.dtk/wchar.h, line 87: Ill-formed parameter type list. (p armtyplist) __VA_LIST__ __arg); ----------------^ configure:63150: $? = 1 We knew about this prerequisites, but did not apply them consistently. This patch fixes it. 2010-12-25 Bruno Haible <br...@clisp.org> Ensure all prerequisites of <wchar.h> are included. * m4/btowc.m4 (gl_FUNC_BTOWC): Include <stddef.h>, <stdio.h>, <time.h> before <wchar.h>. * m4/mbrlen.m4 (gl_MBRLEN_INCOMPLETE_STATE, gl_MBRLEN_RETVAL, gl_MBRLEN_NUL_RETVAL): Likewise. * m4/mbrtowc.m4 (gl_MBRTOWC_INCOMPLETE_STATE, gl_MBRTOWC_SANITYCHECK, gl_MBRTOWC_NULL_ARG, gl_MBRTOWC_RETVAL, gl_MBRTOWC_NUL_RETVAL, AC_FUNC_MBRTOWC): Likewise. * m4/mbsrtowcs.m4 (gl_MBSRTOWCS_WORKS): Likewise. * m4/mbstate_t.m4 (AC_TYPE_MBSTATE_T): Likewise. * m4/wcrtomb.m4 (gl_FUNC_WCRTOMB): Likewise. * m4/wcsrtombs.m4 (gl_WCSRTOMBS_TERMINATION, gl_WCSRTOMBS_NULL): Likewise. * m4/wctob.m4 (gl_FUNC_WCTOB): Likewise. * m4/wchar_h.m4 (gl_WCHAR_H_INLINE_OK): Likewise. (gl_WCHAR_H): Improve comments. * m4/wctype_h.m4 (gl_WCTYPE_H): Likewise. --- m4/btowc.m4.orig Sat Dec 25 11:11:57 2010 +++ m4/btowc.m4 Sat Dec 25 11:05:58 2010 @@ -1,4 +1,4 @@ -# btowc.m4 serial 7 +# btowc.m4 serial 8 dnl Copyright (C) 2008-2010 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -28,8 +28,14 @@ [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ -#include <stdio.h> #include <string.h> +/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before + <wchar.h>. + BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be + included before <wchar.h>. */ +#include <stddef.h> +#include <stdio.h> +#include <time.h> #include <wchar.h> int main () { @@ -69,8 +75,14 @@ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include <locale.h> -#include <stdio.h> #include <string.h> +/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before + <wchar.h>. + BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be + included before <wchar.h>. */ +#include <stddef.h> +#include <stdio.h> +#include <time.h> #include <wchar.h> int main () { --- m4/mbrlen.m4.orig Sat Dec 25 11:11:57 2010 +++ m4/mbrlen.m4 Sat Dec 25 10:58:01 2010 @@ -1,4 +1,4 @@ -# mbrlen.m4 serial 4 +# mbrlen.m4 serial 5 dnl Copyright (C) 2008, 2010 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -56,6 +56,13 @@ [AC_LANG_SOURCE([[ #include <locale.h> #include <string.h> +/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before + <wchar.h>. + BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be + included before <wchar.h>. */ +#include <stddef.h> +#include <stdio.h> +#include <time.h> #include <wchar.h> int main () { @@ -107,6 +114,13 @@ [AC_LANG_SOURCE([[ #include <locale.h> #include <string.h> +/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before + <wchar.h>. + BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be + included before <wchar.h>. */ +#include <stddef.h> +#include <stdio.h> +#include <time.h> #include <wchar.h> int main () { @@ -174,6 +188,13 @@ [AC_LANG_SOURCE([[ #include <locale.h> #include <string.h> +/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before + <wchar.h>. + BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be + included before <wchar.h>. */ +#include <stddef.h> +#include <stdio.h> +#include <time.h> #include <wchar.h> int main () { --- m4/mbrtowc.m4.orig Sat Dec 25 11:11:57 2010 +++ m4/mbrtowc.m4 Sat Dec 25 11:01:59 2010 @@ -1,4 +1,4 @@ -# mbrtowc.m4 serial 19 +# mbrtowc.m4 serial 20 dnl Copyright (C) 2001-2002, 2004-2005, 2008-2010 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation @@ -112,6 +112,13 @@ [AC_LANG_SOURCE([[ #include <locale.h> #include <string.h> +/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before + <wchar.h>. + BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be + included before <wchar.h>. */ +#include <stddef.h> +#include <stdio.h> +#include <time.h> #include <wchar.h> int main () { @@ -162,6 +169,13 @@ #include <locale.h> #include <stdlib.h> #include <string.h> +/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before + <wchar.h>. + BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be + included before <wchar.h>. */ +#include <stddef.h> +#include <stdio.h> +#include <time.h> #include <wchar.h> int main () { @@ -214,6 +228,13 @@ [AC_LANG_SOURCE([[ #include <locale.h> #include <string.h> +/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before + <wchar.h>. + BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be + included before <wchar.h>. */ +#include <stddef.h> +#include <stdio.h> +#include <time.h> #include <wchar.h> int main () { @@ -268,6 +289,13 @@ [AC_LANG_SOURCE([[ #include <locale.h> #include <string.h> +/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before + <wchar.h>. + BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be + included before <wchar.h>. */ +#include <stddef.h> +#include <stdio.h> +#include <time.h> #include <wchar.h> int main () { @@ -337,6 +365,13 @@ [AC_LANG_SOURCE([[ #include <locale.h> #include <string.h> +/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before + <wchar.h>. + BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be + included before <wchar.h>. */ +#include <stddef.h> +#include <stdio.h> +#include <time.h> #include <wchar.h> int main () { @@ -367,10 +402,8 @@ dnl From Paul Eggert -dnl This override of an autoconf macro can be removed when autoconf 2.60 or -dnl newer can be assumed everywhere. +dnl This is an override of an autoconf macro. -m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.60]),[-1],[ AC_DEFUN([AC_FUNC_MBRTOWC], [ dnl Same as AC_FUNC_MBRTOWC in autoconf-2.60. @@ -378,7 +411,14 @@ gl_cv_func_mbrtowc, [AC_LINK_IFELSE( [AC_LANG_PROGRAM( - [[#include <wchar.h>]], + [[/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be + included before <wchar.h>. + BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> + must be included before <wchar.h>. */ + #include <stddef.h> + #include <stdio.h> + #include <time.h> + #include <wchar.h>]], [[wchar_t wc; char const s[] = ""; size_t n = 1; @@ -391,4 +431,3 @@ [Define to 1 if mbrtowc and mbstate_t are properly declared.]) fi ]) -]) --- m4/mbsrtowcs.m4.orig Sat Dec 25 11:11:57 2010 +++ m4/mbsrtowcs.m4 Sat Dec 25 11:09:06 2010 @@ -1,4 +1,4 @@ -# mbsrtowcs.m4 serial 8 +# mbsrtowcs.m4 serial 9 dnl Copyright (C) 2008-2010 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -61,6 +61,13 @@ [AC_LANG_SOURCE([[ #include <locale.h> #include <string.h> +/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before + <wchar.h>. + BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be + included before <wchar.h>. */ +#include <stddef.h> +#include <stdio.h> +#include <time.h> #include <wchar.h> int main () { --- m4/mbstate_t.m4.orig Sat Dec 25 11:11:57 2010 +++ m4/mbstate_t.m4 Sat Dec 25 11:06:52 2010 @@ -1,4 +1,4 @@ -# mbstate_t.m4 serial 12 +# mbstate_t.m4 serial 13 dnl Copyright (C) 2000-2002, 2008-2010 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -20,7 +20,14 @@ [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [AC_INCLUDES_DEFAULT[ -# include <wchar.h>]], +/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before + <wchar.h>. + BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be + included before <wchar.h>. */ +#include <stddef.h> +#include <stdio.h> +#include <time.h> +#include <wchar.h>]], [[mbstate_t x; return sizeof x;]])], [ac_cv_type_mbstate_t=yes], [ac_cv_type_mbstate_t=no])]) --- m4/wchar_h.m4.orig Sat Dec 25 11:11:57 2010 +++ m4/wchar_h.m4 Sat Dec 25 10:59:45 2010 @@ -7,7 +7,7 @@ dnl Written by Eric Blake. -# wchar_h.m4 serial 35 +# wchar_h.m4 serial 36 AC_DEFUN([gl_WCHAR_H], [ @@ -39,7 +39,10 @@ dnl Check for declarations of anything we want to poison if the dnl corresponding gnulib module is not in use. gl_WARN_ON_USE_PREPARE([[ -/* Some systems require additional headers. */ +/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before + <wchar.h>. + BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be + included before <wchar.h>. */ #if !(defined __GLIBC__ && !defined __UCLIBC__) # include <stddef.h> # include <stdio.h> @@ -63,6 +66,13 @@ [gl_cv_header_wchar_h_correct_inline=yes AC_LANG_CONFTEST([ AC_LANG_SOURCE([[#define wcstod renamed_wcstod +/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before + <wchar.h>. + BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be + included before <wchar.h>. */ +#include <stddef.h> +#include <stdio.h> +#include <time.h> #include <wchar.h> extern int zero (void); int main () { return zero(); } @@ -71,6 +81,13 @@ mv conftest.$ac_objext conftest1.$ac_objext AC_LANG_CONFTEST([ AC_LANG_SOURCE([[#define wcstod renamed_wcstod +/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before + <wchar.h>. + BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be + included before <wchar.h>. */ +#include <stddef.h> +#include <stdio.h> +#include <time.h> #include <wchar.h> int zero (void) { return 0; } ]])]) --- m4/wcrtomb.m4.orig Sat Dec 25 11:11:57 2010 +++ m4/wcrtomb.m4 Sat Dec 25 11:10:50 2010 @@ -1,4 +1,4 @@ -# wcrtomb.m4 serial 7 +# wcrtomb.m4 serial 8 dnl Copyright (C) 2008-2010 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -43,8 +43,14 @@ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include <locale.h> -#include <stdio.h> #include <string.h> +/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before + <wchar.h>. + BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be + included before <wchar.h>. */ +#include <stddef.h> +#include <stdio.h> +#include <time.h> #include <wchar.h> int main () { --- m4/wcsrtombs.m4.orig Sat Dec 25 11:11:57 2010 +++ m4/wcsrtombs.m4 Sat Dec 25 11:10:04 2010 @@ -1,4 +1,4 @@ -# wcsrtombs.m4 serial 6 +# wcsrtombs.m4 serial 7 dnl Copyright (C) 2008-2010 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -72,6 +72,13 @@ [AC_LANG_SOURCE([[ #include <locale.h> #include <stdlib.h> +/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before + <wchar.h>. + BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be + included before <wchar.h>. */ +#include <stddef.h> +#include <stdio.h> +#include <time.h> #include <wchar.h> int main () { @@ -127,6 +134,13 @@ [AC_LANG_SOURCE([[ #include <locale.h> #include <stdlib.h> +/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before + <wchar.h>. + BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be + included before <wchar.h>. */ +#include <stddef.h> +#include <stdio.h> +#include <time.h> #include <wchar.h> int main () { --- m4/wctob.m4.orig Sat Dec 25 11:11:57 2010 +++ m4/wctob.m4 Sat Dec 25 11:09:42 2010 @@ -1,4 +1,4 @@ -# wctob.m4 serial 6 +# wctob.m4 serial 7 dnl Copyright (C) 2008-2010 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -41,6 +41,13 @@ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include <locale.h> +/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before + <wchar.h>. + BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be + included before <wchar.h>. */ +#include <stddef.h> +#include <stdio.h> +#include <time.h> #include <wchar.h> register long global __asm__ ("%ebx"); @@ -66,6 +73,13 @@ [AC_LANG_SOURCE([[ #include <locale.h> #include <string.h> +/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before + <wchar.h>. + BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be + included before <wchar.h>. */ +#include <stddef.h> +#include <stdio.h> +#include <time.h> #include <wchar.h> int main () { --- m4/wctype_h.m4.orig Sat Dec 25 11:11:58 2010 +++ m4/wctype_h.m4 Sat Dec 25 11:08:39 2010 @@ -1,4 +1,4 @@ -# wctype_h.m4 serial 9 +# wctype_h.m4 serial 10 dnl A placeholder for ISO C99 <wctype.h>, for platforms that lack it. @@ -53,13 +53,19 @@ dnl The other functions are likely broken in the same way. AC_CACHE_CHECK([whether iswcntrl works], [gl_cv_func_iswcntrl_works], [ - AC_RUN_IFELSE([AC_LANG_SOURCE([[ - #include <stddef.h> - #include <stdio.h> - #include <time.h> - #include <wchar.h> - #include <wctype.h> - int main () { return iswprint ('x') == 0; }]])], + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ + /* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be + included before <wchar.h>. + BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> + must be included before <wchar.h>. */ + #include <stddef.h> + #include <stdio.h> + #include <time.h> + #include <wchar.h> + #include <wctype.h> + int main () { return iswprint ('x') == 0; } + ]])], [gl_cv_func_iswcntrl_works=yes], [gl_cv_func_iswcntrl_works=no], [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdlib.h> #if __GNU_LIBRARY__ == 1