Handle FunctionAction signatures when the function is an object method.
[scons.git] / src / CHANGES.txt
1 # __COPYRIGHT__
2 # __FILE__ __REVISION__ __DATE__ __DEVELOPER__
3
4
5                  SCons - a software construction tool
6
7                             Change Log
8
9
10
11 RELEASE 0.97 - XXX
12
13   From Anonymous:
14
15   - Fix Java parsing to avoid erroneously identifying a new array
16     of class instances as an anonymous inner class.
17
18   - Fix a typo in the man page description of PathIsDirCreate.
19
20   - Fix the intelc.py Tool module to not throw an exception if the
21     only installed version is something other than ia32.
22
23   From Chad Austin:
24
25   - Allow Help() to be called multiple times, appending to the help
26     text each call.
27
28   - Allow Tools found on a toolpath to import Python modules from
29     their local directory.
30
31   - Have the environment store the toolpath and re-use it to find Tools
32     modules during later Copy() or Tool() calls (unless overridden).
33
34   - Normalize the directory path names in SConsignFile() database
35     files so the same signature file can interoperate on Windows and
36     non-Windows systems.
37
38   - Make --debug=stacktrace print a stacktrace when a UserError is thrown.
39
40   - Remove an old, erroneous cut-and-paste comment in Scanner/Dir.py.
41
42   From Stanislav Baranov:
43
44   - Make it possible to support with custom Alias (sub-)classes.
45
46   - Allow Builders to take empty source lists when called.
47
48   - Allow access to both TARGET and SOURCE in $*PATH expansions.
49
50   - Allow SConscript files to modify BUILD_TARGETS.
51
52   - Add a separate MSVSSolution() Builder, with support for the
53     following new construction variables: $MSVSBUILDCOM, $MSVSCLEANCOM,
54     $MSVSENCODING, $MSVSREBUILDCOM, $MSVSSCONS, $MSVSSCONSCOM,
55     $MSVSSCONSFLAGS, $MSVSSCONSCRIPT and $MSVSSOLUTIONCOM.
56
57   From Timothee Besset:
58
59   - Add support for Objective C/C++ .m and .mm file suffixes (for
60     Mac OS X).
61
62   From Steve Christensen:
63
64   - Handle exceptions from Python functions as build actions.
65
66   - Add a set of canned PathOption validators:  PathExists (the default),
67     PathIsFile, PathIsDir and PathIsDirCreate.
68
69   Charles Crain
70
71   - Fix the PharLap linkloc.py module to use target+source arguments
72     when calling env.subst().
73
74   From Matthew Doar:
75
76   - Add support for .lex and .yacc file suffixes for Lex and Yacc files.
77
78   From Bjorn Eriksson:
79
80   - Fix an incorrect Command() keyword argument in the man page.
81
82   - Add a $TEMPFILEPREFIX variable to control the prefix or flag used
83     to pass a long-command-line-execution tempfile to a command.
84
85   From Eric Frias:
86
87   - Huge performance improvement:  wrap the tuples representing an
88     include path in an object, so that the time it takes to hash the
89     path doesn't grow porportionally to the length of the path.
90
91   From Gottfried Ganssauge:
92
93   - Fix SCons on SuSE/AMD-64 Linux by having the wrapper script also
94     check for the build engine in the parent directory of the Python
95     library directory (/usr/lib64 instead of /usr/lib).
96
97   From Ralph W. Grosse-Kunstleve and Patrick Mezard:
98
99   - Remove unneceesary (and incorrect) SCons.Util strings on some function
100     calls in SCons.Util.
101
102   From August Hörandl:
103
104   - Add a scanner for \include and \import files, with support for
105     searching a directory list in $TEXINPUTS (imported from the external
106     environment).
107
108   - Support $MAKEINDEX, $MAKEINDEXCOM, $MAKEINDEXCOMSTR and
109     $MAKEINDEXFLAGS for generating indices from .idx files.
110
111   From Stephen Kennedy:
112
113   - Speed up writing the .sconsign file at the end of a run by only
114     calling sync() once at the end, not after every entry.
115
116   From Steven Knight:
117
118   - When compiling with Microsoft Visual Studio, don't include the ATL and
119     MFC directories in the default INCLUDE and LIB environment variables.
120
121   - Remove the following deprecated features:  the ParseConfig()
122     global function (deprecated in 0.93); the misspelled "validater"
123     keyword to the Options.Add() method (deprecated in 0.91); the
124     SetBuildSignatureType(), SetContentSignatureType(), SetJobs() and
125     GetJobs() global functions (deprecated in 0.14).
126
127   - Fix problems with corrupting the .sconsign.dblite file when
128     interrupting builds by writing to a temporary file and renaming,
129     not writing the file directly.
130
131   - Fix a 0.96 regression where when running with -k, targets built from
132     walking dependencies later on the command line would not realize
133     that a dependency had failed an earlier build attempt, and would
134     try to rebuild the dependent targets.
135
136   - Change the final messages when using -k and errors occur from
137     "{building,cleaning} terminated because of errors" to "done
138     {building,cleaning} targets (errors occurred during {build,clean})."
139
140   - Allow Configure.CheckFunc() to take an optional header argument
141     (already supported by Conftest.py) to specify text at the top of
142     the compiled test file.
143
144   - Fix the --debug=explain output when a Python function action changed
145     so it prints a meaningful string, not the binary representation of
146     the function contents.
147
148   - Allow a ListOption's default value(s) to be a Python list of specified
149     values, not just a string containing a comma-separated list of names.
150
151   - Add a ParseDepends() function that will parse up a list of explicit
152     dependencies from a "make depend" style file.
153
154   - Support the ability to change directory when executing an Action
155     through "chdir" keyword arguments to Action and Builder creation
156     and calls.
157
158   - Fix handling of Action ojects (and other callables that don't match
159     our calling arguments) in construction variable expansions.
160
161   - On Win32, install scons.bat in the Python directory when installing
162     from setup.py.  (The bdist_wininst installer was already doing this.)
163
164   - Fix env.SConscript() when called with a list of SConscipt files.
165     (The SConscript() global function already worked properly.)
166
167   - Add a missing newline to the end of the --debug=explain "unknown
168     reasons" message.
169
170   - Enhance ParseConfig() to work properly for spaces in between the -I,
171     -L and -l options and their arguments.
172
173   - Packaging build fix:  Rebuild the files that are use to report the
174     --version of SCons whenever the development version number changes.
175
176   - Fix the ability to specify a target_factory of Dir() to a Builder,
177     which the default create-a-directory Builder was interfering with.
178
179   - Mark a directory as built if it's created as part of the preparation
180     for another target, to avoid trying to build it again when it comes
181     up in the target list.
182
183   - Allow a function with the right calling signature to be put directly
184     in an Environment's BUILDERS dictionary, making for easier creation
185     and use of wrappers (pseudo-Builders) that call other Builders.
186
187   - On Python 2.x, wrap lists of Nodes returned by Builders in a UserList
188     object that adds a method that makes str() object return a string
189     with all of the Nodes expanded to their path names.  (Builders under
190     Python 1.5.2 still return lists to avoid TypeErrors when trying
191     to extend() list, so Python 1.5.2 doesn't get pretty-printing of Node
192     lists, but everything should still function.)
193
194   - Allow Aliases to have actions that will be executed whenever
195     any of the expanded Alias targets are out of date.
196
197   - Fix expansion of env.Command() overrides within target and
198     source file names.
199
200   - Support easier customization of what's displayed by various default
201     actions by adding lots of new construction variables: $ARCOMSTR,
202     $ASCOMSTR, $ASPPCOMSTR, $BIBTEXCOMSTR, $BITKEEPERCOMSTR, $CCCOMSTR,
203     $CVSCOMSTR, $CXXCOMSTR, $DCOMSTR, $DVIPDFCOMSTR, $F77COMSTR,
204     $F90COMSTR, $F95COMSTR, $FORTRANCOMSTR, $GSCOMSTR, $JARCOMSTR,
205     $JAVACCOMSTR, $JAVAHCOMSTR, $LATEXCOMSTR, $LEXCOMSTR, $LINKCOMSTR,
206     $M4COMSTR, $MIDLCOMSTR, $P4COMSTR, $PCHCOMSTR, $PDFLATEXCOMSTR,
207     $PDFTEXCOMSTR, $PSCOMSTR, $QT_MOCFROMCXXCOMSTR, $QT_MOCFROMHCOMSTR,
208     $QT_UICCOMSTR, $RCCOMSTR, $REGSVRCOMSTR, $RCS_COCOMSTR, $RMICCOMSTR,
209     $SCCSCOMSTR, $SHCCCOMSTR, $SHCXXCOMSTR, $SHF77COMSTR, $SHF90COMSTR,
210     $SHF95COMSTR, $SHFORTRANCOMSTR, $SHLINKCOMSTR, $SWIGCOMSTR,
211     $TARCOMSTR, $TEXCOMSTR, $YACCCOMSTR and $ZIPCOMSTR.
212
213   - Add an optional "map" keyword argument to ListOption() that takes a
214     dictionary to map user-specified values to legal values from the list
215     (like EnumOption() already doee).
216
217   - Add specific exceptions to try:-except: blocks without any listed,
218     so that they won't catch and mask keyboard interrupts.
219
220   - Make --debug={tree,dtree,stree} print something even when there's
221     a build failure.
222
223   - Fix how Scanners sort the found dependencies so that it doesn't
224     matter whether the dependency file is in a Repository or not.
225     This may cause recompilations upon upgrade to this version.
226
227   - Make AlwaysBuild() work with Alias and Python value Nodes (making
228     it much simpler to support aliases like "clean" that just invoke
229     an arbitrary action).
230
231   - Have env.ParseConfig() use AppendUnique() by default to suppress
232     duplicate entries from multiple calls.  Add a "unique" keyword
233     argument to allow the old behavior to be specified.
234
235   - Allow the library modules imported by an SConscript file to get at
236     all of the normally-available global functions and variables by saying
237     "from SCons.Script import *".
238
239   - Add a --debug=memoizer option to print Memoizer hit/mass statistics.
240
241   - Allow more than one --debug= option to be set at a time.
242
243   - Change --debug=count to report object counts before and after
244     reading SConscript files and before and after building targets.
245
246   - Change --debug=memory output to line up the numbers and to better
247     match (more or less) the headers on the --debug=count columns.
248
249   - Speed things up when there are lists of targets and/or sources by
250     getting rid of some N^2 walks of the lists involved.
251
252   - Cache evaluation of LazyActions so we don't create a new object
253     for each invocation.
254
255   - When scanning, don't create Nodes for include files that don't
256     actually exist on disk.
257
258   - Make supported global variables CScanner, DScanner, ProgramScanner and
259     SourceFileScanner.  Make SourceFileScanner.add_scanner() a supported
260     part of the public interface.  Keep the old SCons.Defaults.*Scan names
261     around for a while longer since some people were already using them.
262
263   - By default, don't scan directories for on-disk files.  Add a
264     DirScanner global scanner that can be used in Builders or Command()
265     calls that want source directory trees scanned for on-disk changes.
266     Have the Tar() and Zip() Builders use the new DirScanner to preserve
267     the behavior of rebuilding a .tar or .zip file if any file or
268     directory under a source tree changes.  Add Command() support for
269     a source_scanner keyword argument to Command() that can be set to
270     DirScanner to get this behavior.
271
272   - Documentation changes:  Explain that $CXXFLAGS contains $CCFLAGS
273     by default.  Fix a bad target_factory example in the man page.
274     Add appendices to the User's Guide to cover the available Tools,
275     Builders and construction variables.  Comment out the build of
276     the old Python 10 paper, which doesn't build on all systems and
277     is old enough at this point that it probably isn't worth the
278     effort to make it do so.
279
280   - Enhanced the SCons setup.py script to install man pages on
281     UNIX/Linux systems.
282
283   - Add support for an Options.FormatOptionHelpText() method that can
284     be overridden to customize the format of Options help text.
285
286   - Add a global name for the Entry class (which had already been
287     documented).
288
289   - Fix re-scanning of generated source files for implicit dependencies
290     when the -j option is used.
291
292   - Fix a dependency problem that caused $LIBS scans to not be added
293     to all of the targets in a multiple-target builder call, which
294     could cause out-of-order builds when the -j option is used.
295
296   - Store the paths of source files and dependencies in the .sconsign*
297     file(s) relative to the target's directory, not relative to the
298     top-level SConstruct directory.  This starts to make it possible to
299     subdivide the dependency tree arbitrarily by putting an SConstruct
300     file in every directory and using content signatures.
301
302   - Add support for $YACCHFILESUFFIX and $YACCHXXFILESUFFIX variables
303     that accomodate parser generators that write header files to a
304     different suffix than the hard-coded .hpp when the -d option is used.
305
306   - The default behavior is now to store signature information in a
307     single .sconsign.dblite file in the top-level SConstruct directory.
308     The old behavior of a separate .sconsign file in each directory can
309     be specified by calling SConsignFile(None).
310
311   - Remove line number byte codes within the signature calculation
312     of Python function actions, so that changing the location of an
313     otherwise unmodified Python function doesn't cause rebuilds.
314
315   - Fix AddPreAction() and AddPostAction() when an action has more than
316     one target file:  attach the actions to the Executor, not the Node.
317
318   - Allow the source directory of a BuildDir / build_dir to be outside
319     of the top-level SConstruct directory tree.
320
321   - Add a --debug=nomemoizer option that disables the Memoizer for clearer
322     looks at the counts and profiles of the underlying function calls,
323     not the Memoizer wrappers.
324
325   - Print various --debug= stats even if we exit early (e.g. using -h).
326
327   - Really only use the cached content signature value if the file
328     is older than --max-drift, not just if --max-drift is set.
329
330   - Remove support for conversion from old (pre 0.96) .sconsign formats.
331
332   - Add support for a --diskcheck option to enable or disable various
333     on-disk checks:  that File and Dir nodes match on-disk entries;
334     whether an RCS file exists for a missing source file; whether an
335     SCCS file exists for a missing source file.
336
337   - Add a --raw argument to the sconsign script, so it can print a
338     raw representation of each entry's NodeInfo dictionary.
339
340   - Add the 'f90' and 'f95' tools to the list of Fortran compilers
341     searched for by default.
342
343   - Add the +Z option by default when compiling shared objects on
344     HP-UX.
345
346   - Check for whether files exist on disk by listing the directory
347     contents, not calling os.path.exists() file by file.  This is
348     somewhat more efficient in general, and may be significantly
349     more efficient on Windows.
350
351   - Minor speedups in the internal is_Dict(), is_List() and is_String()
352     functions.
353
354   - Fix a signature refactoring bug that caused Qt header files to
355     get re-generated every time.
356
357   - Don't fail when writing signatures if the .sconsign.dblite file is
358     owned by a different user (e.g. root) from a previous run.
359
360   - When deleting variables from stacked OverrideEnvironments, don't
361     throw a KeyError if we were able to delte the variable from any
362     Environment in the stack.
363
364   - Get rid of the last indentation tabs in the SCons source files and
365     add -tt to the Python invocations in the packaging build and the
366     tests so they don't creep back in.
367
368   - In Visual Studio project files, put quotes around the -C directory
369     so everything works even if the path has spaces in it.
370
371   - The Intel Fortran compiler uses -object:$TARGET, not "-o $TARGET",
372     when building object files on Windows.  Have the the ifort Tool
373     modify the default command lines appropriately.
374
375   - Document the --debug=explain option in the man page.  (How did we
376     miss this?)
377
378   - Add a $LATEXRETRIES variable to allow configuration of the number of
379     times LaTex can be re-called to try to resolve undefined references.
380
381   - Change the order of the arguments to Configure.Checklib() to match
382     the documentation.
383
384   - Handle signature calculation properly when the Python function used
385     for a FunctionAction is an object method.
386
387   From Chen Lee:
388
389   - Handle Visual Studio project and solution files in Unicode.
390
391   From Wayne Lee:
392
393   - Avoid "maximum recursion limit" errors when removing $(-$) pairs
394     from long command lines.
395
396   From Clive Levinson:
397
398   - Make ParseConfig() recognize and add -mno-cygwin to $LINKFLAGS and
399     $CCFLAGS, and -mwindows to $LINKFLAGS.
400
401   From Sanjoy Mahajan:
402
403   - Correct TeX-related command lines to just $SOURCE, not $SOURCES
404
405   - Fix a bad use of Copy() in an example in the man page, and a
406     bad regular expression example in the man page and User's Guide.
407
408   From Shannon Mann:
409
410   - Have the Visual Studio project file(s) echo "Starting SCons" before
411     executing SCons, mainly to work around a quote-stripping bug in
412     (some versions of?) the Windows cmd command executor.
413
414   From Michael McCracken:
415
416   - Add a new "applelink" tool to handle the things like Frameworks and
417     bundles that Apple has added to gcc for linking.
418
419   - Use more appropriate default search lists of linkers, compilers and
420     and other tools for the 'darwin' platform.
421
422   - Add a LoadableModule Builder that builds a bundle on Mac OS X (Darwin)
423     and a shared library on other systems.
424
425   - Improve SWIG tests for use on Mac OS X (Darwin).
426
427   From Patrick Mezard:
428
429   - Execute build commands for a command-line target if any of the
430     files built along with the target is out of date or non-existent,
431     not just if the command-line target itself is out of date.
432
433   - Fix the -n option when used with -c to print all of the targets
434     that will be removed for a multi-target Builder call.
435
436   - If there's no file in the source directory, make sure there isn't
437     one in the build directory, too, to avoid dangling files left
438     over from previous runs when a source file is removed.
439
440   - Allow AppendUnique() and PrependUnique() to append strings (and
441     other atomic objects) to lists.
442
443   From Georg Mischler:
444
445   - Remove the space after the -o option when invoking the Borland
446     BCC compiler; some versions apparently require that the file name
447     argument be concatenated with the option.
448
449   From Joel B. Mohler:
450
451   - Extend latex.py, pdflatex.py, pdftex.py and tex.py so that building
452     from both TeX and LaTeX files uses the same logic to call $BIBTEX
453     when it's necessary, to call $MAKEINDEX when it's necessary, and to
454     call $TEX or $LATEX multiple times to handle undefined references.
455
456   From Elliot Murphy:
457
458   - Enhance the tests to guarantee persistence of ListOption
459     values in saved options files.
460
461   - Supply the help text when -h is used with the -u, -U or -D options.
462
463   From Leanid Nazdrynau:
464
465   - Fix the Java parser's handling of backslashes in strings.
466
467   - Fix the Qt UIC scanner to work with generated .ui files (by using
468     the FindFile() function instead of checking by-hand for the file).
469
470   From Christian Neeb:
471
472   - Fix the Java parser's handling of string definitions to avoid ignoring
473     subsequent code.
474
475   From Han-Wen Nienhuys:
476
477   - Optimize variable expansion by:  using the re.sub() method (when
478     possible); not using "eval" for variables for which we can fetch the
479     value directory; avoiding slowing substitution logic when there's no
480     '$' in the string.
481
482   From Jan Nieuwenhuizen:
483
484   - Fix a problem with interpreting quoted argument lists on command lines.
485
486   From Greg Noel:
487
488   - Add construction variables to support frameworks on Mac OS X:
489     $FRAMEWORKS, $FRAMEWORKPREFIX, $FRAMEWORKPATH, $FRAMEWORKPATHPREFIX.
490
491   - Re-order link lines so the -o option always comes right after the
492     command name.
493
494   - Add /sw/bin to the default execution PATH on Mac OS X.
495
496   From Gary Oberbrunner:
497
498   - Add an Environment.Dump() method to print the contents of a
499     construction environment.
500
501   - Allow $LIBS (and similar variables) to contain explicit File Nodes.
502
503   - Change ParseConfig to add the found library names directly to the
504     $LIBS variable, instead of returning them.
505
506   - Add ParseConfig() support for the -framework GNU linker option.
507
508   - Add a PRINT_CMD_LINE_FUNC construction variable to allow people
509     to filter (or log) command-line output.
510
511   - Print an internal Python stack trace in response to an otherwise
512     unexplained error when --debug=stacktrace is specified.
513
514   - Add a --debug=findlibs option to print what's happening when
515     the scanner is searching for libraries.
516
517   - Allow Tool specifications to be passed a dictionary of keyword
518     arguments.
519
520   - Support an Options default value of None, in which case the variable
521     will not be added to the construction environment unless it's set
522     explicitly by the user or from an Options file.
523
524   - Avoid copying __builtin__ values into a construction environment's
525     dictionary when evaluating construction variables.
526
527   - Add a new cross-platform intelc.py Tool that can detect and
528     configure the Intel C++ v8 compiler on both Windows, where it's
529     named icl, and Linux, where it's named icc.  It also checks that
530     the directory specified in the Windows registry exists, and sets a
531     new $INTEL_C_COMPILER_VERSION construction variable to identify the
532     version being used.  (Niall Douglas contributed an early prototype
533     of parts of this module.)
534
535   - Fix the private Conftest._Have() function so it doesn't change
536     non-alphanumeric characters to underscores.
537
538   - Supply a better error message when a construction variable expansion
539     has an unknown attribute.
540
541   - Documentation changes:  Update the man page to describe use of
542     filenames or Nodes in $LIBS.
543
544   - Add support for Intel C++ beta 9.0 (both 32 and 64 bit versions).
545
546   - Document the new $FRAMEWORK* variables for Mac OS X.
547
548   From Kian Win Ong:
549
550   - When building a .jar file and there is a $JARCHDIR, put the -C
551     in front of each .class file on the command line.
552
553   - Recognize the Java 1.5 enum keyword.
554
555   From Chris Pawling:
556
557   - Have the linkloc tool use $MSVS_VERSION to select the Microsoft
558     Visual Studio version to use.
559
560   From Karol Pietrzak:
561
562   - Add $RPATH (-R) support to the Sun linker Tool (sunlink).
563
564   - Add a description of env.subst() to the man page.
565
566   From Chris Prince:
567
568   - Look in the right directory, not always the local directory, for a
569     same-named file or directory conflict on disk.
570
571   - On Windows, preserve the external environment's %SYSTEMDRIVE%
572     variable, too.
573
574   From Asfand Yar Qazi:
575
576   - Add /opt/bin to the default execution PATH on all POSIX platforms
577     (between /usr/local/bin and /bin).
578
579   From Kevin Quick:
580
581   - Fix the Builder name returned from ListBuilders and other instances
582     of subclasses of the BuilderBase class.
583
584   - Add Builders and construction variables to support rpcgen:
585     RPCGenClient(), RPCGenHeader(), RPCGenService(), RPCGenXDR(),
586     $RPCGEN, $RPCGENFLAGS, $RPCGENCLIENTFLAGS, $RPCGENHEADERFLAGS,
587     $RPCGENSERVICEFLAGS, $RPCGENXDRFLAGS.
588
589   - Update the man page to document that prefix and suffix Builder
590     keyword arguments can be strings, callables or dictionaries.
591
592   - Provide more info in the error message when a user tries to build
593     a target multiple ways.
594
595   - Fix Delete() when a file doesn't exist and must_exist=1.  (We were
596     unintentionally dependent on a bug in versions of the Python shutil.py
597     module prior to Python 2.3, which would generate an exception for
598     a nonexistent file even when ignore_errors was set.)
599
600   - Only replace a Node's builder with a non-null source builder.
601
602   - Fix a stack trace when a suffix selection dictionary is passed
603     an empty source file list.
604
605   - Allow optional names to be attached to Builders, for default
606     Builders that don't get attached to construction environments.
607
608   - Fix problems with Parallel Task Exception handling.
609
610   - Build targets in an associated BuildDir even if there are targets
611     or subdirectories locally in the source directory.
612
613   - If a FunctionAction has a callable class as its underlying Python
614     function, use its strfunction() method (if any) to display the
615     action.
616
617   - Fix handling when BuildDir() exists but is unwriteable.  Add
618     "Stop." to those error messages for consistency.
619
620   - Catch incidents of bad builder creation (without an action) and
621     supply meaningful error messages.
622
623   - Fix handling of src_suffix values that aren't extensions (don't
624     begin with a '.').
625
626   - Don't retrieve files from a CacheDir, but report what would happen,
627     when the -n option is used.
628
629   - Use the source_scanner from the target Node, not the source node
630     itself.
631
632   - Internal Scanners fixes:  Make sure Scanners are only passed Nodes.
633     Fix how a Scanner.Selector called its base class initialization.
634     Make comparisons of Scanner objects more robust.  Add a name to
635     an internal default ObjSourceScanner.
636
637   - Add a deprecated warning for use of the old "scanner" keyword argument
638     to Builder creation.
639
640   - Improve the --debug=explain message when the build action changes.
641
642   - Test enhancements in SourceCode.py, option-n.py, midl.py.  Better
643     Command() and Scanner test coverage.  Improved test infrastructure
644     for -c output.
645
646   - Refactor the interface between Action and Executor objects to treat
647     Actions atomically.
648
649   - The --debug=presub option will now report the pre-substitution
650     each action seprately, instead of reporting the entire list before
651     executing the actions one by one.
652
653   - The --debug=explain option explaining a changed action will now
654     (more correctly) show pre-substitution action strings, instead of
655     the commands with substituted file names.
656
657   - A Node (file) will now be rebuilt if its PreAction or PostAction
658     actions change.
659
660   - Python Function actions now have their calling signature (target,
661     source, env) reported correctly when displayed.
662
663   - Fix BuildDir()/build_dir handling when the build_dir is underneath
664     the source directory and trying to use entries from the build_dir
665     as sources for other targets in the build-dir.
666
667   - Fix hard-coding of JDK path names in various Java tests.
668
669   - Handle Python stack traces consistently (stop at the SConscript stack
670     frame, by default) even if the Python source code isn't available.
671
672   - Improve the performance of the --debug={tree,dtree} options.
673
674   - Add --debug=objects logging of creation of OverrideWarner,
675     EnvironmentCopy and EnvironmentOverride objects.
676
677   - Fix command-line expansion of Python Value Nodes.
678
679   - Internal cleanups:  Remove an unnecessary scan argument.  Associate
680     Scanners only with Builders, not nodes.  Apply overrides once when
681     a Builder is called, not in multiple places.  Cache results from the
682     Node.FS.get_suffix() and Node.get_build_env() methods.  Use the Python
683     md5 modules' hexdigest() method, if there is one.  Have Taskmaster
684     call get_stat() once for each Node and re-use the value instead of
685     calling it each time it needs the value.  Have Node.depends_on()
686     re-use the list from the children() method instead of calling it
687     multiple times.
688
689   - Use the correct scanner if the same source file is used for targets in
690     two different environments with the same path but different scanners.
691
692   - Collect logic for caching values in memory in a Memoizer class,
693     which cleans up a lot of special-case code in various methods and
694     caches additional values to speed up most configurations.
695
696   - Add a PathAccept validator to the list of new canned PathOption
697     validators.
698
699   From Christoph Schulz:
700
701   - Add support for $CONFIGUREDIR and $CONFIGURELOG variables to control
702     the directory and logs for configuration tests.
703
704   - Add support for a $INSTALLSTR variable.
705
706   From Craig Scott:
707
708   - Have the Fortran module emitter look for Fortan modules to be created
709     relative to $FORTRANMODDIR, not the top-level directory.
710
711   - When saving Options to a file, run default values through the
712     converter before comparing them with the set values.  This correctly
713     suppresses Boolean Option values from getting written to the saved
714     file when they're one of the many synonyms for a default True or
715     False value.
716
717   - Fix the Fortran Scanner's ability to handle a module being used
718     in the same file in which it is defined.
719
720   From Jeff Squyres:
721
722   - Documentation changes:  Use $CPPDEFINES instead of $CCFLAGS in man
723     page examples.
724
725   From Levi Stephen:
726
727   - Allow $JARCHDIR to be expanded to other construction variables.
728
729   From Steve-o:
730
731   - Add the -KPIC option by default when compiling shared objects on
732     Solaris.
733
734   - Change the default suffix for Solaris objects to .o, to conform to
735     Sun WorkShop's expectations.  Change the profix to so_ so they can
736     still be differentiated from static objects in the same directory.
737
738   From Amir Szekely:
739
740   - When calling the resource compiler on MinGW, add --include-dir and
741     the source directory so it finds the source file.
742
743   - Update EnsureSConsVersion() to support revision numbers.
744
745   - Add use of $CPPDEFINES to $RCCOM (resource file compilation) on MinGW.
746
747   From Dobes Vandermeer:
748
749   - Add support for SCC and other settings in Microsoft Visual
750     Studio project and solution files:  $MSVS_PROJECT_BASE_PATH,
751     $MSVS_PROJECT_GUID, $MSVS_SCC_AUX_PATH, $MSVS_SCC_LOCAL_PATH,
752     $MSVS_SCC_PROJECT_NAME, $MSVS_SCC_PROVIDER,
753
754   - Add support for using a $SCONS_HOME variable (imported from the
755     external environment, or settable internally) to put a shortened
756     SCons execution line in the Visual Studio project file.
757
758   From Greg Ward:
759
760   - Fix a misplaced line in the man page.
761
762   From Christoph Wiedemann:
763
764   - Add an Environment.SetDefault() method that only sets values if
765     they aren't already set.
766
767   - Have the qt.py Tool not override variables already set by the user.
768
769   - Add separate $QT_BINPATH, $QT_CPPPATH and $QT_LIBPATH variables
770     so these can be set individually, instead of being hard-wired
771     relative to $QTDIR.
772
773   - The %TEMP% and %TMP% external environment variables are now propagated
774     automatically to the command execution environment on Windows systems.
775
776   - A new --config= command-line option allows explicit control of
777     of when the Configure() tests are run:  --config=force forces all
778     checks to be run, --config=cache uses all previously cached values,
779     --config=auto (the default) runs tests only when dependency analysis
780     determines it's necessary.
781
782   - The Configure() subsystem can now write a config.h file with values
783     like HAVE_STDIO_H, HAVE_LIBM, etc.
784
785   - The Configure() subsystem now executes its checks silently when the
786     -Q option is specified.
787
788   - The Configure() subsystem now reports if a test result is being
789     taken from cache, and prints the standard output and error output
790     of tests even when cached.
791
792   - Configure() test results are now reported as "yes" or "no" instead of
793     "ok" or "failed."
794
795   - Fixed traceback printing when calling the env.Configure() method
796     instead of the Configure() global function.
797
798   - The Configure() subsystem now caches build failures in a .sconsign
799     file in the subdirectory, not a .cache file.  This may cause
800     tests to be re-executed the first time after you install 0.97.
801
802   - Additional significant internal cleanups in the Configure() subsystem
803     and its tests.
804
805   - Have the Qt Builder make uic-generated files dependent on the .ui.h
806     file, if one exists.
807
808   - Add a test to make sure that SCons source code does not contain
809     try:-except: blocks that catch all errors, which potentially catch
810     and mask keyboard interrupts.
811
812   - Fix us of TargetSignatures('content') with the SConf subsystem.
813
814   From Russell Yanofsky:
815
816   - Add support for the Metrowerks Codewarrior compiler and linker
817     (mwcc and mwld).
818
819
820
821 RELEASE 0.96.1 - XXX
822
823   From Craig Bachelor:
824
825   - Handle white space in the executable Python path name within in MSVS
826     project files by quoting the path.
827
828   - Correct the format of a GUID string in a solution (.dsw) file so
829     MSVS can correctly "build enable" a project.
830
831   From Steven Knight:
832
833   - Add a must_exist flag to Delete() to let the user control whether
834     it's an error if the specified entry doesn't exist.  The default
835     behavior is now to silently do nothing if it doesn't exist.
836
837   - Package up the new Platform/darwin.py, mistakenly left out of 0.96.
838
839   - Make the scons.bat REM statements into @REM so they aren't printed.
840
841   - Make the SCons packaging SConscript files platform independent.
842
843   From Anthony Roach:
844
845   - Fix scanning of pre-compiled header (.pch) files for #includes,
846     broken in 0.96.
847
848
849
850 RELEASE 0.96 - Wed, 18 Aug 2004 13:36:40 +0000
851
852   From Chad Austin:
853
854   - Make the CacheDir() directory if it doesn't already exist.
855
856   - Allow construction variable substitutions in $LIBS specifications.
857
858   - Allow the emitter argument to a Builder() to be or expand to a list
859     of emitter functions, which will be called in sequence.
860
861   - Suppress null values in construction variables like $LIBS that use
862     the internal _concat() function.
863
864   - Remove .dll files from the construction variables searched for
865     libraries that can be fed to Win32 compilers.
866
867   From Chad Austin and Christoph Wiedemann:
868
869   - Add support for a $RPATH variable to supply a list of directories
870     to search for shared libraries when linking a program.  Used by
871     the GNU and IRIX linkers (gnulink and sgilink).
872
873   From Charles Crain:
874
875   - Restore the ability to do construction variable substitutions in all
876     kinds of *PATH variables, even when the substitution returns a Node
877     or other object.
878
879   From Tom Epperly:
880
881   - Allow the Java() Builder to take more than one source directory.
882
883   From Ralf W. Grosse-Kunstleve:
884
885   - Have SConsignFile() use, by default, a custom "dblite.py" that we can
886     control and guarantee to work on all Python versions (or nearly so).
887
888   From Jonathan Gurley:
889
890   - Add support for the newer "ifort" versions of the Intel Fortran
891     Compiler for Linux.
892
893   From Bob Halley:
894
895   - Make the new *FLAGS variable type work with copied Environments.
896
897   From Chris Hoeppler:
898
899   - Initialize the name of a Scanner.Classic scanner correctly.
900
901   From James Juhasz:
902
903   - Add support for the .dylib shared library suffix and the -dynamiclib
904     linker option on Mac OS X.
905
906   From Steven Knight:
907
908   - Add an Execute() method for executing actions directly.
909
910   - Support passing environment override keyword arguments to Command().
911
912   - Fix use of $MSVS_IGNORE_IDE_PATHS, which was broken when we added
913     support for $MSVS_USE_MFC_DIRS last release.
914
915   - Make env.Append() and env.Prepend() act like the underlying Python
916     behavior when the variable being appended to is a UserList object.
917
918   - Fix a regression that prevented the Command() global function in
919     0.95 from working with command-line strings as actions.
920
921   - Fix checking out a file from a source code management system when
922     the env.SourceCode() method was called with an individual file name
923     or node, not a directory name or node.
924
925   - Enhance the Task.make_ready() method to create a list of the
926     out-of-date Nodes for the task for use by the wrapping interface.
927
928   - Allow Scanners to pull the list of suffixes from the construction
929     environment when the "skeys" keyword argument is a string containing
930     a construction variable to be expanded.
931
932   - Support new $CPPSUFFIXES, $DSUFFIXES $FORTRANSUFFIXES, and
933     $IDLSUFFIXES.  construction variables that contain the default list
934     of suffixes to be scanned by a given type of scanner, allowing these
935     suffix lists to be easily added to or overridden.
936
937   - Speed up Node creation when calling a Builder by comparing whether two
938     Environments are the same object, not if their underlying dictionaries
939     are equivalent.
940
941   - Add a --debug=explain option that reports the reason(s) why SCons
942     thinks it must rebuild something.
943
944   - Add support for functions that return platform-independent Actions
945     to Chmod(), Copy(), Delete(), Mkdir(), Move() and Touch() files
946     and/or directories.  Like any other Actions, the returned Action
947     object may be executed directly using the Execute() global function
948     or env.Execute() environment method, or may be used as a Builder
949     action or in an env.Command() action list.
950
951   - Add support for the strfunction argument to all types of Actions:
952     CommandAction, ListAction, and CommandGeneratorAction.
953
954   - Speed up turning file system Nodes into strings by caching the
955     values after we're finished reading the SConscript files.
956
957   - Have ParseConfig() recognize and supporting adding the -Wa, -Wl,
958     and -Wp, flags to ASFLAGS, LINKFLAGS and CPPFLAGS, respectively.
959
960   - Change the .sconsign format and the checks for whether a Node is
961     up-to-date to make dependency checks more efficient and correct.
962
963   - Add wrapper Actions to SCons.Defaults for $ASCOM, $ASPPCOM, $LINKCOM,
964     $SHLINKCOM, $ARCOM, $LEXCOM and $YACCCOM.  This makes it possible
965     to replace the default print behavior with a custom strfunction()
966     for each of these.
967
968   - When a Node has been built, don't walk the whole tree back to delete
969     the parents's implicit dependencies, let returning up the normal
970     Taskmaster descent take care of it for us.
971
972   - Add documented support for separate target_scanner and source_scanner
973     arguments to Builder creation, which allows different scanners to
974     be applied to source files
975
976   - Don't re-install or (re-generate) .h files when a subsidiary #included
977     .h file changes.  This eliminates incorrect circular dependencies
978     with .h files generated from other source files.
979
980   - Slim down the internal Sig.Calculator class by eliminating methods
981     whose functionality is now covered by Node methods.
982
983   - Document use of the target_factory and source_factory keyword
984     arguments when creating Builder objects.  Enhance Dir Nodes so that
985     they can be created with user-specified Builder objects.
986
987   - Don't blow up with stack trace when the external $PATH environment
988     variable isn't set.
989
990   - Make Builder calls return lists all the time, even if there's only
991     one target.  This keeps things consistent and easier to program to
992     across platforms.
993
994   - Add a Flatten() function to make it easier to deal with the Builders
995     all returning lists of targets, not individual targets.
996
997   - Performance optimizations in Node.FS.__doLookup().
998
999   - Man page fixes:  formatting typos, misspellings, bad example.
1000
1001   - User's Guide fixes: Fix the signatures of the various example
1002     *Options() calls.  Triple-quote properly a multi-line Split example.
1003
1004   - User's Guide additions:  Chapter describing File and Directory
1005     Nodes.  Section describing declarative nature of SCons functions in
1006     SConscript files.  Better organization and clarification of points
1007     raised by Robert P. J. Day.  Chapter describing SConf (Autoconf-like)
1008     functionality.  Chapter describing how to install Python and
1009     SCons.  Chapter describing Java builds.
1010
1011   From Chris Murray:
1012
1013   - Add a .win32 attribute to force file names to expand with
1014     Windows backslash path separators.
1015
1016   - Fix escaping file names on command lines when the expansion is
1017     concatenated with another string.
1018
1019   - Add support for Fortran 90 and Fortran 95.  This adds $FORTRAN*
1020     variables that specify a default compiler, command-line, flags,
1021     etc. for all Fortran versions, plus separate $F90* and $F95*
1022     variables for when different compilers/flags/etc. must be specified
1023     for different Fortran versions.
1024
1025   - Have individual tools that create libraries override the default
1026     $LIBPREFIX and $LIBSUFFIX values set by the platform.  This makes
1027     it easier to use Microsoft Visual Studio tools on a CygWin platform.
1028
1029   From Gary Oberbrunner:
1030
1031   - Add a --debug=presub option to print actions prior to substitution.
1032
1033   - Add a warning upon use of the override keywords "targets" and
1034     "sources" when calling Builders.  These are usually mistakes which
1035     are otherwise silently (and confusingly) turned into construction
1036     variable overrides.
1037
1038   - Try to find the ICL license file path name in the external environment
1039     and the registry before resorting to the hard-coded path name.
1040
1041   - Add support for fetching command-line keyword=value arguments in
1042     order from an ARGLIST list.
1043
1044   - Avoid stack traces when trying to read dangling symlinks.
1045
1046   - Treat file "extensions" that only contain digits as part of the
1047     file basename.  This supports version numbers as part of shared
1048     library names, for example.
1049
1050   - Avoid problems when there are null entries (None or '') in tool
1051     lists or CPPPATH.
1052
1053   - Add an example and explanation of how to use "tools = ['default', ..."
1054     when creating a construction environment.
1055
1056   - Add a section describing File and Directory Nodes and some of their
1057     attributes and methods.
1058
1059   - Have ParseConfig() add a returned -pthread flag to both $CCFLAGS
1060     and $LINKFLAGS.
1061
1062   - Fix some test portability issues on Mac OS X (darwin).
1063
1064   From Simon Perkins:
1065
1066   - Fix a bug introduced in building shared libraries under MinGW.
1067
1068   From Kevin Quick:
1069
1070   - Handling SCons exceptions according to Pythonic standards.
1071
1072   - Fix test/chained-build.py on systems that execute within one second.
1073
1074   - Fix tests on systems where 'ar' warns about archive creation.
1075
1076   From Anthony Roach:
1077
1078   - Fix use of the --implicit-cache option with timestamp signatures.
1079
1080   - If Visual Studio is installed, assume the C/C++ compiler, the linker
1081     and the MIDL compiler that comes with it are available, too.
1082
1083   - Better error messages when evaluating a construction variable
1084     expansion yields a Python syntax error.
1085
1086   - Change the generation of PDB files when using Visual Studio from
1087     compile time to link time.
1088
1089   From sam th:
1090
1091   - Allow SConf.CheckLib() to search a list of libraries, like the
1092     Autoconf AC_SEARCH_LIBS macro.
1093
1094   - Allow the env.WhereIs() method to take a "reject" argument to
1095     let it weed out specific path names.
1096
1097   From Christoph Wiedemann:
1098
1099   - Add new Moc() and Uic() Builders for more explicit control over
1100     Qt builds, plus new construction variables to control them:
1101     $QT_AUTOSCAN, $QT_DEBUG, $QT_MOCCXXPREFIX, $QT_MOCCXXSUFFIX,
1102     $QT_MOCHPREFIX, $QT_MOCHSUFFIX, $QT_UICDECLPREFIX, $QT_UICDECLSUFFIX,
1103     $QT_UICIMPLPREFIX, $QT_UICIMPLSUFFIX and $QT_UISUFFIX.
1104
1105   - Add a new single_source keyword argument for Builders that enforces
1106     a single source file on calls to the Builder.
1107
1108
1109
1110 RELEASE 0.95 - Mon, 08 Mar 2004 06:43:20 -0600
1111
1112   From Chad Austin:
1113
1114   - Replace print statements with calls to sys.stdout.write() so output
1115     lines stay together when -j is used.
1116
1117   - Add portability fixes for a number of tests.
1118
1119   - Accomodate the fact that Cygwin's os.path.normcase() lies about
1120     the underlying system being case-sensitive.
1121
1122   - Fix an incorrect _concat() call in the $RCINCFLAGS definition for
1123     the mingw Tool.
1124
1125   - Fix a problem with the msvc tool with Python versions prior to 2.3.
1126
1127   - Add support for a "toolpath" Tool() and Environment keyword that
1128     allows Tool modules to be found in specified local directories.
1129
1130   - Work around Cygwin Python's silly fiction that it's using a
1131     case-sensitive file system.
1132
1133   - More robust handling of data in VCComponents.dat.
1134
1135   - If the "env" command is available, spawn commands with the more
1136     general "env -" instead of "env -i".
1137
1138   From Kerim Borchaev:
1139
1140   - Fix a typo in a msvc.py's registry lookup:  "VCComponents.dat", not
1141     "VSComponents.dat".
1142
1143   From Chris Burghart:
1144
1145   - Fix the ability to save/restore a PackageOption to a file.
1146
1147   From Steve Christensen:
1148
1149   - Update the MSVS .NET and MSVC 6.0/7.0 path detection.
1150
1151   From David M. Cooke:
1152
1153   - Make the Fortran scanner case-insensitive for the INCLUDE string.
1154
1155   From Charles Crain:
1156
1157   - If no version of MSVC is detected but the tool is specified,
1158     use the MSVC 6.0 paths by default.
1159
1160   - Ignore any "6.1" version of MSVC found in the registry; this is a
1161     phony version number (created by later service packs?) and would
1162     throw off the logic if the user had any non-default paths configure.
1163
1164   - Correctly detect if the user has independently configured the MSVC
1165     "include," "lib" or "path" in the registry and use the appropriate
1166     values.  Previously, SCons would only use the values if all three
1167     were set in the registry.
1168
1169   - Make sure side-effect nodes are prepare()d before building their
1170     corresponding target.
1171
1172   - Preserve the ability to call BuildDir() multiple times with the
1173     same target and source directory arguments.
1174
1175   From Andy Friesen:
1176
1177   - Add support for the Digital Mars "D" programming language.
1178
1179   From Scott Lystig Fritchie:
1180
1181   - Fix the ability to use a custom _concat() function in the
1182     construction environment when calling _stripixes().
1183
1184   - Make the message about ignoring a missing SConscript file into a
1185     suppressable Warning, not a hard-coded sys.stderr.write().
1186
1187   - If a builder can be called multiple times for a target (because
1188     the sources and overrides are identical, or it's a builder with the
1189     "multi" flag set), allow the builder to be called through multiple
1190     environments so long as the builders have the same signature for
1191     the environments in questions (that is, they're the same action).
1192
1193   From Bob Halley:
1194
1195   - When multiple targets are built by a single action, retrieve all
1196     of them from cache, not just the first target, and exec the build
1197     command if any of the targets isn't present in the cache.
1198
1199   From Zephaniah Hull:
1200
1201   - Fix command-line ARGUMENTS with multiple = in them.
1202
1203   From Steven Knight:
1204
1205   - Fix EnsureSConsVersion() so it checks against the SCons version,
1206     not the Python version, on Pythons with sys.version_info.
1207
1208   - Don't swallow the AttributeError when someone uses an expansion like
1209     $TARGET.bak, so we can supply a more informative error message.
1210
1211   - Fix an odd double-quote escape sequence in the man page.
1212
1213   - Fix looking up a naked drive letter as a directory (Dir('C:')).
1214
1215   - Support using File nodes in the LIBS construction variable.
1216
1217   - Allow the LIBS construction variable to be a single string or File
1218     node, not a list, when only one library is needed.
1219
1220   - Fix typos in the man page:  JAVACHDIR => JARCHDIR; add "for_signature"
1221     to the __call__() example in the "Variable Substitution" section.
1222
1223   - Correct error message spellings of "non-existant" to "non-existent."
1224
1225   - When scanning for libraries to link with, don't append $LIBPREFIXES
1226     or $LIBSUFFIXES values to the $LIBS values if they're already present.
1227
1228   - Add a ZIPCOMPRESSION construction variable to control whether the
1229     internal Python action for the Zip Builder compresses the file or
1230     not.  The default value is zipfile.ZIP_DEFLATED, which generates
1231     a compressed file.
1232
1233   - Refactor construction variable expansion to support recursive
1234     expansion of variables (e.g. CCFLAGS = "$CCFLAGS -g") without going
1235     into an infinite loop.  Support this in all construction variable
1236     overrides, as well as when copying Environments.
1237
1238   - Fix calling Configure() from more than one subsidiary SConscript file.
1239
1240   - Fix the env.Action() method so it returns the correct type of
1241     Action for its argument(s).
1242
1243   - Fix specifying .class files as input to JavaH with the .class suffix
1244     when they weren't generated using the Java Builder.
1245
1246   - Make the check for whether all of the objects going into a
1247     SharedLibrary() are shared work even if the object was built in a
1248     previous run.
1249
1250   - Supply meaningful error messages, not stack traces, if we try to add
1251     a non-Node as a source, dependency, or ignored dependency of a Node.
1252
1253   - Generate MSVS Project files that re-invoke SCons properly regardless
1254     of whether the file was built via scons.bat or scons.py.
1255     (Thanks to Niall Douglas for contributing code and testing.)
1256
1257   - Fix TestCmd.py, runtest.py and specific tests to accomodate being
1258     run from directories whose paths include white space.
1259
1260   - Provide a more useful error message if a construction variable
1261     expansion contains a syntax error during evaluation.
1262
1263   - Fix transparent checkout of implicit dependency files from SCCS
1264     and RCS.
1265
1266   - Added new --debug=count, --debug=memory and --debug=objects options.
1267     --debug=count and --debug=objects only print anything when run
1268     under Python 2.1 or later.
1269
1270   - Deprecate the "overrides" keyword argument to Builder() creation
1271     in favor of using keyword argument values directly (like we do
1272     for builder execution and the like).
1273
1274   - Always use the Builder overrides in substitutions, not just if
1275     there isn't a target-specific environment.
1276
1277   - Add new "rsrcpath" and "rsrcdir" and attributes to $TARGET/$SOURCE,
1278     so Builder command lines can find things in Repository source
1279     directories when using BuildDir.
1280
1281   - Fix the M4 Builder so that it chdirs to the Repository directory
1282     when the input file is in the source directory of a BuildDir.
1283
1284   - Save memory at build time by allowing Nodes to delete their build
1285     environments after they've been built.
1286
1287   - Add AppendUnique() and PrependUnique() Environment methods, which
1288     add values to construction variables like Append() and Prepend()
1289     do, but suppress any duplicate elements in the list.
1290
1291   - Allow the 'qt' tool to still be used successfully from a copied
1292     Environment.  The include and library directories previously ended up
1293     having the same string re-appended to the end, yielding an incorrect
1294     path name.
1295
1296   - Supply a more descriptive error message when the source for a target
1297     can't be found.
1298
1299   - Initialize all *FLAGS variables with objects do the right thing with
1300     appending flags as strings or lists.
1301
1302   - Make things like ${TARGET.dir} work in *PATH construction variables.
1303
1304   - Allow a $MSVS_USE_MFC_DIRS construction variable to control whether
1305     ATL and MFC directories are included in the default INCLUDE and
1306     LIB paths.
1307
1308   - Document the dbm_module argument to the SConsignFile() function.
1309
1310   From Vincent Risi:
1311
1312   - Add support for the bcc32, ilink32 and tlib Borland tools.
1313
1314   From Anthony Roach:
1315
1316   - Supply an error message if the user tries to configure a BuildDir
1317     for a directory that already has one.
1318
1319   - Remove documentation of the still-unimplemented -e option.
1320
1321   - Add -H help text listing the legal --debug values.
1322
1323   - Don't choke if a construction variable is a non-string value.
1324
1325   - Build Type Libraries in the target directory, not the source
1326     directory.
1327
1328   - Add an appendix to the User's Guide showing how to accomplish
1329     various common tasks in Python.
1330
1331   From Greg Spencer:
1332
1333   - Add support for Microsoft Visual Studio 2003 (version 7.1).
1334
1335   - Evaluate $MSVSPROJECTSUFFIX and $MSVSSOLUTIONSUFFIX when the Builder
1336     is invoked, not when the tool is initialized.
1337
1338   From Christoph Wiedemann:
1339
1340   - When compiling Qt, make sure the moc_*.cc files are compiled using
1341     the flags from the environment used to specify the target, not
1342     the environment that first has the Qt Builders attached.
1343
1344
1345
1346 RELEASE 0.94 - Fri, 07 Nov 2003 05:29:48 -0600
1347
1348   From Hartmut Goebel:
1349
1350   - Add several new types of canned functions to help create options:
1351     BoolOption(), EnumOption(), ListOption(), PackageOption(),
1352     PathOption().
1353
1354   From Steven Knight:
1355
1356   - Fix use of CPPDEFINES with C++ source files.
1357
1358   - Fix env.Append() when the operand is an object with a __cmp__()
1359     method (like a Scanner instance).
1360
1361   - Fix subclassing the Environment and Scanner classes.
1362
1363   - Add BUILD_TARGETS, COMMAND_LINE_TARGETS and DEFAULT_TARGETS variables.
1364
1365   From Steve Leblanc:
1366
1367   - SGI fixes:  Fix C++ compilation, add a separate Tool/sgic++.py module.
1368
1369   From Gary Oberbrunner:
1370
1371   - Fix how the man page un-indents after examples in some browsers.
1372
1373   From Vincent Risi:
1374
1375   - Fix the C and C++ tool specifications for AIX.
1376
1377
1378
1379 RELEASE 0.93 - Thu, 23 Oct 2003 07:26:55 -0500
1380
1381   From J.T. Conklin:
1382
1383   - On POSIX, execute commands with the more modern os.spawnvpe()
1384     function, if it's available.
1385
1386   - Scan .S, .spp and .SPP files for C preprocessor dependencies.
1387
1388   - Refactor the Job.Parallel() class to use a thread pool without a
1389     condition variable.  This improves parallel build performance and
1390     handles keyboard interrupts properly when -j is used.
1391
1392   From Charles Crain:
1393
1394   - Add support for a JARCHDIR variable to control changing to a
1395     directory using the jar -C option.
1396
1397   - Add support for detecting Java manifest files when using jar,
1398     and specifying them using the jar m flag.
1399
1400   - Fix some Python 2.2 specific things in various tool modules.
1401
1402   - Support directories as build sources, so that a rebuild of a target
1403     can be triggered if anything underneath the directory changes.
1404
1405   - Have the scons.bat and scons.py files look for the SCons modules
1406     in site-packages as well.
1407
1408   From Christian Engel:
1409
1410   - Support more flexible inclusion of separate C and C++ compilers.
1411
1412   - Use package management tools on AIX and Solaris to find where
1413     the comilers are installed, and what version they are.
1414
1415   - Add support for CCVERSION and CXXVERSION variables for a number
1416     of C and C++ compilers.
1417
1418   From Sergey Fogel:
1419
1420   - Add test cases for the new capabilities to run bibtex and to rerun
1421     latex as needed.
1422
1423   From Ralf W. Grosse-Kunstleve:
1424
1425   - Accomodate anydbm modules that don't have a sync() method.
1426
1427   - Allow SConsignFile() to take an argument specifying the DBM
1428     module to be used.
1429
1430   From Stephen Kennedy:
1431
1432   - Add support for a configurable global .sconsign.dbm file which
1433     can be used to avoid cluttering each directory with an individual
1434     .sconsign file.
1435
1436   From John Johnson:
1437
1438   - Fix (re-)scanning of dependencies in generated or installed
1439     header files.
1440
1441   From Steven Knight:
1442
1443   - The -Q option suppressed too many messages; fix it so that it only
1444     suppresses the Reading/Building messages.
1445
1446   - Support #include when there's no space before the opening quote
1447     or angle bracket.
1448
1449   - Accomodate alphanumeric version strings in EnsurePythonVersion().
1450
1451   - Support arbitrary expansion of construction variables within
1452     file and directory arguments to Builder calls and Environment methods.
1453
1454   - Add Environment-method versions of the following global functions:
1455     Action(), AddPostAction(), AddPreAction(), Alias(), Builder(),
1456     BuildDir(), CacheDir(), Clean(), Configure(), Default(),
1457     EnsurePythonVersion(), EnsureSConsVersion(), Environment(),
1458     Exit(), Export(), FindFile(), GetBuildPath(), GetOption(), Help(),
1459     Import(), Literal(), Local(), Platform(), Repository(), Scanner(),
1460     SConscriptChdir(), SConsignFile(), SetOption(), SourceSignatures(),
1461     Split(), TargetSignatures(), Tool(), Value().
1462
1463   - Add the following global functions that correspond to the same-named
1464     Environment methods:  AlwaysBuild(), Command(), Depends(), Ignore(),
1465     Install(), InstallAs(), Precious(), SideEffect() and SourceCode().
1466
1467   - Add the following global functions that correspond to the default
1468     Builder methods supported by SCons: CFile(), CXXFile(), DVI(), Jar(),
1469     Java(), JavaH(), Library(), M4(), MSVSProject(), Object(), PCH(),
1470     PDF(), PostScript(), Program(), RES(), RMIC(), SharedLibrary(),
1471     SharedObject(), StaticLibrary(), StaticObject(), Tar(), TypeLibrary()
1472     and Zip().
1473
1474   - Rearrange the man page to show construction environment methods and
1475     global functions in the same list, and to explain the difference.
1476
1477   - Alphabetize the explanations of the builder methods in the man page.
1478
1479   - Rename the Environment.Environment class to Enviroment.Base.
1480     Allow the wrapping interface to extend an Environment by using its own
1481     subclass of Environment.Base and setting a new Environment.Environment
1482     variable as the calling entry point.
1483
1484   - Deprecate the ParseConfig() global function in favor of a same-named
1485     construction environment method.
1486
1487   - Allow the Environment.WhereIs() method to take explicit path and
1488     pathext arguments (like the underlying SCons.Util.WhereIs() function).
1489
1490   - Remove the long-obsolete {Get,Set}CommandHandler() functions.
1491
1492   - Enhance env.Append() to suppress null values when appropriate.
1493
1494   - Fix ParseConfig() so it works regardless of initial construction
1495     variable values.
1496
1497     Extend CheckHeader(), CheckCHeader(), CheckCXXHeader() and
1498     CheckLibWithHeader() to accept a list of header files that will be
1499     #included in the test.  The last one in the list is assumed to be
1500     the one being checked for.  (Prototype code contributed by Gerard
1501     Patel and Niall Douglas).
1502
1503   - Supply a warning when -j is used and threading isn't built in to
1504     the current version of Python.
1505
1506   - First release of the User's Guide (finally, and despite a lot
1507     of things still missing from it...).
1508
1509   From Clark McGrew:
1510
1511   - Generalize the action for .tex files so that it will decide whether
1512     a file is TeX or LaTeX, check the .aux output to decide if it should
1513     run bibtex, and check the .log output to re-run LaTeX if needed.
1514
1515   From Bram Moolenaar:
1516
1517   - Split the non-SCons-specific functionality from SConf.py to a new,
1518     re-usable Conftest.py module.
1519
1520   From Gary Oberbrunner:
1521
1522   - Allow a directory to be the target or source or dependency of a
1523     Depends(), Ignore(), Precious() or SideEffect() call.
1524
1525   From Gerard Patel:
1526
1527   - Use the %{_mandir} macro when building our RPM package.
1528
1529   From Marko Rauhamaa:
1530
1531   - Have the closing message say "...terminated because of errors" if
1532     there were any.
1533
1534   From Anthony Roach:
1535
1536   - On Win32 systems, only use "rm" to delete files if Cygwin is being
1537     used.   ("rm" doesn't understand Win32-format path names.)
1538
1539   From Christoph Wiedemann:
1540
1541   - Fix test/SWIG.py to find the Python include directory in all cases.
1542
1543   - Fix a bug in detection of Qt installed on the local system.
1544
1545   - Support returning Python 2.3 BooleanType values from Configure checks.
1546
1547   - Provide an error message if someone mistakenly tries to call a
1548     Configure check from within a Builder function.
1549
1550   - Support calling a Builder when a Configure context is still open.
1551
1552   - Handle interrupts better by eliminating all try:-except: blocks
1553     which caught any and all exceptions, including KeyboardInterrupt.
1554
1555   - Add a --duplicate= option to control how files are duplicated.
1556
1557
1558
1559 RELEASE 0.92 - Wed, 20 Aug 2003 03:45:28 -0500
1560
1561   From Charles Crain and Gary Oberbrunner:
1562
1563   - Fix Tool import problems with the Intel and PharLap linkers.
1564
1565   From Steven Knight
1566
1567   - Refactor the DictCmdGenerator class to be a Selector subclass.
1568
1569   - Allow the DefaultEnvironment() function to take arguments and pass
1570     them to instantiation of the default construction environment.
1571
1572   - Update the Debian package so it uses Python 2.2 and more closely
1573     resembles the currently official Debian packaging info.
1574
1575   From Gerard Patel
1576
1577   - When the yacc -d flag is used, take the .h file base name from the
1578     target .c file, not the source (matching what yacc does).
1579
1580
1581
1582 RELEASE 0.91 - Thu, 14 Aug 2003 13:00:44 -0500
1583
1584   From Chad Austin:
1585
1586   - Support specifying a list of tools when calling Environment.Copy().
1587
1588   - Give a Value Nodes a timestamp of the system time when they're
1589     created, so they'll work when using timestamp-based signatures.
1590
1591   - Add a DefaultEnvironment() function that only creates a default
1592     environment on-demand (for fetching source files, e.g.).
1593
1594   - Portability fix for test/M4.py.
1595
1596   From Steven Knight:
1597
1598   - Tighten up the scons -H help output.
1599
1600   - When the input yacc file ends in .yy and the -d flag is specified,
1601     recognize that a .hpp file (not a .h file) will be created.
1602
1603   - Make builder prefixes work correctly when deducing a target
1604     from a source file name in another directory.
1605
1606   - Documentation fixes: typo in the man page; explain up-front about
1607     not propagating the external environment.
1608
1609   - Use "cvs co -d" instead of "cvs co -p >" when checking out something
1610     from CVS with a specified module name.  This avoids zero-length
1611     files when there is a checkout error.
1612
1613   - Add an "sconsign" script to print the contents of .sconsign files.
1614
1615   - Speed up maintaining the various lists of Node children by using
1616     dictionaries to avoid "x in list" searches.
1617
1618   - Cache the computed list of Node children minus those being Ignored
1619     so it's only calculated once.
1620
1621   - Fix use of the --cache-show option when building a Program()
1622     (or using any other arbitrary action) by making sure all Action
1623     instances have strfunction() methods.
1624
1625   - Allow the source of Command() to be a directory.
1626
1627   - Better error handling of things like raw TypeErrors in SConscripts.
1628
1629   - When installing using "setup.py install --prefix=", suppress the
1630     distutils warning message about adding the (incorrect) library
1631     directory to your search path.
1632
1633   - Correct the spelling of the "validater" option to "validator."
1634     Add a DeprecatedWarning when the old spelling is used.
1635
1636   - Allow a Builder's emitter to be a dictionary that maps source file
1637     suffixes to emitter functions, using the suffix of the first file
1638     in the source list to pick the right one.
1639
1640   - Refactor the creation of the Program, *Object and *Library Builders
1641     so that they're moved out of SCons.Defaults and created on demand.
1642
1643   - Don't split SConscript file names on white space.
1644
1645   - Document the SConscript function's "dirs" and "name" keywords.
1646
1647   - Remove the internal (and superfluous) SCons.Util.argmunge() function.
1648
1649   - Add /TP to the default CXXFLAGS for msvc, so it can compile all
1650     of the suffixes we use as C++ files.
1651
1652   - Allow the "prefix" and "suffix" attributes of a Builder to be
1653     callable objects that return generated strings, or dictionaries
1654     that map a source file suffix to the right prefix/suffix.
1655
1656   - Support a MAXLINELINELENGTH construction variable on Win32 systems
1657     to control when a temporary file is used for long command lines.
1658
1659   - Make how we build .rpm packages not depend on the installation
1660     locations from the distutils being used.
1661
1662   - When deducing a target Node, create it directly from the first
1663     source Node, not by trying to create the right string to pass to
1664     arg2nodes().
1665
1666   - Add support for SWIG.
1667
1668   From Bram Moolenaar:
1669
1670   - Test portability fixes for FreeBSD.
1671
1672   From Gary Oberbrunner:
1673
1674   - Report the target being built in error messages when building
1675     multiple sources from different extensions, or when the target file
1676     extension can't be deduced, or when we don't have an action for a
1677     file suffix.
1678
1679   - Provide helpful error messages when the arguments to env.Install()
1680     are incorrect.
1681
1682   - Fix the value returned by the Node.prevsiginfo() method to conform
1683     to a previous change when checking whether a node is current.
1684
1685   - Supply a stack trace if the Taskmaster catches an exception.
1686
1687   - When using a temporary file for a long link line on Win32 systems,
1688     (also) print the command line that is being executed through the
1689     temporary file.
1690
1691   - Initialize the LIB environment variable when using the Intel
1692     compiler (icl).
1693
1694   - Documentation fixes:  better explain the AlwaysBuild() function.
1695
1696   From Laurent Pelecq:
1697
1698   - When the -debug=pdb option is specified, use pdb.Pdb().runcall() to
1699     call pdb directly, don't call Python recursively.
1700
1701   From Ben Scott:
1702
1703   - Add support for a platform-independent CPPDEFINES variable.
1704
1705   From Christoph Wiedemann:
1706
1707   - Have the g++ Tool actually use g++ in preference to c++.
1708
1709   - Have the gcc Tool actually use gcc in preference to cc.
1710
1711   - Add a gnutools.py test of the GNU tool chain.
1712
1713   - Be smarter about linking: use $CC by default and $CXX only if we're
1714     linking with any C++ objects.
1715
1716   - Avoid SCons hanging when a piped command has a lot of output to read.
1717
1718   - Add QT support for preprocessing .ui files into .c files.
1719
1720
1721
1722 RELEASE 0.90 - Wed, 25 Jun 2003 14:24:52 -0500
1723
1724   From Chad Austin:
1725
1726   - Fix the _concat() documentation, and add a test for it.
1727
1728   - Portability fixes for non-GNU versions of lex and yacc.
1729
1730   From Matt Balvin:
1731
1732   - Fix handling of library prefixes when the subdirectory matches
1733     the prefix.
1734
1735   From Timothee Bessett:
1736
1737   - Add an M4 Builder.
1738
1739   From Charles Crain:
1740
1741   - Use '.lnk' as the suffix on the temporary file for linking long
1742     command lines (necessary for the Phar Lap linkloc linker).
1743
1744   - Save non-string Options values as their actual type.
1745
1746   - Save Options string values that contain a single quote correctly.
1747
1748   - Save any Options values that are changed from the default
1749     Environment values, not just ones changed on the command line or in
1750     an Options file.
1751
1752   - Make closing the Options file descriptor exception-safe.
1753
1754   From Steven Knight:
1755
1756   - SCons now enforces (with an error) that construction variables
1757     must have the same form as valid Python identifiers.
1758
1759   - Fix man page bugs: remove duplicate AddPostAction() description;
1760     document no_import_lib; mention that CPPFLAGS does not contain
1761     $_CPPINCFLAGS; mention that F77FLAGS does not contain $_F77INCFLAGS;
1762     mention that LINKFLAGS and SHLINKFLAGS contains neither $_LIBFLAGS
1763     nor $_LIBDIRFLAGS.
1764
1765   - Eliminate a dependency on the distutils.fancy_getopt module by
1766     copying and pasting its wrap_text() function directly.
1767
1768   - Make the Script.Options() subclass match the underlying base class
1769     implementation.
1770
1771   - When reporting a target is up to date, quote the target like make
1772     (backquote-quote) instead of with double quotes.
1773
1774   - Fix handling of ../* targets when using -U, -D or -u.
1775
1776   From Steve Leblanc:
1777
1778   - Don't update the .sconsign files when run with -n.
1779
1780   From Gary Oberbrunner:
1781
1782   - Add support for the Intel C Compiler (icl.exe).
1783
1784   From Anthony Roach
1785
1786   - Fix Import('*').
1787
1788   From David Snopek
1789
1790   - Fix use of SConf in paths with white space in them.
1791
1792   - Add CheckFunc and CheckType functionality to SConf.
1793
1794   - Fix use of SConf with Builders that return a list of nodes.
1795
1796   From David Snopek and Christoph Wiedemann
1797
1798   - Fix use of the SConf subsystem with SConscriptChdir().
1799
1800   From Greg Spencer
1801
1802   - Check for the existence of MS Visual Studio on disk before using it,
1803     to avoid getting fooled by leftover junk in the registry.
1804
1805   - Add support for MSVC++ .NET.
1806
1807   - Add support for MS Visual Studio project files (DSP, DSW,
1808     SLN and VCPROJ files).
1809
1810   From Christoph Wiedemann
1811
1812   - SConf now works correctly when the -n and -q options are used.
1813
1814
1815
1816 RELEASE 0.14 - Wed, 21 May 2003 05:16:32 -0500
1817
1818   From Chad Austin:
1819
1820   - Use .dll (not .so) for shared libraries on Cygwin; use -fPIC
1821     when compiling them.
1822
1823   - Use 'rm' to remove files under Cygwin.
1824
1825   - Add a PLATFORM variable to construction environments.
1826
1827   - Remove the "platform" argument from tool specifications.
1828
1829   - Propogate PYTHONPATH when running the regression tests so distutils
1830     can be found in non-standard locations.
1831
1832   - Using MSVC long command-line linking when running Cygwin.
1833
1834   - Portability fixes for a lot of tests.
1835
1836   - Add a Value Node class for dependencies on in-core Python values.
1837
1838   From Allen Bierbaum:
1839
1840   - Pass an Environment to the Options validator method, and
1841     add an Options.Save() method.
1842
1843   From Steve Christensen:
1844
1845   - Add an optional sort function argument to the GenerateHelpText()
1846     Options function.
1847
1848   - Evaluate the "varlist" variables when computing the signature of a
1849     function action.
1850
1851   From Charles Crain:
1852
1853   - Parse the source .java files for class names (including inner class
1854     names) to figure out the target .class files that will be created.
1855
1856   - Make Java support work with Repositories and SConscriptChdir(0).
1857
1858   - Pass Nodes, not strings, to Builder emitter functions.
1859
1860   - Refactor command-line interpolation and signature calculation
1861     so we can use real Node attributes.
1862
1863   From Steven Knight:
1864
1865   - Add Java support (javac, javah, jar and rmic).
1866
1867   - Propagate the external SYSTEMROOT environment variable into ENV on
1868     Win32 systems, so external commands that use sockets will work.
1869
1870   - Add a .posix attribute to PathList expansions.
1871
1872   - Check out CVS source files using POSIX path names (forward slashes
1873     as separators) even on Win32.
1874
1875   - Add Node.clear() and Node.FS.Entry.clear() methods to wipe out a
1876     Node's state, allowing it to be re-evaluated by continuous
1877     integration build interfaces.
1878
1879   - Change the name of the Set{Build,Content}SignatureType() functions
1880     to {Target,Source}Signatures().  Deprecate the old names but support
1881     them for backwards compatibility.
1882
1883   - Add internal SCons.Node.FS.{Dir,File}.Entry() methods.
1884
1885   - Interpolate the null string if an out-of-range subscript is used
1886     for a construction variable.
1887
1888   - Fix the internal Link function so that it properly links or copies
1889     files in subsidiary BuildDir directories.
1890
1891   - Refactor the internal representation of a single execution instance
1892     of an action to eliminate redundant signature calculations.
1893
1894   - Eliminate redundant signature calculations for Nodes.
1895
1896   - Optimize out calling hasattr() before accessing attributes.
1897
1898   - Say "Cleaning targets" (not "Building...") when the -c option is
1899     used.
1900
1901   From Damyan Pepper:
1902
1903   - Quote the "Entering directory" message like Make.
1904
1905   From Stefan Reichor:
1906
1907   - Add support for using Ghostscript to convert Postscript to PDF files.
1908
1909   From Anthony Roach:
1910
1911   - Add a standalone "Alias" function (separate from an Environment).
1912
1913   - Make Export() work for local variables.
1914
1915   - Support passing a dictionary to Export().
1916
1917   - Support Import('*') to import everything that's been Export()ed.
1918
1919   - Fix an undefined exitvalmap on Win32 systems.
1920
1921   - Support new SetOption() and GetOption() functions for setting
1922     various command-line options from with an SConscript file.
1923
1924   - Deprecate the old SetJobs() and GetJobs() functions in favor of
1925     using the new generic {Set,Get}Option() functions.
1926
1927   - Fix a number of tests that searched for a Fortran compiler using the
1928     external PATH instead of what SCons would use.
1929
1930   - Fix the interaction of SideEffect() and BuildDir() so that (for
1931     example) PDB files get put correctly in a BuildDir().
1932
1933   From David Snopek:
1934
1935   - Contribute the "Autoscons" code for Autoconf-like checking for
1936     the existence of libraries, header files and the like.
1937
1938   - Have the Tool() function add the tool name to the $TOOLS
1939     construction variable.
1940
1941   From Greg Spencer:
1942
1943   - Support the C preprocessor #import statement.
1944
1945   - Allow the SharedLibrary() Builder on Win32 systems to be able to
1946     register a newly-built dll using regsvr32.
1947
1948   - Add a Builder for Windows type library (.tlb) files from IDL files.
1949
1950   - Add an IDL scanner.
1951
1952   - Refactor the Fortran, C and IDL scanners to share common logic.
1953
1954   - Add .srcpath and .srcdir attributes to $TARGET and $SOURCE.
1955
1956   From Christoph Wiedemann:
1957
1958   - Integrate David Snopek's "Autoscons" code as the new SConf
1959     configuration subsystem, including caching of values between
1960     runs (using normal SCons dependency mechanisms), tests, and
1961     documentation.
1962
1963
1964
1965 RELEASE 0.13 - Mon, 31 Mar 2003 20:22:00 -0600
1966
1967   From Charles Crain:
1968
1969   - Fix a bug when BuildDir(duplicate=0) is used and SConscript
1970     files are called from within other SConscript files.
1971
1972   - Support (older) versions of Perforce which don't set the Windows
1973     registry.
1974
1975
1976
1977 RELEASE 0.12 - Thu, 27 Mar 2003 23:52:09 -0600
1978
1979   From Charles Crain:
1980
1981   - Added support for the Perforce source code management system.
1982
1983   - Fix str(Node.FS) so that it returns a path relative to the calling
1984     SConscript file's directory, not the top-level directory.
1985
1986   - Added support for a separate src_dir argument to SConscript()
1987     that allows explicit specification of where the source files
1988     for an SConscript file can be found.
1989
1990   - Support more easily re-usable flavors of command generators by
1991     calling callable variables when strings are expanded.
1992
1993   From Steven Knight:
1994
1995   - Added an INSTALL construction variable that can be set to a function
1996     to control how the Install() and InstallAs() Builders install files.
1997     The default INSTALL function now copies, not links, files.
1998
1999   - Remove deprecated features:  the "name" argument to Builder objects,
2000     and the Environment.Update() method.
2001
2002   - Add an Environment.SourceCode() method to support fetching files
2003     from source code systems.  Add factory methods that create Builders
2004     to support BitKeeper, CVS, RCS, and SCCS.  Add support for fetching
2005     files from RCS or SCCS transparently (like GNU Make).
2006
2007   - Make the internal to_String() function more efficient.
2008
2009   - Make the error message the same as other build errors when there's a
2010     problem unlinking a target file in preparation for it being built.
2011
2012   - Make TARGET, TARGETS, SOURCE and SOURCES reserved variable names and
2013     warn if the user tries to set them in a construction environment.
2014
2015   - Add support for Tar and Zip files.
2016
2017   - Better documentation of the different ways to export variables to a
2018     subsidiary SConscript file.  Fix documentation bugs in a tools
2019     example, places that still assumed SCons split strings on white
2020     space, and typos.
2021
2022   - Support fetching arbitrary files from the TARGETS or SOURCES lists
2023     (e.g. ${SOURCES[2]}) when calculating the build signature of a
2024     command.
2025
2026   - Don't silently swallow exceptions thrown by Scanners (or other
2027     exceptions while finding a node's dependent children).
2028
2029   - Push files to CacheDir() before calling the superclass built()
2030     method (which may clear the build signature as part of clearing
2031     cached implicit dependencies, if the file has a source scanner).
2032     (Bug reported by Jeff Petkau.)
2033
2034   - Raise an internal error if we attempt to push a file to CacheDir()
2035     with a build signature of None.
2036
2037   - Add an explicit Exit() function for terminating early.
2038
2039   - Change the documentation to correctly describe that the -f option
2040     doesn't change to the directory in which the specified file lives.
2041     
2042   - Support changing directories locally with SConscript directory
2043     path names relative to any SConstruct file specified with -f.
2044     This allows you to build in another directory by simply changing
2045     there and pointing at the SConstruct file in another directory.
2046
2047   - Change the default SConscriptChdir() behavior to change to the
2048     SConscript directory while it's being read.
2049
2050   - Fix an exception thrown when the -U option was used with no
2051     Default() target specified.
2052
2053   - Fix -u so that it builds things in corresponding build directories
2054     when used in a source directory.
2055
2056   From Lachlan O'Dea:
2057
2058   - Add SharedObject() support to the masm tool.
2059
2060   - Fix WhereIs() to return normalized paths.
2061
2062   From Jeff Petkau:
2063
2064   - Don't copy a built file to a CacheDir() if it's already there.
2065
2066   - Avoid partial copies of built files in a CacheDir() by copying
2067     to a temporary file and renaming.
2068
2069   From Anthony Roach:
2070
2071   - Fix incorrect dependency-cycle errors when an Aliased source doesn't
2072     exist.
2073
2074
2075
2076 RELEASE 0.11 - Tue, 11 Feb 2003 05:24:33 -0600
2077
2078   From Chad Austin:
2079
2080   - Add support for IRIX and the SGI MIPSPro tool chain.
2081
2082   - Support using the MSVC tool chain when running Cygwin Python.
2083
2084   From Michael Cook:
2085
2086   - Avoid losing signal bits in the exit status from a command,
2087     helping terminate builds on interrupt (CTRL+C).
2088
2089   From Charles Crain:
2090
2091   - Added new AddPreAction() and AddPostAction() functions that support
2092     taking additional actions before or after building specific targets.
2093
2094   - Add support for the PharLap ETS tool chain.
2095
2096   From Steven Knight:
2097
2098   - Allow Python function Actions to specify a list of construction
2099     variables that should be included in the Action's signature.
2100
2101   - Allow libraries in the LIBS variable to explicitly include the prefix
2102     and suffix, even when using the GNU linker.
2103     (Bug reported by Neal Becker.)
2104
2105   - Use DOS-standard CR-LF line endings in the scons.bat file.
2106     (Bug reported by Gary Ruben.)
2107
2108   - Doc changes:  Eliminate description of deprecated "name" keyword
2109     argument from Builder definition (reported by Gary Ruben).
2110
2111   - Support using env.Append() on BUILDERS (and other dictionaries).
2112     (Bug reported by Bj=F6rn Bylander.)
2113
2114   - Setting the BUILDERS construction variable now properly clears
2115     the previous Builder attributes from the construction Environment.
2116     (Bug reported by Bj=F6rn Bylander.)
2117
2118   - Fix adding a prefix to a file when the target isn't specified.
2119     (Bug reported by Esa Ilari Vuokko.)
2120
2121   - Clean up error messages from problems duplicating into read-only
2122     BuildDir directories or into read-only files.
2123
2124   - Add a CommandAction.strfunction() method, and add an "env" argument
2125     to the FunctionAction.strfunction() method, so that all Action
2126     objects have strfunction() methods, and the functions for building
2127     and returning a string both take the same arguments.
2128
2129   - Add support for new CacheDir() functionality to share derived files
2130     between builds, with related options --cache-disable, --cache-force,
2131     and --cache-show.
2132
2133   - Change the default behavior when no targets are specified to build
2134     everything in the current directory and below (like Make).  This
2135     can be disabled by specifying Default(None) in an SConscript.
2136
2137   - Revamp SCons installation to fix a case-sensitive installation
2138     on Win32 systems, and to add SCons-specific --standard-lib,
2139     --standalone-lib, and --version-lib options for easier user
2140     control of where the libraries get installed.
2141
2142   - Fix the ability to directly import and use Platform and Tool modules
2143     that have been implicitly imported into an Environment().
2144
2145   - Add support for allowing an embedding interface to annotate a node
2146     when it's created.
2147
2148   - Extend the SConscript() function to accept build_dir and duplicate
2149     keyword arguments that function like a BuildDir() call.
2150
2151   From Steve Leblanc:
2152
2153   - Fix the output of -c -n when directories are involved, so it
2154     matches -c.
2155
2156   From Anthony Roach:
2157
2158   - Use a different shared object suffix (.os) when using gcc so shared
2159     and static objects can exist side-by-side in the same directory.
2160
2161   - Allow the same object files on Win32 to be linked into either
2162     shared or static libraries.
2163
2164   - Cache implicit cache values when using --implicit-cache.
2165
2166
2167
2168 RELEASE 0.10 - Thu, 16 Jan 2003 04:11:46 -0600
2169
2170   From Derrick 'dman' Hudson:
2171
2172   - Support Repositories on other file systems by symlinking or
2173     copying files when hard linking won't work.
2174
2175   From Steven Knight:
2176
2177   - Remove Python bytecode (*.pyc) files from the scons-local packages.
2178
2179   - Have FunctionActions print a description of what they're doing
2180     (a representation of the Python call).
2181
2182   - Fix the Install() method so that, like other actions, it prints
2183     what would have happened when the -n option is used.
2184
2185   - Don't create duplicate source files in a BuildDir when the -n
2186     option is used.
2187
2188   - Refactor the Scanner interface to eliminate unnecessary Scanner
2189     calls and make it easier to write efficient scanners.
2190
2191   - Added a "recursive" flag to Scanner creation that specifies the
2192     Scanner should be invoked recursively on dependency files returned
2193     by the scanner.
2194
2195   - Significant performance improvement from using a more efficient
2196     check, throughout the code, for whether a Node has a Builder.
2197
2198   - Fix specifying only the source file to MultiStepBuilders such as
2199     the Program Builder.  (Bug reported by Dean Bair.)
2200
2201   - Fix an exception when building from a file with the same basename as
2202     the subdirectory in which it lives.  (Bug reported by Gerard Patel.)
2203
2204   - Fix automatic deduction of a target file name when there are
2205     multiple source files specified; the target is now deduced from just
2206     the first source file in the list.
2207
2208   - Documentation fixes: better initial explanation of SConscript files;
2209     fix a misformatted "table" in the StaticObject explanation.
2210
2211   From Steven Knight and Steve Leblanc:
2212
2213   - Fix the -c option so it will remove symlinks.
2214
2215   From Steve Leblanc:
2216
2217   - Add a Clean() method to support removing user-specified targets
2218     when using the -c option.
2219
2220   - Add a development script for running SCons through PyChecker.
2221
2222   - Clean up things found by PyChecker (mostly unnecessary imports).
2223
2224   - Add a script to use HappyDoc to create HTML class documentation.
2225
2226   From Lachlan O'Dea:
2227
2228   - Make the Environment.get() method return None by default.
2229
2230   From Anthony Roach:
2231
2232   - Add SetJobs() and GetJobs() methods to allow configuration of the
2233     number of default jobs (still overridden by -j).
2234
2235   - Convert the .sconsign file format from ASCII to a pickled Python
2236     data structure.
2237
2238   - Error message cleanups:  Made consistent the format of error
2239     messages (now all start with "scons: ***") and warning messages (now
2240     all start with "scons: warning:").  Caught more cases with the "Do
2241     not know how to build" error message.
2242
2243   - Added support for the MinGW tool chain.
2244
2245   - Added a --debug=includes option.
2246
2247
2248
2249 RELEASE 0.09 - Thu,  5 Dec 2002 04:48:25 -0600
2250
2251   From Chad Austin:
2252
2253   - Add a Prepend() method to Environments, to append values to
2254     the beginning of construction variables.
2255
2256   From Matt Balvin:
2257
2258   - Add long command-line support to the "lib" Tool (Microsoft library
2259     archiver), too.
2260
2261   From Charles Crain:
2262
2263   - Allow $$ in a string to be passed through as $.
2264
2265   - Support file names with odd characters in them.
2266
2267   - Add support for construction variable substition on scanner
2268     directories (in CPPPATH, F77PATH, LIBPATH, etc.).
2269
2270   From Charles Crain and Steven Knight:
2271
2272   - Add Repository() functionality, including the -Y option.
2273
2274   From Steven Knight:
2275
2276   - Fix auto-deduction of target names so that deduced targets end
2277     up in the same subdirectory as the source.
2278
2279   - Don't remove source files specified on the command line!
2280
2281   - Suport the Intel Fortran Compiler (ifl.exe).
2282
2283   - Supply an error message if there are no command-line or
2284     Default() targets specified.
2285
2286   - Fix the ASPPCOM values for the GNU assembler.
2287     (Bug reported by Brett Polivka.)
2288
2289   - Fix an exception thrown when a Default() directory was specified
2290     when using the -U option.
2291
2292   - Issue a warning when -c can't remove a target.
2293
2294   - Eliminate unnecessary Scanner calls by checking for the
2295     existence of a file before scanning it.  (This adds a generic
2296     hook to check an arbitrary condition before scanning.)
2297
2298   - Add explicit messages to tell when we're "Reading SConscript files
2299     ...," "done reading SConscript files," "Building targets," and
2300     "done building targets."  Add a -Q option to supress these.
2301
2302   - Add separate $SHOBJPREFIX and $SHOBJSUFFIX construction variables
2303     (by default, the same as $OBJPREFIX and $OBJSUFFIX).
2304
2305   - Add Make-like error messages when asked to build a source file,
2306     and before trying to build a file that doesn't have all its source
2307     files (including when an invalid drive letter is used on WIN32).
2308
2309   - Add an scons-local-{version} package (in both .tar.gz and .zip
2310     flavors) to help people who want to ship SCons as a stand-alone
2311     build tool in their software packages.
2312
2313   - Prevent SCons from unlinking files in certain situations when
2314     the -n option is used.
2315
2316   - Change the name of Tool/lib.py to Tool/mslib.py.
2317
2318   From Steven Knight and Anthony Roach:
2319
2320   - Man page:  document the fact that Builder calls return Node objects.
2321
2322   From Steve LeBlanc:
2323
2324   - Refactor option processing to use our own version of Greg Ward's
2325     Optik module, modified to run under Python 1.5.2.
2326
2327   - Add a ParseConfig() command to modify an environment based on
2328     parsing output from a *-config command.
2329
2330   From Jeff Petkau:
2331
2332   - Fix interpretation of '#/../foo' on Win32 systems.
2333
2334   From Anthony Roach:
2335
2336   - Fixed use of command lines with spaces in their arguments,
2337     and use of Nodes with spaces in their string representation.
2338
2339   - Make access and modification times of files in a BuildDir match
2340     the source file, even when hard linking isn't available.
2341
2342   - Make -U be case insensitive on Win32 systems.
2343
2344   - Issue a warning and continue when finding a corrupt .sconsign file.
2345
2346   - Fix using an alias as a dependency of a target so that if one of the
2347     alias' dependencies gets rebuilt, the resulting target will, too.
2348
2349   - Fix differently ordered targets causing unnecessary rebuilds
2350     on case insensitive systems.
2351
2352   - Use os.system() to execute external commands whenever the "env"
2353     utility is available, which is much faster than fork()/exec(),
2354     and fixes the -j option on several platforms.
2355
2356   - Fix use of -j with multiple targets.
2357
2358   - Add an Options() object for friendlier accomodation of command-
2359     line arguments.
2360
2361   - Add support for Microsoft VC++ precompiled header (.pch) files,
2362     debugger (.pdb) files, and resource (.rc) files.
2363
2364   - Don't compute the $_CPPINCFLAGS, $_F77INCFLAGS, $_LIBFLAGS and
2365     $_LIBDIRFLAGS variables each time a command is executed, define
2366     them so they're computed only as needed.  Add a new _concat
2367     function to the Environment that allows people to define their
2368     own similar variables.
2369
2370   - Fix dependency scans when $LIBS is overridden.
2371
2372   - Add EnsurePythonVersion() and EnsureSConsVersion() functions.
2373
2374   - Fix the overly-verbose stack trace on ListBuilder build errors.
2375
2376   - Add a SetContentSignatureType() function, allowing use of file
2377     timestamps instead of MD5 signatures.
2378
2379   - Make -U and Default('source') fail gracefully.
2380
2381   - Allow the File() and Dir() methods to take a path-name string as
2382     the starting directory, in addition to a Dir object.
2383
2384   - Allow the command handler to be selected via the SPAWN, SHELL
2385     and ESCAPE construction variables.
2386
2387   - Allow construction variables to be overridden when a Builder
2388     is called.
2389
2390   From sam th:
2391
2392   - Dynamically check for the existence of utilities with which to
2393     initialize Environments by default.
2394
2395
2396
2397 RELEASE 0.08 - Mon, 15 Jul 2002 12:08:51 -0500
2398
2399   From Charles Crain:
2400
2401   - Fixed a bug with relative CPPPATH dirs when using BuildDir().
2402     (Bug reported by Bob Summerwill.)
2403
2404   - Added a warnings framework and a --warn option to enable or
2405     disable warnings.
2406
2407   - Make the C scanner warn users if files referenced by #include
2408     directives cannot be found and --warn=dependency is specified.
2409
2410   - The BUILDERS construction variable should now be a dictionary
2411     that maps builder names to actions.  Existing uses of lists,
2412     and the Builder name= keyword argument, generate warnings
2413     about use of deprecated features.
2414
2415   - Removed the "shared" keyword argument from the Object and
2416     Library builders.
2417     
2418   - Added separated StaticObject, SharedObject, StaticLibrary and
2419     SharedLibrary builders.  Made Object and Library synonyms for
2420     StaticObject and StaticLibrary, respectively.
2421
2422   - Add LIBS and LIBPATH dependencies for shared libraries.
2423
2424   - Removed support for the prefix, suffix and src_suffix arguments
2425     to Builder() to be callable functions.
2426
2427   - Fix handling file names with multiple dots.
2428
2429   - Allow a build directory to be outside of the SConstruct tree.
2430
2431   - Add a FindFile() function that searches for a file node with a
2432     specified name.
2433
2434   - Add $CPPFLAGS to the shared-object command lines for g++ and gcc.
2435
2436   From Charles Crain and Steven Knight:
2437
2438   - Add a "tools=" keyword argument to Environment instantiation,
2439     and a separate Tools() method, for more flexible specification
2440     of tool-specific environment changes.
2441
2442   From Steven Knight:
2443
2444   - Add a "platform=" keyword argument to Environment instantiation,
2445     and a separate Platform() method, for more flexible specification
2446     of platform-specific environment changes.
2447
2448   - Updated README instructions and setup.py code to catch an
2449     installation failure from not having distutils installed.
2450
2451   - Add descriptions to the -H help text for -D, -u and -U so
2452     people can tell them apart.
2453
2454   - Remove the old feature of automatically splitting strings
2455     of file names on white space.
2456
2457   - Add a dependency Scanner for native Fortran "include" statements,
2458     using a new "F77PATH" construction variable.
2459
2460   - Fix C #include scanning to detect file names with characters like
2461     '-' in them.
2462
2463   - Add more specific version / build output to the -v option.
2464
2465   - Add support for the GNU as, Microsoft masm, and nasm assemblers.
2466
2467   - Allow the "target" argument to a Builder call to be omitted, in
2468     which case the target(s) are deduced from the source file(s) and the
2469     Builder's specified suffix.
2470
2471   - Add a tar archive builder.
2472
2473   - Add preliminary support for the OS/2 Platform, including the icc
2474     and ilink Tools.
2475
2476   From Jeff Petkau:
2477
2478   - Fix --implicit-cache if the scanner returns an empty list.
2479
2480   From Anthony Roach:
2481
2482   - Add a "multi" keyword argument to Builder creation that specifies
2483     it's okay to call the builder multiple times for a target.
2484
2485   - Set a "multi" on Aliases so multiple calls will append to an Alias.
2486
2487   - Fix emitter functions' use of path names when using BuildDir or
2488     in subdirectories.
2489
2490   - Fix --implicit-cache causing redundant rebuilds when the header
2491     file list changed.
2492
2493   - Fix --implicit-cache when a file has no implicit dependencies and
2494     its source is generated.
2495
2496   - Make the drive letters on Windows always be the same case, so that
2497     changes in the case of drive letters don't cause a rebuild.
2498
2499   - Fall back to importing the SCons.TimeStamp module if the SCons.MD5
2500     module can't be imported.
2501
2502   - Fix interrupt handling to guarantee that a single interrupt will
2503     halt SCons both when using -j and not.
2504
2505   - Fix .sconsign signature storage so that output files of one build
2506     can be safely used as input files to another build.
2507
2508   - Added a --debug=time option to print SCons execution times.
2509
2510   - Print an error message if a file can't be unlinked before being
2511     built, rather than just silently terminating the build.
2512
2513   - Add a SideEffect() method that can be used to tell the build
2514     engine that a given file is created as a side effect of building
2515     a target.  A file can be specified as a side effect of more than
2516     one build comand, in which case the commands will not be executed
2517     simultaneously.
2518
2519   - Significant performance gains from not using our own version of
2520     the inefficient stock os.path.splitext() method, caching source
2521     suffix computation, code cleanup in MultiStepBuilder.__call__(),
2522     and replicating some logic in scons_subst().
2523
2524   - Add --implicit-deps-changed and --implicit-deps-unchanged options.
2525
2526   - Add a GetLaunchDir() function.
2527
2528   - Add a SetBuildSignatureType() function.
2529
2530   From Zed Shaw:
2531
2532   - Add an Append() method to Environments, to append values to
2533     construction variables.
2534
2535   - Change the name of Update() to Replace().  Keep Update() as a
2536     deprecated synonym, at least for now.
2537
2538   From Terrel Shumway:
2539
2540   - Use a $PYTHON construction variable, initialized to sys.executable,
2541     when using Python to build parts of the SCons packages.
2542
2543   - Use sys.prefix, not sys.exec_prefix, to find pdb.py.
2544
2545
2546
2547 RELEASE 0.07 - Thu,  2 May 2002 13:37:16 -0500
2548
2549   From Chad Austin:
2550
2551   - Changes to build SCons packages on IRIX (and other *NIces).
2552
2553   - Don't create a directory Node when a file already exists there,
2554     and vice versa.
2555
2556   - Add 'dirs' and 'names' keyword arguments to SConscript for
2557     easier specification of subsidiary SConscript files.
2558
2559   From Charles Crain:
2560
2561   - Internal cleanup of environment passing to function Actions.
2562
2563   - Builders can now take arbitrary keyword arguments to create
2564     attributes to be passed to: command generator functions,
2565     FunctionAction functions, Builder emitter functions (below),
2566     and prefix/suffix generator functions (below).
2567
2568   - Command generator functions can now return ANYTHING that can be
2569     converted into an Action (a function, a string, a CommandGenerator
2570     instance, even an ActionBase instance).
2571
2572   - Actions now call get_contents() with the actual target and source
2573     nodes used for the build.
2574
2575   - A new DictCmdGenerator class replaces CompositeBuilder to support
2576     more flexible Builder behavior internally.
2577
2578   - Builders can now take an emitter= keyword argument.  An emitter
2579     is a function that takes target, source, and env argument, then
2580     return a 2-tuple of (new sources, new targets).  The emitter is
2581     called when the Builder is __call__'ed, allowing a user to modify
2582     source and target lists.
2583
2584   - The prefix, suffix and src_suffix Builder arguments now take a
2585     callable as well a string.  The callable is passed the Environment
2586     and any extra Builder keyword arguments and is expected to return
2587     the appropriate prefix or suffix.
2588
2589   - CommandActions can now be a string, a list of command + argument
2590     strings, or a list of commands (strings or lists).
2591
2592   - Added shared library support.  The Object and Library Builders now
2593     take a "shared=1" keyword argument to specify that a shared object
2594     or shared library should be built.  It is an error to try to build
2595     static objects into a shared library or vice versa.
2596
2597   - Win32 support for .def files has been added.  Added the Win32-specific
2598     construction variables $WIN32DEFPREFIX, $WIN32DEFSUFFIX,
2599     $WIN32DLLPREFIX and $WIN32IMPLIBPREFIX.  When building a .dll,
2600     the new construction variable $WIN32_INSERT_DEF, controls whether
2601     the appropriately-named .def file is inserted into the target
2602     list (if not already present).  A .lib file is always added to
2603     a Library build if not present in the list of targets.
2604
2605   - ListBuilder now passes all targets to the action, not just the first.
2606
2607   - Fix so that -c now deletes generated yacc .h files.
2608
2609   - Builder actions and emitter functions can now be initialized, through
2610     construction variables, to things other than strings.
2611
2612   - Make top-relative '#/dir' lookups work like '#dir'.
2613
2614   - Fix for relative CPPPATH directories in subsidiary SConscript files
2615     (broken in 0.06).
2616
2617   - Add a for_signature argument to command generators, so that
2618     generators that need to can return distinct values for the
2619     command signature and for executing the command.
2620
2621   From Alex Jacques:
2622
2623   - Create a better scons.bat file from a py2bat.py script on the Python
2624     mailing list two years ago (modeled after pl2bat.pl).
2625
2626   From Steven Knight:
2627
2628   - Fix so that -c -n does *not* remove the targets!
2629
2630   - Man page:  Add a hierarchical libraries + Program example.
2631
2632   - Support long MSVC linker command lines through a builder action
2633     that writes to a temporary file and uses the magic MSVC "link @file"
2634     argument syntax if the line is longer than 2K characters.
2635
2636   - Fix F77 command-line options on Win32 (use /Fo instead of -o).
2637
2638   - Use the same action to build from .c (lower case) and .C (upper
2639     case) files on case-insensitive systems like Win32.
2640
2641   - Support building a PDF file directly from a TeX or LaTeX file
2642     using pdftex or pdflatex.
2643
2644   - Add a -x option to runtest.py to specify the script being tested.
2645     A -X option indicates it's an executable, not a script to feed
2646     to the Python interpreter.
2647
2648   - Add a Split() function (identical to SCons.Util.argmunge()) for use
2649     in the next release, when Builders will no longer automatically split
2650     strings on white space.
2651
2652   From Steve Leblanc:
2653
2654   - Add the SConscriptChdir() method.
2655
2656   From Anthony Roach:
2657
2658   - Fix --debug=tree when used with directory targets.
2659
2660   - Significant internal restructuring of Scanners and Taskmaster.
2661
2662   - Added new --debug=dtree option.
2663
2664   - Fixes for --profile option.
2665
2666   - Performance improvement in construction variable substitution.
2667
2668   - Implemented caching of content signatures, plus added --max-drift
2669     option to control caching.
2670
2671   - Implemented caching of dependency signatures, enabled by new
2672     --implicit-cache option.
2673
2674   - Added abspath construction variable modifier.
2675
2676   - Added $SOURCE variable as a synonym for $SOURCES[0].
2677
2678   - Write out .sconsign files on error or interrupt so intermediate
2679     build results are saved.
2680
2681   - Change the -U option to -D.  Make a new -U that builds just the
2682     targets from the local SConscript file.
2683
2684   - Fixed use of sys.path so Python modules can be imported from
2685     the SConscript directory.
2686
2687   - Fix for using Aliases with the -u, -U and -D options.
2688
2689   - Fix so that Nodes can be passed to SConscript files.
2690
2691   From Moshe Zadka:
2692   
2693   - Changes for official Debian packaging.
2694
2695
2696
2697 RELEASE 0.06 - Thu, 28 Mar 2002 01:24:29 -0600
2698
2699   From Charles Crain:
2700
2701   - Fix command generators to expand construction variables.
2702
2703   - Make FunctionAction arguments be Nodes, not strings.
2704
2705   From Stephen Kennedy:
2706
2707   - Performance:  Use a dictionary, not a list, for a Node's parents.
2708
2709   From Steven Knight:
2710
2711   - Add .zip files to the packages we build.
2712
2713   - Man page:  document LIBS, fix a typo, document ARGUMENTS.
2714
2715   - Added RANLIB and RANLIBFLAGS construction variables.  Only use them
2716     in ARCOM if there's a "ranlib" program on the system.
2717
2718   - Add a configurable CFILESUFFIX for the Builder of .l and .y files
2719     into C files.
2720
2721   - Add a CXXFile Builder that turns .ll and .yy files into .cc files
2722     (configurable via a CXXFILESUFFIX construction variable).
2723
2724   - Use the POSIX-standard lex -t flag, not the GNU-specific -o flag.
2725     (Bug reported by Russell Christensen.)
2726
2727   - Fixed an exception when CPPPATH or LIBPATH is a null string.
2728     (Bug reported by Richard Kiss.)
2729
2730   - Add a --profile=FILE option to make profiling SCons easier.
2731
2732   - Modify the new DVI builder to create .dvi files from LaTeX (.ltx
2733     and .latex) files.
2734
2735   - Add support for Aliases (phony targets).
2736
2737   - Add a WhereIs() method for searching for path names to executables.
2738
2739   - Add PDF and PostScript document builders.
2740
2741   - Add support for compiling Fortran programs from a variety of
2742     suffixes (a la GNU Make):  .f, .F, .for, .FOR, .fpp and .FPP
2743
2744   - Support a CPPFLAGS variable on all default commands that use the
2745     C preprocessor.
2746
2747   From Steve Leblanc:
2748
2749   - Add support for the -U option.
2750
2751   - Allow CPPPATH, LIBPATH and LIBS to be specified as white-space
2752     separated strings.
2753
2754   - Add a document builder to create .dvi files from TeX (.tex) files.
2755
2756   From Anthony Roach:
2757
2758   - Fix:  Construction variables with values of 0 were incorrectly
2759     interpolated as ''. 
2760
2761   - Support env['VAR'] to fetch construction variable values.
2762
2763   - Man page:  document Precious().
2764
2765
2766
2767 RELEASE 0.05 - Thu, 21 Feb 2002 16:50:03 -0600
2768
2769   From Chad Austin:
2770
2771   - Set PROGSUFFIX to .exe under Cygwin.
2772
2773   From Charles Crain:
2774
2775   - Allow a library to specified as a command-line source file, not just
2776     in the LIBS construction variable.
2777
2778   - Compensate for a bug in os.path.normpath() that returns '' for './'
2779     on WIN32.
2780
2781   - More performance optimizations:  cache #include lines from files,
2782     eliminate unnecessary calls.
2783
2784   - If a prefix or suffix contains white space, treat the resulting
2785     concatenation as separate arguments.
2786
2787   - Fix irregularities in the way we fetch DevStudio information from
2788     the Windows registry, and in our registry error handling.
2789
2790   From Steven Knight:
2791
2792   - Flush stdout after print so it intermixes correctly with stderr
2793     when redirected.
2794
2795   - Allow Scanners to return a list of strings, and document how to
2796     write your own Scanners.
2797
2798   - Look up implicit (scanned) dependencies relative to the directory
2799     of file being scanned.
2800
2801   - Make writing .sconsign files more robust by first trying to write
2802     to a temp file that gets renamed.
2803
2804   - Create all of the directories for a list of targets before trying
2805     to build any of the targets.
2806
2807   - WIN32 portability fixes in tests.
2808
2809   - Allow the list of variables exported to an SConscript file to be
2810     a UserList, too.
2811
2812   - Document the overlooked LIBPATH construction variable.
2813     (Bug reported by Eicke Godehardt.)
2814
2815   - Fix so that Ignore() ignores indirect, implicit dependencies
2816     (included files), not just direct dependencies.
2817
2818   - Put the man page in the Debian distribution.
2819
2820   - Run HTML docs through tidy to clean up the HTML (for Konqueror).
2821
2822   - Add preliminary support for Unicode strings.
2823
2824   - Efficiency:  don't scan dependencies more than once during the
2825     walk of a tree.
2826
2827   - Fix the -c option so it doesn't stop removing targets if one doesn't
2828     already exist.
2829     (Bug reported by Paul Connell.)
2830
2831   - Fix the --debug=pdb option when run on Windows NT.
2832     (Bug reported by Paul Connell.)
2833
2834   - Add support for the -q option.
2835
2836   From Steve Leblanc:
2837
2838   - Add support for the -u option.
2839
2840   - Add .cc and .hh file suffixes to the C Scanner.
2841
2842   From Anthony Roach:
2843
2844   - Make the scons script return an error code on failures.
2845
2846   - Add support for using code to generate a command to build a target.
2847
2848
2849
2850 RELEASE 0.04 - Wed, 30 Jan 2002 11:09:42 -0600
2851
2852   From Charles Crain:
2853
2854   - Significant performance improvements in the Node.FS and
2855     Scanner subsystems.
2856
2857   - Fix signatures of binary files on Win32 systems.
2858
2859   - Allow LIBS and LIBPATH to be strings, not just arrays.
2860
2861   - Print a traceback if a Python-function builder throws an exception.
2862
2863   From Steven Knight:
2864
2865   - Fix using a directory as a Default(), and allow Default() to
2866     support white space in file names for strings in arrays.
2867
2868   - Man page updates:  corrected some mistakes, documented various
2869     missing Environment methods, alphabetized the construction
2870     variables and other functions, defined begin and end macros for
2871     the example sections, regularized white space separation, fixed
2872     the use of Export() in the Multiple Variants example.
2873
2874   - Function action fixes:  None is now a successful return value.
2875     Exceptions are now reported.  Document function actions.
2876
2877   - Add 'Action' and 'Scanner' to the global keywords so SConscript
2878     files can use them too.
2879
2880   - Removed the Wrapper class between Nodes and Walkers.
2881
2882   - Add examples using Library, LIBS, and LIBPATH.
2883
2884   - The C Scanner now always returns a sorted list of dependencies
2885     so order changes don't cause unnecessary rebuilds.
2886
2887   - Strip $(-$) bracketed text from command lines.  Use this to
2888     surround $_INCDIRS and $_LIBDIRS so we don't rebuild in response
2889     to changes to -I or -L options.
2890
2891   - Add the Ignore() method to ignore dependencies.
2892
2893   - Provide an error message when a nonexistent target is specified
2894     on the command line.
2895
2896   - Remove targets before building them, and add an Environment
2897     Precious() method to override that.
2898
2899   - Eliminate redundant calls to the same builder when the target is a
2900     list of targets:  Add a ListBuilder class that wraps Builders to
2901     handle lists atomically.  Extend the Task class to support building
2902     and updating multiple targets in a single Task.  Simplify the
2903     interface between Task and Taskmaster.
2904
2905   - Add a --debug=pdb option to re-run SCons under the Python debugger.
2906
2907   - Only compute a build signature once for each node.
2908
2909   - Changes to our sys.path[] manipulation to support installation into
2910     an arbitrary --prefix value.
2911
2912   From Steve Leblanc:
2913
2914   - Add var=value command-line arguments.
2915
2916
2917
2918 RELEASE 0.03 - Fri, 11 Jan 2002 01:09:30 -0600
2919
2920   From Charles Crain:
2921
2922   - Performance improvements in the Node.FS and Sig.Calculator classes.
2923
2924   - Add the InstallAs() method.
2925
2926   - Execute commands through an external interpreter (sh, cmd.exe, or
2927     command.com) to handle redirection metacharacters.
2928
2929   - Allow the user to supply a command handler.
2930
2931   From Steven Knight:
2932
2933   - Search both /usr/lib and /usr/local/lib for scons directories by
2934     adding them both to sys.path, with whichever is in sys.prefix first.
2935
2936   - Fix interpreting strings of multiple white-space separated file names
2937     as separate file names, allowing prefixes and suffixes to be appended
2938     to each individually.
2939
2940   - Refactor to move CompositeBuilder initialization logic from the
2941     factory wrapper to the __init__() method, and allow a Builder to
2942     have both an action and a src_builder (or array of them).
2943
2944   - Refactor BuilderBase.__call__() to separate Node creation/lookup
2945     from initialization of the Node's builder information.
2946
2947   - Add a CFile Builder object that supports turning lex (.l) and
2948     yacc (.y) files into .c files.
2949
2950   - Document: variable interpretation attributes; how to propogate
2951     the user's environment variables to executed commands; how to
2952     build variants in multiple BuildDirs.
2953
2954   - Collect String, Dict, and List type-checking in common utility
2955     routines so we can accept User{String,Dict,List}s all over.
2956
2957   - Put the Action factory and classes into their own module.
2958
2959   - Use one CPlusPlusAction in the Object Builder's action dictionary,
2960     instead of letting it create multiple identical instances.
2961
2962   - Document the Install() and InstallAs() methods.
2963
2964   From Steve Leblanc:
2965
2966   - Require that a Builder be given a name argument, supplying a
2967     useful error message when it isn't.
2968
2969   From Anthony Roach:
2970
2971   - Add a "duplicate" keyword argument to BuildDir() that can be set
2972     to prevent linking/copying source files into build directories.
2973
2974   - Add a "--debug=tree" option to print an ASCII dependency tree.
2975
2976   - Fetch the location of the Microsoft Visual C++ compiler(s) from
2977     the Registry, instead of hard-coding the location.
2978     
2979   - Made Scanner objects take Nodes, not path names.
2980     
2981   - Have the C Scanner cache the #include file names instead of
2982     (re-)scanning the file each time it's called.
2983
2984   - Created a separate class for parent "nodes" of file system roots,
2985     eliminating the need for separate is-parent-null checks everywhere.
2986     
2987   - Removed defined __hash__() and __cmp() methods from FS.Entry, in
2988     favor of Python's more efficient built-in identity comparisons.
2989
2990
2991
2992 RELEASE 0.02 - Sun, 23 Dec 2001 19:05:09 -0600
2993
2994   From Charles Crain:
2995
2996   - Added the Install(), BuildDir(), and Export() methods.
2997
2998   - Fix the -C option by delaying setting the top of the FS tree.
2999
3000   - Avoid putting the directory path on the libraries in the LIBS
3001     construction variable.
3002
3003   - Added a GetBuildPath() method to return the full path to the
3004     Node for a specified string.
3005
3006   - Fixed variable substitution in CPPPATH and LIBPATH.
3007
3008   From Steven Knight:
3009
3010   - Fixed the version comment in the scons.bat (the UNIX geek used
3011     # instead of @rem).
3012
3013   - Fix to setup.py so it doesn't require a sys.argv[1] argument.
3014
3015   - Provide make-like warning message for "command not found" and
3016     similar errors.
3017
3018   - Added an EXAMPLES section to the man page.
3019
3020   - Make Default() targets properly relative to their SConscript
3021     file's subdirectory.
3022
3023   From Anthony Roach:
3024
3025   - Documented CXXFLAGS, CXXCOM, and CPPPATH.
3026
3027   - Fixed SCONS_LIB_DIR to work as documented.
3028
3029   - Made Default() accept Nodes as arguments.
3030
3031   - Changed Export() to make it easier to use.
3032   
3033   - Added the Import() and Return() methods.
3034
3035
3036
3037 RELEASE 0.01 - Thu Dec 13 19:25:23 CST 2001
3038
3039 A brief overview of important functionality available in release 0.01:
3040
3041   - C and C++ compilation on POSIX and Windows NT.
3042
3043   - Automatic scanning of C/C++ source files for #include dependencies.
3044
3045   - Support for building libraries; setting construction variables
3046     allows creation of shared libraries.
3047
3048   - Library and C preprocessor search paths.
3049
3050   - File changes detected using MD5 signatures.
3051
3052   - User-definable Builder objects for building files.
3053
3054   - User-definable Scanner objects for scanning for dependencies.
3055
3056   - Parallel build (-j) support.
3057
3058   - Dependency cycles detected.
3059
3060   - Linux packages available in RPM and Debian format.
3061
3062   - Windows installer available.