summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Script/SConscript.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/SCons/Script/SConscript.py')
-rw-r--r--src/engine/SCons/Script/SConscript.py17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/engine/SCons/Script/SConscript.py b/src/engine/SCons/Script/SConscript.py
index a1856da..5278d40 100644
--- a/src/engine/SCons/Script/SConscript.py
+++ b/src/engine/SCons/Script/SConscript.py
@@ -65,6 +65,9 @@ import UserList
#CommandLineTargets = []
#DefaultTargets = []
+class SConscriptReturn(Exception):
+ pass
+
launch_dir = os.path.abspath(os.curdir)
GlobalDict = None
@@ -125,6 +128,8 @@ class Frame:
# make sure the sconscript attr is a Node.
if isinstance(sconscript, SCons.Node.Node):
self.sconscript = sconscript
+ elif sconscript == '-':
+ self.sconscript = None
else:
self.sconscript = fs.File(str(sconscript))
@@ -133,7 +138,7 @@ call_stack = []
# For documentation on the methods in this file, see the scons man-page
-def Return(*vars):
+def Return(*vars, **kw):
retval = []
try:
for var in vars:
@@ -147,6 +152,11 @@ def Return(*vars):
else:
call_stack[-1].retval = tuple(retval)
+ stop = kw.get('stop', True)
+
+ if stop:
+ raise SConscriptReturn
+
stack_bottom = '% Stack boTTom %' # hard to define a variable w/this name :)
@@ -242,7 +252,10 @@ def _SConscript(fs, *files, **kw):
except KeyError:
pass
try:
- exec _file_ in call_stack[-1].globals
+ try:
+ exec _file_ in call_stack[-1].globals
+ except SConscriptReturn:
+ pass
finally:
if old_file is not None:
call_stack[-1].globals.update({__file__:old_file})