diff options
Diffstat (limited to 'src/mem/protocol/SConscript')
-rw-r--r-- | src/mem/protocol/SConscript | 25 |
1 files changed, 10 insertions, 15 deletions
diff --git a/src/mem/protocol/SConscript b/src/mem/protocol/SConscript index 17701e403..9630c685a 100644 --- a/src/mem/protocol/SConscript +++ b/src/mem/protocol/SConscript @@ -50,7 +50,7 @@ html_dir = Dir('html') # # Use SLICC # -def slicc_action(target, source, env): +def slicc_generator(target, source, env, for_signature): slicc_bin = str(source[0]) protocol = source[1].get_contents() pdir = str(protocol_dir) @@ -65,33 +65,28 @@ def slicc_action(target, source, env): cmdline = [ slicc_bin, pdir, hdir, protocol, do_html ] cmdline += [ str(s) for s in source[2:] ] cmdline = ' '.join(cmdline) - os.system(cmdline) + return cmdline + +slicc_builder = Builder(generator=slicc_generator) protocol = env['PROTOCOL'] sources = [ protocol_dir.File("RubySlicc_interfaces.slicc"), protocol_dir.File("%s.slicc" % protocol) ] -sm_files = [] -for s in sources: - for sm_file in file(File(s).srcnode().abspath, "r"): - sm_file = sm_file.strip() - if not sm_file: - continue - if sm_file.startswith("#"): - continue - sm_file = protocol_dir.File(sm_file) - sm_file.srcnode().abspath - sm_files.append(sm_file) - sys.path[0:0] = [env['ENV']['M5_PLY']] execfile(slicc_dir.File('parser/parser.py').srcnode().abspath) +sm_files = read_slicc([s.srcnode().abspath for s in sources]) +sm_files = [ protocol_dir.File(f) for f in sm_files ] + hh, cc = scan([s.srcnode().abspath for s in sm_files]) hh = [ protocol_dir.File(f) for f in hh ] cc = [ protocol_dir.File(f) for f in cc ] slicc_bin = slicc_dir.File("slicc") -env.Command(hh + cc, [ slicc_bin, Value(protocol) ] + sm_files, slicc_action) + +env.Append(BUILDERS={'SLICC' : slicc_builder}) +env.SLICC(hh + cc, [ slicc_bin, Value(protocol) ] + sm_files) for f in cc: Source(f) |