summaryrefslogtreecommitdiff
path: root/SConscript
diff options
context:
space:
mode:
authorSteve Reinhardt <stever@eecs.umich.edu>2006-02-23 14:31:15 -0500
committerSteve Reinhardt <stever@eecs.umich.edu>2006-02-23 14:31:15 -0500
commit99484cfae81f3f01ccdfcd273ddc2bdb41e6456b (patch)
tree72ab68b6bc4f31d4131afd8f241ab973f8e9c25a /SConscript
parent9949ccf16158668ad0d9282a97c372a69de09532 (diff)
downloadgem5-99484cfae81f3f01ccdfcd273ddc2bdb41e6456b.tar.xz
Create a Builder object for .isa files in arch/SConscript.
Start using SCons File objects to avoid fixed paths in subordinate SConscripts. SConscript: Push isa_parser stuff (including .isa scanner) down into arch/SConscript. arch/SConscript: Create a Builder object for .isa files, including existing scanner. Return file objects generated by isa-specific SConscript back up to parent. arch/alpha/SConscript: arch/mips/SConscript: arch/sparc/SConscript: Convert sources to scons File objects, so file names can be specified relative to the current directory. Invoke new builder for isa description, and get generated sources from there (instead of listing them explicitly). arch/isa_parser.py: Get rid of third argument ("include_path"). It was a pain to generate this from scons, and it turned out it's not needed anyway, since the only included file (decoder.hh) will be in the same directory as the sources. --HG-- extra : convert_revision : 36861bcef36763f229704d8cb7a642b4486a3581
Diffstat (limited to 'SConscript')
-rw-r--r--SConscript57
1 files changed, 8 insertions, 49 deletions
diff --git a/SConscript b/SConscript
index 49f06af7d..3e607caa4 100644
--- a/SConscript
+++ b/SConscript
@@ -320,6 +320,11 @@ syscall_emulation_sources = Split('''
sim/syscall_emul.cc
''')
+# The following stuff (targetarch code and global define of THE_ISA)
+# are legacy things that assume we're only compiling one ISA at a
+# time. These will have to go away if we want to build a binary that
+# supports multiple ISAs.
+
targetarch_files = Split('''
alpha_linux_process.hh
alpha_memory.hh
@@ -338,18 +343,14 @@ for f in targetarch_files:
env.Command('targetarch/' + f, 'arch/%s/%s' % (env['TARGET_ISA'], f),
'''echo '#include "arch/%s/%s"' > $TARGET''' % (env['TARGET_ISA'], f))
-# Let the target architecture define what sources it needs
-arch_source = SConscript('arch/%s/SConscript' % env['TARGET_ISA'],
- build_dir = 'build/%s/' % env['BUILD_DIR'],
- exports = 'env', duplicate = False)
-
# Add a flag defining what THE_ISA should be for all compilation
env.Append(CPPDEFINES=[('THE_ISA','%s_ISA' % env['TARGET_ISA'].upper())])
-SConscript('arch/SConscript', exports = 'env', duplicate = False)
+arch_sources = SConscript('arch/SConscript',
+ exports = 'env', duplicate = False)
# Set up complete list of sources based on configuration.
-sources = base_sources + arch_source
+sources = base_sources + arch_sources
if env['FULL_SYSTEM']:
sources += full_system_sources
@@ -366,27 +367,6 @@ for opt in env.ExportOptions:
###################################################
#
-# Add an SCons scanner for ISA files
-#
-###################################################
-import SCons.Scanner
-
-def ISAScan():
- return SCons.Scanner.Classic("ISAScan",
- "$ISASUFFIXES",
- "SRCDIR",
- '^[ \t]*##[ \t]*include[ \t]*"([^>"]+)"')
-
-def ISAPath(env, dir, target=None, source=None, a=None):
- return (Dir(env['SRCDIR']), Dir('.'))
-
-iscan = Scanner(function = ISAScan().scan, skeys = [".isa", ".ISA"],
- path_function = ISAPath)
-env.Append(SCANNERS = iscan)
-
-
-###################################################
-#
# Special build rules.
#
###################################################
@@ -397,27 +377,6 @@ env.Command(Split('base/traceflags.hh base/traceflags.cc'),
'base/traceflags.py',
'python $SOURCE $TARGET.base')
-# several files are generated from arch/$TARGET_ISA/isa_desc.
-env.Command(Split('''
- arch/%s/decoder.cc
- arch/%s/decoder.hh
- arch/%s/alpha_o3_exec.cc
- arch/%s/fast_cpu_exec.cc
- arch/%s/simple_cpu_exec.cc
- arch/%s/full_cpu_exec.cc''' %
- (env['TARGET_ISA'],
- env['TARGET_ISA'],
- env['TARGET_ISA'],
- env['TARGET_ISA'],
- env['TARGET_ISA'],
- env['TARGET_ISA'])),
- Split('''
- arch/%s/isa/main.isa
- arch/isa_parser.py''' %
- env['TARGET_ISA']),
- '$SRCDIR/arch/isa_parser.py $SOURCE $TARGET.dir arch/%s' % env['TARGET_ISA'])
-
-
# libelf build is described in its own SConscript file.
# SConscript-local is the per-config build, which just copies some
# header files into a place where they can be found.