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.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/engine/SCons/Script/SConscript.py b/src/engine/SCons/Script/SConscript.py
index 5552015..eb1a13e 100644
--- a/src/engine/SCons/Script/SConscript.py
+++ b/src/engine/SCons/Script/SConscript.py
@@ -38,6 +38,7 @@ import SCons.Node
import SCons.Node.FS
import SCons.Util
+import os
import string
import sys
@@ -48,6 +49,13 @@ arguments = {}
# global exports set by Export():
global_exports = {}
+# chdir flag
+sconscript_chdir = 0
+
+def SConscriptChdir(flag):
+ global sconscript_chdir
+ sconscript_chdir = flag
+
def _scons_add_args(alist):
global arguments
for arg in alist:
@@ -98,6 +106,7 @@ def SConscript(script, exports=[]):
# push:
stack.append(Frame(exports))
+ old_dir = None
try:
# call:
if script == "-":
@@ -108,6 +117,9 @@ def SConscript(script, exports=[]):
if script.exists():
file = open(str(script), "r")
SCons.Node.FS.default_fs.chdir(script.dir)
+ if sconscript_chdir:
+ old_dir = os.getcwd()
+ os.chdir(str(script.dir))
exec file in stack[-1].globals
else:
sys.stderr.write("Ignoring missing SConscript '%s'\n" % script.path)
@@ -115,6 +127,8 @@ def SConscript(script, exports=[]):
# pop:
frame = stack.pop()
SCons.Node.FS.default_fs.chdir(frame.prev_dir)
+ if old_dir:
+ os.chdir(old_dir)
return frame.retval
@@ -188,6 +202,7 @@ def BuildDefaultGlobals():
globals['Return'] = Return
globals['Scanner'] = SCons.Scanner.Base
globals['SConscript'] = SConscript
+ globals['SConscriptChdir'] = SConscriptChdir
globals['SetCommandHandler'] = SCons.Action.SetCommandHandler
globals['WhereIs'] = SCons.Util.WhereIs
return globals