scons: Fix source lists parsing on Windows.
authorJosé Fonseca <jfonseca@vmware.com>
Tue, 22 Jan 2013 20:54:17 +0000 (20:54 +0000)
committerJosé Fonseca <jfonseca@vmware.com>
Wed, 23 Jan 2013 12:11:53 +0000 (12:11 +0000)
/ vs \ mismatch was causing .objs to be put in the source tree, causing
breakeage when doing different build types in the same tree (eg., debug
vs release).

Fix this by normalizing everything to / slashes.

It's probably a good idea to purge all .objs from source tree to prevent
issues completely.

scons/custom.py

index 277c05b67975e43d8cbe851df9eaa80c6f0c83d4..658df97829bac571b1e466ab61ee57aec3cebc1f 100644 (file)
@@ -240,6 +240,11 @@ def parse_source_list(env, filename, names=None):
     top_srcdir = env.Dir('#').abspath
     top_builddir = os.path.join(top_srcdir, env['build_dir'])
 
+    # Normalize everything to / slashes
+    cur_srcdir = cur_srcdir.replace('\\', '/')
+    top_srcdir = top_srcdir.replace('\\', '/')
+    top_builddir = top_builddir.replace('\\', '/')
+
     # Populate the symbol table of the Makefile parser.
     parser.add_symbol('top_srcdir', top_srcdir)
     parser.add_symbol('top_builddir', top_builddir)
@@ -263,8 +268,8 @@ def parse_source_list(env, filename, names=None):
             if f:
                 # Process source paths
                 if f.startswith(top_builddir + '/src'):
-                    # Automake puts build output on a `src` subdirectory, bue
-                    # SCons does no, so strip it here.
+                    # Automake puts build output on a `src` subdirectory, but
+                    # SCons does not, so strip it here.
                     f = top_builddir + f[len(top_builddir + '/src'):]
                 if f.startswith(cur_srcdir + '/'):
                     # Prefer relative source paths, as absolute files tend to