From d9a29f93cd4ff505e264974febd0566ae29880ca Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Remko=20Tron=C3=A7on?= <git@el-tramo.be>
Date: Sun, 11 Apr 2010 20:14:19 +0200
Subject: Update SCons to 1.3.0.d20100404.


diff --git a/3rdParty/SCons/scons-LICENSE b/3rdParty/SCons/scons-LICENSE
index 4ac2352..790d971 100644
--- a/3rdParty/SCons/scons-LICENSE
+++ b/3rdParty/SCons/scons-LICENSE
@@ -3,7 +3,7 @@
         This copyright and license do not apply to any other software
         with which this software may have been included.
 
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 
 Permission is hereby granted, free of charge, to any person obtaining
 a copy of this software and associated documentation files (the
diff --git a/3rdParty/SCons/scons-README b/3rdParty/SCons/scons-README
index 89bc634..3e2a129 100644
--- a/3rdParty/SCons/scons-README
+++ b/3rdParty/SCons/scons-README
@@ -1,4 +1,4 @@
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 
                  SCons - a software construction tool
 
diff --git a/3rdParty/SCons/scons-local/SCons/Action.py b/3rdParty/SCons/scons-local/SCons/Action.py
index 9535194..8b5e6dc 100644
--- a/3rdParty/SCons/scons-local/SCons/Action.py
+++ b/3rdParty/SCons/scons-local/SCons/Action.py
@@ -76,7 +76,7 @@ way for wrapping up the functions.
 
 """
 
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -97,7 +97,7 @@ way for wrapping up the functions.
 # 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/Action.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Action.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import cPickle
 import dis
@@ -430,7 +430,7 @@ class ActionBase:
         # This should never happen, as the Action() factory should wrap
         # the varlist, but just in case an action is created directly,
         # we duplicate this check here.
-        vl = self.varlist
+        vl = self.get_varlist(target, source, env)
         if is_String(vl): vl = (vl,)
         for v in vl:
             result.append(env.subst('${'+v+'}'))
@@ -454,6 +454,9 @@ class ActionBase:
         self.presub_env = None      # don't need this any more
         return lines
 
+    def get_varlist(self, target, source, env, executor=None):
+        return self.varlist
+
     def get_targets(self, env, executor):
         """
         Returns the type of targets ($TARGETS, $CHANGED_TARGETS) used
@@ -897,6 +900,9 @@ class CommandGeneratorAction(ActionBase):
     def get_implicit_deps(self, target, source, env, executor=None):
         return self._generate(target, source, env, 1, executor).get_implicit_deps(target, source, env)
 
+    def get_varlist(self, target, source, env, executor=None):
+        return self._generate(target, source, env, 1, executor).get_varlist(target, source, env, executor)
+
     def get_targets(self, env, executor):
         return self._generate(None, None, env, 1, executor).get_targets(env, executor)
 
@@ -958,6 +964,9 @@ class LazyAction(CommandGeneratorAction, CommandAction):
         c = self.get_parent_class(env)
         return c.get_presig(self, target, source, env)
 
+    def get_varlist(self, target, source, env, executor=None):
+        c = self.get_parent_class(env)
+        return c.get_varlist(self, target, source, env, executor)
 
 
 class FunctionAction(_ActionAction):
@@ -1139,6 +1148,13 @@ class ListAction(ActionBase):
             result.extend(act.get_implicit_deps(target, source, env))
         return result
 
+    def get_varlist(self, target, source, env, executor=None):
+        result = SCons.Util.OrderedDict()
+        for act in self.list:
+            for var in act.get_varlist(target, source, env, executor):
+                result[var] = True
+        return result.keys()
+
 class ActionCaller:
     """A class for delaying calling an Action function with specific
     (positional and keyword) arguments until the Action is actually
diff --git a/3rdParty/SCons/scons-local/SCons/Builder.py b/3rdParty/SCons/scons-local/SCons/Builder.py
index 18026c3..e0d76a8 100644
--- a/3rdParty/SCons/scons-local/SCons/Builder.py
+++ b/3rdParty/SCons/scons-local/SCons/Builder.py
@@ -76,7 +76,7 @@ There are the following methods for internal use within this module:
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -98,7 +98,7 @@ There are the following methods for internal use within this module:
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Builder.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Builder.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import UserDict
 import UserList
@@ -861,6 +861,16 @@ class CompositeBuilder(SCons.Util.Proxy):
         self.cmdgen.add_action(suffix, action)
         self.set_src_suffix(self.cmdgen.src_suffixes())
 
+def is_a_Builder(obj):
+    """"Returns True iff the specified obj is one of our Builder classes.
+
+    The test is complicated a bit by the fact that CompositeBuilder
+    is a proxy, not a subclass of BuilderBase.
+    """
+    return (isinstance(obj, BuilderBase)
+            or isinstance(obj, CompositeBuilder)
+            or callable(obj))
+
 # Local Variables:
 # tab-width:4
 # indent-tabs-mode:nil
diff --git a/3rdParty/SCons/scons-local/SCons/CacheDir.py b/3rdParty/SCons/scons-local/SCons/CacheDir.py
index eda431a..86394f3 100644
--- a/3rdParty/SCons/scons-local/SCons/CacheDir.py
+++ b/3rdParty/SCons/scons-local/SCons/CacheDir.py
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/CacheDir.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/CacheDir.py 4761 2010/04/04 14:04:44 bdeegan"
 
 __doc__ = """
 CacheDir support
diff --git a/3rdParty/SCons/scons-local/SCons/Conftest.py b/3rdParty/SCons/scons-local/SCons/Conftest.py
index 6327353..e995e77 100644
--- a/3rdParty/SCons/scons-local/SCons/Conftest.py
+++ b/3rdParty/SCons/scons-local/SCons/Conftest.py
@@ -64,13 +64,19 @@ Autoconf-like configuration support; low level implementation of tests.
 #                       Append "lib_name_list" to the value of LIBS.
 #                       "lib_namelist" is a list of strings.
 #                       Return the value of LIBS before changing it (any type
-#                       can be used, it is passed to SetLIBS() later.
+#                       can be used, it is passed to SetLIBS() later.)
+#
+# context.PrependLIBS(lib_name_list)
+#                       Prepend "lib_name_list" to the value of LIBS.
+#                       "lib_namelist" is a list of strings.
+#                       Return the value of LIBS before changing it (any type
+#                       can be used, it is passed to SetLIBS() later.)
 #
 # context.SetLIBS(value)
 #                       Set LIBS to "value".  The type of "value" is what
 #                       AppendLIBS() returned.
 #                       Return the value of LIBS before changing it (any type
-#                       can be used, it is passed to SetLIBS() later.
+#                       can be used, it is passed to SetLIBS() later.)
 #
 # context.headerfilename
 #                       Name of file to append configure results to, usually
@@ -572,7 +578,8 @@ int main()
     return st
 
 def CheckLib(context, libs, func_name = None, header = None,
-                 extra_libs = None, call = None, language = None, autoadd = 1):
+             extra_libs = None, call = None, language = None, autoadd = 1,
+             append = True):
     """
     Configure check for a C or C++ libraries "libs".  Searches through
     the list of libraries, until one is found where the test succeeds.
@@ -657,7 +664,10 @@ return 0;
             l = [ lib_name ]
             if extra_libs:
                 l.extend(extra_libs)
-            oldLIBS = context.AppendLIBS(l)
+            if append:
+                oldLIBS = context.AppendLIBS(l)
+            else:
+                oldLIBS = context.PrependLIBS(l)
             sym = "HAVE_LIB" + lib_name
         else:
             oldLIBS = -1
diff --git a/3rdParty/SCons/scons-local/SCons/Debug.py b/3rdParty/SCons/scons-local/SCons/Debug.py
index cc7041d..f7805eb 100644
--- a/3rdParty/SCons/scons-local/SCons/Debug.py
+++ b/3rdParty/SCons/scons-local/SCons/Debug.py
@@ -7,7 +7,7 @@ needed by most users.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -29,11 +29,12 @@ needed by most users.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Debug.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Debug.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import os
 import string
 import sys
+import time
 
 # Recipe 14.10 from the Python Cookbook.
 try:
@@ -196,14 +197,24 @@ if sys.platform == 'win32':
 else:
     TraceDefault = '/dev/tty'
 
-def Trace(msg, file=None, mode='w'):
+TimeStampDefault = None
+StartTime = time.time()
+PreviousTime = StartTime
+
+def Trace(msg, file=None, mode='w', tstamp=None):
     """Write a trace message to a file.  Whenever a file is specified,
     it becomes the default for the next call to Trace()."""
     global TraceDefault
+    global TimeStampDefault
+    global PreviousTime
     if file is None:
         file = TraceDefault
     else:
         TraceDefault = file
+    if tstamp is None:
+        tstamp = TimeStampDefault
+    else:
+        TimeStampDefault = tstamp
     try:
         fp = TraceFP[file]
     except KeyError:
@@ -212,6 +223,10 @@ def Trace(msg, file=None, mode='w'):
         except TypeError:
             # Assume we were passed an open file pointer.
             fp = file
+    if tstamp:
+        now = time.time()
+        fp.write('%8.4f %8.4f:  ' % (now - StartTime, now - PreviousTime))
+        PreviousTime = now
     fp.write(msg)
     fp.flush()
 
diff --git a/3rdParty/SCons/scons-local/SCons/Defaults.py b/3rdParty/SCons/scons-local/SCons/Defaults.py
index d52bf59..2ae69f7 100644
--- a/3rdParty/SCons/scons-local/SCons/Defaults.py
+++ b/3rdParty/SCons/scons-local/SCons/Defaults.py
@@ -10,7 +10,7 @@ from distutils.msvccompiler.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -32,7 +32,7 @@ from distutils.msvccompiler.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Defaults.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Defaults.py 4761 2010/04/04 14:04:44 bdeegan"
 
 
 
@@ -237,7 +237,7 @@ Mkdir = ActionFactory(mkdir_func,
 def move_func(dest, src):
     SCons.Node.FS.invalidate_node_memos(dest)
     SCons.Node.FS.invalidate_node_memos(src)
-    os.rename(src, dest)
+    shutil.move(src, dest)
 
 Move = ActionFactory(move_func,
                      lambda dest, src: 'Move("%s", "%s")' % (dest, src),
@@ -273,7 +273,7 @@ def _concat(prefix, list, suffix, env, f=lambda x: x, target=None, source=None):
         return list
 
     l = f(SCons.PathList.PathList(list).subst_path(env, target, source))
-    if not l is None:
+    if l is not None:
         list = l
 
     return _concat_ixes(prefix, list, suffix, env)
@@ -367,9 +367,9 @@ def _stripixes(prefix, list, suffix, stripprefixes, stripsuffixes, env, c=None):
 
     return c(prefix, stripped, suffix, env)
 
-def _defines(prefix, defs, suffix, env, c=_concat_ixes):
-    """A wrapper around _concat_ixes that turns a list or string
-    into a list of C preprocessor command-line definitions.
+def processDefines(defs):
+    """process defines, resolving strings, lists, dictionaries, into a list of
+    strings
     """
     if SCons.Util.is_List(defs):
         l = []
@@ -396,7 +396,14 @@ def _defines(prefix, defs, suffix, env, c=_concat_ixes):
                 l.append(str(k) + '=' + str(v))
     else:
         l = [str(defs)]
-    return c(prefix, env.subst_path(l), suffix, env)
+    return l
+
+def _defines(prefix, defs, suffix, env, c=_concat_ixes):
+    """A wrapper around _concat_ixes that turns a list or string
+    into a list of C preprocessor command-line definitions.
+    """
+
+    return c(prefix, env.subst_path(processDefines(defs)), suffix, env)
     
 class NullCmdGenerator:
     """This is a callable class that can be used in place of other
@@ -456,7 +463,7 @@ ConstructionEnvironment = {
     'DSUFFIXES'     : SCons.Tool.DSuffixes,
     'ENV'           : {},
     'IDLSUFFIXES'   : SCons.Tool.IDLSuffixes,
-    'LATEXSUFFIXES' : SCons.Tool.LaTeXSuffixes,
+#    'LATEXSUFFIXES' : SCons.Tool.LaTeXSuffixes, # moved to the TeX tools generate functions
     '_concat'       : _concat,
     '_defines'      : _defines,
     '_stripixes'    : _stripixes,
diff --git a/3rdParty/SCons/scons-local/SCons/Environment.py b/3rdParty/SCons/scons-local/SCons/Environment.py
index 9c04d73..8bf089e 100644
--- a/3rdParty/SCons/scons-local/SCons/Environment.py
+++ b/3rdParty/SCons/scons-local/SCons/Environment.py
@@ -10,7 +10,7 @@ Environment
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -32,7 +32,7 @@ Environment
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Environment.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Environment.py 4761 2010/04/04 14:04:44 bdeegan"
 
 
 import copy
@@ -54,6 +54,7 @@ import SCons.Node.Alias
 import SCons.Node.FS
 import SCons.Node.Python
 import SCons.Platform
+import SCons.SConf
 import SCons.SConsign
 import SCons.Subst
 import SCons.Tool
@@ -119,7 +120,11 @@ reserved_construction_var_names = [
     'UNCHANGED_TARGETS',
 ]
 
-future_reserved_construction_var_names = []
+future_reserved_construction_var_names = [
+    #'HOST_OS',
+    #'HOST_ARCH',
+    #'HOST_CPU',
+    ]
 
 def copy_non_reserved_keywords(dict):
     result = semi_deepcopy(dict)
@@ -147,6 +152,9 @@ def _set_BUILDERS(env, key, value):
     except KeyError:
         bd = BuilderDict(kwbd, env)
         env._dict[key] = bd
+    for k, v in value.items():
+        if not SCons.Builder.is_a_Builder(v):
+            raise SCons.Errors.UserError('%s is not a Builder.' % repr(v))
     bd.update(value)
 
 def _del_SCANNERS(env, key):
@@ -245,9 +253,9 @@ class BuilderWrapper(MethodWrapper):
         if source is _null:
             source = target
             target = None
-        if not target is None and not SCons.Util.is_List(target):
+        if target is not None and not SCons.Util.is_List(target):
             target = [target]
-        if not source is None and not SCons.Util.is_List(source):
+        if source is not None and not SCons.Util.is_List(source):
             source = [source]
         return apply(MethodWrapper.__call__, (self, target, source) + args, kw)
 
@@ -457,9 +465,9 @@ class SubstitutionEnvironment:
                 n = None
                 for l in lookup_list:
                     n = l(v)
-                    if not n is None:
+                    if n is not None:
                         break
-                if not n is None:
+                if n is not None:
                     if SCons.Util.is_String(n):
                         # n = self.subst(n, raw=1, **kw)
                         kw['raw'] = 1
@@ -896,9 +904,6 @@ class Base(SubstitutionEnvironment):
     Environment.
     """
 
-    if SCons.Memoize.use_memoizer:
-        __metaclass__ = SCons.Memoize.Memoized_Metaclass
-
     memoizer_counters = []
 
     #######################################################################
@@ -962,6 +967,14 @@ class Base(SubstitutionEnvironment):
             platform = SCons.Platform.Platform(platform)
         self._dict['PLATFORM'] = str(platform)
         platform(self)
+        
+        self._dict['HOST_OS']      = self._dict.get('HOST_OS',None)
+        self._dict['HOST_ARCH']    = self._dict.get('HOST_ARCH',None)
+        
+        # Now set defaults for TARGET_{OS|ARCH}
+        self._dict['TARGET_OS']      = self._dict.get('HOST_OS',None)
+        self._dict['TARGET_ARCH']    = self._dict.get('HOST_ARCH',None)
+        
 
         # Apply the passed-in and customizable variables to the
         # environment before calling the tools, because they may use
@@ -1037,7 +1050,7 @@ class Base(SubstitutionEnvironment):
         """
         name = default
         try:
-            is_node = issubclass(factory, SCons.Node.Node)
+            is_node = issubclass(factory, SCons.Node.FS.Base)
         except TypeError:
             # The specified factory isn't a Node itself--it's
             # most likely None, or possibly a callable.
@@ -1825,7 +1838,7 @@ class Base(SubstitutionEnvironment):
 
     def CacheDir(self, path):
         import SCons.CacheDir
-        if not path is None:
+        if path is not None:
             path = self.subst(path)
         self._CacheDir_path = path
 
@@ -2016,7 +2029,7 @@ class Base(SubstitutionEnvironment):
         return apply(SCons.Scanner.Base, nargs, nkw)
 
     def SConsignFile(self, name=".sconsign", dbm_module=None):
-        if not name is None:
+        if name is not None:
             name = self.subst(name)
             if not os.path.isabs(name):
                 name = os.path.join(str(self.fs.SConstruct_dir), name)
@@ -2176,9 +2189,6 @@ class OverrideEnvironment(Base):
     values from the overrides dictionary.
     """
 
-    if SCons.Memoize.use_memoizer:
-        __metaclass__ = SCons.Memoize.Memoized_Metaclass
-
     def __init__(self, subject, overrides={}):
         if __debug__: logInstanceCreation(self, 'Environment.OverrideEnvironment')
         self.__dict__['__subject'] = subject
diff --git a/3rdParty/SCons/scons-local/SCons/Errors.py b/3rdParty/SCons/scons-local/SCons/Errors.py
index 1fd5663..05b8df5 100644
--- a/3rdParty/SCons/scons-local/SCons/Errors.py
+++ b/3rdParty/SCons/scons-local/SCons/Errors.py
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -28,7 +28,7 @@ and user errors in SCons.
 
 """
 
-__revision__ = "src/engine/SCons/Errors.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Errors.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Util
 
diff --git a/3rdParty/SCons/scons-local/SCons/Executor.py b/3rdParty/SCons/scons-local/SCons/Executor.py
index 0dfeaf1..9dce698 100644
--- a/3rdParty/SCons/scons-local/SCons/Executor.py
+++ b/3rdParty/SCons/scons-local/SCons/Executor.py
@@ -6,7 +6,7 @@ Nodes.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -28,7 +28,7 @@ Nodes.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Executor.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Executor.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import string
 import UserList
diff --git a/3rdParty/SCons/scons-local/SCons/Job.py b/3rdParty/SCons/scons-local/SCons/Job.py
index 4efddd4..8173db2 100644
--- a/3rdParty/SCons/scons-local/SCons/Job.py
+++ b/3rdParty/SCons/scons-local/SCons/Job.py
@@ -7,7 +7,7 @@ stop, and wait on jobs.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -29,7 +29,7 @@ stop, and wait on jobs.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Job.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Job.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import os
 import signal
diff --git a/3rdParty/SCons/scons-local/SCons/Memoize.py b/3rdParty/SCons/scons-local/SCons/Memoize.py
index dbb0cf1..b21c733 100644
--- a/3rdParty/SCons/scons-local/SCons/Memoize.py
+++ b/3rdParty/SCons/scons-local/SCons/Memoize.py
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Memoize.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Memoize.py 4761 2010/04/04 14:04:44 bdeegan"
 
 __doc__ = """Memoizer
 
diff --git a/3rdParty/SCons/scons-local/SCons/Node/Alias.py b/3rdParty/SCons/scons-local/SCons/Node/Alias.py
index a52a3fb..84be60b 100644
--- a/3rdParty/SCons/scons-local/SCons/Node/Alias.py
+++ b/3rdParty/SCons/scons-local/SCons/Node/Alias.py
@@ -8,7 +8,7 @@ This creates a hash of global Aliases (dummy targets).
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ This creates a hash of global Aliases (dummy targets).
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Node/Alias.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Node/Alias.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import string
 import UserDict
diff --git a/3rdParty/SCons/scons-local/SCons/Node/FS.py b/3rdParty/SCons/scons-local/SCons/Node/FS.py
index abcd8da..6a435b4 100644
--- a/3rdParty/SCons/scons-local/SCons/Node/FS.py
+++ b/3rdParty/SCons/scons-local/SCons/Node/FS.py
@@ -11,7 +11,7 @@ that can be used by scripts or modules looking for the canonical default.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -33,7 +33,7 @@ that can be used by scripts or modules looking for the canonical default.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Node/FS.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Node/FS.py 4761 2010/04/04 14:04:44 bdeegan"
 
 from itertools import izip
 import cStringIO
@@ -58,12 +58,46 @@ else:
     except AttributeError:
         codecs.BOM_UTF8 = '\xef\xbb\xbf'
     try:
-        codecs.BOM_UTF16
+        codecs.BOM_UTF16_LE
+        codecs.BOM_UTF16_BE
     except AttributeError:
-        if sys.byteorder == 'little':
-            codecs.BOM_UTF16 = '\xff\xfe'
+        codecs.BOM_UTF16_LE = '\xff\xfe'
+        codecs.BOM_UTF16_BE = '\xfe\xff'
+
+    # Provide a wrapper function to handle decoding differences in
+    # different versions of Python.  Normally, we'd try to do this in the
+    # compat layer (and maybe it still makes sense to move there?) but
+    # that doesn't provide a way to supply the string class used in
+    # pre-2.3 Python versions with a .decode() method that all strings
+    # naturally have.  Plus, the 2.[01] encodings behave differently
+    # enough that we have to settle for a lowest-common-denominator
+    # wrapper approach.
+    #
+    # Note that the 2.[012] implementations below may be inefficient
+    # because they perform an explicit look up of the encoding for every
+    # decode, but they're old enough (and we want to stop supporting
+    # them soon enough) that it's not worth complicating the interface.
+    # Think of it as additional incentive for people to upgrade...
+    try:
+        ''.decode
+    except AttributeError:
+        # 2.0 through 2.2:  strings have no .decode() method
+        try:
+            codecs.lookup('ascii').decode
+        except AttributeError:
+            # 2.0 and 2.1:  encodings are a tuple of functions, and the
+            # decode() function returns a (result, length) tuple.
+            def my_decode(contents, encoding):
+                return codecs.lookup(encoding)[1](contents)[0]
         else:
-            codecs.BOM_UTF16 = '\xfe\xff'
+            # 2.2:  encodings are an object with methods, and the
+            # .decode() method returns just the decoded bytes.
+            def my_decode(contents, encoding):
+                return codecs.lookup(encoding).decode(contents)
+    else:
+        # 2.3 or later:  use the .decode() string method
+        def my_decode(contents, encoding):
+            return contents.decode(encoding)
 
 import SCons.Action
 from SCons.Debug import logInstanceCreation
@@ -554,22 +588,22 @@ class Base(SCons.Node.Node):
 
         # Filenames and paths are probably reused and are intern'ed to
         # save some memory.
-        self.name = intern(name)
-        self.suffix = intern(SCons.Util.splitext(name)[1])
+        self.name = SCons.Util.silent_intern(name)
+        self.suffix = SCons.Util.silent_intern(SCons.Util.splitext(name)[1])
         self.fs = fs
 
         assert directory, "A directory must be provided"
 
-        self.abspath = intern(directory.entry_abspath(name))
-        self.labspath = intern(directory.entry_labspath(name))
+        self.abspath = SCons.Util.silent_intern(directory.entry_abspath(name))
+        self.labspath = SCons.Util.silent_intern(directory.entry_labspath(name))
         if directory.path == '.':
-            self.path = intern(name)
+            self.path = SCons.Util.silent_intern(name)
         else:
-            self.path = intern(directory.entry_path(name))
+            self.path = SCons.Util.silent_intern(directory.entry_path(name))
         if directory.tpath == '.':
-            self.tpath = intern(name)
+            self.tpath = SCons.Util.silent_intern(name)
         else:
-            self.tpath = intern(directory.entry_tpath(name))
+            self.tpath = SCons.Util.silent_intern(directory.entry_tpath(name))
         self.path_elements = directory.path_elements + [self]
 
         self.dir = directory
@@ -1749,7 +1783,7 @@ class Dir(Base):
                 d[name] = result
             return result
         else:
-            return d.has_key(name)
+            return d.has_key(_my_normcase(name))
 
     memoizer_counters.append(SCons.Memoize.CountValue('srcdir_list'))
 
@@ -1919,7 +1953,9 @@ class Dir(Base):
         """
         dirname, basename = os.path.split(pathname)
         if not dirname:
-            return self._glob1(basename, ondisk, source, strings)
+            result = self._glob1(basename, ondisk, source, strings)
+            result.sort(lambda a, b: cmp(str(a), str(b)))
+            return result
         if has_glob_magic(dirname):
             list = self.glob(dirname, ondisk, source, strings=False)
         else:
@@ -2074,7 +2110,8 @@ class RootDir(Dir):
             result = self._lookupDict[k]
         except KeyError:
             if not create:
-                raise SCons.Errors.UserError
+                msg = "No such file or directory: '%s' in '%s' (and create is False)" % (p, str(self))
+                raise SCons.Errors.UserError, msg
             # There is no Node for this path name, and we're allowed
             # to create it.
             dir_name, file_name = os.path.split(p)
@@ -2309,10 +2346,27 @@ class File(Base):
         # it's a valid python string.
         def get_text_contents(self):
             contents = self.get_contents()
+            # The behavior of various decode() methods and functions
+            # w.r.t. the initial BOM bytes is different for different
+            # encodings and/or Python versions.  ('utf-8' does not strip
+            # them, but has a 'utf-8-sig' which does; 'utf-16' seems to
+            # strip them; etc.)  Just side step all the complication by
+            # explicitly stripping the BOM before we decode().
             if contents.startswith(codecs.BOM_UTF8):
-                contents = contents.decode('utf-8')
-            elif contents.startswith(codecs.BOM_UTF16):
-                contents = contents.decode('utf-16')
+                contents = contents[len(codecs.BOM_UTF8):]
+                # TODO(2.2):  Remove when 2.3 becomes floor.
+                #contents = contents.decode('utf-8')
+                contents = my_decode(contents, 'utf-8')
+            elif contents.startswith(codecs.BOM_UTF16_LE):
+                contents = contents[len(codecs.BOM_UTF16_LE):]
+                # TODO(2.2):  Remove when 2.3 becomes floor.
+                #contents = contents.decode('utf-16-le')
+                contents = my_decode(contents, 'utf-16-le')
+            elif contents.startswith(codecs.BOM_UTF16_BE):
+                contents = contents[len(codecs.BOM_UTF16_BE):]
+                # TODO(2.2):  Remove when 2.3 becomes floor.
+                #contents = contents.decode('utf-16-be')
+                contents = my_decode(contents, 'utf-16-be')
             return contents
 
     def get_content_hash(self):
diff --git a/3rdParty/SCons/scons-local/SCons/Node/Python.py b/3rdParty/SCons/scons-local/SCons/Node/Python.py
index 9a22f42..c7188e2 100644
--- a/3rdParty/SCons/scons-local/SCons/Node/Python.py
+++ b/3rdParty/SCons/scons-local/SCons/Node/Python.py
@@ -5,7 +5,7 @@ Python nodes.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ Python nodes.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Node/Python.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Node/Python.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Node
 
@@ -53,7 +53,7 @@ class Value(SCons.Node.Node):
     def __init__(self, value, built_value=None):
         SCons.Node.Node.__init__(self)
         self.value = value
-        if not built_value is None:
+        if built_value is not None:
             self.built_value = built_value
 
     def str_for_display(self):
@@ -88,17 +88,20 @@ class Value(SCons.Node.Node):
             self.built_value = self.value
         return self.built_value
 
-    def get_contents(self):
+    def get_text_contents(self):
         """By the assumption that the node.built_value is a
         deterministic product of the sources, the contents of a Value
         are the concatenation of all the contents of its sources.  As
         the value need not be built when get_contents() is called, we
         cannot use the actual node.built_value."""
+        ###TODO: something reasonable about universal newlines
         contents = str(self.value)
         for kid in self.children(None):
             contents = contents + kid.get_contents()
         return contents
 
+    get_contents = get_text_contents    ###TODO should return 'bytes' value
+
     def changed_since_last_build(self, target, prev_ni):
         cur_csig = self.get_csig()
         try:
diff --git a/3rdParty/SCons/scons-local/SCons/Node/__init__.py b/3rdParty/SCons/scons-local/SCons/Node/__init__.py
index abb746e..f2ed2f0 100644
--- a/3rdParty/SCons/scons-local/SCons/Node/__init__.py
+++ b/3rdParty/SCons/scons-local/SCons/Node/__init__.py
@@ -20,7 +20,7 @@ be able to depend on any other type of "thing."
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -42,7 +42,7 @@ be able to depend on any other type of "thing."
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Node/__init__.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Node/__init__.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import copy
 from itertools import chain, izip
@@ -352,7 +352,7 @@ class Node:
             if d.missing():
                 msg = "Explicit dependency `%s' not found, needed by target `%s'."
                 raise SCons.Errors.StopError, msg % (d, self)
-        if not self.implicit is None:
+        if self.implicit is not None:
             for i in self.implicit:
                 if i.missing():
                     msg = "Implicit dependency `%s' not found, needed by target `%s'."
@@ -474,7 +474,7 @@ class Node:
             # There was no explicit builder for this Node, so initialize
             # the self.builder attribute to None now.
             b = self.builder = None
-        return not b is None
+        return b is not None
 
     def set_explicit(self, is_explicit):
         self.is_explicit = is_explicit
@@ -602,7 +602,7 @@ class Node:
         # Don't bother scanning non-derived files, because we don't
         # care what their dependencies are.
         # Don't scan again, if we already have scanned.
-        if not self.implicit is None:
+        if self.implicit is not None:
             return
         self.implicit = []
         self.implicit_set = set()
@@ -891,7 +891,7 @@ class Node:
 
     def add_wkid(self, wkid):
         """Add a node to the list of kids waiting to be evaluated"""
-        if self.wkids != None:
+        if self.wkids is not None:
             self.wkids.append(wkid)
 
     def _children_reset(self):
diff --git a/3rdParty/SCons/scons-local/SCons/Options/BoolOption.py b/3rdParty/SCons/scons-local/SCons/Options/BoolOption.py
index f74854a..a6dba21 100644
--- a/3rdParty/SCons/scons-local/SCons/Options/BoolOption.py
+++ b/3rdParty/SCons/scons-local/SCons/Options/BoolOption.py
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Options/BoolOption.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Options/BoolOption.py 4761 2010/04/04 14:04:44 bdeegan"
 
 __doc__ = """Place-holder for the old SCons.Options module hierarchy
 
