From 50dec637909cfe8fa53582f2f64ab261b123f092 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Fonseca?= Date: Wed, 15 Aug 2012 19:24:58 +0100 Subject: [PATCH] scons: Fix MinGW cross compilation. Compensate for the recent changes and assumptions added to Makefiles.sources --- scons/custom.py | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/scons/custom.py b/scons/custom.py index 43e7727aa42..277c05b6797 100644 --- a/scons/custom.py +++ b/scons/custom.py @@ -236,8 +236,13 @@ def parse_source_list(env, filename, names=None): parser = source_list.SourceListParser() src = env.File(filename).srcnode() - parser.add_symbol('top_srcdir', env.Dir('#').abspath) - parser.add_symbol('top_builddir', env['build_dir']) + cur_srcdir = env.Dir('.').srcnode().abspath + top_srcdir = env.Dir('#').abspath + top_builddir = os.path.join(top_srcdir, env['build_dir']) + + # Populate the symbol table of the Makefile parser. + parser.add_symbol('top_srcdir', top_srcdir) + parser.add_symbol('top_builddir', top_builddir) sym_table = parser.parse(src.abspath) @@ -253,7 +258,21 @@ def parse_source_list(env, filename, names=None): src_lists = {} for sym in symbols: val = sym_table[sym] - src_lists[sym] = [f for f in val.split(' ') if f] + srcs = [] + for f in val.split(): + 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. + f = top_builddir + f[len(top_builddir + '/src'):] + if f.startswith(cur_srcdir + '/'): + # Prefer relative source paths, as absolute files tend to + # cause duplicate actions. + f = f[len(cur_srcdir + '/'):] + srcs.append(f) + + src_lists[sym] = srcs # if names are given, concatenate the lists if names: -- 2.30.2