On Fri, 13 Dec 2019, Kacvinsky, Tom wrote:
I am trying to compiler gettext 0.19.8.1 on MinGW-w64 (custom build of
GCC 9.2.0 is being used), and get this error:
gettext-runtime/gnulib-lib/mbsinit.c:32:28: error: invalid operands to
binary == (have 'mbstate_t' {aka 'const struct _Mbstatet'} and 'int')
This file in gnulib, embedded in gettext, is incompatible with UCRT.
The mbstate_t data type used to be defined as a typedef for int, but in
UCRT it's a struct instead, and this breaks the gnulib implementation that
treats it as a plain int.
For some reason, gnulib tries to provide its own function mbsinit (which
is used for checking if an mbstate_t is initialized or not), even if one
is provided. (I guess the reason for this misdetection, is that in UCRT
mode, mbsinit is purely available as an inline function, there's no
function available in the UCRT dll, and the gnulib check might only test
linking without using the right header.)
Perhaps we should provide a custom mbsinit function in the UCRT import
libraries - that should hopefully make gnulib realize the function exists,
and avoid trying to provide it.
// Martin
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public