Make EXTRAS work for relative directories.
Also print a little feedback when processing EXTRAS. --HG-- extra : convert_revision : 9cb324b0d5bc60a3c98af6495f16415b529e4af2
This commit is contained in:
parent
21a99af009
commit
785eb13190
2 changed files with 13 additions and 6 deletions
15
SConstruct
15
SConstruct
|
@ -68,6 +68,8 @@ import os
|
|||
|
||||
from os.path import isdir, join as joinpath
|
||||
|
||||
import SCons
|
||||
|
||||
# Check for recent-enough Python and SCons versions. If your system's
|
||||
# default installation of Python is not recent enough, you can use a
|
||||
# non-default installation of the Python interpreter by either (1)
|
||||
|
@ -472,14 +474,19 @@ all_isa_list.sort()
|
|||
all_cpu_list.sort()
|
||||
default_cpus.sort()
|
||||
|
||||
def ExtraPathValidator(key, val, env):
|
||||
def PathListMakeAbsolute(val):
|
||||
if not val:
|
||||
return val
|
||||
f = lambda p: os.path.abspath(os.path.expanduser(p))
|
||||
return ':'.join(map(f, val.split(':')))
|
||||
|
||||
def PathListAllExist(key, val, env):
|
||||
if not val:
|
||||
return
|
||||
paths = val.split(':')
|
||||
for path in paths:
|
||||
path = os.path.expanduser(path)
|
||||
if not isdir(path):
|
||||
raise AttributeError, "Invalid path: '%s'" % path
|
||||
raise SCons.Errors.UserError("Path does not exist: '%s'" % path)
|
||||
|
||||
sticky_opts.AddOptions(
|
||||
EnumOption('TARGET_ISA', 'Target ISA', 'alpha', all_isa_list),
|
||||
|
@ -509,7 +516,7 @@ sticky_opts.AddOptions(
|
|||
'Override the default PYTHONHOME for this system (use with caution)',
|
||||
'%s:%s' % (sys.prefix, sys.exec_prefix)),
|
||||
('EXTRAS', 'Add Extra directories to the compilation', '',
|
||||
ExtraPathValidator)
|
||||
PathListAllExist, PathListMakeAbsolute)
|
||||
)
|
||||
|
||||
nonsticky_opts.AddOptions(
|
||||
|
|
|
@ -198,12 +198,12 @@ for root, dirs, files in os.walk(srcdir, topdown=True):
|
|||
extra_string = env['EXTRAS']
|
||||
if extra_string and extra_string != '' and not extra_string.isspace():
|
||||
for extra in extra_string.split(':'):
|
||||
extra = os.path.expanduser(extra)
|
||||
extra = os.path.normpath(extra)
|
||||
print 'Adding', extra, 'to source directory list'
|
||||
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:]
|
||||
print ' Found SConscript in', subdir
|
||||
build_dir = joinpath(env['BUILDDIR'], subdir)
|
||||
SConscript(joinpath(root, 'SConscript'), build_dir=build_dir)
|
||||
|
||||
|
|
Loading…
Reference in a new issue