diff options
-rw-r--r-- | SConstruct | 13 | ||||
-rw-r--r-- | src/SConscript | 10 |
2 files changed, 21 insertions, 2 deletions
diff --git a/SConstruct b/SConstruct index ec60964e4..1f3dfb5bb 100644 --- a/SConstruct +++ b/SConstruct @@ -435,6 +435,13 @@ all_isa_list.sort() all_cpu_list.sort() default_cpus.sort() +def ExtraPathValidator(key, val, env): + paths = val.split(':') + for path in paths: + path = os.path.expanduser(path) + if not isdir(path): + raise AttributeError, "Invalid path: '%s'" % path + sticky_opts.AddOptions( EnumOption('TARGET_ISA', 'Target ISA', 'alpha', all_isa_list), BoolOption('FULL_SYSTEM', 'Full-system support', False), @@ -461,7 +468,9 @@ sticky_opts.AddOptions( ('BATCH_CMD', 'Batch pool submission command name', 'qdo'), ('PYTHONHOME', 'Override the default PYTHONHOME for this system (use with caution)', - '%s:%s' % (sys.prefix, sys.exec_prefix)) + '%s:%s' % (sys.prefix, sys.exec_prefix)), + ('EXTRAS', 'Add Extra directories to the compilation', '', + ExtraPathValidator) ) nonsticky_opts.AddOptions( @@ -613,6 +622,8 @@ base_env = env for build_path in build_paths: print "Building in", build_path + env['BUILDDIR'] = build_path + # build_dir is the tail component of build path, and is used to # determine the build parameters (e.g., 'ALPHA_SE') (build_root, build_dir) = os.path.split(build_path) diff --git a/src/SConscript b/src/SConscript index 34c14dc51..1cd1a1627 100644 --- a/src/SConscript +++ b/src/SConscript @@ -151,7 +151,6 @@ env.Append(CPPDEFINES=[('THE_ISA','%s_ISA' % env['TARGET_ISA'].upper())]) # # Walk the tree and execute all SConscripts # -scripts = [] srcdir = env['SRCDIR'] for root, dirs, files in os.walk(srcdir, topdown=True): if root == srcdir: @@ -164,6 +163,15 @@ for root, dirs, files in os.walk(srcdir, topdown=True): base = root[len(srcdir) + 1:] SConscript(joinpath(base, 'SConscript')) +for extra in env['EXTRAS'].split(':'): + extra = os.path.expanduser(extra) + env.Append(CPPPATH=[Dir(extra)]) + for root, dirs, files in os.walk(extra, topdown=True): + if 'SConscript' in files: + subdir = root[len(os.path.dirname(extra))+1:] + build_dir = joinpath(env['BUILDDIR'], subdir) + SConscript(joinpath(root, 'SConscript'), build_dir=build_dir) + for opt in env.ExportOptions: env.ConfigFile(opt) |