diff options
author | Steven McCoy <steven.mccoy@miru.hk> | 2011-06-18 20:44:03 +0200 |
---|---|---|
committer | Martin Sustrik <sustrik@250bpm.com> | 2011-06-18 20:44:03 +0200 |
commit | 9b795de4afdd5669a9000c5d13bec61e51fbba49 (patch) | |
tree | 6c3cdf97dd7a9529a80cf4c8c0f9160e1f7e7bce /src/windows.hpp | |
parent | dc66053530e798dbcdb236cc2040031980cc09c7 (diff) |
Refactor Windows versioning and WinSock usage.Signed-off-by: Steven McCoy <steven.mccoy@miru.hk>
Diffstat (limited to 'src/windows.hpp')
-rw-r--r-- | src/windows.hpp | 157 |
1 files changed, 128 insertions, 29 deletions
diff --git a/src/windows.hpp b/src/windows.hpp index 5133875..8f39914 100644 --- a/src/windows.hpp +++ b/src/windows.hpp @@ -21,58 +21,157 @@ #ifndef __ZMQ_WINDOWS_HPP_INCLUDED__ #define __ZMQ_WINDOWS_HPP_INCLUDED__ -// The purpose of this header file is to turn on only the items actually needed -// on the windows platform. +// The purpose of this header file is to turn on only the items actually +// needed on the windows platform. -#define _WINSOCKAPI_ -#ifndef NOMINMAX -#define NOMINMAX // No min and max functions, these clash with C++. -#endif +// Disable deprecation warnings. #define _CRT_SECURE_NO_WARNINGS #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif -#ifndef NOUSER // No USER defines and routines. -#define NOUSER +#ifndef NOGDICAPMASKS +#define NOGDICAPMASKS // CC_*, LC_*, PC_*, CP_*, TC_*, RC_ #endif -#ifndef NOMCX // No Modem Configuration Extensions. -#define NOMCX +#ifndef NOVIRTUALKEYCODES +#define NOVIRTUALKEYCODES // VK_* #endif -#ifndef NOIME // No Input Method Editor. -#define NOIME +#ifndef NOWINMESSAGES +#define NOWINMESSAGES // WM_*, EM_*, LB_*, CB_* #endif -#ifndef NOSOUND // No Sound driver routines. -#define NOSOUND +#ifndef NOWINSTYLES +#define NOWINSTYLES // WS_*, CS_*, ES_*, LBS_*, SBS_*, CBS_* #endif - -#ifdef ZMQ_HAVE_MINGW32 -#ifdef WINVER -#undef WINVER +#ifndef NOSYSMETRICS +#define NOSYSMETRICS // SM_* #endif -#define WINVER 0x0501 +#ifndef NOMENUS +#define NOMENUS // MF_* +#endif +#ifndef NOICONS +#define NOICONS // IDI_* +#endif +#ifndef NOKEYSTATES +#define NOKEYSTATES // MK_* +#endif +#ifndef NOSYSCOMMANDS +#define NOSYSCOMMANDS // SC_* +#endif +#ifndef NORASTEROPS +#define NORASTEROPS // Binary and Tertiary raster ops +#endif +#ifndef NOSHOWWINDOW +#define NOSHOWWINDOW // SW_* +#endif +#ifndef OEMRESOURCE +#define OEMRESOURCE // OEM Resource values +#endif +#ifndef NOATOM +#define NOATOM // Atom Manager routines +#endif +#ifndef NOCLIPBOARD +#define NOCLIPBOARD // Clipboard routines +#endif +#ifndef NOCOLOR +#define NOCOLOR // Screen colors +#endif +#ifndef NOCTLMGR +#define NOCTLMGR // Control and Dialog routines +#endif +#ifndef NODRAWTEXT +#define NODRAWTEXT // DrawText() and DT_* +#endif +#ifndef NOGDI +#define NOGDI // All GDI defines and routines +#endif +#ifndef NOKERNEL +#define NOKERNEL // All KERNEL defines and routines +#endif +#ifndef NOUSER +#define NOUSER // All USER defines and routines +#endif +#ifndef NONLS +#define NONLS // All NLS defines and routines +#endif +#ifndef NOMB +#define NOMB // MB_* and MessageBox() +#endif +#ifndef NOMEMMGR +#define NOMEMMGR // GMEM_*, LMEM_*, GHND, LHND, associated routines +#endif +#ifndef NOMETAFILE +#define NOMETAFILE // typedef METAFILEPICT +#endif +#ifndef NOMINMAX +#define NOMINMAX // Macros min(a,b) and max(a,b) +#endif +#ifndef NOMSG +#define NOMSG // typedef MSG and associated routines +#endif +#ifndef NOOPENFILE +#define NOOPENFILE // OpenFile(), OemToAnsi, AnsiToOem, and OF_* +#endif +#ifndef NOSCROLL +#define NOSCROLL // SB_* and scrolling routines +#endif +#ifndef NOSERVICE +#define NOSERVICE // All Service Controller routines, SERVICE_ equates, etc. +#endif +#ifndef NOSOUND +#define NOSOUND // Sound driver routines +#endif +#ifndef NOTEXTMETRIC +#define NOTEXTMETRIC // typedef TEXTMETRIC and associated routines +#endif +#ifndef NOWH +#define NOWH // SetWindowsHook and WH_* +#endif +#ifndef NOWINOFFSETS +#define NOWINOFFSETS // GWL_*, GCL_*, associated routines +#endif +#ifndef NOCOMM +#define NOCOMM // COMM driver routines +#endif +#ifndef NOKANJI +#define NOKANJI // Kanji support stuff. +#endif +#ifndef NOHELP +#define NOHELP // Help engine interface. +#endif +#ifndef NOPROFILER +#define NOPROFILER // Profiler interface. +#endif +#ifndef NODEFERWINDOWPOS +#define NODEFERWINDOWPOS // DeferWindowPos routines +#endif +#ifndef NOMCX +#define NOMCX // Modem Configuration ExtensionsA #endif -#include <windows.h> - -// MSVC++ 2005 on Win2000 does not define _WIN32_WINNT. +// Set target version to Windows Server 2003, Windows XP/SP1 or higher. #ifndef _WIN32_WINNT -#define _WIN32_WINNT WINVER +#define _WIN32_WINNT 0x0501 #endif -// Enable winsock (not included when WIN32_LEAN_AND_MEAN is defined). -#if(_WIN32_WINNT >= 0x0400) -#include <winsock2.h> -#include <mswsock.h> +#include <windows.h> + +#ifdef __MINGW32__ +// Require Windows XP or higher with MinGW for getaddrinfo(). +#if(_WIN32_WINNT >= 0x0501) #else -#include <winsock.h> +#undef _WIN32_WINNT +#define _WIN32_WINNT 0x0501 +#endif #endif + +#include <winsock2.h> +#include <mswsock.h> #include <ws2tcpip.h> #include <ipexport.h> #include <process.h> -// On mingw environment AI_NUMERICSERV is not defined, needed in ip.cpp. +// In MinGW environment AI_NUMERICSERV is not defined. #ifndef AI_NUMERICSERV #define AI_NUMERICSERV 0x0400 #endif |