diff options
Diffstat (limited to 'src/engine/SCons/Scanner/Prog.py')
-rw-r--r-- | src/engine/SCons/Scanner/Prog.py | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/src/engine/SCons/Scanner/Prog.py b/src/engine/SCons/Scanner/Prog.py index 848f874..4781175 100644 --- a/src/engine/SCons/Scanner/Prog.py +++ b/src/engine/SCons/Scanner/Prog.py @@ -38,13 +38,21 @@ def ProgramScanner(**kw): ps = SCons.Scanner.Base(scan, "ProgramScanner", **kw) return ps -def _split_libs(env, libs): +def _subst_libs(env, libs): """ Substitute environment variables and split into list. """ - libs = env.subst(libs) if SCons.Util.is_String(libs): - libs = libs.split() + libs = env.subst(libs) + if SCons.Util.is_String(libs): + libs = libs.split() + elif SCons.Util.is_Sequence(libs): + _libs = [] + for l in libs: + _libs += _subst_libs(env, l) + libs = _libs + else: + libs = [libs] return libs def scan(node, env, libpath = ()): @@ -59,12 +67,8 @@ def scan(node, env, libpath = ()): except KeyError: # There are no LIBS in this environment, so just return a null list: return [] - if SCons.Util.is_String(libs): - libs = _split_libs(env, libs) - else: - libs = SCons.Util.flatten(libs) - libs = map(lambda x: _split_libs(env, x) if SCons.Util.is_String(x) else x, libs) - libs = SCons.Util.flatten(libs) + + libs = _subst_libs(env, libs) try: prefix = env['LIBPREFIXES'] |