diff --git a/3rdParty/SCons/scons-local/SCons/Options/EnumOption.py b/3rdParty/SCons/scons-local/SCons/Options/EnumOption.py
index 1546ec9..d5f13f7 100644
--- a/3rdParty/SCons/scons-local/SCons/Options/EnumOption.py
+++ b/3rdParty/SCons/scons-local/SCons/Options/EnumOption.py
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Options/EnumOption.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Options/EnumOption.py 4761 2010/04/04 14:04:44 bdeegan"
 
 __doc__ = """Place-holder for the old SCons.Options module hierarchy
 
diff --git a/3rdParty/SCons/scons-local/SCons/Options/ListOption.py b/3rdParty/SCons/scons-local/SCons/Options/ListOption.py
index fbc7160..f60a01c 100644
--- a/3rdParty/SCons/scons-local/SCons/Options/ListOption.py
+++ b/3rdParty/SCons/scons-local/SCons/Options/ListOption.py
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Options/ListOption.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Options/ListOption.py 4761 2010/04/04 14:04:44 bdeegan"
 
 __doc__ = """Place-holder for the old SCons.Options module hierarchy
 
diff --git a/3rdParty/SCons/scons-local/SCons/Options/PackageOption.py b/3rdParty/SCons/scons-local/SCons/Options/PackageOption.py
index 656c87b..3d6450e 100644
--- a/3rdParty/SCons/scons-local/SCons/Options/PackageOption.py
+++ b/3rdParty/SCons/scons-local/SCons/Options/PackageOption.py
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Options/PackageOption.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Options/PackageOption.py 4761 2010/04/04 14:04:44 bdeegan"
 
 __doc__ = """Place-holder for the old SCons.Options module hierarchy
 
diff --git a/3rdParty/SCons/scons-local/SCons/Options/PathOption.py b/3rdParty/SCons/scons-local/SCons/Options/PathOption.py
index afcf919..7762a09 100644
--- a/3rdParty/SCons/scons-local/SCons/Options/PathOption.py
+++ b/3rdParty/SCons/scons-local/SCons/Options/PathOption.py
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Options/PathOption.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Options/PathOption.py 4761 2010/04/04 14:04:44 bdeegan"
 
 __doc__ = """Place-holder for the old SCons.Options module hierarchy
 
diff --git a/3rdParty/SCons/scons-local/SCons/Options/__init__.py b/3rdParty/SCons/scons-local/SCons/Options/__init__.py
index 053b565..63e018d 100644
--- a/3rdParty/SCons/scons-local/SCons/Options/__init__.py
+++ b/3rdParty/SCons/scons-local/SCons/Options/__init__.py
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Options/__init__.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Options/__init__.py 4761 2010/04/04 14:04:44 bdeegan"
 
 __doc__ = """Place-holder for the old SCons.Options module hierarchy
 
diff --git a/3rdParty/SCons/scons-local/SCons/PathList.py b/3rdParty/SCons/scons-local/SCons/PathList.py
index 78aafe1..27f1829 100644
--- a/3rdParty/SCons/scons-local/SCons/PathList.py
+++ b/3rdParty/SCons/scons-local/SCons/PathList.py
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/PathList.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/PathList.py 4761 2010/04/04 14:04:44 bdeegan"
 
 __doc__ = """SCons.PathList
 
diff --git a/3rdParty/SCons/scons-local/SCons/Platform/__init__.py b/3rdParty/SCons/scons-local/SCons/Platform/__init__.py
index 9c23554..717ba43 100644
--- a/3rdParty/SCons/scons-local/SCons/Platform/__init__.py
+++ b/3rdParty/SCons/scons-local/SCons/Platform/__init__.py
@@ -20,7 +20,7 @@ their own platform definition.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 # 
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -42,7 +42,9 @@ their own platform definition.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Platform/__init__.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Platform/__init__.py 4761 2010/04/04 14:04:44 bdeegan"
+
+import SCons.compat
 
 import imp
 import os
@@ -176,8 +178,8 @@ class TempFileMunge:
         # We use the .lnk suffix for the benefit of the Phar Lap
         # linkloc linker, which likes to append an .lnk suffix if
         # none is given.
-        tmp = os.path.normpath(tempfile.mktemp('.lnk'))
-        native_tmp = SCons.Util.get_native_path(tmp)
+        (fd, tmp) = tempfile.mkstemp('.lnk', text=True)
+        native_tmp = SCons.Util.get_native_path(os.path.normpath(tmp))
 
         if env['SHELL'] and env['SHELL'] == 'sh':
             # The sh shell will try to escape the backslashes in the
@@ -197,7 +199,8 @@ class TempFileMunge:
             prefix = '@'
 
         args = map(SCons.Subst.quote_spaces, cmd[1:])
-        open(tmp, 'w').write(string.join(args, " ") + "\n")
+        os.write(fd, string.join(args, " ") + "\n")
+        os.close(fd)
         # XXX Using the SCons.Action.print_actions value directly
         # like this is bogus, but expedient.  This class should
         # really be rewritten as an Action that defines the
diff --git a/3rdParty/SCons/scons-local/SCons/Platform/aix.py b/3rdParty/SCons/scons-local/SCons/Platform/aix.py
index c3f5d0f..b45ca93 100644
--- a/3rdParty/SCons/scons-local/SCons/Platform/aix.py
+++ b/3rdParty/SCons/scons-local/SCons/Platform/aix.py
@@ -8,7 +8,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Platform/aix.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Platform/aix.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import os
 import string
diff --git a/3rdParty/SCons/scons-local/SCons/Platform/cygwin.py b/3rdParty/SCons/scons-local/SCons/Platform/cygwin.py
index cdc516d..4b607f6 100644
--- a/3rdParty/SCons/scons-local/SCons/Platform/cygwin.py
+++ b/3rdParty/SCons/scons-local/SCons/Platform/cygwin.py
@@ -8,7 +8,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Platform/cygwin.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Platform/cygwin.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import posix
 from SCons.Platform import TempFileMunge
diff --git a/3rdParty/SCons/scons-local/SCons/Platform/darwin.py b/3rdParty/SCons/scons-local/SCons/Platform/darwin.py
index a92b2f1..b2e3931 100644
--- a/3rdParty/SCons/scons-local/SCons/Platform/darwin.py
+++ b/3rdParty/SCons/scons-local/SCons/Platform/darwin.py
@@ -8,7 +8,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Platform/darwin.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Platform/darwin.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import posix
 
diff --git a/3rdParty/SCons/scons-local/SCons/Platform/hpux.py b/3rdParty/SCons/scons-local/SCons/Platform/hpux.py
index aa90e71..19db32f 100644
--- a/3rdParty/SCons/scons-local/SCons/Platform/hpux.py
+++ b/3rdParty/SCons/scons-local/SCons/Platform/hpux.py
@@ -8,7 +8,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Platform/hpux.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Platform/hpux.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import posix
 
diff --git a/3rdParty/SCons/scons-local/SCons/Platform/irix.py b/3rdParty/SCons/scons-local/SCons/Platform/irix.py
index a20a7de..914a8db 100644
--- a/3rdParty/SCons/scons-local/SCons/Platform/irix.py
+++ b/3rdParty/SCons/scons-local/SCons/Platform/irix.py
@@ -8,7 +8,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Platform/irix.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Platform/irix.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import posix
 
diff --git a/3rdParty/SCons/scons-local/SCons/Platform/os2.py b/3rdParty/SCons/scons-local/SCons/Platform/os2.py
index f8fa379..e3b2754 100644
--- a/3rdParty/SCons/scons-local/SCons/Platform/os2.py
+++ b/3rdParty/SCons/scons-local/SCons/Platform/os2.py
@@ -8,7 +8,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -30,7 +30,8 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Platform/os2.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Platform/os2.py 4761 2010/04/04 14:04:44 bdeegan"
+import win32
 
 def generate(env):
     if not env.has_key('ENV'):
@@ -47,6 +48,8 @@ def generate(env):
     env['SHLIBSUFFIX']    = '.dll'
     env['LIBPREFIXES']    = '$LIBPREFIX'
     env['LIBSUFFIXES']    = [ '$LIBSUFFIX', '$SHLIBSUFFIX' ]
+    env['HOST_OS']        = 'os2'
+    env['HOST_ARCH']      = win32.get_architecture().arch
 
 # Local Variables:
 # tab-width:4
diff --git a/3rdParty/SCons/scons-local/SCons/Platform/posix.py b/3rdParty/SCons/scons-local/SCons/Platform/posix.py
index 0a31dd6..0c2a9e3 100644
--- a/3rdParty/SCons/scons-local/SCons/Platform/posix.py
+++ b/3rdParty/SCons/scons-local/SCons/Platform/posix.py
@@ -8,7 +8,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Platform/posix.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Platform/posix.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import errno
 import os
@@ -116,7 +116,7 @@ def process_cmd_output(cmd_stdout, cmd_stderr, stdout, stderr):
                 str = cmd_stdout.read()
                 if len(str) == 0:
                     stdout_eof = 1
-                elif stdout != None:
+                elif stdout is not None:
                     stdout.write(str)
             if cmd_stderr in i:
                 str = cmd_stderr.read()
diff --git a/3rdParty/SCons/scons-local/SCons/Platform/sunos.py b/3rdParty/SCons/scons-local/SCons/Platform/sunos.py
index 74f298a..448a4c4 100644
--- a/3rdParty/SCons/scons-local/SCons/Platform/sunos.py
+++ b/3rdParty/SCons/scons-local/SCons/Platform/sunos.py
@@ -8,7 +8,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Platform/sunos.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Platform/sunos.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import posix
 
diff --git a/3rdParty/SCons/scons-local/SCons/Platform/win32.py b/3rdParty/SCons/scons-local/SCons/Platform/win32.py
index 64b83a7..935e8d4 100644
--- a/3rdParty/SCons/scons-local/SCons/Platform/win32.py
+++ b/3rdParty/SCons/scons-local/SCons/Platform/win32.py
@@ -8,7 +8,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Platform/win32.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Platform/win32.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import os
 import os.path
@@ -42,8 +42,6 @@ from SCons.Platform.posix import exitvalmap
 from SCons.Platform import TempFileMunge
 import SCons.Util
 
-
-
 try:
     import msvcrt
     import win32api
@@ -67,7 +65,7 @@ else:
 
     _builtin_file = __builtin__.file
     _builtin_open = __builtin__.open
-
+    
     def _scons_file(*args, **kw):
         fp = apply(_builtin_file, args, kw)
         win32api.SetHandleInformation(msvcrt.get_osfhandle(fp.fileno()),
@@ -134,18 +132,18 @@ def piped_spawn(sh, escape, cmd, args, env, stdout, stderr):
                 ret = exitvalmap[e[0]]
             except KeyError:
                 sys.stderr.write("scons: unknown OSError exception code %d - %s: %s\n" % (e[0], cmd, e[1]))
-            if stderr != None:
+            if stderr is not None:
                 stderr.write("scons: %s: %s\n" % (cmd, e[1]))
         # copy child output from tempfiles to our streams
         # and do clean up stuff
-        if stdout != None and stdoutRedirected == 0:
+        if stdout is not None and stdoutRedirected == 0:
             try:
                 stdout.write(open( tmpFileStdout, "r" ).read())
                 os.remove( tmpFileStdout )
             except (IOError, OSError):
                 pass
 
-        if stderr != None and stderrRedirected == 0:
+        if stderr is not None and stderrRedirected == 0:
             try:
                 stderr.write(open( tmpFileStderr, "r" ).read())
                 os.remove( tmpFileStderr )
@@ -197,7 +195,7 @@ def get_system_root():
         return _system_root
 
     # A resonable default if we can't read the registry
-    val = os.environ.get('SystemRoot', "C:/WINDOWS")
+    val = os.environ.get('SystemRoot', "C:\\WINDOWS")
 
     if SCons.Util.can_read_reg:
         try:
@@ -239,6 +237,53 @@ def get_program_files_dir():
         
     return val
 
+
+
+# Determine which windows CPU were running on.
+class ArchDefinition:
+    """
+    A class for defining architecture-specific settings and logic.
+    """
+    def __init__(self, arch, synonyms=[]):
+        self.arch = arch
+        self.synonyms = synonyms
+
+SupportedArchitectureList = [
+    ArchDefinition(
+        'x86',
+        ['i386', 'i486', 'i586', 'i686'],
+    ),
+
+    ArchDefinition(
+        'x86_64',
+        ['AMD64', 'amd64', 'em64t', 'EM64T', 'x86_64'],
+    ),
+
+    ArchDefinition(
+        'ia64',
+        ['IA64'],
+    ),
+]
+
+SupportedArchitectureMap = {}
+for a in SupportedArchitectureList:
+    SupportedArchitectureMap[a.arch] = a
+    for s in a.synonyms:
+        SupportedArchitectureMap[s] = a
+
+def get_architecture(arch=None):
+    """Returns the definition for the specified architecture string.
+
+    If no string is specified, the system default is returned (as defined
+    by the PROCESSOR_ARCHITEW6432 or PROCESSOR_ARCHITECTURE environment
+    variables).
+    """
+    if arch is None:
+        arch = os.environ.get('PROCESSOR_ARCHITEW6432')
+        if not arch:
+            arch = os.environ.get('PROCESSOR_ARCHITECTURE')
+    return SupportedArchitectureMap.get(arch, ArchDefinition('', ['']))
+
 def generate(env):
     # Attempt to find cmd.exe (for WinNT/2k/XP) or
     # command.com for Win9x
@@ -329,6 +374,10 @@ def generate(env):
     env['TEMPFILEPREFIX'] = '@'
     env['MAXLINELENGTH']  = 2048
     env['ESCAPE']         = escape
+    
+    env['HOST_OS']        = 'win32'
+    env['HOST_ARCH']      = get_architecture().arch
+    
 
 # Local Variables:
 # tab-width:4
diff --git a/3rdParty/SCons/scons-local/SCons/SConf.py b/3rdParty/SCons/scons-local/SCons/SConf.py
index 923247c8..4a80da7 100644
--- a/3rdParty/SCons/scons-local/SCons/SConf.py
+++ b/3rdParty/SCons/scons-local/SCons/SConf.py
@@ -4,7 +4,7 @@ Autoconf-like configuration support.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -26,7 +26,7 @@ Autoconf-like configuration support.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/SConf.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/SConf.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import os
 import re
@@ -324,7 +324,8 @@ class SConfBuildTask(SCons.Taskmaster.AlwaysTask):
                                     env_decider=env.decide_source):
                         env_decider(dependency, target, prev_ni)
                         return True
-                    env.Decider(force_build)
+                    if env.decide_source.func_code is not force_build.func_code:
+                        env.Decider(force_build)
                 env['PSTDOUT'] = env['PSTDERR'] = s
                 try:
                     sconf.cached = 0
@@ -398,11 +399,11 @@ class SConfBase:
         if not SConfFS:
             SConfFS = SCons.Node.FS.default_fs or \
                       SCons.Node.FS.FS(env.fs.pathTop)
-        if not sconf_global is None:
+        if sconf_global is not None:
             raise (SCons.Errors.UserError,
                    "Only one SConf object may be active at one time")
         self.env = env
-        if log_file != None:
+        if log_file is not None:
             log_file = SConfFS.File(env.subst(log_file))
         self.logfile = log_file
         self.logstream = None
@@ -429,7 +430,7 @@ class SConfBase:
         self.AddTests(default_tests)
         self.AddTests(custom_tests)
         self.confdir = SConfFS.Dir(env.subst(conf_dir))
-        if not config_h is None:
+        if config_h is not None:
             config_h = SConfFS.File(config_h)
         self.config_h = config_h
         self._startup()
@@ -471,7 +472,7 @@ class SConfBase:
         Tries to build the given nodes immediately. Returns 1 on success,
         0 on error.
         """
-        if self.logstream != None:
+        if self.logstream is not None:
             # override stdout / stderr to write in log file
             oldStdout = sys.stdout
             sys.stdout = self.logstream
@@ -510,7 +511,7 @@ class SConfBase:
             SConfFS.set_max_drift(save_max_drift)
             os.chdir(old_os_dir)
             SConfFS.chdir(old_fs_dir, change_os_dir=0)
-            if self.logstream != None:
+            if self.logstream is not None:
                 # restore stdout / stderr
                 sys.stdout = oldStdout
                 sys.stderr = oldStderr
@@ -559,7 +560,7 @@ class SConfBase:
             self.env['SPAWN'] = self.pspawn_wrapper
             sourcetext = self.env.Value(text)
 
-            if text != None:
+            if text is not None:
                 textFile = self.confdir.File(f + extension)
                 textFileNode = self.env.SConfSourceBuilder(target=textFile,
                                                            source=sourcetext)
@@ -625,8 +626,8 @@ class SConfBase:
         ok = self.TryLink(text, extension)
         if( ok ):
             prog = self.lastTarget
-            pname = str(prog)
-            output = SConfFS.File(pname+'.out')
+            pname = prog.path
+            output = self.confdir.File(os.path.basename(pname)+'.out')
             node = self.env.Command(output, prog, [ [ pname, ">", "${TARGET}"] ])
             ok = self.BuildNodes(node)
             if ok:
@@ -645,7 +646,7 @@ class SConfBase:
                        "Test called after sconf.Finish()")
             context = CheckContext(self.sconf)
             ret = apply(self.test, (context,) +  args, kw)
-            if not self.sconf.config_h is None:
+            if self.sconf.config_h is not None:
                 self.sconf.config_h_text = self.sconf.config_h_text + context.config_h
             context.Result("error: no result")
             return ret
@@ -685,7 +686,7 @@ class SConfBase:
         self._createDir(self.confdir)
         self.confdir.up().add_ignore( [self.confdir] )
 
-        if self.logfile != None and not dryrun:
+        if self.logfile is not None and not dryrun:
             # truncate logfile, if SConf.Configure is called for the first time
             # in a build
             if _ac_config_logs.has_key(self.logfile):
@@ -724,7 +725,7 @@ class SConfBase:
 
         if not self.active:
             raise SCons.Errors.UserError, "Finish may be called only once!"
-        if self.logstream != None and not dryrun:
+        if self.logstream is not None and not dryrun:
             self.logstream.write("\n")
             self.logstream.close()
             self.logstream = None
@@ -784,8 +785,7 @@ class CheckContext:
 
     def Result(self, res):
         """Inform about the result of the test. res may be an integer or a
-        string. In case of an integer, the written text will be 'ok' or
-        'failed'.
+        string. In case of an integer, the written text will be 'yes' or 'no'.
         The result is only displayed when self.did_show_result is not set.
         """
         if type(res) in BooleanTypes:
@@ -854,6 +854,11 @@ class CheckContext:
         self.env.Append(LIBS = lib_name_list)
         return oldLIBS
 
+    def PrependLIBS(self, lib_name_list):
+        oldLIBS = self.env.get( 'LIBS', [] )
+        self.env.Prepend(LIBS = lib_name_list)
+        return oldLIBS
+
     def SetLIBS(self, val):
         oldLIBS = self.env.get( 'LIBS', [] )
         self.env.Replace(LIBS = val)
@@ -870,7 +875,7 @@ class CheckContext:
         self.Log("scons: Configure: " + msg + "\n")
 
     def Log(self, msg):
-        if self.sconf.logstream != None:
+        if self.sconf.logstream is not None:
             self.sconf.logstream.write(msg)
 
     #### End of stuff used by Conftest.py.
@@ -944,18 +949,22 @@ def CheckHeader(context, header, include_quotes = '<>', language = None):
 
 def CheckCC(context):
     res = SCons.Conftest.CheckCC(context)
+    context.did_show_result = 1
     return not res
 
 def CheckCXX(context):
     res = SCons.Conftest.CheckCXX(context)
+    context.did_show_result = 1
     return not res
 
 def CheckSHCC(context):
     res = SCons.Conftest.CheckSHCC(context)
+    context.did_show_result = 1
     return not res
 
 def CheckSHCXX(context):
     res = SCons.Conftest.CheckSHCXX(context)
+    context.did_show_result = 1
     return not res
 
 # Bram: Make this function obsolete?  CheckHeader() is more generic.
diff --git a/3rdParty/SCons/scons-local/SCons/SConsign.py b/3rdParty/SCons/scons-local/SCons/SConsign.py
index d7a8ab2..ebc82e8 100644
--- a/3rdParty/SCons/scons-local/SCons/SConsign.py
+++ b/3rdParty/SCons/scons-local/SCons/SConsign.py
@@ -5,7 +5,7 @@ Writing and reading information to the .sconsign file or files.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ Writing and reading information to the .sconsign file or files.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/SConsign.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/SConsign.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import cPickle
 import os
diff --git a/3rdParty/SCons/scons-local/SCons/Scanner/C.py b/3rdParty/SCons/scons-local/SCons/Scanner/C.py
index dccd3be..cc6ab64 100644
--- a/3rdParty/SCons/scons-local/SCons/Scanner/C.py
+++ b/3rdParty/SCons/scons-local/SCons/Scanner/C.py
@@ -5,7 +5,7 @@ This module implements the depenency scanner for C/C++ code.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ This module implements the depenency scanner for C/C++ code.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Scanner/C.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Scanner/C.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Node.FS
 import SCons.Scanner
diff --git a/3rdParty/SCons/scons-local/SCons/Scanner/D.py b/3rdParty/SCons/scons-local/SCons/Scanner/D.py
index 311e1af..509f7eb 100644
--- a/3rdParty/SCons/scons-local/SCons/Scanner/D.py
+++ b/3rdParty/SCons/scons-local/SCons/Scanner/D.py
@@ -8,7 +8,7 @@ Coded by Andy Friesen
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ Coded by Andy Friesen
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Scanner/D.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Scanner/D.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import re
 import string
diff --git a/3rdParty/SCons/scons-local/SCons/Scanner/Dir.py b/3rdParty/SCons/scons-local/SCons/Scanner/Dir.py
index aaf92d6..5e21a68 100644
--- a/3rdParty/SCons/scons-local/SCons/Scanner/Dir.py
+++ b/3rdParty/SCons/scons-local/SCons/Scanner/Dir.py
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Scanner/Dir.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Scanner/Dir.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Node.FS
 import SCons.Scanner
diff --git a/3rdParty/SCons/scons-local/SCons/Scanner/Fortran.py b/3rdParty/SCons/scons-local/SCons/Scanner/Fortran.py
index 92f511a..572b183 100644
--- a/3rdParty/SCons/scons-local/SCons/Scanner/Fortran.py
+++ b/3rdParty/SCons/scons-local/SCons/Scanner/Fortran.py
@@ -5,7 +5,7 @@ This module implements the dependency scanner for Fortran code.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ This module implements the dependency scanner for Fortran code.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Scanner/Fortran.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Scanner/Fortran.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import re
 import string
diff --git a/3rdParty/SCons/scons-local/SCons/Scanner/IDL.py b/3rdParty/SCons/scons-local/SCons/Scanner/IDL.py
index 57a8a6a..21fcc45 100644
--- a/3rdParty/SCons/scons-local/SCons/Scanner/IDL.py
+++ b/3rdParty/SCons/scons-local/SCons/Scanner/IDL.py
@@ -6,7 +6,7 @@ Definition Language) files.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -28,7 +28,7 @@ Definition Language) files.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Scanner/IDL.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Scanner/IDL.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Node.FS
 import SCons.Scanner
diff --git a/3rdParty/SCons/scons-local/SCons/Scanner/LaTeX.py b/3rdParty/SCons/scons-local/SCons/Scanner/LaTeX.py
index fe6f7e1..4b2c832 100644
--- a/3rdParty/SCons/scons-local/SCons/Scanner/LaTeX.py
+++ b/3rdParty/SCons/scons-local/SCons/Scanner/LaTeX.py
@@ -5,7 +5,7 @@ This module implements the dependency scanner for LaTeX code.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ This module implements the dependency scanner for LaTeX code.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Scanner/LaTeX.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Scanner/LaTeX.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import os.path
 import string
@@ -151,6 +151,7 @@ class LaTeX(SCons.Scanner.Base):
     of the file being searched:
     env['TEXINPUTS'] for "input" and "include" keywords
     env['TEXINPUTS'] for "includegraphics" keyword
+    env['TEXINPUTS'] for "lstinputlisting" keyword
     env['BIBINPUTS'] for "bibliography" keyword
     env['BSTINPUTS'] for "bibliographystyle" keyword
 
@@ -162,7 +163,8 @@ class LaTeX(SCons.Scanner.Base):
                      'includegraphics': 'TEXINPUTS',
                      'bibliography': 'BIBINPUTS',
                      'bibliographystyle': 'BSTINPUTS',
-                     'usepackage': 'TEXINPUTS'}
+                     'usepackage': 'TEXINPUTS',
+                     'lstinputlisting': 'TEXINPUTS'}
     env_variables = SCons.Util.unique(keyword_paths.values())
 
     def __init__(self, name, suffixes, graphics_extensions, *args, **kw):
@@ -172,7 +174,7 @@ class LaTeX(SCons.Scanner.Base):
         # Without the \n,  the ^ could match the beginning of a *previous*
         # line followed by one or more newline characters (i.e. blank
         # lines), interfering with a match on the next line.
-        regex = r'^[^%\n]*\\(include|includegraphics(?:\[[^\]]+\])?|input|bibliography|usepackage){([^}]*)}'
+        regex = r'^[^%\n]*\\(include|includegraphics(?:\[[^\]]+\])?|lstinputlisting(?:\[[^\]]+\])?|input|bibliography|usepackage){([^}]*)}'
         self.cre = re.compile(regex, re.M)
         self.graphics_extensions = graphics_extensions
 
@@ -180,7 +182,7 @@ class LaTeX(SCons.Scanner.Base):
             node = node.rfile()
             if not node.exists():
                 return []
-            return self.scan(node, path)
+            return self.scan_recurse(node, path)
 
         class FindMultiPathDirs:
             """The stock FindPathDirs function has the wrong granularity:
@@ -224,7 +226,7 @@ class LaTeX(SCons.Scanner.Base):
 
         kw['function'] = _scan
         kw['path_function'] = FindMultiPathDirs(LaTeX.keyword_paths)
-        kw['recursive'] = 1
+        kw['recursive'] = 0
         kw['skeys'] = suffixes
         kw['scan_check'] = LaTeXScanCheck(suffixes)
         kw['name'] = name
@@ -277,13 +279,13 @@ class LaTeX(SCons.Scanner.Base):
                 return i, include
         return i, include
 
-    def scan(self, node, path=()):
+    def scan(self, node):
         # Modify the default scan function to allow for the regular
         # expression to return a comma separated list of file names
         # as can be the case with the bibliography keyword.
 
         # Cache the includes list in node so we only scan it once:
-        path_dict = dict(list(path))
+        # path_dict = dict(list(path))
         noopt_cre = re.compile('\[.*$')
         if node.includes != None:
             includes = node.includes
@@ -308,6 +310,19 @@ class LaTeX(SCons.Scanner.Base):
             includes = split_includes
             node.includes = includes
 
+        return includes
+
+    def scan_recurse(self, node, path=()):
+        """ do a recursive scan of the top level target file
+        This lets us search for included files based on the
+        directory of the main file just as latex does"""
+
+        path_dict = dict(list(path))
+        
+        queue = [] 
+        queue.extend( self.scan(node) )
+        seen = {}
+
         # This is a hand-coded DSU (decorate-sort-undecorate, or
         # Schwartzian transform) pattern.  The sort key is the raw name
         # of the file as specifed on the \include, \input, etc. line.
@@ -317,7 +332,24 @@ class LaTeX(SCons.Scanner.Base):
         # is actually found in a Repository or locally."""
         nodes = []
         source_dir = node.get_dir()
-        for include in includes:
+        #for include in includes:
+        while queue:
+            
+            include = queue.pop()
+            # TODO(1.5):  more compact:
+            #try:
+            #    if seen[include[1]] == 1:
+            #        continue
+            #except KeyError:
+            #    seen[include[1]] = 1
+            try:
+                already_seen = seen[include[1]]
+            except KeyError:
+                seen[include[1]] = 1
+                already_seen = False
+            if already_seen:
+                continue
+
             #
             # Handle multiple filenames in include[1]
             #
@@ -331,6 +363,9 @@ class LaTeX(SCons.Scanner.Base):
             else:
                 sortkey = self.sort_key(n)
                 nodes.append((sortkey, n))
+                # recurse down 
+                queue.extend( self.scan(n) )
+
         #
         nodes.sort()
         nodes = map(lambda pair: pair[1], nodes)
diff --git a/3rdParty/SCons/scons-local/SCons/Scanner/Prog.py b/3rdParty/SCons/scons-local/SCons/Scanner/Prog.py
index 47054a8..f5f94a4 100644
--- a/3rdParty/SCons/scons-local/SCons/Scanner/Prog.py
+++ b/3rdParty/SCons/scons-local/SCons/Scanner/Prog.py
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Scanner/Prog.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Scanner/Prog.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import string
 
diff --git a/3rdParty/SCons/scons-local/SCons/Scanner/RC.py b/3rdParty/SCons/scons-local/SCons/Scanner/RC.py
index e804a3f..b89442b 100644
--- a/3rdParty/SCons/scons-local/SCons/Scanner/RC.py
+++ b/3rdParty/SCons/scons-local/SCons/Scanner/RC.py
@@ -6,7 +6,7 @@ Definition Language) files.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -28,7 +28,7 @@ Definition Language) files.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Scanner/RC.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Scanner/RC.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Node.FS
 import SCons.Scanner
diff --git a/3rdParty/SCons/scons-local/SCons/Scanner/__init__.py b/3rdParty/SCons/scons-local/SCons/Scanner/__init__.py
index f5ce271..b7eb2d8 100644
--- a/3rdParty/SCons/scons-local/SCons/Scanner/__init__.py
+++ b/3rdParty/SCons/scons-local/SCons/Scanner/__init__.py
@@ -5,7 +5,7 @@ The Scanner package for the SCons software construction utility.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ The Scanner package for the SCons software construction utility.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Scanner/__init__.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Scanner/__init__.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import re
 import string
@@ -92,7 +92,9 @@ class Base:
                  argument = _null,
                  skeys = _null,
                  path_function = None,
-                 node_class = SCons.Node.FS.Entry,
+                 # Node.FS.Base so that, by default, it's okay for a
+                 # scanner to return a Dir, File or Entry.
+                 node_class = SCons.Node.FS.Base,
                  node_factory = None,
                  scan_check = None,
                  recursive = None):
@@ -352,16 +354,13 @@ class Classic(Current):
     def scan(self, node, path=()):
 
         # cache the includes list in node so we only scan it once:
-        if node.includes != None:
+        if node.includes is not None:
             includes = node.includes
         else:
             includes = self.find_include_names (node)
             # Intern the names of the include files. Saves some memory
             # if the same header is included many times.
