From a734086a9b2783d74f01f8f5ac10d7b601c07120 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Sun, 30 Jun 2019 14:43:44 +0200 Subject: [PATCH] poll-h: Fix compilation error on mingw with _WIN32_WINNT >= 0x0600. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Reported by Hannes Müller . * lib/poll.in.h: Include . (POLL*, pollfd): Override on native Windows. * m4/poll_h.m4 (gl_POLL_H): Invoke gl_PREREQ_SYS_H_WINSOCK2. * modules/poll-h (Files): Add m4/sys_socket_h.m4. (Makefile.am): Substitute HAVE_WINSOCK2_H. --- ChangeLog | 10 ++++++++++ lib/poll.in.h | 22 ++++++++++++++++++++++ m4/poll_h.m4 | 4 +++- modules/poll-h | 2 ++ 4 files changed, 37 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index e808c30a06..6fe1531a04 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2019-06-30 Bruno Haible + + poll-h: Fix compilation error on mingw with _WIN32_WINNT >= 0x0600. + Reported by Hannes Müller . + * lib/poll.in.h: Include . + (POLL*, pollfd): Override on native Windows. + * m4/poll_h.m4 (gl_POLL_H): Invoke gl_PREREQ_SYS_H_WINSOCK2. + * modules/poll-h (Files): Add m4/sys_socket_h.m4. + (Makefile.am): Substitute HAVE_WINSOCK2_H. + 2019-06-28 Bruno Haible accept4: Fix compilation error on OpenIndiana. diff --git a/lib/poll.in.h b/lib/poll.in.h index 5cf65665b8..0b115dcb31 100644 --- a/lib/poll.in.h +++ b/lib/poll.in.h @@ -33,6 +33,13 @@ #ifndef _@GUARD_PREFIX@_POLL_H #define _@GUARD_PREFIX@_POLL_H +/* On native Windows, get the 'struct pollfd' type and the POLL* macro + definitions before we override them. mingw defines them in + if _WIN32_WINNT >= 0x0600. */ +#if @HAVE_WINSOCK2_H@ +# include +#endif + /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ @@ -41,6 +48,21 @@ #if !@HAVE_POLL_H@ +# if @HAVE_WINSOCK2_H@ +/* Override the definitions from . */ +# undef POLLIN +# undef POLLPRI +# undef POLLOUT +# undef POLLERR +# undef POLLHUP +# undef POLLNVAL +# undef POLLRDNORM +# undef POLLRDBAND +# undef POLLWRNORM +# undef POLLWRBAND +# define pollfd rpl_pollfd +# endif + /* fake a poll(2) environment */ # define POLLIN 0x0001 /* any readable data available */ # define POLLPRI 0x0002 /* OOB/Urgent readable data */ diff --git a/m4/poll_h.m4 b/m4/poll_h.m4 index 94de19b488..8f0e105287 100644 --- a/m4/poll_h.m4 +++ b/m4/poll_h.m4 @@ -1,4 +1,4 @@ -# poll_h.m4 serial 2 +# poll_h.m4 serial 3 dnl Copyright (C) 2010-2019 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -23,6 +23,8 @@ AC_DEFUN([gl_POLL_H], dnl is always overridden, because of GNULIB_POSIXCHECK. gl_CHECK_NEXT_HEADERS([poll.h]) + gl_PREREQ_SYS_H_WINSOCK2 dnl for HAVE_WINSOCK2_H + 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([[#include ]], diff --git a/modules/poll-h b/modules/poll-h index c1d3969f41..3c68758991 100644 --- a/modules/poll-h +++ b/modules/poll-h @@ -4,6 +4,7 @@ A POSIX-like . Files: lib/poll.in.h m4/poll_h.m4 +m4/sys_socket_h.m4 Depends-on: extensions @@ -29,6 +30,7 @@ poll.h: poll.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H) -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_POLL_H''@|$(NEXT_POLL_H)|g' \ -e 's/@''GNULIB_POLL''@/$(GNULIB_POLL)/g' \ + -e 's|@''HAVE_WINSOCK2_H''@|$(HAVE_WINSOCK2_H)|g' \ -e 's|@''HAVE_POLL''@|$(HAVE_POLL)|g' \ -e 's|@''REPLACE_POLL''@|$(REPLACE_POLL)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -- 2.39.5