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

Side by Side Diff: SConstruct

Issue 100104: Added better version information (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: '' Created 11 years, 7 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 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 'arch:arm': { 190 'arch:arm': {
191 'CPPDEFINES': ['ARM'] 191 'CPPDEFINES': ['ARM']
192 }, 192 },
193 'arch:android': { 193 'arch:android': {
194 'CPPDEFINES': ['ARM'] 194 'CPPDEFINES': ['ARM']
195 }, 195 },
196 'os:win32': { 196 'os:win32': {
197 'WARNINGFLAGS': ['-pedantic', '-Wno-long-long'] 197 'WARNINGFLAGS': ['-pedantic', '-Wno-long-long']
198 }, 198 },
199 'os:linux': { 199 'os:linux': {
200 'WARNINGFLAGS': ['-pedantic'] 200 'WARNINGFLAGS': ['-pedantic'],
201 'library:shared': {
202 'soname:on': {
203 'LINKFLAGS': ['-Wl,-soname,${SONAME}']
204 }
205 }
201 }, 206 },
202 'os:macos': { 207 'os:macos': {
203 'WARNINGFLAGS': ['-pedantic'] 208 'WARNINGFLAGS': ['-pedantic']
204 }, 209 },
205 'disassembler:on': { 210 'disassembler:on': {
206 'CPPDEFINES': ['ENABLE_DISASSEMBLER'] 211 'CPPDEFINES': ['ENABLE_DISASSEMBLER']
207 } 212 }
208 }, 213 },
209 'msvc': { 214 'msvc': {
210 'all': { 215 'all': {
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after
486 'prof': { 491 'prof': {
487 'values': ['on', 'off', 'oprofile'], 492 'values': ['on', 'off', 'oprofile'],
488 'default': 'off', 493 'default': 'off',
489 'help': 'enable profiling of build target' 494 'help': 'enable profiling of build target'
490 }, 495 },
491 'library': { 496 'library': {
492 'values': ['static', 'shared'], 497 'values': ['static', 'shared'],
493 'default': 'static', 498 'default': 'static',
494 'help': 'the type of library to produce' 499 'help': 'the type of library to produce'
495 }, 500 },
501 'soname': {
502 'values': ['on', 'off'],
503 'default': 'off',
504 'help': 'turn on setting soname for Linux shared library'
505 },
496 'msvcrt': { 506 'msvcrt': {
497 'values': ['static', 'shared'], 507 'values': ['static', 'shared'],
498 'default': 'static', 508 'default': 'static',
499 'help': 'the type of Microsoft Visual C++ runtime library to use' 509 'help': 'the type of Microsoft Visual C++ runtime library to use'
500 }, 510 },
501 'msvcltcg': { 511 'msvcltcg': {
502 'values': ['on', 'off'], 512 'values': ['on', 'off'],
503 'default': 'on', 513 'default': 'on',
504 'help': 'use Microsoft Visual C++ link-time code generation' 514 'help': 'use Microsoft Visual C++ link-time code generation'
505 }, 515 },
(...skipping 30 matching lines...) Expand all
536 result.Add('mode', 'compilation mode (debug, release)', 'release') 546 result.Add('mode', 'compilation mode (debug, release)', 'release')
537 result.Add('sample', 'build sample (shell, process)', '') 547 result.Add('sample', 'build sample (shell, process)', '')
538 result.Add('env', 'override environment settings (NAME0:value0,NAME1:value1,.. .)', '') 548 result.Add('env', 'override environment settings (NAME0:value0,NAME1:value1,.. .)', '')
539 result.Add('importenv', 'import environment settings (NAME0,NAME1,...)', '') 549 result.Add('importenv', 'import environment settings (NAME0,NAME1,...)', '')
540 for (name, option) in SIMPLE_OPTIONS.iteritems(): 550 for (name, option) in SIMPLE_OPTIONS.iteritems():
541 help = '%s (%s)' % (name, ", ".join(option['values'])) 551 help = '%s (%s)' % (name, ", ".join(option['values']))
542 result.Add(name, help, option.get('default')) 552 result.Add(name, help, option.get('default'))
543 return result 553 return result
544 554
545 555
556 def GetVersionComponents():
557 MAJOR_VERSION_PATTERN = re.compile(r"#define\s+MAJOR_VERSION\s+(.*)")
558 MINOR_VERSION_PATTERN = re.compile(r"#define\s+MINOR_VERSION\s+(.*)")
559 BUILD_NUMBER_PATTERN = re.compile(r"#define\s+BUILD_NUMBER\s+(.*)")
560 PATCH_LEVEL_PATTERN = re.compile(r"#define\s+PATCH_LEVEL\s+(.*)")
561
562 patterns = [MAJOR_VERSION_PATTERN,
563 MINOR_VERSION_PATTERN,
564 BUILD_NUMBER_PATTERN,
565 PATCH_LEVEL_PATTERN]
566
567 source = open(join('src', 'version.cc')).read()
568 version_components = []
569 for pattern in patterns:
570 match = pattern.search(source)
571 if match:
572 version_components.append(match.group(1).strip())
573 else:
574 version_components.append('0')
575
576 return version_components
577
578
579 def GetVersion():
580 version_components = GetVersionComponents()
581
582 if version_components[len(version_components) - 1] == '0':
583 version_components.pop()
584 return '.'.join(version_components)
585
586
587 def GetSpecificSONAME():
588 SONAME_PATTERN = re.compile(r"#define\s+SONAME\s+\"(.*)\"")
589
590 source = open(join('src', 'version.cc')).read()
591 match = SONAME_PATTERN.search(source)
592
593 if match:
594 return match.group(1).strip()
595 else:
596 return ''
597
598
546 def SplitList(str): 599 def SplitList(str):
547 return [ s for s in str.split(",") if len(s) > 0 ] 600 return [ s for s in str.split(",") if len(s) > 0 ]
548 601
549 602
550 def IsLegal(env, option, values): 603 def IsLegal(env, option, values):
551 str = env[option] 604 str = env[option]
552 for s in SplitList(str): 605 for s in SplitList(str):
553 if not s in values: 606 if not s in values:
554 Abort("Illegal value for option %s '%s'." % (option, s)) 607 Abort("Illegal value for option %s '%s'." % (option, s))
555 return False 608 return False
556 return True 609 return True
557 610
558 611
559 def VerifyOptions(env): 612 def VerifyOptions(env):
560 if not IsLegal(env, 'mode', ['debug', 'release']): 613 if not IsLegal(env, 'mode', ['debug', 'release']):
561 return False 614 return False
562 if not IsLegal(env, 'sample', ["shell", "process"]): 615 if not IsLegal(env, 'sample', ["shell", "process"]):
563 return False 616 return False
564 if env['os'] == 'win32' and env['library'] == 'shared' and env['prof'] == 'on' : 617 if env['os'] == 'win32' and env['library'] == 'shared' and env['prof'] == 'on' :
565 Abort("Profiling on windows only supported for static library.") 618 Abort("Profiling on windows only supported for static library.")
566 if env['prof'] == 'oprofile' and env['os'] != 'linux': 619 if env['prof'] == 'oprofile' and env['os'] != 'linux':
567 Abort("OProfile is only supported on Linux.") 620 Abort("OProfile is only supported on Linux.")
621 if env['os'] == 'win32' and env['soname'] == 'on':
622 Abort("Shared Object soname not applicable for Windows.")
623 if env['soname'] == 'on' and env['library'] == 'static':
624 Abort("Shared Object soname not applicable for static library.")
568 for (name, option) in SIMPLE_OPTIONS.iteritems(): 625 for (name, option) in SIMPLE_OPTIONS.iteritems():
569 if (not option.get('default')) and (name not in ARGUMENTS): 626 if (not option.get('default')) and (name not in ARGUMENTS):
570 message = ("A value for option %s must be specified (%s)." % 627 message = ("A value for option %s must be specified (%s)." %
571 (name, ", ".join(option['values']))) 628 (name, ", ".join(option['values'])))
572 Abort(message) 629 Abort(message)
573 if not env[name] in option['values']: 630 if not env[name] in option['values']:
574 message = ("Unknown %s value '%s'. Possible values are (%s)." % 631 message = ("Unknown %s value '%s'. Possible values are (%s)." %
575 (name, env[name], ", ".join(option['values']))) 632 (name, env[name], ", ".join(option['values'])))
576 Abort(message) 633 Abort(message)
577 634
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
688 745
689 context.flags = { 746 context.flags = {
690 'v8': v8_flags, 747 'v8': v8_flags,
691 'mksnapshot': mksnapshot_flags, 748 'mksnapshot': mksnapshot_flags,
692 'dtoa': dtoa_flags, 749 'dtoa': dtoa_flags,
693 'cctest': cctest_flags, 750 'cctest': cctest_flags,
694 'sample': sample_flags, 751 'sample': sample_flags,
695 'd8': d8_flags 752 'd8': d8_flags
696 } 753 }
697 754
755 # Generate library base name.
698 target_id = mode 756 target_id = mode
699 suffix = SUFFIXES[target_id] 757 suffix = SUFFIXES[target_id]
700 library_name = 'v8' + suffix 758 library_name = 'v8' + suffix
759 version = GetVersion()
760 if context.options['soname'] == 'on':
761 # When building shared object with SONAME version the library name.
762 library_name += '-' + version
701 env['LIBRARY'] = library_name 763 env['LIBRARY'] = library_name
702 764
765 # Generate library SONAME if required by the build.
766 if context.options['soname'] == 'on':
767 soname = GetSpecificSONAME()
768 if soname == '':
769 soname = 'lib' + library_name + '.so'
770 env['SONAME'] = soname
771
703 # Build the object files by invoking SCons recursively. 772 # Build the object files by invoking SCons recursively.
704 (object_files, shell_files, mksnapshot) = env.SConscript( 773 (object_files, shell_files, mksnapshot) = env.SConscript(
705 join('src', 'SConscript'), 774 join('src', 'SConscript'),
706 build_dir=join('obj', target_id), 775 build_dir=join('obj', target_id),
707 exports='context', 776 exports='context',
708 duplicate=False 777 duplicate=False
709 ) 778 )
710 779
711 context.mksnapshot_targets.append(mksnapshot) 780 context.mksnapshot_targets.append(mksnapshot)
712 781
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
794 # version of scons. Also, there's a bug in some revisions that 863 # version of scons. Also, there's a bug in some revisions that
795 # doesn't allow this flag to be set, so we swallow any exceptions. 864 # doesn't allow this flag to be set, so we swallow any exceptions.
796 # Lovely. 865 # Lovely.
797 try: 866 try:
798 SetOption('warn', 'no-deprecated') 867 SetOption('warn', 'no-deprecated')
799 except: 868 except:
800 pass 869 pass
801 870
802 871
803 Build() 872 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