summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Scanner/Prog.py
diff options
context:
space:
mode:
authordirkbaechle <dl9obn@darc.de>2015-02-02 17:23:09 (GMT)
committerdirkbaechle <dl9obn@darc.de>2015-02-02 17:23:09 (GMT)
commitb22e9980df40305bb8beac3ea03bb045e01a031c (patch)
tree84fd5ee0398f814be2e4852ac526ed80e8ac3e5a /src/engine/SCons/Scanner/Prog.py
parent7633be5b72a7070f8bb014324be653c1156a854c (diff)
parent3c229dfb912628cede20119af721862d87202c0b (diff)
downloadSCons-b22e9980df40305bb8beac3ea03bb045e01a031c.zip
SCons-b22e9980df40305bb8beac3ea03bb045e01a031c.tar.gz
SCons-b22e9980df40305bb8beac3ea03bb045e01a031c.tar.bz2
Merged in klimkin/scons (pull request #205)
Fix incomplete LIBS flattening and substitution in Program scanner
Diffstat (limited to 'src/engine/SCons/Scanner/Prog.py')
-rw-r--r--src/engine/SCons/Scanner/Prog.py25
1 files changed, 20 insertions, 5 deletions
diff --git a/src/engine/SCons/Scanner/Prog.py b/src/engine/SCons/Scanner/Prog.py
index 49e93a5..6567b3d 100644
--- a/src/engine/SCons/Scanner/Prog.py
+++ b/src/engine/SCons/Scanner/Prog.py
@@ -38,6 +38,24 @@ def ProgramScanner(**kw):
ps = SCons.Scanner.Base(scan, "ProgramScanner", **kw)
return ps
+def _subst_libs(env, libs):
+ """
+ Substitute environment variables and split into list.
+ """
+ if SCons.Util.is_String(libs):
+ 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 is an object (Node, for example)
+ libs = [libs]
+ return libs
+
def scan(node, env, libpath = ()):
"""
This scanner scans program files for static-library
@@ -50,10 +68,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 = libs.split()
- else:
- libs = SCons.Util.flatten(libs)
+
+ libs = _subst_libs(env, libs)
try:
prefix = env['LIBPREFIXES']
@@ -83,7 +99,6 @@ def scan(node, env, libpath = ()):
adjustixes = SCons.Util.adjustixes
for lib in libs:
if SCons.Util.is_String(lib):
- lib = env.subst(lib)
for pref, suf in pairs:
l = adjustixes(lib, pref, suf)
l = find_file(l, libpath, verbose=print_find_libs)