Add wxUSE_WINSOCK2 wxMSW option to include winsock2.h

Including <winsock.h> and <winsock2.h> is incompatible and if the
application wants to use the latter, it may be convenient to define
wxUSE_WINSOCK2 when building wxWidgets instead of having to work around
winsock.h implicit inclusion from include/wx/msw/wrapwin.h.

Closes https://github.com/wxWidgets/wxWidgets/pull/1122
This commit is contained in:
Tomay 2019-01-10 05:07:39 +01:00 committed by Vadim Zeitlin
parent eaee931011
commit 8deb2cf0bb
11 changed files with 65 additions and 3 deletions

View File

@ -174,6 +174,7 @@ if(WIN32)
endif()
wx_option(wxUSE_DBGHELP "use dbghelp.dll API" ${wxUSE_DBGHELP_DEFAULT})
wx_option(wxUSE_INICONF "use wxIniConfig")
wx_option(wxUSE_WINSOCK2 "include <winsock2.h> rather than <winsock.h>" OFF)
wx_option(wxUSE_REGKEY "use wxRegKey class")
endif()

View File

@ -714,6 +714,8 @@
#cmakedefine01 wxUSE_INICONF
#cmakedefine01 wxUSE_WINSOCK2
#cmakedefine01 wxUSE_DATEPICKCTRL_GENERIC

View File

@ -348,6 +348,9 @@ compilers. See also wxUSE_NO_MANIFEST.}
@itemdef{wxUSE_WIN_METAFILES_ALWAYS, Use wxMetaFile even when wxUSE_ENH_METAFILE=1.}
@itemdef{wxUSE_WINRT, Enable WinRT support.}
@itemdef{wxUSE_WXDIB, Use wxDIB class.}
@itemdef{wxUSE_WINSOCK2, Include @c <winsock2.h> instead of @c <winsock.h>.
Turned on automatically if ::wxUSE_IPV6 is on (this option is new since
wxWidgets 3.1.3).}
@endDefList

View File

@ -1661,6 +1661,13 @@
// Recommended setting: 0, nobody uses .INI files any more
#define wxUSE_INICONF 0
// Set to 1 if you need to include <winsock2.h> over <winsock.h>
//
// Default is 0.
//
// Recommended setting: 0
#define wxUSE_WINSOCK2 0
// ----------------------------------------------------------------------------
// Generic versions of native controls
// ----------------------------------------------------------------------------

View File

@ -1713,6 +1713,13 @@
// Recommended setting: 0, nobody uses .INI files any more
#define wxUSE_INICONF 0
// Set to 1 if you need to include <winsock2.h> over <winsock.h>
//
// Default is 0.
//
// Recommended setting: 0, set to 1 automatically if wxUSE_IPV6 is 1.
#define wxUSE_WINSOCK2 0
// ----------------------------------------------------------------------------
// Generic versions of native controls
// ----------------------------------------------------------------------------

View File

@ -118,6 +118,14 @@
# endif
#endif /* wxUSE_UXTHEME */
#ifndef wxUSE_WINSOCK2
# ifdef wxABORT_ON_CONFIG_ERROR
# error "wxUSE_WINSOCK2 must be defined."
# else
# define wxUSE_WINSOCK2 0
# endif
#endif /* wxUSE_WINSOCK2 */
/*
* Unfortunately we can't use compiler TLS support if the library can be used
* inside a dynamically loaded DLL under Windows XP, as this can result in hard
@ -455,4 +463,14 @@
# define wxUSE_POSTSCRIPT 1
#endif
/*
IPv6 support requires winsock2.h, but the default of wxUSE_WINSOCK2 is 0.
Don't require changing it explicitly and just turn it on automatically if
wxUSE_IPV6 is on.
*/
#if wxUSE_IPV6 && !wxUSE_WINSOCK2
#undef wxUSE_WINSOCK2
#define wxUSE_WINSOCK2 1
#endif
#endif /* _WX_MSW_CHKCONF_H_ */

View File

@ -1713,6 +1713,13 @@
// Recommended setting: 0, nobody uses .INI files any more
#define wxUSE_INICONF 0
// Set to 1 if you need to include <winsock2.h> over <winsock.h>
//
// Default is 0.
//
// Recommended setting: 0, set to 1 automatically if wxUSE_IPV6 is 1.
#define wxUSE_WINSOCK2 0
// ----------------------------------------------------------------------------
// Generic versions of native controls
// ----------------------------------------------------------------------------

View File

@ -156,6 +156,13 @@
// Recommended setting: 0, nobody uses .INI files any more
#define wxUSE_INICONF 0
// Set to 1 if you need to include <winsock2.h> over <winsock.h>
//
// Default is 0.
//
// Recommended setting: 0, set to 1 automatically if wxUSE_IPV6 is 1.
#define wxUSE_WINSOCK2 0
// ----------------------------------------------------------------------------
// Generic versions of native controls
// ----------------------------------------------------------------------------

View File

@ -28,9 +28,10 @@
#endif // NOMINMAX
// For IPv6 support, we must include winsock2.h before winsock.h, and
// windows.h include winsock.h so do it before including it
#if wxUSE_IPV6
// When the application wants to use <winsock2.h> (this is required for IPv6
// support, for example), we must include it before winsock.h, and as windows.h
// includes winsock.h, we have to do it before including it.
#if wxUSE_WINSOCK2
#include <winsock2.h>
#endif

View File

@ -1661,6 +1661,13 @@
// Recommended setting: 0, nobody uses .INI files any more
#define wxUSE_INICONF 0
// Set to 1 if you need to include <winsock2.h> over <winsock.h>
//
// Default is 0.
//
// Recommended setting: 0
#define wxUSE_WINSOCK2 0
// ----------------------------------------------------------------------------
// Generic versions of native controls
// ----------------------------------------------------------------------------

View File

@ -714,6 +714,8 @@
#define wxUSE_INICONF 0
#define wxUSE_WINSOCK2 0
#define wxUSE_DATEPICKCTRL_GENERIC 0