summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlon Bar-Lev <alon.barlev@gmail.com>2011-03-04 23:14:33 +0200
committerDavid Sommerseth <davids@redhat.com>2011-03-24 21:58:25 +0100
commitaab2f95439c28e2aa9358dbfe1ce7a15c774a766 (patch)
tree389987dc6318dc633e528d54276645b09b35f8f4
parentae32ea5919c156902bcdc1a4f2555d00d6109e32 (diff)
downloadopenvpn-aab2f95439c28e2aa9358dbfe1ce7a15c774a766.tar.gz
openvpn-aab2f95439c28e2aa9358dbfe1ce7a15c774a766.tar.xz
openvpn-aab2f95439c28e2aa9358dbfe1ce7a15c774a766.zip
Windows cross-compile cleanup
It should be sufficient to just try to see if socklen_t is defined. Next, on all platforms it would be int in all other platforms. And, there is no need to check for the type in monolitic environment like Windows, as it will be always the same. Currently it fails cross compile windows in mingw-w64 compiler, as winsock.h is as follows: """ /* define WINSOCK_API_LINKAGE and WSAAPI for less * diff output between winsock.h and winsock2.h, but * remember to undefine them at the end of file */ """ And the macro uses these macros which are internal winsock macros and should not be used anyway. Also, when did the autodefs.h went mandatory? Why is it in tap-win32/common.h while no constant is actually used? The use of WSA_IO_INCOMPLETE without including winsock2.h is invalid! Look at http://msdn.microsoft.com/en-us/library/aa921087.aspx Signed-off-by: Alon Bar-Lev <alon.barlev@gmail.com> Acked-by: James Yonan <james@openvpn.net> Signed-off-by: David Sommerseth <davids@redhat.com>
-rw-r--r--acinclude.m448
-rw-r--r--configure.ac1
-rw-r--r--syshead.h1
-rwxr-xr-xtap-win32/common.h2
4 files changed, 26 insertions, 26 deletions
diff --git a/acinclude.m4 b/acinclude.m4
index f037484..185907f 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -90,34 +90,30 @@ AC_DEFUN([TYPE_SOCKLEN_T],
AC_MSG_CHECKING([for socklen_t equivalent])
AC_CACHE_VAL([curl_cv_socklen_t_equiv],
[
- # Systems have either "struct sockaddr *" or
- # "void *" as the second argument to getpeername
- curl_cv_socklen_t_equiv=
- for arg2 in "struct sockaddr" void; do
- for t in int size_t unsigned long "unsigned long"; do
- AC_TRY_COMPILE([
- #ifdef _WIN32
- #include <windows.h>
- #define PREFIX1 WINSOCK_API_LINKAGE
- #define PREFIX2 PASCAL
- #else
- #include <sys/types.h>
- #include <sys/socket.h>
- #define PREFIX1
- #define PREFIX2
- #define SOCKET int
- #endif
+ case "$host" in
+ *-mingw*) curl_cv_socklen_t_equiv=int ;;
+ *)
+ # Systems have either "struct sockaddr *" or
+ # "void *" as the second argument to getpeername
+ curl_cv_socklen_t_equiv=
+ for arg2 in "struct sockaddr" void; do
+ for t in int size_t unsigned long "unsigned long"; do
+ AC_TRY_COMPILE([
+ #include <sys/types.h>
+ #include <sys/socket.h>
- PREFIX1 int PREFIX2 getpeername (SOCKET, $arg2 *, $t *);
- ],[
- $t len;
- getpeername(0,0,&len);
- ],[
- curl_cv_socklen_t_equiv="$t"
- break
- ])
+ int getpeername (int, $arg2 *, $t *);
+ ],[
+ $t len;
+ getpeername(0,0,&len);
+ ],[
+ curl_cv_socklen_t_equiv="$t"
+ break
+ ])
+ done
done
- done
+ ;;
+ esac
if test "x$curl_cv_socklen_t_equiv" = x; then
AC_MSG_ERROR([Cannot find a type to use in place of socklen_t])
diff --git a/configure.ac b/configure.ac
index e30f990..e0847bc 100644
--- a/configure.ac
+++ b/configure.ac
@@ -320,6 +320,7 @@ case "$host" in
;;
*-mingw*)
AC_DEFINE(TARGET_WIN32, 1, [Are we running WIN32?])
+ CPPFLAGS="${CPPFLAGS} -DWIN32_LEAN_AND_MEAN"
OPENVPN_ADD_LIBS(-lgdi32)
OPENVPN_ADD_LIBS(-lws2_32)
OPENVPN_ADD_LIBS(-lwininet)
diff --git a/syshead.h b/syshead.h
index cef7dbf..63b82ba 100644
--- a/syshead.h
+++ b/syshead.h
@@ -47,6 +47,7 @@
#ifdef WIN32
#include <windows.h>
+#include <winsock2.h>
#define sleep(x) Sleep((x)*1000)
#define random rand
#define srandom srand
diff --git a/tap-win32/common.h b/tap-win32/common.h
index 6785a33..bb8ab90 100755
--- a/tap-win32/common.h
+++ b/tap-win32/common.h
@@ -28,7 +28,9 @@
// common to both.
//===============================================
+#ifndef HAVE_CONFIG_H
#include "autodefs.h"
+#endif
//=============
// TAP IOCTLs