When using a stdin.h from gnulib with Perl's extension headers (e.g. XSUB.h), under MinGW there can be compiler warnings due to redefinition of an fdopen symbol. This was reported here (point 1):
https://lists.gnu.org/archive/html/bug-texinfo/2021-02/msg00152.html We don't use fdopen in the program so it would be better if we didn't have to interact with this part of Gnulib. Is there any way of turning this off? The relevant part of stdin.in.h is the following: #elif @GNULIB_MDA_FDOPEN@ /* On native Windows, map 'fdopen' to '_fdopen', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::fdopen always. */ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fdopen # define fdopen _fdopen # endif _GL_CXXALIAS_MDA (fdopen, FILE *, (int fd, const char *mode)); # else _GL_CXXALIAS_SYS (fdopen, FILE *, (int fd, const char *mode)); # endif _GL_CXXALIASWARN (fdopen); #endif Is there any way of turning this off? We didn't use the stdio module explicitly but it was a dependency of other Gnulib modules. I saw this message from when some of the current code was introduced: https://lists.gnu.org/archive/html/bug-gnulib/2020-12/msg00220.html It says in that message, Conditionalize each of the Windows oldnames workarounds through a GNULIB_MDA_<func> symbol. What would be the recommended way of doing this? Is it AC_SUBST([GNULIB_MDA_FDOPEN]) or something else? I don't know what MDA means and don't want to be hooking into Gnulib internals with a process of sheer trial and error. TIA