diff options
| author | Steven Knight <knight@baldmt.com> | 2001-12-21 18:05:38 (GMT) |
|---|---|---|
| committer | Steven Knight <knight@baldmt.com> | 2001-12-21 18:05:38 (GMT) |
| commit | ed3aa5e39e64a5b48b493f33d1438572678d8b65 (patch) | |
| tree | c6d413502e18ee12dd833f647437ac10503cc263 /src/engine/SCons/SConscript.py | |
| parent | 15674b6b3ee16f5979f5ceb971531d3b1f29f567 (diff) | |
| download | SCons-ed3aa5e39e64a5b48b493f33d1438572678d8b65.zip SCons-ed3aa5e39e64a5b48b493f33d1438572678d8b65.tar.gz SCons-ed3aa5e39e64a5b48b493f33d1438572678d8b65.tar.bz2 | |
Create the Script directory
Diffstat (limited to 'src/engine/SCons/SConscript.py')
| -rw-r--r-- | src/engine/SCons/SConscript.py | 177 |
1 files changed, 0 insertions, 177 deletions
diff --git a/src/engine/SCons/SConscript.py b/src/engine/SCons/SConscript.py deleted file mode 100644 index 1479c7a..0000000 --- a/src/engine/SCons/SConscript.py +++ /dev/null @@ -1,177 +0,0 @@ -"""engine.SCons.SConscript - -This module defines the Python API provided to SConscript and SConstruct -files. - -""" - -# -# Copyright (c) 2001 Steven Knight -# -# Permission is hereby granted, free of charge, to any person obtaining -# a copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: -# -# The above copyright notice and this permission notice shall be included -# in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY -# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE -# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -# - -__revision__ = "src/engine/SCons/SConscript.py __REVISION__ __DATE__ __DEVELOPER__" - -import SCons.Errors -import SCons.Builder -import SCons.Defaults -import SCons.Node -import SCons.Node.FS -import SCons.Environment -import string -import sys - -default_targets = [] -help_option = None - -# global exports set by Export(): -global_exports = {} - -class Frame: - """A frame on the SConstruct/SConscript call stack""" - def __init__(self, exports): - self.globals = BuildDefaultGlobals() - self.retval = None - self.prev_dir = SCons.Node.FS.default_fs.getcwd() - self.exports = {} # exports from the calling SConscript - - try: - if type(exports) == type([]): - for export in exports: - self.exports[export] = stack[-1].globals[export] - else: - for export in string.split(exports): - self.exports[export] = stack[-1].globals[export] - except KeyError, x: - raise SCons.Errors.UserError, "Export of non-existant variable '%s'"%x - - -# the SConstruct/SConscript call stack: -stack = [] - -# For documentation on the methods in this file, see the scons man-page - -def Return(*vars): - retval = [] - try: - for var in vars: - for v in string.split(var): - retval.append(stack[-1].globals[v]) - except KeyError, x: - raise SCons.Errors.UserError, "Return of non-existant variable '%s'"%x - - if len(retval) == 1: - stack[-1].retval = retval[0] - else: - stack[-1].retval = tuple(retval) - -def SConscript(script, exports=[]): - retval = () - - # push: - stack.append(Frame(exports)) - - # call: - if script == "-": - exec sys.stdin in stack[-1].globals - else: - f = SCons.Node.FS.default_fs.File(script) - if f.exists(): - file = open(str(f), "r") - SCons.Node.FS.default_fs.chdir(f.dir) - exec file in stack[-1].globals - else: - sys.stderr.write("Ignoring missing SConscript '%s'\n" % f.path) - - - # pop: - frame = stack.pop() - SCons.Node.FS.default_fs.chdir(frame.prev_dir) - - return frame.retval - -def Default(*targets): - for t in targets: - if isinstance(t, SCons.Node.Node): - default_targets.append(t) - else: - for s in string.split(t): - default_targets.append(s) - -def Help(text): - global help_option - if help_option == 'h': - print text - print "Use scons -H for help about command-line options." - sys.exit(0) - -def BuildDir(build_dir, src_dir): - SCons.Node.FS.default_fs.BuildDir(build_dir, src_dir) - -def GetBuildPath(files): - nodes = SCons.Util.scons_str2nodes(files, - SCons.Node.FS.default_fs.Entry) - ret = map(str, nodes) - if len(ret) == 1: - return ret[0] - return ret - -def Export(*vars): - try: - for var in vars: - for v in string.split(var): - global_exports[v] = stack[-1].globals[v] - except KeyError, x: - raise SCons.Errors.UserError, "Export of non-existant variable '%s'"%x - -def Import(*vars): - try: - for var in vars: - for v in string.split(var): - if stack[-1].exports.has_key(v): - stack[-1].globals[v] = stack[-1].exports[v] - else: - stack[-1].globals[v] = global_exports[v] - except KeyError,x: - raise SCons.Errors.UserError, "Import of non-existant variable '%s'"%x - -def BuildDefaultGlobals(): - """ - Create a dictionary containing all the default globals for - SConscruct and SConscript files. - """ - - globals = {} - globals['Builder'] = SCons.Builder.Builder - globals['Environment'] = SCons.Environment.Environment - globals['Object'] = SCons.Defaults.Object - globals['Program'] = SCons.Defaults.Program - globals['Library'] = SCons.Defaults.Library - globals['CScan'] = SCons.Defaults.CScan - globals['SConscript'] = SConscript - globals['Default'] = Default - globals['Help'] = Help - globals['BuildDir'] = BuildDir - globals['GetBuildPath'] = GetBuildPath - globals['Export'] = Export - globals['Import'] = Import - globals['Return'] = Return - return globals |
