+#include <sys/types.h>
+
+// TODO: fix mingw32 x86 or drop support and use x86_x64
+// copied from x86_64-4.8.3-release-posix-seh-rt_v3-rev0 for mingw32 x86 4.8.1
+#if defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR)
+ // from winsock2.h
+ #define POLLRDNORM 0x0100
+ #define POLLRDBAND 0x0200
+ #define POLLIN (POLLRDNORM | POLLRDBAND)
+ #define POLLPRI 0x0400
+
+ #define POLLWRNORM 0x0010
+ #define POLLOUT (POLLWRNORM)
+ #define POLLWRBAND 0x0020
+
+ #define POLLERR 0x0001
+ #define POLLHUP 0x0002
+ #define POLLNVAL 0x0004
+
+ typedef struct pollfd {
+ SOCKET fd;
+ short events;
+ short revents;
+ } WSAPOLLFD, *PWSAPOLLFD, *LPWSAPOLLFD;
+
+ // to fix redefenition of 'timespec' defined in pthread.h and parts/time.h used by simple-watch.c
+ #define HAVE_STRUCT_TIMESPEC
+
+ // from ws2ipdef.h
+ #define IPV6_HOPOPTS 1
+ #define IPV6_HDRINCL 2
+ #define IPV6_UNICAST_HOPS 4
+ #define IPV6_MULTICAST_IF 9
+ #define IPV6_MULTICAST_HOPS 10
+ #define IPV6_MULTICAST_LOOP 11
+ #define IPV6_ADD_MEMBERSHIP 12
+ #define IPV6_JOIN_GROUP IPV6_ADD_MEMBERSHIP
+ #define IPV6_DROP_MEMBERSHIP 13
+ #define IPV6_LEAVE_GROUP IPV6_DROP_MEMBERSHIP
+ #define IPV6_DONTFRAG 14
+ #define IPV6_PKTINFO 19
+ #define IPV6_HOPLIMIT 21
+ #define IPV6_PROTECTION_LEVEL 23
+ #define IPV6_RECVIF 24
+ #define IPV6_RECVDSTADDR 25
+ #define IPV6_CHECKSUM 26
+ #define IPV6_V6ONLY 27
+ #define IPV6_IFLIST 28
+ #define IPV6_ADD_IFLIST 29
+ #define IPV6_DEL_IFLIST 30
+ #define IPV6_UNICAST_IF 31
+ #define IPV6_RTHDR 32
+ #define IPV6_RECVRTHDR 38
+ #define IPV6_TCLASS 39
+ #define IPV6_RECVTCLASS 40
+
+ // from errno.h
+ #ifndef EADDRINUSE
+ #define EADDRINUSE 100
+ #endif
+
+ #ifndef EWOULDBLOCK
+ #define EWOULDBLOCK 140
+ #endif
+
+ // from mswsock.h
+ #define MSG_TRUNC 0x0100
+ #define MSG_CTRUNC 0x0200
+
+ // from netioapi.h
+ //.... lots of dependencies x-(
+ // TODO: fix mingw32 x86 or drop support and use x86_x64
+#endif