Make case differences not effect #include order. (Anthony Roach)
authorstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Fri, 23 Aug 2002 01:15:21 +0000 (01:15 +0000)
committerstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Fri, 23 Aug 2002 01:15:21 +0000 (01:15 +0000)
git-svn-id: http://scons.tigris.org/svn/scons/trunk@443 fdb21ef1-2011-0410-befe-b5e4ea1792b1

src/CHANGES.txt
src/engine/SCons/Scanner/C.py
src/engine/SCons/Scanner/Fortran.py
test/win32pathmadness.py

index 4902256db27b6a133f457cf927931a3ccde7c7e4..fb8196e001fe67a618dfee36111a885c6acec341 100644 (file)
@@ -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
index f871551289b193c962ce74cd60382ebf4af1008a..d12fd4559dacc57df6f3f3eaf37d3e106e2f3ae5 100644 (file)
@@ -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)
 
index 954510ac641d30b4392e22fbcfcb6379b7728f68..5e0d6d38a68b0e39af1eeea01ad14760d37e9b59 100644 (file)
@@ -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)
index 745e24e72c53dcf06ca327485fd88b34c831e8ec..cb6cb57a4b43e5f1f18bf8097e042dc629a2f70e 100644 (file)
@@ -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()