-            try:
-                node.includes = map(intern, includes)
-            except TypeError:
-                node.includes = includes
+            node.includes = map(SCons.Util.silent_intern, includes)
 
         # This is a hand-coded DSU (decorate-sort-undecorate, or
         # Schwartzian transform) pattern.  The sort key is the raw name
@@ -405,7 +404,8 @@ class ClassicCPP(Classic):
 
         n = SCons.Node.FS.find_file(include[1], paths)
 
-        return n, intern(include[1])
+        i = SCons.Util.silent_intern(include[1])
+        return n, i
 
     def sort_key(self, include):
         return SCons.Node.FS._my_normcase(string.join(include))
diff --git a/3rdParty/SCons/scons-local/SCons/Script/Interactive.py b/3rdParty/SCons/scons-local/SCons/Script/Interactive.py
index 75ca1c7..1300116 100644
--- a/3rdParty/SCons/scons-local/SCons/Script/Interactive.py
+++ b/3rdParty/SCons/scons-local/SCons/Script/Interactive.py
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Script/Interactive.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Script/Interactive.py 4761 2010/04/04 14:04:44 bdeegan"
 
 __doc__ = """
 SCons interactive mode
diff --git a/3rdParty/SCons/scons-local/SCons/Script/Main.py b/3rdParty/SCons/scons-local/SCons/Script/Main.py
index 537bcf1..72ff71c 100644
--- a/3rdParty/SCons/scons-local/SCons/Script/Main.py
+++ b/3rdParty/SCons/scons-local/SCons/Script/Main.py
@@ -12,7 +12,7 @@ it goes here.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -34,7 +34,7 @@ it goes here.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Script/Main.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Script/Main.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import os
 import os.path
@@ -207,7 +207,12 @@ class BuildTask(SCons.Taskmaster.OutOfDateTask):
         t = self.targets[0]
         if self.top and not t.has_builder() and not t.side_effect:
             if not t.exists():
-                errstr="Do not know how to make target `%s'." % t
+                def classname(obj):
+                    return string.split(str(obj.__class__), '.')[-1]
+                if classname(t) in ('File', 'Dir', 'Entry'):
+                    errstr="Do not know how to make %s target `%s' (%s)." % (classname(t), t, t.abspath)
+                else: # Alias or Python or ...
+                    errstr="Do not know how to make %s target `%s'." % (classname(t), t)
                 sys.stderr.write("scons: *** " + errstr)
                 if not self.options.keep_going:
                     sys.stderr.write("  Stop.")
@@ -426,7 +431,7 @@ def python_version_unsupported(version=sys.version_info):
     return version < (1, 5, 2)
 
 def python_version_deprecated(version=sys.version_info):
-    return version < (2, 2, 0)
+    return version < (2, 4, 0)
 
 
 # Global variables
@@ -693,20 +698,41 @@ def _load_site_scons_dir(topdir, site_dir_name=None):
     site_tools_dir = os.path.join(site_dir, site_tools_dirname)
     if os.path.exists(site_init_file):
         import imp
+        # TODO(2.4): turn this into try:-except:-finally:
         try:
-            fp, pathname, description = imp.find_module(site_init_modname,
-                                                        [site_dir])
             try:
-                imp.load_module(site_init_modname, fp, pathname, description)
-            finally:
-                if fp:
-                    fp.close()
-        except ImportError, e:
-            sys.stderr.write("Can't import site init file '%s': %s\n"%(site_init_file, e))
-            raise
-        except Exception, e:
-            sys.stderr.write("Site init file '%s' raised exception: %s\n"%(site_init_file, e))
-            raise
+                fp, pathname, description = imp.find_module(site_init_modname,
+                                                            [site_dir])
+                # Load the file into SCons.Script namespace.  This is
+                # opaque and clever; m is the module object for the
+                # SCons.Script module, and the exec ... in call executes a
+                # file (or string containing code) in the context of the
+                # module's dictionary, so anything that code defines ends
+                # up adding to that module.  This is really short, but all
+                # the error checking makes it longer.
+                try:
+                    m = sys.modules['SCons.Script']
+                except Exception, e:
+                    fmt = 'cannot import site_init.py: missing SCons.Script module %s'
+                    raise SCons.Errors.InternalError, fmt % repr(e)
+                try:
+                    # This is the magic.
+                    exec fp in m.__dict__
+                except KeyboardInterrupt:
+                    raise
+                except Exception, e:
+                    fmt = '*** Error loading site_init file %s:\n'
+                    sys.stderr.write(fmt % repr(site_init_file))
+                    raise
+            except KeyboardInterrupt:
+                raise
+            except ImportError, e:
+                fmt = '*** cannot import site init file %s:\n'
+                sys.stderr.write(fmt % repr(site_init_file))
+                raise
+        finally:
+            if fp:
+                fp.close()
     if os.path.exists(site_tools_dir):
         SCons.Tool.DefaultToolpath.append(os.path.abspath(site_tools_dir))
 
@@ -750,6 +776,8 @@ def _main(parser):
                          SCons.Warnings.MisleadingKeywordsWarning,
                          SCons.Warnings.ReservedVariableWarning,
                          SCons.Warnings.StackSizeWarning,
+                         SCons.Warnings.VisualVersionMismatch,
+                         SCons.Warnings.VisualCMissingWarning,
                        ]
 
     for warning in default_warnings:
@@ -778,16 +806,13 @@ def _main(parser):
     # want to start everything, which means first handling any relevant
     # options that might cause us to chdir somewhere (-C, -D, -U, -u).
     if options.directory:
-        cdir = _create_path(options.directory)
-        try:
-            os.chdir(cdir)
-        except OSError:
-            sys.stderr.write("Could not change directory to %s\n" % cdir)
+        script_dir = os.path.abspath(_create_path(options.directory))
+    else:
+        script_dir = os.getcwd()
 
     target_top = None
     if options.climb_up:
         target_top = '.'  # directory to prepend to targets
-        script_dir = os.getcwd()  # location of script
         while script_dir and not _SConstruct_exists(script_dir,
                                                     options.repository,
                                                     options.file):
@@ -796,9 +821,13 @@ def _main(parser):
                 target_top = os.path.join(last_part, target_top)
             else:
                 script_dir = ''
-        if script_dir and script_dir != os.getcwd():
-            display("scons: Entering directory `%s'" % script_dir)
+
+    if script_dir and script_dir != os.getcwd():
+        display("scons: Entering directory `%s'" % script_dir)
+        try:
             os.chdir(script_dir)
+        except OSError:
+            sys.stderr.write("Could not change directory to %s\n" % script_dir)
 
     # Now that we're in the top-level SConstruct directory, go ahead
     # and initialize the FS object that represents the file system,
@@ -868,7 +897,7 @@ def _main(parser):
     targets = []
     xmit_args = []
     for a in parser.largs:
-        if a[0] == '-':
+        if a[:1] == '-':
             continue
         if '=' in a:
             xmit_args.append(a)
@@ -885,9 +914,9 @@ def _main(parser):
     # module will no longer work.  This affects the behavior during
     # --interactive mode.  --interactive should only be used when stdin and
     # stdout refer to a tty.
-    if not sys.stdout.isatty():
+    if not hasattr(sys.stdout, 'isatty') or not sys.stdout.isatty():
         sys.stdout = SCons.Util.Unbuffered(sys.stdout)
-    if not sys.stderr.isatty():
+    if not hasattr(sys.stderr, 'isatty') or not sys.stderr.isatty():
         sys.stderr = SCons.Util.Unbuffered(sys.stderr)
 
     memory_stats.append('before reading SConscript files:')
@@ -933,7 +962,7 @@ def _main(parser):
     # warning about deprecated Python versions--delayed until here
     # in case they disabled the warning in the SConscript files.
     if python_version_deprecated():
-        msg = "Support for pre-2.2 Python (%s) is deprecated.\n" + \
+        msg = "Support for pre-2.4 Python (%s) is deprecated.\n" + \
               "    If this will cause hardship, contact dev@scons.tigris.org."
         SCons.Warnings.warn(SCons.Warnings.PythonVersionWarning,
                             msg % python_version_string())
@@ -1075,14 +1104,14 @@ def _build_targets(fs, options, targets, target_top):
         else:
             node = None
             # Why would ltop be None? Unfortunately this happens.
-            if ltop == None: ltop = ''
+            if ltop is None: ltop = ''
             # Curdir becomes important when SCons is called with -u, -C,
             # or similar option that changes directory, and so the paths
             # of targets given on the command line need to be adjusted.
             curdir = os.path.join(os.getcwd(), str(ltop))
             for lookup in SCons.Node.arg2nodes_lookups:
                 node = lookup(x, curdir=curdir)
-                if node != None:
+                if node is not None:
                     break
             if node is None:
                 node = fs.Entry(x, directory=ltop, create=1)
@@ -1255,7 +1284,7 @@ def main():
         # __main__.__version__, hence there is no script version.
         pass 
     parts.append(version_string("engine", SCons))
-    parts.append("Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation")
+    parts.append("Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation")
     version = string.join(parts, '')
 
     import SConsOptions
diff --git a/3rdParty/SCons/scons-local/SCons/Script/SConsOptions.py b/3rdParty/SCons/scons-local/SCons/Script/SConsOptions.py
index 7724590..d6001c5 100644
--- a/3rdParty/SCons/scons-local/SCons/Script/SConsOptions.py
+++ b/3rdParty/SCons/scons-local/SCons/Script/SConsOptions.py
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Script/SConsOptions.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Script/SConsOptions.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import optparse
 import re
@@ -870,8 +870,6 @@ def Parser(version):
     def opt_not_yet(option, opt, value, parser):
         msg = "Warning:  the %s option is not yet implemented\n" % opt
         sys.stderr.write(msg)
-        sys.exit(0)
-
 
     op.add_option('-l', '--load-average', '--max-load',
                   nargs=1, type="int",
diff --git a/3rdParty/SCons/scons-local/SCons/Script/SConscript.py b/3rdParty/SCons/scons-local/SCons/Script/SConscript.py
index cde6dec..c0505ae 100644
--- a/3rdParty/SCons/scons-local/SCons/Script/SConscript.py
+++ b/3rdParty/SCons/scons-local/SCons/Script/SConscript.py
@@ -6,7 +6,7 @@ files.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -28,7 +28,7 @@ files.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Script/SConscript.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Script/SConscript.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons
 import SCons.Action
@@ -189,7 +189,11 @@ def _SConscript(fs, *files, **kw):
                 # fs match so we can open the SConscript.
                 fs.chdir(top, change_os_dir=1)
                 if f.rexists():
-                    _file_ = open(f.rfile().get_abspath(), "r")
+                    actual = f.rfile()
+                    _file_ = open(actual.get_abspath(), "r")
+                elif f.srcnode().rexists():
+                    actual = f.srcnode().rfile()
+                    _file_ = open(actual.get_abspath(), "r")
                 elif f.has_src_builder():
                     # The SConscript file apparently exists in a source
                     # code management system.  Build it, but then clear
@@ -233,8 +237,7 @@ def _SConscript(fs, *files, **kw):
                         # interpret the stuff within the SConscript file
                         # relative to where we are logically.
                         fs.chdir(ldir, change_os_dir=0)
-                        # TODO Not sure how to handle src_dir here
-                        os.chdir(f.rfile().dir.get_abspath())
+                        os.chdir(actual.dir.get_abspath())
 
                     # Append the SConscript directory to the beginning
                     # of sys.path so Python modules in the SConscript
@@ -488,9 +491,10 @@ class SConsEnvironment(SCons.Environment.Base):
     def Exit(self, value=0):
         sys.exit(value)
 
-    def Export(self, *vars):
+    def Export(self, *vars, **kw):
         for var in vars:
             global_exports.update(compute_exports(self.Split(var)))
+        global_exports.update(kw)
 
     def GetLaunchDir(self):
         global launch_dir
diff --git a/3rdParty/SCons/scons-local/SCons/Script/__init__.py b/3rdParty/SCons/scons-local/SCons/Script/__init__.py
index fcfb717..875e921 100644
--- a/3rdParty/SCons/scons-local/SCons/Script/__init__.py
+++ b/3rdParty/SCons/scons-local/SCons/Script/__init__.py
@@ -12,7 +12,7 @@ it goes here.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -34,7 +34,7 @@ it goes here.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Script/__init__.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Script/__init__.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import time
 start_time = time.time()
diff --git a/3rdParty/SCons/scons-local/SCons/Sig.py b/3rdParty/SCons/scons-local/SCons/Sig.py
index 6feb19c..7a3387a 100644
--- a/3rdParty/SCons/scons-local/SCons/Sig.py
+++ b/3rdParty/SCons/scons-local/SCons/Sig.py
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Sig.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Sig.py 4761 2010/04/04 14:04:44 bdeegan"
 
 __doc__ = """Place-holder for the old SCons.Sig module hierarchy
 
diff --git a/3rdParty/SCons/scons-local/SCons/Subst.py b/3rdParty/SCons/scons-local/SCons/Subst.py
index 1127424..6db7ed3 100644
--- a/3rdParty/SCons/scons-local/SCons/Subst.py
+++ b/3rdParty/SCons/scons-local/SCons/Subst.py
@@ -5,7 +5,7 @@ SCons string substitution.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ SCons string substitution.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Subst.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Subst.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import re
 import string
diff --git a/3rdParty/SCons/scons-local/SCons/Taskmaster.py b/3rdParty/SCons/scons-local/SCons/Taskmaster.py
index a33233d..3e80ac8 100644
--- a/3rdParty/SCons/scons-local/SCons/Taskmaster.py
+++ b/3rdParty/SCons/scons-local/SCons/Taskmaster.py
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -48,7 +48,7 @@ interface and the SCons build engine.  There are two key classes here:
         target(s) that it decides need to be evaluated and/or built.
 """
 
-__revision__ = "src/engine/SCons/Taskmaster.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Taskmaster.py 4761 2010/04/04 14:04:44 bdeegan"
 
 from itertools import chain
 import operator
@@ -359,7 +359,8 @@ class Task:
         for t in self.targets:
             t.disambiguate().set_state(NODE_EXECUTING)
             for s in t.side_effects:
-                s.set_state(NODE_EXECUTING)
+                # add disambiguate here to mirror the call on targets above
+                s.disambiguate().set_state(NODE_EXECUTING)
 
     def make_ready_current(self):
         """
@@ -390,7 +391,8 @@ class Task:
             for t in self.targets:
                 t.set_state(NODE_EXECUTING)
                 for s in t.side_effects:
-                    s.set_state(NODE_EXECUTING)
+                    # add disambiguate here to mirror the call on targets in first loop above
+                    s.disambiguate().set_state(NODE_EXECUTING)
         else:
             for t in self.targets:
                 # We must invoke visited() to ensure that the node
@@ -797,7 +799,7 @@ class Taskmaster:
             children_not_ready = []
             children_failed = False
 
-            for child in chain(children, executor.get_all_prerequisites()):
+            for child in chain(executor.get_all_prerequisites(), children):
                 childstate = child.get_state()
 
                 if T: T.write(self.trace_message('       ' + self.trace_node(child)))
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/386asm.py b/3rdParty/SCons/scons-local/SCons/Tool/386asm.py
index 19dd14c..72b87a1 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/386asm.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/386asm.py
@@ -10,7 +10,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -32,7 +32,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/386asm.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/386asm.py 4761 2010/04/04 14:04:44 bdeegan"
 
 from SCons.Tool.PharLapCommon import addPharLapPaths
 import SCons.Util
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/BitKeeper.py b/3rdParty/SCons/scons-local/SCons/Tool/BitKeeper.py
index 61476ca..407431f 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/BitKeeper.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/BitKeeper.py
@@ -10,7 +10,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -32,7 +32,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/BitKeeper.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/BitKeeper.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Action
 import SCons.Builder
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/CVS.py b/3rdParty/SCons/scons-local/SCons/Tool/CVS.py
index 0782970..2334d13 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/CVS.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/CVS.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/CVS.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/CVS.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Action
 import SCons.Builder
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/FortranCommon.py b/3rdParty/SCons/scons-local/SCons/Tool/FortranCommon.py
index 2cc4387..b982d61 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/FortranCommon.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/FortranCommon.py
@@ -5,7 +5,7 @@ Stuff for processing Fortran, common to all fortran dialects.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ Stuff for processing Fortran, common to all fortran dialects.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/FortranCommon.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/FortranCommon.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import re
 import string
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/JavaCommon.py b/3rdParty/SCons/scons-local/SCons/Tool/JavaCommon.py
index cc3e421..2c5b5a2 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/JavaCommon.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/JavaCommon.py
@@ -5,7 +5,7 @@ Stuff for processing Java.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ Stuff for processing Java.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/JavaCommon.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/JavaCommon.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import os
 import os.path
@@ -65,7 +65,8 @@ if java_parsing:
         interfaces, and anonymous inner classes."""
         def __init__(self, version=default_java_version):
 
-            if not version in ('1.1', '1.2', '1.3','1.4', '1.5', '1.6'):
+            if not version in ('1.1', '1.2', '1.3','1.4', '1.5', '1.6',
+                               '5', '6'):
                 msg = "Java version %s not supported" % version
                 raise NotImplementedError, msg
 
@@ -171,7 +172,7 @@ if java_parsing:
             if self.version in ('1.1', '1.2', '1.3', '1.4'):
                 clazz = self.listClasses[0]
                 self.listOutputs.append('%s$%d' % (clazz, self.nextAnon))
-            elif self.version in ('1.5', '1.6'):
+            elif self.version in ('1.5', '1.6', '5', '6'):
                 self.stackAnonClassBrackets.append(self.brackets)
                 className = []
                 className.extend(self.listClasses)
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/MSCommon/__init__.py b/3rdParty/SCons/scons-local/SCons/Tool/MSCommon/__init__.py
index 66afde3..01ba242 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/MSCommon/__init__.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/MSCommon/__init__.py
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/MSCommon/__init__.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/MSCommon/__init__.py 4761 2010/04/04 14:04:44 bdeegan"
 
 __doc__ = """
 Common functions for Microsoft Visual Studio and Visual C/C++.
@@ -36,10 +36,17 @@ import SCons.Errors
 import SCons.Platform.win32
 import SCons.Util
 
-from SCons.Tool.MSCommon.vs import detect_msvs, \
-                                   get_default_version, \
+from SCons.Tool.MSCommon.sdk import mssdk_exists, \
+                                    mssdk_setup_env
+
+from SCons.Tool.MSCommon.vc import msvc_exists, \
+                                   msvc_setup_env, \
+                                   msvc_setup_env_once
+
+from SCons.Tool.MSCommon.vs import get_default_version, \
                                    get_vs_by_version, \
                                    merge_default_version, \
+                                   msvs_exists, \
                                    query_versions
 
 # Local Variables:
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/MSCommon/arch.py b/3rdParty/SCons/scons-local/SCons/Tool/MSCommon/arch.py
new file mode 100644
index 0000000..d80df7d
--- /dev/null
+++ b/3rdParty/SCons/scons-local/SCons/Tool/MSCommon/arch.py
@@ -0,0 +1,61 @@
+#
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
+#
+# 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/Tool/MSCommon/arch.py 4761 2010/04/04 14:04:44 bdeegan"
+
+__doc__ = """Module to define supported Windows chip architectures.
+"""
+
+import os
+
+class ArchDefinition:
+    """
+    A class for defining architecture-specific settings and logic.
+    """
+    def __init__(self, arch, synonyms=[]):
+        self.arch = arch
+        self.synonyms = synonyms
+
+SupportedArchitectureList = [
+    ArchitectureDefinition(
+        'x86',
+        ['i386', 'i486', 'i586', 'i686'],
+    ),
+
+    ArchitectureDefinition(
+        'x86_64',
+        ['AMD64', 'amd64', 'em64t', 'EM64T', 'x86_64'],
+    ),
+
+    ArchitectureDefinition(
+        'ia64',
+        ['IA64'],
+    ),
+]
+
+SupportedArchitectureMap = {}
+for a in SupportedArchitectureList:
+    SupportedArchitectureMap[a.arch] = a
+    for s in a.synonyms:
+        SupportedArchitectureMap[s] = a
+
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/MSCommon/common.py b/3rdParty/SCons/scons-local/SCons/Tool/MSCommon/common.py
index 0cac163..2e7f430 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/MSCommon/common.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/MSCommon/common.py
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -21,10 +21,10 @@
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/MSCommon/common.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/MSCommon/common.py 4761 2010/04/04 14:04:44 bdeegan"
 
 __doc__ = """
-Common helper functions for working with
+Common helper functions for working with the Microsoft tool chain.
 """
 
 import copy
@@ -36,7 +36,10 @@ import SCons.Util
 
 
 logfile = os.environ.get('SCONS_MSCOMMON_DEBUG')
-if logfile:
+if logfile == '-':
+    def debug(x):
+        print x
+elif logfile:
     try:
         import logging
     except ImportError:
@@ -48,23 +51,51 @@ else:
     debug = lambda x: None
 
 
-# TODO(sgk): unused
+_is_win64 = None
+
 def is_win64():
-    """Return true if running on windows 64 bits."""
-    # Unfortunately, python does not seem to have anything useful: neither
-    # sys.platform nor os.name gives something different on windows running on
-    # 32 bits or 64 bits. Note that we don't care about whether python itself
-    # is 32 or 64 bits here
-    value = "Software\Wow6432Node"
-    yo = SCons.Util.RegGetValue(SCons.Util.HKEY_LOCAL_MACHINE, value)[0]
-    if yo is None:
-        return 0
-    else:
-        return 1
+    """Return true if running on windows 64 bits.
+    
+    Works whether python itself runs in 64 bits or 32 bits."""
+    # Unfortunately, python does not provide a useful way to determine
+    # if the underlying Windows OS is 32-bit or 64-bit.  Worse, whether
+    # the Python itself is 32-bit or 64-bit affects what it returns,
+    # so nothing in sys.* or os.* help.  
+
+    # Apparently the best solution is to use env vars that Windows
+    # sets.  If PROCESSOR_ARCHITECTURE is not x86, then the python
+    # process is running in 64 bit mode (on a 64-bit OS, 64-bit
+    # hardware, obviously).
+    # If this python is 32-bit but the OS is 64, Windows will set
+    # ProgramW6432 and PROCESSOR_ARCHITEW6432 to non-null.
+    # (Checking for HKLM\Software\Wow6432Node in the registry doesn't
+    # work, because some 32-bit installers create it.)
+    global _is_win64
+    if _is_win64 is None:
+        # I structured these tests to make it easy to add new ones or
+        # add exceptions in the future, because this is a bit fragile.
+        _is_win64 = False
+        if os.environ.get('PROCESSOR_ARCHITECTURE','x86') != 'x86':
+            _is_win64 = True
+        if os.environ.get('PROCESSOR_ARCHITEW6432'):
+            _is_win64 = True
+        if os.environ.get('ProgramW6432'):
+            _is_win64 = True
+    return _is_win64
+
 
 def read_reg(value):
     return SCons.Util.RegGetValue(SCons.Util.HKEY_LOCAL_MACHINE, value)[0]
 
+def has_reg(value):
+    """Return True if the given key exists in HKEY_LOCAL_MACHINE, False
+    otherwise."""
+    try:
+        SCons.Util.RegOpenKeyEx(SCons.Util.HKEY_LOCAL_MACHINE, value)
+        ret = True
+    except WindowsError:
+        ret = False
+    return ret
 
 # Functions for fetching environment variable settings from batch files.
 
@@ -125,7 +156,7 @@ def parse_output(output, keep = ("INCLUDE", "LIB", "LIBPATH", "PATH")):
     for i in keep:
         rdk[i] = re.compile('%s=(.*)' % i, re.I)
 
-    def add_env(rmatch, key):
+    def add_env(rmatch, key, dkeep=dkeep):
         plist = rmatch.group(1).split(os.pathsep)
         for p in plist:
             # Do not add empty paths (when a var ends with ;)
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/MSCommon/netframework.py b/3rdParty/SCons/scons-local/SCons/Tool/MSCommon/netframework.py
index 33a0224..eaf9e9b 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/MSCommon/netframework.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/MSCommon/netframework.py
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/MSCommon/netframework.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/MSCommon/netframework.py 4761 2010/04/04 14:04:44 bdeegan"
 
 __doc__ = """
 """
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/MSCommon/sdk.py b/3rdParty/SCons/scons-local/SCons/Tool/MSCommon/sdk.py
index e11df4e..5ab58e3 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/MSCommon/sdk.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/MSCommon/sdk.py
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/MSCommon/sdk.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/MSCommon/sdk.py 4761 2010/04/04 14:04:44 bdeegan"
 
 __doc__ = """Module to detect the Platform/Windows SDK
 
@@ -31,9 +31,12 @@ PSDK 2003 R1 is the earliest version detected.
 import os
 
 import SCons.Errors
-from SCons.Tool.MSCommon.common import debug, read_reg
 import SCons.Util
 
+import common
+
+debug = common.debug
+
 # SDK Checks. This is of course a mess as everything else on MS platforms. Here
 # is what we do to detect the SDK:
 #
@@ -69,24 +72,27 @@ class SDKDefinition:
         Return None if failed or the directory does not exist.
         """
         if not SCons.Util.can_read_reg:
-            debug('find_sdk_dir():  can not read registry')
+            debug('find_sdk_dir(): can not read registry')
             return None
 
         hkey = self.HKEY_FMT % self.hkey_data
+        debug('find_sdk_dir(): checking registry:%s'%hkey)
 
         try:
-            sdk_dir = read_reg(hkey)
+            sdk_dir = common.read_reg(hkey)
         except WindowsError, e:
-            debug('find_sdk_dir(): no registry key %s' % hkey)
+            debug('find_sdk_dir(): no SDK registry key %s' % repr(hkey))
             return None
 
+        debug('find_sdk_dir(): Trying SDK Dir: %s'%sdk_dir)
+
         if not os.path.exists(sdk_dir):
             debug('find_sdk_dir():  %s not on file system' % sdk_dir)
             return None
 
         ftc = os.path.join(sdk_dir, self.sanity_check_file)
         if not os.path.exists(ftc):
-            debug("find_sdk_dir():  sanity check %s not found" % ftc)
+            debug("find_sdk_dir(): sanity check %s not found" % ftc)
             return None
 
         return sdk_dir
@@ -99,6 +105,25 @@ class SDKDefinition:
             sdk_dir = self.find_sdk_dir()
             self._sdk_dir = sdk_dir
             return sdk_dir
