summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Scanner/C.py
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2002-01-23 16:47:35 (GMT)
committerSteven Knight <knight@baldmt.com>2002-01-23 16:47:35 (GMT)
commit627e41f923a7db85b0d30ae1c6980c9fab2c642f (patch)
tree74981e2bd22f7234dd35bbb0753c6247a455336c /src/engine/SCons/Scanner/C.py
parent964635ba4c25c748c2407d5d6cbd65efd0bab340 (diff)
downloadSCons-627e41f923a7db85b0d30ae1c6980c9fab2c642f.zip
SCons-627e41f923a7db85b0d30ae1c6980c9fab2c642f.tar.gz
SCons-627e41f923a7db85b0d30ae1c6980c9fab2c642f.tar.bz2
Make the C Scanner always return the dependencies sorted, so order differences don't cause unnecessary rebuilds.
Diffstat (limited to 'src/engine/SCons/Scanner/C.py')
-rw-r--r--src/engine/SCons/Scanner/C.py15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/engine/SCons/Scanner/C.py b/src/engine/SCons/Scanner/C.py
index 2c51223..58d065b 100644
--- a/src/engine/SCons/Scanner/C.py
+++ b/src/engine/SCons/Scanner/C.py
@@ -118,5 +118,18 @@ def scan(node, env, args = [SCons.Node.FS.default_fs, ()]):
if not node is None:
nodes.append(node)
- return nodes
+ # Schwartzian transform from the Python FAQ Wizard
+ def st(List, Metric):
+ def pairing(element, M = Metric):
+ return (M(element), element)
+ def stripit(pair):
+ return pair[1]
+ paired = map(pairing, List)
+ paired.sort()
+ return map(stripit, paired)
+
+ def normalize(node):
+ return os.path.normpath(str(node))
+
+ return st(nodes, normalize)