92a93,96
> #
> # Grab the CPU Model information
> #
>
94d97
< isa_parser = File('isa_parser.py')
100,111d102
< # Several files are generated from the ISA description.
< # We always get the basic decoder and header file.
< isa_desc_gen_files = [ 'decoder.cc', 'decoder.hh', 'max_inst_regs.hh' ]
< # We also get an execute file for each selected CPU model.
< isa_desc_gen_files += [CpuModel.dict[cpu].filename
< for cpu in env['CPU_MODELS']]
<
< # Also include the CheckerCPU as one of the models if it is being
< # enabled via command line.
< if env['USE_CHECKER']:
< isa_desc_gen_files += [CpuModel.dict['CheckerCPU'].filename]
<
115c106,108
< return (isa_desc_gen_files, [isa_parser, cpu_models_file] + source)
---
> cpu_models = list(env['CPU_MODELS'])
> if env['USE_CHECKER']:
> cpu_models.append('CheckerCPU')
117,118c110,114
< # Pieces are in place, so create the builder.
< python = sys.executable # use same Python binary used to run scons
---
> # Several files are generated from the ISA description.
> # We always get the basic decoder and header file.
> target = [ 'decoder.cc', 'decoder.hh', 'max_inst_regs.hh' ]
> # We also get an execute file for each selected CPU model.
> target += [CpuModel.dict[cpu].filename for cpu in cpu_models]
119a116,129
> return target, source + [ Value(m) for m in cpu_models ]
>
> ARCH_DIR = Dir('.')
>
> def isa_desc_action(target, source, env):
> # Add the current directory to the system path so we can import files
> sys.path[0:0] = [ ARCH_DIR.srcnode().abspath ]
> import isa_parser
>
> models = [ s.get_contents() for s in source[1:] ]
> cpu_models = [CpuModel.dict[cpu] for cpu in models]
> parser = isa_parser.ISAParser(target[0].dir.abspath, cpu_models)
> parser.parse_isa_desc(source[0].abspath)
>
122,127c132
< if env['USE_CHECKER']:
< isa_desc_builder = Builder(action=python + ' $SOURCES $TARGET.dir $CPU_MODELS CheckerCPU',
< emitter = isa_desc_emitter)
< else:
< isa_desc_builder = Builder(action=python + ' $SOURCES $TARGET.dir $CPU_MODELS',
< emitter = isa_desc_emitter)
---
> isa_desc_builder = Builder(action=isa_desc_action, emitter=isa_desc_emitter)