+        
+    def get_sdk_vc_script(self,host_arch, target_arch):
+        """ Return the script to initialize the VC compiler installed by SDK
+        """
+
+        if (host_arch == 'amd64' and target_arch == 'x86'):
+            # No cross tools needed compiling 32 bits on 64 bit machine
+            host_arch=target_arch
+        
+        arch_string=target_arch
+        if (host_arch != target_arch):
+            arch_string='%s_%s'%(host_arch,target_arch)
+            
+        debug("sdk.py: get_sdk_vc_script():arch_string:%s host_arch:%s target_arch:%s"%(arch_string,
+                                                           host_arch,
+                                                           target_arch))
+        file=self.vc_setup_scripts.get(arch_string,None)
+        debug("sdk.py: get_sdk_vc_script():file:%s"%file)
+        return file
 
 class WindowsSDK(SDKDefinition):
     """
@@ -118,6 +143,27 @@ class PlatformSDK(SDKDefinition):
         apply(SDKDefinition.__init__, (self,)+args, kw)
         self.hkey_data = self.uuid
 
+#
+# The list of VC initialization scripts installed by the SDK
+# These should be tried if the vcvarsall.bat TARGET_ARCH fails
+preSDK61VCSetupScripts = { 'x86'      : r'bin\vcvars32.bat',
+                           'amd64'    : r'bin\vcvarsamd64.bat',
+                           'x86_amd64': r'bin\vcvarsx86_amd64.bat',
+                           'x86_ia64' : r'bin\vcvarsx86_ia64.bat',
+                           'ia64'     : r'bin\vcvarsia64.bat'}
+
+SDK61VCSetupScripts = {'x86'      : r'bin\vcvars32.bat',
+                       'amd64'    : r'bin\amd64\vcvarsamd64.bat',
+                       'x86_amd64': r'bin\x86_amd64\vcvarsx86_amd64.bat',
+                       'x86_ia64' : r'bin\x86_ia64\vcvarsx86_ia64.bat',
+                       'ia64'     : r'bin\ia64\vcvarsia64.bat'}
+
+SDK70VCSetupScripts =    { 'x86'      : r'bin\vcvars32.bat',
+                           'amd64'    : r'bin\vcvars64.bat',
+                           'x86_amd64': r'bin\vcvarsx86_amd64.bat',
+                           'x86_ia64' : r'bin\vcvarsx86_ia64.bat',
+                           'ia64'     : r'bin\vcvarsia64.bat'}
+
 # The list of support SDKs which we know how to detect.
 #
 # The first SDK found in the list is the one used by default if there
@@ -126,22 +172,56 @@ class PlatformSDK(SDKDefinition):
 #
 # If you update this list, update the documentation in Tool/mssdk.xml.
 SupportedSDKList = [
+    WindowsSDK('7.0',
+               sanity_check_file=r'bin\SetEnv.Cmd',
+               include_subdir='include',
+               lib_subdir={
+                   'x86'       : ['lib'],
+                   'x86_64'    : [r'lib\x64'],
+                   'ia64'      : [r'lib\ia64'],
+               },
+               vc_setup_scripts = SDK70VCSetupScripts,
+              ),
     WindowsSDK('6.1',
-                sanity_check_file=r'include\windows.h'),
+               sanity_check_file=r'bin\SetEnv.Cmd',
+               include_subdir='include',
+               lib_subdir={
+                   'x86'       : ['lib'],
+                   'x86_64'    : [r'lib\x64'],
+                   'ia64'      : [r'lib\ia64'],
+               },
+               vc_setup_scripts = SDK61VCSetupScripts,
+              ),
 
     WindowsSDK('6.0A',
-               sanity_check_file=r'include\windows.h'),
+               sanity_check_file=r'include\windows.h',
+               include_subdir='include',
+               lib_subdir={
+                   'x86'       : ['lib'],
+                   'x86_64'    : [r'lib\x64'],
+                   'ia64'      : [r'lib\ia64'],
+               },
+               vc_setup_scripts = preSDK61VCSetupScripts,
+              ),
 
     WindowsSDK('6.0',
-               sanity_check_file=r'bin\gacutil.exe'),
+               sanity_check_file=r'bin\gacutil.exe',
+               include_subdir='include',
+               lib_subdir='lib',
+               vc_setup_scripts = preSDK61VCSetupScripts,
+              ),
 
     PlatformSDK('2003R2',
                 sanity_check_file=r'SetEnv.Cmd',
-                uuid="D2FF9F89-8AA2-4373-8A31-C838BF4DBBE1"),
+                uuid="D2FF9F89-8AA2-4373-8A31-C838BF4DBBE1",
+                vc_setup_scripts = preSDK61VCSetupScripts,
+               ),
 
     PlatformSDK('2003R1',
                 sanity_check_file=r'SetEnv.Cmd',
-                uuid="8F9E5EF3-A9A5-491B-A889-C58EFFECE8B3"),
+                uuid="8F9E5EF3-A9A5-491B-A889-C58EFFECE8B3",
+                vc_setup_scripts = preSDK61VCSetupScripts,
+               ),
 ]
 
 SupportedSDKMap = {}
@@ -160,13 +240,14 @@ InstalledSDKMap = None
 def get_installed_sdks():
     global InstalledSDKList
     global InstalledSDKMap
+    debug('sdk.py:get_installed_sdks()')
     if InstalledSDKList is None:
         InstalledSDKList = []
         InstalledSDKMap = {}
         for sdk in SupportedSDKList:
-            debug('trying to find SDK %s' % sdk.version)
+            debug('MSCommon/sdk.py: trying to find SDK %s' % sdk.version)
             if sdk.get_sdk_dir():
-                debug('found SDK %s' % sdk.version)
+                debug('MSCommon/sdk.py:found SDK %s' % sdk.version)
                 InstalledSDKList.append(sdk)
                 InstalledSDKMap[sdk.version] = sdk
     return InstalledSDKList
@@ -181,6 +262,7 @@ SDKEnvironmentUpdates = {}
 
 def set_sdk_by_directory(env, sdk_dir):
     global SDKEnvironmentUpdates
+    debug('set_sdk_by_directory: Using dir:%s'%sdk_dir)
     try:
         env_tuple_list = SDKEnvironmentUpdates[sdk_dir]
     except KeyError:
@@ -215,7 +297,7 @@ def get_cur_sdk_dir_from_reg():
         return None
 
     try:
-        val = read_reg(_CURINSTALLED_SDK_HKEY_ROOT)
+        val = common.read_reg(_CURINSTALLED_SDK_HKEY_ROOT)
         debug("Found current sdk dir in registry: %s" % val)
     except WindowsError, e:
         debug("Did not find current sdk in registry")
@@ -227,28 +309,80 @@ def get_cur_sdk_dir_from_reg():
 
     return val
 
-
-def detect_sdk():
-    return (len(get_installed_sdks()) > 0)
-
-def set_sdk_by_version(env, mssdk):
+def get_sdk_by_version(mssdk):
     if not SupportedSDKMap.has_key(mssdk):
         msg = "SDK version %s is not supported" % repr(mssdk)
         raise SCons.Errors.UserError, msg
     get_installed_sdks()
-    sdk = InstalledSDKMap.get(mssdk)
-    if not sdk:
-        msg = "SDK version %s is not installed" % repr(mssdk)
-        raise SCons.Errors.UserError, msg
-    set_sdk_by_directory(env, sdk.get_sdk_dir())
+    return InstalledSDKMap.get(mssdk)
 
-def set_default_sdk(env, msver):
+def get_default_sdk():
     """Set up the default Platform/Windows SDK."""
-    # For MSVS < 8, use integrated windows sdk by default
-    if msver >= 8:
-        sdks = get_installed_sdks()
-        if len(sdks) > 0:
-            set_sdk_by_directory(env, sdks[0].get_sdk_dir())
+    get_installed_sdks()
+    if not InstalledSDKList:
+        return None
+    return InstalledSDKList[0]
+
+
+
+
+def mssdk_setup_env(env):
+    debug('sdk.py:mssdk_setup_env()')
+    if env.has_key('MSSDK_DIR'):
+        sdk_dir = env['MSSDK_DIR']
+        if sdk_dir is None:
+            return
+        sdk_dir = env.subst(sdk_dir)
+        debug('sdk.py:mssdk_setup_env: Using MSSDK_DIR:%s'%sdk_dir)
+    elif env.has_key('MSSDK_VERSION'):
+        sdk_version = env['MSSDK_VERSION']
+        if sdk_version is None:
+            msg = "SDK version %s is not installed" % repr(mssdk)
+            raise SCons.Errors.UserError, msg
+        sdk_version = env.subst(sdk_version)
+        mssdk = get_sdk_by_version(sdk_version)
+        sdk_dir = mssdk.get_sdk_dir()
+        debug('sdk.py:mssdk_setup_env: Using MSSDK_VERSION:%s'%sdk_dir)
+    elif env.has_key('MSVS_VERSION'):
+        msvs_version = env['MSVS_VERSION']
+        debug('sdk.py:mssdk_setup_env:Getting MSVS_VERSION from env:%s'%msvs_version)
+        if msvs_version is None:
+            debug('sdk.py:mssdk_setup_env thinks msvs_version is None')
+            return
+        msvs_version = env.subst(msvs_version)
+        import vs
+        msvs = vs.get_vs_by_version(msvs_version)
+        debug('sdk.py:mssdk_setup_env:msvs is :%s'%msvs)
+        if not msvs:
+            debug('sdk.py:mssdk_setup_env: no VS version detected, bailingout:%s'%msvs)
+            return
+        sdk_version = msvs.sdk_version
+        debug('sdk.py:msvs.sdk_version is %s'%sdk_version)
+        if not sdk_version:
+            return
+        mssdk = get_sdk_by_version(sdk_version)
+        if not mssdk:
+            mssdk = get_default_sdk()
+            if not mssdk:
+                return
+        sdk_dir = mssdk.get_sdk_dir()
+        debug('sdk.py:mssdk_setup_env: Using MSVS_VERSION:%s'%sdk_dir)
+    else:
+        mssdk = get_default_sdk()
+        if not mssdk:
+            return
+        sdk_dir = mssdk.get_sdk_dir()
+        debug('sdk.py:mssdk_setup_env: not using any env values. sdk_dir:%s'%sdk_dir)
+
+    set_sdk_by_directory(env, sdk_dir)
+
+    #print "No MSVS_VERSION: this is likely to be a bug"
+
+def mssdk_exists(version=None):
+    sdks = get_installed_sdks()
+    if version is None:
+        return len(sdks) > 0
+    return sdks.has_key(version)
 
 # Local Variables:
 # tab-width:4
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/MSCommon/vc.py b/3rdParty/SCons/scons-local/SCons/Tool/MSCommon/vc.py
new file mode 100644
index 0000000..bf2412b
--- /dev/null
+++ b/3rdParty/SCons/scons-local/SCons/Tool/MSCommon/vc.py
@@ -0,0 +1,412 @@
+#
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
+#
+# 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.
+#
+
+# TODO:
+#   * supported arch for versions: for old versions of batch file without
+#     argument, giving bogus argument cannot be detected, so we have to hardcode
+#     this here
+#   * print warning when msvc version specified but not found
+#   * find out why warning do not print
+#   * test on 64 bits XP +  VS 2005 (and VS 6 if possible)
+#   * SDK
+#   * Assembly
+__revision__ = "src/engine/SCons/Tool/MSCommon/vc.py 4761 2010/04/04 14:04:44 bdeegan"
+
+__doc__ = """Module for Visual C/C++ detection and configuration.
+"""
+import SCons.compat
+
+import string
+import os
+import platform
+
+import SCons.Warnings
+
+import common
+
+debug = common.debug
+
+import sdk
+
+get_installed_sdks = sdk.get_installed_sdks
+
+
+class VisualCException(Exception):
+    pass
+
+class UnsupportedVersion(VisualCException):
+    pass
+
+class UnsupportedArch(VisualCException):
+    pass
+
+class MissingConfiguration(VisualCException):
+    pass
+
+class NoVersionFound(VisualCException):
+    pass
+
+class BatchFileExecutionError(VisualCException):
+    pass
+
+# Dict to 'canonalize' the arch
+_ARCH_TO_CANONICAL = {
+    "x86": "x86",
+    "amd64": "amd64",
+    "i386": "x86",
+    "emt64": "amd64",
+    "x86_64": "amd64",
+    "itanium": "ia64",
+    "ia64": "ia64",
+}
+
+# Given a (host, target) tuple, return the argument for the bat file. Both host
+# and targets should be canonalized.
+_HOST_TARGET_ARCH_TO_BAT_ARCH = {
+    ("x86", "x86"): "x86",
+    ("x86", "amd64"): "x86_amd64",
+    ("amd64", "amd64"): "amd64",
+    ("amd64", "x86"): "x86",
+    ("x86", "ia64"): "x86_ia64"
+}
+
+def get_host_target(env):
+    host_platform = env.get('HOST_ARCH')
+    if not host_platform:
+        host_platform = platform.machine()
+        # TODO(2.5):  the native Python platform.machine() function returns
+        # '' on all Python versions before 2.6, after which it also uses
+        # PROCESSOR_ARCHITECTURE.
+        if not host_platform:
+            host_platform = os.environ.get('PROCESSOR_ARCHITECTURE', '')
+    target_platform = env.get('TARGET_ARCH')
+    if not target_platform:
+        target_platform = host_platform
+
+    try:
+        host = _ARCH_TO_CANONICAL[host_platform]
+    except KeyError, e:
+        msg = "Unrecognized host architecture %s"
+        raise ValueError(msg % repr(host_platform))
+
+    try:
+        target = _ARCH_TO_CANONICAL[target_platform]
+    except KeyError, e:
+        raise ValueError("Unrecognized target architecture %s" % target_platform)
+
+    return (host, target)
+
+_VCVER = ["10.0", "9.0", "9.0Exp","8.0", "8.0Exp","7.1", "7.0", "6.0"]
+
+_VCVER_TO_PRODUCT_DIR = {
+        '10.0': [
+            r'Microsoft\VisualStudio\10.0\Setup\VC\ProductDir'],
+        '9.0': [
+            r'Microsoft\VisualStudio\9.0\Setup\VC\ProductDir'],
+        '9.0Exp' : [
+            r'Microsoft\VCExpress\9.0\Setup\VC\ProductDir'],
+        '8.0': [
+            r'Microsoft\VisualStudio\8.0\Setup\VC\ProductDir'],
+        '8.0Exp': [
+            r'Microsoft\VCExpress\8.0\Setup\VC\ProductDir'],
+        '7.1': [
+            r'Microsoft\VisualStudio\7.1\Setup\VC\ProductDir'],
+        '7.0': [
+            r'Microsoft\VisualStudio\7.0\Setup\VC\ProductDir'],
+        '6.0': [
+            r'Microsoft\VisualStudio\6.0\Setup\Microsoft Visual C++\ProductDir']
+}
+        
+def msvc_version_to_maj_min(msvc_version):
+   msvc_ver_numeric = string.join(filter(lambda x: x in string.digits + ".", msvc_version), '')
+
+   t = msvc_version_numeric.split(".")
+   if not len(t) == 2:
+       raise ValueError("Unrecognized version %s" % msvc_version)
+   try:
+       maj = int(t[0])
+       min = int(t[1])
+       return maj, min
+   except ValueError, e:
+       raise ValueError("Unrecognized version %s" % msvc_version)
+
+def is_host_target_supported(host_target, msvc_version):
+    """Return True if the given (host, target) tuple is supported given the
+    msvc version.
+
+    Parameters
+    ----------
+    host_target: tuple
+        tuple of (canonalized) host-target, e.g. ("x86", "amd64") for cross
+        compilation from 32 bits windows to 64 bits.
+    msvc_version: str
+        msvc version (major.minor, e.g. 10.0)
+
+    Note
+    ----
+    This only check whether a given version *may* support the given (host,
+    target), not that the toolchain is actually present on the machine.
+    """
+    # We assume that any Visual Studio version supports x86 as a target
+    if host_target[1] != "x86":
+        maj, min = msvc_version_to_maj_min(msvc_version)
+        if maj < 8:
+            return False
+
+    return True
+
+def find_vc_pdir(msvc_version):
+    """Try to find the product directory for the given
+    version.
+
+    Note
+    ----
+    If for some reason the requested version could not be found, an
+    exception which inherits from VisualCException will be raised."""
+    root = 'Software\\'
+    if common.is_win64():
+        root = root + 'Wow6432Node\\'
+    try:
+        hkeys = _VCVER_TO_PRODUCT_DIR[msvc_version]
+    except KeyError:
+        debug("Unknown version of MSVC: %s" % msvc_version)
+        raise UnsupportedVersion("Unknown version %s" % msvc_version)
+
+    for key in hkeys:
+        key = root + key
+        try:
+            comps = common.read_reg(key)
+        except WindowsError, e:
+            debug('find_vc_dir(): no VC registry key %s' % repr(key))
+        else:
+            debug('find_vc_dir(): found VC in registry: %s' % comps)
+            if os.path.exists(comps):
+                return comps
+            else:
+                debug('find_vc_dir(): reg says dir is %s, but it does not exist. (ignoring)'\
+                          % comps)
+                raise MissingConfiguration("registry dir %s not found on the filesystem" % comps)
+    return None
+
+def find_batch_file(env,msvc_version):
+    """
+    Find the location of the batch script which should set up the compiler
+    for any TARGET_ARCH whose compilers were installed by Visual Studio/VCExpress
+    """
+    pdir = find_vc_pdir(msvc_version)
+    if pdir is None:
+        raise NoVersionFound("No version of Visual Studio found")
+        
+    debug('vc.py: find_batch_file() pdir:%s'%pdir)
+
+    # filter out e.g. "Exp" from the version name
+    msvc_ver_numeric = string.join(filter(lambda x: x in string.digits + ".", msvc_version), '')
+    vernum = float(msvc_ver_numeric)
+    if 7 <= vernum < 8:
+        pdir = os.path.join(pdir, os.pardir, "Common7", "Tools")
+        batfilename = os.path.join(pdir, "vsvars32.bat")
+    elif vernum < 7:
+        pdir = os.path.join(pdir, "Bin")
+        batfilename = os.path.join(pdir, "vcvars32.bat")
+    else: # >= 8
+        batfilename = os.path.join(pdir, "vcvarsall.bat")
+
+    if not os.path.exists(batfilename):
+        debug("Not found: %s" % batfilename)
+        batfilename = None
+    
+    installed_sdks=get_installed_sdks()
+    (host_arch,target_arch)=get_host_target(env)
+    for _sdk in installed_sdks:
+        sdk_bat_file=_sdk.get_sdk_vc_script(host_arch,target_arch)
+        sdk_bat_file_path=os.path.join(pdir,sdk_bat_file)
+        debug('vc.py:find_batch_file() sdk_bat_file_path:%s'%sdk_bat_file_path)
+        if os.path.exists(sdk_bat_file_path):
+            return (batfilename,sdk_bat_file_path)
+        else:
+            debug("vc.py:find_batch_file() not found:%s"%sdk_bat_file_path)
+    else:
+        return (batfilename,None)
+
+__INSTALLED_VCS_RUN = None
+
+def cached_get_installed_vcs():
+    global __INSTALLED_VCS_RUN
+
+    if __INSTALLED_VCS_RUN is None:
+        ret = get_installed_vcs()
+        __INSTALLED_VCS_RUN = ret
+
+    return __INSTALLED_VCS_RUN
+
+def get_installed_vcs():
+    installed_versions = []
+    for ver in _VCVER:
+        debug('trying to find VC %s' % ver)
+        try:
+            if find_vc_pdir(ver):
+                debug('found VC %s' % ver)
+                installed_versions.append(ver)
+            else:
+                debug('find_vc_pdir return None for ver %s' % ver)
+        except VisualCException, e:
+            debug('did not find VC %s: caught exception %s' % (ver, str(e)))
+    return installed_versions
+
+def reset_installed_vcs():
+    """Make it try again to find VC.  This is just for the tests."""
+    __INSTALLED_VCS_RUN = None
+
+def script_env(script, args=None):
+    stdout = common.get_output(script, args)
+    # Stupid batch files do not set return code: we take a look at the
+    # beginning of the output for an error message instead
+    olines = stdout.splitlines()
+    if olines[0].startswith("The specified configuration type is missing"):
+        raise BatchFileExecutionError("\n".join(olines[:2]))
+
+    return common.parse_output(stdout)
+
+def get_default_version(env):
+    debug('get_default_version()')
+
+    msvc_version = env.get('MSVC_VERSION')
+    msvs_version = env.get('MSVS_VERSION')
+    
+    debug('get_default_version(): msvc_version:%s msvs_version:%s'%(msvc_version,msvs_version))
+
+    if msvs_version and not msvc_version:
+        SCons.Warnings.warn(
+                SCons.Warnings.DeprecatedWarning,
+                "MSVS_VERSION is deprecated: please use MSVC_VERSION instead ")
+        return msvs_version
+    elif msvc_version and msvs_version:
+        if not msvc_version == msvs_version:
+            SCons.Warnings.warn(
+                    SCons.Warnings.VisualVersionMismatch,
+                    "Requested msvc version (%s) and msvs version (%s) do " \
+                    "not match: please use MSVC_VERSION only to request a " \
+                    "visual studio version, MSVS_VERSION is deprecated" \
+                    % (msvc_version, msvs_version))
+        return msvs_version
+    if not msvc_version:
+        installed_vcs = cached_get_installed_vcs()
+        debug('installed_vcs:%s' % installed_vcs)
+        if not installed_vcs:
+            msg = 'No installed VCs'
+            debug('msv %s\n' % repr(msg))
+            SCons.Warnings.warn(SCons.Warnings.VisualCMissingWarning, msg)
+            return None
+        msvc_version = installed_vcs[0]
+        debug('msvc_setup_env: using default installed MSVC version %s\n' % repr(msvc_version))
+
+    return msvc_version
+
+def msvc_setup_env_once(env):
+    try:
+        has_run  = env["MSVC_SETUP_RUN"]
+    except KeyError:
+        has_run = False
+
+    if not has_run:
+        msvc_setup_env(env)
+        env["MSVC_SETUP_RUN"] = True
+
+def msvc_setup_env(env):
+    debug('msvc_setup_env()')
+
+    version = get_default_version(env)
+    if version is None:
+        warn_msg = "No version of Visual Studio compiler found - C/C++ " \
+                   "compilers most likely not set correctly"
+        SCons.Warnings.warn(SCons.Warnings.VisualCMissingWarning, warn_msg)
+        return None
+    debug('msvc_setup_env: using specified MSVC version %s\n' % repr(version))
+
+    # XXX: we set-up both MSVS version for backward
+    # compatibility with the msvs tool
+    env['MSVC_VERSION'] = version
+    env['MSVS_VERSION'] = version
+    env['MSVS'] = {}
+
+    try:
+        (vc_script,sdk_script) = find_batch_file(env,version)
+        debug('vc.py:msvc_setup_env() vc_script:%s sdk_script:%s'%(vc_script,sdk_script))
+    except VisualCException, e:
+        msg = str(e)
+        debug('Caught exception while looking for batch file (%s)' % msg)
+        warn_msg = "VC version %s not installed.  " + \
+                   "C/C++ compilers are most likely not set correctly.\n" + \
+                   " Installed versions are: %s"
+        warn_msg = warn_msg % (version, cached_get_installed_vcs())
+        SCons.Warnings.warn(SCons.Warnings.VisualCMissingWarning, warn_msg)
+        return None
+    
+    debug('vc.py:msvc_setup_env() vc_script:%s sdk_script:%s'%(vc_script,sdk_script))
+    use_script = env.get('MSVC_USE_SCRIPT', True)
+    if SCons.Util.is_String(use_script):
+        debug('use_script 1 %s\n' % repr(use_script))
+        d = script_env(use_script)
+    elif use_script:
+        host_platform, target_platform = get_host_target(env)
+        host_target = (host_platform, target_platform)
+        if not is_host_target_supported(host_target, version):
+            warn_msg = "host, target = %s not supported for MSVC version %s" % \
+                (host_target, version)
+            SCons.Warnings.warn(SCons.Warnings.VisualCMissingWarning, warn_msg)
+        arg = _HOST_TARGET_ARCH_TO_BAT_ARCH[host_target]
+        debug('use_script 2 %s, args:%s\n' % (repr(vc_script), arg))
+        if vc_script:
+            try:
+                d = script_env(vc_script, args=arg)
+            except BatchFileExecutionError, e:
+                debug('use_script 3: failed running VC script %s: %s: Error:%s'%(repr(vc_script),arg,e))
+                vc_script=None
+        if not vc_script and sdk_script:
+            debug('use_script 4: trying sdk script: %s'%(sdk_script))
+            try:
+                d = script_env(sdk_script,args=[])
+            except BatchFileExecutionError,e:
+                debug('use_script 5: failed running SDK script %s: Error:%s'%(repr(sdk_script),e))
+                return None
+        elif not vc_script and not sdk_script:
+            debug('use_script 6: Neither VC script nor SDK script found')
+            return None
+
+    else:
+        debug('MSVC_USE_SCRIPT set to False')
+        warn_msg = "MSVC_USE_SCRIPT set to False, assuming environment " \
+                   "set correctly."
+        SCons.Warnings.warn(SCons.Warnings.VisualCMissingWarning, warn_msg)
+        return None
+
+    for k, v in d.items():
+        debug('vc.py:msvc_setup_env() env:%s -> %s'%(k,v))
+        env.PrependENVPath(k, v, delete_existing=True)
+
+def msvc_exists(version=None):
+    vcs = cached_get_installed_vcs()
+    if version is None:
+        return len(vcs) > 0
+    return version in vcs
+    
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/MSCommon/vs.py b/3rdParty/SCons/scons-local/SCons/Tool/MSCommon/vs.py
index 2203e20..2dce362 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/MSCommon/vs.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/MSCommon/vs.py
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/MSCommon/vs.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/MSCommon/vs.py 4761 2010/04/04 14:04:44 bdeegan"
 
 __doc__ = """Module to detect Visual Studio and/or Visual C/C++
 """
@@ -31,11 +31,14 @@ import os
 import SCons.Errors
 import SCons.Util
 
-from SCons.Tool.MSCommon.common import debug, \
-                                       read_reg, \
-                                       normalize_env, \
-                                       get_output, \
-                                       parse_output
+from common import debug, \
+                   get_output, \
+                   is_win64, \
+                   normalize_env, \
+                   parse_output, \
+                   read_reg
+
+import SCons.Tool.MSCommon.vc
 
 class VisualStudio:
     """
