diff options
author | Steven Knight <knight@baldmt.com> | 2004-09-18 13:46:51 (GMT) |
---|---|---|
committer | Steven Knight <knight@baldmt.com> | 2004-09-18 13:46:51 (GMT) |
commit | dda1f7bcb8bac0d5dc29d0148f28805d5f205a8f (patch) | |
tree | 21e631d50c63a66d2c43813ee8c52990c47f96de /src/engine/SCons/Scanner/Prog.py | |
parent | 80a0699a0a8de7400e34c2e72dce9b9abebd674d (diff) | |
download | SCons-dda1f7bcb8bac0d5dc29d0148f28805d5f205a8f.zip SCons-dda1f7bcb8bac0d5dc29d0148f28805d5f205a8f.tar.gz SCons-dda1f7bcb8bac0d5dc29d0148f28805d5f205a8f.tar.bz2 |
Don't put LIBS Nodes in the scanned results list multiple times.
Diffstat (limited to 'src/engine/SCons/Scanner/Prog.py')
-rw-r--r-- | src/engine/SCons/Scanner/Prog.py | 36 |
1 files changed, 21 insertions, 15 deletions
diff --git a/src/engine/SCons/Scanner/Prog.py b/src/engine/SCons/Scanner/Prog.py index 3c45ca2..6efb44a 100644 --- a/src/engine/SCons/Scanner/Prog.py +++ b/src/engine/SCons/Scanner/Prog.py @@ -30,11 +30,11 @@ import SCons.Node.FS import SCons.Scanner import SCons.Util -def ProgScan(fs = SCons.Node.FS.default_fs): +def ProgScan(fs = SCons.Node.FS.default_fs, **kw): """Return a prototype Scanner instance for scanning executable files for static-lib dependencies""" - pf = SCons.Scanner.FindPathDirs('LIBPATH', fs) - ps = SCons.Scanner.Base(scan, "ProgScan", path_function = pf) + kw['path_function'] = SCons.Scanner.FindPathDirs('LIBPATH', fs) + ps = apply(SCons.Scanner.Base, [scan, "ProgScan"], kw) return ps def scan(node, env, libpath = (), fs = SCons.Node.FS.default_fs): @@ -69,18 +69,24 @@ def scan(node, env, libpath = (), fs = SCons.Node.FS.default_fs): except KeyError: suffix = [ '' ] - find_file = SCons.Node.FS.find_file - adjustixes = SCons.Util.adjustixes - result = [] + pairs = [] for suf in map(env.subst, suffix): for pref in map(env.subst, prefix): - for lib in libs: - if SCons.Util.is_String(lib): - lib = env.subst(lib) - lib = adjustixes(lib, pref, suf) - lib = find_file(lib, libpath, fs.File) - if lib: - result.append(lib) - else: - result.append(lib) + pairs.append((pref, suf)) + + result = [] + + find_file = SCons.Node.FS.find_file + 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, fs.File) + if l: + result.append(l) + else: + result.append(lib) + return result |