mingw add win32helper to lib and fix extpoll

Based on work from Radu Sorici <soriciradu@gmail.com>

Signed-off-by: Andy Green <andy.green@linaro.org>
diff --git a/lib/Makefile.am b/lib/Makefile.am
index fec6cd4..119366f 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -24,7 +24,7 @@
 
 if MINGW
 libwebsockets_la_CFLAGS+= -w -I../win32port/win32helpers -I ../win32port/zlib/
-libwebsockets_la_LDFLAGS+= -lm -luser32 -ladvapi32 -lkernel32 -lgcc -lpthread -ldl -lws2_32 -L../win32port/zlib -L../win32port/win32helpers/ -lwebsock-w32
+libwebsockets_la_LDFLAGS+= -lm -luser32 -ladvapi32 -lkernel32 -lgcc
 else
 libwebsockets_la_CFLAGS+= -rdynamic -fPIC -Werror
 libwebsockets_la_LDFLAGS+=  -version-info 0:3
diff --git a/lib/Makefile.in b/lib/Makefile.in
index 3604ce3..b1b8783 100644
--- a/lib/Makefile.in
+++ b/lib/Makefile.in
@@ -38,7 +38,7 @@
 @EXT_GOOGLE_MUX_TRUE@am__append_1 = extension-x-google-mux.c
 @LIBCRYPTO_FALSE@am__append_2 = md5.c sha-1.c
 @MINGW_TRUE@am__append_3 = -w -I../win32port/win32helpers -I ../win32port/zlib/
-@MINGW_TRUE@am__append_4 = -lm -luser32 -ladvapi32 -lkernel32 -lgcc -lpthread -ldl -lws2_32 -L../win32port/zlib -L../win32port/win32helpers/ -lwebsock-w32
+@MINGW_TRUE@am__append_4 = -lm -luser32 -ladvapi32 -lkernel32 -lgcc
 @MINGW_FALSE@am__append_5 = -rdynamic -fPIC -Werror
 @MINGW_FALSE@am__append_6 = -version-info 0:3
 subdir = lib
diff --git a/lib/libwebsockets.c b/lib/libwebsockets.c
index ebd54ba..9e22a16 100644
--- a/lib/libwebsockets.c
+++ b/lib/libwebsockets.c
@@ -32,6 +32,14 @@
 int openssl_websocket_private_data_index;
 #endif
 
+#ifdef __MINGW32__
+#include "../win32port/win32helpers/websock-w32.c"
+#else
+#ifdef __MINGW64__
+#include "../win32port/win32helpers/websock-w32.c"
+#endif
+#endif
+
 /*
  * In-place str to lower case
  */
diff --git a/libwebsockets-api-doc.html b/libwebsockets-api-doc.html
index 98e1e66..afffe0d 100644
--- a/libwebsockets-api-doc.html
+++ b/libwebsockets-api-doc.html
@@ -863,6 +863,7 @@
 &nbsp; &nbsp; <i>const char *</i> <b>name</b>;<br>
 &nbsp; &nbsp; <i>int (*</i><b>callback</b>) <i>(struct libwebsocket_context *context,struct libwebsocket_extension *ext,struct libwebsocket *wsi,enum libwebsocket_extension_callback_reasons reason,void *user, void *in, size_t len)</i>;<br>
 &nbsp; &nbsp; <i>size_t</i> <b>per_session_data_size</b>;<br>
+&nbsp; &nbsp; <i>void *</i> <b>per_context_private_data</b>;<br>
 };<br>
 <h3>Members</h3>
 <dl>
@@ -874,5 +875,9 @@
 <dd>Libwebsockets will auto-malloc this much
 memory for the use of the extension, a pointer
 to it comes in the <tt><b>user</b></tt> callback parameter
+<dt><b>per_context_private_data</b>
+<dd>Optional storage for this externsion that
+is per-context, so it can track stuff across
+all sessions, etc, if it wants
 </dl>
 <hr>
