Re: Texinfo 7.2.90 build with mingw.org's MinGW: Gnulib

Eli Zaretskii <[email protected]>
Newsgroups gmane.comp.tex.texinfo.bugs
Message-ID <[email protected]>
> Date: Wed, 14 Jan 2026 18:54:53 +0200
> From: Eli Zaretskii <[email protected]>
> Cc: [email protected], [email protected]
> 
> Once configure step succeeded, I ran "make".  I found several
> Gnulib-related problems:
> 
>      gcc -DHAVE_CONFIG_H -I. -I../..   -Id:/usr/include  -Wno-cast-qual -Wno-conversion -Wno-float-equal -Wno-sign-compare -Wno-undef -Wno-unused-function -Wno-unused-parameter -Wno-float-conversion -Wimplicit-fallthrough -Wno-pedantic -Wno-sign-conversion -Wno-type-limits -Wno-unused-const-variable -Wno-unsuffixed-float-constants -Wno-error -O2 -gdwarf-4 -g3 -MT libgnu_a-btowc.o -MD -MP -MF .deps/libgnu_a-btowc.Tpo -c -o libgnu_a-btowc.o `test -f 'btowc.c' || echo './'`btowc.c
>      In file included from ./wctype.h:56,
> 		      from d:\usr\include\wchar.h:62,
> 		      from ./wchar.h:77,
> 		      from btowc.c:21:
>      ./wchar.h:923:1: error: unknown type name 'mbstate_t'
>        923 | _GL_FUNCDECL_RPL (mbsinit, int, (const mbstate_t *ps), );
> 	   | ^~~~~~~~~~~~~~~~
>      In file included from ./wctype.h:56,
> 		      from d:\usr\include\wchar.h:62,
> 		      from ./wchar.h:77,
> 		      from btowc.c:21:
>      ./wchar.h:1135:10: error: unknown type name 'mbstate_t'
>       1135 | mbszero (mbstate_t *ps)
> 	   |          ^~~~~~~~~
>      In file included from ./wctype.h:56,
> 		      from d:\usr\include\wchar.h:62,
> 		      from ./wchar.h:77,
> 		      from btowc.c:21:
>      d:\usr\lib\gcc\mingw32\9.2.0\include\stddef.h:350:23: error: conflicting types for '
>      rpl_wint_t'
>        350 | typedef __WINT_TYPE__ wint_t;
> 	   |                       ^~~~~~
>      ./wchar.h:740:22: note: previous declaration of 'rpl_wint_t' was here
>        740 | typedef unsigned int rpl_wint_t;
> 	   |                      ^~~~~~~~~~
>      In file included from ./wctype.h:56,
> 		      from d:\usr\include\wchar.h:62,
> 		      from ./wchar.h:77,
> 		      from btowc.c:21:
>      d:\usr\include\wchar.h:539:33: error: conflicting types for 'rpl_btowc'
>        539 | __cdecl __MINGW_NOTHROW  wint_t btowc (int);
> 	   |                                 ^~~~~
>      In file included from ./wctype.h:56,
> 		      from d:\usr\include\wchar.h:62,
> 		      from ./wchar.h:77,
> 		      from btowc.c:21:
>      ./wchar.h:869:1: note: previous declaration of 'rpl_btowc' was here
>        869 | _GL_FUNCDECL_RPL (btowc, wint_t, (int c), _GL_ATTRIBUTE_PURE);
> 	   | ^~~~~~~~~~~~~~~~
>      In file included from ./wctype.h:56,
> 		      from d:\usr\include\wchar.h:62,
> 		      from ./wchar.h:77,
> 		      from btowc.c:21:
>      btowc.c:28:1: error: conflicting types for 'rpl_btowc'
> 	28 | btowc (int c)
> 	   | ^~~~~
>      In file included from ./wctype.h:56,
> 		      from d:\usr\include\wchar.h:62,
> 		      from ./wchar.h:77,
> 		      from btowc.c:21:
>      ./wchar.h:869:1: note: previous declaration of 'rpl_btowc' was here
>        869 | _GL_FUNCDECL_RPL (btowc, wint_t, (int c), _GL_ATTRIBUTE_PURE);
> 	   | ^~~~~~~~~~~~~~~~
>      btowc.c: In function 'rpl_btowc':
>      btowc.c:38:7: warning: implicit declaration of function 'mbszero' [-Wimplicit-function-declaration]
> 	38 |       mbszero (&state);
> 	   |       ^~~~~~~
>      Makefile:2934: recipe for target `libgnu_a-btowc.o' failed
>      make[4]: *** [libgnu_a-btowc.o] Error 1
> 
> This is because the MinGW wchar.h includes wctype.h, so we include the
> Gnulib's version of it, and that one then turns around and includes
> wchar.h again.  But because the MinGW wchar.h was not yet completely
> processed, mbstate_t is not yet defined.
> 
> I don't know how to solve this cleanly.  I hope Bruno will know.  The
> kludge I used was not to include wchar.h from wctype.h.  The original
> Gnulib's wctype.h includes wchar.h twice:
> 
> #if 1
> /* Solaris 2.5 has a bug: <wchar.h> must be included before <wctype.h>.  */
> # include <wchar.h>
> #endif
> 
> /* Native Windows (mingw, MSVC) have declarations of towupper, towlower, and
>    isw* functions in <ctype.h>, <wchar.h> as well as in <wctype.h>.  Include
>    <ctype.h>, <wchar.h> in advance to avoid rpl_ prefix being added to the
>    declarations.  */
> #if defined _WIN32 && ! defined __CYGWIN__
> # include <ctype.h>
> # include <wchar.h>
> #endif
> 
> I needed to remove both these lines.
> 
> Another Gnulib-related problem was with stdio-consolesafe.c:
> 
>      gcc -DHAVE_CONFIG_H -I. -I../..   -Id:/usr/include  -Wno-cast-qual -Wno-conversion -Wno-float-equal -Wno-sign-compare -Wno-undef -Wno-unused-function -Wno-unused-parameter -Wno-float-conversion -Wimplicit-fallthrough -Wno-pedantic -Wno-sign-conversion -Wno-type-limits -Wno-unused-const-variable -Wno-unsuffixed-float-constants -Wno-error -O2 -gdwarf-4 -g3 -MT libgnu_a-stdio-consolesafe.o -MD -MP -MF .deps/libgnu_a-stdio-consolesafe.Tpo -c -o libgnu_a-stdio-consolesafe.o `test -f 'stdio-consolesafe.c' || echo './'`stdio-consolesafe.c
>      stdio-consolesafe.c:88:1: error: static declaration of 'vasprintf' follows non-static declaration
> 	88 | vasprintf (char **resultp, const char *format, va_list args)
> 	   | ^~~~~~~~~
>      In file included from stdio-consolesafe.c:20:
>      ./stdio.h:2346:1: note: previous declaration of 'vasprintf' was here
>       2346 | _GL_FUNCDECL_SYS (vasprintf, int,
> 	   | ^~~~~~~~~~~~~~~~
> 
> I originally just removed the 'static' qualifier from the version of
> vasprintf included in stdio-consolesafe.c, but that failed the link
> step further down the line, because Gnulib also includes vasprintf.c,
> which the MinGW build compiles and links against.  So, again as a
> temporary kludge, I renamed the vasprintf in stdio-consolesafe.c to
> rpl_vasprintf, and that solved the compilation and link problems.
> Again, I hope Bruno will be able to suggest a clean solution.

Bruno, any suggestions?  Or did I miss your responses?
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.