@@ -44,70 +47,75 @@ class VisualStudio:
     """
     def __init__(self, version, **kw):
         self.version = version
+        kw['vc_version']  = kw.get('vc_version', version)
+        kw['sdk_version'] = kw.get('sdk_version', version)
         self.__dict__.update(kw)
         self._cache = {}
 
     #
 
     def find_batch_file(self):
-        """Try to find the Visual Studio or Visual C/C++ batch file.
-
-        Return None if failed or the batch file does not exist.
-        """
-        pdir = self.get_vc_product_dir()
-        if not pdir:
-            debug('find_batch_file():  no pdir')
+        vs_dir = self.get_vs_dir()
+        if not vs_dir:
+            debug('find_executable():  no vs_dir')
             return None
-        batch_file = os.path.normpath(os.path.join(pdir, self.batch_file))
+        batch_file = os.path.join(vs_dir, self.batch_file_path)
         batch_file = os.path.normpath(batch_file)
         if not os.path.isfile(batch_file):
             debug('find_batch_file():  %s not on file system' % batch_file)
             return None
         return batch_file
 
+    def find_vs_dir_by_vc(self):
+        SCons.Tool.MSCommon.vc.get_installed_vcs()
+        dir = SCons.Tool.MSCommon.vc.find_vc_pdir(self.vc_version)
+        if not dir:
+            debug('find_vs_dir():  no installed VC %s' % self.vc_version)
+            return None
+        return dir
+        
+    def find_vs_dir_by_reg(self):
+        root = 'Software\\'
+
+        if is_win64():
+            root = root + 'Wow6432Node\\'
+        for key in self.hkeys:
+            if key=='use_dir':
+                return self.find_vs_dir_by_vc()
+            key = root + key
+            try:
+                comps = read_reg(key)
+            except WindowsError, e:
+                debug('find_vs_dir_by_reg(): no VS registry key %s' % repr(key))
+            else:
+                debug('find_vs_dir_by_reg(): found VS in registry: %s' % comps)
+                return comps
+        return None
+    
+    def find_vs_dir(self):
+        """ Can use registry or location of VC to find vs dir
+        First try to find by registry, and if that fails find via VC dir
+        """
+        
+        
+        if True:
+            vs_dir=self.find_vs_dir_by_reg()
+            return vs_dir
+        else:
+            return self.find_vs_dir_by_vc()
+
     def find_executable(self):
-        pdir = self.get_vc_product_dir()
-        if not pdir:
-            debug('find_executable():  no pdir')
+        vs_dir = self.get_vs_dir()
+        if not vs_dir:
+            debug('find_executable():  no vs_dir (%s)'%vs_dir)
             return None
-        executable = os.path.join(pdir, self.executable_path)
+        executable = os.path.join(vs_dir, self.executable_path)
         executable = os.path.normpath(executable)
         if not os.path.isfile(executable):
             debug('find_executable():  %s not on file system' % executable)
             return None
         return executable
-
-    def find_vc_product_dir(self):
-        if not SCons.Util.can_read_reg:
-            debug('find_vc_product_dir():  can not read registry')
-            return None
-        key = self.hkey_root + '\\' + self.vc_product_dir_key
-        try:
-            comps = read_reg(key)
-        except WindowsError, e:
-            debug('find_vc_product_dir():  no registry key %s' % key)
-        else:
-            if self.batch_file_dir_reg_relpath:
-                comps = os.path.join(comps, self.batch_file_dir_reg_relpath)
-                comps = os.path.normpath(comps)
-            if os.path.exists(comps):
-                return comps
-            else:
-                debug('find_vc_product_dir():  %s not on file system' % comps)
-
-        d = os.environ.get(self.common_tools_var)
-        if not d:
-            msg = 'find_vc_product_dir():  no %s variable'
-            debug(msg % self.common_tools_var)
-            return None
-        if not os.path.isdir(d):
-            debug('find_vc_product_dir():  %s not on file system' % d)
-            return None
-        if self.batch_file_dir_env_relpath:
-            d = os.path.join(d, self.batch_file_dir_env_relpath)
-            d = os.path.normpath(d)
-        return d
-
+    
     #
 
     def get_batch_file(self):
@@ -120,12 +128,22 @@ class VisualStudio:
 
     def get_executable(self):
         try:
+            debug('get_executable using cache:%s'%self._cache['executable'])
             return self._cache['executable']
         except KeyError:
             executable = self.find_executable()
             self._cache['executable'] = executable
+            debug('get_executable not in cache:%s'%executable)
             return executable
 
+    def get_vs_dir(self):
+        try:
+            return self._cache['vs_dir']
+        except KeyError:
+            vs_dir = self.find_vs_dir()
+            self._cache['vs_dir'] = vs_dir
+            return vs_dir
+
     def get_supported_arch(self):
         try:
             return self._cache['supported_arch']
@@ -135,14 +153,6 @@ class VisualStudio:
             self._cache['supported_arch'] = self.supported_arch
             return self.supported_arch
 
-    def get_vc_product_dir(self):
-        try:
-            return self._cache['vc_product_dir']
-        except KeyError:
-            vc_product_dir = self.find_vc_product_dir()
-            self._cache['vc_product_dir'] = vc_product_dir
-            return vc_product_dir
-
     def reset(self):
         self._cache = {}
 
@@ -197,10 +207,6 @@ SupportedVSList = [
     #VisualStudio('TBD',
     #             hkey_root=r'TBD',
     #             common_tools_var='TBD',
-    #             batch_file='TBD',
-    #             vc_product_dir_key=r'TBD',
-    #             batch_file_dir_reg_relpath=None,
-    #             batch_file_dir_env_relpath=r'TBD',
     #             executable_path=r'TBD',
     #             default_dirname='TBD',
     #),
@@ -209,13 +215,11 @@ SupportedVSList = [
     # The batch file we look for is in the VC directory,
     # so the devenv.com executable is up in ..\..\Common7\IDE.
     VisualStudio('9.0',
-                 hkey_root=r'Software\Microsoft\VisualStudio\9.0',
+                 sdk_version='6.1',
+                 hkeys=[r'Microsoft\VisualStudio\9.0\Setup\VS\ProductDir'],
                  common_tools_var='VS90COMNTOOLS',
-                 batch_file='vcvarsall.bat',
-                 vc_product_dir_key=r'Setup\VC\ProductDir',
-                 batch_file_dir_reg_relpath=None,
-                 batch_file_dir_env_relpath=r'..\..\VC',
-                 executable_path=r'..\Common7\IDE\devenv.com',
+                 executable_path=r'Common7\IDE\devenv.com',
+                 batch_file_path=r'Common7\Tools\vsvars32.bat',
                  default_dirname='Microsoft Visual Studio 9',
                  supported_arch=['x86', 'amd64'],
     ),
@@ -224,13 +228,12 @@ SupportedVSList = [
     # The batch file we look for is in the VC directory,
     # so the VCExpress.exe executable is up in ..\..\Common7\IDE.
     VisualStudio('9.0Exp',
-                 hkey_root=r'Software\Microsoft\VisualStudio\9.0',
+                 vc_version='9.0',
+                 sdk_version='6.1',
+                 hkeys=[r'Microsoft\VCExpress\9.0\Setup\VS\ProductDir'],
                  common_tools_var='VS90COMNTOOLS',
-                 batch_file='vcvarsall.bat',
-                 vc_product_dir_key=r'Setup\VC\ProductDir',
-                 batch_file_dir_reg_relpath=None,
-                 batch_file_dir_env_relpath=r'..\..\VC',
-                 executable_path=r'..\Common7\IDE\VCExpress.exe',
+                 executable_path=r'Common7\IDE\VCExpress.exe',
+                 batch_file_path=r'Common7\Tools\vsvars32.bat',
                  default_dirname='Microsoft Visual Studio 9',
                  supported_arch=['x86'],
     ),
@@ -239,13 +242,11 @@ SupportedVSList = [
     # The batch file we look for is in the VC directory,
     # so the devenv.com executable is up in ..\..\Common7\IDE.
     VisualStudio('8.0',
-                 hkey_root=r'Software\Microsoft\VisualStudio\8.0',
+                 sdk_version='6.0A',
+                 hkeys=[r'Microsoft\VisualStudio\8.0\Setup\VS\ProductDir'],
                  common_tools_var='VS80COMNTOOLS',
-                 batch_file='vcvarsall.bat',
-                 vc_product_dir_key=r'Setup\VC\ProductDir',
-                 batch_file_dir_reg_relpath=None,
-                 batch_file_dir_env_relpath=r'..\..\VC',
-                 executable_path=r'..\Common7\IDE\devenv.com',
+                 executable_path=r'Common7\IDE\devenv.com',
+                 batch_file_path=r'Common7\Tools\vsvars32.bat',
                  default_dirname='Microsoft Visual Studio 8',
                  supported_arch=['x86', 'amd64'],
     ),
@@ -254,15 +255,12 @@ SupportedVSList = [
     # The batch file we look for is in the VC directory,
     # so the VCExpress.exe executable is up in ..\..\Common7\IDE.
     VisualStudio('8.0Exp',
-                 hkey_root=r'Software\Microsoft\VCExpress\8.0',
+                 vc_version='8.0Exp',
+                 sdk_version='6.0A',
+                 hkeys=[r'Microsoft\VCExpress\8.0\Setup\VS\ProductDir'],
                  common_tools_var='VS80COMNTOOLS',
-                 batch_file='vcvarsall.bat',
-                 vc_product_dir_key=r'Setup\VC\ProductDir',
-                 batch_file_dir_reg_relpath=None,
-                 batch_file_dir_env_relpath=r'..\..\VC',
-                 # The batch file is in the VC directory, so
-                 # so the devenv.com executable is next door in ..\IDE.
-                 executable_path=r'..\Common7\IDE\VCExpress.exe',
+                 executable_path=r'Common7\IDE\VCExpress.exe',
+                 batch_file_path=r'Common7\Tools\vsvars32.bat',
                  default_dirname='Microsoft Visual Studio 8',
                  supported_arch=['x86'],
     ),
@@ -271,14 +269,12 @@ SupportedVSList = [
     # The batch file we look for is in the Common7\Tools directory,
     # so the devenv.com executable is next door in ..\IDE.
     VisualStudio('7.1',
-                 hkey_root=r'Software\Microsoft\VisualStudio\7.1',
+                 sdk_version='6.0',
+                 hkeys=[r'Microsoft\VisualStudio\7.1\Setup\VS\ProductDir'],
                  common_tools_var='VS71COMNTOOLS',
-                 batch_file='vsvars32.bat',
-                 vc_product_dir_key=r'Setup\VC\ProductDir',
-                 batch_file_dir_reg_relpath=r'..\Common7\Tools',
-                 batch_file_dir_env_relpath=None,
-                 executable_path=r'..\IDE\devenv.com',
-                 default_dirname='Microsoft Visual Studio .NET',
+                 executable_path=r'Common7\IDE\devenv.com',
+                 batch_file_path=r'Common7\Tools\vsvars32.bat',
+                 default_dirname='Microsoft Visual Studio .NET 2003',
                  supported_arch=['x86'],
     ),
 
@@ -286,26 +282,23 @@ SupportedVSList = [
     # The batch file we look for is in the Common7\Tools directory,
     # so the devenv.com executable is next door in ..\IDE.
     VisualStudio('7.0',
-                 hkey_root=r'Software\Microsoft\VisualStudio\7.0',
+                 sdk_version='2003R2',
+                 hkeys=[r'Microsoft\VisualStudio\7.0\Setup\VS\ProductDir'],
                  common_tools_var='VS70COMNTOOLS',
-                 batch_file='vsvars32.bat',
-                 vc_product_dir_key=r'Setup\VC\ProductDir',
-                 batch_file_dir_reg_relpath=r'..\Common7\Tools',
-                 batch_file_dir_env_relpath=None,
-                 executable_path=r'..\IDE\devenv.com',
+                 executable_path=r'IDE\devenv.com',
+                 batch_file_path=r'Common7\Tools\vsvars32.bat',
                  default_dirname='Microsoft Visual Studio .NET',
                  supported_arch=['x86'],
     ),
 
     # Visual Studio 6.0
     VisualStudio('6.0',
-                 hkey_root=r'Software\Microsoft\VisualStudio\6.0',
+                 sdk_version='2003R1',
+                 hkeys=[r'Microsoft\VisualStudio\6.0\Setup\Microsoft Visual Studio\ProductDir',
+                        'use_dir'],
                  common_tools_var='VS60COMNTOOLS',
-                 batch_file='vcvars32.bat',
-                 vc_product_dir_key='Setup\Microsoft Visual C++\ProductDir',
-                 batch_file_dir_reg_relpath='Bin',
-                 batch_file_dir_env_relpath=None,
                  executable_path=r'Common\MSDev98\Bin\MSDEV.COM',
+                 batch_file_path=r'Common7\Tools\vsvars32.bat',
                  default_dirname='Microsoft Visual Studio',
                  supported_arch=['x86'],
     ),
@@ -323,7 +316,7 @@ for vs in SupportedVSList:
 # requested, and cache it.
 
 InstalledVSList = None
-InstalledVSMap = None
+InstalledVSMap  = None
 
 def get_installed_visual_studios():
     global InstalledVSList
@@ -343,10 +336,14 @@ def reset_installed_visual_studios():
     global InstalledVSList
     global InstalledVSMap
     InstalledVSList = None
-    InstalledVSMap = None
+    InstalledVSMap  = None
     for vs in SupportedVSList:
         vs.reset()
-
+        
+    # Need to clear installed VC's as well as they are used in finding
+    # installed VS's
+    SCons.Tool.MSCommon.vc.reset_installed_vcs()
+        
 
 # We may be asked to update multiple construction environments with
 # SDK information.  When doing this, we check on-disk for whether
@@ -380,15 +377,21 @@ def reset_installed_visual_studios():
 #    for variable, directory in env_tuple_list:
 #        env.PrependENVPath(variable, directory)
 
-def detect_msvs():
+def msvs_exists():
     return (len(get_installed_visual_studios()) > 0)
 
 def get_vs_by_version(msvs):
+    global InstalledVSMap
+    global SupportedVSMap
+
+    debug('vs.py:get_vs_by_version()')
     if not SupportedVSMap.has_key(msvs):
         msg = "Visual Studio version %s is not supported" % repr(msvs)
         raise SCons.Errors.UserError, msg
     get_installed_visual_studios()
     vs = InstalledVSMap.get(msvs)
+    debug('InstalledVSMap:%s'%InstalledVSMap)
+    debug('vs.py:get_vs_by_version: found vs:%s'%vs)
     # Some check like this would let us provide a useful error message
     # if they try to set a Visual Studio version that's not installed.
     # However, we also want to be able to run tests (like the unit
@@ -456,10 +459,11 @@ def merge_default_version(env):
     version = get_default_version(env)
     arch = get_default_arch(env)
 
+def msvs_setup_env(env):
+    batfilename = msvs.get_batch_file()
     msvs = get_vs_by_version(version)
     if msvs is None:
         return
-    batfilename = msvs.get_batch_file()
 
     # XXX: I think this is broken. This will silently set a bogus tool instead
     # of failing, but there is no other way with the current scons tool
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/Perforce.py b/3rdParty/SCons/scons-local/SCons/Tool/Perforce.py
index 2dbdbbb..0b5124e 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/Perforce.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/Perforce.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/Perforce.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/Perforce.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import os
 
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/PharLapCommon.py b/3rdParty/SCons/scons-local/SCons/Tool/PharLapCommon.py
index 1d7779e..f2e0e62 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/PharLapCommon.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/PharLapCommon.py
@@ -7,7 +7,7 @@ Phar Lap ETS tool chain.  Right now, this is linkloc and
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -29,7 +29,7 @@ Phar Lap ETS tool chain.  Right now, this is linkloc and
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/PharLapCommon.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/PharLapCommon.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import os
 import os.path
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/RCS.py b/3rdParty/SCons/scons-local/SCons/Tool/RCS.py
index 96ee313..3030d85 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/RCS.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/RCS.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/RCS.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/RCS.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Action
 import SCons.Builder
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/SCCS.py b/3rdParty/SCons/scons-local/SCons/Tool/SCCS.py
index 7baa34c..db7f9b5 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/SCCS.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/SCCS.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/SCCS.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/SCCS.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Action
 import SCons.Builder
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/Subversion.py b/3rdParty/SCons/scons-local/SCons/Tool/Subversion.py
index 063bf8d..0c036a9 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/Subversion.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/Subversion.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/Subversion.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/Subversion.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import os.path
 
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/__init__.py b/3rdParty/SCons/scons-local/SCons/Tool/__init__.py
index 5b31300..c62c06b 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/__init__.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/__init__.py
@@ -14,7 +14,7 @@ tool definition.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -36,7 +36,7 @@ tool definition.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/__init__.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/__init__.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import imp
 import sys
@@ -550,6 +550,7 @@ def FindAllTools(tools, env):
 
 def tool_list(platform, env):
 
+    other_plat_tools=[]
     # XXX this logic about what tool to prefer on which platform
     #     should be moved into either the platform files or
     #     the tool files themselves.
@@ -563,14 +564,15 @@ def tool_list(platform, env):
         assemblers = ['masm', 'nasm', 'gas', '386asm' ]
         fortran_compilers = ['gfortran', 'g77', 'ifl', 'cvf', 'f95', 'f90', 'fortran']
         ars = ['mslib', 'ar', 'tlib']
+        other_plat_tools=['msvs','midl']
     elif str(platform) == 'os2':
         "prefer IBM tools on OS/2"
-        linkers = ['ilink', 'gnulink', 'mslink']
-        c_compilers = ['icc', 'gcc', 'msvc', 'cc']
-        cxx_compilers = ['icc', 'g++', 'msvc', 'c++']
-        assemblers = ['nasm', 'masm', 'gas']
+        linkers = ['ilink', 'gnulink', ]#'mslink']
+        c_compilers = ['icc', 'gcc',]# 'msvc', 'cc']
+        cxx_compilers = ['icc', 'g++',]# 'msvc', 'c++']
+        assemblers = ['nasm',]# 'masm', 'gas']
         fortran_compilers = ['ifl', 'g77']
-        ars = ['ar', 'mslib']
+        ars = ['ar',]# 'mslib']
     elif str(platform) == 'irix':
         "prefer MIPSPro on IRIX"
         linkers = ['sgilink', 'gnulink']
@@ -650,14 +652,14 @@ def tool_list(platform, env):
                                 'dvipdf', 'dvips', 'gs',
                                 'jar', 'javac', 'javah',
                                 'latex', 'lex',
-                                'm4', 'midl', 'msvs',
+                                'm4', #'midl', 'msvs',
                                 'pdflatex', 'pdftex', 'Perforce',
                                 'RCS', 'rmic', 'rpcgen',
                                 'SCCS',
                                 # 'Subversion',
                                 'swig',
                                 'tar', 'tex',
-                                'yacc', 'zip', 'rpm', 'wix'],
+                                'yacc', 'zip', 'rpm', 'wix']+other_plat_tools,
                                env)
 
     tools = ([linker, c_compiler, cxx_compiler,
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/aixc++.py b/3rdParty/SCons/scons-local/SCons/Tool/aixc++.py
index e22f736..92f5d37 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/aixc++.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/aixc++.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/aixc++.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/aixc++.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import os.path
 
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/aixcc.py b/3rdParty/SCons/scons-local/SCons/Tool/aixcc.py
index dccb926..f44ca07 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/aixcc.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/aixcc.py
@@ -8,7 +8,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/aixcc.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/aixcc.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import os.path
 
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/aixf77.py b/3rdParty/SCons/scons-local/SCons/Tool/aixf77.py
index 8bb022a..349dae4 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/aixf77.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/aixf77.py
@@ -8,7 +8,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/aixf77.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/aixf77.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import os.path
 
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/aixlink.py b/3rdParty/SCons/scons-local/SCons/Tool/aixlink.py
index 7f96c4a..128b174 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/aixlink.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/aixlink.py
@@ -8,7 +8,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/aixlink.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/aixlink.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import os
 import os.path
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/applelink.py b/3rdParty/SCons/scons-local/SCons/Tool/applelink.py
index 826b119..9b1e76a 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/applelink.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/applelink.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/applelink.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/applelink.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Util
 
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/ar.py b/3rdParty/SCons/scons-local/SCons/Tool/ar.py
index fbff55c..078a93a 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/ar.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/ar.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/ar.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/ar.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Defaults
 import SCons.Tool
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/as.py b/3rdParty/SCons/scons-local/SCons/Tool/as.py
index 635df6d..cbc8b67 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/as.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/as.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/as.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/as.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Defaults
 import SCons.Tool
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/bcc32.py b/3rdParty/SCons/scons-local/SCons/Tool/bcc32.py
index e92b654..674afc8 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/bcc32.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/bcc32.py
@@ -5,7 +5,7 @@ XXX
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ XXX
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/bcc32.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/bcc32.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import os
 import os.path
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/c++.py b/3rdParty/SCons/scons-local/SCons/Tool/c++.py
index fabcbd7..c3ee9ff 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/c++.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/c++.py
@@ -8,7 +8,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/c++.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/c++.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import os.path
 
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/cc.py b/3rdParty/SCons/scons-local/SCons/Tool/cc.py
index 82d4565..0166c54 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/cc.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/cc.py
@@ -8,7 +8,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/cc.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/cc.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Tool
 import SCons.Defaults
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/cvf.py b/3rdParty/SCons/scons-local/SCons/Tool/cvf.py
index e743654..4bdca4e 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/cvf.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/cvf.py
@@ -5,7 +5,7 @@ Tool-specific initialization for the Compaq Visual Fortran compiler.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ Tool-specific initialization for the Compaq Visual Fortran compiler.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/cvf.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/cvf.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import fortran
 
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/default.py b/3rdParty/SCons/scons-local/SCons/Tool/default.py
index a7df8aa..36eb46a 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/default.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/default.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/default.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/default.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Tool
 
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/dmd.py b/3rdParty/SCons/scons-local/SCons/Tool/dmd.py
index 1e67822..cbd701f 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/dmd.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/dmd.py
@@ -32,7 +32,7 @@ Lib tool variables:
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -54,7 +54,7 @@ Lib tool variables:
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/dmd.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/dmd.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import os
 import string
@@ -200,7 +200,7 @@ def generate(env):
                         libs = env['LIBS']
                     except KeyError:
                         libs = []
-                    if 'phobos' not in libs:
+                    if 'phobos' not in libs and 'gphobos' not in libs:
                         if dc is 'dmd':
                             env.Append(LIBS = ['phobos'])
                         elif dc is 'gdmd':
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/dvi.py b/3rdParty/SCons/scons-local/SCons/Tool/dvi.py
index 8d67697..1d66c50 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/dvi.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/dvi.py
@@ -5,7 +5,7 @@ Common DVI Builder definition for various other Tool modules that use it.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ Common DVI Builder definition for various other Tool modules that use it.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/dvi.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/dvi.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Builder
 import SCons.Tool
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/dvipdf.py b/3rdParty/SCons/scons-local/SCons/Tool/dvipdf.py
index 1fbf4b3..40bb410 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/dvipdf.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/dvipdf.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/dvipdf.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/dvipdf.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Action
 import SCons.Defaults
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/dvips.py b/3rdParty/SCons/scons-local/SCons/Tool/dvips.py
index 7242622..5e2710a 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/dvips.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/dvips.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/dvips.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/dvips.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Action
 import SCons.Builder
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/f77.py b/3rdParty/SCons/scons-local/SCons/Tool/f77.py
index e9299bc..d8f3283 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/f77.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/f77.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/f77.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/f77.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Defaults
 import SCons.Scanner.Fortran
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/f90.py b/3rdParty/SCons/scons-local/SCons/Tool/f90.py
index 58ccc6b..014a078 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/f90.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/f90.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/f90.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/f90.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Defaults
 import SCons.Scanner.Fortran
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/f95.py b/3rdParty/SCons/scons-local/SCons/Tool/f95.py
index 1097212..dc58b17 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/f95.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/f95.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/f95.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/f95.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Defaults
 import SCons.Tool
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/filesystem.py b/3rdParty/SCons/scons-local/SCons/Tool/filesystem.py
index 0c34337..1131595 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/filesystem.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/filesystem.py
@@ -8,7 +8,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/filesystem.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/filesystem.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons
 from SCons.Tool.install import copyFunc
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/fortran.py b/3rdParty/SCons/scons-local/SCons/Tool/fortran.py
index 83dc43a..6c2e050 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/fortran.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/fortran.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/fortran.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/fortran.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import re
 import string
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/g++.py b/3rdParty/SCons/scons-local/SCons/Tool/g++.py
index d21643b..57c7f0e 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/g++.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/g++.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/g++.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/g++.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import os.path
 import re
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/g77.py b/3rdParty/SCons/scons-local/SCons/Tool/g77.py
index 84b0ed9..be3da07 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/g77.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/g77.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/g77.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/g77.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Util
 from SCons.Tool.FortranCommon import add_all_to_env, add_f77_to_env
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/gas.py b/3rdParty/SCons/scons-local/SCons/Tool/gas.py
index 997690f..02d5f31 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/gas.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/gas.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/gas.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/gas.py 4761 2010/04/04 14:04:44 bdeegan"
 
 as_module = __import__('as', globals(), locals(), [])
 
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/gcc.py b/3rdParty/SCons/scons-local/SCons/Tool/gcc.py
index 90dd4d0..9fbb317 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/gcc.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/gcc.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/gcc.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/gcc.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import cc
 import os
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/gfortran.py b/3rdParty/SCons/scons-local/SCons/Tool/gfortran.py
index 0a67b4c..d10bb39 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/gfortran.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/gfortran.py
@@ -10,7 +10,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -32,7 +32,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/gfortran.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/gfortran.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Util
 
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/gnulink.py b/3rdParty/SCons/scons-local/SCons/Tool/gnulink.py
index ca9672e..4329a2b 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/gnulink.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/gnulink.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/gnulink.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/gnulink.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Util
 
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/gs.py b/3rdParty/SCons/scons-local/SCons/Tool/gs.py
index 28b14f3..3038a32 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/gs.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/gs.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/gs.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/gs.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Action
 import SCons.Platform
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/hpc++.py b/3rdParty/SCons/scons-local/SCons/Tool/hpc++.py
index 0754611..5faf492 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/hpc++.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/hpc++.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/hpc++.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/hpc++.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import os.path
 import string
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/hpcc.py b/3rdParty/SCons/scons-local/SCons/Tool/hpcc.py
index 2762015..7d3b1c1 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/hpcc.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/hpcc.py
@@ -8,7 +8,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/hpcc.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/hpcc.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Util
 
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/hplink.py b/3rdParty/SCons/scons-local/SCons/Tool/hplink.py
index f47a436..17acfc1 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/hplink.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/hplink.py
@@ -8,7 +8,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/hplink.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/hplink.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import os
 import os.path
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/icc.py b/3rdParty/SCons/scons-local/SCons/Tool/icc.py
index e2a7388..493497f 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/icc.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/icc.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/icc.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/icc.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import cc
 
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/icl.py b/3rdParty/SCons/scons-local/SCons/Tool/icl.py
index afead06..2463ceb 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/icl.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/icl.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/icl.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/icl.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Tool.intelc
 
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/ifl.py b/3rdParty/SCons/scons-local/SCons/Tool/ifl.py
index f728ed5..a5b0dd0 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/ifl.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/ifl.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/ifl.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/ifl.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Defaults
 from SCons.Scanner.Fortran import FortranScan
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/ifort.py b/3rdParty/SCons/scons-local/SCons/Tool/ifort.py
index 2ef55f3..cbe0931 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/ifort.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/ifort.py
@@ -10,7 +10,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -32,7 +32,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/ifort.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/ifort.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import string
 
@@ -65,7 +65,8 @@ def generate(env):
     for dialect in ['F77', 'F90', 'FORTRAN', 'F95']:
         env['%s' % dialect] = fc
         env['SH%s' % dialect] = '$%s' % dialect
-        env['SH%sFLAGS' % dialect] = SCons.Util.CLVar('$%sFLAGS -fPIC' % dialect)
+        if env['PLATFORM'] == 'posix':
+            env['SH%sFLAGS' % dialect] = SCons.Util.CLVar('$%sFLAGS -fPIC' % dialect)
 
     if env['PLATFORM'] == 'win32':
         # On Windows, the ifort compiler specifies the object on the
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/ilink.py b/3rdParty/SCons/scons-local/SCons/Tool/ilink.py
index 94a6f63..dd6cc90 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/ilink.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/ilink.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/ilink.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/ilink.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Defaults
 import SCons.Tool
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/ilink32.py b/3rdParty/SCons/scons-local/SCons/Tool/ilink32.py
index 474649d..ca49e88 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/ilink32.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/ilink32.py
@@ -5,7 +5,7 @@ XXX
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ XXX
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/ilink32.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/ilink32.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Tool
 import SCons.Tool.bcc32
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/install.py b/3rdParty/SCons/scons-local/SCons/Tool/install.py
index 9596db1..6ae75af 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/install.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/install.py
@@ -8,7 +8,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/install.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/install.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import os
 import shutil
@@ -86,7 +86,7 @@ def installFunc(target, source, env):
 def stringFunc(target, source, env):
     installstr = env.get('INSTALLSTR')
     if installstr:
-        return env.subst_target_source(installstr, 1, target, source)
+        return env.subst_target_source(installstr, 0, target, source)
     target = str(target[0])
     source = str(source[0])
     if os.path.isdir(source):
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/intelc.py b/3rdParty/SCons/scons-local/SCons/Tool/intelc.py
index 3ced16a..1326a5b 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/intelc.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/intelc.py
@@ -10,7 +10,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -32,7 +32,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/intelc.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/intelc.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import math, sys, os.path, glob, string, re
 
@@ -259,7 +259,9 @@ def get_intel_compiler_top(version, abi):
         if not SCons.Util.can_read_reg:
             raise NoRegistryModuleError, "No Windows registry module was found"
         top = get_intel_registry_value('ProductDir', version, abi)
-        if not os.path.exists(os.path.join(top, "Bin", "icl.exe")):
+        # pre-11, icl was in Bin.  11 and later, it's in Bin/<abi> apparently.
+        if not os.path.exists(os.path.join(top, "Bin", "icl.exe")) \
+              and not os.path.exists(os.path.join(top, "Bin", abi, "icl.exe")):
             raise MissingDirError, \
                   "Can't find Intel compiler in %s"%(top)
     elif is_mac or is_linux:
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/ipkg.py b/3rdParty/SCons/scons-local/SCons/Tool/ipkg.py
new file mode 100644
index 0000000..746734c
--- /dev/null
+++ b/3rdParty/SCons/scons-local/SCons/Tool/ipkg.py
@@ -0,0 +1,71 @@
+"""SCons.Tool.ipkg
+
+Tool-specific initialization for ipkg.
+
+There normally shouldn't be any need to import this module directly.
+It will usually be imported through the generic SCons.Tool.Tool()
+selection method.
+
+The ipkg tool calls the ipkg-build. Its only argument should be the 
+packages fake_root.
+"""
+
+#
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
+#
+# 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/Tool/ipkg.py 4761 2010/04/04 14:04:44 bdeegan"
+
+import os
+import string
+
+import SCons.Builder
+
+def generate(env):
+    """Add Builders and construction variables for ipkg to an Environment."""
+    try:
+        bld = env['BUILDERS']['Ipkg']
+    except KeyError:
+        bld = SCons.Builder.Builder( action  = '$IPKGCOM',
+                                     suffix  = '$IPKGSUFFIX',
+                                     source_scanner = None,
+                                     target_scanner = None)
+        env['BUILDERS']['Ipkg'] = bld
+
+    env['IPKG']       = 'ipkg-build'
+    env['IPKGCOM']    = '$IPKG $IPKGFLAGS ${SOURCE}'
+    # TODO(1.5)
+    #env['IPKGUSER']   = os.popen('id -un').read().strip()
+    #env['IPKGGROUP']  = os.popen('id -gn').read().strip()
+    env['IPKGUSER']   = string.strip(os.popen('id -un').read())
+    env['IPKGGROUP']  = string.strip(os.popen('id -gn').read())
+    env['IPKGFLAGS']  = SCons.Util.CLVar('-o $IPKGUSER -g $IPKGGROUP')
+    env['IPKGSUFFIX'] = '.ipk'
+
+def exists(env):
+    return env.Detect('ipkg-build')
+
+# Local Variables:
+# tab-width:4
+# indent-tabs-mode:nil
+# End:
+# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/jar.py b/3rdParty/SCons/scons-local/SCons/Tool/jar.py
index ddd5f66..3079a73 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/jar.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/jar.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/jar.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/jar.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Subst
 import SCons.Util
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/javac.py b/3rdParty/SCons/scons-local/SCons/Tool/javac.py
index f528ca2..596b3d0 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/javac.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/javac.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/javac.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/javac.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import os
 import os.path
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/javah.py b/3rdParty/SCons/scons-local/SCons/Tool/javah.py
index dc18a08..bc26ecf 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/javah.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/javah.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/javah.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/javah.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import os.path
 import string
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/latex.py b/3rdParty/SCons/scons-local/SCons/Tool/latex.py
index 310f1ab..cabb875 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/latex.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/latex.py
@@ -1,6 +1,7 @@
 """SCons.Tool.latex
 
 Tool-specific initialization for LaTeX.
+Generates .dvi files from .latex or .ltx files
 
 There normally shouldn't be any need to import this module directly.
 It will usually be imported through the generic SCons.Tool.Tool()
@@ -9,7 +10,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +32,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/latex.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/latex.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Action
 import SCons.Defaults
@@ -40,10 +41,10 @@ import SCons.Util
 import SCons.Tool
 import SCons.Tool.tex
 
-LaTeXAction = None
-
 def LaTeXAuxFunction(target = None, source= None, env=None):
