summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--HOWTO/release.txt3
-rw-r--r--QMTest/TestSCons.py2
-rw-r--r--README129
-rw-r--r--SConstruct2
-rw-r--r--bin/SConsDoc.py9
-rw-r--r--bin/scons-proc.py27
-rw-r--r--debian/changelog6
-rw-r--r--doc/SConscript4
-rw-r--r--doc/scons.mod60
-rw-r--r--rpm/scons.spec.in2
-rw-r--r--src/CHANGES.txt14
-rw-r--r--src/README.txt46
-rw-r--r--src/RELEASE.txt81
-rw-r--r--src/engine/SCons/Node/NodeTests.py5
-rw-r--r--src/engine/SCons/Node/__init__.py15
-rw-r--r--src/engine/SCons/Scanner/Dir.py12
-rw-r--r--src/engine/SCons/Scanner/DirTests.py15
-rw-r--r--src/engine/SCons/Taskmaster.py9
-rw-r--r--src/engine/SCons/TaskmasterTests.py9
-rw-r--r--src/engine/SCons/Tool/386asm.xml16
-rw-r--r--src/engine/SCons/Tool/BitKeeper.xml12
-rw-r--r--src/engine/SCons/Tool/CVS.xml12
-rw-r--r--src/engine/SCons/Tool/Perforce.xml11
-rw-r--r--src/engine/SCons/Tool/RCS.xml12
-rw-r--r--src/engine/SCons/Tool/SCCS.xml12
-rw-r--r--src/engine/SCons/Tool/Subversion.xml12
-rw-r--r--src/engine/SCons/Tool/aixc++.xml10
-rw-r--r--src/engine/SCons/Tool/aixcc.xml9
-rw-r--r--src/engine/SCons/Tool/aixf77.xml8
-rw-r--r--src/engine/SCons/Tool/aixlink.xml10
-rw-r--r--src/engine/SCons/Tool/applelink.xml22
-rw-r--r--src/engine/SCons/Tool/ar.xml14
-rw-r--r--src/engine/SCons/Tool/as.xml15
-rw-r--r--src/engine/SCons/Tool/bcc32.xml23
-rw-r--r--src/engine/SCons/Tool/c++.xml23
-rw-r--r--src/engine/SCons/Tool/cc.xml39
-rw-r--r--src/engine/SCons/Tool/cvf.xml21
-rw-r--r--src/engine/SCons/Tool/default.xml3
-rw-r--r--src/engine/SCons/Tool/dmd.xml43
-rw-r--r--src/engine/SCons/Tool/dvi.xml11
-rw-r--r--src/engine/SCons/Tool/dvipdf.xml10
-rw-r--r--src/engine/SCons/Tool/dvips.xml12
-rw-r--r--src/engine/SCons/Tool/f77.xml50
-rw-r--r--src/engine/SCons/Tool/f90.xml38
-rw-r--r--src/engine/SCons/Tool/f95.xml39
-rw-r--r--src/engine/SCons/Tool/fortran.xml37
-rw-r--r--src/engine/SCons/Tool/g++.xml9
-rw-r--r--src/engine/SCons/Tool/g77.xml4
-rw-r--r--src/engine/SCons/Tool/gas.xml6
-rw-r--r--src/engine/SCons/Tool/gcc.xml7
-rw-r--r--src/engine/SCons/Tool/gnulink.xml7
-rw-r--r--src/engine/SCons/Tool/gs.xml10
-rw-r--r--src/engine/SCons/Tool/hpc++.xml2
-rw-r--r--src/engine/SCons/Tool/hpcc.xml9
-rw-r--r--src/engine/SCons/Tool/hplink.xml7
-rw-r--r--src/engine/SCons/Tool/icc.xml21
-rw-r--r--src/engine/SCons/Tool/icl.xml3
-rw-r--r--src/engine/SCons/Tool/ifl.xml15
-rw-r--r--src/engine/SCons/Tool/ifort.xml7
-rw-r--r--src/engine/SCons/Tool/ilink.xml14
-rw-r--r--src/engine/SCons/Tool/ilink32.xml14
-rw-r--r--src/engine/SCons/Tool/intelc.xml16
-rw-r--r--src/engine/SCons/Tool/jar.xml11
-rw-r--r--src/engine/SCons/Tool/javac.xml12
-rw-r--r--src/engine/SCons/Tool/javah.xml11
-rw-r--r--src/engine/SCons/Tool/latex.xml10
-rw-r--r--src/engine/SCons/Tool/lex.xml10
-rw-r--r--src/engine/SCons/Tool/link.xml25
-rw-r--r--src/engine/SCons/Tool/linkloc.xml22
-rw-r--r--src/engine/SCons/Tool/m4.xml10
-rw-r--r--src/engine/SCons/Tool/masm.xml17
-rw-r--r--src/engine/SCons/Tool/midl.xml36
-rw-r--r--src/engine/SCons/Tool/mingw.xml28
-rw-r--r--src/engine/SCons/Tool/mslib.xml14
-rw-r--r--src/engine/SCons/Tool/mslink.xml45
-rw-r--r--src/engine/SCons/Tool/msvc.xml85
-rw-r--r--src/engine/SCons/Tool/msvs.xml81
-rw-r--r--src/engine/SCons/Tool/mwcc.xml30
-rw-r--r--src/engine/SCons/Tool/mwld.xml18
-rw-r--r--src/engine/SCons/Tool/nasm.xml14
-rw-r--r--src/engine/SCons/Tool/pdf.xml10
-rw-r--r--src/engine/SCons/Tool/pdflatex.xml40
-rw-r--r--src/engine/SCons/Tool/pdftex.xml44
-rw-r--r--src/engine/SCons/Tool/qt.xml34
-rw-r--r--src/engine/SCons/Tool/rmic.xml11
-rw-r--r--src/engine/SCons/Tool/rpcgen.xml12
-rw-r--r--src/engine/SCons/Tool/sgiar.xml15
-rw-r--r--src/engine/SCons/Tool/sgic++.xml9
-rw-r--r--src/engine/SCons/Tool/sgicc.xml9
-rw-r--r--src/engine/SCons/Tool/sgilink.xml8
-rw-r--r--src/engine/SCons/Tool/sunar.xml16
-rw-r--r--src/engine/SCons/Tool/sunc++.xml10
-rw-r--r--src/engine/SCons/Tool/suncc.xml8
-rw-r--r--src/engine/SCons/Tool/sunlink.xml7
-rw-r--r--src/engine/SCons/Tool/swig.xml12
-rw-r--r--src/engine/SCons/Tool/tar.xml11
-rw-r--r--src/engine/SCons/Tool/tex.xml22
-rw-r--r--src/engine/SCons/Tool/tlib.xml13
-rw-r--r--src/engine/SCons/Tool/yacc.xml13
-rw-r--r--src/engine/SCons/Tool/zip.xml18
-rw-r--r--src/setup.py2
-rw-r--r--test/Dir/Dir.py (renamed from test/Dir.py)0
-rw-r--r--test/Dir/mixed-targets.py70
-rw-r--r--test/Dir/source.py (renamed from test/DirSource.py)0
-rw-r--r--test/Parallel/ref_count.py153
-rw-r--r--test/Perforce/Perforce.py12
-rw-r--r--test/TEX/bibtex-latex-rerun.py8
-rw-r--r--test/import.py11
108 files changed, 1872 insertions, 310 deletions
diff --git a/HOWTO/release.txt b/HOWTO/release.txt
index a29b37bf..ca462639 100644
--- a/HOWTO/release.txt
+++ b/HOWTO/release.txt
@@ -102,6 +102,9 @@ Things to do to release a new X.Y version of SCons:
aecp QMTest/TestSCons.py
vi QMTest/TestSCons.py
+ aecp src/setup.py
+ vi src/setup.py
+
# Read through and update the README files if necessary
[optional] aecp README
[optional] vi README
diff --git a/QMTest/TestSCons.py b/QMTest/TestSCons.py
index 1b499ded..196c24ef 100644
--- a/QMTest/TestSCons.py
+++ b/QMTest/TestSCons.py
@@ -30,7 +30,7 @@ from TestCommon import __all__
# to what we expect. (If we derived the version number from the same
# data driving the build we might miss errors if the logic breaks.)
-SConsVersion = '0.96.96'
+SConsVersion = '0.97'
__all__.extend([ 'TestSCons',
'python',
diff --git a/README b/README
index 699d1b51..6eecb8c4 100644
--- a/README
+++ b/README
@@ -10,12 +10,12 @@ If all you want to do is install and run SCons, it will be easier for you
to download and install the scons-{version}.tar.gz or scons-{version}.zip
package rather than to work with the packaging logic in this tree.
-To the extent that this tree is about building SCons packages, the
-*full* development cycle (enforced by Aegis) is not to test the code
-directly, but to package SCons, unpack the package, "install" SCons in
-a test subdirectory, and then to run the tests against the unpacked and
-installed software. This helps eliminate problems caused by, for example,
-failure to update the list of files to be packaged.
+To the extent that this tree is about building SCons packages, the *full*
+development cycle is not just to test the code directly, but to package
+SCons, unpack the package, "install" SCons in a test subdirectory,
+and then to run the tests against the unpacked and installed software.
+This helps eliminate problems caused by, for example, failure to update
+the list of files to be packaged.
For just working on making an individual change to the SCons source,
however, you don't actually need to build or install SCons; you
@@ -83,11 +83,11 @@ In this case, your options are:
-- (Optional.) Install from a pre-packaged SCons package that
does not require distutils:
- Red Hat Linux scons-0.96.96.noarch.rpm
+ Red Hat Linux scons-0.97.noarch.rpm
Debian GNU/Linux use apt-get to get the official package
- Windows scons-0.96.96.win32.exe
+ Windows scons-0.97.win32.exe
-- (Recommended.) Download the latest distutils package from the
following URL:
@@ -132,7 +132,7 @@ bootstrap/ subdirectory and executing it from there.
You can also execute the local SCons directly from the src/ subdirectory
by first setting the SCONS_LIB_DIR environment variable to the local
-src/engine subdirectory, and then execute the local src/script/scons.py
+src/engine subdirectory, and then executing the local src/script/scons.py
script to populate the build/scons/ subdirectory. You would do this as
follows on a Linux or UNIX system (using sh or a derivative like bash
or ksh):
@@ -159,7 +159,7 @@ And on Windows:
By default, the above commands will do the following:
- -- Install the version-numbered "scons-0.96.96" and "sconsign-0.96.96"
+ -- Install the version-numbered "scons-0.97" and "sconsign-0.97"
scripts in the default system script directory (/usr/bin or
C:\Python*\Scripts, for example). This can be disabled by
specifying the "--no-version-script" option on the command
@@ -170,25 +170,27 @@ By default, the above commands will do the following:
for example). This can be disabled by specifying the
"--no-scons-script" option on the command line, which is useful
if you want to install and experiment with a new version before
- making it the default on your system. On UNIX or Linux systems,
- you can have the "scons" and "sconsign" scripts be hard links or
- symbolic links to the "scons-0.96.96" and "sconsign-0.96.96" scripts
- by specifying the "--hardlink-scons" or "--symlink-scons"
- options on the command line.
+ making it the default on your system.
- -- Install "scons-0.96.96.bat" and "scons.bat" wrapper scripts in the
+ On UNIX or Linux systems, you can have the "scons" and "sconsign"
+ scripts be hard links or symbolic links to the "scons-0.97" and
+ "sconsign-0.97" scripts by specifying the "--hardlink-scons" or
+ "--symlink-scons" options on the command line.
+
+ -- Install "scons-0.97.bat" and "scons.bat" wrapper scripts in the
Python prefix directory on Windows (C:\Python*, for example).
This can be disabled by specifying the "--no-install-bat" option
- on the command line. On UNIX or Linux systems, the
- "--install-bat" option may be specified to have "scons-0.96.96.bat"
- and "scons.bat" files installed in the default system script
- directory, which is useful if you want to install SCons in a
- shared file system directory that can be used to execute SCons
- from both UNIX/Linux and Windows systems.
+ on the command line.
+
+ On UNIX or Linux systems, the "--install-bat" option may be
+ specified to have "scons-0.97.bat" and "scons.bat" files installed
+ in the default system script directory, which is useful if you
+ want to install SCons in a shared file system directory that can
+ be used to execute SCons from both UNIX/Linux and Windows systems.
-- Install the SCons build engine (a Python module) in an
appropriate version-numbered SCons library directory
- (/usr/lib/scons-0.96.96 or C:\Python*\scons-0.96.96, for example).
+ (/usr/lib/scons-0.97 or C:\Python*\scons-0.97, for example).
See below for more options related to installing the build
engine library.
@@ -244,9 +246,9 @@ the src/engine/SCons subdirectory hierarchy that contains all of the
modules that make up SCons. The src/script/scons.py wrapper script exists
mainly to find the appropriate build engine library and then execute it.
-In order to make your own change locally and test them by hand, simply
-edit modules in the local src/engine/SCons subdirectory tree and
-either use the local bootstrap.py script:
+In order to make your own changes locally and test them by hand, simply
+edit modules in the local src/engine/SCons subdirectory tree and either
+use the local bootstrap.py script:
$ python bootstrap.py [arguments]
@@ -255,13 +257,13 @@ then execute the src/script/scons.py script. Here is one way you can
set up environment variables to do this on a UNIX or Linux system:
$ setenv MYSCONS=`pwd`/src
- $ setenv SCONS_LIB_DIR=$MYSCONS
+ $ setenv SCONS_LIB_DIR=$MYSCONS/engine
$ python $MYSCONS/script/scons.py [arguments]
Or on Windows:
C:\scons>set MYSCONS=%cd%\src
- C:\scons>set SCONS_LIB_DIR=%MYSCONS%
+ C:\scons>set SCONS_LIB_DIR=%MYSCONS%\engine
C:\scons>python %MYSCONS%\script\scons.py [arguments]
You can use the -C option to have SCons change directory to another
@@ -329,7 +331,7 @@ will print messages to your console screen ("/dev/tty" on UNIX or Linux,
"con" on Windows). By adding Trace() calls to the SCons source code:
def sample_method(self, value):
- fromn SCons.Debug import Trace
+ from SCons.Debug import Trace
Trace('called sample_method(%s, %s)\n' % (self, value))
You can then run automated tests that print any arbitrary information
@@ -340,7 +342,7 @@ The Trace() function can also redirect its output to a file, rather than
the screen:
def sample_method(self, value):
- fromn SCons.Debug import Trace
+ from SCons.Debug import Trace
Trace('called sample_method(%s, %s)\n' % (self, value),
file='trace.out')
@@ -461,7 +463,7 @@ development platform, Windows users can translate as appropriate)):
^D
$
- -- Now debug the test failures and fix them, either by changing
+ -- Now debug the test failures and fix them, either by changing
SCons, or by making necessary changes to the tests (if, for
example, you have a strong reason to change functionality, or
if you find that the bug really is in the test script itself).
@@ -475,10 +477,10 @@ development platform, Windows users can translate as appropriate)):
Repeat this until all of the tests that originally failed
now pass.
- -- Now you need to go back and validate that any changes you
- made while getting the tests to pass didn't break the fix you
- originally put in, or introduce any *additional* unintended side
- effects that broke other tests:
+ -- Now you need to go back and validate that any changes you
+ made while getting the tests to pass didn't break the fix
+ you originally put in, and didn't introduce any *additional*
+ unintended side effects that broke other tests:
$ python script/scons.py -C /home/me/broken_project .
$ python runtest.py -a
@@ -486,8 +488,8 @@ development platform, Windows users can translate as appropriate)):
If you find any newly-broken tests, add them to your "failed.txt"
file and go back to the previous step.
-Of course, the above is only one suggested workflow. In practice, there's
-a lot of room for judgment and experience to make things go quicker.
+Of course, the above is only one suggested workflow. In practice, there
+is a lot of room for judgment and experience to make things go quicker.
For example, if you're making a change to just the Java support, you
might start looking for regressions by just running the test/Java/*.py
tests instead of running all of "runtest.py -a".
@@ -525,18 +527,18 @@ On Windows:
Depending on the utilities installed on your system, any or all of the
following packages will be built:
- build/dist/scons-0.96.96-1.noarch.rpm
- build/dist/scons-0.96.96-1.src.rpm
- build/dist/scons-0.96.96.linux-i686.tar.gz
- build/dist/scons-0.96.96.tar.gz
- build/dist/scons-0.96.96.win32.exe
- build/dist/scons-0.96.96.zip
- build/dist/scons-doc-0.96.96.tar.gz
- build/dist/scons-local-0.96.96.tar.gz
- build/dist/scons-local-0.96.96.zip
- build/dist/scons-src-0.96.96.tar.gz
- build/dist/scons-src-0.96.96.zip
- build/dist/scons_0.96.96-1_all.deb
+ build/dist/scons-0.97-1.noarch.rpm
+ build/dist/scons-0.97-1.src.rpm
+ build/dist/scons-0.97.linux-i686.tar.gz
+ build/dist/scons-0.97.tar.gz
+ build/dist/scons-0.97.win32.exe
+ build/dist/scons-0.97.zip
+ build/dist/scons-doc-0.97.tar.gz
+ build/dist/scons-local-0.97.tar.gz
+ build/dist/scons-local-0.97.zip
+ build/dist/scons-src-0.97.tar.gz
+ build/dist/scons-src-0.97.zip
+ build/dist/scons_0.97-1_all.deb
The SConstruct file is supposed to be smart enough to avoid trying to
build packages for which you don't have the proper utilities installed.
@@ -609,6 +611,9 @@ bin/
SCons itself
-- a copy of xml_export, which can retrieve project data
from SourceForge
+ -- scripts and a Python module for translating the SCons
+ home-brew XML documentation tags into DocBook and
+ man page format
bootstrap.py
A build script for use with Aegis. This collects a current copy
@@ -636,12 +641,6 @@ doc/
SCons documentation. A variety of things here, in various
stages of (in)completeness.
-etc/
- A subdirectory for miscellaneous things that we need. Right
- now, it has copies of Python modules that we use for testing,
- and which we don't want to force people to have to install on
- their own just to help out with SCons development.
-
gentoo/
Stuff to generate files for Gentoo Linux.
@@ -661,6 +660,10 @@ LICENSE-local
the licensing terms are for SCons itself, not any other
package that includes SCons.
+QMTest/
+ The Python modules we use for testing, some generic modules
+ originating elsewhere and some specific to SCons.
+
README
What you're looking at right now.
@@ -738,18 +741,18 @@ available at:
REPORTING BUGS
==============
-Please report bugs by following the "Tracker - Bugs" link on the SCons
-project page and filling out the form:
+Please report bugs by following the detailed instructions on our Bug
+Submission page:
- http://sourceforge.net/projects/scons/
+ http://scons.tigris.org/bug-submission.html
-You can also send mail to the SCons developers mailing list:
+You can also send mail to the SCons developers' mailing list:
- scons-devel@lists.sourceforge.net
+ dev@scons.tigris.org
-But please make sure that you also submit a bug report to the project
-page bug tracker, because bug reports in email can sometimes get lost
-in the general flood of messages.
+But even if you send email to the mailing list please make sure that you
+ALSO submit a bug report to the project page bug tracker, because bug
+reports in email often get overlooked in the general flood of messages.
MAILING LISTS
diff --git a/SConstruct b/SConstruct
index f0d8c1a3..a81b37ba 100644
--- a/SConstruct
+++ b/SConstruct
@@ -45,7 +45,7 @@ import sys
import time
project = 'scons'
-default_version = '0.96.96'
+default_version = '0.97'
copyright = "Copyright (c) %s The SCons Foundation" % copyright_years
SConsignFile()
diff --git a/bin/SConsDoc.py b/bin/SConsDoc.py
index 57bf1d4d..96625b46 100644
--- a/bin/SConsDoc.py
+++ b/bin/SConsDoc.py
@@ -94,6 +94,7 @@ class Item:
if self.sort_name[0] == '_':
self.sort_name = self.sort_name[1:]
self.summary = []
+ self.sets = None
self.uses = None
def cmp_name(self, name):
if name[0] == '_':
@@ -284,6 +285,14 @@ class SConsDocHandler(xml.sax.handler.ContentHandler,
self.begin_collecting([])
def end_uses(self):
self.current_object.uses = ''.join(self.collect).split()
+ self.current_object.uses.sort()
+ self.end_collecting()
+
+ def start_sets(self, attrs):
+ self.begin_collecting([])
+ def end_sets(self):
+ self.current_object.sets = ''.join(self.collect).split()
+ self.current_object.sets.sort()
self.end_collecting()
# Stuff for the ErrorHandler portion.
diff --git a/bin/scons-proc.py b/bin/scons-proc.py
index d55016fe..fc60a9bd 100644
--- a/bin/scons-proc.py
+++ b/bin/scons-proc.py
@@ -23,8 +23,8 @@ import SConsDoc
base_sys_path = [os.getcwd() + '/build/test-tar-gz/lib/scons'] + sys.path
helpstr = """\
-Usage: scons-proc.py [--man|--sgml] \
- [-b file(s)] [-t file(s)] [-v file(s)] [infile ...]
+Usage: scons-proc.py [--man|--sgml]
+ [-b file(s)] [-t file(s)] [-v file(s)] [infile ...]
Options:
-b file(s) dump builder information to the specified file(s)
-t file(s) dump tool information to the specified file(s)
@@ -36,8 +36,9 @@ Options:
"""
opts, args = getopt.getopt(sys.argv[1:],
- "b:t:v:",
- ['builders=', 'man', 'sgml', 'tools=', 'variables='])
+ "b:ht:v:",
+ ['builders=', 'help',
+ 'man', 'sgml', 'tools=', 'variables='])
buildersfiles = None
output_type = '--sgml'
@@ -47,6 +48,9 @@ variablesfiles = None
for o, a in opts:
if o in ['-b', '--builders']:
buildersfiles = a
+ elif o in ['-h', '--help']:
+ sys.stdout.write(helpstr)
+ sys.exit(0)
elif o in ['--man', '--sgml']:
output_type = o
elif o in ['-t', '--tools']:
@@ -146,11 +150,16 @@ class SCons_XML_to_SGML(SCons_XML):
f.write('<listitem>\n')
for chunk in v.summary.body:
f.write(str(chunk))
- #if v.uses:
- # u = map(lambda x, s: '&%slink-%s;' % (s.prefix, x), v.uses)
- # f.write('<para>\n')
- # f.write('Uses: ' + ', '.join(u) + '.\n')
- # f.write('</para>\n')
+ if v.sets:
+ s = map(lambda x: '&cv-link-%s;' % x, v.sets)
+ f.write('<para>\n')
+ f.write('Sets: ' + ', '.join(s) + '.\n')
+ f.write('</para>\n')
+ if v.uses:
+ u = map(lambda x: '&cv-link-%s;' % x, v.uses)
+ f.write('<para>\n')
+ f.write('Uses: ' + ', '.join(u) + '.\n')
+ f.write('</para>\n')
f.write('</listitem>\n')
f.write('</varlistentry>\n')
def write_mod(self, filename):
diff --git a/debian/changelog b/debian/changelog
index 063cba41..441f5729 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,8 +1,8 @@
-scons (0.96-96) unstable; urgency=low
+scons (0.97) unstable; urgency=low
- * Pre-release of eighth beta release.
+ * Eighth beta release.
- -- Steven Knight <knight@baldmt.com> Thu, 12 Apr 2007 12:36:25 -0500
+ -- Steven Knight <knight@baldmt.com> Thu, 17 May 2007 08:59:41 -0500
scons (0.96-1) unstable; urgency=low
diff --git a/doc/SConscript b/doc/SConscript
index 76179743..8316e6ee 100644
--- a/doc/SConscript
+++ b/doc/SConscript
@@ -295,7 +295,7 @@ THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT.
]
if tidy:
cmds.append("tidy -m -q $TARGET || true")
- env.Command(htmlindex, main, cmds)
+ env.Command(htmlindex, File(main), cmds)
Local(htmlindex)
cmds = [
@@ -305,7 +305,7 @@ THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT.
]
if tidy:
cmds.append("tidy -m -q $TARGET || true")
- env.Command(html, main, cmds)
+ env.Command(html, File(main), cmds)
Local(html)
env.Ignore([html, htmlindex], version_sgml)
diff --git a/doc/scons.mod b/doc/scons.mod
index aa1a0b99..bbb20f07 100644
--- a/doc/scons.mod
+++ b/doc/scons.mod
@@ -16,30 +16,42 @@
-->
-<!ENTITY Aegis "<application>Aegis</application>">
-<!ENTITY Ant "<application>Ant</application>">
-<!ENTITY Autoconf "<application>Autoconf</application>">
-<!ENTITY Automake "<application>Automake</application>">
-<!ENTITY cc "<application>cc</application>">
-<!ENTITY Cons "<application>Cons</application>">
-<!ENTITY cp "<application>cp</application>">
-<!ENTITY csh "<application>csh</application>">
-<!ENTITY gcc "<application>gcc</application>">
-<!ENTITY Jam "<application>Jam</application>">
-<!ENTITY jar "<application>jar</application>">
-<!ENTITY javac "<application>javac</application>">
-<!ENTITY javah "<application>javah</application>">
-<!ENTITY Make "<application>Make</application>">
-<!ENTITY Makepp "<application>Make++</application>">
-<!ENTITY Python "<application>Python</application>">
-<!ENTITY ranlib "<application>ranlib</application>">
-<!ENTITY rmic "<application>rmic</application>">
-<!ENTITY SCons "<application>SCons</application>">
-<!ENTITY scons "<application>scons</application>">
-<!ENTITY ScCons "<application>ScCons</application>">
-<!ENTITY tar "<application>tar</application>">
-<!ENTITY touch "<application>touch</application>">
-<!ENTITY zip "<application>zip</application>">
+<!ENTITY Aegis "<application>Aegis</application>">
+<!ENTITY Ant "<application>Ant</application>">
+<!ENTITY ar "<application>ar</application>">
+<!ENTITY as "<application>as</application>">
+<!ENTITY Autoconf "<application>Autoconf</application>">
+<!ENTITY Automake "<application>Automake</application>">
+<!ENTITY cc "<application>cc</application>">
+<!ENTITY Cons "<application>Cons</application>">
+<!ENTITY cp "<application>cp</application>">
+<!ENTITY csh "<application>csh</application>">
+<!ENTITY gas "<application>gas</application>">
+<!ENTITY gcc "<application>gcc</application>">
+<!ENTITY g77 "<application>g77</application>">
+<!ENTITY gXX "<application>gXX</application>">
+<!ENTITY Jam "<application>Jam</application>">
+<!ENTITY jar "<application>jar</application>">
+<!ENTITY javac "<application>javac</application>">
+<!ENTITY javah "<application>javah</application>">
+<!ENTITY latex "<application>latex</application>">
+<!ENTITY lex "<application>lex</application>">
+<!ENTITY m4 "<application>m4</application>">
+<!ENTITY Make "<application>Make</application>">
+<!ENTITY Makepp "<application>Make++</application>">
+<!ENTITY pdflatex "<application>pdflatex</application>">
+<!ENTITY pdftex "<application>pdftex</application>">
+<!ENTITY Python "<application>Python</application>">
+<!ENTITY ranlib "<application>ranlib</application>">
+<!ENTITY rmic "<application>rmic</application>">
+<!ENTITY SCons "<application>SCons</application>">
+<!ENTITY scons "<application>scons</application>">
+<!ENTITY ScCons "<application>ScCons</application>">
+<!ENTITY tar "<application>tar</application>">
+<!ENTITY tex "<application>tex</application>">
+<!ENTITY touch "<application>touch</application>">
+<!ENTITY yacc "<application>yacc</application>">
+<!ENTITY zip "<application>zip</application>">
<!--
diff --git a/rpm/scons.spec.in b/rpm/scons.spec.in
index 3b4865b7..86cd7f55 100644
--- a/rpm/scons.spec.in
+++ b/rpm/scons.spec.in
@@ -1,5 +1,5 @@
%define name scons
-%define version 0.96.96
+%define version 0.97
%define release 1
Summary: an Open Source software construction tool
diff --git a/src/CHANGES.txt b/src/CHANGES.txt
index a52a6b7f..a47992a7 100644
--- a/src/CHANGES.txt
+++ b/src/CHANGES.txt
@@ -8,6 +8,20 @@
+RELEASE 0.97 - Thu, 17 May 2007 08:59:41 -0500
+
+ From Steven Knight:
+
+ - Fix a bug that would make parallel builds stop in their tracks if
+ Nodes that depended on lists that contained some Nodes built together
+ caused the reference count to drop below 0 if the Nodes were visited
+ and commands finished in the wrong order.
+
+ - Make sure the DirEntryScanner doesn't choke if it's handed something
+ that's not a directory (Node.FS.Dir) Node.
+
+
+
RELEASE 0.96.96 - Thu, 12 Apr 2007 12:36:25 -0500
NOTE: This is (Yet) a(nother) pre-release of 0.97 for testing purposes.
diff --git a/src/README.txt b/src/README.txt
index a8969004..8c714981 100644
--- a/src/README.txt
+++ b/src/README.txt
@@ -99,21 +99,24 @@ By default, the above command will do the following:
for example). This can be disabled by specifying the
"--no-scons-script" option on the command line, which is useful
if you want to install and experiment with a new version before
- making it the default on your system. On UNIX or Linux systems,
- you can have the "scons" and "sconsign" scripts be hard links or
- symbolic links to the "scons-__VERSION__" and "sconsign-__VERSION__" scripts
- by specifying the "--hardlink-scons" or "--symlink-scons"
- options on the command line.
+ making it the default on your system.
+
+ On UNIX or Linux systems, you can have the "scons" and "sconsign"
+ scripts be hard links or symbolic links to the "scons-__VERSION__" and
+ "sconsign-__VERSION__" scripts by specifying the "--hardlink-scons"
+ or "--symlink-scons" options on the command line.
-- Install "scons-__VERSION__.bat" and "scons.bat" wrapper scripts in the
Python prefix directory on Windows (C:\Python*, for example).
This can be disabled by specifying the "--no-install-bat" option
- on the command line. On UNIX or Linux systems, the
- "--install-bat" option may be specified to have "scons-__VERSION__.bat"
- and "scons.bat" files installed in the default system script
- directory, which is useful if you want to install SCons in a
- shared file system directory that can be used to execute SCons
- from both UNIX/Linux and Windows systems.
+ on the command line.
+
+ On UNIX or Linux systems, the "--install-bat" option may be
+ specified to have "scons-__VERSION__.bat" and "scons.bat" files
+ installed in the default system script directory, which is useful
+ if you want to install SCons in a shared file system directory
+ that can be used to execute SCons from both UNIX/Linux and
+ Windows systems.
-- Install the SCons build engine (a Python module) in an
appropriate version-numbered SCons library directory
@@ -196,18 +199,18 @@ available at:
REPORTING BUGS
==============
-Please report bugs by following the "Tracker - Bugs" link on the SCons
-project page and filling out the form:
+Please report bugs by following the detailed instructions on our Bug
+Submission page:
- http://sourceforge.net/projects/scons/
+ http://scons.tigris.org/bug-submission.html
-You can also send mail to the SCons developers mailing list:
+You can also send mail to the SCons developers' mailing list:
- scons-devel@lists.sourceforge.net
+ dev@scons.tigris.org
-But please make sure that you also submit a bug report to the project
-page bug tracker, because bug reports in email can sometimes get lost
-in the general flood of messages.
+But even if you send email to the mailing list please make sure that you
+ALSO submit a bug report to the project page bug tracker, because bug
+reports in email often get overlooked in the general flood of messages.
MAILING LISTS
@@ -262,12 +265,9 @@ With plenty of help from the SCons Development team:
Chad Austin
Charles Crain
Steve Leblanc
- Baptiste Lepilleur
- Elliot Murphy
+ Greg Noel
Gary Oberbrunner
Anthony Roach
- Greg Noel
- Kevin Quick
Greg Spencer
Christoph Wiedemann
diff --git a/src/RELEASE.txt b/src/RELEASE.txt
index b7d701f8..b19a39cd 100644
--- a/src/RELEASE.txt
+++ b/src/RELEASE.txt
@@ -20,11 +20,10 @@ more effectively, please sign up for the scons-users mailing list at:
-RELEASE 0.96.96 - Thu, 12 Apr 2007 12:36:25 -0500
+RELEASE 0.97 - Thu, 12 Apr 2007 12:36:25 -0500
- This is a pre-release for testing the eighth beta release of SCons.
- Please consult the CHANGES.txt file for a list of specific changes
- since last release.
+ This is the eighth beta release of SCons. Please consult the
+ CHANGES.txt file for a list of specific changes since last release.
Please note the following important changes since release 0.96.93:
@@ -47,9 +46,9 @@ RELEASE 0.96.96 - Thu, 12 Apr 2007 12:36:25 -0500
On all POSIX systems, the default execution PATH variable has had
the /opt/bin directory added after the /usr/local/bin directory
and before /bin and /usr/bin directories. This may cause SCons
- to find and/or different compilers, linkers, etc. if you have
- any same-named utilities installed in /opt/bin that it previously
- found in /bin or /usr/bin.
+ to find and/or use different compilers, linkers, etc., if you
+ have any same-named utilities installed in /opt/bin that SCons
+ previously found in /bin or /usr/bin.
On Mac OS X (Darwin) systems, the /sw/bin directory has been added
to the end of the default execution PATH. This may cause SCons
@@ -147,11 +146,12 @@ RELEASE 0.96.96 - Thu, 12 Apr 2007 12:36:25 -0500
-- NORMALIZED PATHS IN SConsignFile() DATABASES ON WINDOWS
- When using an SConsignFile() database, instead of individual
- .sconsign files in each directory, the path names are
- stored in normalized form with / (forward slash) separating
- the elements. This may cause rebuilds on Windows systems
- with hierarchical configurations.
+ When using an SConsignFile() database, instead of
+ individual .sconsign files in each directory, the path
+ names are stored in normalized form with / (forward slash)
+ separating the elements. This may cause rebuilds when
+ upgrading to SCons 0.97 on Windows systems with hierarchical
+ build configurations.
-- STORED DEPENDENCY PATHS ARE NOW RELATIVE TO THE TARGET
@@ -163,26 +163,27 @@ RELEASE 0.96.96 - Thu, 12 Apr 2007 12:36:25 -0500
causing unnecessary rebuilds due to an intermediate file in
one build being treated as a source file in a nother build.
- This a step towards making it possible to write a hierarchy
- of SConstruct files that allow developers to build just
- one portion of a tree wherever there's an SConstruct file.
- (Note that this would still require some specific code at
- the top of each SConstruct file, but we hope to make this
- an easier/more naturally supported thing in the future.)
+ This is a step towards making it possible to write a
+ hierarchy of SConstruct files that allow developers
+ to build just one portion of a tree wherever there's an
+ SConstruct file. (Note that this would still require some
+ specific code at the top of each SConstruct file, but we
+ hope to make this an easier/more naturally supported thing
+ in the future.)
-- PYTHON FUNCTION ACTION SIGNATURES HAVE CHANGED TO AVOID
FUTURE REBUILDS AND REBUILDS BETWEEN PYTHON VERSIONS
- SCons Actions for Python functions use the functions byte
- code to generate their signature. The byte code in older
- versions of Python includes indications of the line numbers
- at which the function's code appeared in its original
- source file, which means that changes in the location of
- an otherwise unmodified Python function would trigger
- rebuilds. The line number byte codes are now removed
- from the signature, which will cause any targets built by
- Python function Actions (including various pre-supplied
- SCons Actions) be rebuilt.
+ SCons Actions for Python functions use the function's
+ byte code to generate their signature. The byte code
+ in older versions of Python includes indications of the
+ line numbers at which the function's code appeared in
+ its original source file, which means that changes in the
+ location of an otherwise unmodified Python function would
+ trigger rebuilds. The line number byte codes are now
+ removed from the signature, which will cause any targets
+ built by Python function Actions (including various
+ pre-supplied SCons Actions) to be rebuilt.
-- REMOVED CONVERSION FROM PRE-0.96 .sconsign FORMATS
@@ -193,10 +194,11 @@ RELEASE 0.96.96 - Thu, 12 Apr 2007 12:36:25 -0500
-- ORDER OF -o FLAGS ON CERTAIN LINK COMMAND LINES HAS CHANGED
- The -o flag that specifies an output file has been moved on
- certain linker command lines to place it consistently after
- the link command itself. This will cause recompilation
- of target files created by these changed lines.
+ The -o flag that specifies an output file has been moved
+ on certain linker command lines to place it consistently
+ right after the link command itself. This will cause
+ recompilation of target files created by these changed
+ lines.
-- F95 AND F90 COMPILERS ARE NOW PREFERRED OVER F77
@@ -561,10 +563,10 @@ RELEASE 0.96.96 - Thu, 12 Apr 2007 12:36:25 -0500
KNOWN PROBLEMS IN THIS RELEASE:
- For a complete list of known problems, consult the SCons bug tracker
- page at SourceForge:
+ For a complete list of known problems, consult the SCons Issue Tracker
+ at tigris.org:
- http://sourceforge.net/tracker/?atid=398971&group_id=30337&func=browse
+ http://scons.tigris.org/project_issues.html
- Support for parallel builds (-j) does not work on WIN32 systems
prior to *official* Python release 2.2 (not 2.2 pre-releases).
@@ -618,15 +620,6 @@ RELEASE 0.96.96 - Thu, 12 Apr 2007 12:36:25 -0500
- Unicode characters in path names do not work in all circumstances.
- - A stray source file in a BuildDir can prevent targets from being
- (re)built when they should.
-
- - SCons does not automatically rebuild LaTeX files when the file
- has an undefined reference on the first build.
-
- - Use of --implicit-cache with TargetSignatures('content') can,
- for some changes, not rebuild a file when necessary.
-
- SCons does not currently automatically check out SConstruct or
SConscript files from SCCS, RCS or BitKeeper.
diff --git a/src/engine/SCons/Node/NodeTests.py b/src/engine/SCons/Node/NodeTests.py
index 50de2b0a..ad9eb660 100644
--- a/src/engine/SCons/Node/NodeTests.py
+++ b/src/engine/SCons/Node/NodeTests.py
@@ -1314,8 +1314,11 @@ class NodeTestCase(unittest.TestCase):
n1 = SCons.Node.Node()
n2 = SCons.Node.Node()
assert n1.waiting_parents == {}, n1.waiting_parents
- n1.add_to_waiting_parents(n2)
+ r = n1.add_to_waiting_parents(n2)
+ assert r == 1, r
assert n1.waiting_parents == {n2:1}, n1.waiting_parents
+ r = n1.add_to_waiting_parents(n2)
+ assert r == 0, r
def test_call_for_all_waiting_parents(self):
"""Test the call_for_all_waiting_parents() method"""
diff --git a/src/engine/SCons/Node/__init__.py b/src/engine/SCons/Node/__init__.py
index fa682a20..6644d7a5 100644
--- a/src/engine/SCons/Node/__init__.py
+++ b/src/engine/SCons/Node/__init__.py
@@ -336,7 +336,20 @@ class Node:
self.waiting_s_e[node] = 1
def add_to_waiting_parents(self, node):
- self.waiting_parents[node] = 1
+ """
+ Returns the number of nodes added to our waiting parents list:
+ 1 if we add a unique waiting parent, 0 if not. (Note that the
+ returned values are intended to be used to increment a reference
+ count, so don't think you can "clean up" this function by using
+ True and False instead...)
+ """
+ wp = self.waiting_parents
+ if wp.has_key(node):
+ result = 0
+ else:
+ result = 1
+ wp[node] = 1
+ return result
def call_for_all_waiting_parents(self, func):
func(self)
diff --git a/src/engine/SCons/Scanner/Dir.py b/src/engine/SCons/Scanner/Dir.py
index 535150a6..9203fb27 100644
--- a/src/engine/SCons/Scanner/Dir.py
+++ b/src/engine/SCons/Scanner/Dir.py
@@ -92,6 +92,14 @@ def scan_in_memory(node, env, path=()):
"""
"Scans" a Node.FS.Dir for its in-memory entries.
"""
- entry_list = filter(do_not_scan, node.entries.keys())
+ try:
+ entries = node.entries
+ except AttributeError:
+ # It's not a Node.FS.Dir (or doesn't look enough like one for
+ # our purposes), which can happen if a target list containing
+ # mixed Node types (Dirs and Files, for example) has a Dir as
+ # the first entry.
+ return []
+ entry_list = filter(do_not_scan, entries.keys())
entry_list.sort()
- return map(lambda n, e=node.entries: e[n], entry_list)
+ return map(lambda n, e=entries: e[n], entry_list)
diff --git a/src/engine/SCons/Scanner/DirTests.py b/src/engine/SCons/Scanner/DirTests.py
index 0dde95e3..5f180bcb 100644
--- a/src/engine/SCons/Scanner/DirTests.py
+++ b/src/engine/SCons/Scanner/DirTests.py
@@ -50,6 +50,8 @@ class DummyEnvironment:
return self.fs.Dir(name)
def Entry(self, name):
return self.fs.Entry(name)
+ def File(self, name):
+ return self.fs.File(name)
def get_factory(self, factory):
return factory or self.fs.Entry
@@ -77,7 +79,7 @@ class DirScannerTestBase(unittest.TestCase):
self.test.write(['dir', 'sub', '.sconsign.dir'], "dir/.sconsign.dir\n")
self.test.write(['dir', 'sub', '.sconsign.pag'], "dir/.sconsign.pag\n")
-class DirScannerTestCase1(DirScannerTestBase):
+class DirScannerTestCase(DirScannerTestBase):
def runTest(self):
env = DummyEnvironment(self.test.workpath())
@@ -100,7 +102,7 @@ class DirScannerTestCase1(DirScannerTestBase):
sss = map(str, deps)
assert sss == expect, sss
-class DirScannerTestCase2(DirScannerTestBase):
+class DirEntryScannerTestCase(DirScannerTestBase):
def runTest(self):
env = DummyEnvironment(self.test.workpath())
@@ -114,10 +116,15 @@ class DirScannerTestCase2(DirScannerTestBase):
sss = map(str, deps)
assert sss == [], sss
+ # Make sure we don't blow up if handed a non-Dir node.
+ deps = s(env.File('dir/f1'), env, ())
+ sss = map(str, deps)
+ assert sss == [], sss
+
def suite():
suite = unittest.TestSuite()
- suite.addTest(DirScannerTestCase1())
- suite.addTest(DirScannerTestCase2())
+ suite.addTest(DirScannerTestCase())
+ suite.addTest(DirEntryScannerTestCase())
return suite
if __name__ == "__main__":
diff --git a/src/engine/SCons/Taskmaster.py b/src/engine/SCons/Taskmaster.py
index 4de35f0d..9a5011b3 100644
--- a/src/engine/SCons/Taskmaster.py
+++ b/src/engine/SCons/Taskmaster.py
@@ -52,6 +52,7 @@ __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
import SCons.compat
+import operator
import string
import sys
import traceback
@@ -577,8 +578,8 @@ class Taskmaster:
# when they've finished building, our implicit dependency
# list will get cleared and we'll re-scan the newly-built
# file(s) for updated implicit dependencies.
- map(lambda n, P=node: n.add_to_waiting_parents(P), not_started)
- node.ref_count = len(set(not_started))
+ added = map(lambda n, P=node: n.add_to_waiting_parents(P), not_started)
+ node.ref_count = node.ref_count + reduce(operator.add, added, 0)
# Now we add these derived targets to the candidates
# list so they can be examined and built. We have to
@@ -612,8 +613,8 @@ class Taskmaster:
# so that when they've finished building, our implicit
# dependency list will get cleared and we'll re-scan the
# newly-built file(s) for updated implicit dependencies.
- map(lambda n, P=node: n.add_to_waiting_parents(P), not_built)
- node.ref_count = len(set(not_built))
+ added = map(lambda n, P=node: n.add_to_waiting_parents(P), not_built)
+ node.ref_count = node.ref_count + reduce(operator.add, added, 0)
if S: S.not_built = S.not_built + 1
if T:
diff --git a/src/engine/SCons/TaskmasterTests.py b/src/engine/SCons/TaskmasterTests.py
index f74cf347..757306fc 100644
--- a/src/engine/SCons/TaskmasterTests.py
+++ b/src/engine/SCons/TaskmasterTests.py
@@ -54,6 +54,7 @@ class Node:
self.csig = None
self.state = SCons.Node.no_state
self.prepared = None
+ self.ref_count = 0
self.waiting_parents = {}
self.waiting_s_e = {}
self.side_effect = 0
@@ -112,7 +113,13 @@ class Node:
return self.name
def add_to_waiting_parents(self, node):
- self.waiting_parents[node] = 1
+ wp = self.waiting_parents
+ if wp.has_key(node):
+ result = 0
+ else:
+ result = 1
+ wp[node] = 1
+ return result
def call_for_all_waiting_parents(self, func):
func(self)
diff --git a/src/engine/SCons/Tool/386asm.xml b/src/engine/SCons/Tool/386asm.xml
index bb360482..824e060e 100644
--- a/src/engine/SCons/Tool/386asm.xml
+++ b/src/engine/SCons/Tool/386asm.xml
@@ -6,6 +6,20 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="386asm">
<summary>
-XXX
+Sets construction variables for the 386ASM assembler
+for the Phar Lap ETS embedded operating system.
</summary>
+<sets>
+AS
+ASFLAGS
+ASPPFLAGS
+ASCOM
+ASPPCOM
+</sets>
+<uses>
+CC
+CPPFLAGS
+_CPPDEFFLAGS
+_CPPINCFLAGS
+</uses>
</tool>
diff --git a/src/engine/SCons/Tool/BitKeeper.xml b/src/engine/SCons/Tool/BitKeeper.xml
index 8ab70497..d0e42d72 100644
--- a/src/engine/SCons/Tool/BitKeeper.xml
+++ b/src/engine/SCons/Tool/BitKeeper.xml
@@ -6,8 +6,18 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="BitKeeper">
<summary>
-XXX
+Sets construction variables for the BitKeeper
+source code control system.
</summary>
+<sets>
+BITKEEPER
+BITKEEPERGET
+BITKEEPERGETFLAGS
+BITKEEPERCOM
+</sets>
+<uses>
+BITKEEPERCOMSTR
+</uses>
</tool>
<cvar name="BITKEEPER">
diff --git a/src/engine/SCons/Tool/CVS.xml b/src/engine/SCons/Tool/CVS.xml
index fb666e8f..3d8c055e 100644
--- a/src/engine/SCons/Tool/CVS.xml
+++ b/src/engine/SCons/Tool/CVS.xml
@@ -6,8 +6,18 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="CVS">
<summary>
-XXX
+Sets construction variables for the CVS source code
+management system.
</summary>
+<sets>
+CVS
+CVSCOM
+CVSFLAGS
+CVSCOFLAGS
+</sets>
+<uses>
+CVSCOMSTR
+</uses>
</tool>
<cvar name="CVS">
diff --git a/src/engine/SCons/Tool/Perforce.xml b/src/engine/SCons/Tool/Perforce.xml
index b8824ed0..bc7ffed3 100644
--- a/src/engine/SCons/Tool/Perforce.xml
+++ b/src/engine/SCons/Tool/Perforce.xml
@@ -6,8 +6,17 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="Perforce">
<summary>
-XXX
+Sets construction variables for interacting with the
+Perforce source code management system.
</summary>
+<sets>
+P4
+P4FLAGS
+P4COM
+</sets>
+<uses>
+P4COMSTR
+</uses>
</tool>
<cvar name="P4">
diff --git a/src/engine/SCons/Tool/RCS.xml b/src/engine/SCons/Tool/RCS.xml
index 2c89a5b6..c81cf940 100644
--- a/src/engine/SCons/Tool/RCS.xml
+++ b/src/engine/SCons/Tool/RCS.xml
@@ -6,8 +6,18 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="RCS">
<summary>
-XXX
+Sets construction variables for the interaction
+with the Revision Control System.
</summary>
+<sets>
+RCS
+RCS_CO
+RCS_COFLAGS
+RCS_COCOM
+</sets>
+<uses>
+RCS_COCOMSTR
+</uses>
</tool>
<cvar name="RCS">
diff --git a/src/engine/SCons/Tool/SCCS.xml b/src/engine/SCons/Tool/SCCS.xml
index 9f7539df..5a55bdae 100644
--- a/src/engine/SCons/Tool/SCCS.xml
+++ b/src/engine/SCons/Tool/SCCS.xml
@@ -6,8 +6,18 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="SCCS">
<summary>
-XXX
+Sets construction variables for interacting with the
+Source Code Control System.
</summary>
+<sets>
+SCCS
+SCCSFLAGS
+SCCSGETFLAGS
+SCCSCOM
+</sets>
+<uses>
+SCCSCOMSTR
+</uses>
</tool>
<cvar name="SCCS">
diff --git a/src/engine/SCons/Tool/Subversion.xml b/src/engine/SCons/Tool/Subversion.xml
index c3a4f5f2..adbd2b72 100644
--- a/src/engine/SCons/Tool/Subversion.xml
+++ b/src/engine/SCons/Tool/Subversion.xml
@@ -4,11 +4,21 @@ __COPYRIGHT__
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+<!--
<tool name="Subversion">
<summary>
-XXX
+Sets construction variables for interacting with Subversion.
</summary>
+<sets>
+SVN
+SVNFLAGS
+SVNCOM
+</sets>
+<uses>
+SVNCOMSTR
+</uses>
</tool>
+-->
<!--
<cvar name="SVN">
diff --git a/src/engine/SCons/Tool/aixc++.xml b/src/engine/SCons/Tool/aixc++.xml
index 2f03aa65..05b4dd64 100644
--- a/src/engine/SCons/Tool/aixc++.xml
+++ b/src/engine/SCons/Tool/aixc++.xml
@@ -6,6 +6,14 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="aixc++">
<summary>
-XXX
+Sets construction variables for the IMB xlc / Visual Age C++ compiler.
</summary>
+<sets>
+CXX
+SHCXX
+CXXVERSION
+SHOBJSUFFIX
+</sets>
+<uses>
+</uses>
</tool>
diff --git a/src/engine/SCons/Tool/aixcc.xml b/src/engine/SCons/Tool/aixcc.xml
index a7a043c5..8ec301b2 100644
--- a/src/engine/SCons/Tool/aixcc.xml
+++ b/src/engine/SCons/Tool/aixcc.xml
@@ -6,6 +6,13 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="aixcc">
<summary>
-XXX
+Sets construction variables for the IBM xlc / Visual Age C compiler.
</summary>
+<sets>
+CC
+SHCC
+CCVERSION
+</sets>
+<uses>
+</uses>
</tool>
diff --git a/src/engine/SCons/Tool/aixf77.xml b/src/engine/SCons/Tool/aixf77.xml
index 9043b66f..14274f32 100644
--- a/src/engine/SCons/Tool/aixf77.xml
+++ b/src/engine/SCons/Tool/aixf77.xml
@@ -6,6 +6,12 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="aixf77">
<summary>
-XXX
+Sets construction variables for the IBM Visual Age f77 Fortran compiler.
</summary>
+<sets>
+F77
+SHF77
+</sets>
+<uses>
+</uses>
</tool>
diff --git a/src/engine/SCons/Tool/aixlink.xml b/src/engine/SCons/Tool/aixlink.xml
index a1aa05bf..567882b8 100644
--- a/src/engine/SCons/Tool/aixlink.xml
+++ b/src/engine/SCons/Tool/aixlink.xml
@@ -6,6 +6,14 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="aixlink">
<summary>
-XXX
+Sets construction variables for the IBM Visual Age linker.
</summary>
+<sets>
+<!--SMARTLINKFLAGS-->
+LINKFLAGS
+SHLINKFLAGS
+SHLIBSUFFIX
+</sets>
+<uses>
+</uses>
</tool>
diff --git a/src/engine/SCons/Tool/applelink.xml b/src/engine/SCons/Tool/applelink.xml
index d5fadbbb..10b45598 100644
--- a/src/engine/SCons/Tool/applelink.xml
+++ b/src/engine/SCons/Tool/applelink.xml
@@ -4,6 +4,28 @@ __COPYRIGHT__
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+<tool name="applelink">
+<summary>
+Sets construction variables for the Apple linker
+(similar to the GNU linker).
+</summary>
+<sets>
+FRAMEWORKPATHPREFIX
+_FRAMEWORKPATH
+_FRAMEWORKS
+LINKCOM
+SHLINKFLAGS
+SHLINKCOM
+LDMODULEPREFIX
+LDMODULESUFFIX
+LDMODULEFLAGS
+LDMODULECOM
+</sets>
+<uses>
+FRAMEWORKSFLAGS
+</uses>
+</tool>
+
<cvar name="FRAMEWORKSFLAGS">">
<summary>
On Mac OS X with gcc,
diff --git a/src/engine/SCons/Tool/ar.xml b/src/engine/SCons/Tool/ar.xml
index b26f6343..1fe9a574 100644
--- a/src/engine/SCons/Tool/ar.xml
+++ b/src/engine/SCons/Tool/ar.xml
@@ -6,8 +6,20 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="ar">
<summary>
-XXX
+Sets construction variables for the &ar; library archiver.
</summary>
+<sets>
+AR
+ARFLAGS
+ARCOM
+LIBPREFIX
+LIBSUFFIX
+RANLIB
+RANLIBFLAGS
+RANLIBCOM
+</sets>
+<uses>
+</uses>
</tool>
<cvar name="AR">
diff --git a/src/engine/SCons/Tool/as.xml b/src/engine/SCons/Tool/as.xml
index f61d26a5..b771d0e4 100644
--- a/src/engine/SCons/Tool/as.xml
+++ b/src/engine/SCons/Tool/as.xml
@@ -6,8 +6,21 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="as">
<summary>
-XXX
+Sets construction variables for the &as; assembler.
</summary>
+<sets>
+AS
+ASFLAGS
+ASCOM
+ASPPFLAGS
+ASPPCOM
+</sets>
+<uses>
+CC
+CPPFLAGS
+_CPPDEFFLAGS
+_CPPINCFLAGS
+</uses>
</tool>
<cvar name="AS">
diff --git a/src/engine/SCons/Tool/bcc32.xml b/src/engine/SCons/Tool/bcc32.xml
index 1cdb9c0b..38ded356 100644
--- a/src/engine/SCons/Tool/bcc32.xml
+++ b/src/engine/SCons/Tool/bcc32.xml
@@ -6,6 +6,27 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="bcc32">
<summary>
-XXX
+Sets construction variables for the bcc32 compiler.
</summary>
+<sets>
+CC
+CCFLAGS
+CFLAGS
+CCCOM
+SHCC
+SHCCFLAGS
+SHCFLAGS
+SHCCCOM
+CPPDEFPREFIX
+CPPDEFSUFFIX
+INCPREFIX
+INCSUFFIX
+SHOBJSUFFIX
+<!--STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME-->
+CFILESUFFIX
+</sets>
+<uses>
+_CPPDEFFLAGS
+_CPPINCFLAGS
+</uses>
</tool>
diff --git a/src/engine/SCons/Tool/c++.xml b/src/engine/SCons/Tool/c++.xml
index 2dc7bb2c..02530da0 100644
--- a/src/engine/SCons/Tool/c++.xml
+++ b/src/engine/SCons/Tool/c++.xml
@@ -4,10 +4,29 @@ __COPYRIGHT__
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
-<tool name="c++">
+<tool name="cXX">
<summary>
-XXX
+Sets construction variables for generic POSIX C++ compilers.
</summary>
+<sets>
+CXX
+CXXFLAGS
+CXXCOM
+SHCXX
+SHCXXFLAGS
+SHCXXCOM
+CPPDEFPREFIX
+CPPDEFSUFFIX
+INCPREFIX
+INCSUFFIX
+SHOBJSUFFIX
+OBJSUFFIX
+<!--STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME-->
+CXXFILESUFFIX
+</sets>
+<uses>
+CXXCOMSTR
+</uses>
</tool>
<cvar name="CXX">
diff --git a/src/engine/SCons/Tool/cc.xml b/src/engine/SCons/Tool/cc.xml
index b7ff65a4..a89182a3 100644
--- a/src/engine/SCons/Tool/cc.xml
+++ b/src/engine/SCons/Tool/cc.xml
@@ -6,22 +6,31 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="cc">
<summary>
-&cv-link-CC;
-&cv-link-CFLAGS;
-&cv-link-CCCOM;
-&cv-link-SHCC;
-&cv-link-SHCFLAGS;
-&cv-link-SHCCCOM;
-
-&cv-link-CPPDEFPREFIX;
-&cv-link-CPPDEFSUFFIX;
-&cv-link-INCPREFIX;
-&cv-link-INCSUFFIX;
-&cv-link-SHOBJSUFFIX;
-<!-- &cv-link-STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME; -->
-
-&cv-link-CFILESUFFIX;
+Sets construction variables for generic POSIX C copmilers.
</summary>
+<sets>
+<!--_CCCOMCOM-->
+FRAMEWORKS
+FRAMEWORKPATH
+CC
+CFLAGS
+CCFLAGS
+CCCOM
+SHCC
+SHCFLAGS
+SHCCFLAGS
+SHCCCOM
+CPPDEFPREFIX
+CPPDEFSUFFIX
+INCPREFIX
+INCSUFFIX
+SHOBJSUFFIX
+<!--STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME-->
+CFILESUFFIX
+</sets>
+<uses>
+PLATFORM
+</uses>
</tool>
<cvar name="CC">
diff --git a/src/engine/SCons/Tool/cvf.xml b/src/engine/SCons/Tool/cvf.xml
index 9acde9b5..a8011e17 100644
--- a/src/engine/SCons/Tool/cvf.xml
+++ b/src/engine/SCons/Tool/cvf.xml
@@ -6,6 +6,25 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="cvf">
<summary>
-XXX
+Sets construction variables for the Compaq Visual Fortran compiler.
</summary>
+<sets>
+FORTRAN
+FORTRANCOM
+FORTRANPPCOM
+SHFORTRANCOM
+SHFORTRANPPCOM
+OBJSUFFIX
+FORTRANMODDIR
+FORTRANMODDIRPREFIX
+FORTRANMODDIRSUFFIX
+</sets>
+<uses>
+FORTRANFLAGS
+SHFORTRANFLAGS
+_FORTRANMODFLAG
+_FORTRANINCFLAGS
+CPPFLAGS
+_CPPDEFFLAGS
+</uses>
</tool>
diff --git a/src/engine/SCons/Tool/default.xml b/src/engine/SCons/Tool/default.xml
index a4da87a0..e14f9f72 100644
--- a/src/engine/SCons/Tool/default.xml
+++ b/src/engine/SCons/Tool/default.xml
@@ -6,6 +6,7 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="default">
<summary>
-XXX
+Sets variables by calling a default list of Tool modules
+for the platform on which SCons is running.
</summary>
</tool>
diff --git a/src/engine/SCons/Tool/dmd.xml b/src/engine/SCons/Tool/dmd.xml
index 62ab78e5..cab3ab47 100644
--- a/src/engine/SCons/Tool/dmd.xml
+++ b/src/engine/SCons/Tool/dmd.xml
@@ -6,6 +6,47 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="dmd">
<summary>
-XXX
+Sets construction variables for the Digital Mars D compiler.
</summary>
+<sets>
+<!--
+DC
+DCOM
+_DINCFLAGS
+_DVERFLAGS
+_DDEBUGFLAGS
+_DFLAGS
+DPATH
+DFLAGS
+DVERSIONS
+DDEBUG
+DINCPREFIX
+DINCSUFFIX
+DVERPREFIX
+DVERSUFFIX
+DDEBUGPREFIX
+DDEBUGSUFFIX
+DFLAGPREFIX
+DFLAGSUFFIX
+DFLESUFFIX
+DLINK
+DLINKCOM
+DLIB
+DLIBCOM
+_DLINKLIBFLAGS
+_DLIBFLAGS
+DLINKFLAGS
+DLIBLINKPREFIX
+DLIBLINKSUFFIX
+DLIBFLAGPREFIX
+DLIBFLAGSUFFIX
+DLINKFLAGPREFIX
+DLINKFLAGSUFFIX
+LINKCOM
+ARCOM
+LIBS
+-->
+</sets>
+<uses>
+</uses>
</tool>
diff --git a/src/engine/SCons/Tool/dvi.xml b/src/engine/SCons/Tool/dvi.xml
index 26fdd43b..8285a54f 100644
--- a/src/engine/SCons/Tool/dvi.xml
+++ b/src/engine/SCons/Tool/dvi.xml
@@ -4,6 +4,17 @@ __COPYRIGHT__
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+<tool name="dvi">
+<summary>
+Attaches the &b-DVI; builder to the
+construction environment.
+</summary>
+<sets>
+</sets>
+<uses>
+</uses>
+</tool>
+
<builder name="DVI">
<summary>
Builds a <filename>.dvi</filename> file
diff --git a/src/engine/SCons/Tool/dvipdf.xml b/src/engine/SCons/Tool/dvipdf.xml
index f0679b31..7f5b160d 100644
--- a/src/engine/SCons/Tool/dvipdf.xml
+++ b/src/engine/SCons/Tool/dvipdf.xml
@@ -6,8 +6,16 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="dvipdf">
<summary>
-XXX
+Sets construction variables for the dvipdf utility.
</summary>
+<sets>
+DVIPDF
+DVIPDFFLAGS
+DVIPDFCOM
+</sets>
+<uses>
+DVIPDFCOMSTR
+</uses>
</tool>
<cvar name="DVIPDF">
diff --git a/src/engine/SCons/Tool/dvips.xml b/src/engine/SCons/Tool/dvips.xml
index dbfcaf35..328bb46a 100644
--- a/src/engine/SCons/Tool/dvips.xml
+++ b/src/engine/SCons/Tool/dvips.xml
@@ -6,8 +6,18 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="dvips">
<summary>
-XXX
+Sets construction variables for the dvips utility.
</summary>
+<sets>
+DVIPS
+DVIPSFLAGS
+PSCOM
+PSPREFIX
+PSSUFFIX
+</sets>
+<uses>
+PSCOMSTR
+</uses>
</tool>
<builder name="PostScript">
diff --git a/src/engine/SCons/Tool/f77.xml b/src/engine/SCons/Tool/f77.xml
index a1d3c341..3281bd61 100644
--- a/src/engine/SCons/Tool/f77.xml
+++ b/src/engine/SCons/Tool/f77.xml
@@ -6,8 +6,36 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="f77">
<summary>
-XXX
+Set construction variables for generic POSIX Fortran 77 compilers.
</summary>
+<sets>
+F77
+F77FLAGS
+F77COM
+F77PPCOM
+FORTRAN
+FORTRANFLAGS
+FORTRANCOM
+SHF77
+SHF77FLAGS
+SHF77COM
+SHF77PPCOM
+SHFORTRAN
+SHFORTRANFLAGS
+SHFORTRANCOM
+SHFORTRANPPCOM
+_F77INCFLAGS
+</sets>
+<uses>
+F77COMSTR
+F77PPCOMSTR
+FORTRANCOMSTR
+FORTRANPPCOMSTR
+SHF77COMSTR
+SHF77PPCOMSTR
+SHFORTRANCOMSTR
+SHFORTRANPPCOMSTR
+</uses>
</tool>
<cvar name="F77">
@@ -140,6 +168,16 @@ for all Fortran versions.
</summary>
</cvar>
+<cvar name="F77PPCOMSTR">
+<summary>
+The string displayed when a Fortran 77 source file
+is compiled to an object file
+after first running the file through the C preprocessor.
+If this is not set, then &cv-link-F77PPCOM; or &cv-link-FORTRANPPCOM;
+(the command line) is displayed.
+</summary>
+</cvar>
+
<cvar name="SHF77">
<summary>
The Fortran 77 compiler used for generating shared-library objects.
@@ -199,3 +237,13 @@ which specifies the default C-preprocessor command line
for all Fortran versions.
</summary>
</cvar>
+
+<cvar name="SHF77PPCOMSTR">
+<summary>
+The string displayed when a Fortran 77 source file
+is compiled to a shared-library object file
+after first running the file through the C preprocessor.
+If this is not set, then &cv-link-SHF77PPCOM; or &cv-link-SHFORTRANPPCOM;
+(the command line) is displayed.
+</summary>
+</cvar>
diff --git a/src/engine/SCons/Tool/f90.xml b/src/engine/SCons/Tool/f90.xml
index 9159a24d..18135a34 100644
--- a/src/engine/SCons/Tool/f90.xml
+++ b/src/engine/SCons/Tool/f90.xml
@@ -6,8 +6,25 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="f90">
<summary>
-XXX
+Set construction variables for generic POSIX Fortran 90 compilers.
</summary>
+<sets>
+F90
+F90FLAGS
+F90COM
+F90PPCOM
+SHF90
+SHF90FLAGS
+SHF90COM
+SHF90PPCOM
+_F90INCFLAGS
+</sets>
+<uses>
+F90COMSTR
+F90PPCOMSTR
+SHF90COMSTR
+SHF90PPCOMSTR
+</uses>
</tool>
<cvar name="F90">
@@ -140,6 +157,15 @@ for all Fortran versions.
</summary>
</cvar>
+<cvar name="F90PPCOMSTR">
+<summary>
+The string displayed when a Fortran 90 source file
+is compiled after first running the file through the C preprocessor.
+If this is not set, then &cv-link-F90PPCOM; or &cv-link-FORTRANPPCOM;
+(the command line) is displayed.
+</summary>
+</cvar>
+
<cvar name="SHF90">
<summary>
The Fortran 90 compiler used for generating shared-library objects.
@@ -199,3 +225,13 @@ which specifies the default C-preprocessor command line
for all Fortran versions.
</summary>
</cvar>
+
+<cvar name="SHF90PPCOMSTR">
+<summary>
+The string displayed when a Fortran 90 source file
+is compiled to a shared-library object file
+after first running the file through the C preprocessor.
+If this is not set, then &cv-link-SHF90PPCOM; or &cv-link-SHFORTRANPPCOM;
+(the command line) is displayed.
+</summary>
+</cvar>
diff --git a/src/engine/SCons/Tool/f95.xml b/src/engine/SCons/Tool/f95.xml
index e3c026ea..0882a454 100644
--- a/src/engine/SCons/Tool/f95.xml
+++ b/src/engine/SCons/Tool/f95.xml
@@ -6,8 +6,25 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="f95">
<summary>
-XXX
+Set construction variables for generic POSIX Fortran 95 compilers.
</summary>
+<sets>
+F95
+F95FLAGS
+F95COM
+F95PPCOM
+SHF95
+SHF95FLAGS
+SHF95COM
+SHF95PPCOM
+_F95INCFLAGS
+</sets>
+<uses>
+F95COMSTR
+F95PPCOMSTR
+SHF95COMSTR
+SHF95PPCOMSTR
+</uses>
</tool>
<cvar name="F95">
@@ -140,6 +157,16 @@ for all Fortran versions.
</summary>
</cvar>
+<cvar name="F95PPCOMSTR">
+<summary>
+The string displayed when a Fortran 95 source file
+is compiled to an object file
+after first running the file through the C preprocessor.
+If this is not set, then &cv-link-F95PPCOM; or &cv-link-FORTRANPPCOM;
+(the command line) is displayed.
+</summary>
+</cvar>
+
<cvar name="SHF95">
<summary>
The Fortran 95 compiler used for generating shared-library objects.
@@ -199,3 +226,13 @@ which specifies the default C-preprocessor command line
for all Fortran versions.
</summary>
</cvar>
+
+<cvar name="SHF95PPCOMSTR">
+<summary>
+The string displayed when a Fortran 95 source file
+is compiled to a shared-library object file
+after first running the file through the C preprocessor.
+If this is not set, then &cv-link-SHF95PPCOM; or &cv-link-SHFORTRANPPCOM;
+(the command line) is displayed.
+</summary>
+</cvar>
diff --git a/src/engine/SCons/Tool/fortran.xml b/src/engine/SCons/Tool/fortran.xml
index c7000af6..6dbe7b0b 100644
--- a/src/engine/SCons/Tool/fortran.xml
+++ b/src/engine/SCons/Tool/fortran.xml
@@ -6,8 +6,23 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="fortran">
<summary>
-XXX
+Set construction variables for generic POSIX Fortran compilers.
</summary>
+<sets>
+FORTRAN
+FORTRANFLAGS
+FORTRANCOM
+SHFORTRAN
+SHFORTRANFLAGS
+SHFORTRANCOM
+SHFORTRANPPCOM
+</sets>
+<uses>
+FORTRANCOMSTR
+FORTRANPPCOMSTR
+SHFORTRANCOMSTR
+SHFORTRANPPCOMSTR
+</uses>
</tool>
<cvar name="FORTRAN">
@@ -197,6 +212,16 @@ construction variables are included on this command line.
</summary>
</cvar>
+<cvar name="FORTRANPPCOMSTR">
+<summary>
+The string displayed when a Fortran source file
+is compiled to an object file
+after first running the file throught the C preprocessor.
+If this is not set, then &cv-link-FORTRANPPCOM;
+(the command line) is displayed.
+</summary>
+</cvar>
+
<cvar name="FORTRANSUFFIXES">
<summary>
The list of suffixes of files that will be scanned
@@ -251,3 +276,13 @@ in the &cv-link-SHFORTRANFLAGS; and
are included on this command line.
</summary>
</cvar>
+
+<cvar name="SHFORTRANPPCOMSTR">
+<summary>
+The string displayed when a Fortran source file
+is compiled to a shared-library object file
+after first running the file throught the C preprocessor.
+If this is not set, then &cv-link-SHFORTRANPPCOM;
+(the command line) is displayed.
+</summary>
+</cvar>
diff --git a/src/engine/SCons/Tool/g++.xml b/src/engine/SCons/Tool/g++.xml
index 49918119..79444b9a 100644
--- a/src/engine/SCons/Tool/g++.xml
+++ b/src/engine/SCons/Tool/g++.xml
@@ -6,6 +6,13 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="g++">
<summary>
-XXX
+Set construction variables for the &gXX; C++ compiler.
</summary>
+<sets>
+CXX
+SHCXXFLAGS
+<!--STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME-->
+SHOBJSUFFIX
+CXXVERSION
+</sets>
</tool>
diff --git a/src/engine/SCons/Tool/g77.xml b/src/engine/SCons/Tool/g77.xml
index 6357f94d..96d6f874 100644
--- a/src/engine/SCons/Tool/g77.xml
+++ b/src/engine/SCons/Tool/g77.xml
@@ -6,6 +6,8 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="g77">
<summary>
-XXX
+Set construction variables for the &g77; Fortran compiler.
+Calls the &t-f77; Tool module
+to set variables.
</summary>
</tool>
diff --git a/src/engine/SCons/Tool/gas.xml b/src/engine/SCons/Tool/gas.xml
index 19ad1a90..62bad7b3 100644
--- a/src/engine/SCons/Tool/gas.xml
+++ b/src/engine/SCons/Tool/gas.xml
@@ -6,6 +6,10 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="gas">
<summary>
-XXX
+Sets construction variables for the &gas; assembler.
+Calls the &t-as; module.
</summary>
+<sets>
+AS
+</sets>
</tool>
diff --git a/src/engine/SCons/Tool/gcc.xml b/src/engine/SCons/Tool/gcc.xml
index 15f19cf0..f36a5ebf 100644
--- a/src/engine/SCons/Tool/gcc.xml
+++ b/src/engine/SCons/Tool/gcc.xml
@@ -6,6 +6,11 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="gcc">
<summary>
-XXX
+Set construction variables for the &gcc; C compiler.
</summary>
+<sets>
+CC
+SHCCFLAGS
+CCVERSION
+</sets>
</tool>
diff --git a/src/engine/SCons/Tool/gnulink.xml b/src/engine/SCons/Tool/gnulink.xml
index d454af44..d822081d 100644
--- a/src/engine/SCons/Tool/gnulink.xml
+++ b/src/engine/SCons/Tool/gnulink.xml
@@ -6,6 +6,11 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="gnulink">
<summary>
-XXX
+Set construction variables for GNU linker/loader.
</summary>
+<sets>
+SHLINKFLAGS
+RPATHPREFIX
+RPATHSUFFIX
+</sets>
</tool>
diff --git a/src/engine/SCons/Tool/gs.xml b/src/engine/SCons/Tool/gs.xml
index 9a63e94d..2376735d 100644
--- a/src/engine/SCons/Tool/gs.xml
+++ b/src/engine/SCons/Tool/gs.xml
@@ -6,8 +6,16 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="gs">
<summary>
-XXX
+Set construction variables for Ghostscript.
</summary>
+<sets>
+GS
+GSFLAGS
+GSCOM
+</sets>
+<uses>
+GSCOMSTR
+</uses>
</tool>
<cvar name="GS">
diff --git a/src/engine/SCons/Tool/hpc++.xml b/src/engine/SCons/Tool/hpc++.xml
index ca0314c9..893907a6 100644
--- a/src/engine/SCons/Tool/hpc++.xml
+++ b/src/engine/SCons/Tool/hpc++.xml
@@ -6,6 +6,6 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="hpc++">
<summary>
-XXX
+Set construction variables for the compilers aCC on HP/UX systems.
</summary>
</tool>
diff --git a/src/engine/SCons/Tool/hpcc.xml b/src/engine/SCons/Tool/hpcc.xml
index 9f63b553..62a1ca43 100644
--- a/src/engine/SCons/Tool/hpcc.xml
+++ b/src/engine/SCons/Tool/hpcc.xml
@@ -6,6 +6,13 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="hpcc">
<summary>
-XXX
+Set construction variables for the
+<application>aCC</application> on HP/UX systems.
+Calls the &t-cXX; tool for additional variables.
</summary>
+<sets>
+CXX
+SHCXXFLAGS
+CXXVERSION
+</sets>
</tool>
diff --git a/src/engine/SCons/Tool/hplink.xml b/src/engine/SCons/Tool/hplink.xml
index 1bd3b78a..6a450179 100644
--- a/src/engine/SCons/Tool/hplink.xml
+++ b/src/engine/SCons/Tool/hplink.xml
@@ -6,6 +6,11 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="hplink">
<summary>
-XXX
+Sets construction variables for the linker on HP/UX systems.
</summary>
+<sets>
+LINKFLAGS
+SHLINKFLAGS
+SHLIBSUFFIX
+</sets>
</tool>
diff --git a/src/engine/SCons/Tool/icc.xml b/src/engine/SCons/Tool/icc.xml
index c41486e6..a585f3f2 100644
--- a/src/engine/SCons/Tool/icc.xml
+++ b/src/engine/SCons/Tool/icc.xml
@@ -6,6 +6,25 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="icc">
<summary>
-XXX
+Sets construction variables for the
+<application>icc</application> compiler on OS/2 systems.
</summary>
+<sets>
+CC
+CCCOM
+CXXCOM
+CPPDEFPREFIX
+CPPDEFSUFFIX
+INCPREFIX
+INCSUFFIX
+CFILESUFFIX
+CXXFILESUFFIX
+</sets>
+<uses>
+CFLAGS
+CCFLAGS
+CPPFLAGS
+_CPPDEFFLAGS
+_CPPINCFLAGS
+</uses>
</tool>
diff --git a/src/engine/SCons/Tool/icl.xml b/src/engine/SCons/Tool/icl.xml
index 5b8c3559..13b63926 100644
--- a/src/engine/SCons/Tool/icl.xml
+++ b/src/engine/SCons/Tool/icl.xml
@@ -6,6 +6,7 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="icl">
<summary>
-XXX
+Sets construction variables for the Intel C/C++ compiler.
+Calls the &t-intelc; Tool module to set its variables.
</summary>
</tool>
diff --git a/src/engine/SCons/Tool/ifl.xml b/src/engine/SCons/Tool/ifl.xml
index 4b5b912d..06f24275 100644
--- a/src/engine/SCons/Tool/ifl.xml
+++ b/src/engine/SCons/Tool/ifl.xml
@@ -6,6 +6,19 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="ifl">
<summary>
-XXX
+Sets construction variables for the Intel Fortran compiler.
</summary>
+<sets>
+FORTRAN
+FORTRANCOM
+FORTRANPPCOM
+SHFORTRANCOM
+SHFORTRANPPCOM
+</sets>
+<uses>
+FORTRANFLAGS
+_FORTRANINCFLAGS
+CPPFLAGS
+_CPPDEFFLAGS
+</uses>
</tool>
diff --git a/src/engine/SCons/Tool/ifort.xml b/src/engine/SCons/Tool/ifort.xml
index 0303dec5..20950f80 100644
--- a/src/engine/SCons/Tool/ifort.xml
+++ b/src/engine/SCons/Tool/ifort.xml
@@ -6,6 +6,11 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="ifort">
<summary>
-XXX
+Sets construction variables for newer versions
+of the Intel Fortran compiler for Linux.
</summary>
+<sets>
+SHLINK
+SHLINKFLAGS
+</sets>
</tool>
diff --git a/src/engine/SCons/Tool/ilink.xml b/src/engine/SCons/Tool/ilink.xml
index 03acfa4a..2b29b30c 100644
--- a/src/engine/SCons/Tool/ilink.xml
+++ b/src/engine/SCons/Tool/ilink.xml
@@ -6,6 +6,18 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="ilink">
<summary>
-XXX
+Sets construction variables for the
+<application>ilink</application> linker on OS/2 systems.
</summary>
+<sets>
+LINK
+LINKFLAGS
+LINKCOM
+LIBDIRPREFIX
+LIBDIRSUFFIX
+LIBLINKPREFIX
+LIBLINKSUFFIX
+</sets>
+<uses>
+</uses>
</tool>
diff --git a/src/engine/SCons/Tool/ilink32.xml b/src/engine/SCons/Tool/ilink32.xml
index 370d0464..49e868b9 100644
--- a/src/engine/SCons/Tool/ilink32.xml
+++ b/src/engine/SCons/Tool/ilink32.xml
@@ -6,6 +6,18 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="ilink32">
<summary>
-XXX
+Sets construction variables for the Borland
+<application>ilink32</application> linker.
</summary>
+<sets>
+LINK
+LINKFLAGS
+LINKCOM
+LIBDIRPREFIX
+LIBDIRSUFFIX
+LIBLINKPREFIX
+LIBLINKSUFFIX
+</sets>
+<uses>
+</uses>
</tool>
diff --git a/src/engine/SCons/Tool/intelc.xml b/src/engine/SCons/Tool/intelc.xml
index 0141c22f..0abc2a7e 100644
--- a/src/engine/SCons/Tool/intelc.xml
+++ b/src/engine/SCons/Tool/intelc.xml
@@ -6,8 +6,22 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="intelc">
<summary>
-XXX
+Sets construction variables for the Intel C/C++ compiler
+(Linux and Windows, version 7 and later).
+Calls the &t-gcc; or &t-msvc;
+(on Linux and Windows, respectively)
+to set underlying variables.
</summary>
+<sets>
+CC
+CXX
+LINK
+AR
+<!--LD-->
+INTEL_C_COMPILER_VERSION
+</sets>
+<uses>
+</uses>
</tool>
<cvar name="INTEL_C_COMPILER_VERSION">
diff --git a/src/engine/SCons/Tool/jar.xml b/src/engine/SCons/Tool/jar.xml
index 488459b7..0deaaaeb 100644
--- a/src/engine/SCons/Tool/jar.xml
+++ b/src/engine/SCons/Tool/jar.xml
@@ -6,8 +6,17 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="jar">
<summary>
-XXX
+Sets construction variables for the &jar; utility.
</summary>
+<sets>
+JAR
+JARFLAGS
+JARCOM
+JARSUFFIX
+</sets>
+<uses>
+JARCOMSTR
+</uses>
</tool>
<builder name="Jar">
diff --git a/src/engine/SCons/Tool/javac.xml b/src/engine/SCons/Tool/javac.xml
index 400a23b2..6c28e8cc 100644
--- a/src/engine/SCons/Tool/javac.xml
+++ b/src/engine/SCons/Tool/javac.xml
@@ -6,8 +6,18 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="javac">
<summary>
-XXX
+Sets construction variables for the &javac; compiler.
</summary>
+<sets>
+JAVAC
+JAVACFLAGS
+JAVACCOM
+JAVACLASSSUFFIX
+JAVASUFFIX
+</sets>
+<uses>
+JAVACCOMSTR
+</uses>
</tool>
<builder name="Java">
diff --git a/src/engine/SCons/Tool/javah.xml b/src/engine/SCons/Tool/javah.xml
index 75d0efb5..c6487e7c 100644
--- a/src/engine/SCons/Tool/javah.xml
+++ b/src/engine/SCons/Tool/javah.xml
@@ -6,8 +6,17 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="javah">
<summary>
-XXX
+Sets construction variables for the &javah; tool.
</summary>
+<sets>
+JAVAH
+JAVAHFLAGS
+JAVAHCOM
+JAVACLASSSUFFIX
+</sets>
+<uses>
+JAVAHCOMSTR
+</uses>
</tool>
<builder name="JavaH">
diff --git a/src/engine/SCons/Tool/latex.xml b/src/engine/SCons/Tool/latex.xml
index 35eea30a..1584e0fe 100644
--- a/src/engine/SCons/Tool/latex.xml
+++ b/src/engine/SCons/Tool/latex.xml
@@ -6,8 +6,16 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="latex">
<summary>
-XXX
+Sets construction variables for the &latex; utility.
</summary>
+<sets>
+LATEX
+LATEXFLAGS
+LATEXCOM
+</sets>
+<uses>
+LATEXCOMSTR
+</uses>
</tool>
<cvar name="LATEX">
diff --git a/src/engine/SCons/Tool/lex.xml b/src/engine/SCons/Tool/lex.xml
index d67feb08..d7d86d02 100644
--- a/src/engine/SCons/Tool/lex.xml
+++ b/src/engine/SCons/Tool/lex.xml
@@ -6,8 +6,16 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="lex">
<summary>
-XXX
+Sets construction variables for the &lex; lexical analyser.
</summary>
+<sets>
+LEX
+LEXFLAGS
+LEXCOM
+</sets>
+<uses>
+LEXCOMSTR
+</uses>
</tool>
<cvar name="LEX">
diff --git a/src/engine/SCons/Tool/link.xml b/src/engine/SCons/Tool/link.xml
index 0728ddad..8737bea4 100644
--- a/src/engine/SCons/Tool/link.xml
+++ b/src/engine/SCons/Tool/link.xml
@@ -6,8 +6,31 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="link">
<summary>
-XXX
+Sets construction variables for generic POSIX linkers.
</summary>
+<sets>
+SHLINK
+SHLINKFLAGS
+SHLINKCOM
+LINK
+LINKFLAGS
+LINKCOM
+LIBDIRPREFIX
+LIBDIRSUFFIX
+LIBLINKPREFIX
+LIBLINKSUFFIX
+SHLIBSUFFIX
+LDMODULE
+LDMODULEPREFIX
+LDMODULESUFFIX
+LDMODULEFLAGS
+LDMODULECOM
+</sets>
+<uses>
+SHLINKCOMSTR
+LINKCOMSTR
+LDMODULECOMSTR
+</uses>
</tool>
<cvar name="LDMODULE">
diff --git a/src/engine/SCons/Tool/linkloc.xml b/src/engine/SCons/Tool/linkloc.xml
index 58ffc483..e8a54f49 100644
--- a/src/engine/SCons/Tool/linkloc.xml
+++ b/src/engine/SCons/Tool/linkloc.xml
@@ -6,6 +6,26 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="linkloc">
<summary>
-XXX
+Sets construction variables for the
+<application>LinkLoc</application>
+linker for the Phar Lap ETS embedded operating system.
</summary>
+<sets>
+<!--SUBST_CMD_FILE-->
+SHLINK
+SHLINKFLAGS
+SHLINKCOM
+<!--SHLINKEMITTER-->
+LINK
+LINKFLAGS
+LINKCOM
+LIBDIRPREFIX
+LIBDIRSUFFIX
+LIBLINKPREFIX
+LIBLINKSUFFIX
+</sets>
+<uses>
+SHLINKCOMSTR
+LINKCOMSTR
+</uses>
</tool>
diff --git a/src/engine/SCons/Tool/m4.xml b/src/engine/SCons/Tool/m4.xml
index 0ee421e5..63d16bee 100644
--- a/src/engine/SCons/Tool/m4.xml
+++ b/src/engine/SCons/Tool/m4.xml
@@ -6,8 +6,16 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="m4">
<summary>
-XXX
+Sets construction variables for the &m4; macro processor.
</summary>
+<sets>
+M4
+M4FLAGS
+M4COM
+</sets>
+<uses>
+M4COMSTR
+</uses>
</tool>
<builder name="M4">
diff --git a/src/engine/SCons/Tool/masm.xml b/src/engine/SCons/Tool/masm.xml
index ee1ed1d7..614da1fc 100644
--- a/src/engine/SCons/Tool/masm.xml
+++ b/src/engine/SCons/Tool/masm.xml
@@ -6,6 +6,21 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="masm">
<summary>
-XXX
+Sets construction variables for the Microsoft assembler.
</summary>
+<sets>
+AS
+ASFLAGS
+ASPPFLAGS
+ASCOM
+ASPPCOM
+<!--STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME-->
+</sets>
+<uses>
+ASCOMSTR
+ASPPCOMSTR
+CPPFLAGS
+_CPPDEFFLAGS
+_CPPINCFLAGS
+</uses>
</tool>
diff --git a/src/engine/SCons/Tool/midl.xml b/src/engine/SCons/Tool/midl.xml
index 8885785f..2698aa69 100644
--- a/src/engine/SCons/Tool/midl.xml
+++ b/src/engine/SCons/Tool/midl.xml
@@ -6,8 +6,16 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="midl">
<summary>
-XXX
+Sets construction variables for the Microsoft IDL compiler.
</summary>
+<sets>
+MIDL
+MIDLFLAGS
+MIDLCOM
+</sets>
+<uses>
+MIDLCOMSTR
+</uses>
</tool>
<builder name="TypeLibrary">
@@ -32,3 +40,29 @@ and
files.
</summary>
</builder>
+
+<cvar name="MIDL">
+<summary>
+The Microsoft IDL compiler.
+</summary>
+</cvar>
+
+<cvar name="MIDLCOM">
+<summary>
+The command line used to pass files to the Microsoft IDL compiler.
+</summary>
+</cvar>
+
+<cvar name="MIDLCOMSTR">
+<summary>
+The string displayed when
+the Microsoft IDL copmiler is called.
+If this is not set, then &cv-link-MIDLCOM; (the command line) is displayed.
+</summary>
+</cvar>
+
+<cvar name="MIDLFLAGS">
+<summary>
+General options passed to the Microsoft IDL compiler.
+</summary>
+</cvar>
diff --git a/src/engine/SCons/Tool/mingw.xml b/src/engine/SCons/Tool/mingw.xml
index 9f9cf1f3..048124c9 100644
--- a/src/engine/SCons/Tool/mingw.xml
+++ b/src/engine/SCons/Tool/mingw.xml
@@ -6,6 +6,32 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="mingw">
<summary>
-XXX
+Sets construction variables for MinGW (Minimal Gnu on Windows).
</summary>
+<sets>
+CC
+SHCCFLAGS
+CXX
+SHCXXFLAGS
+SHLINKFLAGS
+SHLINKCOM
+AS
+WINDOWSDEFPREFIX
+WINDOWSDEFSUFFIX
+SHOBJSUFFIX
+<!--STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME-->
+RC
+RCFLAGS
+RCINCFLAGS
+RCINCPREFIX
+RCINCSUFFIX
+RCCOM
+OBJSUFFIX
+LIBPREFIX
+LIBSUFFIX
+</sets>
+<uses>
+SHLINKCOMSTR
+RCCOMSTR
+</uses>
</tool>
diff --git a/src/engine/SCons/Tool/mslib.xml b/src/engine/SCons/Tool/mslib.xml
index 9d56fd5c..014ca9b5 100644
--- a/src/engine/SCons/Tool/mslib.xml
+++ b/src/engine/SCons/Tool/mslib.xml
@@ -6,6 +6,18 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="mslib">
<summary>
-XXX
+Sets construction variables for the Microsoft
+<application>mslib</application>
+library archiver.
</summary>
+<sets>
+AR
+ARFLAGS
+ARCOM
+LIBPREFIX
+LIBSUFFIX
+</sets>
+<uses>
+ARCOMSTR
+</uses>
</tool>
diff --git a/src/engine/SCons/Tool/mslink.xml b/src/engine/SCons/Tool/mslink.xml
index 160d4150..6ad9dead 100644
--- a/src/engine/SCons/Tool/mslink.xml
+++ b/src/engine/SCons/Tool/mslink.xml
@@ -6,8 +6,49 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="mslink">
<summary>
-XXX
-</summary>
+Sets construction variables for the Microsoft linker.
+</summary>
+<sets>
+SHLINK
+SHLINKFLAGS
+SHLINKCOM
+LINK
+LINKFLAGS
+LINKCOM
+LIBDIRPREFIX
+LIBDIRSUFFIX
+LIBLINKPREFIX
+LIBLINKSUFFIX
+WIN32DEFPREFIX
+WIN32DEFSUFFIX
+WINDOWSDEFPREFIX
+WINDOWSDEFSUFFIX
+WINDOWS_INSERT_DEF
+WIN32EXPPREFIX
+WIN32EXPSUFFIX
+WINDOWSEXPPREFIX
+WINDOWSEXPSUFFIX
+WINDOWSSHLIBMANIFESTPREFIX
+WINDOWSSHLIBMANIFESTSUFFIX
+WINDOWSPROGMANIFESTPREFIX
+WINDOWSPROGMANIFESTSUFFIX
+<!--REGSVRACTION-->
+REGSVR
+REGSVRFLAGS
+REGSVRCOM
+LDMODULE
+LDMODULEPREFIX
+LDMODULESUFFIX
+LDMODULEFLAGS
+LDMODULECOM
+</sets>
+<uses>
+SHLINKCOMSTR
+LINKCOMSTR
+REGSVRCOMSTR
+MSVS_IGNORE_IDE_PATHS
+LDMODULECOMSTR
+</uses>
</tool>
<cvar name="no_import_lib">
diff --git a/src/engine/SCons/Tool/msvc.xml b/src/engine/SCons/Tool/msvc.xml
index 0ea26026..b85c7aa0 100644
--- a/src/engine/SCons/Tool/msvc.xml
+++ b/src/engine/SCons/Tool/msvc.xml
@@ -6,8 +6,50 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="msvc">
<summary>
-XXX
+Sets construction variables for the Microsoft Visual C/C++ compiler.
</summary>
+<sets>
+CCPDBFLAGS
+CCPCHFLAGS
+<!--CCCOMFLAGS-->
+CC
+CCFLAGS
+CFLAGS
+CCCOM
+SHCC
+SHCCFLAGS
+SHCFLAGS
+SHCCCOM
+CXX
+CXXFLAGS
+CXXCOM
+SHCXX
+SHCXXFLAGS
+SHCXXCOM
+CPPDEFPREFIX
+CPPDEFSUFFIX
+INCPREFIX
+INCSUFFIX
+<!--STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME-->
+RC
+RCFLAGS
+RCCOM
+BUILDERS
+OBJPREFIX
+OBJSUFFIX
+SHOBJPREFIX
+SHOBJSUFFIX
+CFILESUFFIX
+CXXFILESUFFIX
+PCHPDBFLAGS
+PCHCOM
+</sets>
+<uses>
+CCCOMSTR
+SHCCCOMSTR
+CXXCOMSTR
+SHCXXCOMSTR
+</uses>
</tool>
<builder name="PCH">
@@ -127,6 +169,14 @@ If this is not set, then &cv-link-PCHCOM; (the command line) is displayed.
</summary>
</cvar>
+<cvar name="PCHPDBFLAGS">
+<summary>
+A construction variable that, when expanded,
+adds the <literal>/yD</literal> flag to the command line
+only if the &cv-PDB; construction variable is set.
+</summary>
+</cvar>
+
<cvar name="PCHSTOP">
<summary>
This variable specifies how much of a source file is precompiled. This
@@ -169,3 +219,36 @@ If this is not set, then &cv-link-RCCOM; (the command line) is displayed.
The flags passed to the resource compiler by the RES builder.
</summary>
</cvar>
+
+<cvar name="RCINCFLAGS">
+<summary>
+An automatically-generated construction variable
+containing the command-line options
+for specifying directories to be searched
+by the resource compiler.
+The value of &cv-RCINCFLAGS; is created
+by appending &cv-RCINCPREFIX; and &cv-RCINCSUFFIX;
+to the beginning and end
+of each directory in &cv-CPPPATH;.
+</summary>
+</cvar>
+
+<cvar name="RCINCPREFIX">
+<summary>
+The prefix (flag) used to specify an include directory
+on the resource compiler command line.
+This will be appended to the beginning of each directory
+in the &cv-CPPPATH; construction variable
+when the &cv-RCINCFLAGS; variable is expanded.
+</summary>
+</cvar>
+
+<cvar name="RCINCSUFFIX">
+<summary>
+The suffix used to specify an include directory
+on the resource compiler command line.
+This will be appended to the end of each directory
+in the &cv-CPPPATH; construction variable
+when the &cv-RCINCFLAGS; variable is expanded.
+</summary>
+</cvar>
diff --git a/src/engine/SCons/Tool/msvs.xml b/src/engine/SCons/Tool/msvs.xml
index 07fda0c3..2bf02f8d 100644
--- a/src/engine/SCons/Tool/msvs.xml
+++ b/src/engine/SCons/Tool/msvs.xml
@@ -6,8 +6,22 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="msvs">
<summary>
-XXX
+Sets construction variables for Microsoft Visual Studio.
</summary>
+<sets>
+MSVSPROJECTCOM
+MSVSSOLUTIONCOM
+MSVSSCONSCRIPT
+MSVSSCONS
+MSVSSCONSFLAGS
+MSVSSCONSCOM
+MSVSBUILDCOM
+MSVSREBUILDCOM
+MSVSCLEANCOM
+MSVSENCODING
+</sets>
+<uses>
+</uses>
</tool>
<builder name ="MSVSProject">
@@ -373,9 +387,15 @@ There is no default value.
Tells the MS Visual Studio tool(s) to use
the MFC directories in its default paths
for compiling and linking.
-Under MSVS version 6,
+The &cv-MSVS_USE_MFC_DIRS; variable has no effect if the
+<envar>INCLUDE</envar>
+or
+<envar>LIB</envar>
+environment variables are set explictly.
+
+Under Visual Studio version 6,
setting
-<envar>MSVS_USE_MFC_DIRS</envar>
+&cv-MSVS_USE_MFC_DIRS;
to a non-zero value
adds the
<filename>ATL\include</filename>
@@ -386,42 +406,57 @@ the default
<envar>INCLUDE</envar>
external environment variable,
and adds the
-<envar>MFC\lib</envar>
+<filename>MFC\lib</filename>
directory to
the default
<envar>LIB</envar>
external environment variable.
-Under MSVS version 7,
+
+Under Visual Studio version 7,
setting
-<envar>MSVS_USE_MFC_DIRS</envar>
+&cv-MSVS_USE_MFC_DIRS;
to a non-zero value
adds the
-<envar>atlmfc\include</envar>
+<filename>atlmfc\include</filename>
directory to the default
<envar>INCLUDE</envar>
external environment variable,
and adds the
-<envar>atlmfc\lib</envar>
+<filename>atlmfc\lib</filename>
directory to the default
<envar>LIB</envar>
external environment variable.
-The current default value is
-<literal>1</literal>,
-which means these directories
-are added to the paths by default.
-This default value is likely to change
-in a future release,
-so users who want the ATL and MFC
-values included in their paths
-are encouraged to enable the
-<envar>MSVS_USE_MFC_DIRS</envar>
-value explicitly
-to avoid future incompatibility.
-This variable has no effect if the
+
+Under Visual Studio version 8,
+setting
+&cv-MSVS_USE_MFC_DIRS;
+to a non-zero value will,
+by default,
+add the
+<filename>atlmfc\include</filename>
+directory to the default
<envar>INCLUDE</envar>
-or
+external environment variable,
+and the
+<filename>atlmfc\lib</filename>
+directory to the default
<envar>LIB</envar>
-environment variables are set explictly.
+external environment variable.
+If, however, the
+<envar>['MSVS']['PLATFORMSDKDIR']</envar>
+variable is set,
+then the
+<filename>mfc</filename>
+and the
+<filename>atl</filename>
+subdirectories of the
+<envar>PLATFORMSDKDIR</envar>
+are added to the default value of the
+<envar>INCLUDE</envar>
+external environment variable,
+and the default value of the
+<envar>LIB</envar>
+external environment variable is left untouched.
</summary>
</cvar>
diff --git a/src/engine/SCons/Tool/mwcc.xml b/src/engine/SCons/Tool/mwcc.xml
index 443eda75..5ea07ee3 100644
--- a/src/engine/SCons/Tool/mwcc.xml
+++ b/src/engine/SCons/Tool/mwcc.xml
@@ -6,8 +6,36 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="mwcc">
<summary>
-XXX
+Sets construction variables for the Metrowerks CodeWarrior compiler.
</summary>
+<sets>
+MWCW_VERSIONS
+MWCW_VERSION
+<!--CCCOMFLAGS-->
+CC
+CCCOM
+CXX
+CXXCOM
+SHCC
+SHCCFLAGS
+SHCFLAGS
+SHCCCOM
+SHCXX
+SHCXXFLAGS
+SHCXXCOM
+CFILESUFFIX
+CXXFILESUFFIX
+CPPDEFPREFIX
+CPPDEFSUFFIX
+INCPREFIX
+INCSUFFIX
+</sets>
+<uses>
+CCCOMSTR
+CXXCOMSTR
+SHCCCOMSTR
+SHCXXCOMSTR
+</uses>
</tool>
<cvar name="MWCW_VERSION">
diff --git a/src/engine/SCons/Tool/mwld.xml b/src/engine/SCons/Tool/mwld.xml
index 9943927e..c2b0d635 100644
--- a/src/engine/SCons/Tool/mwld.xml
+++ b/src/engine/SCons/Tool/mwld.xml
@@ -6,6 +6,22 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="mwld">
<summary>
-XXX
+Sets construction variables for the Metrowerks CodeWarrior linker.
</summary>
+<sets>
+AR
+ARCOM
+LIBDIRPREFIX
+LIBDIRSUFFIX
+LIBLINKPREFIX
+LIBLINKSUFFIX
+LINK
+LINKCOM
+SHLINK
+SHLINKFLAGS
+SHLINKCOM
+<!--SHLIBEMITTER-->
+</sets>
+<uses>
+</uses>
</tool>
diff --git a/src/engine/SCons/Tool/nasm.xml b/src/engine/SCons/Tool/nasm.xml
index 071f5378..d2cb5c2b 100644
--- a/src/engine/SCons/Tool/nasm.xml
+++ b/src/engine/SCons/Tool/nasm.xml
@@ -6,6 +6,18 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="nasm">
<summary>
-XXX
+Sets construction variables for the
+<application>nasm</application> Netwide Assembler.
</summary>
+<sets>
+AS
+ASFLAGS
+ASPPFLAGS
+ASCOM
+ASPPCOM
+</sets>
+<uses>
+ASCOMSTR
+ASPPCOMSTR
+</uses>
</tool>
diff --git a/src/engine/SCons/Tool/pdf.xml b/src/engine/SCons/Tool/pdf.xml
index 1e447dda..c3a4eed2 100644
--- a/src/engine/SCons/Tool/pdf.xml
+++ b/src/engine/SCons/Tool/pdf.xml
@@ -4,6 +4,16 @@ __COPYRIGHT__
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
+<tool name="pdf">
+<summary>
+Sets construction variables for the Portable Document Format builder.
+</summary>
+<sets>
+PDFPREFIX
+PDFSUFFIX
+</sets>
+</tool>
+
<builder name="PDF">
<summary>
Builds a <filename>.pdf</filename> file
diff --git a/src/engine/SCons/Tool/pdflatex.xml b/src/engine/SCons/Tool/pdflatex.xml
index e9fe793e..71f62561 100644
--- a/src/engine/SCons/Tool/pdflatex.xml
+++ b/src/engine/SCons/Tool/pdflatex.xml
@@ -6,6 +6,44 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="pdflatex">
<summary>
-XXX
+Sets construction variables for the &pdflatex; utility.
</summary>
+<sets>
+PDFLATEX
+PDFLATEXFLAGS
+PDFLATEXCOM
+LATEXRETRIES
+</sets>
+<uses>
+PDFLATEXCOMSTR
+</uses>
</tool>
+
+<cvar name="PDFLATEX">
+<summary>
+The &pdflatex; utility.
+</summary>
+</cvar>
+
+<cvar name="PDFLATEXCOM">
+<summary>
+The command line used to call the &pdflatex; utility.
+</summary>
+</cvar>
+
+<cvar name="PDFLATEXCOMSTR">
+<summary>
+The string displayed when calling the &pdflatex; utility.
+If this is not set, then &cv-link-PDFLATEXCOM; (the command line) is displayed.
+
+<example>
+env = Environment(PDFLATEX;COMSTR = "Building $TARGET from LaTeX input $SOURCES")
+</example>
+</summary>
+</cvar>
+
+<cvar name="PDFLATEXFLAGS">
+<summary>
+General options passed to the &pdflatex; utility.
+</summary>
+</cvar>
diff --git a/src/engine/SCons/Tool/pdftex.xml b/src/engine/SCons/Tool/pdftex.xml
index 47e4138a..a895d6f3 100644
--- a/src/engine/SCons/Tool/pdftex.xml
+++ b/src/engine/SCons/Tool/pdftex.xml
@@ -6,6 +6,48 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="pdftex">
<summary>
-XXX
+Sets construction variables for the &pdftex; utility.
</summary>
+<sets>
+PDFTEX
+PDFTEXFLAGS
+PDFTEXCOM
+PDFLATEX
+PDFLATEXFLAGS
+PDFLATEXCOM
+LATEXRETRIES
+</sets>
+<uses>
+PDFTEXCOMSTR
+PDFLATEXCOMSTR
+</uses>
</tool>
+
+<cvar name="PDFTEX">
+<summary>
+The &pdftex; utility.
+</summary>
+</cvar>
+
+<cvar name="PDFTEXCOM">
+<summary>
+The command line used to call the &pdftex; utility.
+</summary>
+</cvar>
+
+<cvar name="PDFTEXCOMSTR">
+<summary>
+The string displayed when calling the &pdftex; utility.
+If this is not set, then &cv-link-PDFTEXCOM; (the command line) is displayed.
+
+<example>
+env = Environment(PDFTEXCOMSTR = "Building $TARGET from TeX input $SOURCES")
+</example>
+</summary>
+</cvar>
+
+<cvar name="PDFTEXFLAGS">
+<summary>
+General options passed to the &pdftex; utility.
+</summary>
+</cvar>
diff --git a/src/engine/SCons/Tool/qt.xml b/src/engine/SCons/Tool/qt.xml
index 4b11cbcc..66fe5545 100644
--- a/src/engine/SCons/Tool/qt.xml
+++ b/src/engine/SCons/Tool/qt.xml
@@ -6,8 +6,36 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="qt">
<summary>
-XXX
+Sets construction variables for building Qt applications.
</summary>
+<sets>
+QTDIR
+QT_BINPATH
+QT_CPPPATH
+QT_LIBPATH
+QT_MOC
+QT_UIC
+QT_LIB
+QT_AUTOSCAN
+QT_UICIMPLFLAGS
+QT_UICDECLFLAGS
+QT_MOCFROMHFLAGS
+QT_MOCFROMCXXFLAGS
+QT_UICDECLPREFIX
+QT_UICDECLSUFFIX
+QT_UICIMPLPREFIX
+QT_UICIMPLSUFFIX
+QT_MOCHPREFIX
+QT_MOCHSUFFIX
+QT_MOCCXXPREFIX
+QT_MOCCXXSUFFIX
+QT_UISUFFIX
+QT_UICCOM
+QT_MOCFROMHCOM
+QT_MOCFROMCXXCOM
+</sets>
+<uses>
+</uses>
</tool>
<builder name="Moc">
@@ -168,10 +196,10 @@ file.
</summary>
</cvar>
-<cvar name="QT_MOCFROMCPPFLAGS">
+<cvar name="QT_MOCFROMCXXFLAGS">
<summary>
Default value is '-i'. These flags are passed to moc, when moccing a
-cpp file.
+C++ file.
</summary>
</cvar>
diff --git a/src/engine/SCons/Tool/rmic.xml b/src/engine/SCons/Tool/rmic.xml
index 63511e54..ff13f48f 100644
--- a/src/engine/SCons/Tool/rmic.xml
+++ b/src/engine/SCons/Tool/rmic.xml
@@ -6,8 +6,17 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="rmic">
<summary>
-XXX
+Sets construction variables for the &rmic; utility.
</summary>
+<sets>
+RMIC
+RMICFLAGS
+RMICCOM
+JAVACLASSSUFFIX
+</sets>
+<uses>
+RMICCOMSTR
+</uses>
</tool>
<builder name="RMIC">
diff --git a/src/engine/SCons/Tool/rpcgen.xml b/src/engine/SCons/Tool/rpcgen.xml
index a3adb224..dd774168 100644
--- a/src/engine/SCons/Tool/rpcgen.xml
+++ b/src/engine/SCons/Tool/rpcgen.xml
@@ -6,8 +6,18 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="rpcgen">
<summary>
-XXX
+Sets construction variables for building with RPCGEN.
</summary>
+<sets>
+RPCGEN
+RPCGENFLAGS
+RPCGENCLIENTFLAGS
+RPCGENHEADERFLAGS
+RPCGENSERVICEFLAGS
+RPCGENXDRFLAGS
+</sets>
+<uses>
+</uses>
</tool>
<builder name="RPCGenClient">
diff --git a/src/engine/SCons/Tool/sgiar.xml b/src/engine/SCons/Tool/sgiar.xml
index ccea1ca8..63debc43 100644
--- a/src/engine/SCons/Tool/sgiar.xml
+++ b/src/engine/SCons/Tool/sgiar.xml
@@ -6,6 +6,19 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="sgiar">
<summary>
-XXX
+Sets construction variables for the SGI library archiver.
</summary>
+<sets>
+AR
+ARFLAGS
+ARCOMSTR
+SHLINK
+SHLINKFLAGS
+LIBPREFIX
+LIBSUFFIX
+</sets>
+<uses>
+ARCOMSTR
+SHLINKCOMSTR
+</uses>
</tool>
diff --git a/src/engine/SCons/Tool/sgic++.xml b/src/engine/SCons/Tool/sgic++.xml
index a507f794..a933ac2d 100644
--- a/src/engine/SCons/Tool/sgic++.xml
+++ b/src/engine/SCons/Tool/sgic++.xml
@@ -6,6 +6,13 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="sgic++">
<summary>
-XXX
+Sets construction variables for the SGI C++ compiler.
</summary>
+<sets>
+CXX
+CXXFLAGS
+SHCXX
+SHOBJSUFFIX
+<!--STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME-->
+</sets>
</tool>
diff --git a/src/engine/SCons/Tool/sgicc.xml b/src/engine/SCons/Tool/sgicc.xml
index 285ae8c5..152b841c 100644
--- a/src/engine/SCons/Tool/sgicc.xml
+++ b/src/engine/SCons/Tool/sgicc.xml
@@ -6,6 +6,13 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="sgicc">
<summary>
-XXX
+Sets construction variables for the SGI C compiler.
</summary>
+<sets>
+CXX
+SHOBJSUFFIX
+<!--STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME-->
+</sets>
+<uses>
+</uses>
</tool>
diff --git a/src/engine/SCons/Tool/sgilink.xml b/src/engine/SCons/Tool/sgilink.xml
index 8fa8f7d7..23039725 100644
--- a/src/engine/SCons/Tool/sgilink.xml
+++ b/src/engine/SCons/Tool/sgilink.xml
@@ -6,6 +6,12 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="sgilink">
<summary>
-XXX
+Sets construction variables for the SGI linker.
</summary>
+<sets>
+LINK
+SHLINKFLAGS
+RPATHPREFIX
+RPATHSUFFIX
+</sets>
</tool>
diff --git a/src/engine/SCons/Tool/sunar.xml b/src/engine/SCons/Tool/sunar.xml
index e22563d8..884a8644 100644
--- a/src/engine/SCons/Tool/sunar.xml
+++ b/src/engine/SCons/Tool/sunar.xml
@@ -6,6 +6,20 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="sunar">
<summary>
-XXX
+Sets construction variables for the Sun library archiver.
</summary>
+<sets>
+AR
+ARFLAGS
+ARCOM
+SHLINK
+SHLINKFLAGS
+SHLINKCOM
+LIBPREFIX
+LIBSUFFIX
+</sets>
+<uses>
+ARCOMSTR
+SHLINKCOMSTR
+</uses>
</tool>
diff --git a/src/engine/SCons/Tool/sunc++.xml b/src/engine/SCons/Tool/sunc++.xml
index c18dd909..6eb2920d 100644
--- a/src/engine/SCons/Tool/sunc++.xml
+++ b/src/engine/SCons/Tool/sunc++.xml
@@ -6,6 +6,14 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="sunc++">
<summary>
-XXX
+Sets construction variables for the Sun C++ compiler.
</summary>
+<sets>
+CXX
+SHCXX
+CXXVERSION
+SHCXXFLAGS
+SHOBJPREFIX
+SHOBJSUFFIX
+</sets>
</tool>
diff --git a/src/engine/SCons/Tool/suncc.xml b/src/engine/SCons/Tool/suncc.xml
index 9f6d3408..da91d124 100644
--- a/src/engine/SCons/Tool/suncc.xml
+++ b/src/engine/SCons/Tool/suncc.xml
@@ -6,6 +6,12 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="suncc">
<summary>
-XXX
+Sets construction variables for the Sun C compiler.
</summary>
+<sets>
+CXX
+SHCCFLAGS
+SHOBJPREFIX
+SHOBJSUFFIX
+</sets>
</tool>
diff --git a/src/engine/SCons/Tool/sunlink.xml b/src/engine/SCons/Tool/sunlink.xml
index 6cad24f7..083d4289 100644
--- a/src/engine/SCons/Tool/sunlink.xml
+++ b/src/engine/SCons/Tool/sunlink.xml
@@ -6,6 +6,11 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="sunlink">
<summary>
-XXX
+Sets construction variables for the Sun linker.
</summary>
+<sets>
+SHLINKFLAGS
+RPATHPREFIX
+RPATHSUFFIX
+</sets>
</tool>
diff --git a/src/engine/SCons/Tool/swig.xml b/src/engine/SCons/Tool/swig.xml
index 05faff2e..d277d642 100644
--- a/src/engine/SCons/Tool/swig.xml
+++ b/src/engine/SCons/Tool/swig.xml
@@ -6,8 +6,18 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="swig">
<summary>
-XXX
+Sets construction variables for the SWIG interface generator.
</summary>
+<sets>
+SWIG
+SWIGFLAGS
+SWIGCFILESUFFIX
+SWIGCXXFILESUFFIX
+SWIGCOM
+</sets>
+<uses>
+SWIGCOMSTR
+</uses>
</tool>
<cvar name="SWIG">
diff --git a/src/engine/SCons/Tool/tar.xml b/src/engine/SCons/Tool/tar.xml
index 763df545..8cf407d9 100644
--- a/src/engine/SCons/Tool/tar.xml
+++ b/src/engine/SCons/Tool/tar.xml
@@ -6,8 +6,17 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="tar">
<summary>
-XXX
+Sets construction variables for the &tar; archiver.
</summary>
+<sets>
+TAR
+TARFLAGS
+TARCOM
+TARSUFFIX
+</sets>
+<uses>
+TARCOMSTR
+</uses>
</tool>
<builder name="Tar">
diff --git a/src/engine/SCons/Tool/tex.xml b/src/engine/SCons/Tool/tex.xml
index 4cfc252c..80a84cc1 100644
--- a/src/engine/SCons/Tool/tex.xml
+++ b/src/engine/SCons/Tool/tex.xml
@@ -6,8 +6,28 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="tex">
<summary>
-XXX
+Sets construction variables for the TeX formatter and typesetter.
</summary>
+<sets>
+TEX
+TEXFLAGS
+TEXCOM
+LATEX
+LATEXFLAGS
+LATEXCOM
+BIBTEX
+BIBTEXFLAGS
+BIBTEXCOM
+MAKEINDEX
+MAKEINDEXFLAGS
+MAKEINDEXCOM
+</sets>
+<uses>
+TEXCOMSTR
+LATEXCOMSTR
+BIBTEXCOMSTR
+MAKEINDEXCOMSTR
+</uses>
</tool>
<cvar name="BIBTEX">
diff --git a/src/engine/SCons/Tool/tlib.xml b/src/engine/SCons/Tool/tlib.xml
index 9415c7d3..55179d3a 100644
--- a/src/engine/SCons/Tool/tlib.xml
+++ b/src/engine/SCons/Tool/tlib.xml
@@ -6,6 +6,17 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="tlib">
<summary>
-XXX
+Sets construction variables for the Borlan
+<application>tib</application> library archiver.
</summary>
+<sets>
+AR
+ARFLAGS
+ARCOM
+LIBPREFIX
+LIBSUFFIX
+</sets>
+<uses>
+ARCOMSTR
+</uses>
</tool>
diff --git a/src/engine/SCons/Tool/yacc.xml b/src/engine/SCons/Tool/yacc.xml
index a6ad9b4b..2db06030 100644
--- a/src/engine/SCons/Tool/yacc.xml
+++ b/src/engine/SCons/Tool/yacc.xml
@@ -6,8 +6,19 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="yacc">
<summary>
-XXX
+Sets construction variables for the &yacc; parse generator.
</summary>
+<sets>
+YACC
+YACCFLAGS
+YACCCOM
+YACCHFILESUFFIX
+YACCHXXFILESUFFIX
+YACCVCGFILESUFFIX
+</sets>
+<uses>
+YACCCOMSTR
+</uses>
</tool>
<cvar name="YACC">
diff --git a/src/engine/SCons/Tool/zip.xml b/src/engine/SCons/Tool/zip.xml
index 909a4c40..c7c233ea 100644
--- a/src/engine/SCons/Tool/zip.xml
+++ b/src/engine/SCons/Tool/zip.xml
@@ -6,8 +6,18 @@ See its __doc__ string for a discussion of the format.
-->
<tool name="zip">
<summary>
-XXX
+Sets construction variables for the &zip; archiver.
</summary>
+<sets>
+ZIP
+ZIPFLAGS
+ZIPCOM
+ZIPCOMPRESSION
+ZIPSUFFIX
+</sets>
+<uses>
+ZIPCOMSTR
+</uses>
</tool>
<builder name="Zip">
@@ -92,3 +102,9 @@ module is otherwise unavailable.
General options passed to the zip utility.
</summary>
</cvar>
+
+<cvar name="ZIPSUFFIX">
+<summary>
+The suffix used for zip file names.
+</summary>
+</cvar>
diff --git a/src/setup.py b/src/setup.py
index d79aed78..5614adba 100644
--- a/src/setup.py
+++ b/src/setup.py
@@ -29,7 +29,7 @@ import stat
import string
import sys
-Version = "0.96.96"
+Version = "0.97"
man_pages = [
'scons.1',
diff --git a/test/Dir.py b/test/Dir/Dir.py
index d7ec9ae7..d7ec9ae7 100644
--- a/test/Dir.py
+++ b/test/Dir/Dir.py
diff --git a/test/Dir/mixed-targets.py b/test/Dir/mixed-targets.py
new file mode 100644
index 00000000..52f9f0ab
--- /dev/null
+++ b/test/Dir/mixed-targets.py
@@ -0,0 +1,70 @@
+#!/usr/bin/env python
+#
+# __COPYRIGHT__
+#
+# 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__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
+
+"""
+Make sure that target lists of intermixed Node.FS.Dir and Node.FS.File
+Nodes work with a DirEntryScanner.
+"""
+
+import TestSCons
+
+test = TestSCons.TestSCons()
+
+test.subdir('src', ['src', 'dir'])
+
+test.write('SConstruct', """\
+import os
+import shutil
+
+import SCons.Defaults
+
+def copier(target, source, env):
+ os.rmdir('build')
+ shutil.copytree(str(source[0]), 'build')
+ return 0
+
+Copier = Builder(action = copier,
+ target_scanner = SCons.Defaults.DirEntryScanner,
+ target_factory = Entry,
+ source_factory = Entry)
+
+env = Environment(BUILDERS = {'Copier': Copier})
+env.Copier(['build/dir', 'build/file1'], ['src'])
+""")
+
+test.write(['src', 'file1'], "src/file1\n")
+
+test.write(['src', 'dir', 'file2'], "src/dir/file2\n")
+test.write(['src', 'dir', 'file3'], "src/dir/file3\n")
+
+test.run(arguments = '.')
+
+test.must_match(['build', 'file1'], "src/file1\n")
+
+test.must_match(['build', 'dir', 'file2'], "src/dir/file2\n")
+test.must_match(['build', 'dir', 'file3'], "src/dir/file3\n")
+
+test.pass_test()
diff --git a/test/DirSource.py b/test/Dir/source.py
index fa07a880..fa07a880 100644
--- a/test/DirSource.py
+++ b/test/Dir/source.py
diff --git a/test/Parallel/ref_count.py b/test/Parallel/ref_count.py
new file mode 100644
index 00000000..93b61422
--- /dev/null
+++ b/test/Parallel/ref_count.py
@@ -0,0 +1,153 @@
+#!/usr/bin/env python
+#
+# __COPYRIGHT__
+#
+# 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__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
+
+"""
+Test for a specific race condition that used to stop a build cold when
+a Node's ref_count would get decremented past 0 and "disappear" from
+the Taskmaster's walk of the dependency graph.
+
+Note that this test does not fail every time, but would at least fail
+more than 60%-70% of the time on the system(s) I tested.
+
+The rather complicated set up here creates a condition where,
+after building four "object files" simultaneously while running with
+-j4, sets up a race condition amongst the three dependencies of the
+c6146/cpumanf.out file, where two of the dependencies are built at the
+same time (that is, by the same command) and one is built separately.
+
+We used to detect Nodes that had been started but not finished building
+and just set the waiting ref_count to the number of Nodes. In this case,
+if we got unlucky, we'd re-visit the Nodes for the two files first and
+set the ref_count to two *before* the command that built individual node
+completed and decremented the ref_count from two to one. Then when the
+two files completed, we'd update the ref_count to 1 - 2 = -1, which would
+cause the Taskmaster to *not* "wake up" the Node because it's ref_count
+hadn't actually reached 0.
+
+(The solution was to not set the ref_count, but to add to it only the
+Nodes that were, in fact, added to the waiting_parents lists of various
+child Nodes.)
+"""
+
+import TestSCons
+
+_python_ = TestSCons._python_
+
+test = TestSCons.TestSCons()
+
+test.write('build.py', """\
+import string
+import sys
+import time
+args = sys.argv[1:]
+outputs = []
+while args:
+ if args[0][0] != '-':
+ break
+ arg = args.pop(0)
+ if arg == '-o':
+ outputs.append(args.pop(0))
+ continue
+ if arg == '-s':
+ time.sleep(int(args.pop(0)))
+contents = ''
+for ifile in args:
+ contents = contents + open(ifile, 'rb').read()
+for ofile in outputs:
+ ofp = open(ofile, 'wb')
+ ofp.write('%s: building from %s\\n' % (ofile, string.join(args)))
+ ofp.write(contents)
+ ofp.close()
+""")
+
+#
+#
+#
+
+test.write('SConstruct', """\
+env = Environment()
+cmd = r'%(_python_)s build.py -o $TARGET $SOURCES'
+f1 = env.Command('c6416/cpumanf/file1.obj', 'file1.c', cmd)
+f2 = env.Command('c6416/cpumanf/file2.obj', 'file2.c', cmd)
+f3 = env.Command('c6416/cpumanf/file3.obj', 'file3.c', cmd)
+f4 = env.Command('c6416/cpumanf/file4.obj', 'file4.c', cmd)
+f5 = env.Command('c6416/cpumanf/file5.obj', 'file5.c', cmd)
+f6 = env.Command('c6416/cpumanf/file6.obj', 'file6.c', cmd)
+
+objs = f1 + f2 + f3 + f4 + f5 + f6
+
+btc = env.Command('build/target/cpumanf.out', 'c6416/cpumanf.out', cmd)
+
+addcheck_obj = env.Command('addcheck.obj', 'addcheck.c', cmd)
+
+addcheck_exe = env.Command('addcheck.exe', addcheck_obj, cmd)
+
+cmd2 = r'%(_python_)s build.py -s 2 -o ${TARGETS[0]} -o ${TARGETS[1]} $SOURCES'
+
+cksums = env.Command(['c6416/cpumanf_pre_cksum.out',
+ 'c6416/cpumanf_pre_cksum.map'],
+ objs,
+ cmd2)
+
+cpumanf_out = env.Command('c6416/cpumanf.out',
+ cksums + addcheck_exe,
+ cmd)
+
+cpumanf = env.Alias('cpumanf', objs + btc)
+
+env.Command('after.out', cpumanf, r'%(_python_)s build.py -o $TARGET after.in')
+""" % locals())
+
+test.write('file1.c', "file1.c\n")
+test.write('file2.c', "file2.c\n")
+test.write('file3.c', "file3.c\n")
+test.write('file4.c', "file4.c\n")
+test.write('file5.c', "file5.c\n")
+test.write('file6.c', "file6.c\n")
+
+test.write('addcheck.c', "addcheck.c\n")
+
+test.write('after.in', "after.in\n")
+
+test.run(arguments = '-j4 after.out')
+
+test.must_match('after.out', """\
+after.out: building from after.in
+after.in
+""")
+
+test.write('file5.c', "file5.c modified\n")
+
+test.write('after.in', "after.in modified\n")
+
+test.run(arguments = '-j4 after.out')
+
+test.must_match('after.out', """\
+after.out: building from after.in
+after.in modified
+""")
+
+test.pass_test()
diff --git a/test/Perforce/Perforce.py b/test/Perforce/Perforce.py
index 0133ced1..a24c65da 100644
--- a/test/Perforce/Perforce.py
+++ b/test/Perforce/Perforce.py
@@ -81,7 +81,17 @@ class TestPerforce(TestSCons.TestSCons):
spawnv(os.P_NOWAIT, self.p4d, args)
self.sleep(2)
else:
- self.p4portflags = ['-p', self.host + ':1666']
+ import socket
+ s = socket.socket()
+ host_port = (self.host, 1666)
+ try:
+ s.connect(host_port)
+ except socket.error:
+ self.skip_test("No Perforce server found; skipping test(s).\n")
+ else:
+ s.close()
+
+ self.p4portflags = ['-p', '%s:%s' % host_port]
try:
self.p4('obliterate -y //%s/...' % self.depot)
self.p4('depot -d %s' % self.depot)
diff --git a/test/TEX/bibtex-latex-rerun.py b/test/TEX/bibtex-latex-rerun.py
index 22932162..353d9a42 100644
--- a/test/TEX/bibtex-latex-rerun.py
+++ b/test/TEX/bibtex-latex-rerun.py
@@ -36,8 +36,14 @@ import TestSCons
test = TestSCons.TestSCons()
+pdflatex = test.where_is('pdflatex')
+
+if not pdflatex:
+ test.skip_test("Could not find pdflatex; skipping test(s).\n")
+
test.write(['SConstruct'], """\
-PDF( 'bibtest.tex' )
+env = Environment(tools=['pdflatex', 'tex'])
+env.PDF( 'bibtest.tex' )
""")
test.write(['bibtest.tex'], r"""
diff --git a/test/import.py b/test/import.py
index d267f00d..7debffc3 100644
--- a/test/import.py
+++ b/test/import.py
@@ -143,11 +143,12 @@ tools = [
'zip',
]
-if sys.platform == 'win32':
- tools.extend([
- '386asm',
- 'linkloc',
- ])
+#if sys.platform == 'win32':
+# Just comment out (for now?) due to registry dependency.
+# tools.extend([
+# '386asm',
+# 'linkloc',
+# ])
# Intel no compiler warning..
intel_no_compiler_warning = """