Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(117)

Side by Side Diff: SConstruct

Issue 19014: Adding support for building V8 for ARM with snapshot using the crosstool comp... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: '' Created 11 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | src/SConscript » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 285 matching lines...) Expand 10 before | Expand all | Expand 10 after
296 'values': ['freebsd', 'linux', 'macos', 'win32'], 296 'values': ['freebsd', 'linux', 'macos', 'win32'],
297 'default': OS_GUESS, 297 'default': OS_GUESS,
298 'help': 'the os to build for' 298 'help': 'the os to build for'
299 }, 299 },
300 'arch': { 300 'arch': {
301 'values':['arm', 'ia32'], 301 'values':['arm', 'ia32'],
302 'default': ARCH_GUESS, 302 'default': ARCH_GUESS,
303 'help': 'the architecture to build for' 303 'help': 'the architecture to build for'
304 }, 304 },
305 'snapshot': { 305 'snapshot': {
306 'values': ['on', 'off'], 306 'values': ['on', 'off', 'nobuild'],
307 'default': 'off', 307 'default': 'off',
308 'help': 'build using snapshots for faster start-up' 308 'help': 'build using snapshots for faster start-up'
309 }, 309 },
310 'prof': { 310 'prof': {
311 'values': ['on', 'off'], 311 'values': ['on', 'off'],
312 'default': 'off', 312 'default': 'off',
313 'help': 'enable profiling of build target' 313 'help': 'enable profiling of build target'
314 }, 314 },
315 'library': { 315 'library': {
316 'values': ['static', 'shared'], 316 'values': ['static', 'shared'],
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
389 if not env[name] in option['values']: 389 if not env[name] in option['values']:
390 message = ("Unknown %s value '%s'. Possible values are (%s)." % 390 message = ("Unknown %s value '%s'. Possible values are (%s)." %
391 (name, env[name], ", ".join(option['values']))) 391 (name, env[name], ", ".join(option['values'])))
392 Abort(message) 392 Abort(message)
393 393
394 394
395 class BuildContext(object): 395 class BuildContext(object):
396 396
397 def __init__(self, options, env_overrides, samples): 397 def __init__(self, options, env_overrides, samples):
398 self.library_targets = [] 398 self.library_targets = []
399 self.mksnapshot_targets = []
399 self.cctest_targets = [] 400 self.cctest_targets = []
400 self.sample_targets = [] 401 self.sample_targets = []
401 self.d8_targets = [] 402 self.d8_targets = []
402 self.options = options 403 self.options = options
403 self.env_overrides = env_overrides 404 self.env_overrides = env_overrides
404 self.samples = samples 405 self.samples = samples
405 self.use_snapshot = (options['snapshot'] == 'on') 406 self.use_snapshot = (options['snapshot'] != 'off')
407 self.build_snapshot = (options['snapshot'] == 'on')
406 self.flags = None 408 self.flags = None
407 409
408 def AddRelevantFlags(self, initial, flags): 410 def AddRelevantFlags(self, initial, flags):
409 result = initial.copy() 411 result = initial.copy()
410 self.AppendFlags(result, flags.get('all')) 412 self.AppendFlags(result, flags.get('all'))
411 toolchain = self.options['toolchain'] 413 toolchain = self.options['toolchain']
412 if toolchain in flags: 414 if toolchain in flags:
413 self.AppendFlags(result, flags[toolchain].get('all')) 415 self.AppendFlags(result, flags[toolchain].get('all'))
414 for option in sorted(self.options.keys()): 416 for option in sorted(self.options.keys()):
415 value = self.options[option] 417 value = self.options[option]
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
489 library_flags = context.AddRelevantFlags(os.environ, LIBRARY_FLAGS) 491 library_flags = context.AddRelevantFlags(os.environ, LIBRARY_FLAGS)
490 v8_flags = context.AddRelevantFlags(library_flags, V8_EXTRA_FLAGS) 492 v8_flags = context.AddRelevantFlags(library_flags, V8_EXTRA_FLAGS)
491 jscre_flags = context.AddRelevantFlags(library_flags, JSCRE_EXTRA_FLAGS) 493 jscre_flags = context.AddRelevantFlags(library_flags, JSCRE_EXTRA_FLAGS)
492 dtoa_flags = context.AddRelevantFlags(library_flags, DTOA_EXTRA_FLAGS) 494 dtoa_flags = context.AddRelevantFlags(library_flags, DTOA_EXTRA_FLAGS)
493 cctest_flags = context.AddRelevantFlags(v8_flags, CCTEST_EXTRA_FLAGS) 495 cctest_flags = context.AddRelevantFlags(v8_flags, CCTEST_EXTRA_FLAGS)
494 sample_flags = context.AddRelevantFlags(os.environ, SAMPLE_FLAGS) 496 sample_flags = context.AddRelevantFlags(os.environ, SAMPLE_FLAGS)
495 d8_flags = context.AddRelevantFlags(library_flags, D8_FLAGS) 497 d8_flags = context.AddRelevantFlags(library_flags, D8_FLAGS)
496 498
497 context.flags = { 499 context.flags = {
498 'v8': v8_flags, 500 'v8': v8_flags,
501 'mksnapshot': v8_flags,
499 'jscre': jscre_flags, 502 'jscre': jscre_flags,
500 'dtoa': dtoa_flags, 503 'dtoa': dtoa_flags,
501 'cctest': cctest_flags, 504 'cctest': cctest_flags,
502 'sample': sample_flags, 505 'sample': sample_flags,
503 'd8': d8_flags 506 'd8': d8_flags
504 } 507 }
505 508
506 target_id = mode 509 target_id = mode
507 suffix = SUFFIXES[target_id] 510 suffix = SUFFIXES[target_id]
508 library_name = 'v8' + suffix 511 library_name = 'v8' + suffix
509 env['LIBRARY'] = library_name 512 env['LIBRARY'] = library_name
510 513
511 # Build the object files by invoking SCons recursively. 514 # Build the object files by invoking SCons recursively.
512 (object_files, shell_files) = env.SConscript( 515 (object_files, shell_files, mksnapshot) = env.SConscript(
513 join('src', 'SConscript'), 516 join('src', 'SConscript'),
514 build_dir=join('obj', target_id), 517 build_dir=join('obj', target_id),
515 exports='context', 518 exports='context',
516 duplicate=False 519 duplicate=False
517 ) 520 )
518 521
522 context.mksnapshot_targets.append(mksnapshot)
523
519 # Link the object files into a library. 524 # Link the object files into a library.
520 env.Replace(**context.flags['v8']) 525 env.Replace(**context.flags['v8'])
521 context.ApplyEnvOverrides(env) 526 context.ApplyEnvOverrides(env)
522 if context.options['library'] == 'static': 527 if context.options['library'] == 'static':
523 library = env.StaticLibrary(library_name, object_files) 528 library = env.StaticLibrary(library_name, object_files)
524 else: 529 else:
525 # There seems to be a glitch in the way scons decides where to put 530 # There seems to be a glitch in the way scons decides where to put
526 # PDB files when compiling using MSVC so we specify it manually. 531 # PDB files when compiling using MSVC so we specify it manually.
527 # This should not affect any other platforms. 532 # This should not affect any other platforms.
528 pdb_name = library_name + '.dll.pdb' 533 pdb_name = library_name + '.dll.pdb'
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
563 def Build(): 568 def Build():
564 opts = GetOptions() 569 opts = GetOptions()
565 env = Environment(options=opts) 570 env = Environment(options=opts)
566 Help(opts.GenerateHelpText(env)) 571 Help(opts.GenerateHelpText(env))
567 VerifyOptions(env) 572 VerifyOptions(env)
568 env_overrides = ParseEnvOverrides(env['env']) 573 env_overrides = ParseEnvOverrides(env['env'])
569 574
570 SourceSignatures(env['sourcesignatures']) 575 SourceSignatures(env['sourcesignatures'])
571 576
572 libraries = [] 577 libraries = []
578 mksnapshots = []
573 cctests = [] 579 cctests = []
574 samples = [] 580 samples = []
575 d8s = [] 581 d8s = []
576 modes = SplitList(env['mode']) 582 modes = SplitList(env['mode'])
577 for mode in modes: 583 for mode in modes:
578 context = BuildSpecific(env.Copy(), mode, env_overrides) 584 context = BuildSpecific(env.Copy(), mode, env_overrides)
579 libraries += context.library_targets 585 libraries += context.library_targets
586 mksnapshots += context.mksnapshot_targets
580 cctests += context.cctest_targets 587 cctests += context.cctest_targets
581 samples += context.sample_targets 588 samples += context.sample_targets
582 d8s += context.d8_targets 589 d8s += context.d8_targets
583 590
584 env.Alias('library', libraries) 591 env.Alias('library', libraries)
592 env.Alias('mksnapshot', mksnapshots)
585 env.Alias('cctests', cctests) 593 env.Alias('cctests', cctests)
586 env.Alias('sample', samples) 594 env.Alias('sample', samples)
587 env.Alias('d8', d8s) 595 env.Alias('d8', d8s)
588 596
589 if env['sample']: 597 if env['sample']:
590 env.Default('sample') 598 env.Default('sample')
591 else: 599 else:
592 env.Default('library') 600 env.Default('library')
593 601
594 602
595 # We disable deprecation warnings because we need to be able to use 603 # We disable deprecation warnings because we need to be able to use
596 # env.Copy without getting warnings for compatibility with older 604 # env.Copy without getting warnings for compatibility with older
597 # version of scons. Also, there's a bug in some revisions that 605 # version of scons. Also, there's a bug in some revisions that
598 # doesn't allow this flag to be set, so we swallow any exceptions. 606 # doesn't allow this flag to be set, so we swallow any exceptions.
599 # Lovely. 607 # Lovely.
600 try: 608 try:
601 SetOption('warn', 'no-deprecated') 609 SetOption('warn', 'no-deprecated')
602 except: 610 except:
603 pass 611 pass
604 612
605 613
606 Build() 614 Build()
OLDNEW
« no previous file with comments | « no previous file | src/SConscript » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698