summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Tool
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2008-04-17 06:35:51 (GMT)
committerSteven Knight <knight@baldmt.com>2008-04-17 06:35:51 (GMT)
commit12ced93c8d443babcf3ba0c0a3503ed6a8fed2d9 (patch)
tree340da0ff0ef5002982fcfd5ee2a2a5e34a4bf5e0 /src/engine/SCons/Tool
parentf80d3313d70eace1274f0b5ffbdc53b19acf8250 (diff)
downloadSCons-12ced93c8d443babcf3ba0c0a3503ed6a8fed2d9.zip
SCons-12ced93c8d443babcf3ba0c0a3503ed6a8fed2d9.tar.gz
SCons-12ced93c8d443babcf3ba0c0a3503ed6a8fed2d9.tar.bz2
Merged revisions 2725-2865 via svnmerge from
http://scons.tigris.org/svn/scons/branches/core ........ r2731 | stevenknight | 2008-04-01 09:22:37 -0700 (Tue, 01 Apr 2008) | 4 lines Fix test/Interactive/version.py, which still had the old hard-coded Copyright string, by moving the test copy of the Copyright string into QMTest/TestSCons.py, where it's available to all test scripts. ........ r2732 | stevenknight | 2008-04-02 13:28:32 -0700 (Wed, 02 Apr 2008) | 3 lines Issues 317, 323, 329: Ignore the -d, -e and -w options, which we're not going to implement. ........ r2734 | stevenknight | 2008-04-05 07:50:49 -0700 (Sat, 05 Apr 2008) | 2 lines Fix bootstrap.py for pre-2.3 versions of Python, which don't have __file__. ........ r2735 | stevenknight | 2008-04-05 07:54:44 -0700 (Sat, 05 Apr 2008) | 2 lines Fix the non-breaking-hyphen regular expression(s) for Python 1.5. ........ r2736 | garyo | 2008-04-05 19:15:52 -0700 (Sat, 05 Apr 2008) | 1 line Added Users Guide section for AddMethod. ........ r2737 | stevenknight | 2008-04-08 09:43:31 -0700 (Tue, 08 Apr 2008) | 3 lines Don't raise strings as exceptions in the exception-handling unit tests. That's now deprecated Python behavior. ........ r2738 | stevenknight | 2008-04-08 10:36:00 -0700 (Tue, 08 Apr 2008) | 5 lines Address a serious inefficiency in Java builds by moving the pre-build check for whether source files exist from the Node class to the Executor class, so we only have to perform the check once when building a whole bunch of targets from a whole bunch of sources. ........ r2739 | stevenknight | 2008-04-08 13:53:44 -0700 (Tue, 08 Apr 2008) | 2 lines Add a backwards-compatibility version of the "itertools" module. ........ r2740 | stevenknight | 2008-04-08 14:12:05 -0700 (Tue, 08 Apr 2008) | 2 lines Issue 1961: speed up SCons.Util.to_String*() functions. (Benoit Belley) ........ r2741 | stevenknight | 2008-04-08 14:15:36 -0700 (Tue, 08 Apr 2008) | 2 lines Use the itertools.izip() method for some key Node.FS methods. (Benoit Belley) ........ r2742 | stevenknight | 2008-04-08 14:35:35 -0700 (Tue, 08 Apr 2008) | 2 lines Issues 1961: use izip() instead of zip() where possible (Benoit Belley) ........ r2743 | stevenknight | 2008-04-08 14:48:08 -0700 (Tue, 08 Apr 2008) | 3 lines Issue 1961: more efficient get_contents() implementation for Python function Actions. (Benoit Belley) ........ r2744 | stevenknight | 2008-04-08 17:55:30 -0700 (Tue, 08 Apr 2008) | 3 lines Issue 1961: make SCons.Node.* state variables global in Taskmaster.py so we avoid unneceesary attribute fetches. (Benoit Belley) ........ r2745 | stevenknight | 2008-04-08 20:40:31 -0700 (Tue, 08 Apr 2008) | 2 lines Issue 1961: Optimize the code in Node.get_binfo(). (Benoit Belley) ........ r2746 | stevenknight | 2008-04-08 21:05:17 -0700 (Tue, 08 Apr 2008) | 3 lines Issue 1961: Enhance the backwards-compatibility sets() module with the ability to compare sets. (Benoit Belley) ........ r2747 | stevenknight | 2008-04-08 22:11:20 -0700 (Tue, 08 Apr 2008) | 2 lines Issue 1961: Optimize Executor.scan(). (Benoit Belley) ........ r2748 | stevenknight | 2008-04-08 22:17:55 -0700 (Tue, 08 Apr 2008) | 3 lines Python 1.5 compatibility: use for p in paths.keys() for dictionaries. (Benoit Belley) ........ r2749 | stevenknight | 2008-04-08 22:54:02 -0700 (Tue, 08 Apr 2008) | 10 lines Issue 1961: additional build optimizations: -- Make taskmastertrace output more useful and readable. -- Move dependency cycle checking to avoid re-doing it. -- Have Nodes use sets, not dictionaries, to track various things. -- Eliminate intermediate function calls from fetching Node children. -- Add a Task.needs_execute() method to avoid doing that check over and over as part of needs_execute(). -- Remove the unused Node.found_includes attribute. (Benoit Belley) ........ r2750 | stevenknight | 2008-04-09 14:47:44 -0700 (Wed, 09 Apr 2008) | 4 lines Make target Java .class files depend *only* on the input .java files as their sources when determining if they require rebuilding. This eliminates O(NxM) checking for every single edge in a big, overly-connected DAG mesh. ........ r2751 | stevenknight | 2008-04-09 16:58:41 -0700 (Wed, 09 Apr 2008) | 2 lines Remove 0.95 and 0.96* release notes. ........ r2752 | stevenknight | 2008-04-10 02:24:50 -0700 (Thu, 10 Apr 2008) | 2 lines Issue 1956: Fix --debug=stree printing its tree twice. (Benoit Belley) ........ r2753 | stevenknight | 2008-04-10 02:33:28 -0700 (Thu, 10 Apr 2008) | 2 lines Issue 1896: Add support for the GDC D language compiler. (Matthew Wesley) ........ r2754 | stevenknight | 2008-04-10 02:39:24 -0700 (Thu, 10 Apr 2008) | 2 lines Fix tabs. ........ r2755 | stevenknight | 2008-04-10 02:41:50 -0700 (Thu, 10 Apr 2008) | 3 lines Issue 1964: Fix passing variable names in a list to Return() (as already documented in the man page!) (Mike Wake) ........ r2756 | stevenknight | 2008-04-10 02:55:40 -0700 (Thu, 10 Apr 2008) | 2 lines Support the ability to download 2.6 candidate releases (e.g. 2.6a2). ........ r2757 | stevenknight | 2008-04-10 02:58:35 -0700 (Thu, 10 Apr 2008) | 3 lines Issue 1669: Fix the ability to use LoadableModule() under MinGW. (Johan Boule) ........ r2758 | stevenknight | 2008-04-10 03:03:15 -0700 (Thu, 10 Apr 2008) | 3 lines Update the test/Interactive/tree.py script for Benoit's fix to remove duplicate tree printing. ........ r2759 | stevenknight | 2008-04-10 06:43:44 -0700 (Thu, 10 Apr 2008) | 3 lines Fix Tool/dmd.py when no D compiler is installed -- we don't want to search for a path if the result is None. ........ r2760 | GregNoel | 2008-04-10 15:30:34 -0700 (Thu, 10 Apr 2008) | 1 line Issue 2009: separate Debug.caller() by functionality ........ r2761 | stevenknight | 2008-04-11 04:47:25 -0700 (Fri, 11 Apr 2008) | 3 lines Issue 1882: Add the scons.bat directory to %PATH% so it can find python.exe. (Anatoly Techtonik) ........ r2762 | stevenknight | 2008-04-11 09:15:22 -0700 (Fri, 11 Apr 2008) | 4 lines Issues 1835,1901: fix the ability to list a source file multiple times for a target by making sure we only store unique entries in the .sconsign file. ........ r2763 | stevenknight | 2008-04-11 10:58:26 -0700 (Fri, 11 Apr 2008) | 4 lines Issue 1882: Fix earlier patch to scons.bat by adding ~dp0;~dp0.. to the front of %PATH%, and only executing endlocal on NT-based systems. (Anatoly Techtonik) ........ r2764 | stevenknight | 2008-04-11 13:06:29 -0700 (Fri, 11 Apr 2008) | 4 lines Add a Variables object and {Bool,Envum,List,Package,Path}Variable() functions as a first step towards eventually deprecating the Options object and {Bool,Envum,List,Package,Path}Option() functions. ........ r2765 | stevenknight | 2008-04-11 18:13:53 -0700 (Fri, 11 Apr 2008) | 3 lines Issue 1962: Capture a test case for ListActions that contain a command-line string containing unicode, and Python FunctionAction. ........ r2766 | stevenknight | 2008-04-11 22:03:14 -0700 (Fri, 11 Apr 2008) | 3 lines Issue 1933: expect .py files generated by the SWIG -python option to be in the same (sub)directory as the target. ........ r2767 | stevenknight | 2008-04-12 06:41:57 -0700 (Sat, 12 Apr 2008) | 2 lines Remove the SCons.Options package in favor of the new SCons.Variables package. ........ r2768 | stevenknight | 2008-04-12 13:33:52 -0700 (Sat, 12 Apr 2008) | 5 lines Issue 1971: Move the incorporation of $CCFLAGS and $SHCCFLAGS directly into the C++ command lines (${SHCXX,CXX}COM) instead of through indirect expansion of $CXXFLAGS and $SHCXXFLAGS. This requires removing -fPIC from the default setting of $SHCXXFLAGS under the GNU toolchain. ........ r2769 | stevenknight | 2008-04-13 07:01:27 -0700 (Sun, 13 Apr 2008) | 3 lines Fix __all__ definitions in the Variables/*Variable.py file that were cause epydoc to blow up when generating developer documentation. ........ r2770 | stevenknight | 2008-04-13 11:47:49 -0700 (Sun, 13 Apr 2008) | 3 lines Add variables= keyword argument to Environment() creation as a first step towards deprecating options=. ........ r2771 | stevenknight | 2008-04-13 11:54:19 -0700 (Sun, 13 Apr 2008) | 2 lines Correct underscore-instead-of-hyphen misspellings in option names. ........ r2772 | bdbaddog | 2008-04-13 17:39:21 -0700 (Sun, 13 Apr 2008) | 3 lines Changes to fix 15 tests which were failing on cygwin. ........ r2773 | GregNoel | 2008-04-13 22:31:07 -0700 (Sun, 13 Apr 2008) | 1 line Various fixes to tests on Darwin using 1.5.2 ........ r2774 | stevenknight | 2008-04-14 15:00:44 -0700 (Mon, 14 Apr 2008) | 2 lines Python 1.5.2 fix in new test/SWIG/subdir.py script (use the -classic option). ........ r2775 | belley | 2008-04-14 18:02:40 -0700 (Mon, 14 Apr 2008) | 32 lines Dont use KeyboardInterrupt to stop a build! [Issue 1907] SCons would often hang after pressing Ctrl-C. I started investigating and I realized that most of the Python libraries are not really safe with respect to asynchronous exceptions. Although,there are enough try/finally blocks to handle exceptions thrown synchronously by the library code, the Python libraries are not always protected against exceptions being thrown asynchronously, such as a KeyboardInterrupt being thrown at a completely random location. For example, the function Queue.empty() does not protect its mutex with a try/finally block. If the KeyboardInterrupt exception gets thrown while the mutex is held, any further attempt to access the Queue will lead to dead-lock (explaining why SCons hangs sometimes after pressing CTRL-C). Even the threading.Condition condition variables are not async-exception safe. It therefore seems a lost battle to try to stop a build by raising an exception. Instead, I have implemented a signal handler that tells the Jobs (and its associated Taskmaster) to stop the build. I have been careful to wait after the .sconsign file has been written back to re-install the default SIGINT signal handler that raises a KeyboardInterrupt exception. This patch is submitted against changeset 2773 of branches/core. The regression test suite has been run on RHEL4 using Pyhon 2.5.1 and 1.5.2. My team has been using an SCons build with this patch for a while now on Windows, Linux and OSX. See: http://scons.tigris.org/issues/show_bug.cgi?id=1907 Benoit Belley ........ r2777 | cournape | 2008-04-14 20:11:56 -0700 (Mon, 14 Apr 2008) | 3 lines Initialized merge tracking via "svnmerge" with revisions "1-2776" from http://scons.tigris.org/svn/scons/branches/fortran_refactor ........ r2788 | stevenknight | 2008-04-14 22:09:27 -0700 (Mon, 14 Apr 2008) | 2 lines Fix the print the "script" line in the --version output. ........ r2789 | stevenknight | 2008-04-14 22:18:27 -0700 (Mon, 14 Apr 2008) | 2 lines Add a __COPYRIGHT__ line. ........ r2790 | stevenknight | 2008-04-14 22:20:39 -0700 (Mon, 14 Apr 2008) | 3 lines Issue 2008: in checkpoint releases, use a '.' to separate (e.g.) 0.98.0 from 0d20080414. ........ r2817 | belley | 2008-04-15 06:44:21 -0700 (Tue, 15 Apr 2008) | 13 lines TestSCons.up_to_date() should use match_re_dotall I changed TestSCons.up_to_date() to use match_re_dotall instead of match_exact. This is necessary so that I can call up_to_date() with the TestSCons.deprecated_python_expr error message in one of my test. Note that TestSCons.not_up_to_date() is already using match_re_dotall. Ran the test suite on both Python 2.5.1 and 1.5.2. Benoit ........ r2818 | belley | 2008-04-15 12:10:52 -0700 (Tue, 15 Apr 2008) | 10 lines Improved the multiple-parents.py test to also tests the following cases: d) Some children are ignored e) Some children are pre-requesites f) Some sources are missing The test still passes. No extra bug were found. ........ r2850 | stevenknight | 2008-04-16 11:15:24 -0700 (Wed, 16 Apr 2008) | 4 lines Fix problems with the __del__() method referencing other module functions through global variables, which can get deleted out from under us at shutdown. ........ r2851 | stevenknight | 2008-04-16 11:17:07 -0700 (Wed, 16 Apr 2008) | 4 lines Fix use of --interactive with -u/-U/-D and VariantDir() by making the method that cleans Node states between interactive commands aware of the alter_targets() method that tells us about an associated VariantDir(). ........
Diffstat (limited to 'src/engine/SCons/Tool')
-rw-r--r--src/engine/SCons/Tool/ToolTests.py1
-rw-r--r--src/engine/SCons/Tool/__init__.py4
-rw-r--r--src/engine/SCons/Tool/c++.py10
-rw-r--r--src/engine/SCons/Tool/dmd.py32
-rw-r--r--src/engine/SCons/Tool/dmd.xml3
-rw-r--r--src/engine/SCons/Tool/g++.py10
-rw-r--r--src/engine/SCons/Tool/intelc.py6
-rw-r--r--src/engine/SCons/Tool/javac.py10
-rw-r--r--src/engine/SCons/Tool/mingw.py1
-rw-r--r--src/engine/SCons/Tool/mingw.xml1
-rw-r--r--src/engine/SCons/Tool/packaging/__init__.py12
-rw-r--r--src/engine/SCons/Tool/swig.py3
12 files changed, 53 insertions, 40 deletions
diff --git a/src/engine/SCons/Tool/ToolTests.py b/src/engine/SCons/Tool/ToolTests.py
index b9230f1..779aaaa 100644
--- a/src/engine/SCons/Tool/ToolTests.py
+++ b/src/engine/SCons/Tool/ToolTests.py
@@ -54,7 +54,6 @@ class ToolTestCase(unittest.TestCase):
t = SCons.Tool.Tool('g++')
t(env)
assert (env['CXX'] == 'c++' or env['CXX'] == 'g++'), env['CXX']
- assert env['CXXFLAGS'] == ['$CCFLAGS'], env['CXXFLAGS']
assert env['INCPREFIX'] == '-I', env['INCPREFIX']
assert env['TOOLS'] == ['g++'], env['TOOLS']
diff --git a/src/engine/SCons/Tool/__init__.py b/src/engine/SCons/Tool/__init__.py
index 1e69f1e..e0ada5e 100644
--- a/src/engine/SCons/Tool/__init__.py
+++ b/src/engine/SCons/Tool/__init__.py
@@ -163,10 +163,10 @@ class Tool:
kw = self.init_kw
env.Append(TOOLS = [ self.name ])
if hasattr(self, 'options'):
- from SCons.Options import Options
+ import SCons.Variables
if not env.has_key('options'):
from SCons.Script import ARGUMENTS
- env['options']=Options(args=ARGUMENTS)
+ env['options']=SCons.Variables.Variables(args=ARGUMENTS)
opts=env['options']
self.options(opts)
diff --git a/src/engine/SCons/Tool/c++.py b/src/engine/SCons/Tool/c++.py
index d9370b0..a4375c0 100644
--- a/src/engine/SCons/Tool/c++.py
+++ b/src/engine/SCons/Tool/c++.py
@@ -71,13 +71,13 @@ def generate(env):
shared_obj.add_emitter(suffix, SCons.Defaults.SharedObjectEmitter)
SCons.Tool.cc.add_common_cc_variables(env)
-
+
env['CXX'] = 'c++'
- env['CXXFLAGS'] = SCons.Util.CLVar('$CCFLAGS')
- env['CXXCOM'] = '$CXX -o $TARGET -c $CXXFLAGS $_CCCOMCOM $SOURCES'
+ env['CXXFLAGS'] = SCons.Util.CLVar('')
+ env['CXXCOM'] = '$CXX -o $TARGET -c $CXXFLAGS $CCFLAGS $_CCCOMCOM $SOURCES'
env['SHCXX'] = '$CXX'
- env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS')
- env['SHCXXCOM'] = '$SHCXX -o $TARGET -c $SHCXXFLAGS $_CCCOMCOM $SOURCES'
+ env['SHCXXFLAGS'] = SCons.Util.CLVar('')
+ env['SHCXXCOM'] = '$SHCXX -o $TARGET -c $SHCXXFLAGS $SHCCFLAGS $_CCCOMCOM $SOURCES'
env['CPPDEFPREFIX'] = '-D'
env['CPPDEFSUFFIX'] = ''
diff --git a/src/engine/SCons/Tool/dmd.py b/src/engine/SCons/Tool/dmd.py
index 64ffb68..a173162 100644
--- a/src/engine/SCons/Tool/dmd.py
+++ b/src/engine/SCons/Tool/dmd.py
@@ -14,14 +14,15 @@ use absolute paths. To hack around it, add '#/blah'. This will link
blah.lib from the directory where SConstruct resides.
Compiler variables:
- DC - The name of the D compiler to use. Defaults to dmd.
+ DC - The name of the D compiler to use. Defaults to dmd or gdmd,
+ whichever is found.
DPATH - List of paths to search for import modules.
DVERSIONS - List of version tags to enable when compiling.
DDEBUG - List of debug tags to enable when compiling.
Linker related variables:
LIBS - List of library files to link in.
- DLINK - Name of the linker to use. Defaults to dmd.
+ DLINK - Name of the linker to use. Defaults to dmd or gdmd.
DLINKFLAGS - List of linker flags.
Lib tool variables:
@@ -93,7 +94,8 @@ def generate(env):
static_obj.add_emitter('.d', SCons.Defaults.StaticObjectEmitter)
shared_obj.add_emitter('.d', SCons.Defaults.SharedObjectEmitter)
- env['DC'] = 'dmd'
+ dc = env.Detect(['dmd', 'gdmd'])
+ env['DC'] = dc
env['DCOM'] = '$DC $_DINCFLAGS $_DVERFLAGS $_DDEBUGFLAGS $_DFLAGS -c -of$TARGET $SOURCES'
env['_DINCFLAGS'] = '$( ${_concat(DINCPREFIX, DPATH, DINCSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)'
env['_DVERFLAGS'] = '$( ${_concat(DVERPREFIX, DVERSIONS, DVERSUFFIX, __env__)} $)'
@@ -105,14 +107,15 @@ def generate(env):
env['DVERSIONS'] = []
env['DDEBUG'] = []
- # Add the path to the standard library.
- # This is merely for the convenience of the dependency scanner.
- dmd_path = env.WhereIs('dmd')
- if dmd_path:
- x = string.rindex(dmd_path, 'dmd')
- phobosDir = dmd_path[:x] + '/../src/phobos'
- if os.path.isdir(phobosDir):
- env.Append(DPATH = [phobosDir])
+ if dc:
+ # Add the path to the standard library.
+ # This is merely for the convenience of the dependency scanner.
+ dmd_path = env.WhereIs(dc)
+ if dmd_path:
+ x = string.rindex(dmd_path, dc)
+ phobosDir = dmd_path[:x] + '/../src/phobos'
+ if os.path.isdir(phobosDir):
+ env.Append(DPATH = [phobosDir])
env['DINCPREFIX'] = '-I'
env['DINCSUFFIX'] = ''
@@ -198,7 +201,10 @@ def generate(env):
except KeyError:
libs = []
if 'phobos' not in libs:
- env.Append(LIBS = ['phobos'])
+ if dc is 'dmd':
+ env.Append(LIBS = ['phobos'])
+ elif dc is 'gdmd':
+ env.Append(LIBS = ['gphobos'])
if 'pthread' not in libs:
env.Append(LIBS = ['pthread'])
if 'm' not in libs:
@@ -209,4 +215,4 @@ def generate(env):
env['LINKCOM'] = '$SMART_LINKCOM '
def exists(env):
- return env.Detect('dmd')
+ return env.Detect(['dmd', 'gdmd'])
diff --git a/src/engine/SCons/Tool/dmd.xml b/src/engine/SCons/Tool/dmd.xml
index cab3ab4..835a4eb 100644
--- a/src/engine/SCons/Tool/dmd.xml
+++ b/src/engine/SCons/Tool/dmd.xml
@@ -6,7 +6,8 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="dmd">
<summary>
-Sets construction variables for the Digital Mars D compiler.
+Sets construction variables for D language compilers
+(the Digital Mars D compiler, or GDC).
</summary>
<sets>
<!--
diff --git a/src/engine/SCons/Tool/g++.py b/src/engine/SCons/Tool/g++.py
index 0576b90..9c7e477 100644
--- a/src/engine/SCons/Tool/g++.py
+++ b/src/engine/SCons/Tool/g++.py
@@ -63,18 +63,16 @@ def generate(env):
env['SHOBJSUFFIX'] = '$OBJSUFFIX'
elif env['PLATFORM'] == 'hpux':
# Original line from Christian Engel added -DPIC:
- #env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS -fPIC -DPIC')
- env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS -fPIC')
+ #env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS -DPIC')
env['SHOBJSUFFIX'] = '.pic.o'
elif env['PLATFORM'] == 'sunos':
# Original line from Christian Engel added -DPIC:
- #env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS -fPIC -DPIC')
- env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS -fPIC')
+ #env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS -DPIC')
env['SHOBJSUFFIX'] = '.pic.o'
else:
# Original line from Christian Engel added -DPIC:
- #env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS -fPIC -DPIC')
- env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS -fPIC')
+ #env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS -DPIC')
+ pass
# determine compiler version
if env['CXX']:
line = os.popen(env['CXX'] + ' --version').readline()
diff --git a/src/engine/SCons/Tool/intelc.py b/src/engine/SCons/Tool/intelc.py
index 02cc52a..db5d06e 100644
--- a/src/engine/SCons/Tool/intelc.py
+++ b/src/engine/SCons/Tool/intelc.py
@@ -375,14 +375,14 @@ def generate(env, version=None, abi=None, topdir=None, verbose=0):
'LIB' : 'lib',
'PATH' : 'bin',
'LD_LIBRARY_PATH' : 'lib'}
- for p in paths:
+ for p in paths.keys():
env.PrependENVPath(p, os.path.join(topdir, paths[p]))
if is_mac:
paths={'INCLUDE' : 'include',
'LIB' : 'lib',
'PATH' : 'bin',
'LD_LIBRARY_PATH' : 'lib'}
- for p in paths:
+ for p in paths.keys():
env.PrependENVPath(p, os.path.join(topdir, paths[p]))
if is_windows:
# env key reg valname default subdir of top
@@ -394,7 +394,7 @@ def generate(env, version=None, abi=None, topdir=None, verbose=0):
if version is None:
version = ''
# Each path has a registry entry, use that or default to subdir
- for p in paths:
+ for p in paths.keys():
try:
path=get_intel_registry_value(p[1], version, abi)
# These paths may have $(ICInstallDir)
diff --git a/src/engine/SCons/Tool/javac.py b/src/engine/SCons/Tool/javac.py
index a020727..cb79301 100644
--- a/src/engine/SCons/Tool/javac.py
+++ b/src/engine/SCons/Tool/javac.py
@@ -92,8 +92,9 @@ def emit_java_classes(target, source, env):
raise SCons.Errors.UserError("Java source must be File or Dir, not '%s'" % entry.__class__)
version = env.get('JAVAVERSION', '1.4')
- tlist = []
+ full_tlist = []
for f in slist:
+ tlist = []
source_file_based = True
pkg_dir = None
if not f.is_derived():
@@ -124,7 +125,12 @@ def emit_java_classes(target, source, env):
t.attributes.java_classname = classname(base)
tlist.append(t)
- return tlist, slist
+ for t in tlist:
+ t.set_specific_source([f])
+
+ full_tlist.extend(tlist)
+
+ return full_tlist, slist
JavaAction = SCons.Action.Action('$JAVACCOM', '$JAVACCOMSTR')
diff --git a/src/engine/SCons/Tool/mingw.py b/src/engine/SCons/Tool/mingw.py
index 359c40f..8c5e68a 100644
--- a/src/engine/SCons/Tool/mingw.py
+++ b/src/engine/SCons/Tool/mingw.py
@@ -122,6 +122,7 @@ def generate(env):
env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS')
env['SHLINKFLAGS'] = SCons.Util.CLVar('$LINKFLAGS -shared')
env['SHLINKCOM'] = shlib_action
+ env['LDMODULECOM'] = shlib_action
env.Append(SHLIBEMITTER = [shlib_emitter])
env['AS'] = 'as'
diff --git a/src/engine/SCons/Tool/mingw.xml b/src/engine/SCons/Tool/mingw.xml
index 048124c..f3354c1 100644
--- a/src/engine/SCons/Tool/mingw.xml
+++ b/src/engine/SCons/Tool/mingw.xml
@@ -15,6 +15,7 @@ CXX
SHCXXFLAGS
SHLINKFLAGS
SHLINKCOM
+LDMODULECOM
AS
WINDOWSDEFPREFIX
WINDOWSDEFSUFFIX
diff --git a/src/engine/SCons/Tool/packaging/__init__.py b/src/engine/SCons/Tool/packaging/__init__.py
index 79cd4ab..02be24f 100644
--- a/src/engine/SCons/Tool/packaging/__init__.py
+++ b/src/engine/SCons/Tool/packaging/__init__.py
@@ -29,7 +29,7 @@ SCons Packaging Tool.
__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
import SCons.Environment
-from SCons.Options import *
+from SCons.Variables import *
from SCons.Errors import *
from SCons.Util import is_List, make_path_relative
from SCons.Warnings import warn, Warning
@@ -217,11 +217,11 @@ def exists(env):
# XXX
def options(opts):
- opts.AddOptions(
- EnumOption( 'PACKAGETYPE',
- 'the type of package to create.',
- None, allowed_values=map( str, __all__ ),
- ignorecase=2
+ opts.AddVariables(
+ EnumVariable( 'PACKAGETYPE',
+ 'the type of package to create.',
+ None, allowed_values=map( str, __all__ ),
+ ignorecase=2
)
)
diff --git a/src/engine/SCons/Tool/swig.py b/src/engine/SCons/Tool/swig.py
index eba49a7..16f938e 100644
--- a/src/engine/SCons/Tool/swig.py
+++ b/src/engine/SCons/Tool/swig.py
@@ -62,7 +62,8 @@ def _swigEmitter(target, source, env):
if "-python" in flags and "-noproxy" not in flags:
if mnames is None:
mnames = _reModule.findall(open(src).read())
- target.extend(map(lambda m: m + ".py", mnames))
+ target.extend(map(lambda m, d=target[0].dir:
+ d.File(m + ".py"), mnames))
if "-java" in flags:
if mnames is None:
mnames = _reModule.findall(open(src).read())