diff --git a/src/wscript b/src/wscript index f0d416200..f55d2adff 100644 --- a/src/wscript +++ b/src/wscript @@ -125,7 +125,7 @@ def create_ns3_module(bld, name, dependencies=(), test=False): module.env.append_value("INCLUDES", '#') module.pcfilegen = bld(features='ns3pcfile') - module.pcfilegen.module = module + module.pcfilegen.module = module.name return module @@ -413,13 +413,14 @@ Requires: %s\ @TaskGen.feature('ns3pcfile') @TaskGen.after_method('process_rule') def apply(self): - output_filename = 'lib%s.pc' % os.path.basename(self.module.target) + module = self.bld.find_ns3_module(self.module) + output_filename = 'lib%s.pc' % os.path.basename(module.target) output_node = self.path.find_or_declare(output_filename) assert output_node is not None, str(self) task = self.create_task('ns3pcfile') self.bld.install_files('${LIBDIR}/pkgconfig', output_node) task.set_outputs([output_node]) - task.module = self.module + task.module = module diff --git a/wscript b/wscript index ea1b6b4d3..05440fa36 100644 --- a/wscript +++ b/wscript @@ -666,6 +666,14 @@ def _exclude_taskgen(self, taskgen): break +def _find_ns3_module(self, name): + for obj in _get_all_task_gen(self): + # disable the modules themselves + if hasattr(obj, "is_ns3_module") and obj.name == name: + return obj + raise KeyError(name) + + def build(bld): env = bld.env @@ -694,6 +702,7 @@ def build(bld): bld.create_suid_program = types.MethodType(create_suid_program, bld) bld.__class__.all_task_gen = property(_get_all_task_gen) bld.exclude_taskgen = types.MethodType(_exclude_taskgen, bld) + bld.find_ns3_module = types.MethodType(_find_ns3_module, bld) # process subfolders from here bld.add_subdirs('src') @@ -776,7 +785,7 @@ def build(bld): # disable pcfile taskgens for disabled modules if 'ns3pcfile' in getattr(obj, "features", []): - if obj.module.name not in bld.env.NS3_ENABLED_MODULES: + if obj.module not in bld.env.NS3_ENABLED_MODULES: bld.exclude_taskgen(obj)