summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Script/SConscript.py
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2003-02-10 07:33:07 (GMT)
committerSteven Knight <knight@baldmt.com>2003-02-10 07:33:07 (GMT)
commit6cc65ff3e32487eaa455776111d26a5bf07fb862 (patch)
tree9f038e6874fc1823ac8a97b21f39820e700d9d10 /src/engine/SCons/Script/SConscript.py
parent54856ad6003f3e8aa5c3bf59ed1d92ab1598137a (diff)
downloadSCons-6cc65ff3e32487eaa455776111d26a5bf07fb862.zip
SCons-6cc65ff3e32487eaa455776111d26a5bf07fb862.tar.gz
SCons-6cc65ff3e32487eaa455776111d26a5bf07fb862.tar.bz2
Support more intuitive build directory specifications as arguments to SConscript().
Diffstat (limited to 'src/engine/SCons/Script/SConscript.py')
-rw-r--r--src/engine/SCons/Script/SConscript.py22
1 files changed, 18 insertions, 4 deletions
diff --git a/src/engine/SCons/Script/SConscript.py b/src/engine/SCons/Script/SConscript.py
index a8aa732..c94ff2c 100644
--- a/src/engine/SCons/Script/SConscript.py
+++ b/src/engine/SCons/Script/SConscript.py
@@ -112,9 +112,9 @@ def Return(*vars):
stack[-1].retval = tuple(retval)
# This function is responsible for converting the parameters passed to
-# SConscript() calls into a list of files and export variables. If
-# the parameters are invalid, throws SCons.Errors.UserError. Returns a
-# tuple (l, e) where l is a list of filenames and e is a list of
+# SConscript() calls into a list of files and export variables. If the
+# parameters are invalid, throws SCons.Errors.UserError. Returns a tuple
+# (l, e) where l is a list of SConscript filenames and e is a list of
# exports.
def GetSConscriptFilenames(ls, kw):
@@ -147,12 +147,26 @@ def GetSConscriptFilenames(ls, kw):
exports = SCons.Util.argmunge(ls[1])
if kw.get('exports'):
- exports.extend(SCons.Util.argmunge(kw.get('exports')))
+ exports.extend(SCons.Util.argmunge(kw['exports']))
else:
raise SCons.Errors.UserError, \
"Invalid SConscript() usage - too many arguments"
+ build_dir = kw.get('build_dir')
+ if build_dir:
+ if len(files) != 1:
+ raise SCons.Errors.UserError, \
+ "Invalid SConscript() usage - can only specify one SConscript with a build_dir"
+ duplicate = kw.get('duplicate', 1)
+ src_dir = kw.get('src_dir')
+ if not src_dir:
+ src_dir, fname = os.path.split(str(files[0]))
+ else:
+ fname = os.path.split(files[0])[1]
+ BuildDir(build_dir, src_dir, duplicate)
+ files = [os.path.join(str(build_dir), fname)]
+
return (files, exports)
def SConscript(*ls, **kw):