-    result = SCons.Tool.tex.InternalLaTeXAuxAction( LaTeXAction, target, source, env )
+    result = SCons.Tool.tex.InternalLaTeXAuxAction( SCons.Tool.tex.LaTeXAction, target, source, env )
+    if result != 0:
+        print env['LATEX']," returned an error, check the log file"
     return result
 
 LaTeXAuxAction = SCons.Action.Action(LaTeXAuxFunction,
@@ -51,9 +52,8 @@ LaTeXAuxAction = SCons.Action.Action(LaTeXAuxFunction,
 
 def generate(env):
     """Add Builders and construction variables for LaTeX to an Environment."""
-    global LaTeXAction
-    if LaTeXAction is None:
-        LaTeXAction = SCons.Action.Action('$LATEXCOM', '$LATEXCOMSTR')
+
+    env.AppendUnique(LATEXSUFFIXES=SCons.Tool.LaTeXSuffixes)
 
     import dvi
     dvi.generate(env)
@@ -67,10 +67,7 @@ def generate(env):
     bld.add_emitter('.ltx', SCons.Tool.tex.tex_eps_emitter)
     bld.add_emitter('.latex', SCons.Tool.tex.tex_eps_emitter)
 
-    env['LATEX']        = 'latex'
-    env['LATEXFLAGS']   = SCons.Util.CLVar('-interaction=nonstopmode')
-    env['LATEXCOM']     = 'cd ${TARGET.dir} && $LATEX $LATEXFLAGS ${SOURCE.file}'
-    env['LATEXRETRIES'] = 3
+    SCons.Tool.tex.generate_common(env)
 
 def exists(env):
     return env.Detect('latex')
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/lex.py b/3rdParty/SCons/scons-local/SCons/Tool/lex.py
index 656d5a6..c751adf 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/lex.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/lex.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/lex.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/lex.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import os.path
 
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/link.py b/3rdParty/SCons/scons-local/SCons/Tool/link.py
index 8192637..32a47eb 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/link.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/link.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/link.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/link.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Defaults
 import SCons.Tool
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/linkloc.py b/3rdParty/SCons/scons-local/SCons/Tool/linkloc.py
index 7fd3a3b..d0718d1 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/linkloc.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/linkloc.py
@@ -10,7 +10,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -32,7 +32,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/linkloc.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/linkloc.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import os.path
 import re
@@ -43,7 +43,7 @@ import SCons.Errors
 import SCons.Tool
 import SCons.Util
 
-from SCons.Tool.MSCommon import detect_msvs, merge_default_version
+from SCons.Tool.MSCommon import msvs_exists, merge_default_version
 from SCons.Tool.PharLapCommon import addPharLapPaths
 
 _re_linker_command = re.compile(r'(\s)@\s*([^\s]+)')
@@ -100,7 +100,7 @@ def generate(env):
     addPharLapPaths(env)
 
 def exists(env):
-    if detect_msvs():
+    if msvs_exists():
         return env.Detect('linkloc')
     else:
         return 0
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/m4.py b/3rdParty/SCons/scons-local/SCons/Tool/m4.py
index 1ce3eac..4f7c85e 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/m4.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/m4.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/m4.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/m4.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Action
 import SCons.Builder
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/masm.py b/3rdParty/SCons/scons-local/SCons/Tool/masm.py
index b22a514..174d66f 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/masm.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/masm.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/masm.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/masm.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Defaults
 import SCons.Tool
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/midl.py b/3rdParty/SCons/scons-local/SCons/Tool/midl.py
index 4c69358..294f107 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/midl.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/midl.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/midl.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/midl.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import string
 
@@ -41,7 +41,7 @@ import SCons.Defaults
 import SCons.Scanner.IDL
 import SCons.Util
 
-from MSCommon import detect_msvs
+from MSCommon import msvc_exists
 
 def midl_emitter(target, source, env):
     """Produces a list of outputs from the MIDL compiler"""
@@ -81,7 +81,7 @@ def generate(env):
     env['BUILDERS']['TypeLibrary'] = midl_builder
 
 def exists(env):
-    return detect_msvs()
+    return msvc_exists()
 
 # Local Variables:
 # tab-width:4
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/mingw.py b/3rdParty/SCons/scons-local/SCons/Tool/mingw.py
index aab45bb..bbdbb0f 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/mingw.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/mingw.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/mingw.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/mingw.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import os
 import os.path
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/mslib.py b/3rdParty/SCons/scons-local/SCons/Tool/mslib.py
index f76ac9d..26a54b9 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/mslib.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/mslib.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/mslib.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/mslib.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Defaults
 import SCons.Tool
@@ -39,14 +39,14 @@ import SCons.Tool.msvs
 import SCons.Tool.msvc
 import SCons.Util
 
-from MSCommon import detect_msvs, merge_default_version
+from MSCommon import msvc_exists, msvc_setup_env_once
 
 def generate(env):
     """Add Builders and construction variables for lib to an Environment."""
     SCons.Tool.createStaticLibBuilder(env)
 
-    # Set-up ms tools paths for default version
-    merge_default_version(env)
+    # Set-up ms tools paths
+    msvc_setup_env_once(env)
 
     env['AR']          = 'lib'
     env['ARFLAGS']     = SCons.Util.CLVar('/nologo')
@@ -55,7 +55,7 @@ def generate(env):
     env['LIBSUFFIX']   = '.lib'
 
 def exists(env):
-    return detect_msvs()
+    return msvc_exists()
 
 # Local Variables:
 # tab-width:4
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/mslink.py b/3rdParty/SCons/scons-local/SCons/Tool/mslink.py
index 1bad3c9..2e42919 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/mslink.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/mslink.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/mslink.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/mslink.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import os.path
 
@@ -44,7 +44,7 @@ import SCons.Tool.msvc
 import SCons.Tool.msvs
 import SCons.Util
 
-from MSCommon import merge_default_version, detect_msvs
+from MSCommon import msvc_setup_env_once, msvc_exists
 
 def pdbGenerator(env, target, source, for_signature):
     try:
@@ -238,8 +238,9 @@ def generate(env):
     env['REGSVRFLAGS'] = '/s '
     env['REGSVRCOM'] = '$REGSVR $REGSVRFLAGS ${TARGET.windows}'
 
-    # Set-up ms tools paths for default version
-    merge_default_version(env)
+    # Set-up ms tools paths
+    msvc_setup_env_once(env)
+
 
     # Loadable modules are on Windows the same as shared libraries, but they
     # are subject to different build parameters (LDMODULE* variables).
@@ -256,7 +257,7 @@ def generate(env):
     env['LDMODULECOM'] = compositeLdmodAction
 
 def exists(env):
-    return detect_msvs()
+    return msvc_exists()
 
 # Local Variables:
 # tab-width:4
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/mssdk.py b/3rdParty/SCons/scons-local/SCons/Tool/mssdk.py
index 4277d58..9402e0e 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/mssdk.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/mssdk.py
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/mssdk.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/mssdk.py 4761 2010/04/04 14:04:44 bdeegan"
 
 """engine.SCons.Tool.mssdk
 
@@ -33,29 +33,15 @@ It will usually be imported through the generic SCons.Tool.Tool()
 selection method.
 """
 
-from SCons.Tool.MSCommon.sdk import detect_sdk, \
-                                    set_default_sdk, \
-                                    set_sdk_by_directory, \
-                                    set_sdk_by_version
+from MSCommon import mssdk_exists, \
+                     mssdk_setup_env
 
 def generate(env):
     """Add construction variables for an MS SDK to an Environment."""
-    if env.has_key('MSSDK_DIR'):
-        set_sdk_by_directory(env, env.subst('$MSSDK_DIR'))
-        return
-
-    if env.has_key('MSSDK_VERSION'):
-        set_sdk_by_version(env, env.subst('$MSSDK_VERSION'))
-        return
-
-    if env.has_key('MSVS_VERSION'):
-        set_default_sdk(env, env['MSVS_VERSION'])
-
-    #print "No MSVS_VERSION: this is likely to be a bug"
-    return
+    mssdk_setup_env(env)
 
 def exists(env):
-    return detect_sdk()
+    return mssdk_exists()
 
 # Local Variables:
 # tab-width:4
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/msvc.py b/3rdParty/SCons/scons-local/SCons/Tool/msvc.py
index bd29ed0..a323652 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/msvc.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/msvc.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/msvc.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/msvc.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import os.path
 import re
@@ -48,7 +48,7 @@ import SCons.Util
 import SCons.Warnings
 import SCons.Scanner.RC
 
-from MSCommon import merge_default_version, detect_msvs
+from MSCommon import msvc_exists, msvc_setup_env_once
 
 CSuffixes = ['.c', '.C']
 CXXSuffixes = ['.cc', '.cpp', '.cxx', '.c++', '.C++']
@@ -89,8 +89,20 @@ def object_emitter(target, source, env, parent_emitter):
 
     parent_emitter(target, source, env)
 
-    if env.has_key('PCH') and env['PCH']:
-        env.Depends(target, env['PCH'])
+    # Add a dependency, but only if the target (e.g. 'Source1.obj')
+    # doesn't correspond to the pre-compiled header ('Source1.pch').
+    # If the basenames match, then this was most likely caused by
+    # someone adding the source file to both the env.PCH() and the
+    # env.Program() calls, and adding the explicit dependency would
+    # cause a cycle on the .pch file itself.
+    #
+    # See issue #2505 for a discussion of what to do if it turns
+    # out this assumption causes trouble in the wild:
+    # http://scons.tigris.org/issues/show_bug.cgi?id=2505
+    if env.has_key('PCH'):
+        pch = env['PCH']
+        if str(target[0]) != SCons.Util.splitext(str(pch))[0] + '.obj':
+            env.Depends(target, pch)
 
     return (target, source)
 
@@ -232,11 +244,8 @@ def generate(env):
     env['SHOBJPREFIX']    = '$OBJPREFIX'
     env['SHOBJSUFFIX']    = '$OBJSUFFIX'
 
-    # Set-up ms tools paths for default version
-    merge_default_version(env)
-
-    import mssdk
-    mssdk.generate(env)
+    # Set-up ms tools paths
+    msvc_setup_env_once(env)
 
     env['CFILESUFFIX'] = '.c'
     env['CXXFILESUFFIX'] = '.cc'
@@ -251,7 +260,7 @@ def generate(env):
         env['ENV']['SystemRoot'] = SCons.Platform.win32.get_system_root()
 
 def exists(env):
-    return detect_msvs()
+    return msvc_exists()
 
 # Local Variables:
 # tab-width:4
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/msvs.py b/3rdParty/SCons/scons-local/SCons/Tool/msvs.py
index 11e7dce..b7bc205 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/msvs.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/msvs.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/msvs.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/msvs.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import base64
 import hashlib
@@ -49,7 +49,8 @@ import SCons.Script.SConscript
 import SCons.Util
 import SCons.Warnings
 
-from MSCommon import detect_msvs, merge_default_version
+from MSCommon import msvc_exists, msvc_setup_env_once
+from SCons.Defaults import processDefines
 
 ##############################################################################
 # Below here are the classes and functions for generation of
@@ -689,7 +690,7 @@ class _GenerateV7DSP(_DSPGenerator):
             # TODO(1.5)
             #preprocdefs = xmlify(';'.join(self.env.get('CPPDEFINES', [])))
             #includepath = xmlify(';'.join(self.env.get('CPPPATH', [])))
-            preprocdefs = xmlify(string.join(self.env.get('CPPDEFINES', []), ';'))
+            preprocdefs = xmlify(string.join(processDefines(self.env.get('CPPDEFINES', [])), ';'))
             includepath = xmlify(string.join(self.env.get('CPPPATH', []), ';'))
 
             if not env_has_buildtarget:
@@ -1407,9 +1408,14 @@ def generate(env):
     env['MSVSENCODING'] = 'Windows-1252'
 
     # Set-up ms tools paths for default version
-    merge_default_version(env)
+    msvc_setup_env_once(env)
 
-    version_num, suite = msvs_parse_version(env['MSVS_VERSION'])
+    if env.has_key('MSVS_VERSION'):
+        version_num, suite = msvs_parse_version(env['MSVS_VERSION'])
+    else:
+        (version_num, suite) = (7.0, None) # guess at a default
+    if not env.has_key('MSVS'):
+        env['MSVS'] = {}
     if (version_num < 7.0):
         env['MSVS']['PROJECTSUFFIX']  = '.dsp'
         env['MSVS']['SOLUTIONSUFFIX'] = '.dsw'
@@ -1424,7 +1430,7 @@ def generate(env):
     env['SCONS_HOME'] = os.environ.get('SCONS_HOME')
 
 def exists(env):
-    return detect_msvs()
+    return msvc_exists()
 
 # Local Variables:
 # tab-width:4
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/mwcc.py b/3rdParty/SCons/scons-local/SCons/Tool/mwcc.py
index f2966d2..13d533e 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/mwcc.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/mwcc.py
@@ -8,7 +8,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/mwcc.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/mwcc.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import os
 import os.path
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/mwld.py b/3rdParty/SCons/scons-local/SCons/Tool/mwld.py
index 6d1bde8..544ef99 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/mwld.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/mwld.py
@@ -8,7 +8,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/mwld.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/mwld.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Tool
 
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/nasm.py b/3rdParty/SCons/scons-local/SCons/Tool/nasm.py
index ee4fd35..24d38c8 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/nasm.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/nasm.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/nasm.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/nasm.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Defaults
 import SCons.Tool
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/packaging/__init__.py b/3rdParty/SCons/scons-local/SCons/Tool/packaging/__init__.py
index 77a9c7a..693e549 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/packaging/__init__.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/packaging/__init__.py
@@ -4,7 +4,7 @@ SCons Packaging Tool.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -26,7 +26,7 @@ SCons Packaging Tool.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/packaging/__init__.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/packaging/__init__.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Environment
 from SCons.Variables import *
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/packaging/ipk.py b/3rdParty/SCons/scons-local/SCons/Tool/packaging/ipk.py
index cca98c2..a6d1883 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/packaging/ipk.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/packaging/ipk.py
@@ -2,7 +2,7 @@
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 # 
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -24,7 +24,7 @@
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/packaging/ipk.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/packaging/ipk.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Builder
 import SCons.Node.FS
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/packaging/msi.py b/3rdParty/SCons/scons-local/SCons/Tool/packaging/msi.py
index fd61e0b..aac5038 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/packaging/msi.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/packaging/msi.py
@@ -4,7 +4,7 @@ The msi packager.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 # 
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -26,7 +26,7 @@ The msi packager.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/packaging/msi.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/packaging/msi.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import os
 import SCons
@@ -163,7 +163,7 @@ def generate_guids(root):
     To handle this requirement, the uuid is generated with an md5 hashing the
     whole subtree of a xml node.
     """
-    from md5 import md5
+    from hashlib import md5
 
     # specify which tags need a guid and in which attribute this should be stored.
     needs_id = { 'Product'   : 'Id',
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/packaging/rpm.py b/3rdParty/SCons/scons-local/SCons/Tool/packaging/rpm.py
index 0380121..ea0dd1d 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/packaging/rpm.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/packaging/rpm.py
@@ -4,7 +4,7 @@ The rpm packager.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -26,7 +26,7 @@ The rpm packager.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/packaging/rpm.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/packaging/rpm.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import os
 import string
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/packaging/src_tarbz2.py b/3rdParty/SCons/scons-local/SCons/Tool/packaging/src_tarbz2.py
index 54daddd..bf76542 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/packaging/src_tarbz2.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/packaging/src_tarbz2.py
@@ -4,7 +4,7 @@ The tarbz2 SRC packager.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 # 
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -26,7 +26,7 @@ The tarbz2 SRC packager.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/packaging/src_tarbz2.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/packaging/src_tarbz2.py 4761 2010/04/04 14:04:44 bdeegan"
 
 from SCons.Tool.packaging import putintopackageroot
 
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/packaging/src_targz.py b/3rdParty/SCons/scons-local/SCons/Tool/packaging/src_targz.py
index 6ec6336..ece79d1 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/packaging/src_targz.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/packaging/src_targz.py
@@ -4,7 +4,7 @@ The targz SRC packager.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -26,7 +26,7 @@ The targz SRC packager.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/packaging/src_targz.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/packaging/src_targz.py 4761 2010/04/04 14:04:44 bdeegan"
 
 from SCons.Tool.packaging import putintopackageroot
 
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/packaging/src_zip.py b/3rdParty/SCons/scons-local/SCons/Tool/packaging/src_zip.py
index 54a3a12..e363817 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/packaging/src_zip.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/packaging/src_zip.py
@@ -4,7 +4,7 @@ The zip SRC packager.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 # 
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -26,7 +26,7 @@ The zip SRC packager.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/packaging/src_zip.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/packaging/src_zip.py 4761 2010/04/04 14:04:44 bdeegan"
 
 from SCons.Tool.packaging import putintopackageroot
 
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/packaging/tarbz2.py b/3rdParty/SCons/scons-local/SCons/Tool/packaging/tarbz2.py
index 9e3df17..cca3dbd 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/packaging/tarbz2.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/packaging/tarbz2.py
@@ -4,7 +4,7 @@ The tarbz2 SRC packager.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 # 
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -26,7 +26,7 @@ The tarbz2 SRC packager.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/packaging/tarbz2.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/packaging/tarbz2.py 4761 2010/04/04 14:04:44 bdeegan"
 
 from SCons.Tool.packaging import stripinstallbuilder, putintopackageroot
 
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/packaging/targz.py b/3rdParty/SCons/scons-local/SCons/Tool/packaging/targz.py
index a3714a5..b653f4c 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/packaging/targz.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/packaging/targz.py
@@ -4,7 +4,7 @@ The targz SRC packager.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 # 
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -26,7 +26,7 @@ The targz SRC packager.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/packaging/targz.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/packaging/targz.py 4761 2010/04/04 14:04:44 bdeegan"
 
 from SCons.Tool.packaging import stripinstallbuilder, putintopackageroot
 
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/packaging/zip.py b/3rdParty/SCons/scons-local/SCons/Tool/packaging/zip.py
index d955c3d..59462bd 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/packaging/zip.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/packaging/zip.py
@@ -4,7 +4,7 @@ The zip SRC packager.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 # 
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -26,7 +26,7 @@ The zip SRC packager.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/packaging/zip.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/packaging/zip.py 4761 2010/04/04 14:04:44 bdeegan"
 
 from SCons.Tool.packaging import stripinstallbuilder, putintopackageroot
 
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/pdf.py b/3rdParty/SCons/scons-local/SCons/Tool/pdf.py
index 333f84f..3edec06 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/pdf.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/pdf.py
@@ -6,7 +6,7 @@ Add an explicit action to run epstopdf to convert .eps files to .pdf
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -28,7 +28,7 @@ Add an explicit action to run epstopdf to convert .eps files to .pdf
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/pdf.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/pdf.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Builder
 import SCons.Tool
@@ -64,7 +64,7 @@ def generate2(env):
 
     env['EPSTOPDF']      = 'epstopdf'
     env['EPSTOPDFFLAGS'] = SCons.Util.CLVar('')
-    env['EPSTOPDFCOM']   = '$EPSTOPDF $EPSTOPDFFLAGS ${SOURCE} -o ${TARGET}'
+    env['EPSTOPDFCOM']   = '$EPSTOPDF $EPSTOPDFFLAGS ${SOURCE} --outfile=${TARGET}'
 
 def exists(env):
     # This only puts a skeleton Builder in place, so if someone
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/pdflatex.py b/3rdParty/SCons/scons-local/SCons/Tool/pdflatex.py
index d5da5b1..7bc04f2 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/pdflatex.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/pdflatex.py
@@ -1,6 +1,7 @@
 """SCons.Tool.pdflatex
 
 Tool-specific initialization for pdflatex.
+Generates .pdf files from .latex or .ltx files
 
 There normally shouldn't be any need to import this module directly.
 It will usually be imported through the generic SCons.Tool.Tool()
@@ -9,7 +10,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +32,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/pdflatex.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/pdflatex.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Action
 import SCons.Util
@@ -42,6 +43,8 @@ PDFLaTeXAction = None
 
 def PDFLaTeXAuxFunction(target = None, source= None, env=None):
     result = SCons.Tool.tex.InternalLaTeXAuxAction( PDFLaTeXAction, target, source, env )
+    if result != 0:
+        print env['PDFLATEX']," returned an error, check the log file"
     return result
 
 PDFLaTeXAuxAction = None
@@ -57,6 +60,8 @@ def generate(env):
         PDFLaTeXAuxAction = SCons.Action.Action(PDFLaTeXAuxFunction,
                               strfunction=SCons.Tool.tex.TeXLaTeXStrFunction)
 
+    env.AppendUnique(LATEXSUFFIXES=SCons.Tool.LaTeXSuffixes)
+
     import pdf
     pdf.generate(env)
 
@@ -66,10 +71,7 @@ def generate(env):
     bld.add_emitter('.ltx', SCons.Tool.tex.tex_pdf_emitter)
     bld.add_emitter('.latex', SCons.Tool.tex.tex_pdf_emitter)
 
-    env['PDFLATEX']      = 'pdflatex'
-    env['PDFLATEXFLAGS'] = SCons.Util.CLVar('-interaction=nonstopmode')
-    env['PDFLATEXCOM']   = 'cd ${TARGET.dir} && $PDFLATEX $PDFLATEXFLAGS ${SOURCE.file}'
-    env['LATEXRETRIES']  = 3
+    SCons.Tool.tex.generate_common(env)
 
 def exists(env):
     return env.Detect('pdflatex')
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/pdftex.py b/3rdParty/SCons/scons-local/SCons/Tool/pdftex.py
index c6e2e30..ea21d33 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/pdftex.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/pdftex.py
@@ -1,6 +1,7 @@
 """SCons.Tool.pdftex
 
 Tool-specific initialization for pdftex.
+Generates .pdf files from .tex files
 
 There normally shouldn't be any need to import this module directly.
 It will usually be imported through the generic SCons.Tool.Tool()
@@ -9,7 +10,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,8 +32,9 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/pdftex.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/pdftex.py 4761 2010/04/04 14:04:44 bdeegan"
 
+import os
 import SCons.Action
 import SCons.Util
 import SCons.Tool.tex
@@ -51,10 +53,17 @@ def PDFTeXLaTeXFunction(target = None, source= None, env=None):
     """A builder for TeX and LaTeX that scans the source file to
     decide the "flavor" of the source and then executes the appropriate
     program."""
-    if SCons.Tool.tex.is_LaTeX(source):
+    basedir = os.path.split(str(source[0]))[0]
+    abspath = os.path.abspath(basedir)
+
+    if SCons.Tool.tex.is_LaTeX(source,env,abspath):
         result = PDFLaTeXAuxAction(target,source,env)
+        if result != 0:
+            print env['PDFLATEX']," returned an error, check the log file"
     else:
         result = PDFTeXAction(target,source,env)
+        if result != 0:
+            print env['PDFTEX']," returned an error, check the log file"
     return result
 
 PDFTeXLaTeXAction = None
@@ -74,6 +83,8 @@ def generate(env):
         PDFTeXLaTeXAction = SCons.Action.Action(PDFTeXLaTeXFunction,
                               strfunction=SCons.Tool.tex.TeXLaTeXStrFunction)
 
+    env.AppendUnique(LATEXSUFFIXES=SCons.Tool.LaTeXSuffixes)
+
     import pdf
     pdf.generate(env)
 
@@ -85,15 +96,7 @@ def generate(env):
     # so pdftex is the default for no source suffix
     pdf.generate2(env)
 
-    env['PDFTEX']      = 'pdftex'
-    env['PDFTEXFLAGS'] = SCons.Util.CLVar('-interaction=nonstopmode')
-    env['PDFTEXCOM']   = 'cd ${TARGET.dir} && $PDFTEX $PDFTEXFLAGS ${SOURCE.file}'
-
-    # Duplicate from latex.py.  If latex.py goes away, then this is still OK.
-    env['PDFLATEX']      = 'pdflatex'
-    env['PDFLATEXFLAGS'] = SCons.Util.CLVar('-interaction=nonstopmode')
-    env['PDFLATEXCOM']   = 'cd ${TARGET.dir} && $PDFLATEX $PDFLATEXFLAGS ${SOURCE.file}'
-    env['LATEXRETRIES']  = 3
+    SCons.Tool.tex.generate_common(env)
 
 def exists(env):
     return env.Detect('pdftex')
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/qt.py b/3rdParty/SCons/scons-local/SCons/Tool/qt.py
index cf99080..d51a708 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/qt.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/qt.py
@@ -10,7 +10,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -32,7 +32,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/qt.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/qt.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import os.path
 import re
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/rmic.py b/3rdParty/SCons/scons-local/SCons/Tool/rmic.py
index a743e04..5d8ff03 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/rmic.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/rmic.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/rmic.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/rmic.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import os.path
 import string
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/rpcgen.py b/3rdParty/SCons/scons-local/SCons/Tool/rpcgen.py
index 727cdce..92ffbb9 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/rpcgen.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/rpcgen.py
@@ -8,7 +8,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/rpcgen.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/rpcgen.py 4761 2010/04/04 14:04:44 bdeegan"
 
 from SCons.Builder import Builder
 import SCons.Util
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/rpm.py b/3rdParty/SCons/scons-local/SCons/Tool/rpm.py
index d085d99..3a1a0e7 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/rpm.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/rpm.py
@@ -11,7 +11,7 @@ tar.gz consisting of the source file and a specfile.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -33,7 +33,7 @@ tar.gz consisting of the source file and a specfile.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/rpm.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/rpm.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import os
 import re
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/sgiar.py b/3rdParty/SCons/scons-local/SCons/Tool/sgiar.py
index 6df401a..00ecd2d 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/sgiar.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/sgiar.py
@@ -11,7 +11,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -33,7 +33,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/sgiar.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/sgiar.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Defaults
 import SCons.Tool
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/sgic++.py b/3rdParty/SCons/scons-local/SCons/Tool/sgic++.py
index 262ad53..c2a473f 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/sgic++.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/sgic++.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/sgic++.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/sgic++.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Util
 
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/sgicc.py b/3rdParty/SCons/scons-local/SCons/Tool/sgicc.py
index b8ef3d7..f2f2f96 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/sgicc.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/sgicc.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/sgicc.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/sgicc.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import cc
 
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/sgilink.py b/3rdParty/SCons/scons-local/SCons/Tool/sgilink.py
index a9ac31f..c6460d4 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/sgilink.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/sgilink.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/sgilink.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/sgilink.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Util
 
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/sunar.py b/3rdParty/SCons/scons-local/SCons/Tool/sunar.py
index 5f7288e..b198996 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/sunar.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/sunar.py
@@ -10,7 +10,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -32,7 +32,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/sunar.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/sunar.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Defaults
 import SCons.Tool
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/sunc++.py b/3rdParty/SCons/scons-local/SCons/Tool/sunc++.py
index c2bcf8e..68e7b66 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/sunc++.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/sunc++.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,18 +31,68 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/sunc++.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/sunc++.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons
 
-import os.path
+import os
+import re
+import subprocess
 
 cplusplus = __import__('c++', globals(), locals(), [])
 
+package_info = {}
+
+def get_package_info(package_name, pkginfo, pkgchk):
+    try:
+        return package_info[package_name]
+    except KeyError:
+        version = None
+        pathname = None
+        try:
+            sadm_contents = open('/var/sadm/install/contents', 'r').read()
+        except EnvironmentError:
+            pass
+        else:
+            sadm_re = re.compile('^(\S*/bin/CC)(=\S*)? %s$' % package_name, re.M)
+            sadm_match = sadm_re.search(sadm_contents)
+            if sadm_match:
+                pathname = os.path.dirname(sadm_match.group(1))
+
+        try:
+            p = subprocess.Popen([pkginfo, '-l', package_name],
+                                 stdout=subprocess.PIPE,
+                                 stderr=open('/dev/null', 'w'))
+        except EnvironmentError:
+            pass
+        else:
+            pkginfo_contents = p.communicate()[0]
+            version_re = re.compile('^ *VERSION:\s*(.*)$', re.M)
+            version_match = version_re.search(pkginfo_contents)
+            if version_match:
+                version = version_match.group(1)
+
+        if pathname is None:
+            try:
+                p = subprocess.Popen([pkgchk, '-l', package_name],
+                                     stdout=subprocess.PIPE,
+                                     stderr=open('/dev/null', 'w'))
+            except EnvironmentError:
+                pass
+            else:
+                pkgchk_contents = p.communicate()[0]
+                pathname_re = re.compile(r'^Pathname:\s*(.*/bin/CC)$', re.M)
+                pathname_match = pathname_re.search(pkgchk_contents)
+                if pathname_match:
+                    pathname = os.path.dirname(pathname_match.group(1))
+
+        package_info[package_name] = (pathname, version)
+        return package_info[package_name]
+
 # use the package installer tool lslpp to figure out where cppc and what
 # version of it is installed
 def get_cppc(env):
-    cxx = env.get('CXX', None)
+    cxx = env.subst('$CXX')
     if cxx:
         cppcPath = os.path.dirname(cxx)
     else:
@@ -53,25 +103,11 @@ def get_cppc(env):
     pkginfo = env.subst('$PKGINFO')
     pkgchk = env.subst('$PKGCHK')
 
-    def look_pkg_db(pkginfo=pkginfo, pkgchk=pkgchk):
-        version = None
-        path = None
-        for package in ['SPROcpl']:
-            cmd = "%s -l %s 2>/dev/null | grep '^ *VERSION:'" % (pkginfo, package)
-            line = os.popen(cmd).readline()
-            if line:
-                version = line.split()[-1]
-                cmd = "%s -l %s 2>/dev/null | grep '^Pathname:.*/bin/CC$' | grep -v '/SC[0-9]*\.[0-9]*/'" % (pkgchk, package)
-                line = os.popen(cmd).readline()
-                if line:
-                    path = os.path.dirname(line.split()[-1])
-                    break
-
-        return path, version
-
-    path, version = look_pkg_db()
-    if path and version:
-        cppcPath, cppcVersion = path, version
+    for package in ['SPROcpl']:
+        path, version = get_package_info(package, pkginfo, pkgchk)
+        if path and version:
+            cppcPath, cppcVersion = path, version
+            break
 
     return (cppcPath, 'CC', 'CC', cppcVersion)
 
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/suncc.py b/3rdParty/SCons/scons-local/SCons/Tool/suncc.py
index 5f171d3..9913912 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/suncc.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/suncc.py
@@ -8,7 +8,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/suncc.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/suncc.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Util
 
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/sunf77.py b/3rdParty/SCons/scons-local/SCons/Tool/sunf77.py
index 95e35bf..6c84007 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/sunf77.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/sunf77.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/sunf77.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/sunf77.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Util
 
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/sunf90.py b/3rdParty/SCons/scons-local/SCons/Tool/sunf90.py
index db2bfda..cc6662e 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/sunf90.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/sunf90.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/sunf90.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/sunf90.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Util
 
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/sunf95.py b/3rdParty/SCons/scons-local/SCons/Tool/sunf95.py
index 3a1b326..ec8afcd 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/sunf95.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/sunf95.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/sunf95.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/sunf95.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Util
 
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/sunlink.py b/3rdParty/SCons/scons-local/SCons/Tool/sunlink.py
index 3e97aa9..8acce84 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/sunlink.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/sunlink.py
@@ -8,7 +8,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/sunlink.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/sunlink.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import os
 import os.path
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/swig.py b/3rdParty/SCons/scons-local/SCons/Tool/swig.py
index 947cfde..c734c97 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/swig.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/swig.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,11 +31,12 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/swig.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/swig.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import os.path
 import re
 import string
+import subprocess
 
 import SCons.Action
 import SCons.Defaults
@@ -62,7 +63,13 @@ def _find_modules(src):
        case.)"""
     directors = 0
     mnames = []
-    matches = _reModule.findall(open(src).read())
+    try:
+        matches = _reModule.findall(open(src).read())
+    except IOError:
+        # If the file's not yet generated, guess the module name from the filename
+        matches = []
+        mnames.append(os.path.splitext(src)[0])
+
     for m in matches:
         mnames.append(m[2])
         directors = directors or string.find(m[0], 'directors') >= 0
@@ -90,8 +97,18 @@ def _swigEmitter(target, source, env):
                 mnames, directors = _find_modules(src)
             if directors:
                 _add_director_header_targets(target, env)
-            target.extend(map(lambda m, d=target[0].dir:
-                                     d.File(m + ".py"), mnames))
+            python_files = map(lambda m: m + ".py", mnames)
+            outdir = env.subst('$SWIGOUTDIR', target=target, source=source)
+            # .py files should be generated in SWIGOUTDIR if specified,
+            # otherwise in the same directory as the target
+            if outdir:
+                python_files = map(lambda j, o=outdir, e=env:
+                                   e.fs.File(os.path.join(o, j)),
+                                   python_files)
+            else:
+                python_files = map(lambda m, d=target[0].dir:
+                                   d.File(m), python_files)
+            target.extend(python_files)
         if "-java" in flags:
             if mnames is None:
                 mnames, directors = _find_modules(src)
@@ -109,6 +126,19 @@ def _swigEmitter(target, source, env):
             target.extend(java_files)
     return (target, source)
 
+def _get_swig_version(env):
+    """Run the SWIG command line tool to get and return the version number"""
+    pipe = SCons.Action._subproc(env, [env['SWIG'], '-version'],
+                                 stdin = 'devnull',
+                                 stderr = 'devnull',
+                                 stdout = subprocess.PIPE)
+    if pipe.wait() != 0: return
+
+    out = pipe.stdout.read()
+    match = re.search(r'SWIG Version\s+(\S+)$', out, re.MULTILINE)
+    if match:
+        return match.group(1)
+
 def generate(env):
     """Add Builders and construction variables for swig to an Environment."""
     c_file, cxx_file = SCons.Tool.createCFileBuilders(env)
@@ -129,6 +159,7 @@ def generate(env):
     java_file.add_emitter('.i', _swigEmitter)
 
     env['SWIG']              = 'swig'
+    env['SWIGVERSION']       = _get_swig_version(env)
     env['SWIGFLAGS']         = SCons.Util.CLVar('')
     env['SWIGDIRECTORSUFFIX'] = '_wrap.h'
     env['SWIGCFILESUFFIX']   = '_wrap$CFILESUFFIX'
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/tar.py b/3rdParty/SCons/scons-local/SCons/Tool/tar.py
index b573282..e3c0fe7 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/tar.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/tar.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/tar.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/tar.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Action
 import SCons.Builder
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/tex.py b/3rdParty/SCons/scons-local/SCons/Tool/tex.py
index cbbee2d..b422e06 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/tex.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/tex.py
@@ -1,6 +1,7 @@
 """SCons.Tool.tex
 
 Tool-specific initialization for TeX.
+Generates .dvi files from .tex files
 
 There normally shouldn't be any need to import this module directly.
 It will usually be imported through the generic SCons.Tool.Tool()
@@ -9,7 +10,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +32,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/tex.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/tex.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import os.path
 import re
@@ -52,14 +53,14 @@ must_rerun_latex = True
 check_suffixes = ['.toc', '.lof', '.lot', '.out', '.nav', '.snm']
 
 # these are files that require bibtex or makeindex to be run when they change
-all_suffixes = check_suffixes + ['.bbl', '.idx', '.nlo', '.glo']
+all_suffixes = check_suffixes + ['.bbl', '.idx', '.nlo', '.glo', '.acn']
 
 #
 # regular expressions used to search for Latex features
 # or outputs that require rerunning latex
 #
-# search for all .aux files opened by latex (recorded in the .log file)
-openout_aux_re = re.compile(r"\\openout.*`(.*\.aux)'")
+# search for all .aux files opened by latex (recorded in the .fls file)
+openout_aux_re = re.compile(r"INPUT *(.*\.aux)")
 
 #printindex_re = re.compile(r"^[^%]*\\printindex", re.MULTILINE)
 #printnomenclature_re = re.compile(r"^[^%]*\\printnomenclature", re.MULTILINE)
@@ -87,16 +88,19 @@ listoftables_re = re.compile(r"^[^%\n]*\\listoftables", re.MULTILINE)
 hyperref_re = re.compile(r"^[^%\n]*\\usepackage.*\{hyperref\}", re.MULTILINE)
 makenomenclature_re = re.compile(r"^[^%\n]*\\makenomenclature", re.MULTILINE)
 makeglossary_re = re.compile(r"^[^%\n]*\\makeglossary", re.MULTILINE)
+makeglossaries_re = re.compile(r"^[^%\n]*\\makeglossaries", re.MULTILINE)
+makeacronyms_re = re.compile(r"^[^%\n]*\\makeglossaries", re.MULTILINE)
 beamer_re = re.compile(r"^[^%\n]*\\documentclass\{beamer\}", re.MULTILINE)
 
 # search to find all files included by Latex
 include_re = re.compile(r'^[^%\n]*\\(?:include|input){([^}]*)}', re.MULTILINE)
+includeOnly_re = re.compile(r'^[^%\n]*\\(?:include){([^}]*)}', re.MULTILINE)
 
 # search to find all graphics files included by Latex
 includegraphics_re = re.compile(r'^[^%\n]*\\(?:includegraphics(?:\[[^\]]+\])?){([^}]*)}', re.MULTILINE)
 
 # search to find all files opened by Latex (recorded in .log file)
-openout_re = re.compile(r"\\openout.*`(.*)'")
+openout_re = re.compile(r"OUTPUT *(.*)")
 
 # list of graphics file extensions for TeX and LaTeX
 TexGraphics   = SCons.Scanner.LaTeX.TexGraphics
@@ -121,6 +125,9 @@ MakeNclAction = None
 # An action to run MakeIndex (for glossary) on a file.
 MakeGlossaryAction = None
 
+# An action to run MakeIndex (for acronyms) on a file.
+MakeAcronymsAction = None
+
 # Used as a return value of modify_env_var if the variable is not set.
 _null = SCons.Scanner.LaTeX._null
 
@@ -206,6 +213,8 @@ def InternalLaTeXAuxAction(XXXLaTeXAction, target = None, source= None, env=None
     run_makeindex = makeindex_re.search(src_content) and not os.path.exists(targetbase + '.idx')
     run_nomenclature = makenomenclature_re.search(src_content) and not os.path.exists(targetbase + '.nlo')
     run_glossary = makeglossary_re.search(src_content) and not os.path.exists(targetbase + '.glo')
+    run_glossaries = makeglossaries_re.search(src_content) and not os.path.exists(targetbase + '.glo')
+    run_acronyms = makeacronyms_re.search(src_content) and not os.path.exists(targetbase + '.acn')
 
     saved_hashes = {}
     suffix_nodes = {}
@@ -256,13 +265,22 @@ def InternalLaTeXAuxAction(XXXLaTeXAction, target = None, source= None, env=None
         must_rerun_latex = False
         # Decide if various things need to be run, or run again.
 
-        # Read the log file to find all .aux files
+        # Read the log file to find warnings/errors
         logfilename = targetbase + '.log'
         logContent = ''
-        auxfiles = []
         if os.path.exists(logfilename):
             logContent = open(logfilename, "rb").read()
-            auxfiles = openout_aux_re.findall(logContent)
+
+
+        # Read the fls file to find all .aux files
+        flsfilename = targetbase + '.fls'
+        flsContent = ''
+        auxfiles = []
+        if os.path.exists(flsfilename):
+            flsContent = open(flsfilename, "rb").read()
+            auxfiles = openout_aux_re.findall(flsContent)
+        if Verbose:
+            print "auxfiles ",auxfiles
 
         # Now decide if bibtex will need to be run.
         # The information that bibtex reads from the .aux file is
@@ -280,6 +298,7 @@ def InternalLaTeXAuxAction(XXXLaTeXAction, target = None, source= None, env=None
                         bibfile = env.fs.File(targetbase)
                         result = BibTeXAction(bibfile, bibfile, env)
                         if result != 0:
+                            print env['BIBTEX']," returned an error, check the blg file"
                             return result
                         must_rerun_latex = check_MD5(suffix_nodes['.bbl'],'.bbl')
                         break
@@ -292,6 +311,7 @@ def InternalLaTeXAuxAction(XXXLaTeXAction, target = None, source= None, env=None
             idxfile = suffix_nodes['.idx']
             result = MakeIndexAction(idxfile, idxfile, env)
             if result != 0:
+                print env['MAKEINDEX']," returned an error, check the ilg file"
                 return result
 
         # TO-DO: need to add a way for the user to extend this list for whatever
@@ -309,16 +329,29 @@ def InternalLaTeXAuxAction(XXXLaTeXAction, target = None, source= None, env=None
             nclfile = suffix_nodes['.nlo']
             result = MakeNclAction(nclfile, nclfile, env)
             if result != 0:
-                return result
+                print env['MAKENCL']," (nomenclature) returned an error, check the nlg file"
+                #return result
 
         # Now decide if latex will need to be run again due to glossary.
-        if check_MD5(suffix_nodes['.glo'],'.glo') or (count == 1 and run_glossary):
+        if check_MD5(suffix_nodes['.glo'],'.glo') or (count == 1 and run_glossaries) or (count == 1 and run_glossary):
             # We must run makeindex
             if Verbose:
                 print "Need to run makeindex for glossary"
             glofile = suffix_nodes['.glo']
             result = MakeGlossaryAction(glofile, glofile, env)
             if result != 0:
+                print env['MAKEGLOSSARY']," (glossary) returned an error, check the glg file"
+                #return result
+
+        # Now decide if latex will need to be run again due to acronyms.
+        if check_MD5(suffix_nodes['.acn'],'.acn') or (count == 1 and run_acronyms):
+            # We must run makeindex
+            if Verbose:
+                print "Need to run makeindex for acronyms"
+            acrfile = suffix_nodes['.acn']
+            result = MakeAcronymsAction(acrfile, acrfile, env)
+            if result != 0:
+                print env['MAKEACRONYMS']," (acronymns) returned an error, check the alg file"
                 return result
 
         # Now decide if latex needs to be run yet again to resolve warnings.
@@ -374,22 +407,92 @@ def LaTeXAuxAction(target = None, source= None, env=None):
 
 LaTeX_re = re.compile("\\\\document(style|class)")
 
-def is_LaTeX(flist):
-    # Scan a file list to decide if it's TeX- or LaTeX-flavored.
+def is_LaTeX(flist,env,abspath):
+    """Scan a file list to decide if it's TeX- or LaTeX-flavored."""
+
+    # We need to scan files that are included in case the
+    # \documentclass command is in them.
+
+    # get path list from both env['TEXINPUTS'] and env['ENV']['TEXINPUTS']
+    savedpath = modify_env_var(env, 'TEXINPUTS', abspath)
+    paths = env['ENV']['TEXINPUTS']
+    if SCons.Util.is_List(paths):
+        pass
+    else:
+        # Split at os.pathsep to convert into absolute path
+        # TODO(1.5)
+        #paths = paths.split(os.pathsep)
+        paths = string.split(paths, os.pathsep)
+
+    # now that we have the path list restore the env
+    if savedpath is _null:
+        try:
+            del env['ENV']['TEXINPUTS']
+        except KeyError:
+            pass # was never set
+    else:
+        env['ENV']['TEXINPUTS'] = savedpath
+    if Verbose:
+        print "is_LaTeX search path ",paths
+        print "files to search :",flist
+
+    # Now that we have the search path and file list, check each one
     for f in flist:
+        if Verbose:
+            print " checking for Latex source ",str(f)
+
         content = f.get_text_contents()
         if LaTeX_re.search(content):
+            if Verbose:
+                print "file %s is a LaTeX file" % str(f)
             return 1
+        if Verbose:
+            print "file %s is not a LaTeX file" % str(f)
+
+        # now find included files
+        inc_files = [ ]
+        inc_files.extend( include_re.findall(content) )
+        if Verbose:
+            print "files included by '%s': "%str(f),inc_files
+        # inc_files is list of file names as given. need to find them
+        # using TEXINPUTS paths.
+
+        # search the included files
+        for src in inc_files:
+            srcNode = FindFile(src,['.tex','.ltx','.latex'],paths,env,requireExt=False)
+            # make this a list since is_LaTeX takes a list.
+            fileList = [srcNode,]
+            if Verbose:
+                print "FindFile found ",srcNode
+            if srcNode is not None:
+                file_test = is_LaTeX(fileList, env, abspath)
+
+            # return on first file that finds latex is needed.
+            if file_test:
+                return file_test
+
+        if Verbose:
+            print " done scanning ",str(f)
+
     return 0
 
 def TeXLaTeXFunction(target = None, source= None, env=None):
     """A builder for TeX and LaTeX that scans the source file to
     decide the "flavor" of the source and then executes the appropriate
     program."""
-    if is_LaTeX(source):
+
+    # find these paths for use in is_LaTeX to search for included files
+    basedir = os.path.split(str(source[0]))[0]
+    abspath = os.path.abspath(basedir)
+
+    if is_LaTeX(source,env,abspath):
         result = LaTeXAuxAction(target,source,env)
+        if result != 0:
+            print env['LATEX']," returned an error, check the log file"
     else:
         result = TeXAction(target,source,env)
+        if result != 0:
+            print env['TEX']," returned an error, check the log file"
     return result
 
 def TeXLaTeXStrFunction(target = None, source= None, env=None):
@@ -397,7 +500,12 @@ def TeXLaTeXStrFunction(target = None, source= None, env=None):
     decide the "flavor" of the source and then returns the appropriate
     command string."""
     if env.GetOption("no_exec"):
-        if is_LaTeX(source):
+
+        # find these paths for use in is_LaTeX to search for included files
+        basedir = os.path.split(str(source[0]))[0]
+        abspath = os.path.abspath(basedir)
+
+        if is_LaTeX(source,env,abspath):
             result = env.subst('$LATEXCOM',0,target,source)+" ..."
         else:
             result = env.subst("$TEXCOM",0,target,source)+" ..."
@@ -423,17 +531,23 @@ def tex_pdf_emitter(target, source, env):
 
     return (target, source)
 
-def ScanFiles(theFile, target, paths, file_tests, file_tests_search, env, graphics_extensions, targetdir):
-    # for theFile (a Node) update any file_tests and search for graphics files
-    # then find all included files and call ScanFiles for each of them
+def ScanFiles(theFile, target, paths, file_tests, file_tests_search, env, graphics_extensions, targetdir, aux_files):
+    """ For theFile (a Node) update any file_tests and search for graphics files
+    then find all included files and call ScanFiles recursively for each of them"""
+
     content = theFile.get_text_contents()
     if Verbose:
         print " scanning ",str(theFile)
 
     for i in range(len(file_tests_search)):
-        if file_tests[i][0] == None:
+        if file_tests[i][0] is None:
             file_tests[i][0] = file_tests_search[i].search(content)
 
+    incResult = includeOnly_re.search(content)
+    if incResult:
+        aux_files.append(os.path.join(targetdir, incResult.group(1)))
+    if Verbose:
+        print "\include file names : ", aux_files
     # recursively call this on each of the included files
     inc_files = [ ]
     inc_files.extend( include_re.findall(content) )
@@ -443,9 +557,9 @@ def ScanFiles(theFile, target, paths, file_tests, file_tests_search, env, graphi
     # using TEXINPUTS paths.
 
     for src in inc_files:
-        srcNode = srcNode = FindFile(src,['.tex','.ltx','.latex'],paths,env,requireExt=False)
-        if srcNode != None:
-            file_test = ScanFiles(srcNode, target, paths, file_tests, file_tests_search, env, graphics_extensions, targetdir)
+        srcNode = FindFile(src,['.tex','.ltx','.latex'],paths,env,requireExt=False)
+        if srcNode is not None:
+            file_tests = ScanFiles(srcNode, target, paths, file_tests, file_tests_search, env, graphics_extensions, targetdir, aux_files)
     if Verbose:
         print " done scanning ",str(theFile)
     return file_tests
@@ -456,32 +570,38 @@ def tex_emitter_core(target, source, env, graphics_extensions):
     are needed on subsequent runs of latex to finish tables of contents,
     bibliographies, indices, lists of figures, and hyperlink references.
     """
-    targetbase = SCons.Util.splitext(str(target[0]))[0]
     basename = SCons.Util.splitext(str(source[0]))[0]
     basefile = os.path.split(str(basename))[1]
+    targetdir = os.path.split(str(target[0]))[0]
+    targetbase = os.path.join(targetdir, basefile)
 
     basedir = os.path.split(str(source[0]))[0]
-    targetdir = os.path.split(str(target[0]))[0]
     abspath = os.path.abspath(basedir)
     target[0].attributes.path = abspath
-
+    
     #
     # file names we will make use of in searching the sources and log file
     #
-    emit_suffixes = ['.aux', '.log', '.ilg', '.blg', '.nls', '.nlg', '.gls', '.glg'] + all_suffixes
+    emit_suffixes = ['.aux', '.log', '.ilg', '.blg', '.nls', '.nlg', '.gls', '.glg', '.alg'] + all_suffixes
     auxfilename = targetbase + '.aux'
     logfilename = targetbase + '.log'
+    flsfilename = targetbase + '.fls'
 
     env.SideEffect(auxfilename,target[0])
     env.SideEffect(logfilename,target[0])
+    env.SideEffect(flsfilename,target[0])
+    if Verbose:
+        print "side effect :",auxfilename,logfilename,flsfilename
     env.Clean(target[0],auxfilename)
     env.Clean(target[0],logfilename)
+    env.Clean(target[0],flsfilename)
 
     content = source[0].get_text_contents()
 
     idx_exists = os.path.exists(targetbase + '.idx')
     nlo_exists = os.path.exists(targetbase + '.nlo')
     glo_exists = os.path.exists(targetbase + '.glo')
+    acr_exists = os.path.exists(targetbase + '.acn')
 
     # set up list with the regular expressions
     # we use to find features used
@@ -494,6 +614,8 @@ def tex_emitter_core(target, source, env, graphics_extensions):
                          hyperref_re,
                          makenomenclature_re,
                          makeglossary_re,
+                         makeglossaries_re,
+                         makeacronyms_re,
                          beamer_re ]
     # set up list with the file suffixes that need emitting
     # when a feature is found
@@ -506,6 +628,8 @@ def tex_emitter_core(target, source, env, graphics_extensions):
                   ['.out'],
                   ['.nlo', '.nls', '.nlg'],
                   ['.glo', '.gls', '.glg'],
+                  ['.glo', '.gls', '.glg'],
+                  ['.acn', '.acr', '.alg'],
                   ['.nav', '.snm', '.out', '.toc'] ]
     # build the list of lists
     file_tests = []
