262,263d261
< f = file(str(target[0]), 'w')
<
265c263
< target = env['TARGET_ISA']
---
> target_isa = env['TARGET_ISA']
273,275c271,277
< print >>f, '#ifndef __CONFIG_THE_ISA_HH__'
< print >>f, '#define __CONFIG_THE_ISA_HH__'
< print >>f
---
> code = code_formatter()
> code('''\
> #ifndef __CONFIG_THE_ISA_HH__
> #define __CONFIG_THE_ISA_HH__
>
> ''')
>
277,282c279
< print >>f, '#define %s %d' % (define(isa), i + 1)
< print >>f
< print >>f, '#define THE_ISA %s' % (define(target))
< print >>f, '#define TheISA %s' % (namespace(target))
< print >>f
< print >>f, '#endif // __CONFIG_THE_ISA_HH__'
---
> code('#define $0 $1', define(isa), i + 1)
283a281,289
> code('''
>
> #define THE_ISA ${{define(target_isa)}}
> #define TheISA ${{namespace(target_isa)}}
>
> #endif // __CONFIG_THE_ISA_HH__''')
>
> code.write(str(target[0]))
>
349a356
> from m5.util import code_formatter
405c412
< code = m5.util.code_formatter()
---
> code = code_formatter()
421c428
< code.write(str(target[0]))
---
> code.write(target[0].abspath)
430c437
< f = file(str(target[0]), 'w')
---
> code = code_formatter()
433,434c440,441
< print >>f, "%s = %s" % (src, repr(data))
< f.close()
---
> code('$src = ${{repr(data)}}')
> code.write(str(target[0]))
444,446c451,456
< f = file(str(target[0]), 'w')
< print >>f, 'from params import *'
< print >>f, 'from m5.SimObject import *'
---
> code = code_formatter()
> code('''\
> from params import *
> from m5.SimObject import *
> ''')
>
448,449c458,459
< print >>f, 'from %s import *' % module.get_contents()
< f.close()
---
> code('from $0 import *', module.get_contents())
> code.write(str(target[0]))
465d474
< hh_file = file(target[0].abspath, 'w')
469,470c478,480
< print >>hh_file, obj.cxx_decl()
< hh_file.close()
---
> code = code_formatter()
> obj.cxx_decl(code)
> code.write(target[0].abspath)
475d484
< i_file = file(target[0].abspath, 'w')
479,481c488,490
< for line in param.swig_decl():
< print >>i_file, line
< i_file.close()
---
> code = code_formatter()
> param.swig_decl(code)
> code.write(target[0].abspath)
486d494
< cc_file = file(target[0].abspath, 'w')
490,491c498,500
< print >>cc_file, obj.cxx_def()
< cc_file.close()
---
> code = code_formatter()
> obj.cxx_def(code)
> code.write(target[0].abspath)
496d504
< hh_file = file(target[0].abspath, 'w')
500,501c508,510
< print >>hh_file, obj.cxx_decl()
< hh_file.close()
---
> code = code_formatter()
> obj.cxx_decl(code)
> code.write(target[0].abspath)
541d549
< out = file(target[0].abspath, 'w')
559,561c567,568
< enums = set()
< predecls = []
< pd_seen = set()
---
> code = code_formatter()
> code('%module params')
563,567c570,573
< def add_pds(*pds):
< for pd in pds:
< if pd not in pd_seen:
< predecls.append(pd)
< pd_seen.add(pd)
---
> code('%{')
> for obj in ordered_objs:
> code('#include "params/$obj.hh"')
> code('%}')
572,580c578
< ptype = param.ptype
< if issubclass(ptype, m5.params.Enum):
< if ptype not in enums:
< enums.add(ptype)
< pds = param.swig_predecls()
< if isinstance(pds, (list, tuple)):
< add_pds(*pds)
< else:
< add_pds(pds)
---
> param.swig_predecls(code)
582,584c580
< print >>out, '%module params'
<
< print >>out, '%{'
---
> enums = set()
586,587c582,591
< print >>out, '#include "params/%s.hh"' % obj
< print >>out, '%}'
---
> params = obj._params.local.values()
> for param in params:
> ptype = param.ptype
> if issubclass(ptype, m5.params.Enum) and ptype not in enums:
> enums.add(ptype)
> code('%include "enums/$0.hh"', ptype.__name__)
>
> for obj in ordered_objs:
> obj.swig_objdecls(code)
> code()
589,597d592
< for pd in predecls:
< print >>out, pd
<
< enums = list(enums)
< enums.sort()
< for enum in enums:
< print >>out, '%%include "enums/%s.hh"' % enum.__name__
< print >>out
<
598a594
> continue
600,601c596
< for decl in obj.swig_objdecls:
< print >>out, decl
---
> obj.swig_objdecls(code)
607d601
< namespaces.reverse()
609c603,604
< code = ''
---
> for ns in namespaces:
> code('namespace $ns {')
612c607
< code += '// avoid name conflicts\n'
---
> code('// avoid name conflicts')
615c610
< code += '%%rename(%s) %s;\n' % (flat_name, classname)
---
> code('%rename($flat_name) $classname;')
617,619c612,613
< code += '// stop swig from creating/wrapping default ctor/dtor\n'
< code += '%%nodefault %s;\n' % classname
< code += 'class %s ' % classname
---
> code('// stop swig from creating/wrapping default ctor/dtor')
> code('%nodefault $classname;')
621,622c615,617
< code += ': public %s' % obj._base.cxx_class
< code += ' {};\n'
---
> code('class $classname : public ${{obj._base.cxx_class}} {};')
> else:
> code('class $classname {};')
624,628c619,621
< for ns in namespaces:
< new_code = 'namespace %s {\n' % ns
< new_code += code
< new_code += '}\n'
< code = new_code
---
> for ns in reversed(namespaces):
> code('/* namespace $ns */ }')
> code()
630,632c623
< print >>out, code
<
< print >>out, '%%include "src/sim/sim_object_params.hh"' % obj
---
> code('%include "src/sim/sim_object_params.hh"')
634c625
< print >>out, '%%include "params/%s.hh"' % obj
---
> code('%include "params/$obj.hh"')
635a627,628
> code.write(target[0].abspath)
>
652,653c645,648
< f = file(str(target[0]), 'w')
< print >>f, 'extern "C" {'
---
> code = code_formatter()
>
> code('extern "C" {')
> code.indent()
655,657c650,655
< print >>f, ' void init_%s();' % module.get_contents()
< print >>f, '}'
< print >>f, 'void initSwig() {'
---
> code('void init_$0();', module.get_contents())
> code.dedent()
> code('}')
>
> code('void initSwig() {')
> code.indent()
659,661c657,659
< print >>f, ' init_%s();' % module.get_contents()
< print >>f, '}'
< f.close()
---
> code('init_$0();', module.get_contents())
> code.dedent()
> code('}')
662a661,662
> code.write(str(target[0]))
>
691a692
> code = code_formatter()
693,694d693
< f = file(str(target[0]), 'w')
<
697c696,697
< print >>f, 'basic = ['
---
> code('basic = [')
> code.indent()
700,702c700,703
< print >>f, " '%s'," % flag
< print >>f, " ]"
< print >>f
---
> code("'$flag',")
> code(']')
> code.dedent()
> code()
704,705c705,707
< print >>f, 'compound = ['
< print >>f, " 'All',"
---
> code('compound = [')
> code.indent()
> code("'All',")
708,710c710,713
< print >>f, " '%s'," % flag
< print >>f, " ]"
< print >>f
---
> code("'$flag',")
> code("]")
> code.dedent()
> code()
712,713c715,716
< print >>f, "all = frozenset(basic + compound)"
< print >>f
---
> code("all = frozenset(basic + compound)")
> code()
715c718,719
< print >>f, 'compoundMap = {'
---
> code('compoundMap = {')
> code.indent()
717c721
< print >>f, " 'All' : %s," % (all, )
---
> code("'All' : $all,")
720,722c724,727
< print >>f, " '%s' : %s," % (flag, compound)
< print >>f, " }"
< print >>f
---
> code("'$flag' : $compound,")
> code('}')
> code.dedent()
> code()
724,725c729,731
< print >>f, 'descriptions = {'
< print >>f, " 'All' : 'All flags',"
---
> code('descriptions = {')
> code.indent()
> code("'All' : 'All flags',")
727,728c733,735
< print >>f, " '%s' : '%s'," % (flag, desc)
< print >>f, " }"
---
> code("'$flag' : '$desc',")
> code("}")
> code.dedent()
730c737
< f.close()
---
> code.write(str(target[0]))
735,736d741
< f = file(str(target[0]), 'w')
<
737a743
> code = code_formatter()
740c746
< print >>f, '''
---
> code('''
750c756
< {'''
---
> {''')
751a758
> code.indent()
756c763
< print >>f, ' "%s",' % flag
---
> code('"$flag",')
758c765
< print >>f, ' "All",'
---
> code('"All",')
761c768,769
< print >>f, ' "%s",' % flag
---
> code('"$flag",')
> code.dedent()
763,766c771,772
< print >>f, '};'
< print >>f
< print >>f, 'const int Trace::numFlagStrings = %d;' % (len(allFlags) + 1)
< print >>f
---
> code('''\
> };
768c774,777
< #
---
> const int Trace::numFlagStrings = ${{len(allFlags) + 1}};
>
> ''')
>
771d779
< #
773c781,782
< print >>f, 'static const Flags AllMap[] = {'
---
> code('static const Flags AllMap[] = {')
> code.indent()
776,778c785,788
< print >>f, " %s," % flag
< print >>f, '};'
< print >>f
---
> code('$flag,')
> code.dedent()
> code('};')
> code()
783c793,794
< print >>f, 'static const Flags %sMap[] = {' % flag
---
> code('static const Flags ${flag}Map[] = {')
> code.indent()
785,788c796,800
< print >>f, " %s," % flag
< print >>f, " (Flags)-1"
< print >>f, '};'
< print >>f
---
> code('$flag,')
> code('(Flags)-1')
> code.dedent()
> code('};')
> code()
790d801
< #
793,796c804,806
< #
< print >>f, 'const Flags *Trace::compoundFlags[] ='
< print >>f, '{'
< print >>f, ' AllMap,'
---
> code('const Flags *Trace::compoundFlags[] = {')
> code.indent()
> code('AllMap,')
799c809
< print >>f, ' %sMap,' % flag
---
> code('${flag}Map,')
801c811,812
< print >>f, '};'
---
> code.dedent()
> code('};')
803c814
< f.close()
---
> code.write(str(target[0]))
808,809d818
< f = file(str(target[0]), 'w')
<
810a820
> code = code_formatter()
813c823
< print >>f, '''
---
> code('''\
825c835
< enum Flags {'''
---
> enum Flags {''')
828a839
> code.indent()
831c842
< print >>f, ' %s = %d,' % (flag, idx)
---
> code('$flag = $idx,')
835c846,848
< print >>f, ' NumFlags = %d,' % idx
---
> code('NumFlags = $idx,')
> code.dedent()
> code()
838c851
< print >>f, '''
---
> code('''
841c854
< // flags, and are used by changeFlag.'''
---
> // flags, and are used by changeFlag.''')
843c856,857
< print >>f, ' All = %d,' % idx
---
> code.indent()
> code('All = $idx,')
847c861
< print >>f, ' %s = %d,' % (flag, idx)
---
> code('$flag = $idx,')
851c865,866
< print >>f, ' NumCompoundFlags = %d' % numCompoundFlags
---
> code('NumCompoundFlags = $numCompoundFlags')
> code.dedent()
854c869
< print >>f, '''\
---
> code('''\
868c883
< '''
---
> ''')
870c885
< f.close()
---
> code.write(str(target[0]))
892d906
< dst = file(str(target[0]), 'w')
909,912c923,929
< print >>dst, ".data"
< print >>dst, ".globl %s_beg" % sym
< print >>dst, ".globl %s_end" % sym
< print >>dst, "%s_beg:" % sym
---
> code = code_formatter()
> code('''\
> .data
> .globl ${sym}_beg
> .globl ${sym}_end
> ${sym}_beg:''')
>
915,917c932,935
< print >>dst, ".byte", ','.join([str(d) for d in x])
< print >>dst, "%s_end:" % sym
< print >>dst, ".long %d" % len(marshalled)
---
> bytes = ','.join([str(d) for d in x])
> code('.byte $bytes')
> code('${sym}_end:')
> code('.long $0', len(marshalled))
918a937,938
> code.write(str(target[0]))
>
929c949
< dst = file(str(target[0]), 'w')
---
> code = code_formatter()
935a956
>
937,944c958,970
< print >>dst, ' { %s,' % c_str(pysource.arcname)
< print >>dst, ' %s,' % c_str(pysource.abspath)
< print >>dst, ' %s,' % c_str(pysource.modpath)
< print >>dst, ' %s_beg, %s_end,' % (sym, sym)
< print >>dst, ' %s_end - %s_beg,' % (sym, sym)
< print >>dst, ' *(int *)%s_end }%s' % (sym, endchar)
<
< print >>dst, '#include "sim/init.hh"'
---
> arcname = c_str(pysource.arcname)
> abspath = c_str(pysource.abspath)
> modpath = c_str(pysource.modpath)
> code.indent()
> code('''\
> { $arcname,
> $abspath,
> $modpath,
> ${sym}_beg, ${sym}_end,
> ${sym}_end - ${sym}_beg,
> *(int *)${sym}_end }$endchar
> ''')
> code.dedent()
945a972
> code('#include "sim/init.hh"')
948c975
< print >>dst, "extern const char %s_beg[], %s_end[];" % (sym, sym)
---
> code('extern const char ${sym}_beg[], ${sym}_end[];')
950,952c977,979
< print >>dst, "const EmbeddedPyModule embeddedPyImporter = "
< dump_mod("PyEMB_importer", endchar=';');
< print >>dst
---
> code('const EmbeddedPyModule embeddedPyImporter = ')
> dump_mod("PyEMB_importer", endchar=';')
> code()
954c981
< print >>dst, "const EmbeddedPyModule embeddedPyModules[] = {"
---
> code('const EmbeddedPyModule embeddedPyModules[] = {')
961,962c988,989
< print >>dst, " { 0, 0, 0, 0, 0, 0, 0 }"
< print >>dst, "};"
---
> code(' { 0, 0, 0, 0, 0, 0, 0 }')
> code('};')
963a991
> code.write(str(target[0]))