changeset 828a8296270e in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=828a8296270e
description:
        SCons: Allow top level directory of EXTRAS able to contain SConscripts.
        The current EXTRAS will fail if the top level directory pointed to by 
EXTRAS
        has a SConscript file in it.  We allow this by including the directory 
name
        of the EXTRA in the build directory which prevents a clash between
        src/SConscript and extra/SConscript. Maintain compatibility with older 
uses
        of EXTRAS by adding a -I for each top level extra directory.

diffstat:

1 file changed, 2 insertions(+), 2 deletions(-)
SConstruct |    4 ++--

diffs (83 lines):

diff -r 323dac95e72c -r 828a8296270e SConstruct
--- a/SConstruct        Mon Nov 10 11:51:18 2008 -0800
+++ b/SConstruct        Mon Nov 10 11:51:18 2008 -0800
@@ -324,11 +324,14 @@
 
 # Parse EXTRAS option to build list of all directories where we're
 # look for sources etc.  This list is exported as base_dir_list.
-base_dir_list = [joinpath(ROOT, 'src')]
+base_dir = joinpath(ROOT, 'src')
 if env['EXTRAS']:
-    base_dir_list += env['EXTRAS'].split(':')
+    extras_dir_list = env['EXTRAS'].split(':')
+else:
+    extras_dir_list = []
 
-Export('base_dir_list')
+Export('base_dir')
+Export('extras_dir_list')
 
 # M5_PLY is used by isa_parser.py to find the PLY package.
 env.Append(ENV = { 'M5_PLY' : str(Dir('ext/ply')) })
@@ -594,8 +597,8 @@
 
 # Walk the tree and execute all SConsopts scripts that wil add to the
 # above options
-for base_dir in base_dir_list:
-    for root, dirs, files in os.walk(base_dir):
+for bdir in [ base_dir ] + extras_dir_list:
+    for root, dirs, files in os.walk(bdir):
         if 'SConsopts' in files:
             print "Reading", joinpath(root, 'SConsopts')
             SConscript(joinpath(root, 'SConsopts'))
diff -r 323dac95e72c -r 828a8296270e src/SConscript
--- a/src/SConscript    Mon Nov 10 11:51:18 2008 -0800
+++ b/src/SConscript    Mon Nov 10 11:51:18 2008 -0800
@@ -36,7 +36,7 @@
 import sys
 import zlib
 
-from os.path import basename, exists, isdir, isfile, join as joinpath
+from os.path import basename, dirname, exists, isdir, isfile, join as joinpath
 
 import SCons
 
@@ -214,6 +214,9 @@
 # files.
 env.Append(CPPPATH=Dir('.'))
 
+for extra_dir in extras_dir_list:
+    env.Append(CPPPATH=Dir(extra_dir))
+
 # Add a flag defining what THE_ISA should be for all compilation
 env.Append(CPPDEFINES=[('THE_ISA','%s_ISA' % env['TARGET_ISA'].upper())])
 
@@ -222,15 +225,21 @@
 # Walk the tree and execute all SConscripts in subdirectories
 #
 
-for base_dir in base_dir_list:
-    here = Dir('.').srcnode().abspath
-    for root, dirs, files in os.walk(base_dir, topdown=True):
-        if root == here:
-            # we don't want to recurse back into this SConscript
-            continue
+here = Dir('.').srcnode().abspath
+for root, dirs, files in os.walk(base_dir, topdown=True):
+    if root == here:
+        # we don't want to recurse back into this SConscript
+        continue
 
+    if 'SConscript' in files:
+        build_dir = joinpath(env['BUILDDIR'], root[len(base_dir) + 1:])
+        SConscript(joinpath(root, 'SConscript'), build_dir=build_dir)
+
+for extra_dir in extras_dir_list:
+    prefix_len = len(dirname(extra_dir)) + 1
+    for root, dirs, files in os.walk(extra_dir, topdown=True):
         if 'SConscript' in files:
-            build_dir = joinpath(env['BUILDDIR'], root[len(base_dir) + 1:])
+            build_dir = joinpath(env['BUILDDIR'], root[prefix_len:])
             SConscript(joinpath(root, 'SConscript'), build_dir=build_dir)
 
 for opt in env.ExportOptions:
_______________________________________________
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to