@@ -537,19 +661,35 @@ def tex_emitter_core(target, source, env, graphics_extensions):
     if Verbose:
         print "search path ",paths
 
-    file_tests = ScanFiles(source[0], target, paths, file_tests, file_tests_search, env, graphics_extensions, targetdir)
+    aux_files = []
+    file_tests = ScanFiles(source[0], target, paths, file_tests, file_tests_search, env, graphics_extensions, targetdir, aux_files)
 
     for (theSearch,suffix_list) in file_tests:
         if theSearch:
             for suffix in suffix_list:
                 env.SideEffect(targetbase + suffix,target[0])
+                if Verbose:
+                    print "side effect :",targetbase + suffix
                 env.Clean(target[0],targetbase + suffix)
 
-    # read log file to get all other files that latex creates and will read on the next pass
-    if os.path.exists(logfilename):
-        content = open(logfilename, "rb").read()
+    for aFile in aux_files:
+        aFile_base = SCons.Util.splitext(aFile)[0]
+        env.SideEffect(aFile_base + '.aux',target[0])
+        if Verbose:
+            print "side effect :",aFile_base + '.aux'
+        env.Clean(target[0],aFile_base + '.aux')
+    # read fls file to get all other files that latex creates and will read on the next pass
+    # remove files from list that we explicitly dealt with above
+    if os.path.exists(flsfilename):
+        content = open(flsfilename, "rb").read()
         out_files = openout_re.findall(content)
+        myfiles = [auxfilename, logfilename, flsfilename, targetbase+'.dvi',targetbase+'.pdf']
+        for filename in out_files[:]:
+            if filename in myfiles:
+                out_files.remove(filename)
         env.SideEffect(out_files,target[0])
+        if Verbose:
+            print "side effect :",out_files
         env.Clean(target[0],out_files)
 
     return (target, source)
@@ -560,6 +700,25 @@ TeXLaTeXAction = None
 def generate(env):
     """Add Builders and construction variables for TeX to an Environment."""
 
+    global TeXLaTeXAction
+    if TeXLaTeXAction is None:
+        TeXLaTeXAction = SCons.Action.Action(TeXLaTeXFunction,
+                              strfunction=TeXLaTeXStrFunction)
+
+    env.AppendUnique(LATEXSUFFIXES=SCons.Tool.LaTeXSuffixes)
+
+    generate_common(env)
+
+    import dvi
+    dvi.generate(env)
+
+    bld = env['BUILDERS']['DVI']
+    bld.add_action('.tex', TeXLaTeXAction)
+    bld.add_emitter('.tex', tex_eps_emitter)
+
+def generate_common(env):
+    """Add internal Builders and construction variables for LaTeX to an Environment."""
+
     # A generic tex file Action, sufficient for all tex files.
     global TeXAction
     if TeXAction is None:
@@ -591,28 +750,28 @@ def generate(env):
     if MakeGlossaryAction is None:
         MakeGlossaryAction = SCons.Action.Action("$MAKEGLOSSARYCOM", "$MAKEGLOSSARYCOMSTR")
 
-    global TeXLaTeXAction
-    if TeXLaTeXAction is None:
-        TeXLaTeXAction = SCons.Action.Action(TeXLaTeXFunction,
-                              strfunction=TeXLaTeXStrFunction)
-
-    import dvi
-    dvi.generate(env)
-
-    bld = env['BUILDERS']['DVI']
-    bld.add_action('.tex', TeXLaTeXAction)
-    bld.add_emitter('.tex', tex_eps_emitter)
+    # Define an action to run MakeIndex on a file for acronyms.
+    global MakeAcronymsAction
+    if MakeAcronymsAction is None:
+        MakeAcronymsAction = SCons.Action.Action("$MAKEACRONYMSCOM", "$MAKEACRONYMSCOMSTR")
 
     env['TEX']      = 'tex'
-    env['TEXFLAGS'] = SCons.Util.CLVar('-interaction=nonstopmode')
+    env['TEXFLAGS'] = SCons.Util.CLVar('-interaction=nonstopmode -recorder')
     env['TEXCOM']   = 'cd ${TARGET.dir} && $TEX $TEXFLAGS ${SOURCE.file}'
 
-    # Duplicate from latex.py.  If latex.py goes away, then this is still OK.
+    env['PDFTEX']      = 'pdftex'
+    env['PDFTEXFLAGS'] = SCons.Util.CLVar('-interaction=nonstopmode -recorder')
+    env['PDFTEXCOM']   = 'cd ${TARGET.dir} && $PDFTEX $PDFTEXFLAGS ${SOURCE.file}'
+
     env['LATEX']        = 'latex'
-    env['LATEXFLAGS']   = SCons.Util.CLVar('-interaction=nonstopmode')
+    env['LATEXFLAGS']   = SCons.Util.CLVar('-interaction=nonstopmode -recorder')
     env['LATEXCOM']     = 'cd ${TARGET.dir} && $LATEX $LATEXFLAGS ${SOURCE.file}'
     env['LATEXRETRIES'] = 3
 
+    env['PDFLATEX']      = 'pdflatex'
+    env['PDFLATEXFLAGS'] = SCons.Util.CLVar('-interaction=nonstopmode -recorder')
+    env['PDFLATEXCOM']   = 'cd ${TARGET.dir} && $PDFLATEX $PDFLATEXFLAGS ${SOURCE.file}'
+
     env['BIBTEX']      = 'bibtex'
     env['BIBTEXFLAGS'] = SCons.Util.CLVar('')
     env['BIBTEXCOM']   = 'cd ${TARGET.dir} && $BIBTEX $BIBTEXFLAGS ${SOURCE.filebase}'
@@ -626,16 +785,16 @@ def generate(env):
     env['MAKEGLOSSARYFLAGS'] = SCons.Util.CLVar('-s ${MAKEGLOSSARYSTYLE} -t ${SOURCE.filebase}.glg')
     env['MAKEGLOSSARYCOM']   = 'cd ${TARGET.dir} && $MAKEGLOSSARY ${SOURCE.filebase}.glo $MAKEGLOSSARYFLAGS -o ${SOURCE.filebase}.gls'
 
+    env['MAKEACRONYMS']      = 'makeindex'
+    env['MAKEACRONYMSSTYLE'] = '${SOURCE.filebase}.ist'
+    env['MAKEACRONYMSFLAGS'] = SCons.Util.CLVar('-s ${MAKEACRONYMSSTYLE} -t ${SOURCE.filebase}.alg')
+    env['MAKEACRONYMSCOM']   = 'cd ${TARGET.dir} && $MAKEACRONYMS ${SOURCE.filebase}.acn $MAKEACRONYMSFLAGS -o ${SOURCE.filebase}.acr'
+
     env['MAKENCL']      = 'makeindex'
-    env['MAKENCLSTYLE'] = '$nomencl.ist'
+    env['MAKENCLSTYLE'] = 'nomencl.ist'
     env['MAKENCLFLAGS'] = '-s ${MAKENCLSTYLE} -t ${SOURCE.filebase}.nlg'
     env['MAKENCLCOM']   = 'cd ${TARGET.dir} && $MAKENCL ${SOURCE.filebase}.nlo $MAKENCLFLAGS -o ${SOURCE.filebase}.nls'
 
-    # Duplicate from pdflatex.py.  If latex.py goes away, then this is still OK.
-    env['PDFLATEX']      = 'pdflatex'
-    env['PDFLATEXFLAGS'] = SCons.Util.CLVar('-interaction=nonstopmode')
-    env['PDFLATEXCOM']   = 'cd ${TARGET.dir} && $PDFLATEX $PDFLATEXFLAGS ${SOURCE.file}'
-
 def exists(env):
     return env.Detect('tex')
 
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/textfile.py b/3rdParty/SCons/scons-local/SCons/Tool/textfile.py
new file mode 100644
index 0000000..8089246
--- /dev/null
+++ b/3rdParty/SCons/scons-local/SCons/Tool/textfile.py
@@ -0,0 +1,175 @@
+# -*- python -*-
+#
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
+#
+# 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.
+#
+
+__doc__ = """
+Textfile/Substfile builder for SCons.
+
+    Create file 'target' which typically is a textfile.  The 'source'
+    may be any combination of strings, Nodes, or lists of same.  A
+    'linesep' will be put between any part written and defaults to
+    os.linesep.
+
+    The only difference between the Textfile builder and the Substfile
+    builder is that strings are converted to Value() nodes for the
+    former and File() nodes for the latter.  To insert files in the
+    former or strings in the latter, wrap them in a File() or Value(),
+    respectively.
+
+    The values of SUBST_DICT first have any construction variables
+    expanded (its keys are not expanded).  If a value of SUBST_DICT is
+    a python callable function, it is called and the result is expanded
+    as the value.  Values are substituted in a "random" order; if any
+    substitution could be further expanded by another subsitition, it
+    is unpredictible whether the expansion will occur.
+"""
+
+__revision__ = "src/engine/SCons/Tool/textfile.py 4761 2010/04/04 14:04:44 bdeegan"
+
+import SCons
+
+import os
+import re
+
+from SCons.Node import Node
+from SCons.Node.Python import Value
+from SCons.Util import is_String, is_Sequence, is_Dict
+
+def _do_subst(node, subs):
+    """
+    Fetch the node contents and replace all instances of the keys with
+    their values.  For example, if subs is
+        {'%VERSION%': '1.2345', '%BASE%': 'MyProg', '%prefix%': '/bin'},
+    then all instances of %VERSION% in the file will be replaced with
+    1.2345 and so forth.
+    """
+    contents = node.get_text_contents()
+    if not subs: return contents
+    for (k,v) in subs:
+        contents = re.sub(k, v, contents)
+    return contents
+
+def _action(target, source, env):
+    # prepare the line separator
+    linesep = env['LINESEPARATOR']
+    if linesep is None:
+        linesep = os.linesep
+    elif is_String(linesep):
+        pass
+    elif isinstance(linesep, Value):
+        linesep = linesep.get_text_contents()
+    else:
+        raise SCons.Errors.UserError(
+                           'unexpected type/class for LINESEPARATOR: %s'
+                                         % repr(linesep), None)
+
+    # create a dictionary to use for the substitutions
+    if not env.has_key('SUBST_DICT'):
+        subs = None    # no substitutions
+    else:
+        d = env['SUBST_DICT']
+        if is_Dict(d):
+            d = d.items()
+        elif is_Sequence(d):
+            pass
+        else:
+            raise SCons.Errors.UserError('SUBST_DICT must be dict or sequence')
+        subs = []
+        for (k,v) in d:
+            if callable(v):
+                v = v()
+            if is_String(v):
+                v = env.subst(v)
+            else:
+                v = str(v)
+            subs.append((k,v))
+
+    # write the file
+    try:
+        fd = open(target[0].get_path(), "wb")
+    except (OSError,IOError), e:
+        raise SCons.Errors.UserError("Can't write target file %s" % target[0])
+    # separate lines by 'linesep' only if linesep is not empty
+    lsep = None
+    for s in source:
+        if lsep: fd.write(lsep)
+        fd.write(_do_subst(s, subs))
+        lsep = linesep
+    fd.close()
+
+def _strfunc(target, source, env):
+    return "Creating '%s'" % target[0]
+
+def _convert_list_R(newlist, sources):
+    for elem in sources:
+        if is_Sequence(elem):
+            _convert_list_R(newlist, elem)
+        elif isinstance(elem, Node):
+            newlist.append(elem)
+        else:
+            newlist.append(Value(elem))
+def _convert_list(target, source, env):
+    if len(target) != 1:
+        raise SCons.Errors.UserError("Only one target file allowed")
+    newlist = []
+    _convert_list_R(newlist, source)
+    return target, newlist
+
+_common_varlist = ['SUBST_DICT', 'LINESEPARATOR']
+
+_text_varlist = _common_varlist + ['TEXTFILEPREFIX', 'TEXTFILESUFFIX']
+_text_builder = SCons.Builder.Builder(
+    action = SCons.Action.Action(_action, _strfunc, varlist = _text_varlist),
+    source_factory = Value,
+    emitter = _convert_list,
+    prefix = '$TEXTFILEPREFIX',
+    suffix = '$TEXTFILESUFFIX',
+    )
+
+_subst_varlist = _common_varlist + ['SUBSTFILEPREFIX', 'TEXTFILESUFFIX']
+_subst_builder = SCons.Builder.Builder(
+    action = SCons.Action.Action(_action, _strfunc, varlist = _subst_varlist),
+    source_factory = SCons.Node.FS.File,
+    emitter = _convert_list,
+    prefix = '$SUBSTFILEPREFIX',
+    suffix = '$SUBSTFILESUFFIX',
+    src_suffix = ['.in'],
+    )
+
+def generate(env):
+    env['LINESEPARATOR'] = os.linesep
+    env['BUILDERS']['Textfile'] = _text_builder
+    env['TEXTFILEPREFIX'] = ''
+    env['TEXTFILESUFFIX'] = '.txt'
+    env['BUILDERS']['Substfile'] = _subst_builder
+    env['SUBSTFILEPREFIX'] = ''
+    env['SUBSTFILESUFFIX'] = ''
+
+def exists(env):
+    return 1
+
+# Local Variables:
+# tab-width:4
+# indent-tabs-mode:nil
+# End:
+# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/tlib.py b/3rdParty/SCons/scons-local/SCons/Tool/tlib.py
index 3fccc7a..a196447 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/tlib.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/tlib.py
@@ -5,7 +5,7 @@ XXX
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ XXX
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/tlib.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/tlib.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Tool
 import SCons.Tool.bcc32
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/wix.py b/3rdParty/SCons/scons-local/SCons/Tool/wix.py
index 7fbb38b..76b9e8a 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/wix.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/wix.py
@@ -8,7 +8,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/wix.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/wix.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import SCons.Builder
 import SCons.Action
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/yacc.py b/3rdParty/SCons/scons-local/SCons/Tool/yacc.py
index a80ec1e..3fe58ed 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/yacc.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/yacc.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/yacc.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/yacc.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import os.path
 import string
diff --git a/3rdParty/SCons/scons-local/SCons/Tool/zip.py b/3rdParty/SCons/scons-local/SCons/Tool/zip.py
index f41bc85..0c24fc3 100644
--- a/3rdParty/SCons/scons-local/SCons/Tool/zip.py
+++ b/3rdParty/SCons/scons-local/SCons/Tool/zip.py
@@ -9,7 +9,7 @@ selection method.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Tool/zip.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Tool/zip.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import os.path
 
diff --git a/3rdParty/SCons/scons-local/SCons/Util.py b/3rdParty/SCons/scons-local/SCons/Util.py
index e7d841f..d91b362 100644
--- a/3rdParty/SCons/scons-local/SCons/Util.py
+++ b/3rdParty/SCons/scons-local/SCons/Util.py
@@ -5,7 +5,7 @@ Various utility functions go here.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ Various utility functions go here.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Util.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Util.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import copy
 import os
@@ -675,11 +675,11 @@ try:
     can_read_reg = 1
     hkey_mod = _winreg
 
