| Index: SConstruct
|
| ===================================================================
|
| --- SConstruct (revision 812)
|
| +++ SConstruct (working copy)
|
| @@ -71,15 +71,27 @@
|
| 'CCPDBFLAGS': ['/Zi']
|
| },
|
| 'mode:debug': {
|
| - 'CCFLAGS': ['/Od', '/Gm', '/MTd'],
|
| + 'CCFLAGS': ['/Od', '/Gm'],
|
| 'CPPDEFINES': ['_DEBUG', 'ENABLE_DISASSEMBLER', 'DEBUG'],
|
| - 'LINKFLAGS': ['/DEBUG']
|
| + 'LINKFLAGS': ['/DEBUG'],
|
| + 'msvcrt:static': {
|
| + 'CCFLAGS': ['/MTd']
|
| + },
|
| + 'msvcrt:shared': {
|
| + 'CCFLAGS': ['/MDd']
|
| + }
|
| },
|
| 'mode:release': {
|
| - 'CCFLAGS': ['/O2', '/MT', '/GL'],
|
| + 'CCFLAGS': ['/O2', '/GL'],
|
| 'LINKFLAGS': ['/OPT:REF', '/OPT:ICF', '/LTCG'],
|
| - 'ARFLAGS': ['/LTCG']
|
| - }
|
| + 'ARFLAGS': ['/LTCG'],
|
| + 'msvcrt:static': {
|
| + 'CCFLAGS': ['/MT']
|
| + },
|
| + 'msvcrt:shared': {
|
| + 'CCFLAGS': ['/MD']
|
| + }
|
| + },
|
| }
|
| }
|
|
|
| @@ -209,12 +221,24 @@
|
| 'LINKFLAGS': ['/MAP']
|
| },
|
| 'mode:release': {
|
| - 'CCFLAGS': ['/O2', '/MT'],
|
| - 'LINKFLAGS': ['/OPT:REF', '/OPT:ICF', '/LTCG']
|
| + 'CCFLAGS': ['/O2'],
|
| + 'LINKFLAGS': ['/OPT:REF', '/OPT:ICF', '/LTCG'],
|
| + 'msvcrt:static': {
|
| + 'CCFLAGS': ['/MT']
|
| + },
|
| + 'msvcrt:shared': {
|
| + 'CCFLAGS': ['/MD']
|
| + }
|
| },
|
| 'mode:debug': {
|
| - 'CCFLAGS': ['/Od', '/MTd'],
|
| - 'LINKFLAGS': ['/DEBUG']
|
| + 'CCFLAGS': ['/Od'],
|
| + 'LINKFLAGS': ['/DEBUG'],
|
| + 'msvcrt:static': {
|
| + 'CCFLAGS': ['/MTd']
|
| + },
|
| + 'msvcrt:shared': {
|
| + 'CCFLAGS': ['/MDd']
|
| + }
|
| }
|
| }
|
| }
|
| @@ -226,7 +250,6 @@
|
| 'LIBS': ['readline']
|
| }
|
| },
|
| - 'msvc': { }
|
| }
|
|
|
|
|
| @@ -288,6 +311,11 @@
|
| 'default': 'static',
|
| 'help': 'the type of library to produce'
|
| },
|
| + 'msvcrt': {
|
| + 'values': ['static', 'shared'],
|
| + 'default': 'static',
|
| + 'help': 'the type of MSVCRT library to use'
|
| + },
|
| 'wordsize': {
|
| 'values': ['64', '32'],
|
| 'default': WORDSIZE_GUESS,
|
| @@ -375,11 +403,18 @@
|
| result = initial.copy()
|
| self.AppendFlags(result, flags.get('all'))
|
| toolchain = self.options['toolchain']
|
| - self.AppendFlags(result, flags[toolchain].get('all'))
|
| + if toolchain in flags:
|
| + self.AppendFlags(result, flags[toolchain].get('all'))
|
| + for option in sorted(self.options.keys()):
|
| + value = self.options[option]
|
| + self.AppendFlags(result, flags[toolchain].get(option + ':' + value))
|
| + return result
|
| +
|
| + def AddRelevantSubFlags(self, options, flags):
|
| + self.AppendFlags(options, flags.get('all'))
|
| for option in sorted(self.options.keys()):
|
| value = self.options[option]
|
| - self.AppendFlags(result, flags[toolchain].get(option + ':' + value))
|
| - return result
|
| + self.AppendFlags(options, flags.get(option + ':' + value))
|
|
|
| def GetRelevantSources(self, source):
|
| result = []
|
| @@ -392,12 +427,15 @@
|
| if not added:
|
| return
|
| for (key, value) in added.iteritems():
|
| - if not key in options:
|
| - options[key] = value
|
| + if key.find(':') != -1:
|
| + self.AddRelevantSubFlags(options, { key: value })
|
| else:
|
| - prefix = options[key]
|
| - if isinstance(prefix, StringTypes): prefix = prefix.split()
|
| - options[key] = prefix + value
|
| + if not key in options:
|
| + options[key] = value
|
| + else:
|
| + prefix = options[key]
|
| + if isinstance(prefix, StringTypes): prefix = prefix.split()
|
| + options[key] = prefix + value
|
|
|
| def ConfigureObject(self, env, input, **kw):
|
| if self.options['library'] == 'static':
|
|
|