summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2002-08-23 01:15:21 (GMT)
committerSteven Knight <knight@baldmt.com>2002-08-23 01:15:21 (GMT)
commitd7079b4271cc358b515378e8b02bdf52637f3ee0 (patch)
treecb16674c1167c9b4a809d4ea2badd2e8e670186d
parent1e49c8ca34956b490c6e3e9a90b8322b983ebedf (diff)
downloadSCons-d7079b4271cc358b515378e8b02bdf52637f3ee0.zip
SCons-d7079b4271cc358b515378e8b02bdf52637f3ee0.tar.gz
SCons-d7079b4271cc358b515378e8b02bdf52637f3ee0.tar.bz2
Make case differences not effect #include order. (Anthony Roach)
-rw-r--r--src/CHANGES.txt3
-rw-r--r--src/engine/SCons/Scanner/C.py6
-rw-r--r--src/engine/SCons/Scanner/Fortran.py6
-rw-r--r--test/win32pathmadness.py32
4 files changed, 45 insertions, 2 deletions
diff --git a/src/CHANGES.txt b/src/CHANGES.txt
index 4902256..fb8196e 100644
--- a/src/CHANGES.txt
+++ b/src/CHANGES.txt
@@ -29,6 +29,9 @@ RELEASE 0.09 -
- Fix using an alias as a dependency of a target so that if one of the
alias' dependencies gets rebuilt, the resulting target will, too.
+ - Fix differently ordered targets causing unnecessary rebuilds
+ on case insensitive systems.
+
RELEASE 0.08 - Mon, 15 Jul 2002 12:08:51 -0500
diff --git a/src/engine/SCons/Scanner/C.py b/src/engine/SCons/Scanner/C.py
index f871551..d12fd45 100644
--- a/src/engine/SCons/Scanner/C.py
+++ b/src/engine/SCons/Scanner/C.py
@@ -129,7 +129,11 @@ def scan(node, env, target, fs = SCons.Node.FS.default_fs):
return map(stripit, paired)
def normalize(node):
- return str(node)
+ # We don't want the order of includes to be
+ # modified by case changes on case insensitive OSes, so
+ # normalize the case of the filename here:
+ # (see test/win32pathmadness.py for a test of this)
+ return SCons.Node.FS._my_normcase(str(node))
node.found_includes[cpppath] = st(nodes, normalize)
diff --git a/src/engine/SCons/Scanner/Fortran.py b/src/engine/SCons/Scanner/Fortran.py
index 954510a..5e0d6d3 100644
--- a/src/engine/SCons/Scanner/Fortran.py
+++ b/src/engine/SCons/Scanner/Fortran.py
@@ -126,6 +126,10 @@ def scan(node, env, target, fs = SCons.Node.FS.default_fs):
return map(stripit, paired)
def normalize(node):
- return str(node)
+ # We don't want the order of includes to be
+ # modified by case changes on case insensitive OSes, so
+ # normalize the case of the filename here:
+ # (see test/win32pathmadness.py for a test of this)
+ return SCons.Node.FS._my_normcase(str(node))
return st(nodes, normalize)
diff --git a/test/win32pathmadness.py b/test/win32pathmadness.py
index 745e24e..cb6cb57 100644
--- a/test/win32pathmadness.py
+++ b/test/win32pathmadness.py
@@ -97,5 +97,37 @@ scons: .* is up to date.
scons: .* is up to date.
""")
+test.write('SConstruct', """
+env=Environment()
+env.StaticLibrary('a', 'a.c')
+env.StaticLibrary('b', 'b.c')
+""")
+
+test.write('a.c', '''
+#include "a.h"
+#include "b.h"
+''')
+
+test.write('b.c', '''
+#include "a.h"
+#include "B.h"
+''')
+
+test.write('a.h', """
+#define A_H
+""")
+
+test.write('b.h', """
+#define B_H
+""")
+
+test.run(arguments='a.lib b.lib')
+test.run(arguments='b.lib a.lib', stdout="""\
+scons: .* is up to date.
+scons: .* is up to date.
+""")
+
+
+
test.pass_test()