-    RegOpenKeyEx = _winreg.OpenKeyEx
-    RegEnumKey = _winreg.EnumKey
-    RegEnumValue = _winreg.EnumValue
+    RegOpenKeyEx    = _winreg.OpenKeyEx
+    RegEnumKey      = _winreg.EnumKey
+    RegEnumValue    = _winreg.EnumValue
     RegQueryValueEx = _winreg.QueryValueEx
-    RegError = _winreg.error
+    RegError        = _winreg.error
 
 except ImportError:
     try:
@@ -688,11 +688,11 @@ except ImportError:
         can_read_reg = 1
         hkey_mod = win32con
 
-        RegOpenKeyEx = win32api.RegOpenKeyEx
-        RegEnumKey = win32api.RegEnumKey
-        RegEnumValue = win32api.RegEnumValue
+        RegOpenKeyEx    = win32api.RegOpenKeyEx
+        RegEnumKey      = win32api.RegEnumKey
+        RegEnumValue    = win32api.RegEnumValue
         RegQueryValueEx = win32api.RegQueryValueEx
-        RegError = win32api.error
+        RegError        = win32api.error
 
     except ImportError:
         class _NoError(Exception):
@@ -700,10 +700,10 @@ except ImportError:
         RegError = _NoError
 
 if can_read_reg:
-    HKEY_CLASSES_ROOT = hkey_mod.HKEY_CLASSES_ROOT
+    HKEY_CLASSES_ROOT  = hkey_mod.HKEY_CLASSES_ROOT
     HKEY_LOCAL_MACHINE = hkey_mod.HKEY_LOCAL_MACHINE
-    HKEY_CURRENT_USER = hkey_mod.HKEY_CURRENT_USER
-    HKEY_USERS = hkey_mod.HKEY_USERS
+    HKEY_CURRENT_USER  = hkey_mod.HKEY_CURRENT_USER
+    HKEY_USERS         = hkey_mod.HKEY_USERS
 
     def RegGetValue(root, key):
         """This utility function returns a value in the registry
@@ -754,6 +754,9 @@ else:
     def RegGetValue(root, key):
         raise WindowsError
 
+    def RegOpenKeyEx(root, key):
+        raise WindowsError
+
 if sys.platform == 'win32':
 
     def WhereIs(file, path=None, pathext=None, reject=[]):
@@ -1127,7 +1130,7 @@ class Selector(OrderedDict):
             # the dictionary before giving up.
             s_dict = {}
             for (k,v) in self.items():
-                if not k is None:
+                if k is not None:
                     s_k = env.subst(k)
                     if s_dict.has_key(s_k):
                         # We only raise an error when variables point
@@ -1569,6 +1572,27 @@ def MD5collect(signatures):
 
 
 
+# Wrap the intern() function so it doesn't throw exceptions if ineligible
+# arguments are passed. The intern() function was moved into the sys module in
+# Python 3.
+try:
+    intern
+except NameError:
+    from sys import intern
+
+def silent_intern(x):
+    """
+    Perform intern() on the passed argument and return the result.
+    If the input is ineligible (e.g. a unicode string) the original argument is
+    returned and no exception is thrown.
+    """
+    try:
+        return intern(x)
+    except TypeError:
+        return x
+
+
+
 # From Dinu C. Gherman,
 # Python Cookbook, second edition, recipe 6.17, p. 277.
 # Also:
diff --git a/3rdParty/SCons/scons-local/SCons/Variables/BoolVariable.py b/3rdParty/SCons/scons-local/SCons/Variables/BoolVariable.py
index 4cf20d8..511a2b5 100644
--- a/3rdParty/SCons/scons-local/SCons/Variables/BoolVariable.py
+++ b/3rdParty/SCons/scons-local/SCons/Variables/BoolVariable.py
@@ -12,7 +12,7 @@ Usage example:
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -34,7 +34,7 @@ Usage example:
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Variables/BoolVariable.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Variables/BoolVariable.py 4761 2010/04/04 14:04:44 bdeegan"
 
 __all__ = ['BoolVariable',]
 
diff --git a/3rdParty/SCons/scons-local/SCons/Variables/EnumVariable.py b/3rdParty/SCons/scons-local/SCons/Variables/EnumVariable.py
index bd72d05..edc6e7b 100644
--- a/3rdParty/SCons/scons-local/SCons/Variables/EnumVariable.py
+++ b/3rdParty/SCons/scons-local/SCons/Variables/EnumVariable.py
@@ -15,7 +15,7 @@ Usage example:
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -37,7 +37,7 @@ Usage example:
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Variables/EnumVariable.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Variables/EnumVariable.py 4761 2010/04/04 14:04:44 bdeegan"
 
 __all__ = ['EnumVariable',]
 
diff --git a/3rdParty/SCons/scons-local/SCons/Variables/ListVariable.py b/3rdParty/SCons/scons-local/SCons/Variables/ListVariable.py
index 1051c51..91747e7 100644
--- a/3rdParty/SCons/scons-local/SCons/Variables/ListVariable.py
+++ b/3rdParty/SCons/scons-local/SCons/Variables/ListVariable.py
@@ -25,7 +25,7 @@ Usage example:
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -47,7 +47,7 @@ Usage example:
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Variables/ListVariable.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Variables/ListVariable.py 4761 2010/04/04 14:04:44 bdeegan"
 
 # Know Bug: This should behave like a Set-Type, but does not really,
 # since elements can occur twice.
diff --git a/3rdParty/SCons/scons-local/SCons/Variables/PackageVariable.py b/3rdParty/SCons/scons-local/SCons/Variables/PackageVariable.py
index 66cea0d..91d5bdf 100644
--- a/3rdParty/SCons/scons-local/SCons/Variables/PackageVariable.py
+++ b/3rdParty/SCons/scons-local/SCons/Variables/PackageVariable.py
@@ -28,7 +28,7 @@ Usage example:
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -50,7 +50,7 @@ Usage example:
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Variables/PackageVariable.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Variables/PackageVariable.py 4761 2010/04/04 14:04:44 bdeegan"
 
 __all__ = ['PackageVariable',]
 
diff --git a/3rdParty/SCons/scons-local/SCons/Variables/PathVariable.py b/3rdParty/SCons/scons-local/SCons/Variables/PathVariable.py
index 6a44ef6..00f8c43 100644
--- a/3rdParty/SCons/scons-local/SCons/Variables/PathVariable.py
+++ b/3rdParty/SCons/scons-local/SCons/Variables/PathVariable.py
@@ -46,7 +46,7 @@ Usage example:
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -68,7 +68,7 @@ Usage example:
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Variables/PathVariable.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Variables/PathVariable.py 4761 2010/04/04 14:04:44 bdeegan"
 
 __all__ = ['PathVariable',]
 
diff --git a/3rdParty/SCons/scons-local/SCons/Variables/__init__.py b/3rdParty/SCons/scons-local/SCons/Variables/__init__.py
index 89ba227..469d3c0 100644
--- a/3rdParty/SCons/scons-local/SCons/Variables/__init__.py
+++ b/3rdParty/SCons/scons-local/SCons/Variables/__init__.py
@@ -5,7 +5,7 @@ customizable variables to an SCons build.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ customizable variables to an SCons build.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/Variables/__init__.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Variables/__init__.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import os.path
 import string
@@ -95,6 +95,14 @@ class Variables:
         option.converter = converter
 
         self.options.append(option)
+        
+        # options might be added after the 'unknown' dict has been set up,
+        # so we remove the key and all its aliases from that dict
+        for alias in list(option.aliases) + [ option.key ]:
+          # TODO(1.5)
+          #if alias in self.unknown:
+          if alias in self.unknown.keys():
+            del self.unknown[alias]
 
     def keys(self):
         """
@@ -166,7 +174,7 @@ class Variables:
                     sys.path.insert(0, dir)
                 try:
                     values['__name__'] = filename
-                    execfile(filename, {}, values)
+                    exec open(filename, 'rU').read() in {}, values
                 finally:
                     if dir:
                         del sys.path[0]
@@ -179,7 +187,7 @@ class Variables:
         for arg, value in args.items():
             added = False
             for option in self.options:
-                if arg in option.aliases + [ option.key ]:
+                if arg in list(option.aliases) + [ option.key ]:
                     values[option.key] = value
                     added = True
             if not added:
diff --git a/3rdParty/SCons/scons-local/SCons/Warnings.py b/3rdParty/SCons/scons-local/SCons/Warnings.py
index ada4304..7342e35 100644
--- a/3rdParty/SCons/scons-local/SCons/Warnings.py
+++ b/3rdParty/SCons/scons-local/SCons/Warnings.py
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ This file implements the warnings framework for SCons.
 
 """
 
-__revision__ = "src/engine/SCons/Warnings.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/Warnings.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import string
 import sys
@@ -115,6 +115,17 @@ class StackSizeWarning(Warning):
 class TaskmasterNeedsExecuteWarning(FutureDeprecatedWarning):
     pass
 
+class VisualCMissingWarning(Warning):
+    pass
+
+# Used when MSVC_VERSION and MSVS_VERSION do not point to the
+# same version (MSVS_VERSION is deprecated)
+class VisualVersionMismatch(Warning):
+    pass
+
+class VisualStudioMissingWarning(Warning):
+    pass
+
 class FortranCxxMixWarning(LinkWarning):
     pass
 
diff --git a/3rdParty/SCons/scons-local/SCons/__init__.py b/3rdParty/SCons/scons-local/SCons/__init__.py
index 0893900..8ba78cf 100644
--- a/3rdParty/SCons/scons-local/SCons/__init__.py
+++ b/3rdParty/SCons/scons-local/SCons/__init__.py
@@ -5,7 +5,7 @@ The main package for the SCons software construction utility.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -27,17 +27,17 @@ The main package for the SCons software construction utility.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/__init__.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/__init__.py 4761 2010/04/04 14:04:44 bdeegan"
 
-__version__ = "1.2.0.d20090223"
+__version__ = "1.3.0.d20100404"
 
-__build__ = "r4043"
+__build__ = "r4761"
 
-__buildsys__ = "scons-dev"
+__buildsys__ = "cooldog"
 
-__date__ = "2009/02/23 09:06:45"
+__date__ = "2010/04/04 14:04:44"
 
-__developer__ = "scons"
+__developer__ = "bdeegan"
 
 # make sure compatibility is always in place
 import SCons.compat
diff --git a/3rdParty/SCons/scons-local/SCons/compat/__init__.py b/3rdParty/SCons/scons-local/SCons/compat/__init__.py
index f48ae4a..dfedf1d 100644
--- a/3rdParty/SCons/scons-local/SCons/compat/__init__.py
+++ b/3rdParty/SCons/scons-local/SCons/compat/__init__.py
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -60,7 +60,7 @@ function defined below loads the module as the "real" name (without the
 rest of our code will find our pre-loaded compatibility module.
 """
 
-__revision__ = "src/engine/SCons/compat/__init__.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/compat/__init__.py 4761 2010/04/04 14:04:44 bdeegan"
 
 def import_as(module, name):
     """
@@ -175,6 +175,14 @@ except AttributeError:
         return os.path.exists(path) or os.path.islink(path)
     os.path.lexists = lexists
 
+
+try:
+    import platform
+except ImportError:
+    # Pre-2.3 Python has no platform module.
+    import_as('_scons_platform', 'platform')
+
+
 import shlex
 try:
     shlex.split
@@ -250,6 +258,43 @@ except ImportError:
     # Pre-1.6 Python has no UserString module.
     import_as('_scons_UserString', 'UserString')
 
+import tempfile
+try:
+    tempfile.mkstemp
+except AttributeError:
+    # Pre-2.3 Python has no tempfile.mkstemp function, so try to simulate it.
+    # adapted from the mkstemp implementation in python 3.
+    import os
+    import errno
+    def mkstemp(*args, **kw):
+        text = False
+        # TODO (1.5)
+        #if 'text' in kw :
+        if 'text' in kw.keys() :
+            text = kw['text']
+            del kw['text']
+        elif len( args ) == 4 :
+            text = args[3]
+            args = args[:3]
+        flags = os.O_RDWR | os.O_CREAT | os.O_EXCL
+        if not text and hasattr( os, 'O_BINARY' ) :
+            flags = flags | os.O_BINARY
+        while True:
+            try :
+                name = apply(tempfile.mktemp, args, kw)
+                fd = os.open( name, flags, 0600 )
+                return (fd, os.path.abspath(name))
+            except OSError, e:
+                if e.errno == errno.EEXIST:
+                    continue
+                raise
+
+    tempfile.mkstemp = mkstemp
+    del mkstemp
+
+
+
+
 # Local Variables:
 # tab-width:4
 # indent-tabs-mode:nil
diff --git a/3rdParty/SCons/scons-local/SCons/compat/_scons_UserString.py b/3rdParty/SCons/scons-local/SCons/compat/_scons_UserString.py
index 4b736fd..0310bdd 100644
--- a/3rdParty/SCons/scons-local/SCons/compat/_scons_UserString.py
+++ b/3rdParty/SCons/scons-local/SCons/compat/_scons_UserString.py
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/compat/_scons_UserString.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/compat/_scons_UserString.py 4761 2010/04/04 14:04:44 bdeegan"
 
 __doc__ = """
 A user-defined wrapper around string objects
diff --git a/3rdParty/SCons/scons-local/SCons/compat/_scons_hashlib.py b/3rdParty/SCons/scons-local/SCons/compat/_scons_hashlib.py
index 2fc1ce6..0778bdc 100644
--- a/3rdParty/SCons/scons-local/SCons/compat/_scons_hashlib.py
+++ b/3rdParty/SCons/scons-local/SCons/compat/_scons_hashlib.py
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ purposes, anyway).  In fact, this module will raise an ImportError if
 the underlying md5 module isn't available.
 """
 
-__revision__ = "src/engine/SCons/compat/_scons_hashlib.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/compat/_scons_hashlib.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import md5
 import string
diff --git a/3rdParty/SCons/scons-local/SCons/compat/_scons_itertools.py b/3rdParty/SCons/scons-local/SCons/compat/_scons_itertools.py
index d2289d3..ac16f3d 100644
--- a/3rdParty/SCons/scons-local/SCons/compat/_scons_itertools.py
+++ b/3rdParty/SCons/scons-local/SCons/compat/_scons_itertools.py
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/compat/_scons_itertools.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/compat/_scons_itertools.py 4761 2010/04/04 14:04:44 bdeegan"
 
 __doc__ = """
 Implementations of itertools functions for Python versions that don't
diff --git a/3rdParty/SCons/scons-local/SCons/compat/_scons_optparse.py b/3rdParty/SCons/scons-local/SCons/compat/_scons_optparse.py
index 386dfea..219adba 100644
--- a/3rdParty/SCons/scons-local/SCons/compat/_scons_optparse.py
+++ b/3rdParty/SCons/scons-local/SCons/compat/_scons_optparse.py
@@ -920,7 +920,7 @@ class Values:
 
     def read_file(self, filename, mode="careful"):
         vars = {}
-        execfile(filename, vars)
+        exec open(filename, 'rU').read() in vars
         self._update(vars, mode)
 
     def ensure_value(self, attr, value):
diff --git a/3rdParty/SCons/scons-local/SCons/compat/_scons_subprocess.py b/3rdParty/SCons/scons-local/SCons/compat/_scons_subprocess.py
index 4968825..ccd403a 100644
--- a/3rdParty/SCons/scons-local/SCons/compat/_scons_subprocess.py
+++ b/3rdParty/SCons/scons-local/SCons/compat/_scons_subprocess.py
@@ -381,7 +381,21 @@ if mswindows:
         # can't import it.
         pass
     import msvcrt
-    if 0: # <-- change this to use pywin32 instead of the _subprocess driver
+    try:
+        # Try to get _subprocess
+        from _subprocess import *
+        class STARTUPINFO:
+            dwFlags = 0
+            hStdInput = None
+            hStdOutput = None
+            hStdError = None
+            wShowWindow = 0
+        class pywintypes:
+            error = IOError
+    except ImportError:
+        # If not there, then drop back to requiring pywin32
+        # TODO: Should this be wrapped in try as well? To notify user to install
+        #       pywin32 ? With URL to it?
         import pywintypes
         from win32api import GetStdHandle, STD_INPUT_HANDLE, \
                              STD_OUTPUT_HANDLE, STD_ERROR_HANDLE
@@ -393,20 +407,8 @@ if mswindows:
                                  GetExitCodeProcess, STARTF_USESTDHANDLES, \
                                  STARTF_USESHOWWINDOW, CREATE_NEW_CONSOLE
         from win32event import WaitForSingleObject, INFINITE, WAIT_OBJECT_0
-    else:
-        # SCons:  don't die on Python versions that don't have _subprocess.
-        try:
-            from _subprocess import *
-        except ImportError:
-            pass
-        class STARTUPINFO:
-            dwFlags = 0
-            hStdInput = None
-            hStdOutput = None
-            hStdError = None
-            wShowWindow = 0
-        class pywintypes:
-            error = IOError
+
+
 else:
     import select
     import errno
diff --git a/3rdParty/SCons/scons-local/SCons/compat/builtins.py b/3rdParty/SCons/scons-local/SCons/compat/builtins.py
index f7267ca..e56e1ed 100644
--- a/3rdParty/SCons/scons-local/SCons/compat/builtins.py
+++ b/3rdParty/SCons/scons-local/SCons/compat/builtins.py
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -55,7 +55,7 @@ the FUNCTIONS or DATA output, that means those names are already built in
 to this version of Python and we don't need to add them from this module.
 """
 
-__revision__ = "src/engine/SCons/compat/builtins.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/compat/builtins.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import __builtin__
 
diff --git a/3rdParty/SCons/scons-local/SCons/cpp.py b/3rdParty/SCons/scons-local/SCons/cpp.py
index 006a9b4..30227d2 100644
--- a/3rdParty/SCons/scons-local/SCons/cpp.py
+++ b/3rdParty/SCons/scons-local/SCons/cpp.py
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/cpp.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/cpp.py 4761 2010/04/04 14:04:44 bdeegan"
 
 __doc__ = """
 SCons C Pre-Processor module
@@ -66,10 +66,10 @@ cpp_lines_dict = {
     #   2) The optional parentheses and arguments (if it's a function-like
     #      macro, '' if it's not).
     #   3) The expansion value.
-    ('define',)         : '\s+([_A-Za-z][_A-Za-z0-9_]+)(\([^)]*\))?\s*(.*)',
+    ('define',)         : '\s+([_A-Za-z][_A-Za-z0-9_]*)(\([^)]*\))?\s*(.*)',
 
     # Fetch the #undefed keyword from a #undef line.
-    ('undef',)          : '\s+([_A-Za-z][A-Za-z0-9_]+)',
+    ('undef',)          : '\s+([_A-Za-z][A-Za-z0-9_]*)',
 }
 
 # Create a table that maps each individual C preprocessor directive to
diff --git a/3rdParty/SCons/scons-local/SCons/dblite.py b/3rdParty/SCons/scons-local/SCons/dblite.py
index 6d4cfd5..bcb2aa0 100644
--- a/3rdParty/SCons/scons-local/SCons/dblite.py
+++ b/3rdParty/SCons/scons-local/SCons/dblite.py
@@ -45,6 +45,10 @@ class dblite:
   _open = __builtin__.open
   _cPickle_dump = cPickle.dump
   _os_chmod = os.chmod
+  try:
+      _os_chown = os.chown
+  except AttributeError:
+      _os_chown = None
   _os_rename = os.rename
   _os_unlink = os.unlink
   _shutil_copyfile = shutil.copyfile
@@ -65,6 +69,20 @@ class dblite:
     self._mode = mode
     self._dict = {}
     self._needs_sync = 00000
+    if self._os_chown is not None and (os.geteuid()==0 or os.getuid()==0):
+      # running as root; chown back to current owner/group when done
+      try:
+        statinfo = os.stat(self._file_name)
+        self._chown_to = statinfo.st_uid
+        self._chgrp_to = statinfo.st_gid
+      except OSError, e:
+        # db file doesn't exist yet.
+        # Check os.environ for SUDO_UID, use if set
+        self._chown_to = int(os.environ.get('SUDO_UID', -1))
+        self._chgrp_to = int(os.environ.get('SUDO_GID', -1))
+    else:
+      self._chown_to = -1        # don't chown
+      self._chgrp_to = -1        # don't chgrp
     if (self._flag == "n"):
       self._open(self._file_name, "wb", self._mode)
     else:
@@ -103,6 +121,11 @@ class dblite:
     except OSError: pass
     self._os_unlink(self._file_name)
     self._os_rename(self._tmp_name, self._file_name)
+    if self._os_chown is not None and self._chown_to > 0: # don't chown to root or -1
+      try:
+        self._os_chown(self._file_name, self._chown_to, self._chgrp_to)
+      except OSError:
+        pass
     self._needs_sync = 00000
     if (keep_all_files):
       self._shutil_copyfile(
diff --git a/3rdParty/SCons/scons-local/SCons/exitfuncs.py b/3rdParty/SCons/scons-local/SCons/exitfuncs.py
index ef244b5..89a5d2c 100644
--- a/3rdParty/SCons/scons-local/SCons/exitfuncs.py
+++ b/3rdParty/SCons/scons-local/SCons/exitfuncs.py
@@ -5,7 +5,7 @@ Register functions which are executed when SCons exits for any reason.
 """
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ Register functions which are executed when SCons exits for any reason.
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/engine/SCons/exitfuncs.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/engine/SCons/exitfuncs.py 4761 2010/04/04 14:04:44 bdeegan"
 
 
 
diff --git a/3rdParty/SCons/scons-time.py b/3rdParty/SCons/scons-time.py
index cbe8c42..798b675 100755
--- a/3rdParty/SCons/scons-time.py
+++ b/3rdParty/SCons/scons-time.py
@@ -9,7 +9,7 @@
 #
 
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -33,7 +33,7 @@
 
 from __future__ import nested_scopes
 
-__revision__ = "src/script/scons-time.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/script/scons-time.py 4761 2010/04/04 14:04:44 bdeegan"
 
 import getopt
 import glob
@@ -79,6 +79,17 @@ def make_temp_file(**kw):
             tempfile.template = save_template
     return result
 
+def HACK_for_exec(cmd, *args):
+    '''
+    For some reason, Python won't allow an exec() within a function
+    that also declares an internal function (including lambda functions).
+    This function is a hack that calls exec() in a function with no
+    internal functions.
+    '''
+    if not args:          exec(cmd)
+    elif len(args) == 1:  exec cmd in args[0]
+    else:                 exec cmd in args[0], args[1]
+
 class Plotter:
     def increment_size(self, largest):
         """
@@ -704,7 +715,7 @@ class SConsTimer:
         lines = open(file).readlines()
         line = [ l for l in lines if l.endswith(object_string) ][0]
         result = [ int(field) for field in line.split()[:4] ]
-        if not index is None:
+        if index is not None:
             result = result[index]
         return result
 
@@ -830,7 +841,7 @@ class SConsTimer:
                 self.title = a
 
         if self.config_file:
-            execfile(self.config_file, self.__dict__)
+            exec open(self.config_file, 'rU').read() in self.__dict__
 
         if self.chdir:
             os.chdir(self.chdir)
@@ -859,19 +870,18 @@ class SConsTimer:
 
         if format == 'ascii':
 
-            def print_function_timing(file, func):
+            for file in args:
                 try:
-                    f, line, func, time = self.get_function_profile(file, func)
+                    f, line, func, time = \
+                            self.get_function_profile(file, function_name)
                 except ValueError, e:
-                    sys.stderr.write("%s: func: %s: %s\n" % (self.name, file, e))
+                    sys.stderr.write("%s: func: %s: %s\n" %
+                                     (self.name, file, e))
                 else:
                     if f.startswith(cwd_):
                         f = f[len(cwd_):]
                     print "%.3f %s:%d(%s)" % (time, f, line, func)
 
-            for file in args:
-                print_function_timing(file, function_name)
-
         elif format == 'gnuplot':
 
             results = self.collect_results(args, self.get_function_time,
@@ -950,7 +960,7 @@ class SConsTimer:
                 self.title = a
 
         if self.config_file:
-            execfile(self.config_file, self.__dict__)
+            HACK_for_exec(open(self.config_file, 'rU').read(), self.__dict__)
 
         if self.chdir:
             os.chdir(self.chdir)
@@ -1070,7 +1080,7 @@ class SConsTimer:
         object_name = args.pop(0)
 
         if self.config_file:
-            execfile(self.config_file, self.__dict__)
+            HACK_for_exec(open(self.config_file, 'rU').read(), self.__dict__)
 
         if self.chdir:
             os.chdir(self.chdir)
@@ -1208,7 +1218,7 @@ class SConsTimer:
             sys.exit(1)
 
         if self.config_file:
-            execfile(self.config_file, self.__dict__)
+            exec open(self.config_file, 'rU').read() in self.__dict__
 
         if args:
             self.archive_list = args
@@ -1448,7 +1458,7 @@ class SConsTimer:
                 which = a
 
         if self.config_file:
-            execfile(self.config_file, self.__dict__)
+            HACK_for_exec(open(self.config_file, 'rU').read(), self.__dict__)
 
         if self.chdir:
             os.chdir(self.chdir)
diff --git a/3rdParty/SCons/scons.py b/3rdParty/SCons/scons.py
index 73aa0b5..d89b7e0 100755
--- a/3rdParty/SCons/scons.py
+++ b/3rdParty/SCons/scons.py
@@ -2,7 +2,7 @@
 #
 # SCons - a Software Constructor
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -24,17 +24,17 @@
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/script/scons.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/script/scons.py 4761 2010/04/04 14:04:44 bdeegan"
 
-__version__ = "1.2.0.d20090223"
+__version__ = "1.3.0.d20100404"
 
-__build__ = "r4043"
+__build__ = "r4761"
 
-__buildsys__ = "scons-dev"
+__buildsys__ = "cooldog"
 
-__date__ = "2009/02/23 09:06:45"
+__date__ = "2010/04/04 14:04:44"
 
-__developer__ = "scons"
+__developer__ = "bdeegan"
 
 import os
 import os.path
@@ -56,6 +56,19 @@ import sys
 # followed by generic) so we pick up the right version of the build
 # engine modules if they're in either directory.
 
+
+# Check to see if the python version is > 3.0 which is currently unsupported
+# If so exit with error message
+try:
+    if  sys.version_info >= (3,0,0):
+        msg = "scons: *** SCons version %s does not run under Python version %s.\n"
+        sys.stderr.write(msg % (__version__, sys.version.split()[0]))
+        sys.exit(1)
+except AttributeError:
+    # Pre-1.6 Python has no sys.version_info
+    # No need to check version as we then know the version is < 3.0.0 and supported
+    pass
+
 script_dir = sys.path[0]
 
 if script_dir in sys.path:
@@ -147,6 +160,19 @@ else:
         # Check /usr/libfoo/scons*.
         prefs.append(libpath)
 
+    try:
+        import pkg_resources
+    except ImportError:
+        pass
+    else:
+        # when running from an egg add the egg's directory 
+        try:
+            d = pkg_resources.get_distribution('scons')
+        except pkg_resources.DistributionNotFound:
+            pass
+        else:
+            prefs.append(d.location)
+
 # Look first for 'scons-__version__' in all of our preference libs,
 # then for 'scons'.
 libs.extend(map(lambda x: os.path.join(x, scons_version), prefs))
diff --git a/3rdParty/SCons/sconsign.py b/3rdParty/SCons/sconsign.py
index 9a97b75..c0d33d6 100755
--- a/3rdParty/SCons/sconsign.py
+++ b/3rdParty/SCons/sconsign.py
@@ -2,7 +2,7 @@
 #
 # SCons - a Software Constructor
 #
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -24,17 +24,17 @@
 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
 
-__revision__ = "src/script/sconsign.py 4043 2009/02/23 09:06:45 scons"
+__revision__ = "src/script/sconsign.py 4761 2010/04/04 14:04:44 bdeegan"
 
-__version__ = "1.2.0.d20090223"
+__version__ = "1.3.0.d20100404"
 
-__build__ = "r4043"
+__build__ = "r4761"
 
-__buildsys__ = "scons-dev"
+__buildsys__ = "cooldog"
 
-__date__ = "2009/02/23 09:06:45"
+__date__ = "2010/04/04 14:04:44"
 
-__developer__ = "scons"
+__developer__ = "bdeegan"
 
 import os
 import os.path
@@ -148,6 +148,19 @@ else:
         # Check /usr/libfoo/scons*.
         prefs.append(libpath)
 
+    try:
+        import pkg_resources
+    except ImportError:
+        pass
+    else:
+        # when running from an egg add the egg's directory 
+        try:
+            d = pkg_resources.get_distribution('scons')
+        except pkg_resources.DistributionNotFound:
+            pass
+        else:
+            prefs.append(d.location)
+
 # Look first for 'scons-__version__' in all of our preference libs,
 # then for 'scons'.
 libs.extend(map(lambda x: os.path.join(x, scons_version), prefs))
diff --git a/BuildTools/Copyrighter.py b/BuildTools/Copyrighter.py
index b6f7fa2..7f4d9f9 100755
--- a/BuildTools/Copyrighter.py
+++ b/BuildTools/Copyrighter.py
@@ -134,7 +134,7 @@ if sys.argv[1] == "check-copyright" :
 elif sys.argv[1] == "check-all-copyrights" :
   ok = True
   for (path, dirs, files) in os.walk(".") :
-    if "3rdParty" in path or ".sconf" in path :
+    if "3rdParty" in path or ".sconf" in path or "Swift.app" in path :
       continue
     for filename in [os.path.join(path, file) for file in files if (file.endswith(".cpp") or file.endswith(".h")) and not "ui_" in file and not "moc_" in file and not "qrc_" in file and not "BuildVersion.h" in file] :
       ok &= check_copyright(filename) 
@@ -148,7 +148,7 @@ elif sys.argv[1] == "set-all-copyrights" :
   (username, email) = get_userinfo()
   copyright = get_copyright(username, email)
   for (path, dirs, files) in os.walk(".") :
-    if "3rdParty" in path or ".sconf" in path :
+    if "3rdParty" in path or ".sconf" in path or "Swift.app" in path :
       continue
     for filename in [os.path.join(path, file) for file in files if (file.endswith(".cpp") or file.endswith(".h")) and not "ui_" in file and not "moc_" in file and not "qrc_" in file and not "BuildVersion.h" in file] :
       set_copyright(filename, copyright) 
-- 
cgit v0.10.2-6-g49f6