Move _WIN32_WINNT setup to SConf
This commit is contained in:
parent
466536b101
commit
2dd4384d9d
60
SConstruct
60
SConstruct
|
@ -178,17 +178,17 @@ class Git(StaticSubprocess):
|
||||||
('+' if _pcall(['diff', '--quiet', '--cached']).returncode else '')
|
('+' if _pcall(['diff', '--quiet', '--cached']).returncode else '')
|
||||||
)
|
)
|
||||||
|
|
||||||
class ConfigureTests:
|
class _ConfigureTests:
|
||||||
class Collector:
|
class Collector(object):
|
||||||
class RecordedTest(object):
|
class RecordedTest(object):
|
||||||
__slots__ = ('desc', 'name')
|
__slots__ = ('desc', 'name', 'predicate')
|
||||||
def __init__(self,name,desc):
|
def __init__(self,name,desc):
|
||||||
self.name = name
|
self.name = name
|
||||||
self.desc = desc
|
self.desc = desc
|
||||||
|
self.predicate = None
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self,record):
|
||||||
self.tests = []
|
self.record = record
|
||||||
self.record = self.tests.append
|
|
||||||
def __call__(self,f):
|
def __call__(self,f):
|
||||||
desc = None
|
desc = None
|
||||||
doc = getattr(f, '__doc__', None)
|
doc = getattr(f, '__doc__', None)
|
||||||
|
@ -199,6 +199,22 @@ class ConfigureTests:
|
||||||
self.record(self.RecordedTest(f.__name__, desc))
|
self.record(self.RecordedTest(f.__name__, desc))
|
||||||
return f
|
return f
|
||||||
|
|
||||||
|
class ConfigureTests(_ConfigureTests):
|
||||||
|
class Collector(_ConfigureTests.Collector):
|
||||||
|
def __init__(self):
|
||||||
|
self.tests = tests = []
|
||||||
|
_ConfigureTests.Collector.__init__(self, tests.append)
|
||||||
|
|
||||||
|
class GuardedCollector(_ConfigureTests.Collector):
|
||||||
|
__RecordedTest = _ConfigureTests.Collector.RecordedTest
|
||||||
|
def __init__(self,collector,guard):
|
||||||
|
_ConfigureTests.Collector.__init__(self, collector.record)
|
||||||
|
self.__guard = guard
|
||||||
|
def RecordedTest(self,name,desc):
|
||||||
|
r = self.__RecordedTest(name, desc)
|
||||||
|
r.predicate = self.__guard
|
||||||
|
return r
|
||||||
|
|
||||||
class Cxx11RequiredFeature(object):
|
class Cxx11RequiredFeature(object):
|
||||||
__slots__ = ('main', 'name', 'text')
|
__slots__ = ('main', 'name', 'text')
|
||||||
def __init__(self,name,text,main=''):
|
def __init__(self,name,text,main=''):
|
||||||
|
@ -330,6 +346,7 @@ class ConfigureTests:
|
||||||
flags = guess_flags
|
flags = guess_flags
|
||||||
_cache[cmd] = flags
|
_cache[cmd] = flags
|
||||||
return flags
|
return flags
|
||||||
|
|
||||||
# Force test to report failure
|
# Force test to report failure
|
||||||
sconf_force_failure = 'force-failure'
|
sconf_force_failure = 'force-failure'
|
||||||
# Force test to report success, and modify flags like it
|
# Force test to report success, and modify flags like it
|
||||||
|
@ -341,6 +358,7 @@ class ConfigureTests:
|
||||||
expect_sconf_failure = 'failure'
|
expect_sconf_failure = 'failure'
|
||||||
_implicit_test = Collector()
|
_implicit_test = Collector()
|
||||||
_custom_test = Collector()
|
_custom_test = Collector()
|
||||||
|
_guarded_test_windows = GuardedCollector(_custom_test, lambda user_settings: user_settings.host_platform == 'win32')
|
||||||
implicit_tests = _implicit_test.tests
|
implicit_tests = _implicit_test.tests
|
||||||
custom_tests = _custom_test.tests
|
custom_tests = _custom_test.tests
|
||||||
comment_not_supported = '/* not supported */'
|
comment_not_supported = '/* not supported */'
|
||||||
|
@ -460,6 +478,7 @@ struct %(N)s {
|
||||||
# When LTO is used, the optimizer is deferred to link time.
|
# When LTO is used, the optimizer is deferred to link time.
|
||||||
# Force all tests to be Link tests when LTO is enabled.
|
# Force all tests to be Link tests when LTO is enabled.
|
||||||
self.Compile = self.Link if user_settings.lto else self._Compile
|
self.Compile = self.Link if user_settings.lto else self._Compile
|
||||||
|
self.custom_tests = [t for t in self.custom_tests if t.predicate is None or t.predicate(user_settings)]
|
||||||
def _quote_macro_value(v):
|
def _quote_macro_value(v):
|
||||||
return v.strip().replace('\n', ' \\\n')
|
return v.strip().replace('\n', ' \\\n')
|
||||||
def _check_sconf_forced(self,calling_function):
|
def _check_sconf_forced(self,calling_function):
|
||||||
|
@ -970,6 +989,28 @@ int main(int argc,char**argv){(void)argc;(void)argv;
|
||||||
if use_tracker:
|
if use_tracker:
|
||||||
self.check_curl(context)
|
self.check_curl(context)
|
||||||
self.check_jsoncpp(context)
|
self.check_jsoncpp(context)
|
||||||
|
|
||||||
|
# Require _WIN32_WINNT >= 0x0501 to enable getaddrinfo
|
||||||
|
# Require _WIN32_WINNT >= 0x0600 to enable some useful AI_* flags
|
||||||
|
@_guarded_test_windows
|
||||||
|
def _check_user_CPPDEFINES__WIN32_WINNT(self,context,_msg='%s: checking whether to define _WIN32_WINNT...%s',_CPPDEFINES_WIN32_WINNT=('_WIN32_WINNT', 0x600)):
|
||||||
|
env = context.env
|
||||||
|
for f in env['CPPDEFINES']:
|
||||||
|
# Ignore the case that an element is a string with this
|
||||||
|
# value, since that would not define the macro to a
|
||||||
|
# useful value. In CPPDEFINES, only a tuple of
|
||||||
|
# (name,number) is useful for macro _WIN32_WINNT.
|
||||||
|
if f[0] == '_WIN32_WINNT':
|
||||||
|
f = f[1]
|
||||||
|
context.Result(_msg % (self.msgprefix, 'no, already set in CPPDEFINES as %s' % (('%#x' if isinstance(f, int) else '%r') % f)))
|
||||||
|
return
|
||||||
|
for f in env['CPPFLAGS']:
|
||||||
|
if f.startswith('-D_WIN32_WINNT='):
|
||||||
|
context.Result(_msg % (self.msgprefix, 'no, already set in CPPFLAGS as %r' % f))
|
||||||
|
return
|
||||||
|
context.Result(_msg % (self.msgprefix, 'yes, define _WIN32_WINNT=%#x' % _CPPDEFINES_WIN32_WINNT[1]))
|
||||||
|
self.successful_flags['CPPDEFINES'].append(_CPPDEFINES_WIN32_WINNT)
|
||||||
|
self.__defined_macros += '#define %s %s\n' % (_CPPDEFINES_WIN32_WINNT[0], _CPPDEFINES_WIN32_WINNT[1])
|
||||||
@_implicit_test
|
@_implicit_test
|
||||||
def check_curl(self,context,
|
def check_curl(self,context,
|
||||||
_header=('curl/curl.h',),
|
_header=('curl/curl.h',),
|
||||||
|
@ -2104,13 +2145,6 @@ where the cast is useless.
|
||||||
def check_getaddrinfo_present(self,context,_successflags={'CPPDEFINES' : ['DXX_HAVE_GETADDRINFO']}):
|
def check_getaddrinfo_present(self,context,_successflags={'CPPDEFINES' : ['DXX_HAVE_GETADDRINFO']}):
|
||||||
self.Compile(context, text='''
|
self.Compile(context, text='''
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
#define DXX_WIN32_MINIMUM_WIN32_WINNT 0x0600
|
|
||||||
#if defined(_WIN32_WINNT) && (_WIN32_WINNT < DXX_WIN32_MINIMUM_WIN32_WINNT)
|
|
||||||
#undef _WIN32_WINNT
|
|
||||||
#endif
|
|
||||||
#ifndef _WIN32_WINNT
|
|
||||||
#define _WIN32_WINNT DXX_WIN32_MINIMUM_WIN32_WINNT
|
|
||||||
#endif
|
|
||||||
#include <winsock2.h>
|
#include <winsock2.h>
|
||||||
#include <ws2tcpip.h>
|
#include <ws2tcpip.h>
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -39,20 +39,6 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
|
||||||
#include "game.h"
|
#include "game.h"
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
/* Require _WIN32_WINNT >= 0x0501 to enable getaddrinfo
|
|
||||||
* Require _WIN32_WINNT >= 0x0600 to enable some useful AI_* flags
|
|
||||||
*/
|
|
||||||
#ifdef DXX_HAVE_GETADDRINFO
|
|
||||||
#define DXX_WIN32_MINIMUM_WIN32_WINNT 0x0600
|
|
||||||
#else
|
|
||||||
#define DXX_WIN32_MINIMUM_WIN32_WINNT 0x0500
|
|
||||||
#endif
|
|
||||||
#if defined(_WIN32_WINNT) && (_WIN32_WINNT < DXX_WIN32_MINIMUM_WIN32_WINNT)
|
|
||||||
#undef _WIN32_WINNT
|
|
||||||
#endif
|
|
||||||
#ifndef _WIN32_WINNT
|
|
||||||
#define _WIN32_WINNT DXX_WIN32_MINIMUM_WIN32_WINNT
|
|
||||||
#endif
|
|
||||||
#include <winsock2.h>
|
#include <winsock2.h>
|
||||||
#include <ws2tcpip.h>
|
#include <ws2tcpip.h>
|
||||||
#include <io.h>
|
#include <io.h>
|
||||||
|
|
Loading…
Reference in a new issue