build scripts: Made minor modifications to reduce build overhead time.
1. --implicit-cache behavior is default. 2. makeEnv in src/SConscript is conditionally called. 3. decider set to MD5-timestamp 4. NO_HTML build option changed to SLICC_HTML (defaults to False)
This commit is contained in:
parent
75681d3c1b
commit
eb43883bef
4 changed files with 46 additions and 16 deletions
|
@ -192,6 +192,8 @@ for key,val in os.environ.iteritems():
|
||||||
use_env[key] = val
|
use_env[key] = val
|
||||||
|
|
||||||
main = Environment(ENV=use_env)
|
main = Environment(ENV=use_env)
|
||||||
|
main.Decider('MD5-timestamp')
|
||||||
|
main.SetOption('implicit_cache', 1)
|
||||||
main.root = Dir(".") # The current directory (where this file lives).
|
main.root = Dir(".") # The current directory (where this file lives).
|
||||||
main.srcdir = Dir("src") # The source directory
|
main.srcdir = Dir("src") # The source directory
|
||||||
|
|
||||||
|
|
|
@ -953,21 +953,49 @@ else:
|
||||||
print 'Unknown compiler, please fix compiler options'
|
print 'Unknown compiler, please fix compiler options'
|
||||||
Exit(1)
|
Exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
# To speed things up, we only instantiate the build environments we
|
||||||
|
# need. We try to identify the needed environment for each target; if
|
||||||
|
# we can't, we fall back on instantiating all the environments just to
|
||||||
|
# be safe.
|
||||||
|
target_types = ['debug', 'opt', 'fast', 'prof']
|
||||||
|
obj2target = {'do': 'debug', 'o': 'opt', 'fo': 'fast', 'po': 'prof'}
|
||||||
|
|
||||||
|
def identifyTarget(t):
|
||||||
|
ext = t.split('.')[-1]
|
||||||
|
if ext in target_types:
|
||||||
|
return ext
|
||||||
|
if obj2target.has_key(ext):
|
||||||
|
return obj2target[ext]
|
||||||
|
match = re.search(r'/tests/([^/]+)/', t)
|
||||||
|
if match and match.group(1) in target_types:
|
||||||
|
return match.group(1)
|
||||||
|
return 'all'
|
||||||
|
|
||||||
|
needed_envs = [identifyTarget(target) for target in BUILD_TARGETS]
|
||||||
|
if 'all' in needed_envs:
|
||||||
|
needed_envs += target_types
|
||||||
|
|
||||||
|
# Debug binary
|
||||||
|
if 'debug' in needed_envs:
|
||||||
makeEnv('debug', '.do',
|
makeEnv('debug', '.do',
|
||||||
CCFLAGS = Split(ccflags['debug']),
|
CCFLAGS = Split(ccflags['debug']),
|
||||||
CPPDEFINES = ['DEBUG', 'TRACING_ON=1'])
|
CPPDEFINES = ['DEBUG', 'TRACING_ON=1'])
|
||||||
|
|
||||||
# Optimized binary
|
# Optimized binary
|
||||||
|
if 'opt' in needed_envs:
|
||||||
makeEnv('opt', '.o',
|
makeEnv('opt', '.o',
|
||||||
CCFLAGS = Split(ccflags['opt']),
|
CCFLAGS = Split(ccflags['opt']),
|
||||||
CPPDEFINES = ['TRACING_ON=1'])
|
CPPDEFINES = ['TRACING_ON=1'])
|
||||||
|
|
||||||
# "Fast" binary
|
# "Fast" binary
|
||||||
|
if 'fast' in needed_envs:
|
||||||
makeEnv('fast', '.fo', strip = True,
|
makeEnv('fast', '.fo', strip = True,
|
||||||
CCFLAGS = Split(ccflags['fast']),
|
CCFLAGS = Split(ccflags['fast']),
|
||||||
CPPDEFINES = ['NDEBUG', 'TRACING_ON=0'])
|
CPPDEFINES = ['NDEBUG', 'TRACING_ON=0'])
|
||||||
|
|
||||||
# Profiled binary
|
# Profiled binary
|
||||||
|
if 'prof' in needed_envs:
|
||||||
makeEnv('prof', '.po',
|
makeEnv('prof', '.po',
|
||||||
CCFLAGS = Split(ccflags['prof']),
|
CCFLAGS = Split(ccflags['prof']),
|
||||||
CPPDEFINES = ['NDEBUG', 'TRACING_ON=0'],
|
CPPDEFINES = ['NDEBUG', 'TRACING_ON=0'],
|
||||||
|
|
|
@ -69,7 +69,7 @@ def slicc_emitter(target, source, env):
|
||||||
slicc = SLICC(filepath, verbose=False)
|
slicc = SLICC(filepath, verbose=False)
|
||||||
slicc.process()
|
slicc.process()
|
||||||
slicc.writeCodeFiles(protocol_dir.abspath)
|
slicc.writeCodeFiles(protocol_dir.abspath)
|
||||||
if not env['NO_HTML']:
|
if env['SLICC_HTML']:
|
||||||
slicc.writeHTMLFiles(html_dir.abspath)
|
slicc.writeHTMLFiles(html_dir.abspath)
|
||||||
|
|
||||||
target.extend([protocol_dir.File(f) for f in sorted(slicc.files())])
|
target.extend([protocol_dir.File(f) for f in sorted(slicc.files())])
|
||||||
|
@ -82,7 +82,7 @@ def slicc_action(target, source, env):
|
||||||
slicc = SLICC(filepath, verbose=True)
|
slicc = SLICC(filepath, verbose=True)
|
||||||
slicc.process()
|
slicc.process()
|
||||||
slicc.writeCodeFiles(protocol_dir.abspath)
|
slicc.writeCodeFiles(protocol_dir.abspath)
|
||||||
if not env['NO_HTML']:
|
if env['SLICC_HTML']:
|
||||||
slicc.writeHTMLFiles(html_dir.abspath)
|
slicc.writeHTMLFiles(html_dir.abspath)
|
||||||
|
|
||||||
slicc_builder = Builder(action=MakeAction(slicc_action, Transform("SLICC")),
|
slicc_builder = Builder(action=MakeAction(slicc_action, Transform("SLICC")),
|
||||||
|
|
|
@ -48,5 +48,5 @@ opt = EnumVariable('PROTOCOL', 'Coherence protocol for Ruby', 'None',
|
||||||
sticky_vars.AddVariables(opt)
|
sticky_vars.AddVariables(opt)
|
||||||
export_vars += ['PROTOCOL']
|
export_vars += ['PROTOCOL']
|
||||||
|
|
||||||
opt = BoolVariable('NO_HTML', 'Do not create HTML files', False)
|
opt = BoolVariable('SLICC_HTML', 'Create HTML files', False)
|
||||||
sticky_vars.AddVariables(opt)
|
sticky_vars.AddVariables(opt)
|
||||||
|
|
Loading…
Reference in a new issue