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.
diff --git a/SConstruct b/SConstruct
index ce34fa5..d33ed90 100644
--- a/SConstruct
+++ b/SConstruct
@@ -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'))