diff options
author | Marc Orr <marc.orr@gmail.com> | 2012-03-06 19:07:41 -0800 |
---|---|---|
committer | Marc Orr <marc.orr@gmail.com> | 2012-03-06 19:07:41 -0800 |
commit | eb43883bef3960a9325f26e1925ca8325330173c (patch) | |
tree | 0b8bdb70184eb51392c88ca561f5482725d62999 /src/SConscript | |
parent | 75681d3c1b6fbb5b9ff0fe63862bdbe31ae5dec6 (diff) | |
download | gem5-eb43883bef3960a9325f26e1925ca8325330173c.tar.xz |
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)
Diffstat (limited to 'src/SConscript')
-rwxr-xr-x | src/SConscript | 54 |
1 files changed, 41 insertions, 13 deletions
diff --git a/src/SConscript b/src/SConscript index 679403020..c017b601b 100755 --- a/src/SConscript +++ b/src/SConscript @@ -953,24 +953,52 @@ else: print 'Unknown compiler, please fix compiler options' Exit(1) -makeEnv('debug', '.do', - CCFLAGS = Split(ccflags['debug']), - CPPDEFINES = ['DEBUG', 'TRACING_ON=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', + CCFLAGS = Split(ccflags['debug']), + CPPDEFINES = ['DEBUG', 'TRACING_ON=1']) # Optimized binary -makeEnv('opt', '.o', - CCFLAGS = Split(ccflags['opt']), - CPPDEFINES = ['TRACING_ON=1']) +if 'opt' in needed_envs: + makeEnv('opt', '.o', + CCFLAGS = Split(ccflags['opt']), + CPPDEFINES = ['TRACING_ON=1']) # "Fast" binary -makeEnv('fast', '.fo', strip = True, - CCFLAGS = Split(ccflags['fast']), - CPPDEFINES = ['NDEBUG', 'TRACING_ON=0']) +if 'fast' in needed_envs: + makeEnv('fast', '.fo', strip = True, + CCFLAGS = Split(ccflags['fast']), + CPPDEFINES = ['NDEBUG', 'TRACING_ON=0']) # Profiled binary -makeEnv('prof', '.po', - CCFLAGS = Split(ccflags['prof']), - CPPDEFINES = ['NDEBUG', 'TRACING_ON=0'], - LINKFLAGS = '-pg') +if 'prof' in needed_envs: + makeEnv('prof', '.po', + CCFLAGS = Split(ccflags['prof']), + CPPDEFINES = ['NDEBUG', 'TRACING_ON=0'], + LINKFLAGS = '-pg') Return('envList') |