summaryrefslogtreecommitdiff
path: root/src/mem/protocol/SConscript
diff options
context:
space:
mode:
authorSteve Reinhardt <steve.reinhardt@amd.com>2010-01-29 20:29:17 -0800
committerSteve Reinhardt <steve.reinhardt@amd.com>2010-01-29 20:29:17 -0800
commitc6f1d959be74de55b0c90f3c961314791342d03e (patch)
treed0ef0777894828291a6ced188c8bcae323cea442 /src/mem/protocol/SConscript
parent98c94cfe3ce83634f3bad79ca18263f42e36ca6a (diff)
downloadgem5-c6f1d959be74de55b0c90f3c961314791342d03e.tar.xz
ruby: Make SLICC-generated objects SimObjects.
Also add SLICC support for state-machine parameter defaults (passed through to Python as SimObject Param defaults).
Diffstat (limited to 'src/mem/protocol/SConscript')
-rw-r--r--src/mem/protocol/SConscript28
1 files changed, 26 insertions, 2 deletions
diff --git a/src/mem/protocol/SConscript b/src/mem/protocol/SConscript
index cd9920d22..453b37119 100644
--- a/src/mem/protocol/SConscript
+++ b/src/mem/protocol/SConscript
@@ -70,6 +70,25 @@ def slicc_emitter(target, source, env):
print " %s" % name
target.extend(sorted(slicc.files()))
+ pdir = str(protocol_dir)
+ hdir = str(html_dir)
+
+ if not isdir(pdir):
+ os.mkdir(pdir)
+ if not isdir(hdir):
+ os.mkdir(hdir)
+
+ print "SLICC Generator pass 1..."
+ slicc.findMachines()
+
+ print "SLICC Generator pass 2..."
+ slicc.generate()
+
+ print "SLICC writing C++ files..."
+ slicc.writeCodeFiles(pdir)
+
+ print "SLICC writing HTML files..."
+ slicc.writeHTMLFiles(hdir)
return target, source
def slicc_action(target, source, env):
@@ -108,5 +127,10 @@ env.Append(BUILDERS={'SLICC' : slicc_builder})
nodes = env.SLICC([], [ Value(protocol) ] + sources)
env.Depends(nodes, slicc_depends)
-for f in sorted(s for s in nodes if str(s).endswith('.cc')):
- Source(f)
+for f in nodes:
+ s = str(f)
+ if s.endswith('.cc'):
+ Source(f)
+ elif s.endswith('.py'):
+ SimObject(f)
+