diff --git a/test-server/Makefile.am b/test-server/Makefile.am
index 09da2e9..d2b85f1 100644
--- a/test-server/Makefile.am
+++ b/test-server/Makefile.am
@@ -14,10 +14,10 @@
 libwebsockets_test_server_extpoll_CFLAGS:= -w  -I../win32port/win32helpers
 libwebsockets_test_fraggle_CFLAGS:= -w   -I../win32port/win32helpers
 
-libwebsockets_test_server_LDADD+= -lm -luser32 -ladvapi32 -lkernel32 -lgcc -lpthread -ldl -lws2_32 -lz -L../win32port/win32helpers/ -lwebsock-w32
-libwebsockets_test_client_LDADD+= -lm -luser32 -ladvapi32 -lkernel32 -lgcc -lpthread -ldl -lws2_32 -lz -L../win32port/win32helpers/ -lwebsock-w32
-libwebsockets_test_server_extpoll_LDADD+= -lm -luser32 -ladvapi32 -lkernel32 -lgcc -lpthread -ldl -lws2_32 -lz -L../win32port/win32helpers/ -lwebsock-w32
-libwebsockets_test_fraggle_LDADD+= -lm -luser32 -ladvapi32 -lkernel32 -lgcc -lpthread -ldl -lws2_32 -lz -L../win32port/win32helpers/ -lwebsock-w32
+libwebsockets_test_server_LDADD+= -lm -luser32 -ladvapi32 -lkernel32 -lgcc -lws2_32 -lz
+libwebsockets_test_client_LDADD+= -lm -luser32 -ladvapi32 -lkernel32 -lgcc -lws2_32 -lz 
+libwebsockets_test_server_extpoll_LDADD+= -lm -luser32 -ladvapi32 -lkernel32 -lgcc -lws2_32 -lz
+libwebsockets_test_fraggle_LDADD+= -lm -luser32 -ladvapi32 -lkernel32 -lgcc -lws2_32 -lz
 
 else
 libwebsockets_test_server_CFLAGS:= -Werror
diff --git a/test-server/Makefile.in b/test-server/Makefile.in
index 5beb753..b7615c9 100644
--- a/test-server/Makefile.in
+++ b/test-server/Makefile.in
@@ -38,10 +38,10 @@
 	libwebsockets-test-client$(EXEEXT) \
 	libwebsockets-test-server-extpoll$(EXEEXT) \
 	libwebsockets-test-fraggle$(EXEEXT) $(am__EXEEXT_1)
-@MINGW_TRUE@am__append_1 = -lm -luser32 -ladvapi32 -lkernel32 -lgcc -lpthread -ldl -lws2_32 -lz -L../win32port/win32helpers/ -lwebsock-w32
-@MINGW_TRUE@am__append_2 = -lm -luser32 -ladvapi32 -lkernel32 -lgcc -lpthread -ldl -lws2_32 -lz -L../win32port/win32helpers/ -lwebsock-w32
-@MINGW_TRUE@am__append_3 = -lm -luser32 -ladvapi32 -lkernel32 -lgcc -lpthread -ldl -lws2_32 -lz -L../win32port/win32helpers/ -lwebsock-w32
-@MINGW_TRUE@am__append_4 = -lm -luser32 -ladvapi32 -lkernel32 -lgcc -lpthread -ldl -lws2_32 -lz -L../win32port/win32helpers/ -lwebsock-w32
+@MINGW_TRUE@am__append_1 = -lm -luser32 -ladvapi32 -lkernel32 -lgcc -lws2_32 -lz
+@MINGW_TRUE@am__append_2 = -lm -luser32 -ladvapi32 -lkernel32 -lgcc -lws2_32 -lz 
+@MINGW_TRUE@am__append_3 = -lm -luser32 -ladvapi32 -lkernel32 -lgcc -lws2_32 -lz
+@MINGW_TRUE@am__append_4 = -lm -luser32 -ladvapi32 -lkernel32 -lgcc -lws2_32 -lz
 @NOPING_FALSE@am__append_5 = libwebsockets-test-ping
 subdir = test-server
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
diff --git a/test-server/test-server-extpoll.c b/test-server/test-server-extpoll.c
index 1ad3fb5..0b44d8a 100644
--- a/test-server/test-server-extpoll.c
+++ b/test-server/test-server-extpoll.c
@@ -30,7 +30,15 @@
 #include <getopt.h>
 #include <string.h>
 #include <sys/time.h>
