r1444 - in trunk: . code/qcommon
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Sat Aug 9 15:12:30 EDT 2008
Author: tma
Date: 2008-08-09 15:12:30 -0400 (Sat, 09 Aug 2008)
New Revision: 1444
Modified:
trunk/Makefile
trunk/README
trunk/code/qcommon/net_ip.c
Log:
* Use IPv6 header qcommon/wspiapi.h if it has been added by the end user
* Update README to explain the Windows XP requirement
Modified: trunk/Makefile
===================================================================
--- trunk/Makefile 2008-08-09 15:19:59 UTC (rev 1443)
+++ trunk/Makefile 2008-08-09 19:12:30 UTC (rev 1444)
@@ -423,14 +423,10 @@
BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes \
-DUSE_ICON
- # Require Windows XP or later
- #
- # IPv6 support requires a header wspiapi.h to work on earlier versions of
- # windows. There is no MinGW equivalent of this header so we're forced to
- # require XP. In theory this restriction can be removed if this header is
- # obtained separately from the platform SDK. The MSVC build does not have
- # this limitation.
- BASE_CFLAGS += -DWINVER=0x501
+ # In the absence of wspiapi.h, require Windows XP or later
+ ifeq ($(shell test -e $(CMDIR)/wspiapi.h; echo $$?),1)
+ BASE_CFLAGS += -DWINVER=0x501
+ endif
ifeq ($(USE_OPENAL),1)
BASE_CFLAGS += -DUSE_OPENAL
Modified: trunk/README
===================================================================
--- trunk/README 2008-08-09 15:19:59 UTC (rev 1443)
+++ trunk/README 2008-08-09 19:12:30 UTC (rev 1444)
@@ -433,7 +433,15 @@
Restart GtkRadiant and PNG textures are now available.
+Building with MinGW for pre Windows XP
+ IPv6 support requires a header named "wspiapi.h" to abstract away from
+ differences in earlier versions of Windows' IPv6 stack. There is no MinGW
+ equivalent of this header and the Microsoft version is obviously not
+ redistributable, so in its absence we're forced to require Windows XP.
+ However if this header is acquired separately and placed in the qcommon/
+ directory, this restriction is lifted.
+
------------------------------------------------------------- Contributing -----
Please send all patches to bugzilla (https://bugzilla.icculus.org), or join the
Modified: trunk/code/qcommon/net_ip.c
===================================================================
--- trunk/code/qcommon/net_ip.c 2008-08-09 15:19:59 UTC (rev 1443)
+++ trunk/code/qcommon/net_ip.c 2008-08-09 19:12:30 UTC (rev 1444)
@@ -24,61 +24,68 @@
#include "../qcommon/qcommon.h"
#ifdef _WIN32
-#include <winsock2.h>
-#include <ws2tcpip.h>
-#if WINVER < 0x501
-#include <wspiapi.h>
-#else
-#include <ws2spi.h>
-#endif
+# include <winsock2.h>
+# include <ws2tcpip.h>
+# if WINVER < 0x501
+# ifdef __MINGW32__
+ // wspiapi.h isn't available on MinGW, so if it's
+ // present it's because the end user has added it
+ // and we should look for it in our tree
+# include "wspiapi.h"
+# else
+# include <wspiapi.h>
+# endif
+# else
+# include <ws2spi.h>
+# endif
typedef int socklen_t;
-#ifdef ADDRESS_FAMILY
-#define sa_family_t ADDRESS_FAMILY
-#else
+# ifdef ADDRESS_FAMILY
+# define sa_family_t ADDRESS_FAMILY
+# else
typedef unsigned short sa_family_t;
-#endif
+# endif
-#define EAGAIN WSAEWOULDBLOCK
-#define EADDRNOTAVAIL WSAEADDRNOTAVAIL
-#define EAFNOSUPPORT WSAEAFNOSUPPORT
-#define ECONNRESET WSAECONNRESET
-#define socketError WSAGetLastError( )
+# define EAGAIN WSAEWOULDBLOCK
+# define EADDRNOTAVAIL WSAEADDRNOTAVAIL
+# define EAFNOSUPPORT WSAEAFNOSUPPORT
+# define ECONNRESET WSAECONNRESET
+# define socketError WSAGetLastError( )
static WSADATA winsockdata;
static qboolean winsockInitialized = qfalse;
#else
-#if MAC_OS_X_VERSION_MIN_REQUIRED == 1020
- // needed for socklen_t on OSX 10.2
-# define _BSD_SOCKLEN_T_
-#endif
+# if MAC_OS_X_VERSION_MIN_REQUIRED == 1020
+ // needed for socklen_t on OSX 10.2
+# define _BSD_SOCKLEN_T_
+# endif
-#include <arpa/inet.h>
-#include <errno.h>
-#include <netdb.h>
-#include <netinet/in.h>
-#include <sys/socket.h>
-#include <net/if.h>
-#include <sys/ioctl.h>
-#include <sys/types.h>
-#include <sys/time.h>
-#include <unistd.h>
-#if !defined(__sun) && !defined(__sgi)
-#include <ifaddrs.h>
-#endif
+# include <arpa/inet.h>
+# include <errno.h>
+# include <netdb.h>
+# include <netinet/in.h>
+# include <sys/socket.h>
+# include <net/if.h>
+# include <sys/ioctl.h>
+# include <sys/types.h>
+# include <sys/time.h>
+# include <unistd.h>
+# if !defined(__sun) && !defined(__sgi)
+# include <ifaddrs.h>
+# endif
-#ifdef __sun
-#include <sys/filio.h>
-#endif
+# ifdef __sun
+# include <sys/filio.h>
+# endif
typedef int SOCKET;
-#define INVALID_SOCKET -1
-#define SOCKET_ERROR -1
-#define closesocket close
-#define ioctlsocket ioctl
-#define socketError errno
+# define INVALID_SOCKET -1
+# define SOCKET_ERROR -1
+# define closesocket close
+# define ioctlsocket ioctl
+# define socketError errno
#endif
More information about the quake3-commits
mailing list