238a239
> self.package = package
819,823c820,822
< def makeEmbeddedSwigInit(target, source, env):
< code = code_formatter()
< module = source[0].get_contents()
< code('''\
< #include "sim/init.hh"
---
> def makeEmbeddedSwigInit(package):
> def body(target, source, env):
> assert len(target) == 1 and len(source) == 1
825,827c824,831
< extern "C" {
< void init_${module}();
< }
---
> code = code_formatter()
> module = source[0].get_contents()
> # Provide the full context so that the swig-generated call to
> # Py_InitModule ends up placing the embedded module in the
> # right package.
> context = str(package) + "._" + str(module)
> code('''\
> #include "sim/init.hh"
829,831c833,835
< EmbeddedSwig embed_swig_${module}(init_${module});
< ''')
< code.write(str(target[0]))
---
> extern "C" {
> void init_${module}();
> }
832a837,841
> EmbeddedSwig embed_swig_${module}(init_${module}, "${context}");
> ''')
> code.write(str(target[0]))
> return body
>
841c850,851
< MakeAction(makeEmbeddedSwigInit, Transform("EMBED SW")))
---
> MakeAction(makeEmbeddedSwigInit(swig.package),
> Transform("EMBED SW")))