OLD | NEW |
1 # Copyright 2008 the V8 project authors. All rights reserved. | 1 # Copyright 2008 the V8 project authors. All rights reserved. |
2 # Redistribution and use in source and binary forms, with or without | 2 # Redistribution and use in source and binary forms, with or without |
3 # modification, are permitted provided that the following conditions are | 3 # modification, are permitted provided that the following conditions are |
4 # met: | 4 # met: |
5 # | 5 # |
6 # * Redistributions of source code must retain the above copyright | 6 # * Redistributions of source code must retain the above copyright |
7 # notice, this list of conditions and the following disclaimer. | 7 # notice, this list of conditions and the following disclaimer. |
8 # * Redistributions in binary form must reproduce the above | 8 # * Redistributions in binary form must reproduce the above |
9 # copyright notice, this list of conditions and the following | 9 # copyright notice, this list of conditions and the following |
10 # disclaimer in the documentation and/or other materials provided | 10 # disclaimer in the documentation and/or other materials provided |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
64 'DIALECTFLAGS': ['/nologo'], | 64 'DIALECTFLAGS': ['/nologo'], |
65 'CCFLAGS': ['$DIALECTFLAGS', '$WARNINGFLAGS'], | 65 'CCFLAGS': ['$DIALECTFLAGS', '$WARNINGFLAGS'], |
66 'CXXFLAGS': ['$CCFLAGS', '/GR-', '/Gy'], | 66 'CXXFLAGS': ['$CCFLAGS', '/GR-', '/Gy'], |
67 'CPPDEFINES': ['WIN32', '_USE_32BIT_TIME_T', 'PCRE_STATIC'], | 67 'CPPDEFINES': ['WIN32', '_USE_32BIT_TIME_T', 'PCRE_STATIC'], |
68 'LINKFLAGS': ['/NOLOGO', '/MACHINE:X86', '/INCREMENTAL:NO', | 68 'LINKFLAGS': ['/NOLOGO', '/MACHINE:X86', '/INCREMENTAL:NO', |
69 '/NXCOMPAT', '/IGNORE:4221'], | 69 '/NXCOMPAT', '/IGNORE:4221'], |
70 'ARFLAGS': ['/NOLOGO'], | 70 'ARFLAGS': ['/NOLOGO'], |
71 'CCPDBFLAGS': ['/Zi'] | 71 'CCPDBFLAGS': ['/Zi'] |
72 }, | 72 }, |
73 'mode:debug': { | 73 'mode:debug': { |
74 'CCFLAGS': ['/Od', '/Gm', '/MTd'], | 74 'CCFLAGS': ['/Od', '/Gm'], |
75 'CPPDEFINES': ['_DEBUG', 'ENABLE_DISASSEMBLER', 'DEBUG'], | 75 'CPPDEFINES': ['_DEBUG', 'ENABLE_DISASSEMBLER', 'DEBUG'], |
76 'LINKFLAGS': ['/DEBUG'] | 76 'LINKFLAGS': ['/DEBUG'], |
| 77 'msvcrt:static': { |
| 78 'CCFLAGS': ['/MTd'] |
| 79 }, |
| 80 'msvcrt:shared': { |
| 81 'CCFLAGS': ['/MDd'] |
| 82 } |
77 }, | 83 }, |
78 'mode:release': { | 84 'mode:release': { |
79 'CCFLAGS': ['/O2', '/MT', '/GL'], | 85 'CCFLAGS': ['/O2', '/GL'], |
80 'LINKFLAGS': ['/OPT:REF', '/OPT:ICF', '/LTCG'], | 86 'LINKFLAGS': ['/OPT:REF', '/OPT:ICF', '/LTCG'], |
81 'ARFLAGS': ['/LTCG'] | 87 'ARFLAGS': ['/LTCG'], |
82 } | 88 'msvcrt:static': { |
| 89 'CCFLAGS': ['/MT'] |
| 90 }, |
| 91 'msvcrt:shared': { |
| 92 'CCFLAGS': ['/MD'] |
| 93 } |
| 94 }, |
83 } | 95 } |
84 } | 96 } |
85 | 97 |
86 | 98 |
87 V8_EXTRA_FLAGS = { | 99 V8_EXTRA_FLAGS = { |
88 'gcc': { | 100 'gcc': { |
89 'all': { | 101 'all': { |
90 'CXXFLAGS': [], #['-fvisibility=hidden'], | 102 'CXXFLAGS': [], #['-fvisibility=hidden'], |
91 'WARNINGFLAGS': ['-pedantic', '-Wall', '-Werror', '-W', | 103 'WARNINGFLAGS': ['-pedantic', '-Wall', '-Werror', '-W', |
92 '-Wno-unused-parameter'] | 104 '-Wno-unused-parameter'] |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
202 'CCFLAGS': ['/nologo'], | 214 'CCFLAGS': ['/nologo'], |
203 'LINKFLAGS': ['/nologo'], | 215 'LINKFLAGS': ['/nologo'], |
204 }, | 216 }, |
205 'library:shared': { | 217 'library:shared': { |
206 'CPPDEFINES': ['USING_V8_SHARED'] | 218 'CPPDEFINES': ['USING_V8_SHARED'] |
207 }, | 219 }, |
208 'prof:on': { | 220 'prof:on': { |
209 'LINKFLAGS': ['/MAP'] | 221 'LINKFLAGS': ['/MAP'] |
210 }, | 222 }, |
211 'mode:release': { | 223 'mode:release': { |
212 'CCFLAGS': ['/O2', '/MT'], | 224 'CCFLAGS': ['/O2'], |
213 'LINKFLAGS': ['/OPT:REF', '/OPT:ICF', '/LTCG'] | 225 'LINKFLAGS': ['/OPT:REF', '/OPT:ICF', '/LTCG'], |
| 226 'msvcrt:static': { |
| 227 'CCFLAGS': ['/MT'] |
| 228 }, |
| 229 'msvcrt:shared': { |
| 230 'CCFLAGS': ['/MD'] |
| 231 } |
214 }, | 232 }, |
215 'mode:debug': { | 233 'mode:debug': { |
216 'CCFLAGS': ['/Od', '/MTd'], | 234 'CCFLAGS': ['/Od'], |
217 'LINKFLAGS': ['/DEBUG'] | 235 'LINKFLAGS': ['/DEBUG'], |
| 236 'msvcrt:static': { |
| 237 'CCFLAGS': ['/MTd'] |
| 238 }, |
| 239 'msvcrt:shared': { |
| 240 'CCFLAGS': ['/MDd'] |
| 241 } |
218 } | 242 } |
219 } | 243 } |
220 } | 244 } |
221 | 245 |
222 | 246 |
223 D8_FLAGS = { | 247 D8_FLAGS = { |
224 'gcc': { | 248 'gcc': { |
225 'console:readline': { | 249 'console:readline': { |
226 'LIBS': ['readline'] | 250 'LIBS': ['readline'] |
227 } | 251 } |
228 }, | 252 }, |
229 'msvc': { } | |
230 } | 253 } |
231 | 254 |
232 | 255 |
233 SUFFIXES = { | 256 SUFFIXES = { |
234 'release': '', | 257 'release': '', |
235 'debug': '_g' | 258 'debug': '_g' |
236 } | 259 } |
237 | 260 |
238 | 261 |
239 def Abort(message): | 262 def Abort(message): |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
281 'prof': { | 304 'prof': { |
282 'values': ['on', 'off'], | 305 'values': ['on', 'off'], |
283 'default': 'off', | 306 'default': 'off', |
284 'help': 'enable profiling of build target' | 307 'help': 'enable profiling of build target' |
285 }, | 308 }, |
286 'library': { | 309 'library': { |
287 'values': ['static', 'shared'], | 310 'values': ['static', 'shared'], |
288 'default': 'static', | 311 'default': 'static', |
289 'help': 'the type of library to produce' | 312 'help': 'the type of library to produce' |
290 }, | 313 }, |
| 314 'msvcrt': { |
| 315 'values': ['static', 'shared'], |
| 316 'default': 'static', |
| 317 'help': 'the type of MSVCRT library to use' |
| 318 }, |
291 'wordsize': { | 319 'wordsize': { |
292 'values': ['64', '32'], | 320 'values': ['64', '32'], |
293 'default': WORDSIZE_GUESS, | 321 'default': WORDSIZE_GUESS, |
294 'help': 'the word size' | 322 'help': 'the word size' |
295 }, | 323 }, |
296 'simulator': { | 324 'simulator': { |
297 'values': ['arm', 'none'], | 325 'values': ['arm', 'none'], |
298 'default': 'none', | 326 'default': 'none', |
299 'help': 'build with simulator' | 327 'help': 'build with simulator' |
300 }, | 328 }, |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
368 self.options = options | 396 self.options = options |
369 self.env_overrides = env_overrides | 397 self.env_overrides = env_overrides |
370 self.samples = samples | 398 self.samples = samples |
371 self.use_snapshot = (options['snapshot'] == 'on') | 399 self.use_snapshot = (options['snapshot'] == 'on') |
372 self.flags = None | 400 self.flags = None |
373 | 401 |
374 def AddRelevantFlags(self, initial, flags): | 402 def AddRelevantFlags(self, initial, flags): |
375 result = initial.copy() | 403 result = initial.copy() |
376 self.AppendFlags(result, flags.get('all')) | 404 self.AppendFlags(result, flags.get('all')) |
377 toolchain = self.options['toolchain'] | 405 toolchain = self.options['toolchain'] |
378 self.AppendFlags(result, flags[toolchain].get('all')) | 406 if toolchain in flags: |
| 407 self.AppendFlags(result, flags[toolchain].get('all')) |
| 408 for option in sorted(self.options.keys()): |
| 409 value = self.options[option] |
| 410 self.AppendFlags(result, flags[toolchain].get(option + ':' + value)) |
| 411 return result |
| 412 |
| 413 def AddRelevantSubFlags(self, options, flags): |
| 414 self.AppendFlags(options, flags.get('all')) |
379 for option in sorted(self.options.keys()): | 415 for option in sorted(self.options.keys()): |
380 value = self.options[option] | 416 value = self.options[option] |
381 self.AppendFlags(result, flags[toolchain].get(option + ':' + value)) | 417 self.AppendFlags(options, flags.get(option + ':' + value)) |
382 return result | |
383 | 418 |
384 def GetRelevantSources(self, source): | 419 def GetRelevantSources(self, source): |
385 result = [] | 420 result = [] |
386 result += source.get('all', []) | 421 result += source.get('all', []) |
387 for (name, value) in self.options.iteritems(): | 422 for (name, value) in self.options.iteritems(): |
388 result += source.get(name + ':' + value, []) | 423 result += source.get(name + ':' + value, []) |
389 return sorted(result) | 424 return sorted(result) |
390 | 425 |
391 def AppendFlags(self, options, added): | 426 def AppendFlags(self, options, added): |
392 if not added: | 427 if not added: |
393 return | 428 return |
394 for (key, value) in added.iteritems(): | 429 for (key, value) in added.iteritems(): |
395 if not key in options: | 430 if key.find(':') != -1: |
396 options[key] = value | 431 self.AddRelevantSubFlags(options, { key: value }) |
397 else: | 432 else: |
398 prefix = options[key] | 433 if not key in options: |
399 if isinstance(prefix, StringTypes): prefix = prefix.split() | 434 options[key] = value |
400 options[key] = prefix + value | 435 else: |
| 436 prefix = options[key] |
| 437 if isinstance(prefix, StringTypes): prefix = prefix.split() |
| 438 options[key] = prefix + value |
401 | 439 |
402 def ConfigureObject(self, env, input, **kw): | 440 def ConfigureObject(self, env, input, **kw): |
403 if self.options['library'] == 'static': | 441 if self.options['library'] == 'static': |
404 return env.StaticObject(input, **kw) | 442 return env.StaticObject(input, **kw) |
405 else: | 443 else: |
406 return env.SharedObject(input, **kw) | 444 return env.SharedObject(input, **kw) |
407 | 445 |
408 def ApplyEnvOverrides(self, env): | 446 def ApplyEnvOverrides(self, env): |
409 if not self.env_overrides: | 447 if not self.env_overrides: |
410 return | 448 return |
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
553 # version of scons. Also, there's a bug in some revisions that | 591 # version of scons. Also, there's a bug in some revisions that |
554 # doesn't allow this flag to be set, so we swallow any exceptions. | 592 # doesn't allow this flag to be set, so we swallow any exceptions. |
555 # Lovely. | 593 # Lovely. |
556 try: | 594 try: |
557 SetOption('warn', 'no-deprecated') | 595 SetOption('warn', 'no-deprecated') |
558 except: | 596 except: |
559 pass | 597 pass |
560 | 598 |
561 | 599 |
562 Build() | 600 Build() |
OLD | NEW |