scons: Populate top_srcdir and top_builddir variables when reading Makefiles.sources.
authorJosé Fonseca <jfonseca@vmware.com>
Tue, 14 Aug 2012 11:18:45 +0000 (12:18 +0100)
committerJosé Fonseca <jfonseca@vmware.com>
Tue, 14 Aug 2012 11:19:56 +0000 (12:19 +0100)
This is not entirely correct, as scons doesn't put binaries in a
"src" subdirectory, but doesn't seem to be a problem for now.

scons/custom.py
scons/source_list.py

index cc953bd999a0167aa728436f0b4d4b71670f8e34..43e7727aa42f53dea71190aa82d41ee69a2cd1fc 100644 (file)
@@ -235,6 +235,10 @@ def parse_source_list(env, filename, names=None):
     # parse the source list file
     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'])
+
     sym_table = parser.parse(src.abspath)
 
     if names:
index 8111f43184f77e5b8e41d64266c3cd27df184fcc..e16d1f9b6d2b6a31dc387323a88fcf6df94ea2a4 100644 (file)
@@ -13,6 +13,7 @@ The goal is to allow Makefile's and SConscript's to share source listing.
 
 class SourceListParser(object):
     def __init__(self):
+        self.symbol_table = {}
         self._reset()
 
     def _reset(self, filename=None):
@@ -20,7 +21,6 @@ class SourceListParser(object):
 
         self.line_no = 1
         self.line_cont = ''
-        self.symbol_table = {}
 
     def _error(self, msg):
         raise RuntimeError('%s:%d: %s' % (self.filename, self.line_no, msg))
@@ -125,3 +125,6 @@ class SourceListParser(object):
                 raise
 
         return self.symbol_table
+
+    def add_symbol(self, name, value):
+        self.symbol_table[name] = value