diff --git a/src/wscript b/src/wscript index 1f9a8a016..9cf072e6b 100644 --- a/src/wscript +++ b/src/wscript @@ -59,11 +59,16 @@ def configure(conf): if not conf.env['LIB_BOOST']: conf.env['LIB_BOOST'] = [] + # Append blddir to the module path before recursing into modules + blddir = os.path.abspath(os.path.join(conf.bldnode.abspath(), conf.variant)) + conf.env.append_value('NS3_MODULE_PATH', blddir) + for module in all_modules: conf.recurse(module, mandatory=False) - blddir = os.path.abspath(os.path.join(conf.bldnode.abspath(), conf.variant)) - conf.env.append_value('NS3_MODULE_PATH', blddir) + # Remove duplicate path items + conf.env['NS3_MODULE_PATH'] = wutils.uniquify_list(conf.env['NS3_MODULE_PATH']) + if Options.options.enable_rpath: conf.env.append_value('RPATH', '-Wl,-rpath,%s' % (os.path.join(blddir),)) diff --git a/wutils.py b/wutils.py index 56029885c..33d745a23 100644 --- a/wutils.py +++ b/wutils.py @@ -228,3 +228,10 @@ def run_python_program(program_string, env, visualize=False): return run_argv([env['PYTHON'][0]] + execvec, env, cwd=cwd) +def uniquify_list(seq): + """Remove duplicates while preserving order + From Dave Kirby http://www.peterbe.com/plog/uniqifiers-benchmark + """ + seen = set() + return [ x for x in seq if x not in seen and not seen.add(x)] +