# Add a flag defining what THE_ISA should be for all compilation
 env.Append(CPPDEFINES=[('THE_ISA','%s_ISA' % env['TARGET_ISA'].upper())])
 
+# Workaround for bug in SCons version > 0.97d20071212
+# Scons bug id: 2006 M5 Bug id: 308 
+for root, dirs, files in os.walk(base_dir, topdown=True):
+    Dir(root[len(base_dir) + 1:])
+
 ########################################################################
 #
 # Walk the tree and execute all SConscripts in subdirectories
 
 Import('*')
 
 if env['TARGET_ISA'] == 'mips':
-# Workaround for bug in SCons version > 0.97d20071212
-# Scons bug id: 2006 M5 Bug id: 308 
-    Dir('isa/formats')
     Source('faults.cc')
     Source('regfile/int_regfile.cc')
     Source('regfile/float_regfile.cc')
 
 Import('*')
 
 if env['TARGET_ISA'] == 'sparc':
-# Workaround for bug in SCons version > 0.97d20071212
-# Scons bug id: 2006 M5 Bug id: 308 
-    Dir('isa/formats')
-    Dir('isa/formats/mem')
     Source('asi.cc')
     Source('faults.cc')
     Source('floatregfile.cc')
 
         # Only non-header files need to be compiled.
         if not f.path.endswith('.hh'):
             Source(f)
-
-    # Workaround for bug in SCons version > 0.97d20071212
-    # Scons bug id: 2006 M5 Bug id: 308
-    from os.path import dirname, join as joinpath
-
-    Dir('isa')
-    Dir('isa/microops')
-    Dir('isa/decoder')
-    Dir('isa/formats')
-    Dir('isa/insts')
-    isa_dirs = set(map(lambda x:dirname(x), python_files))
-    for d in isa_dirs:
-        Dir(joinpath('isa/insts', d))
-     
 
             print i,
         print ", please set USE_CHECKER=False or use one of those CPU models"
         Exit(1)
-# Workaround for bug in SCons version > 0.97d20071212
-# Scons bug id: 2006 M5 Bug id: 308
-else:
-    Dir('checker')
 
 TraceFlag('Activity')
 TraceFlag('Commit')
 
     Source('linux/linux_syscalls.cc')
     Source('linux/printk.cc')
     
-    # Workaround for bug in SCons version > 0.97d20071212
-    # Scons bug id: 2006 M5 Bug id: 308
-    Dir('tru64')
-
     if env['TARGET_ISA'] == 'alpha':
         Source('tru64/dump_mbuf.cc')
         Source('tru64/printf.cc')
         Source('tru64/tru64_events.cc')
         Source('tru64/tru64_syscalls.cc')
         TraceFlag('BADADDR')
-
-# Workaround for bug in SCons version > 0.97d20071212
-# Scons bug id: 2006 M5 Bug id: 308
-else:
-    Dir('linux')
-    if env['TARGET_ISA'] == 'alpha':
-        Dir('tru64')
-    elif env['TARGET_ISA'] == 'sparc':
-        Dir('solaris')
 
 SimObject('PhysicalMemory.py')
 SimObject('MemObject.py')
 
-# Workaround for bug in SCons version > 0.97d20071212
-# Scons bug id: 2006 M5 Bug id: 308
-Dir('config')
-
 Source('bridge.cc')
 Source('bus.cc')
 Source('dram.cc')