+#ifdef __MINGW32__
+#include "../win32port/win32helpers/websock-w32.h"
+#else
+#ifdef __MINGW64__
+#include "../win32port/win32helpers/websock-w32.h"
+#else
 #include <poll.h>
+#endif
+#endif
 
 #include "../lib/libwebsockets.h"
 
@@ -428,9 +436,9 @@
 {
 	int n = 0;
 	const char *cert_path =
-			    LOCAL_RESOURCE_PATH"/libwebsockets-test-server.pem";
+			   LOCAL_RESOURCE_PATH"/libwebsockets-test-server.pem";
 	const char *key_path =
-			LOCAL_RESOURCE_PATH"/libwebsockets-test-server.key.pem";
+		       LOCAL_RESOURCE_PATH"/libwebsockets-test-server.key.pem";
 	unsigned char buf[LWS_SEND_BUFFER_PRE_PADDING + 1024 +
 						  LWS_SEND_BUFFER_POST_PADDING];
 	int port = 7681;
@@ -439,7 +447,7 @@
 	int opts = 0;
 	unsigned int oldus = 0;
 	char interface_name[128] = "";
-	const char * interface = NULL;
+	const char *interface_ptr = NULL;
 
 	fprintf(stderr, "libwebsockets test server with external poll()\n"
 			"(C) Copyright 2010-2011 Andy Green <andy@warmcat.com> "
@@ -462,7 +470,7 @@
 		case 'i':
 			strncpy(interface_name, optarg, sizeof interface_name);
 			interface_name[(sizeof interface_name) - 1] = '\0';
-			interface = interface_name;
+			interface_ptr = interface_name;
 			break;
 		case 'h':
 			fprintf(stderr, "Usage: test-server "
@@ -474,7 +482,7 @@
 	if (!use_ssl)
 		cert_path = key_path = NULL;
 
-	context = libwebsocket_create_context(port, interface, protocols,
+	context = libwebsocket_create_context(port, interface_ptr, protocols,
 					libwebsocket_internal_extensions,
 					cert_path, key_path, -1, -1, opts);
 	if (context == NULL) {
diff --git a/win32port/win32helpers/websock-w32.c b/win32port/win32helpers/websock-w32.c
index d412c0c..bec150b 100644
--- a/win32port/win32helpers/websock-w32.c
+++ b/win32port/win32helpers/websock-w32.c
@@ -1,6 +1,15 @@
 #define FD_SETSIZE 256
 
+#ifdef __MINGW32__
+#include <winsock2.h>
+#else
+#ifdef __MINGW64__
+#include <winsock2.h>
+#else
 #include <WinSock2.h>
+#endif
+#endif
+
 #include <stdlib.h>
 #include <errno.h>
 #include "websock-w32.h"
diff --git a/win32port/win32helpers/websock-w32.h b/win32port/win32helpers/websock-w32.h
index 2483a8f..dfd99ca 100644
--- a/win32port/win32helpers/websock-w32.h
+++ b/win32port/win32helpers/websock-w32.h
@@ -28,6 +28,8 @@
 

 #ifdef DEF_POLL_STUFF

 

+#include <winsock2.h>

+

 typedef struct pollfd {

 	SOCKET fd;

 	short  events;