Fix XML in documentation, and in the bin/scons-doc.py script that generates
[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 RELEASE X.X.X - 
11
12   From Dirk Baechle:
13
14     - Fix XML in documentation.
15
16
17 RELEASE 1.3.0 - Tue, 23 Mar 2010 21:44:19 -0400
18
19   From Steven Knight:
20
21     - Update man page and documentation.
22
23   From William Deegan (plus minor patch from Gary Oberbrunner):
24
25     - Support Visual Studio 8.0 Express
26
27 RELEASE 1.2.0.d20100306 - Sat, 06 Mar 2010 16:18:33 -0800
28
29   From Luca Falavigna:
30
31     - Fix typos in the man page.
32
33   From Gottfried Ganssauge:
34
35     - Support execution when SCons is installed via easy_install.
36
37   From Steven Knight:
38
39     - Make the messages for Configure checks of compilers consistent.
40
41     - Issue an error message if a BUILDERS entry is not a Builder
42       object or a callable wrapper.
43
44   From Rob Managan:
45
46     - Update tex builder to handle the case where a \input{foo}
47       command tries to work with a directory named foo instead of the
48       file foo.tex. The builder now ignores a directory and continues
49       searching to find the correct file. Thanks to Lennart Sauerbeck
50       for the test case and initial patch
51       
52       Also allow the \include of files in subdirectories when variantDir
53       is used with duplicate=0. Previously latex would crash since 
54       the directory in which the .aux file is written was not created.
55       Thanks to Stefan Hepp for finding this and part of the solution.
56
57   From James Teh:
58     - Patches to fix some issues using MS SDK V7.0
59
60   From William Deegan:
61     - Lots of testing and minor patches to handle mixed MS VC and SDK
62       installations, as well as having only the SDK installed.
63
64
65 RELEASE 1.2.0.d20100117 - Sun, 17 Jan 2010 14:26:59 -0800  
66
67   From Jim Randall:
68     - Fixed temp filename race condition on Windows with long cmd lines.
69
70   From David Cournapeau:
71     - Fixed tryRun when sconf directory is in a variant dir.
72     - Do not add -fPIC for ifort tool on non-posix platforms (darwin and
73       windows).
74     - Fix bug 2294 (spurious CheckCC failures).
75     - Fix scons bootstrap process on windows 64 (wrong wininst name)
76
77   From William Deegan:
78     - Final merge from vs_revamp branch to main
79
80     - Added definition and usage of HOST_OS, HOST_ARCH, TARGET_OS, 
81       TARGET_ARCH, currently only defined/used by Visual Studio
82       Compilers. This will be rolled out to other platforms/tools
83       in the future.
84
85     - Add check for python >= 3.0.0 and exit gracefully.
86       For 1.3 python >= 1.5.2 and < 3.0.0 are supported
87
88     - Fix bug 1944 - Handle non-existent .i file in swig emitter, previously
89       it would crash with an IOError exception. Now it will try to make an
90       educated guess on the module name based on the filename.
91
92   From Lukas Erlinghagen:
93
94     - Have AddOption() remove variables from the list of
95       seen-but-unknown variables (which are reported later).
96
97     - An option name and aliases can now be specified as a tuple.
98
99   From Hartmut Goebel:
100
101     - Textfile builder.
102
103   From Jared Grubb:
104
105     - use "is/is not" in comparisons with None instead of "==" or "!=".
106
107   From Jim Hunziker:
108
109     - Avoid adding -gphobos to a command line multiple times
110       when initializing use of the DMD compiler.
111   
112   From Jason Kenney:
113
114     - Sugguested HOST/TARGET OS/ARCH separation.
115
116   From Steven Knight:
117
118     - Fix the -n option when used with VariantDir(duplicate=1)
119       and the variant directory doesn't already exist.
120
121     - Fix scanning of Unicode files for both UTF-16 endian flavors.
122
123     - Fix a TypeError on #include of file names with Unicode characters.
124
125     - Fix an exception if a null command-line argument is passed in.
126
127     - Evaluate Requires() prerequisites before a Node's direct children
128       (sources and dependencies).
129
130   From Greg Noel:
131
132     - Remove redundant __metaclass__ initializations in Environment.py.
133
134     - Correct the documentation of text returned by sconf.Result().
135
136     - Document that filenames with '.' as the first character are
137       ignored by Glob() by default (matching UNIX glob semantics).
138
139     - Fix SWIG testing infrastructure to work on Mac OS X.
140
141     - Restructure a test that occasionally hung so that the test would
142       detect when it was stuck and fail instead.
143
144     - Substfile builder.
145
146   From Gary Oberbrunner:
147
148     - When reporting a target that SCons doesn't know how to make,
149       specify whether it's a File, Dir, etc.
150
151   From Ben Webb:
152
153     - Fix use of $SWIGOUTDIR when generating Python wrappers.
154
155     - Add $SWIGDIRECTORSUFFIX and $SWIGVERSION construction variables.
156
157   From Rob Managan:
158
159     - Add -recorder flag to Latex commands and updated internals to
160       use the output to find files TeX creates. This allows the MiKTeX
161       installations to find the created files
162
163     - Notify user of Latex errors that would get buried in the 
164       Latex output
165
166     - Remove LATEXSUFFIXES from environments that don't initialize Tex.
167
168     - Add support for the glosaaries package for glossaries and acronyms
169
170     - Fix problem that pdftex, latex, and pdflatex tools by themselves did
171       not create the actions for bibtex, makeindex,... by creating them 
172       and other environment settings in one routine called by all four 
173       tex tools.
174
175     - Fix problem with filenames of sideeffects when the user changes
176       the name of the output file from the latex default
177
178     - Add scanning of files included in Latex by means of \lstinputlisting{}
179       Patch from Stefan Hepp.
180
181     - Change command line for epstopdf to use --outfile= instead of -o
182       since this works on all platforms.
183       Patch from Stefan Hepp.
184
185     - Change scanner to properly search for included file from the
186       directory of the main file instead of the file it is included from.
187       Also update the emitter to add the .aux file associated with
188       \include{filename} commands. This makes sure the required directories
189       if any are created for variantdir cases.
190       Half of the patch from Stefan Hepp.
191
192 RELEASE 1.2.0.d20090223 - Mon, 23 Feb 2009 08:41:06 -0800
193
194   From Stanislav Baranov:
195
196     - Make suffix-matching for scanners case-insensitive on Windows.
197
198   From David Cournapeau:
199
200     - Change the way SCons finds versions of Visual C/C++ and Visual
201       Studio to find and use the Microsoft v*vars.bat files.
202
203   From Robert P. J. Day:
204
205     - User's Guide updates.
206
207   From Dan Eaton:
208
209     - Fix generation of Visual Studio 8 project files on x64 platforms.
210
211   From Allan Erskine:
212
213     - Set IncludeSearchPath and PreprocessorDefinitions in generated
214       Visual Studio 8 project files, to help IntelliSense work.
215
216   From Mateusz Gruca:
217
218     - Fix deletion of broken symlinks by the --clean option.
219
220   From Steven Knight:
221
222     - Fix the error message when use of a non-existent drive on Windows
223       is detected.
224
225     - Add sources for files whose targets don't exist in $CHANGED_SOURCES.
226
227     - Detect implicit dependencies on commands even when the command is
228       quoted.
229
230     - Fix interaction of $CHANGED_SOURCES with the --config=force option.
231
232     - Fix finding #include files when the string contains escaped
233       backslashes like "C:\\some\\include.h".
234
235     - Pass $CCFLAGS to Visual C/C++ precompiled header compilation.
236
237     - Remove unnecessary nested $( $) around $_LIBDIRFLAGS on link lines
238       for the Microsoft linker, the OS/2 ilink linker and the Phar Lap
239       linkloc linker.
240
241     - Spell the Windows environment variables consistently "SystemDrive"
242       and "SystemRoot" instead of "SYSTEMDRIVE" and "SYSTEMROOT".
243
244
245
246 RELEASE 1.2.0.d20090113 - Tue, 13 Jan 2009 02:50:30 -0800
247
248   From Stanislav Baranov, Ted Johnson and Steven Knight:
249
250     - Add support for batch compilation of Visual Studio C/C++ source
251       files, controlled by a new $MSVC_BATCH construction variable.
252
253   From Steven Knight:
254
255     - Print the message, "scons: Build interrupted." on error output,
256       not standard output.
257
258     - Add a --warn=future-deprecated option for advance warnings about
259       deprecated features that still have warnings hidden by default.
260
261     - Fix use of $SOURCE and $SOURCES attributes when there are no
262       sources specified in the Builder call.
263
264     - Add support for new $CHANGED_SOURCES, $CHANGED_TARGETS,
265       $UNCHANGED_SOURCES and $UNCHANGED_TARGETS variables.
266
267     - Add general support for batch builds through new batch_key= and
268       targets= keywords to Action object creation.
269
270   From Arve Knudsen:
271
272     - Make linker tools differentiate properly between SharedLibrary
273       and LoadableModule.
274
275     - Document TestCommon.shobj_prefix variable.
276
277     - Support $SWIGOUTDIR values with spaces.
278
279   From Rob Managan:
280
281     - Don't automatically try to build .pdf graphics files for
282       .eps files in \includegraphics{} calls in TeX/LaTeX files
283       when building with the PDF builder (and thus using pdflatex).
284
285   From Gary Oberbrunner:
286
287     - Allow AppendENVPath() and PrependENVPath() to interpret '#'
288       for paths relative to the top-level SConstruct directory.
289
290     - Use the Borland ilink -e option to specify the output file name.
291
292     - Document that the msvc Tool module uses $PCH, $PCHSTOP and $PDB.
293
294     - Allow WINDOWS_INSERT_DEF=0 to disable --output-def when linking
295       under MinGW.
296
297   From Zia Sobhani:
298
299     - Fix typos in the User's Guide.
300
301   From Greg Spencer:
302
303     - Support implicit dependency scanning of files encoded in utf-8
304       and utf-16.
305
306   From Roberto de Vecchi:
307
308     - Remove $CCFLAGS from the the default definitions of $CXXFLAGS for
309       Visual C/C++ and MIPSpro C++ on SGI so, they match other tools
310       and avoid flag duplication on C++ command lines.
311
312   From Ben Webb:
313
314     - Handle quoted module names in SWIG source files.
315
316     - Emit *_wrap.h when SWIG generates header file for directors
317
318   From Matthew Wesley:
319
320     - Copy file attributes so we identify, and can link a shared library
321       from, shared object files in a Repository.
322
323
324
325 RELEASE 1.2.0 - Sat, 20 Dec 2008 22:47:29 -0800
326
327   From Steven Knight:
328
329     - Don't fail if can't import a _subprocess module on Windows.
330
331     - Add warnings for use of the deprecated Options object.
332
333
334
335 RELEASE 1.1.0.d20081207 - Sun, 07 Dec 2008 19:17:23 -0800
336
337   From Benoit Belley:
338
339     - Improve the robustness of GetBuildFailures() by refactoring
340       SCons exception handling (especially BuildError exceptions).
341
342     - Have the --taskmastertrace= option print information about
343       individual Task methods, not just the Taskmaster control flow.
344
345     - Eliminate some spurious dependency cycles by being more aggressive
346       about pruning pending children from the Taskmaster walk.
347
348     - Suppress mistaken reports of a dependency cycle when a child
349       left on the pending list is a single Node in EXECUTED state.
350
351   From David Cournapeau:
352
353     - Fix $FORTRANMODDIRPREFIX for the ifort (Intel Fortran) tool.
354
355   From Brad Fitzpatrick:
356
357     - Don't pre-generate an exception message (which will likely be
358       ignored anyway) when an EntryProxy re-raises an AttributeError.
359
360   From Jared Grubb:
361
362     - Clean up coding style and white space in Node/FS.py.
363
364     - Fix a typo in the documentation for $_CPPDEFFLAGS.
365
366     - Issue 2401: Fix usage of comparisons with None.
367
368   From Ludwig Hähne:
369
370     - Handle Java inner classes declared within a method.
371
372   From Steven Knight:
373
374     - Fix label placement by the "scons-time.py func" subcommand
375       when a profile value was close to (or equal to) 0.0.
376
377     - Fix env.Append() and env.Prepend()'s ability to add a string to
378       list-like variables like $CCFLAGS under Python 2.6.
379
380     - Other Python2.6 portability:  don't use "as" (a Python 2.6 keyword).
381       Don't use the deprecated Exception.message attribute.
382
383     - Support using the -f option to search for a different top-level
384       file name when walking up with the -D, -U or -u options.
385
386     - Fix use of VariantDir when the -n option is used and doesn't,
387       therefore, actually create the variant directory.
388
389     - Fix a stack trace from the --debug=includes option when passed a
390       static or shared library as an argument.
391
392     - Speed up the internal find_file() function (used for searching
393       CPPPATH, LIBPATH, etc.).
394
395     - Add support for using the Python "in" keyword on construction
396       environments (for example, if "CPPPATH" in env: ...).
397
398     - Fix use of Glob() when a repository or source directory contains
399       an in-memory Node without a corresponding on-disk file or directory.
400
401     - Add a warning about future reservation of $CHANGED_SOURCES,
402       $CHANGED_TARGETS, $UNCHANGED_SOURCES and $UNCHANGED_TARGETS.
403
404     - Enable by default the existing warnings about setting the resource
405       $SOURCE, $SOURCES, $TARGET and $TARGETS variable.
406
407   From Rob Managan:
408
409     - Scan for TeX files in the paths specified in the $TEXINPUTS
410       construction variable and the $TEXINPUTS environment variable.
411
412     - Configure the PDF() and PostScript() Builders as single_source so
413       they know each source file generates a separate target file.
414
415     - Add $EPSTOPDF, $EPSTOPDFFLAGS and $EPSTOPDFCOM
416
417     - Add .tex as a valid extension for the PDF() builder.
418
419     - Add regular expressions to find \input, \include and
420       \includegraphics.
421
422     - Support generating a .pdf file from a .eps source.
423
424     - Recursive scan included input TeX files.
425
426     - Handle requiring searched-for TeX input graphics files to have
427       extensions (to avoid trying to build a .eps from itself, e.g.).
428
429   From Greg Noel:
430
431     - Make the Action() function handle positional parameters consistently.
432
433     - Clarify use of Configure.CheckType().
434
435     - Make the File.{Dir,Entry,File}() methods create their entries
436       relative to the calling File's directory, not the SConscript
437       directory.
438
439     - Use the Python os.devnull variable to discard error output when
440       looking for the $CC or $CXX version.
441
442     - Mention LoadableModule() in the SharedLibrary() documentation.
443
444   From Gary Oberbrunner:
445
446     - Update the User's Guide to clarify use of the site_scons/
447       directory and the site_init.py module.
448
449     - Make env.AppendUnique() and env.PrependUnique remove duplicates
450       within a passed-in list being added, too.
451
452   From Randall Spangler:
453
454     - Fix Glob() so an on-disk file or directory beginning with '#'
455       doesn't throw an exception.
456
457
458
459 RELEASE 1.1.0 - Thu, 09 Oct 2008 08:33:47 -0700
460
461   From Chris AtLee
462
463     - Use the specified environment when checking for the GCC compiler
464       version.
465
466   From Ian P. Cardenas:
467
468     - Fix Glob() polluting LIBPATH by returning copy of list
469
470   From David Cournapeau:
471
472     - Add CheckCC, CheckCXX, CheckSHCC and CheckSHCXX tests to
473       configuration contexts.
474
475     - Have the --profile= argument use the much faster cProfile module 
476       (if it's available in the running Python version).
477
478     - Reorder MSVC compilation arguments so the /Fo is first.
479
480   From Bill Deegan:
481
482     - Add scanning Windows resource (.rc) files for implicit dependencies.
483
484   From John Gozde:
485
486     - When scanning for a #include file, don't use a directory that
487       has the same name as the file.
488
489   From Ralf W. Grosse-Kunstleve
490
491     - Suppress error output when checking for the GCC compiler version.
492
493   From Jared Grubb:
494
495     - Fix VariantDir duplication of #included files in subdirectories.
496
497   From Ludwig Hähne:
498
499     - Reduce memory usage when a directory is used as a dependency of
500       another Node (such as an Alias) by returning a concatenation
501       of the children's signatures + names, not the children's contents,
502       as the directory contents.
503
504     - Raise AttributeError, not KeyError, when a Builder can't be found.
505
506     - Invalidate cached Node information (such as the contenst returned
507       by the get_contents() method) when calling actions with Execute().
508
509     - Avoid object reference cycles from frame objects.
510
511     - Reduce memory usage from Null Executor objects.
512
513     - Compute MD5 checksums of large files without reading the entire
514       file contents into memory.  Add a new --md5-chunksize option to
515       control the size of each chunk read into memory.
516
517   From Steven Knight:
518
519     - Fix the ability of the add_src_builder() method to add a new
520       source builder to any other builder.
521
522     - Avoid an infinite loop on non-Windows systems trying to find the
523       SCons library directory if the Python library directory does not
524       begin with the string "python".
525
526     - Search for the SCons library directory in "scons-local" (with
527       no version number) after "scons-local-{VERSION}".
528
529   From Rob Managan:
530
531     - Fix the user's ability to interrupt the TeX build chain.
532
533     - Fix the TeX builder's allowing the user to specify the target name,
534       instead of always using its default output name based on the source.
535
536     - Iterate building TeX output files until all warning are gone
537       and the auxiliary files stop changing, or until we reach the
538       (configurable) maximum number of retries.
539
540     - Add TeX scanner support for:  glossaries, nomenclatures, lists of
541       figures, lists of tables, hyperref and beamer.
542
543     - Use the $BIBINPUTS, $BSTINPUTS, $TEXINPUTS and $TEXPICTS construction
544       variables as search paths for the relevant types of input file.
545
546     - Fix building TeX with VariantDir(duplicate=0) in effect.
547
548     - Fix the LaTeX scanner to search for graphics on the TEXINPUTS path.
549
550     - Have the PDFLaTeX scanner search for .gif files as well.
551
552   From Greg Noel:
553
554     - Fix typos and format bugs in the man page.
555
556     - Add a first draft of a wrapper module for Python's subprocess
557       module.
558
559     - Refactor use of the SCons.compat module so other modules don't
560       have to import it individually.
561
562     - Add .sx as a suffix for assembly language files that use the
563       C preprocessor.
564
565   From Gary Oberbrunner:
566
567     - Make Glob() sort the returned list of Files or Nodes
568       to prevent spurious rebuilds.
569
570     - Add a delete_existing keyword argument to the AppendENVPath()
571       and PrependENVPath() Environment methods.
572
573     - Add ability to use "$SOURCE" when specifying a target to a builder
574
575   From Damyan Pepper:
576
577     - Add a test case to verify that SConsignFile() files can be
578       created in previously non-existent subdirectories.
579
580   From Jim Randall:
581
582     - Make the subdirectory in which the SConsignFile() file will
583       live, if the subdirectory doesn't already exist.
584
585   From Ali Tofigh:
586
587     - Add a test to verify duplication of files in VariantDir subdirectories.
588
589
590
591 RELEASE 1.0.1 - Sat, 06 Sep 2008 07:29:34 -0700
592
593   From Greg Noel:
594
595     - Add a FindFile() section to the User's Guide.
596
597     - Fix the FindFile() documentation in the man page.
598
599     - Fix formatting errors in the Package() description in the man page.
600
601     - Escape parentheses that appear within variable names when spawning
602       command lines using os.system().
603
604
605
606 RELEASE 1.0.0 - XXX
607
608   From Jared Grubb:
609
610     - Clear the Node state when turning a generic Entry into a Dir.
611
612   From Ludwig Hähne:
613
614     - Fix sporadic output-order failures in test/GetBuildFailures/parallel.py.
615
616     - Document the ParseDepends() function in the User's Guide.
617
618   From khomenko:
619
620     - Create a separate description and long_description for RPM packages.
621
622   From Steven Knight:
623
624     - Document the GetLaunchDir() function in the User's Guide.
625
626     - Have the env.Execute() method print an error message if the
627       executed command fails.
628
629     - Add a script for creating a standard SCons development system on
630       Ubuntu Hardy.  Rewrite subsidiary scripts for install Python and
631       SCons versions in Python (from shell).
632
633   From Greg Noel:
634
635     - Handle yacc/bison on newer Mac OS X versions creating file.hpp,
636       not file.cpp.h.
637
638     - In RPCGEN tests, ignore stderr messages from older versions of
639       rpcgen on some versions of Mac OS X.
640    
641     - Fix typos in man page descriptions of Tag() and Package(), and in
642       the scons-time man page.
643
644     - Fix documentation of SConf.CheckLibWithHeader and other SConf methods.
645
646     - Update documentation of SConscript(variant_dir) usage.
647
648     - Fix SWIG tests for (some versions of) Mac OS X.
649
650   From Jonas Olsson:
651
652     - Print the warning about -j on Windows being potentially unreliable if
653       the pywin32 extensions are unavailable or lack file handle operations.
654
655   From Jim Randall:
656
657     - Fix the env.WhereIs() method to expand construction variables.
658
659   From Rogier Schouten:
660
661     - Enable building of shared libraries with the Bordand ilink32 linker.
662
663
664
665 RELEASE 1.0.0 - Sat, 09 Aug 2008 12:19:44 -0700
666
667   From Luca Falavigna:
668
669     - Fix SCons man page indentation under Debian's man page macros.
670
671   From Steven Knight:
672
673     - Clarify the man page description of the SConscript(src_dir) argument.
674
675     - User's Guide updates:
676
677        -  Document the BUILD_TARGETS, COMMAND_LINE_TARGETS and
678           DEFAULT_TARGETS variables.
679
680        -  Document the AddOption(), GetOption() and SetOption() functions.
681
682        -  Document the Requires() function; convert to the Variables
683           object, its UnknownOptions() method, and its associated
684           BoolVariable(), EnumVariable(), ListVariable(), PackageVariable()
685           and PathVariable() functions.
686           
687        -  Document the Progress() function.
688
689        -  Reorganize the chapter and sections describing the different
690           types of environments and how they interact.  Document the
691           SetDefault() method.  Document the PrependENVPath() and
692           AppendENVPath() functions.
693
694        -  Reorganize the command-line arguments chapter.  Document the
695           ARGLIST variable.
696
697        -  Collect some miscellaneous sections into a chapter about
698           configuring build output.
699
700     - Man page updates:
701
702        -  Document suggested use of the Visual C/C++ /FC option to fix
703           the ability to double-click on file names in compilation error
704           messages.
705
706        -  Document the need to use Clean() for any SideEffect() files that
707           must be explicitly removed when their targets are removed.
708
709        -  Explicitly document use of Node lists as input to Dependency().
710
711   From Greg Noel:
712
713     - Document MergeFlags(), ParseConfig(), ParseFlags() and SideEffect()
714       in the User's Guide.
715
716   From Gary Oberbrunner:
717
718     - Document use of the GetBuildFailures() function in the User's Guide.
719
720   From Adam Simpkins:
721
722     - Add man page text clarifying the behavior of AddPreAction() and
723       AddPostAction() when called with multiple targets.
724
725   From Alexey Zezukin:
726
727     - Fix incorrectly swapped man page descriptions of the --warn= options
728       for duplicate-environment and missing-sconscript.
729
730
731
732 RELEASE 0.98.5 - Sat, 07 Jun 2008 08:20:35 -0700
733
734   From Benoit Belley:
735
736   - Fix the Intel C++ compiler ABI specification for EMT64 processors.
737
738   From David Cournapeau:
739
740   - Issue a (suppressable) warning, not an error, when trying to link
741     C++ and Fortran object files into the same executable.
742
743   From Steven Knight:
744
745   - Update the scons.bat file so that it returns the real exit status
746     from SCons, even though it uses setlocal + endlocal.
747
748   - Fix the --interactive post-build messages so it doesn't get stuck
749     mistakenly reporting failures after any individual build fails.
750
751   - Fix calling File() as a File object method in some circumstances.
752
753   - Fix setup.py installation on Mac OS X so SCons gets installed
754     under /usr/lcoal by default, not in the Mac OS X Python framework.
755
756
757
758 RELEASE 0.98.4 - Sat, 17 May 2008 22:14:46 -0700
759
760   From Benoit Belley:
761
762   - Fix calculation of signatures for Python function actions with
763     closures in Python versions before 2.5.
764
765   From David Cournapeau:
766
767   - Fix the initialization of $SHF77FLAGS so it includes $F77FLAGS.
768
769   From Jonas Olsson:
770
771   - Fix a syntax error in the Intel C compiler support on Windows.
772
773   From Steven Knight:
774
775   - Change how we represent Python Value Nodes when printing and when
776     stored in .sconsign files (to avoid blowing out memory by storing
777     huge strings in .sconsign files after multiple runs using Configure
778     contexts cause the Value strings to be re-escaped each time).
779
780   - Fix a regression in not executing configuration checks after failure
781     of any configuration check that used the same compiler or other tool.
782
783   - Handle multiple destinations in Visual Studio 8 settings for the
784     analogues to the INCLUDE, LIBRARY and PATH variables.
785
786   From Greg Noel:
787
788   - Update man page text for VariantDir().
789
790
791
792 RELEASE 0.98.3 - Tue, 29 Apr 2008 22:40:12 -0700
793
794   From Greg Noel:
795
796   - Fix use of $CXXFLAGS when building C++ shared object files.
797
798   From Steven Knight:
799
800   - Fix a regression when a Builder's source_scanner doesn't select
801     a more specific scanner for the suffix of a specified source file.
802
803   - Fix the Options object backwards compatibility so people can still
804     "import SCons.Options.{Bool,Enum,List,Package,Path}Option" submodules.
805
806   - Fix searching for implicit dependencies when an Entry Node shows up
807     in the search path list.
808
809   From Stefano:
810
811   - Fix expansion of $FORTRANMODDIR in the default Fortran command line(s)
812     when it's set to something like ${TARGET.dir}.
813
814
815
816 RELEASE 0.98.2 - Sun, 20 Apr 2008 23:38:56 -0700
817
818   From Steven Knight:
819
820   - Fix a bug in Fortran suffix computation that would cause SCons to
821     run out of memory on Windows systems.
822
823   - Fix being able to specify --interactive mode command lines with
824     \ (backslash) path name separators on Windows.
825
826   From Gary Oberbrunner:
827
828   - Document Glob() in the User's Guide.
829
830
831
832 RELEASE 0.98.1 - Fri, 18 Apr 2008 19:11:58 -0700
833
834   From Benoit Belley:
835
836   - Speed up the SCons.Util.to_string*() functions.
837
838   - Optimize various Node intialization and calculations.
839
840   - Optimize Executor scanning code.
841
842   - Optimize Taskmaster execution, including dependency-cycle checking.
843
844   - Fix the --debug=stree option so it prints its tree once, not twice.
845
846   From Johan BoulÃ:
847
848   - Fix the ability to use LoadableModule() under MinGW.
849
850   From David Cournapeau:
851
852   - Various missing Fortran-related construction variables have been added.
853
854   - SCons now uses the program specified in the $FORTRAN construction
855     variable to link Fortran object files.
856
857   - Fortran compilers on Linux (Intel, g77 and gfortran) now add the -fPIC
858     option by default when compilling shared objects.
859
860   - New 'sunf77', 'sunf90' and 'sunf95' Tool modules have been added to
861     support Sun Fortran compilers.  On Solaris, the Sun Fortran compilers
862     are used in preference to other compilers by default.
863
864   - Fortran support now uses gfortran in preference to g77.
865
866   - Fortran file suffixes are now configurable through the
867     $F77FILESUFFIXES, $F90FILESUFFIXES, $F95FILESUFFIXES and
868     $FORTRANFILESUFFIXES variables.
869
870   From Steven Knight:
871
872   - Make the -d, -e, -w and --no-print-directory options "Ignored for
873     compatibility."  (We're not going to implement them.)
874
875   - Fix a serious inefficiency in how SCons checks for whether any source
876     files are missing when a Builder call creates many targets from many
877     input source files.
878
879   - In Java projects, make the target .class files depend only on the
880     specific source .java files where the individual classes are defined.
881
882   - Don't store duplicate source file entries  in the .sconsign file so
883     we don't endlessly rebuild the target(s) for no reason.
884
885   - Add a Variables object as the first step towards deprecating the
886     Options object name.  Similarly, add BoolVariable(), EnumVariable(),
887     ListVariable(), PackageVariable() and PathVariable() functions
888     as first steps towards replacing BoolOption(), EnumOption(),
889     ListOption(), PackageOption() and PathOption().
890
891   - Change the options= keyword argument to the Environment() function
892     to variables=, to avoid confusion with SCons command-line options.
893     Continue supporting the options= keyword for backwards compatibility.
894
895   - When $SWIGFLAGS contains the -python flag, expect the generated .py
896     file to be in the same (sub)directory as the target.
897
898   - When compiling C++ files, allow $CCFLAGS settings to show up on the
899     command line even when $CXXFLAGS has been redefined.
900
901   - Fix --interactive with -u/-U/-D when a VariantDir() is used.
902
903   From Anatoly Techtonik:
904
905   - Have the scons.bat file add the script execution directory to its
906     local %PATH% on Windows, so the Python executable can be found.
907
908   From Mike Wake:
909
910   - Fix passing variable names as a list to the Return() function.
911
912   From Matthew Wesley:
913
914   - Add support for the GDC 'D' language compiler.
915
916
917
918 RELEASE 0.98 - Sun, 30 Mar 2008 23:33:05 -0700
919
920   From Benoit Belley:
921
922   - Fix the --keep-going flag so it builds all possible targets even when
923     a later top-level target depends on a child that failed its build.
924
925   - Fix being able to use $PDB and $WINDWOWS_INSERT_MANIFEST together.
926
927   - Don't crash if un-installing the Intel C compiler leaves left-over,
928     dangling entries in the Windows registry.
929
930   - Improve support for non-standard library prefixes and suffixes by
931     stripping all prefixes/suffixes from file name string as appropriate.
932
933   - Reduce the default stack size for -j worker threads to 256 Kbytes.
934     Provide user control over this value by adding --stack-size and
935     --warn=stack-size options, and a SetOption('stack_size') function.
936
937   - Fix a crash on Linux systems when trying to use the Intel C compiler
938     and no /opt/intel_cc_* directories are found.
939
940   - Improve using Python functions as actions by incorporating into
941     a FunctionAction's signature:
942       - literal values referenced by the byte code.
943       - values of default arguments
944       - code of nested functions
945       - values of variables captured by closures
946       - names of referenced global variables and functions
947
948   - Fix the closing message when --clean and --keep-going are both
949     used and no errors occur.
950
951   - Add support for the Intel C compiler on Mac OS X.
952
953   - Speed up reading SConscript files by about 20% (for some
954     configurations) by:  1) optimizing the SCons.Util.is_*() and
955     SCons.Util.flatten() functions; 2) avoiding unnecessary os.stat()
956     calls by using a File's .suffix attribute directly instead of
957     stringifying it.
958
959   From Jérôme Berger:
960
961   - Have the D language scanner search for .di files as well as .d files.
962
963   - Add a find_include_names() method to the Scanner.Classic class to
964     abstract out how included names can be generated by subclasses.
965
966   - Allow the D language scanner to detect multiple modules imported by
967     a single statement.
968
969   From Konstantin Bozhikov:
970
971   - Support expansion of construction variables that contain or refer
972     to lists of other variables or Nodes within expansions like $CPPPATH.
973
974   - Change variable substitution (the env.subst() method) so that an
975     input sequence (list or tuple) is preserved as a list in the output.
976
977   From David Cournapeau:
978
979   - Add a CheckDeclaration() call to configure contexts.
980
981   - Improve the CheckTypeSize() code.
982
983   - Add a Define() call to configure contexts, to add arbitrary #define
984     lines to a generated configure header file.
985
986   - Add a "gfortran" Tool module for the GNU F95/F2003 compiler.
987
988   - Avoid use of -rpath with the Mac OS X linker.
989
990   - Add comment lines to the generated config.h file to describe what
991     the various #define/#undef lines are doing.
992
993   From Steven Knight:
994
995   - Support the ability to subclass the new-style "str" class as input
996     to Builders.
997
998   - Improve the performance of our type-checking by using isinstance()
999     with new-style classes.
1000
1001   - Fix #include (and other $*PATH variables searches) of files with
1002     absolute path names.  Don't die if they don't exist (due to being
1003     #ifdef'ed out or the like).
1004
1005   - Fix --interactive mode when Default(None) is used.
1006
1007   - Fix --debug=memoizer to work around a bug in base Python 2.2 metaclass
1008     initialization (by just not allowing Memoization in Python versions
1009     that have the bug).
1010
1011   - Have the "scons-time time" subcommand handle empty log files, and
1012     log files that contain no results specified by the --which option.
1013
1014   - Fix the max Y of vertical bars drawn by "scons-time --fmt=gnuplot".
1015
1016   - On Mac OS X, account for the fact that the header file generated
1017     from a C++ file will be named (e.g.) file.cpp.h, not file.hpp.
1018
1019   - Fix floating-point numbers confusing the Java parser about
1020     generated .class file names in some configurations.
1021
1022   - Document (nearly) all the values you can now fetch with GetOption().
1023
1024   - Fix use of file names containing strings of multiple spaces when
1025     using ActionFactory instances like the Copy() or Move() function.
1026
1027   - Fix a 0.97 regression when using a variable expansion (like
1028     $OBJSUFFIX) in a source file name to a builder with attached source
1029     builders that match suffix (like Program()+Object()).
1030
1031   - Have the Java parser recognize generics (surrounded by angle brackets)
1032     so they don't interfere with identifying anonymous inner classes.
1033
1034   - Avoid an infinite loop when trying to use saved copies of the
1035     env.Install() or env.InstallAs() after replacing the method
1036     attributes.
1037
1038   - Improve the performance of setting construction variables.
1039
1040   - When cloning a construction environment, avoid over-writing an
1041     attribute for an added method if the user explicitly replaced it.
1042
1043   - Add a warning about deprecated support for Python 1.5, 2.0 and 2.1.
1044
1045   - Fix being able to SetOption('warn', ...) in SConscript files.
1046
1047   - Add a warning about env.Copy() being deprecated.
1048
1049   - Add warnings about the --debug={dtree,stree,tree} options
1050     being deprecated.
1051
1052   - Add VariantDir() as the first step towards deprecating BuildDir().
1053     Add the keyword argument "variant_dir" as the replacement for
1054     "build_dir".
1055
1056   - Add warnings about the {Target,Source}Signatures() methods and
1057     functions being deprecated.
1058
1059   From Rob Managan:
1060
1061   - Enhance TeX and LaTeX support to work with BuildDir(duplicate=0).
1062
1063   - Re-run LaTeX when it issues a package warning that it must be re-run.
1064
1065   From Leanid Nazdrynau:
1066
1067   - Have the Copy() action factory preserve file modes and times
1068     when copying individual files.
1069
1070   From Jan Nijtmans:
1071
1072   - If $JARCHDIR isn't set explicitly, use the .java_classdir attribute
1073     that was set when the Java() Builder built the .class files.
1074
1075   From Greg Noel:
1076
1077   - Document the Dir(), File() and Entry() methods of Dir and File Nodes.
1078
1079   - Add the parse_flags option when creating Environments
1080
1081   From Gary Oberbrunner:
1082
1083   - Make File(), Dir() and Entry() return a list of Nodes when passed
1084     a list of names, instead of trying to make a string from the name
1085     list and making a Node from that string.
1086
1087   - Fix the ability to build an Alias in --interactive mode.
1088
1089   - Fix the ability to hash the contents of actions for nested Python
1090     functions on Python versions where the inability to pickle them
1091     returns a TypeError (instead of the documented PicklingError).
1092
1093   From Jonas Olsson:
1094
1095   - Fix use of the Intel C compiler when the top compiler directory,
1096     but not the compiler version, is specified.
1097
1098   - Handle Intel C compiler network license files (port@system).
1099
1100   From Jim Randall:
1101
1102   - Fix how Python Value Nodes are printed in --debug=explain output.
1103
1104   From Adam Simpkins:
1105
1106   - Add a --interactive option that starts a session for building (or
1107     cleaning) targets without re-reading the SConscript files every time.
1108
1109   - Fix use of readline command-line editing in --interactive mode.
1110
1111   - Have the --interactive mode "build" command with no arguments
1112     build the specified Default() targets.
1113
1114   - Fix the Chmod(), Delete(), Mkdir() and Touch() Action factories to
1115     take a list (of Nodes or strings) as arguments.
1116
1117   From Vaclav Smilauer:
1118
1119   - Fix saving and restoring an Options value of 'all' on Python
1120     versions where all() is a builtin function.
1121
1122   From Daniel Svensson:
1123
1124   - Code correction in SCons.Util.is_List().
1125
1126   From Ben Webb:
1127
1128   - Support the SWIG %module statement with following modifiers in
1129     parenthese (e.g., '%module(directors="1")').
1130
1131
1132
1133 RELEASE 0.97.0d20071212 - Wed, 12 Dec 2007 09:29:32 -0600
1134
1135   From Benoit Belley:
1136
1137   - Fix occasional spurious rebuilds and inefficiency when using
1138     --implicit-cache and Builders that produce multiple targets.
1139
1140   - Allow SCons to not have to know about the builders of generated
1141     files when BuildDir(duplicate=0) is used, potentially allowing some
1142     SConscript files to be ignored for smaller builds.
1143
1144   From David Cournapeau:
1145
1146   - Add a CheckTypeSize() call to configure contexts.
1147
1148   From Ken Deeter:
1149
1150   - Make the "contents" of Alias Nodes a concatenation of the children's
1151     content signatures (MD5 checksums), not a concatenation of the
1152     children's contents, to avoid using large amounts of memory during
1153     signature calculation.
1154
1155   From Malte Helmert:
1156
1157   - Fix a lot of typos in the man page and User's Guide.
1158
1159   From Geoffrey Irving:
1160
1161   - Speed up conversion of paths in .sconsign files to File or Dir Nodes.
1162
1163   From Steven Knight:
1164
1165   - Add an Options.UnknownOptions() method that returns any settings
1166     (from the command line, or whatever dictionary was passed in)
1167     that aren't known to the Options object.
1168
1169   - Add a Glob() function.
1170
1171   - When removing targets with the -c option, use the absolute path (to
1172     avoid problems interpreting BuildDir() when the top-level directory
1173     is the source directory).
1174
1175   - Fix problems with Install() and InstallAs() when called through a
1176     clone (of a clone, ...) of a cloned construction environment.
1177
1178   - When executing a file containing Options() settings, add the file's
1179     directory to sys.path (so modules can be imported from there) and
1180     explicity set __name__ to the name of the file so the statement's
1181     in the file can deduce the location if they need to.
1182
1183   - Fix an O(n^2) performance problem when adding sources to a target
1184     through calls to a multi Builder (including Aliases).
1185
1186   - Redefine the $WINDOWSPROGMANIFESTSUFFIX and
1187     $WINDOWSSHLIBMANIFESTSUFFIX variables so they pick up changes to
1188     the underlying $SHLIBSUFFIX and $PROGSUFFIX variables.
1189
1190   - Add a GetBuildFailures() function that can be called from functions
1191     registered with the Python atexit module to print summary information
1192     about any failures encountered while building.
1193
1194   - Return a NodeList object, not a Python list, when a single_source
1195     Builder like Object() is called with more than one file.
1196
1197   - When searching for implicit dependency files in the directories
1198     in a $*PATH list, don't create Dir Nodes for directories that
1199     don't actually exist on-disk.
1200
1201   - Add a Requires() function to allow the specification of order-only
1202     prerequisites, which will be updated before specified "downstream"
1203     targets but which don't actually cause the target to be rebuilt.
1204
1205   - Restore the FS.{Dir,File,Entry}.rel_path() method.
1206
1207   - Make the default behavior of {Source,Target}Signatures('timestamp')
1208     be equivalent to 'timestamp-match', not 'timestamp-newer'.
1209
1210   - Fix use of CacheDir with Decider('timestamp-newer') by updating
1211     the modification time when copying files from the cache.
1212
1213   - Fix random issues with parallel (-j) builds on Windows when Python
1214     holds open file handles (especially for SCons temporary files,
1215     or targets built by Python function actions) across process creation.
1216
1217   From Maxim Kartashev:
1218
1219   - Fix test scripts when run on Solaris.
1220
1221   From Gary Oberbrunner:
1222
1223   - Fix Glob() when a pattern is in an explicitly-named subdirectory.
1224
1225   From Philipp Scholl:
1226
1227   - Fix setting up targets if multiple Package builders are specified
1228     at once.
1229
1230
1231
1232 RELEASE 0.97.0d20070918 - Tue, 18 Sep 2007 10:51:27 -0500
1233
1234   From Steven Knight:
1235
1236   - Fix the wix Tool module to handle null entries in $PATH variables.
1237
1238   - Move the documentation of Install() and InstallAs() from the list
1239     of functions to the list of Builders (now that they're implemented
1240     as such).
1241
1242   - Allow env.CacheDir() to be set per construction environment.  The
1243     global CacheDir() function now sets an overridable global default.
1244
1245   - Add an env.Decider() method and a Node.Decider() method that allow
1246     flexible specification of an arbitrary function to decide if a given
1247     dependency has changed since the last time a target was built.
1248
1249   - Don't execute Configure actions (while reading SConscript files)
1250     when cleaning (-c) or getting help (-h or -H).
1251
1252   - Add to each target an implicit dependency on the external command(s)
1253     used to build the target, as found by searching env['ENV']['PATH']
1254     for the first argument on each executed command line.
1255
1256   - Add support for a $IMPLICIT_COMMAND_DEPENDENCIES construction
1257     variabe that can be used to disable the automatic implicit
1258     dependency on executed commands.
1259
1260   - Add an "ensure_suffix" keyword to Builder() definitions that, when
1261     true, will add the configured suffix to the targets even if it looks
1262     like they already have a different suffix.
1263
1264   - Add a Progress() function that allows for calling a function or string
1265     (or list of strings) to display progress while walking the DAG.
1266
1267   - Allow ParseConfig(), MergeFlags() and ParseFlags() to handle output
1268     from a *config command with quoted path names that contain spaces.
1269
1270   - Make the Return() function stop processing the SConscript file and
1271     return immediately.  Add a "stop=" keyword argument that can be set
1272     to False to preserve the old behavior.
1273
1274   - Fix use of exitstatfunc on an Action.
1275
1276   - Introduce all man page function examples with "Example:" or "Examples:".
1277
1278   - When a file gets added to a directory, make sure the directory gets
1279     re-scanned for the new implicit dependency.
1280
1281   - Fix handling a file that's specified multiple times in a target
1282     list so that it doesn't cause dependent Nodes to "disappear" from
1283     the dependency graph walk.
1284
1285   From Carsten Koch:
1286
1287   - Avoid race conditions with same-named files and directory creation
1288     when pushing copies of files to CacheDir().
1289
1290   From Tzvetan Mikov:
1291
1292   - Handle $ in Java class names.
1293
1294   From Gary Oberbrunner:
1295
1296   - Add support for the Intel C compiler on Windows64.
1297
1298   - On SGI IRIX, have $SHCXX use $CXX by default (like other platforms).
1299
1300   From Sohail Somani:
1301
1302   - When Cloning a construction environment, set any variables before
1303     applying tools (so the tool module can access the configured settings)
1304     and re-set them after (so they end up matching what the user set).
1305
1306   From Matthias Troffaes:
1307
1308   - Make sure extra auxiliary files generated by some LaTeX packages
1309     and not ending in .aux also get deleted by scons -c.
1310
1311   From Greg Ward:
1312
1313   - Add a $JAVABOOTCLASSPATH variable for directories to be passed to the
1314     javac -bootclasspath option.
1315
1316   From Christoph Wiedemann:
1317
1318   - Add implicit dependencies on the commands used to build a target.
1319
1320
1321
1322
1323 RELEASE 0.97.0d20070809 - Fri, 10 Aug 2007 10:51:27 -0500
1324
1325   From Lars Albertsson:
1326
1327   - Don't error if a #include line happens to match a directory
1328     somewhere on a path (like $CPPPATH, $FORTRANPATH, etc.).
1329
1330   From Mark Bertoglio:
1331
1332   - Fix listing multiple projects in Visual Studio 7.[01] solution files,
1333     including generating individual project GUIDs instead of re-using
1334     the solution GUID.
1335
1336   From Jean Brouwers:
1337
1338   - Add /opt/SUNWspro/bin to the default execution PATH on Solaris.
1339
1340   From Allan Erskine:
1341
1342   - Only expect the Microsoft IDL compiler to emit *_p.c and *_data.c
1343     files if the /proxy and /dlldata switches are used (respectively).
1344
1345   From Steven Knight:
1346
1347   - Have --debug=explain report if a target is being rebuilt because
1348     AlwaysBuild() is specified (instead of "unknown reasons").
1349
1350   - Support {Get,Set}Option('help') to make it easier for SConscript
1351     files to tell if a help option (-h, --help, etc.) has been specified.
1352
1353   - Support {Get,Set}Option('random') so random-dependency interaction
1354     with CacheDir() is controllable from SConscript files.
1355
1356   - Add a new AddOption() function to support user-defined command-
1357     line flags (like --prefix=, --force, etc.).
1358
1359   - Push and retrieve built symlinks to/from a CacheDir() as actual
1360     symlinks, not by copying the file contents.
1361
1362   - Fix how the Action module handles stringifying the shared library
1363     generator in the Tool/mingw.py module.
1364
1365   - When generating a config.h file, print "#define HAVE_{FEATURE} 1"
1366     instad of just "#define HAVE_{FEATURE}", for more compatibility
1367     with Autoconf-style projects.
1368
1369   - Fix expansion of $TARGET, $TARGETS, $SOURCE and $SOURCES keywords in
1370     Visual C/C++ PDB file names.
1371     
1372   - Fix locating Visual C/C++ PDB files in build directories.
1373
1374   - Support an env.AddMethod() method and an AddMethod() global function
1375     for adding a new method, respectively, to a construction environment
1376     or an arbitrary object (such as a class).
1377
1378   - Fix the --debug=time option when the -j option is specified and all
1379     files are up to date.
1380
1381   - Add a $SWIGOUTDIR variable to allow setting the swig -outdir option,
1382     and use it to identify files created by the swig -java option.
1383
1384   - Add a $SWIGPATH variable that specifies the path to be searched
1385     for included SWIG files, Also add related $SWIGINCPREFIX and
1386     $SWIGINCSUFFIX variables that specify the prefix and suffix to
1387     be be added to each $SWIGPATH directory when expanded on the SWIG
1388     command line.
1389
1390   - More efficient copying of construction environments (mostly borrowed
1391     from copy.deepcopy() in the standard Python library).
1392
1393   - When printing --tree=prune output, don't print [brackets] around
1394     source files, only do so for built targets with children.
1395
1396   - Fix interpretation of Builder source arguments when the Builder has
1397     a src_suffix *and* a source_builder and the argument has no suffix.
1398
1399   - Fix use of expansions like ${TARGET.dir} or ${SOURCE.dir} in the
1400     following construction variables:  $FORTRANMODDIR, $JARCHDIR,
1401     $JARFLAGS, $LEXFLAGS, $SWIGFLAGS, $SWIGOUTDIR and $YACCFLAGS.
1402
1403   - Fix dependencies on Java files generated by SWIG so they can be
1404     detected and built in one pass.
1405
1406   - Fix SWIG when used with a BuildDir().
1407
1408   From Leanid Nazdrynau:
1409
1410   - When applying Tool modules after a construction environment has
1411     already been created, don't overwrite existing $CFILESUFFIX and
1412     $CXXFILESUFFIX value.
1413
1414   - Support passing the Java() builder a list of explicit .java files
1415     (not only a list of directories to be scanned for .java files).
1416
1417   - Support passing .java files to the Jar() and JavaH() builders, which
1418     then use the builder underlying the Java() builder to turn them into
1419     .class files.  (That is, the Jar()-Java() chain of builders become
1420     multi-step, like the Program()-Object()-CFile() builders.)
1421
1422   - Support passing SWIG .i files to the Java builders (Java(),
1423     Jar(), JavaH()), to cause intermediate .java files to be created
1424     automatically.
1425
1426   - Add $JAVACLASSPATH and $JAVASOURCEPATH variables, that get added to
1427     the javac "-classpath" and "-sourcepath" options.  (Note that SCons
1428     does *not* currently search these paths for implicit dependencies.)
1429
1430   - Commonize initialization of Java-related builders.
1431
1432   From Jan Nijtmans:
1433
1434   - Find Java anonymous classes when the next token after the name is
1435     an open parenthesis.
1436
1437   From Gary Oberbrunner:
1438
1439   - Fix a code example in the man page.
1440
1441   From Tilo Prutz:
1442
1443   - Add support for the file names that Java 1.5 (and 1.6) generates for
1444     nested anonymous inner classes, which are different from Java 1.4.
1445
1446   From Adam Simpkins:
1447
1448   - Allow worker threads to terminate gracefully when all jobs are
1449     finished.
1450
1451   From Sohail Somani:
1452
1453   - Add LaTeX scanner support for finding dependencies specified with
1454     the \usepackage{} directive.
1455
1456
1457
1458 RELEASE 0.97 - Thu, 17 May 2007 08:59:41 -0500
1459
1460   From Steven Knight:
1461
1462   - Fix a bug that would make parallel builds stop in their tracks if
1463     Nodes that depended on lists that contained some Nodes built together
1464     caused the reference count to drop below 0 if the Nodes were visited
1465     and commands finished in the wrong order.
1466
1467   - Make sure the DirEntryScanner doesn't choke if it's handed something
1468     that's not a directory (Node.FS.Dir) Node.
1469
1470
1471
1472 RELEASE 0.96.96 - Thu, 12 Apr 2007 12:36:25 -0500
1473
1474   NOTE:  This is (Yet) a(nother) pre-release of 0.97 for testing purposes.
1475
1476   From Joe Bloggs:
1477
1478   - Man page fix:  remove cut-and-paste sentence in NoCache() description.
1479
1480   From Dmitry Grigorenko and Gary Oberbrunner:
1481
1482   - Use the Intel C++ compiler, not $CC, to link C++ source.
1483
1484   From Helmut Grohne:
1485
1486   - Fix the man page example of propagating a user's external environment.
1487
1488   From Steven Knight:
1489
1490   - Back out (most of) the Windows registry installer patch, which
1491     seems to not work on some versions of Windows.
1492
1493   - Don't treat Java ".class" attributes as defining an inner class.
1494
1495   - Fix detecting an erroneous Java anonymous class when the first
1496     non-skipped token after a "new" keyword is a closing brace.
1497
1498   - Fix a regression when a CPPDEFINES list contains a tuple, the second
1499     item of which (the option value) is a construction variable expansion
1500     (e.g. $VALUE) and the value of the variable isn't a string.
1501
1502   - Improve the error message if an IOError (like trying to read a
1503     directory as a file) occurs while deciding if a node is up-to-date.
1504
1505   - Fix "maximum recursion" / "unhashable type" errors in $CPPPATH
1506     PathList expansion if a subsidiary expansion yields a stringable,
1507     non-Node object.
1508
1509   - Generate API documentation from the docstrings (using epydoc).
1510
1511   - Fix use of --debug=presub with Actions for out-of-the-box Builders.
1512
1513   - Fix handling nested lists within $CPPPATH, $LIBPATH, etc.
1514
1515   - Fix a "builders_used" AttributeError that real-world Qt initialization
1516     triggered in the refactored suffix handling for Builders.
1517
1518   - Make the reported --debug=time timings meaningful when used with -j.
1519     Better documentation of what the times mean.
1520
1521   - User Guide updates: --random, AlwaysBuild(), --tree=,
1522     --debug=findlibs, --debug=presub, --debug=stacktrace,
1523     --taskmastertrace.
1524
1525   - Document (in both man page and User's Guide) that --implicit-cache
1526     ignores changes in $CPPPATH, $LIBPATH, etc.
1527
1528   From Jean-Baptiste Lab:
1529
1530   - Remove hard-coded dependency on Python 2.2 from Debian packaging files.
1531
1532   From Jeff Mahovsky:
1533
1534   - Handle spaces in the build target name in Visual Studio project files.
1535
1536   From Rob Managan:
1537
1538   - Re-run LaTeX after BibTeX has been re-run in response to a changed
1539     .bib file.
1540
1541   From Joel B. Mohler:
1542
1543   - Make additional TeX auxiliary files (.toc, .idx and .bbl files)
1544     Precious so their removal doesn't affect whether the necessary
1545     sections are included in output PDF or PostScript files.
1546
1547   From Gary Oberbrunner:
1548
1549   - Fix the ability to import modules in the site_scons directory from
1550     a subdirectory.
1551
1552   From Adam Simpkins:
1553
1554   - Make sure parallel (-j) builds all targets even if they show up
1555     multiple times in the child list (as a source and a dependency).
1556
1557   From Matthias Troffaes:
1558
1559   - Don't re-run TeX if the triggering strings (\makeindex, \bibliography
1560     \tableofcontents) are commented out.
1561
1562   From Richard Viney:
1563
1564   - Fix use of custom include and lib paths with Visual Studio 8.
1565
1566   - Select the default .NET Framework SDK Dir based on the version of
1567     Visual Studio being used.
1568
1569
1570
1571 RELEASE 0.96.95 - Mon, 12 Feb 2007 20:25:16 -0600
1572
1573   From Anatoly:
1574
1575   - Add the scons.org URL and a package description to the setup.py
1576     arguments.
1577
1578   - Have the Windows installer add a registry entry for scons.bat in the
1579     "App Paths" key, so scons.bat can be executed without adding the
1580     directory to the %PATH%.  (Python itself works this way.)
1581
1582   From Anonymous:
1583
1584   - Fix looking for default paths in Visual Studio 8.0 (and later).
1585
1586   - Add -lm to the list of default D libraries for linking.
1587
1588   From Matt Doar:
1589
1590   - Provide a more complete write-your-own-Scanner example in the man page.
1591
1592   From Ralf W. Grosse-Kunstleve:
1593
1594   - Contributed upstream Python change to our copied subprocess.py module
1595     for more efficient standard input processing.
1596
1597   From Steven Knight:
1598
1599   - Fix the Node.FS.Base.rel_path() method when the two nodes are on
1600     different drive letters.  (This caused an infinite loop when
1601     trying to write .sconsign files.)
1602
1603   - Fully support Scanners that use a dictionary to map file suffixes
1604     to other scanners.
1605
1606   - Support delayed evaluation of the $SPAWN variable to allow selection
1607     of a function via ${} string expansions.
1608
1609   - Add --srcdir as a synonym for -Y/--repository.
1610
1611   - Document limitations of #include "file.h" with Repository().
1612
1613   - Fix use of a toolpath under the source directory of a BuildDir().
1614
1615   - Fix env.Install() with a file name portion that begins with '#'.
1616
1617   - Fix ParseConfig()'s handling of multiple options in a string that's
1618     replaced a *FLAGS construction variable.
1619
1620   - Have the C++ tools initialize common C compilation variables ($CCFLAGS,
1621     $SHCCFLAGS and $_CCCOMCOM) even if the 'cc' Tool isn't loaded.
1622
1623   From Leanid Nazdrynau:
1624
1625   - Fix detection of Java anonymous classes if a newline precedes the
1626     opening brace.
1627
1628   From Gary Oberbrunner:
1629
1630   - Document use of ${} to execute arbitrary Python code.
1631
1632   - Add support for:
1633     1) automatically adding a site_scons subdirectory (in the top-level
1634        SConstruct directory) to sys.path (PYTHONPATH);
1635     2) automatically importing site_scons/site_init.py;
1636     3) automatically adding site_scons/site_tools to the toolpath.
1637
1638   From John Pye:
1639
1640   - Change ParseConfig() to preserve white space in arguments passed in
1641     as a list.
1642
1643   From a smith:
1644
1645   - Fix adding explicitly-named Java inner class files (and any
1646     other file names that may contain a '$') to Jar files.
1647
1648   From David Vitek:
1649
1650   - Add a NoCache() function to mark targets as unsuitable for propagating
1651     to (or retrieving from) a CacheDir().
1652
1653   From Ben Webb:
1654
1655   - If the swig -noproxy option is used, it won't generate a .py file,
1656     so don't emit it as a target that we expect to be built.
1657
1658
1659
1660 RELEASE 0.96.94 - Sun, 07 Jan 2007 18:36:20 -0600
1661
1662   NOTE:  This is a pre-release of 0.97 for testing purposes.
1663
1664   From Anonymous:
1665
1666   - Allow arbitrary white space after a SWIG %module declaration.
1667
1668   From Paul:
1669
1670   - When compiling resources under MinGW, make sure there's a space 
1671     between the --include-dir option and its argument.
1672
1673   From Jay Kint:
1674
1675   - Alleviate long command line issues on Windows by executing command
1676     lines directly via os.spawnv() if the command line doesn't need
1677     shell interpretation (has no pipes, redirection, etc.).
1678
1679   From Walter Franzini:
1680
1681   - Exclude additional Debian packaging files from the copyright check.
1682
1683   From Fawad Halim:
1684
1685   - Handle the conflict between the impending Python 2.6 'as' keyword
1686     and our Tool/as.py module name.
1687
1688   From Steven Knight:
1689
1690   - Speed up the Node.FS.Dir.rel_path() method used to generate path names
1691     that get put into the .sconsign* file(s).
1692
1693   - Optimize Node.FS.Base.get_suffix() by computing the suffix once, up
1694     front, when we set the Node's name.  (Duh...)
1695
1696   - Reduce the Memoizer's responsibilities to simply counting hits and
1697     misses when the --debug=memoizer option is used, not to actually
1698     handling the key calculation and memoization itself.  This speeds
1699     up some configurations significantly, and should cause no functional
1700     differences.
1701
1702   - Add a new scons-time script with subcommands for generating
1703     consistent timing output from SCons configurations, extracting
1704     various information from those timings, and displaying them in
1705     different formats.
1706
1707   - Reduce some unnecessary stat() calls from on-disk entry type checks.
1708
1709   - Fix SideEffect() when used with -j, which was badly broken in 0.96.93.
1710
1711   - Propagate TypeError exceptions when evaluating construction variable
1712     expansions up the stack, so users can see what's going on.
1713
1714   - When disambiguating a Node.FS.Entry into a Dir or File, don't look
1715     in the on-disk source directory until we've confirmed there's no
1716     on-disk entry locally and there *is* one in the srcdir.  This avoids
1717     creating a phantom Node that can interfere with dependencies on
1718     directory contents.
1719
1720   - Add an AllowSubstExceptions() function that gives the SConscript
1721     files control over what exceptions cause a string to expand to ''
1722     vs. terminating processing with an error.
1723
1724   - Allow the f90.py and f95.py Tool modules to compile earlier source
1725     source files of earlier Fortran version.
1726
1727   - Fix storing signatures of files retrieved from CacheDir() so they're
1728     correctly identified as up-to-date next invocation.
1729
1730   - Make sure lists of computed source suffixes cached by Builder objects
1731     don't persist across changes to the list of source Builders (so the
1732     addition of suffixes like .ui by the qt.py Tool module take effect).
1733
1734   - Enhance the bootstrap.py script to allow it to be used to execute
1735     SCons more easily from a checked-out source tree.
1736
1737   From Ben Leslie:
1738
1739   - Fix post-Memoizer value caching misspellings in Node.FS._doLookup().
1740
1741   From Rob Managan, Dmitry Mikhin and Joel B. Mohler:
1742
1743   - Handle TeX/LaTeX files in subdirectories by changing directory
1744     before invoking TeX/LaTeX.
1745
1746   - Scan LaTeX files for \bibliography lines.
1747
1748   - Support multiple file names in a "\bibliography{file1,file2}" string.
1749
1750   - Handle TeX warnings about undefined citations.
1751
1752   - Support re-running LaTeX if necessary due to a Table of Contents.
1753
1754   From Dmitry Mikhin:
1755
1756   - Return LaTeX if "Rerun to get citations correct" shows up on the next
1757     line after the "Warning:" string.
1758
1759   From Gary Oberbrunner:
1760
1761   - Add #include lines to fix portability issues in two tests.
1762
1763   - Eliminate some unnecessary os.path.normpath() calls.
1764
1765   - Add a $CFLAGS variable for C-specific options, leaving $CCFLAGS
1766     for options common to C and C++.
1767
1768   From Tom Parker:
1769
1770   - Have the error message print the missing file that Qt can't find.
1771
1772   From John Pye:
1773
1774   - Fix env.MergeFlags() appending to construction variable value of None.
1775
1776   From Steve Robbins:
1777
1778   - Fix the "sconsign" script when the .sconsign.dblite file is explicitly
1779     specified on the command line (and not intuited from the old way of
1780     calling it with just ".sconsign").
1781
1782   From Jose Pablo Ezequiel "Pupeno" Fernandez Silva:
1783
1784   - Give the 'lex' tool knowledge of the additional target files produced
1785     by the flex "--header-file=" and "--tables-file=" options.
1786
1787   - Give the 'yacc' tool knowledge of the additional target files produced
1788     by the bison "-g", "--defines=" and "--graph=" options.
1789
1790   - Generate intermediate files with Objective C file suffixes (.m) when
1791     the lex and yacc source files have appropriate suffixes (.lm and .ym).
1792
1793   From Sohail Somain:
1794
1795   - Have the mslink.py Tool only look for a 'link' executable on Windows
1796     systems.
1797
1798   From Vaclav Smilauer:
1799
1800   - Add support for a "srcdir" keyword argument when calling a Builder,
1801     which will add a srcdir prefix to all non-relative string sources.
1802
1803   From Jonathan Ultis:
1804
1805   - Allow Options converters to take the construction environment as
1806     an optional argument.
1807
1808
1809
1810 RELEASE 0.96.93 - Mon, 06 Nov 2006 00:44:11 -0600
1811
1812   NOTE:  This is a pre-release of 0.97 for testing purposes.
1813
1814   From Anonymous:
1815
1816   - Allow Python Value Nodes to be Builder targets.
1817
1818   From Matthias:
1819
1820   - Only filter Visual Studio common filename prefixes on complete
1821     directory names.
1822
1823   From Chad Austin:
1824
1825   - Fix the build of the SCons documentation on systems that don't
1826     have "python" in the $PATH.
1827
1828   From Ken Boortz:
1829
1830   - Enhance ParseConfig() to recognize options that begin with '+'.
1831
1832   From John Calcote, Elliot Murphy:
1833
1834   - Document ways to override the CCPDBFLAGS variable to use the
1835     Microsoft linker's /Zi option instead of the default /Z7.
1836
1837   From Christopher Drexler:
1838
1839   - Make SCons aware bibtex must be called if any \include files
1840     cause creation of a bibliography.
1841
1842   - Make SCons aware that "\bilbiography" in TeX source files means
1843     that related .bbl and .blg bibliography files will be created.
1844     (NOTE:  This still needs to search for the string in \include files.)
1845
1846   From David Gruener:
1847
1848   - Fix inconsistent handling of Action strfunction arguments.
1849
1850   - Preserve white space in display Action strfunction strings.
1851
1852   From James Y. Knight and Gerard Patel:
1853
1854   - Support creation of shared object files from assembly language.
1855
1856   From Steven Knight:
1857
1858   - Speed up the Taskmaster significantly by avoiding unnecessary
1859     re-scans of Nodes to find out if there's work to be done, having it
1860     track the currently-executed top-level target directly and not
1861     through its presence on the target list, and eliminating some other
1862     minor list(s), method(s) and manipulation.
1863
1864   - Fix the expansion of $TARGET and $SOURCE in the expansion of
1865     $INSTALLSTR displayed for non-environment calls to InstallAs().
1866
1867   - Fix the ability to have an Alias() call refer to a directory
1868     name that's not identified as a directory until later.
1869
1870   - Enhance runtest.py with an option to use QMTest as the harness.
1871     This will become the default behavior as we add more functionality
1872     to the QMTest side.
1873
1874   - Let linking on mingw use the default function that chooses $CC (gcc)
1875     or $CXX (g++) depending on whether there are any C++ source files.
1876
1877   - Work around a bug in early versions of the Python 2.4 profile module
1878     that caused the --profile= option to fail.
1879
1880   - Only call Options validators and converters once when initializing a
1881     construction environment.
1882
1883   - Fix the ability of env.Append() and env.Prepend(), in all known Python
1884     versions, to handle different input value types when the construction
1885     variable being updated is a dictionary.
1886
1887   - Add a --cache-debug option for information about what files it's
1888     looking for in a CacheDir().
1889
1890   - Document the difference in construction variable expansion between
1891     {Action,Builder}() and env.{Action,Builder}().
1892
1893   - Change the name of env.Copy() to env.Clone(), keeping the old name
1894     around for backwards compatibility (with the intention of eventually
1895     phasing it out to avoid confusion with the Copy() Action factory).
1896
1897   From Arve Knudsen:
1898
1899   - Support cleaning and scanning SWIG-generated files.
1900
1901   From Carsten Koch:
1902
1903   - Allow selection of Visual Studio version by setting $MSVS_VERSION
1904     after construction environment initialization.
1905
1906   From Jean-Baptiste Lab:
1907
1908   - Try using zipimport if we can't import Tool or Platform modules
1909     using the normal "imp" module.  This allows SCons to be packaged
1910     using py2exe's all-in-one-zip-file approach.
1911
1912   From Ben Liblit:
1913
1914   - Do not re-scan files if the scanner returns no implicit dependencies.
1915
1916   From Sanjoy Mahajan:
1917
1918   - Change use of $SOURCES to $SOURCE in all TeX-related Tool modules.
1919
1920   From Joel B. Mohler:
1921
1922   - Make SCons aware that "\makeindex" in TeX source files means that
1923     related .ilg, .ind and .idx index files will be created.
1924     (NOTE:  This still needs to search for the string in \include files.)
1925
1926   - Prevent scanning the TeX .aux file for additional files from
1927     trying to remove it twice when the -c option is used.
1928
1929   From Leanid Nazdrynau:
1930
1931   - Give the MSVC RES (resource) Builder a src_builder list and a .rc
1932     src_suffix so other builders can generate .rc files.
1933
1934   From Matthew A. Nicholson:
1935
1936   - Enhance Install() and InstallAs() to handle directory trees as sources.
1937
1938   From Jan Nijtmans:
1939
1940   - Don't use the -fPIC flag when using gcc on Windows (e.g. MinGW).
1941
1942   From Greg Noel:
1943
1944   - Add an env.ParseFlags() method that provides separate logic for
1945     parsing GNU tool chain flags into a dictionary.
1946     
1947   - Add an env.MergeFlags() method to apply an arbitrary dictionary
1948     of flags to a construction environment's variables.
1949
1950   From Gary Oberbrunner:
1951
1952   - Fix parsing tripartite Intel C compiler version numbers on Linux.
1953
1954   - Extend the ParseConfig() function to recognize -arch and
1955     -isysroot options.
1956
1957   - Have the error message list the known suffixes when a Builder call
1958     can't build a source file with an unknown suffix.
1959
1960   From Karol Pietrzak:
1961
1962   - Avoid recursive calls to main() in the program snippet used by the
1963     SConf subsystem to test linking against libraries.  This changes the
1964     default behavior of CheckLib() and CheckLibWithHeader() to print
1965     "Checking for C library foo..." instead of "Checking for main()
1966     in C library foo...".
1967
1968   From John Pye:
1969
1970   - Throw an exception if a command called by ParseConfig() or
1971     ParseFlags() returns an error.
1972
1973   From Stefan Seefeld:
1974
1975   - Initial infrastructure for running SCons tests under QMTest.
1976
1977   From Sohail Somani:
1978
1979   - Fix tests that fail due to gcc warnings.
1980
1981   From Dobes Vandermeer:
1982
1983   - In stack traces, print the full paths of SConscript files.
1984
1985   From Atul Varma:
1986
1987   - Fix detection of Visual C++ Express Edition.
1988
1989   From Dobes Vandermeer:
1990
1991   - Let the src_dir option to the SConscript() function affect all the 
1992     the source file paths, instead of treating all source files paths
1993     as relative to the SConscript directory itself.
1994
1995   From Nicolas Vigier:
1996
1997   - Fix finding Fortran modules in build directories.
1998
1999   - Fix use of BuildDir() when the source file in the source directory
2000     is a symlink with a relative path.
2001
2002   From Edward Wang:
2003
2004   - Fix the Memoizer when the SCons Python modules are executed from
2005     .pyo files at different locations from where they were compiled.
2006
2007   From Johan Zander:
2008
2009   - Fix missing os.path.join() when constructing the $FRAMEWORKSDKDIR/bin.
2010
2011
2012
2013 RELEASE 0.96.92 - Mon, 10 Apr 2006 21:08:22 -0400
2014
2015   NOTE:  This was a pre-release of 0.97 for testing purposes.
2016
2017   From Anonymous:
2018
2019   - Fix the intelc.py Tool module to not throw an exception if the
2020     only installed version is something other than ia32.
2021
2022   - Set $CCVERSION when using gcc.
2023
2024   From Matthias:
2025
2026   - Support generating project and solution files for Microsoft
2027     Visual Studio version 8.
2028
2029   - Support generating more than one project file for a Microsoft
2030     Visual Studio solution file.
2031
2032   - Add support for a support "runfile" parameter to Microsoft
2033     Visual Studio project file creation.
2034
2035   - Put the project GUID, not the solution GUID, in the right spot
2036     in the solution file.
2037
2038   From Erling Andersen:
2039
2040   - Fix interpretation of Node.FS objects wrapped in Proxy instances,
2041     allowing expansion of things like ${File(TARGET)} in command lines.
2042
2043   From Stanislav Baranov:
2044
2045   - Add a separate MSVSSolution() Builder, with support for the
2046     following new construction variables: $MSVSBUILDCOM, $MSVSCLEANCOM,
2047     $MSVSENCODING, $MSVSREBUILDCOM, $MSVSSCONS, $MSVSSCONSCOM,
2048     $MSVSSCONSFLAGS, $MSVSSCONSCRIPT and $MSVSSOLUTIONCOM.
2049
2050   From Ralph W. Grosse-Kunstleve and Patrick Mezard:
2051
2052   - Remove unneceesary (and incorrect) SCons.Util strings on some function
2053     calls in SCons.Util.
2054
2055   From Bob Halley:
2056
2057   - Fix C/C++ compiler selection on AIX to not always use the external $CC
2058     environment variable.
2059
2060   From August Hörandl:
2061
2062   - Add a scanner for \include and \import files, with support for
2063     searching a directory list in $TEXINPUTS (imported from the external
2064     environment).
2065
2066   - Support $MAKEINDEX, $MAKEINDEXCOM, $MAKEINDEXCOMSTR and
2067     $MAKEINDEXFLAGS for generating indices from .idx files.
2068
2069   From Steven Johnson:
2070
2071   - Add a NoClean() Environment method and function to override removal
2072     of targets during a -c clean, including documentation and tests.
2073
2074   From Steven Knight:
2075
2076   - Check for whether files exist on disk by listing the directory
2077     contents, not calling os.path.exists() file by file.  This is
2078     somewhat more efficient in general, and may be significantly
2079     more efficient on Windows.
2080
2081   - Minor speedups in the internal is_Dict(), is_List() and is_String()
2082     functions.
2083
2084   - Fix a signature refactoring bug that caused Qt header files to
2085     get re-generated every time.
2086
2087   - Don't fail when writing signatures if the .sconsign.dblite file is
2088     owned by a different user (e.g. root) from a previous run.
2089
2090   - When deleting variables from stacked OverrideEnvironments, don't
2091     throw a KeyError if we were able to delte the variable from any
2092     Environment in the stack.
2093
2094   - Get rid of the last indentation tabs in the SCons source files and
2095     add -tt to the Python invocations in the packaging build and the
2096     tests so they don't creep back in.
2097
2098   - In Visual Studio project files, put quotes around the -C directory
2099     so everything works even if the path has spaces in it.
2100
2101   - The Intel Fortran compiler uses -object:$TARGET, not "-o $TARGET",
2102     when building object files on Windows.  Have the the ifort Tool
2103     modify the default command lines appropriately.
2104
2105   - Document the --debug=explain option in the man page.  (How did we
2106     miss this?)
2107
2108   - Add a $LATEXRETRIES variable to allow configuration of the number of
2109     times LaTex can be re-called to try to resolve undefined references.
2110
2111   - Change the order of the arguments to Configure.Checklib() to match
2112     the documentation.
2113
2114   - Handle signature calculation properly when the Python function used
2115     for a FunctionAction is an object method.
2116
2117   - On Windows, assume that absolute path names without a drive letter
2118     refer to the drive on which the SConstruct file lives.
2119
2120   - Add /usr/ccs/bin to the end of the the default external execution
2121     PATH on Solaris.
2122
2123   - Add $PKGCHK and $PKGINFO variables for use on Solaris when searching
2124     for the SunPRO C++ compiler.  Make the default value for $PKGCHK
2125     be /usr/sbin/pgkchk (since /usr/sbin isn't usually on the external
2126     execution $PATH).
2127
2128   - Fix a man page example of overriding variables when calling
2129     SharedLibrary() to also set the $LIBSUFFIXES variable.
2130
2131   - Add a --taskmastertrace=FILE option to give some insight on how
2132     the taskmaster decides what Node to build next.
2133
2134   - Changed the names of the old $WIN32DEFPREFIX, $WIN32DEFSUFFIX,
2135     $WIN32DLLPREFIX and $WIN32IMPLIBPREFIX construction variables to
2136     new $WINDOWSDEFPREFIX, $WINDOWSDEFSUFFIX, $WINDOWSDLLPREFIX and
2137     $WINDOWSIMPLIBPREFIX construction variables.  The old names are now
2138     deprecated, but preserved for backwards compatibility.
2139
2140   - Fix (?) a runtest.py hang on Windows when the --xml option is used.
2141
2142   - Change the message when an error occurs trying to interact with the
2143     file system to report the target(s) in square brackets (as before) and
2144     the actual file or directory that encountered the error afterwards.
2145
2146   From Chen Lee:
2147
2148   - Add x64 support for Microsoft Visual Studio 8.
2149
2150   From Baptiste Lepilleur:
2151
2152   - Support the --debug=memory option on Windows when the Python version
2153     has the win32process and win32api modules.
2154
2155   - Add support for Visual Studio 2005 Pro.
2156
2157   - Fix portability issues in various tests: test/Case.py,
2158     Test/Java/{JAR,JARCHDIR,JARFLAGS,JAVAC,JAVACFLAGS,JAVAH,RMIC}.py,
2159     test/MSVS/vs-{6.0,7.0,7.1,8.0}-exec.py,
2160     test/Repository/{Java,JavaH,RMIC}.py,
2161     test/QT/{generated-ui,installed,up-to-date,warnings}.py,
2162     test/ZIP/ZIP.py.
2163
2164   - Ignore pkgchk errors on Solaris when searching for the C++ compiler.
2165
2166   - Speed up the SCons/EnvironmentTests.py unit tests.
2167
2168   - Add a --verbose= option to runtest.py to print executed commands
2169     and their output at various levels.
2170
2171   From Christian Maaser:
2172
2173   - Add support for Visual Studio Express Editions.
2174
2175   - Add support for Visual Studio 8 *.manifest files, includng
2176     new $WINDOWS_INSERT_MANIFEST, $WINDOWSPROGMANIFESTSUFFIX,
2177     $WINDOWSPROGMANIFESTPREFIX, $WINDOWSPROGMANIFESTSUFFIX,
2178     $WINDOWSSHLIBMANIFESTPREFIX and $WINDOWSSHLIBMANIFESTSUFFIX
2179     construction variables.
2180
2181   From Adam MacBeth:
2182
2183   - Fix detection of additional Java inner classes following use of a
2184     "new" keyword inside an inner class.
2185
2186   From Sanjoy Mahajan:
2187
2188   - Correct TeX-related command lines to just $SOURCE, not $SOURCES
2189
2190   From Patrick Mezard:
2191
2192   - Execute build commands for a command-line target if any of the
2193     files built along with the target is out of date or non-existent,
2194     not just if the command-line target itself is out of date.
2195
2196   - Fix the -n option when used with -c to print all of the targets
2197     that will be removed for a multi-target Builder call.
2198
2199   - If there's no file in the source directory, make sure there isn't
2200     one in the build directory, too, to avoid dangling files left
2201     over from previous runs when a source file is removed.
2202
2203   - Allow AppendUnique() and PrependUnique() to append strings (and
2204     other atomic objects) to lists.
2205
2206   From Joel B. Mohler:
2207
2208   - Extend latex.py, pdflatex.py, pdftex.py and tex.py so that building
2209     from both TeX and LaTeX files uses the same logic to call $BIBTEX
2210     when it's necessary, to call $MAKEINDEX when it's necessary, and to
2211     call $TEX or $LATEX multiple times to handle undefined references.
2212
2213   - Add an emitter to the various TeX builders so that the generated
2214     .aux and .log files also get deleted by the -c option.
2215
2216   From Leanid Nazdrynau:
2217
2218   - Fix the Qt UIC scanner to work with generated .ui files (by using
2219     the FindFile() function instead of checking by-hand for the file).
2220
2221   From Jan Nieuwenhuizen:
2222
2223   - Fix a problem with interpreting quoted argument lists on command lines.
2224
2225   From Greg Noel:
2226
2227   - Add /sw/bin to the default execution PATH on Mac OS X.
2228
2229   From Kian Win Ong:
2230
2231   - When building a .jar file and there is a $JARCHDIR, put the -C
2232     in front of each .class file on the command line.
2233
2234   - Recognize the Java 1.5 enum keyword.
2235
2236   From Asfand Yar Qazi:
2237
2238   - Add /opt/bin to the default execution PATH on all POSIX platforms
2239     (between /usr/local/bin and /bin).
2240
2241   From Jon Rafkind:
2242
2243   - Fix the use of Configure() contexts from nested subsidiary
2244     SConscript files.
2245
2246   From Christoph Schulz:
2247
2248   - Add support for $CONFIGUREDIR and $CONFIGURELOG variables to control
2249     the directory and logs for configuration tests.
2250
2251   - Add support for a $INSTALLSTR variable.
2252
2253   - Add support for $RANLIBCOM and $RANLIBCOMSTR variables (which fixes
2254     a bug when setting $ARCOMSTR).
2255
2256   From Amir Szekely:
2257
2258   - Add use of $CPPDEFINES to $RCCOM (resource file compilation) on MinGW.
2259
2260   From Erick Tryzelaar:
2261
2262   - Fix the error message when trying to report that a given option is
2263     not gettable/settable from an SConscript file.
2264
2265   From Dobes Vandermeer:
2266
2267   - Add support for SCC and other settings in Microsoft Visual
2268     Studio project and solution files:  $MSVS_PROJECT_BASE_PATH,
2269     $MSVS_PROJECT_GUID, $MSVS_SCC_AUX_PATH, $MSVS_SCC_LOCAL_PATH,
2270     $MSVS_SCC_PROJECT_NAME, $MSVS_SCC_PROVIDER,
2271
2272   - Add support for using a $SCONS_HOME variable (imported from the
2273     external environment, or settable internally) to put a shortened
2274     SCons execution line in the Visual Studio project file.
2275
2276   From David J. Van Maren:
2277
2278   - Only filter common prefixes from source files names in Visual Studio
2279     project files if the prefix is a complete (sub)directory name.
2280
2281   From Thad Ward:
2282
2283   - If $MSVSVERSIONS is already set, don't overwrite it with
2284     information from the registry.
2285
2286
2287
2288 RELEASE 0.96.91 - Thu, 08 Sep 2005 07:18:23 -0400
2289
2290   NOTE:  This was a pre-release of 0.97 for testing purposes.
2291
2292   From Chad Austin:
2293
2294   - Have the environment store the toolpath and re-use it to find Tools
2295     modules during later Copy() or Tool() calls (unless overridden).
2296
2297   - Normalize the directory path names in SConsignFile() database
2298     files so the same signature file can interoperate on Windows and
2299     non-Windows systems.
2300
2301   - Make --debug=stacktrace print a stacktrace when a UserError is thrown.
2302
2303   - Remove an old, erroneous cut-and-paste comment in Scanner/Dir.py.
2304
2305   From Stanislav Baranov:
2306
2307   - Make it possible to support with custom Alias (sub-)classes.
2308
2309   - Allow Builders to take empty source lists when called.
2310
2311   - Allow access to both TARGET and SOURCE in $*PATH expansions.
2312
2313   - Allow SConscript files to modify BUILD_TARGETS.
2314
2315   From Timothee Besset:
2316
2317   - Add support for Objective C/C++ .m and .mm file suffixes (for
2318     Mac OS X).
2319
2320   From Charles Crain
2321
2322   - Fix the PharLap linkloc.py module to use target+source arguments
2323     when calling env.subst().
2324
2325   From Bjorn Eriksson:
2326
2327   - Fix an incorrect Command() keyword argument in the man page.
2328
2329   - Add a $TEMPFILEPREFIX variable to control the prefix or flag used
2330     to pass a long-command-line-execution tempfile to a command.
2331
2332   From Steven Knight:
2333
2334   - Enhanced the SCons setup.py script to install man pages on
2335     UNIX/Linux systems.
2336
2337   - Add support for an Options.FormatOptionHelpText() method that can
2338     be overridden to customize the format of Options help text.
2339
2340   - Add a global name for the Entry class (which had already been
2341     documented).
2342
2343   - Fix re-scanning of generated source files for implicit dependencies
2344     when the -j option is used.
2345
2346   - Fix a dependency problem that caused $LIBS scans to not be added
2347     to all of the targets in a multiple-target builder call, which
2348     could cause out-of-order builds when the -j option is used.
2349
2350   - Store the paths of source files and dependencies in the .sconsign*
2351     file(s) relative to the target's directory, not relative to the
2352     top-level SConstruct directory.  This starts to make it possible to
2353     subdivide the dependency tree arbitrarily by putting an SConstruct
2354     file in every directory and using content signatures.
2355
2356   - Add support for $YACCHFILESUFFIX and $YACCHXXFILESUFFIX variables
2357     that accomodate parser generators that write header files to a
2358     different suffix than the hard-coded .hpp when the -d option is used.
2359
2360   - The default behavior is now to store signature information in a
2361     single .sconsign.dblite file in the top-level SConstruct directory.
2362     The old behavior of a separate .sconsign file in each directory can
2363     be specified by calling SConsignFile(None).
2364
2365   - Remove line number byte codes within the signature calculation
2366     of Python function actions, so that changing the location of an
2367     otherwise unmodified Python function doesn't cause rebuilds.
2368
2369   - Fix AddPreAction() and AddPostAction() when an action has more than
2370     one target file:  attach the actions to the Executor, not the Node.
2371
2372   - Allow the source directory of a BuildDir / build_dir to be outside
2373     of the top-level SConstruct directory tree.
2374
2375   - Add a --debug=nomemoizer option that disables the Memoizer for clearer
2376     looks at the counts and profiles of the underlying function calls,
2377     not the Memoizer wrappers.
2378
2379   - Print various --debug= stats even if we exit early (e.g. using -h).
2380
2381   - Really only use the cached content signature value if the file
2382     is older than --max-drift, not just if --max-drift is set.
2383
2384   - Remove support for conversion from old (pre 0.96) .sconsign formats.
2385
2386   - Add support for a --diskcheck option to enable or disable various
2387     on-disk checks:  that File and Dir nodes match on-disk entries;
2388     whether an RCS file exists for a missing source file; whether an
2389     SCCS file exists for a missing source file.
2390
2391   - Add a --raw argument to the sconsign script, so it can print a
2392     raw representation of each entry's NodeInfo dictionary.
2393
2394   - Add the 'f90' and 'f95' tools to the list of Fortran compilers
2395     searched for by default.
2396
2397   - Add the +Z option by default when compiling shared objects on
2398     HP-UX.
2399
2400   From Chen Lee:
2401
2402   - Handle Visual Studio project and solution files in Unicode.
2403
2404   From Sanjoy Mahajan:
2405
2406   - Fix a bad use of Copy() in an example in the man page, and a
2407     bad regular expression example in the man page and User's Guide.
2408
2409   From Shannon Mann:
2410
2411   - Have the Visual Studio project file(s) echo "Starting SCons" before
2412     executing SCons, mainly to work around a quote-stripping bug in
2413     (some versions of?) the Windows cmd command executor.
2414
2415   From Georg Mischler:
2416
2417   - Remove the space after the -o option when invoking the Borland
2418     BCC compiler; some versions apparently require that the file name
2419     argument be concatenated with the option.
2420
2421   From Leanid Nazdrynau:
2422
2423   - Fix the Java parser's handling of backslashes in strings.
2424
2425   From Greg Noel:
2426
2427   - Add construction variables to support frameworks on Mac OS X:
2428     $FRAMEWORKS, $FRAMEWORKPREFIX, $FRAMEWORKPATH, $FRAMEWORKPATHPREFIX.
2429
2430   - Re-order link lines so the -o option always comes right after the
2431     command name.
2432
2433   From Gary Oberbrunner:
2434
2435   - Add support for Intel C++ beta 9.0 (both 32 and 64 bit versions).
2436
2437   - Document the new $FRAMEWORK* variables for Mac OS X.
2438
2439   From Karol Pietrzak:
2440
2441   - Add $RPATH (-R) support to the Sun linker Tool (sunlink).
2442
2443   - Add a description of env.subst() to the man page.
2444
2445   From Chris Prince:
2446
2447   - Look in the right directory, not always the local directory, for a
2448     same-named file or directory conflict on disk.
2449
2450   - On Windows, preserve the external environment's %SYSTEMDRIVE%
2451     variable, too.
2452
2453   From Craig Scott:
2454
2455   - Have the Fortran module emitter look for Fortan modules to be created
2456     relative to $FORTRANMODDIR, not the top-level directory.
2457
2458   - When saving Options to a file, run default values through the
2459     converter before comparing them with the set values.  This correctly
2460     suppresses Boolean Option values from getting written to the saved
2461     file when they're one of the many synonyms for a default True or
2462     False value.
2463
2464   - Fix the Fortran Scanner's ability to handle a module being used
2465     in the same file in which it is defined.
2466
2467   From Steve-o:
2468
2469   - Add the -KPIC option by default when compiling shared objects on
2470     Solaris.
2471
2472   - Change the default suffix for Solaris objects to .o, to conform to
2473     Sun WorkShop's expectations.  Change the profix to so_ so they can
2474     still be differentiated from static objects in the same directory.
2475
2476   From Amir Szekely:
2477
2478   - When calling the resource compiler on MinGW, add --include-dir and
2479     the source directory so it finds the source file.
2480
2481   - Update EnsureSConsVersion() to support revision numbers.
2482
2483   From Greg Ward:
2484
2485   - Fix a misplaced line in the man page.
2486
2487
2488
2489 RELEASE 0.96.90 - Tue, 15 Feb 2005 21:21:12 +0000
2490
2491   NOTE:  This was a pre-release of 0.97 for testing purposes.
2492
2493   From Anonymous:
2494
2495   - Fix Java parsing to avoid erroneously identifying a new array
2496     of class instances as an anonymous inner class.
2497
2498   - Fix a typo in the man page description of PathIsDirCreate.
2499
2500   From Chad Austin:
2501
2502   - Allow Help() to be called multiple times, appending to the help
2503     text each call.
2504
2505   - Allow Tools found on a toolpath to import Python modules from
2506     their local directory.
2507
2508   From Steve Christensen:
2509
2510   - Handle exceptions from Python functions as build actions.
2511
2512   - Add a set of canned PathOption validators:  PathExists (the default),
2513     PathIsFile, PathIsDir and PathIsDirCreate.
2514
2515   From Matthew Doar:
2516
2517   - Add support for .lex and .yacc file suffixes for Lex and Yacc files.
2518
2519   From Eric Frias:
2520
2521   - Huge performance improvement:  wrap the tuples representing an
2522     include path in an object, so that the time it takes to hash the
2523     path doesn't grow porportionally to the length of the path.
2524
2525   From Gottfried Ganssauge:
2526
2527   - Fix SCons on SuSE/AMD-64 Linux by having the wrapper script also
2528     check for the build engine in the parent directory of the Python
2529     library directory (/usr/lib64 instead of /usr/lib).
2530
2531   From Stephen Kennedy:
2532
2533   - Speed up writing the .sconsign file at the end of a run by only
2534     calling sync() once at the end, not after every entry.
2535
2536   From Steven Knight:
2537
2538   - When compiling with Microsoft Visual Studio, don't include the ATL and
2539     MFC directories in the default INCLUDE and LIB environment variables.
2540
2541   - Remove the following deprecated features:  the ParseConfig()
2542     global function (deprecated in 0.93); the misspelled "validater"
2543     keyword to the Options.Add() method (deprecated in 0.91); the
2544     SetBuildSignatureType(), SetContentSignatureType(), SetJobs() and
2545     GetJobs() global functions (deprecated in 0.14).
2546
2547   - Fix problems with corrupting the .sconsign.dblite file when
2548     interrupting builds by writing to a temporary file and renaming,
2549     not writing the file directly.
2550
2551   - Fix a 0.96 regression where when running with -k, targets built from
2552     walking dependencies later on the command line would not realize
2553     that a dependency had failed an earlier build attempt, and would
2554     try to rebuild the dependent targets.
2555
2556   - Change the final messages when using -k and errors occur from
2557     "{building,cleaning} terminated because of errors" to "done
2558     {building,cleaning} targets (errors occurred during {build,clean})."
2559
2560   - Allow Configure.CheckFunc() to take an optional header argument
2561     (already supported by Conftest.py) to specify text at the top of
2562     the compiled test file.
2563
2564   - Fix the --debug=explain output when a Python function action changed
2565     so it prints a meaningful string, not the binary representation of
2566     the function contents.
2567
2568   - Allow a ListOption's default value(s) to be a Python list of specified
2569     values, not just a string containing a comma-separated list of names.
2570
2571   - Add a ParseDepends() function that will parse up a list of explicit
2572     dependencies from a "make depend" style file.
2573
2574   - Support the ability to change directory when executing an Action
2575     through "chdir" keyword arguments to Action and Builder creation
2576     and calls.
2577
2578   - Fix handling of Action ojects (and other callables that don't match
2579     our calling arguments) in construction variable expansions.
2580
2581   - On Win32, install scons.bat in the Python directory when installing
2582     from setup.py.  (The bdist_wininst installer was already doing this.)
2583
2584   - Fix env.SConscript() when called with a list of SConscipt files.
2585     (The SConscript() global function already worked properly.)
2586
2587   - Add a missing newline to the end of the --debug=explain "unknown
2588     reasons" message.
2589
2590   - Enhance ParseConfig() to work properly for spaces in between the -I,
2591     -L and -l options and their arguments.
2592
2593   - Packaging build fix:  Rebuild the files that are use to report the
2594     --version of SCons whenever the development version number changes.
2595
2596   - Fix the ability to specify a target_factory of Dir() to a Builder,
2597     which the default create-a-directory Builder was interfering with.
2598
2599   - Mark a directory as built if it's created as part of the preparation
2600     for another target, to avoid trying to build it again when it comes
2601     up in the target list.
2602
2603   - Allow a function with the right calling signature to be put directly
2604     in an Environment's BUILDERS dictionary, making for easier creation
2605     and use of wrappers (pseudo-Builders) that call other Builders.
2606
2607   - On Python 2.x, wrap lists of Nodes returned by Builders in a UserList
2608     object that adds a method that makes str() object return a string
2609     with all of the Nodes expanded to their path names.  (Builders under
2610     Python 1.5.2 still return lists to avoid TypeErrors when trying
2611     to extend() list, so Python 1.5.2 doesn't get pretty-printing of Node
2612     lists, but everything should still function.)
2613
2614   - Allow Aliases to have actions that will be executed whenever
2615     any of the expanded Alias targets are out of date.
2616
2617   - Fix expansion of env.Command() overrides within target and
2618     source file names.
2619
2620   - Support easier customization of what's displayed by various default
2621     actions by adding lots of new construction variables: $ARCOMSTR,
2622     $ASCOMSTR, $ASPPCOMSTR, $BIBTEXCOMSTR, $BITKEEPERCOMSTR, $CCCOMSTR,
2623     $CVSCOMSTR, $CXXCOMSTR, $DCOMSTR, $DVIPDFCOMSTR, $F77COMSTR,
2624     $F90COMSTR, $F95COMSTR, $FORTRANCOMSTR, $GSCOMSTR, $JARCOMSTR,
2625     $JAVACCOMSTR, $JAVAHCOMSTR, $LATEXCOMSTR, $LEXCOMSTR, $LINKCOMSTR,
2626     $M4COMSTR, $MIDLCOMSTR, $P4COMSTR, $PCHCOMSTR, $PDFLATEXCOMSTR,
2627     $PDFTEXCOMSTR, $PSCOMSTR, $QT_MOCFROMCXXCOMSTR, $QT_MOCFROMHCOMSTR,
2628     $QT_UICCOMSTR, $RCCOMSTR, $REGSVRCOMSTR, $RCS_COCOMSTR, $RMICCOMSTR,
2629     $SCCSCOMSTR, $SHCCCOMSTR, $SHCXXCOMSTR, $SHF77COMSTR, $SHF90COMSTR,
2630     $SHF95COMSTR, $SHFORTRANCOMSTR, $SHLINKCOMSTR, $SWIGCOMSTR,
2631     $TARCOMSTR, $TEXCOMSTR, $YACCCOMSTR and $ZIPCOMSTR.
2632
2633   - Add an optional "map" keyword argument to ListOption() that takes a
2634     dictionary to map user-specified values to legal values from the list
2635     (like EnumOption() already doee).
2636
2637   - Add specific exceptions to try:-except: blocks without any listed,
2638     so that they won't catch and mask keyboard interrupts.
2639
2640   - Make --debug={tree,dtree,stree} print something even when there's
2641     a build failure.
2642
2643   - Fix how Scanners sort the found dependencies so that it doesn't
2644     matter whether the dependency file is in a Repository or not.
2645     This may cause recompilations upon upgrade to this version.
2646
2647   - Make AlwaysBuild() work with Alias and Python value Nodes (making
2648     it much simpler to support aliases like "clean" that just invoke
2649     an arbitrary action).
2650
2651   - Have env.ParseConfig() use AppendUnique() by default to suppress
2652     duplicate entries from multiple calls.  Add a "unique" keyword
2653     argument to allow the old behavior to be specified.
2654
2655   - Allow the library modules imported by an SConscript file to get at
2656     all of the normally-available global functions and variables by saying
2657     "from SCons.Script import *".
2658
2659   - Add a --debug=memoizer option to print Memoizer hit/mass statistics.
2660
2661   - Allow more than one --debug= option to be set at a time.
2662
2663   - Change --debug=count to report object counts before and after
2664     reading SConscript files and before and after building targets.
2665
2666   - Change --debug=memory output to line up the numbers and to better
2667     match (more or less) the headers on the --debug=count columns.
2668
2669   - Speed things up when there are lists of targets and/or sources by
2670     getting rid of some N^2 walks of the lists involved.
2671
2672   - Cache evaluation of LazyActions so we don't create a new object
2673     for each invocation.
2674
2675   - When scanning, don't create Nodes for include files that don't
2676     actually exist on disk.
2677
2678   - Make supported global variables CScanner, DScanner, ProgramScanner and
2679     SourceFileScanner.  Make SourceFileScanner.add_scanner() a supported
2680     part of the public interface.  Keep the old SCons.Defaults.*Scan names
2681     around for a while longer since some people were already using them.
2682
2683   - By default, don't scan directories for on-disk files.  Add a
2684     DirScanner global scanner that can be used in Builders or Command()
2685     calls that want source directory trees scanned for on-disk changes.
2686     Have the Tar() and Zip() Builders use the new DirScanner to preserve
2687     the behavior of rebuilding a .tar or .zip file if any file or
2688     directory under a source tree changes.  Add Command() support for
2689     a source_scanner keyword argument to Command() that can be set to
2690     DirScanner to get this behavior.
2691
2692   - Documentation changes:  Explain that $CXXFLAGS contains $CCFLAGS
2693     by default.  Fix a bad target_factory example in the man page.
2694     Add appendices to the User's Guide to cover the available Tools,
2695     Builders and construction variables.  Comment out the build of
2696     the old Python 10 paper, which doesn't build on all systems and
2697     is old enough at this point that it probably isn't worth the
2698     effort to make it do so.
2699
2700   From Wayne Lee:
2701
2702   - Avoid "maximum recursion limit" errors when removing $(-$) pairs
2703     from long command lines.
2704
2705   From Clive Levinson:
2706
2707   - Make ParseConfig() recognize and add -mno-cygwin to $LINKFLAGS and
2708     $CCFLAGS, and -mwindows to $LINKFLAGS.
2709
2710   From Michael McCracken:
2711
2712   - Add a new "applelink" tool to handle the things like Frameworks and
2713     bundles that Apple has added to gcc for linking.
2714
2715   - Use more appropriate default search lists of linkers, compilers and
2716     and other tools for the 'darwin' platform.
2717
2718   - Add a LoadableModule Builder that builds a bundle on Mac OS X (Darwin)
2719     and a shared library on other systems.
2720
2721   - Improve SWIG tests for use on Mac OS X (Darwin).
2722
2723   From Elliot Murphy:
2724
2725   - Enhance the tests to guarantee persistence of ListOption
2726     values in saved options files.
2727
2728   - Supply the help text when -h is used with the -u, -U or -D options.
2729
2730   From Christian Neeb:
2731
2732   - Fix the Java parser's handling of string definitions to avoid ignoring
2733     subsequent code.
2734
2735   From Han-Wen Nienhuys:
2736
2737   - Optimize variable expansion by:  using the re.sub() method (when
2738     possible); not using "eval" for variables for which we can fetch the
2739     value directory; avoiding slowing substitution logic when there's no
2740     '$' in the string.
2741
2742   From Gary Oberbrunner:
2743
2744   - Add an Environment.Dump() method to print the contents of a
2745     construction environment.
2746
2747   - Allow $LIBS (and similar variables) to contain explicit File Nodes.
2748
2749   - Change ParseConfig to add the found library names directly to the
2750     $LIBS variable, instead of returning them.
2751
2752   - Add ParseConfig() support for the -framework GNU linker option.
2753
2754   - Add a PRINT_CMD_LINE_FUNC construction variable to allow people
2755     to filter (or log) command-line output.
2756
2757   - Print an internal Python stack trace in response to an otherwise
2758     unexplained error when --debug=stacktrace is specified.
2759
2760   - Add a --debug=findlibs option to print what's happening when
2761     the scanner is searching for libraries.
2762
2763   - Allow Tool specifications to be passed a dictionary of keyword
2764     arguments.
2765
2766   - Support an Options default value of None, in which case the variable
2767     will not be added to the construction environment unless it's set
2768     explicitly by the user or from an Options file.
2769
2770   - Avoid copying __builtin__ values into a construction environment's
2771     dictionary when evaluating construction variables.
2772
2773   - Add a new cross-platform intelc.py Tool that can detect and
2774     configure the Intel C++ v8 compiler on both Windows, where it's
2775     named icl, and Linux, where it's named icc.  It also checks that
2776     the directory specified in the Windows registry exists, and sets a
2777     new $INTEL_C_COMPILER_VERSION construction variable to identify the
2778     version being used.  (Niall Douglas contributed an early prototype
2779     of parts of this module.)
2780
2781   - Fix the private Conftest._Have() function so it doesn't change
2782     non-alphanumeric characters to underscores.
2783
2784   - Supply a better error message when a construction variable expansion
2785     has an unknown attribute.
2786
2787   - Documentation changes:  Update the man page to describe use of
2788     filenames or Nodes in $LIBS.
2789
2790   From Chris Pawling:
2791
2792   - Have the linkloc tool use $MSVS_VERSION to select the Microsoft
2793     Visual Studio version to use.
2794
2795   From Kevin Quick:
2796
2797   - Fix the Builder name returned from ListBuilders and other instances
2798     of subclasses of the BuilderBase class.
2799
2800   - Add Builders and construction variables to support rpcgen:
2801     RPCGenClient(), RPCGenHeader(), RPCGenService(), RPCGenXDR(),
2802     $RPCGEN, $RPCGENFLAGS, $RPCGENCLIENTFLAGS, $RPCGENHEADERFLAGS,
2803     $RPCGENSERVICEFLAGS, $RPCGENXDRFLAGS.
2804
2805   - Update the man page to document that prefix and suffix Builder
2806     keyword arguments can be strings, callables or dictionaries.
2807
2808   - Provide more info in the error message when a user tries to build
2809     a target multiple ways.
2810
2811   - Fix Delete() when a file doesn't exist and must_exist=1.  (We were
2812     unintentionally dependent on a bug in versions of the Python shutil.py
2813     module prior to Python 2.3, which would generate an exception for
2814     a nonexistent file even when ignore_errors was set.)
2815
2816   - Only replace a Node's builder with a non-null source builder.
2817
2818   - Fix a stack trace when a suffix selection dictionary is passed
2819     an empty source file list.
2820
2821   - Allow optional names to be attached to Builders, for default
2822     Builders that don't get attached to construction environments.
2823
2824   - Fix problems with Parallel Task Exception handling.
2825
2826   - Build targets in an associated BuildDir even if there are targets
2827     or subdirectories locally in the source directory.
2828
2829   - If a FunctionAction has a callable class as its underlying Python
2830     function, use its strfunction() method (if any) to display the
2831     action.
2832
2833   - Fix handling when BuildDir() exists but is unwriteable.  Add
2834     "Stop." to those error messages for consistency.
2835
2836   - Catch incidents of bad builder creation (without an action) and
2837     supply meaningful error messages.
2838
2839   - Fix handling of src_suffix values that aren't extensions (don't
2840     begin with a '.').
2841
2842   - Don't retrieve files from a CacheDir, but report what would happen,
2843     when the -n option is used.
2844
2845   - Use the source_scanner from the target Node, not the source node
2846     itself.
2847
2848   - Internal Scanners fixes:  Make sure Scanners are only passed Nodes.
2849     Fix how a Scanner.Selector called its base class initialization.
2850     Make comparisons of Scanner objects more robust.  Add a name to
2851     an internal default ObjSourceScanner.
2852
2853   - Add a deprecated warning for use of the old "scanner" keyword argument
2854     to Builder creation.
2855
2856   - Improve the --debug=explain message when the build action changes.
2857
2858   - Test enhancements in SourceCode.py, option-n.py, midl.py.  Better
2859     Command() and Scanner test coverage.  Improved test infrastructure
2860     for -c output.
2861
2862   - Refactor the interface between Action and Executor objects to treat
2863     Actions atomically.
2864
2865   - The --debug=presub option will now report the pre-substitution
2866     each action seprately, instead of reporting the entire list before
2867     executing the actions one by one.
2868
2869   - The --debug=explain option explaining a changed action will now
2870     (more correctly) show pre-substitution action strings, instead of
2871     the commands with substituted file names.
2872
2873   - A Node (file) will now be rebuilt if its PreAction or PostAction
2874     actions change.
2875
2876   - Python Function actions now have their calling signature (target,
2877     source, env) reported correctly when displayed.
2878
2879   - Fix BuildDir()/build_dir handling when the build_dir is underneath
2880     the source directory and trying to use entries from the build_dir
2881     as sources for other targets in the build-dir.
2882
2883   - Fix hard-coding of JDK path names in various Java tests.
2884
2885   - Handle Python stack traces consistently (stop at the SConscript stack
2886     frame, by default) even if the Python source code isn't available.
2887
2888   - Improve the performance of the --debug={tree,dtree} options.
2889
2890   - Add --debug=objects logging of creation of OverrideWarner,
2891     EnvironmentCopy and EnvironmentOverride objects.
2892
2893   - Fix command-line expansion of Python Value Nodes.
2894
2895   - Internal cleanups:  Remove an unnecessary scan argument.  Associate
2896     Scanners only with Builders, not nodes.  Apply overrides once when
2897     a Builder is called, not in multiple places.  Cache results from the
2898     Node.FS.get_suffix() and Node.get_build_env() methods.  Use the Python
2899     md5 modules' hexdigest() method, if there is one.  Have Taskmaster
2900     call get_stat() once for each Node and re-use the value instead of
2901     calling it each time it needs the value.  Have Node.depends_on()
2902     re-use the list from the children() method instead of calling it
2903     multiple times.
2904
2905   - Use the correct scanner if the same source file is used for targets in
2906     two different environments with the same path but different scanners.
2907
2908   - Collect logic for caching values in memory in a Memoizer class,
2909     which cleans up a lot of special-case code in various methods and
2910     caches additional values to speed up most configurations.
2911
2912   - Add a PathAccept validator to the list of new canned PathOption
2913     validators.
2914
2915   From Jeff Squyres:
2916
2917   - Documentation changes:  Use $CPPDEFINES instead of $CCFLAGS in man
2918     page examples.
2919
2920   From Levi Stephen:
2921
2922   - Allow $JARCHDIR to be expanded to other construction variables.
2923
2924   From Christoph Wiedemann:
2925
2926   - Add an Environment.SetDefault() method that only sets values if
2927     they aren't already set.
2928
2929   - Have the qt.py Tool not override variables already set by the user.
2930
2931   - Add separate $QT_BINPATH, $QT_CPPPATH and $QT_LIBPATH variables
2932     so these can be set individually, instead of being hard-wired
2933     relative to $QTDIR.
2934
2935   - The %TEMP% and %TMP% external environment variables are now propagated
2936     automatically to the command execution environment on Windows systems.
2937
2938   - A new --config= command-line option allows explicit control of
2939     of when the Configure() tests are run:  --config=force forces all
2940     checks to be run, --config=cache uses all previously cached values,
2941     --config=auto (the default) runs tests only when dependency analysis
2942     determines it's necessary.
2943
2944   - The Configure() subsystem can now write a config.h file with values
2945     like HAVE_STDIO_H, HAVE_LIBM, etc.
2946
2947   - The Configure() subsystem now executes its checks silently when the
2948     -Q option is specified.
2949
2950   - The Configure() subsystem now reports if a test result is being
2951     taken from cache, and prints the standard output and error output
2952     of tests even when cached.
2953
2954   - Configure() test results are now reported as "yes" or "no" instead of
2955     "ok" or "failed."
2956
2957   - Fixed traceback printing when calling the env.Configure() method
2958     instead of the Configure() global function.
2959
2960   - The Configure() subsystem now caches build failures in a .sconsign
2961     file in the subdirectory, not a .cache file.  This may cause
2962     tests to be re-executed the first time after you install 0.97.
2963
2964   - Additional significant internal cleanups in the Configure() subsystem
2965     and its tests.
2966
2967   - Have the Qt Builder make uic-generated files dependent on the .ui.h
2968     file, if one exists.
2969
2970   - Add a test to make sure that SCons source code does not contain
2971     try:-except: blocks that catch all errors, which potentially catch
2972     and mask keyboard interrupts.
2973
2974   - Fix us of TargetSignatures('content') with the SConf subsystem.
2975
2976   From Russell Yanofsky:
2977
2978   - Add support for the Metrowerks Codewarrior compiler and linker
2979     (mwcc and mwld).
2980
2981
2982
2983 RELEASE 0.96.1 - Mon, 23 Aug 2004 12:55:50 +0000
2984
2985   From Craig Bachelor:
2986
2987   - Handle white space in the executable Python path name within in MSVS
2988     project files by quoting the path.
2989
2990   - Correct the format of a GUID string in a solution (.dsw) file so
2991     MSVS can correctly "build enable" a project.
2992
2993   From Steven Knight:
2994
2995   - Add a must_exist flag to Delete() to let the user control whether
2996     it's an error if the specified entry doesn't exist.  The default
2997     behavior is now to silently do nothing if it doesn't exist.
2998
2999   - Package up the new Platform/darwin.py, mistakenly left out of 0.96.
3000
3001   - Make the scons.bat REM statements into @REM so they aren't printed.
3002
3003   - Make the SCons packaging SConscript files platform independent.
3004
3005   From Anthony Roach:
3006
3007   - Fix scanning of pre-compiled header (.pch) files for #includes,
3008     broken in 0.96.
3009
3010
3011
3012 RELEASE 0.96 - Wed, 18 Aug 2004 13:36:40 +0000
3013
3014   From Chad Austin:
3015
3016   - Make the CacheDir() directory if it doesn't already exist.
3017
3018   - Allow construction variable substitutions in $LIBS specifications.
3019
3020   - Allow the emitter argument to a Builder() to be or expand to a list
3021     of emitter functions, which will be called in sequence.
3022
3023   - Suppress null values in construction variables like $LIBS that use
3024     the internal _concat() function.
3025
3026   - Remove .dll files from the construction variables searched for
3027     libraries that can be fed to Win32 compilers.
3028
3029   From Chad Austin and Christoph Wiedemann:
3030
3031   - Add support for a $RPATH variable to supply a list of directories
3032     to search for shared libraries when linking a program.  Used by
3033     the GNU and IRIX linkers (gnulink and sgilink).
3034
3035   From Charles Crain:
3036
3037   - Restore the ability to do construction variable substitutions in all
3038     kinds of *PATH variables, even when the substitution returns a Node
3039     or other object.
3040
3041   From Tom Epperly:
3042
3043   - Allow the Java() Builder to take more than one source directory.
3044
3045   From Ralf W. Grosse-Kunstleve:
3046
3047   - Have SConsignFile() use, by default, a custom "dblite.py" that we can
3048     control and guarantee to work on all Python versions (or nearly so).
3049
3050   From Jonathan Gurley:
3051
3052   - Add support for the newer "ifort" versions of the Intel Fortran
3053     Compiler for Linux.
3054
3055   From Bob Halley:
3056
3057   - Make the new *FLAGS variable type work with copied Environments.
3058
3059   From Chris Hoeppler:
3060
3061   - Initialize the name of a Scanner.Classic scanner correctly.
3062
3063   From James Juhasz:
3064
3065   - Add support for the .dylib shared library suffix and the -dynamiclib
3066     linker option on Mac OS X.
3067
3068   From Steven Knight:
3069
3070   - Add an Execute() method for executing actions directly.
3071
3072   - Support passing environment override keyword arguments to Command().
3073
3074   - Fix use of $MSVS_IGNORE_IDE_PATHS, which was broken when we added
3075     support for $MSVS_USE_MFC_DIRS last release.
3076
3077   - Make env.Append() and env.Prepend() act like the underlying Python
3078     behavior when the variable being appended to is a UserList object.
3079
3080   - Fix a regression that prevented the Command() global function in
3081     0.95 from working with command-line strings as actions.
3082
3083   - Fix checking out a file from a source code management system when
3084     the env.SourceCode() method was called with an individual file name
3085     or node, not a directory name or node.
3086
3087   - Enhance the Task.make_ready() method to create a list of the
3088     out-of-date Nodes for the task for use by the wrapping interface.
3089
3090   - Allow Scanners to pull the list of suffixes from the construction
3091     environment when the "skeys" keyword argument is a string containing
3092     a construction variable to be expanded.
3093
3094   - Support new $CPPSUFFIXES, $DSUFFIXES $FORTRANSUFFIXES, and
3095     $IDLSUFFIXES.  construction variables that contain the default list
3096     of suffixes to be scanned by a given type of scanner, allowing these
3097     suffix lists to be easily added to or overridden.
3098
3099   - Speed up Node creation when calling a Builder by comparing whether two
3100     Environments are the same object, not if their underlying dictionaries
3101     are equivalent.
3102
3103   - Add a --debug=explain option that reports the reason(s) why SCons
3104     thinks it must rebuild something.
3105
3106   - Add support for functions that return platform-independent Actions
3107     to Chmod(), Copy(), Delete(), Mkdir(), Move() and Touch() files
3108     and/or directories.  Like any other Actions, the returned Action
3109     object may be executed directly using the Execute() global function
3110     or env.Execute() environment method, or may be used as a Builder
3111     action or in an env.Command() action list.
3112
3113   - Add support for the strfunction argument to all types of Actions:
3114     CommandAction, ListAction, and CommandGeneratorAction.
3115
3116   - Speed up turning file system Nodes into strings by caching the
3117     values after we're finished reading the SConscript files.
3118
3119   - Have ParseConfig() recognize and supporting adding the -Wa, -Wl,
3120     and -Wp, flags to ASFLAGS, LINKFLAGS and CPPFLAGS, respectively.
3121
3122   - Change the .sconsign format and the checks for whether a Node is
3123     up-to-date to make dependency checks more efficient and correct.
3124
3125   - Add wrapper Actions to SCons.Defaults for $ASCOM, $ASPPCOM, $LINKCOM,
3126     $SHLINKCOM, $ARCOM, $LEXCOM and $YACCCOM.  This makes it possible
3127     to replace the default print behavior with a custom strfunction()
3128     for each of these.
3129
3130   - When a Node has been built, don't walk the whole tree back to delete
3131     the parents's implicit dependencies, let returning up the normal
3132     Taskmaster descent take care of it for us.
3133
3134   - Add documented support for separate target_scanner and source_scanner
3135     arguments to Builder creation, which allows different scanners to
3136     be applied to source files
3137
3138   - Don't re-install or (re-generate) .h files when a subsidiary #included
3139     .h file changes.  This eliminates incorrect circular dependencies
3140     with .h files generated from other source files.
3141
3142   - Slim down the internal Sig.Calculator class by eliminating methods
3143     whose functionality is now covered by Node methods.
3144
3145   - Document use of the target_factory and source_factory keyword
3146     arguments when creating Builder objects.  Enhance Dir Nodes so that
3147     they can be created with user-specified Builder objects.
3148
3149   - Don't blow up with stack trace when the external $PATH environment
3150     variable isn't set.
3151
3152   - Make Builder calls return lists all the time, even if there's only
3153     one target.  This keeps things consistent and easier to program to
3154     across platforms.
3155
3156   - Add a Flatten() function to make it easier to deal with the Builders
3157     all returning lists of targets, not individual targets.
3158
3159   - Performance optimizations in Node.FS.__doLookup().
3160
3161   - Man page fixes:  formatting typos, misspellings, bad example.
3162
3163   - User's Guide fixes: Fix the signatures of the various example
3164     *Options() calls.  Triple-quote properly a multi-line Split example.
3165
3166   - User's Guide additions:  Chapter describing File and Directory
3167     Nodes.  Section describing declarative nature of SCons functions in
3168     SConscript files.  Better organization and clarification of points
3169     raised by Robert P. J. Day.  Chapter describing SConf (Autoconf-like)
3170     functionality.  Chapter describing how to install Python and
3171     SCons.  Chapter describing Java builds.
3172
3173   From Chris Murray:
3174
3175   - Add a .win32 attribute to force file names to expand with
3176     Windows backslash path separators.
3177
3178   - Fix escaping file names on command lines when the expansion is
3179     concatenated with another string.
3180
3181   - Add support for Fortran 90 and Fortran 95.  This adds $FORTRAN*
3182     variables that specify a default compiler, command-line, flags,
3183     etc. for all Fortran versions, plus separate $F90* and $F95*
3184     variables for when different compilers/flags/etc. must be specified
3185     for different Fortran versions.
3186
3187   - Have individual tools that create libraries override the default
3188     $LIBPREFIX and $LIBSUFFIX values set by the platform.  This makes
3189     it easier to use Microsoft Visual Studio tools on a CygWin platform.
3190
3191   From Gary Oberbrunner:
3192
3193   - Add a --debug=presub option to print actions prior to substitution.
3194
3195   - Add a warning upon use of the override keywords "targets" and
3196     "sources" when calling Builders.  These are usually mistakes which
3197     are otherwise silently (and confusingly) turned into construction
3198     variable overrides.
3199
3200   - Try to find the ICL license file path name in the external environment
3201     and the registry before resorting to the hard-coded path name.
3202
3203   - Add support for fetching command-line keyword=value arguments in
3204     order from an ARGLIST list.
3205
3206   - Avoid stack traces when trying to read dangling symlinks.
3207
3208   - Treat file "extensions" that only contain digits as part of the
3209     file basename.  This supports version numbers as part of shared
3210     library names, for example.
3211
3212   - Avoid problems when there are null entries (None or '') in tool
3213     lists or CPPPATH.
3214
3215   - Add an example and explanation of how to use "tools = ['default', ..."
3216     when creating a construction environment.
3217
3218   - Add a section describing File and Directory Nodes and some of their
3219     attributes and methods.
3220
3221   - Have ParseConfig() add a returned -pthread flag to both $CCFLAGS
3222     and $LINKFLAGS.
3223
3224   - Fix some test portability issues on Mac OS X (darwin).
3225
3226   From Simon Perkins:
3227
3228   - Fix a bug introduced in building shared libraries under MinGW.
3229
3230   From Kevin Quick:
3231
3232   - Handling SCons exceptions according to Pythonic standards.
3233
3234   - Fix test/chained-build.py on systems that execute within one second.
3235
3236   - Fix tests on systems where 'ar' warns about archive creation.
3237
3238   From Anthony Roach:
3239
3240   - Fix use of the --implicit-cache option with timestamp signatures.
3241
3242   - If Visual Studio is installed, assume the C/C++ compiler, the linker
3243     and the MIDL compiler that comes with it are available, too.
3244
3245   - Better error messages when evaluating a construction variable
3246     expansion yields a Python syntax error.
3247
3248   - Change the generation of PDB files when using Visual Studio from
3249     compile time to link time.
3250
3251   From sam th:
3252
3253   - Allow SConf.CheckLib() to search a list of libraries, like the
3254     Autoconf AC_SEARCH_LIBS macro.
3255
3256   - Allow the env.WhereIs() method to take a "reject" argument to
3257     let it weed out specific path names.
3258
3259   From Christoph Wiedemann:
3260
3261   - Add new Moc() and Uic() Builders for more explicit control over
3262     Qt builds, plus new construction variables to control them:
3263     $QT_AUTOSCAN, $QT_DEBUG, $QT_MOCCXXPREFIX, $QT_MOCCXXSUFFIX,
3264     $QT_MOCHPREFIX, $QT_MOCHSUFFIX, $QT_UICDECLPREFIX, $QT_UICDECLSUFFIX,
3265     $QT_UICIMPLPREFIX, $QT_UICIMPLSUFFIX and $QT_UISUFFIX.
3266
3267   - Add a new single_source keyword argument for Builders that enforces
3268     a single source file on calls to the Builder.
3269
3270
3271
3272 RELEASE 0.95 - Mon, 08 Mar 2004 06:43:20 -0600
3273
3274   From Chad Austin:
3275
3276   - Replace print statements with calls to sys.stdout.write() so output
3277     lines stay together when -j is used.
3278
3279   - Add portability fixes for a number of tests.
3280
3281   - Accomodate the fact that Cygwin's os.path.normcase() lies about
3282     the underlying system being case-sensitive.
3283
3284   - Fix an incorrect _concat() call in the $RCINCFLAGS definition for
3285     the mingw Tool.
3286
3287   - Fix a problem with the msvc tool with Python versions prior to 2.3.
3288
3289   - Add support for a "toolpath" Tool() and Environment keyword that
3290     allows Tool modules to be found in specified local directories.
3291
3292   - Work around Cygwin Python's silly fiction that it's using a
3293     case-sensitive file system.
3294
3295   - More robust handling of data in VCComponents.dat.
3296
3297   - If the "env" command is available, spawn commands with the more
3298     general "env -" instead of "env -i".
3299
3300   From Kerim Borchaev:
3301
3302   - Fix a typo in a msvc.py's registry lookup:  "VCComponents.dat", not
3303     "VSComponents.dat".
3304
3305   From Chris Burghart:
3306
3307   - Fix the ability to save/restore a PackageOption to a file.
3308
3309   From Steve Christensen:
3310
3311   - Update the MSVS .NET and MSVC 6.0/7.0 path detection.
3312
3313   From David M. Cooke:
3314
3315   - Make the Fortran scanner case-insensitive for the INCLUDE string.
3316
3317   From Charles Crain:
3318
3319   - If no version of MSVC is detected but the tool is specified,
3320     use the MSVC 6.0 paths by default.
3321
3322   - Ignore any "6.1" version of MSVC found in the registry; this is a
3323     phony version number (created by later service packs?) and would
3324     throw off the logic if the user had any non-default paths configure.
3325
3326   - Correctly detect if the user has independently configured the MSVC
3327     "include," "lib" or "path" in the registry and use the appropriate
3328     values.  Previously, SCons would only use the values if all three
3329     were set in the registry.
3330
3331   - Make sure side-effect nodes are prepare()d before building their
3332     corresponding target.
3333
3334   - Preserve the ability to call BuildDir() multiple times with the
3335     same target and source directory arguments.
3336
3337   From Andy Friesen:
3338
3339   - Add support for the Digital Mars "D" programming language.
3340
3341   From Scott Lystig Fritchie:
3342
3343   - Fix the ability to use a custom _concat() function in the
3344     construction environment when calling _stripixes().
3345
3346   - Make the message about ignoring a missing SConscript file into a
3347     suppressable Warning, not a hard-coded sys.stderr.write().
3348
3349   - If a builder can be called multiple times for a target (because
3350     the sources and overrides are identical, or it's a builder with the
3351     "multi" flag set), allow the builder to be called through multiple
3352     environments so long as the builders have the same signature for
3353     the environments in questions (that is, they're the same action).
3354
3355   From Bob Halley:
3356
3357   - When multiple targets are built by a single action, retrieve all
3358     of them from cache, not just the first target, and exec the build
3359     command if any of the targets isn't present in the cache.
3360
3361   From Zephaniah Hull:
3362
3363   - Fix command-line ARGUMENTS with multiple = in them.
3364
3365   From Steven Knight:
3366
3367   - Fix EnsureSConsVersion() so it checks against the SCons version,
3368     not the Python version, on Pythons with sys.version_info.
3369
3370   - Don't swallow the AttributeError when someone uses an expansion like
3371     $TARGET.bak, so we can supply a more informative error message.
3372
3373   - Fix an odd double-quote escape sequence in the man page.
3374
3375   - Fix looking up a naked drive letter as a directory (Dir('C:')).
3376
3377   - Support using File nodes in the LIBS construction variable.
3378
3379   - Allow the LIBS construction variable to be a single string or File
3380     node, not a list, when only one library is needed.
3381
3382   - Fix typos in the man page:  JAVACHDIR => JARCHDIR; add "for_signature"
3383     to the __call__() example in the "Variable Substitution" section.
3384
3385   - Correct error message spellings of "non-existant" to "non-existent."
3386
3387   - When scanning for libraries to link with, don't append $LIBPREFIXES
3388     or $LIBSUFFIXES values to the $LIBS values if they're already present.
3389
3390   - Add a ZIPCOMPRESSION construction variable to control whether the
3391     internal Python action for the Zip Builder compresses the file or
3392     not.  The default value is zipfile.ZIP_DEFLATED, which generates
3393     a compressed file.
3394
3395   - Refactor construction variable expansion to support recursive
3396     expansion of variables (e.g. CCFLAGS = "$CCFLAGS -g") without going
3397     into an infinite loop.  Support this in all construction variable
3398     overrides, as well as when copying Environments.
3399
3400   - Fix calling Configure() from more than one subsidiary SConscript file.
3401
3402   - Fix the env.Action() method so it returns the correct type of
3403     Action for its argument(s).
3404
3405   - Fix specifying .class files as input to JavaH with the .class suffix
3406     when they weren't generated using the Java Builder.
3407
3408   - Make the check for whether all of the objects going into a
3409     SharedLibrary() are shared work even if the object was built in a
3410     previous run.
3411
3412   - Supply meaningful error messages, not stack traces, if we try to add
3413     a non-Node as a source, dependency, or ignored dependency of a Node.
3414
3415   - Generate MSVS Project files that re-invoke SCons properly regardless
3416     of whether the file was built via scons.bat or scons.py.
3417     (Thanks to Niall Douglas for contributing code and testing.)
3418
3419   - Fix TestCmd.py, runtest.py and specific tests to accomodate being
3420     run from directories whose paths include white space.
3421
3422   - Provide a more useful error message if a construction variable
3423     expansion contains a syntax error during evaluation.
3424
3425   - Fix transparent checkout of implicit dependency files from SCCS
3426     and RCS.
3427
3428   - Added new --debug=count, --debug=memory and --debug=objects options.
3429     --debug=count and --debug=objects only print anything when run
3430     under Python 2.1 or later.
3431
3432   - Deprecate the "overrides" keyword argument to Builder() creation
3433     in favor of using keyword argument values directly (like we do
3434     for builder execution and the like).
3435
3436   - Always use the Builder overrides in substitutions, not just if
3437     there isn't a target-specific environment.
3438
3439   - Add new "rsrcpath" and "rsrcdir" and attributes to $TARGET/$SOURCE,
3440     so Builder command lines can find things in Repository source
3441     directories when using BuildDir.
3442
3443   - Fix the M4 Builder so that it chdirs to the Repository directory
3444     when the input file is in the source directory of a BuildDir.
3445
3446   - Save memory at build time by allowing Nodes to delete their build
3447     environments after they've been built.
3448
3449   - Add AppendUnique() and PrependUnique() Environment methods, which
3450     add values to construction variables like Append() and Prepend()
3451     do, but suppress any duplicate elements in the list.
3452
3453   - Allow the 'qt' tool to still be used successfully from a copied
3454     Environment.  The include and library directories previously ended up
3455     having the same string re-appended to the end, yielding an incorrect
3456     path name.
3457
3458   - Supply a more descriptive error message when the source for a target
3459     can't be found.
3460
3461   - Initialize all *FLAGS variables with objects do the right thing with
3462     appending flags as strings or lists.
3463
3464   - Make things like ${TARGET.dir} work in *PATH construction variables.
3465
3466   - Allow a $MSVS_USE_MFC_DIRS construction variable to control whether
3467     ATL and MFC directories are included in the default INCLUDE and
3468     LIB paths.
3469
3470   - Document the dbm_module argument to the SConsignFile() function.
3471
3472   From Vincent Risi:
3473
3474   - Add support for the bcc32, ilink32 and tlib Borland tools.
3475
3476   From Anthony Roach:
3477
3478   - Supply an error message if the user tries to configure a BuildDir
3479     for a directory that already has one.
3480
3481   - Remove documentation of the still-unimplemented -e option.
3482
3483   - Add -H help text listing the legal --debug values.
3484
3485   - Don't choke if a construction variable is a non-string value.
3486
3487   - Build Type Libraries in the target directory, not the source
3488     directory.
3489
3490   - Add an appendix to the User's Guide showing how to accomplish
3491     various common tasks in Python.
3492
3493   From Greg Spencer:
3494
3495   - Add support for Microsoft Visual Studio 2003 (version 7.1).
3496
3497   - Evaluate $MSVSPROJECTSUFFIX and $MSVSSOLUTIONSUFFIX when the Builder
3498     is invoked, not when the tool is initialized.
3499
3500   From Christoph Wiedemann:
3501
3502   - When compiling Qt, make sure the moc_*.cc files are compiled using
3503     the flags from the environment used to specify the target, not
3504     the environment that first has the Qt Builders attached.
3505
3506
3507
3508 RELEASE 0.94 - Fri, 07 Nov 2003 05:29:48 -0600
3509
3510   From Hartmut Goebel:
3511
3512   - Add several new types of canned functions to help create options:
3513     BoolOption(), EnumOption(), ListOption(), PackageOption(),
3514     PathOption().
3515
3516   From Steven Knight:
3517
3518   - Fix use of CPPDEFINES with C++ source files.
3519
3520   - Fix env.Append() when the operand is an object with a __cmp__()
3521     method (like a Scanner instance).
3522
3523   - Fix subclassing the Environment and Scanner classes.
3524
3525   - Add BUILD_TARGETS, COMMAND_LINE_TARGETS and DEFAULT_TARGETS variables.
3526
3527   From Steve Leblanc:
3528
3529   - SGI fixes:  Fix C++ compilation, add a separate Tool/sgic++.py module.
3530
3531   From Gary Oberbrunner:
3532
3533   - Fix how the man page un-indents after examples in some browsers.
3534
3535   From Vincent Risi:
3536
3537   - Fix the C and C++ tool specifications for AIX.
3538
3539
3540
3541 RELEASE 0.93 - Thu, 23 Oct 2003 07:26:55 -0500
3542
3543   From J.T. Conklin:
3544
3545   - On POSIX, execute commands with the more modern os.spawnvpe()
3546     function, if it's available.
3547
3548   - Scan .S, .spp and .SPP files for C preprocessor dependencies.
3549
3550   - Refactor the Job.Parallel() class to use a thread pool without a
3551     condition variable.  This improves parallel build performance and
3552     handles keyboard interrupts properly when -j is used.
3553
3554   From Charles Crain:
3555
3556   - Add support for a JARCHDIR variable to control changing to a
3557     directory using the jar -C option.
3558
3559   - Add support for detecting Java manifest files when using jar,
3560     and specifying them using the jar m flag.
3561
3562   - Fix some Python 2.2 specific things in various tool modules.
3563
3564   - Support directories as build sources, so that a rebuild of a target
3565     can be triggered if anything underneath the directory changes.
3566
3567   - Have the scons.bat and scons.py files look for the SCons modules
3568     in site-packages as well.
3569
3570   From Christian Engel:
3571
3572   - Support more flexible inclusion of separate C and C++ compilers.
3573
3574   - Use package management tools on AIX and Solaris to find where
3575     the comilers are installed, and what version they are.
3576
3577   - Add support for CCVERSION and CXXVERSION variables for a number
3578     of C and C++ compilers.
3579
3580   From Sergey Fogel:
3581
3582   - Add test cases for the new capabilities to run bibtex and to rerun
3583     latex as needed.
3584
3585   From Ralf W. Grosse-Kunstleve:
3586
3587   - Accomodate anydbm modules that don't have a sync() method.
3588
3589   - Allow SConsignFile() to take an argument specifying the DBM
3590     module to be used.
3591
3592   From Stephen Kennedy:
3593
3594   - Add support for a configurable global .sconsign.dbm file which
3595     can be used to avoid cluttering each directory with an individual
3596     .sconsign file.
3597
3598   From John Johnson:
3599
3600   - Fix (re-)scanning of dependencies in generated or installed
3601     header files.
3602
3603   From Steven Knight:
3604
3605   - The -Q option suppressed too many messages; fix it so that it only
3606     suppresses the Reading/Building messages.
3607
3608   - Support #include when there's no space before the opening quote
3609     or angle bracket.
3610
3611   - Accomodate alphanumeric version strings in EnsurePythonVersion().
3612
3613   - Support arbitrary expansion of construction variables within
3614     file and directory arguments to Builder calls and Environment methods.
3615
3616   - Add Environment-method versions of the following global functions:
3617     Action(), AddPostAction(), AddPreAction(), Alias(), Builder(),
3618     BuildDir(), CacheDir(), Clean(), Configure(), Default(),
3619     EnsurePythonVersion(), EnsureSConsVersion(), Environment(),
3620     Exit(), Export(), FindFile(), GetBuildPath(), GetOption(), Help(),
3621     Import(), Literal(), Local(), Platform(), Repository(), Scanner(),
3622     SConscriptChdir(), SConsignFile(), SetOption(), SourceSignatures(),
3623     Split(), TargetSignatures(), Tool(), Value().
3624
3625   - Add the following global functions that correspond to the same-named
3626     Environment methods:  AlwaysBuild(), Command(), Depends(), Ignore(),
3627     Install(), InstallAs(), Precious(), SideEffect() and SourceCode().
3628
3629   - Add the following global functions that correspond to the default
3630     Builder methods supported by SCons: CFile(), CXXFile(), DVI(), Jar(),
3631     Java(), JavaH(), Library(), M4(), MSVSProject(), Object(), PCH(),
3632     PDF(), PostScript(), Program(), RES(), RMIC(), SharedLibrary(),
3633     SharedObject(), StaticLibrary(), StaticObject(), Tar(), TypeLibrary()
3634     and Zip().
3635
3636   - Rearrange the man page to show construction environment methods and
3637     global functions in the same list, and to explain the difference.
3638
3639   - Alphabetize the explanations of the builder methods in the man page.
3640
3641   - Rename the Environment.Environment class to Enviroment.Base.
3642     Allow the wrapping interface to extend an Environment by using its own
3643     subclass of Environment.Base and setting a new Environment.Environment
3644     variable as the calling entry point.
3645
3646   - Deprecate the ParseConfig() global function in favor of a same-named
3647     construction environment method.
3648
3649   - Allow the Environment.WhereIs() method to take explicit path and
3650     pathext arguments (like the underlying SCons.Util.WhereIs() function).
3651
3652   - Remove the long-obsolete {Get,Set}CommandHandler() functions.
3653
3654   - Enhance env.Append() to suppress null values when appropriate.
3655
3656   - Fix ParseConfig() so it works regardless of initial construction
3657     variable values.
3658
3659     Extend CheckHeader(), CheckCHeader(), CheckCXXHeader() and
3660     CheckLibWithHeader() to accept a list of header files that will be
3661     #included in the test.  The last one in the list is assumed to be
3662     the one being checked for.  (Prototype code contributed by Gerard
3663     Patel and Niall Douglas).
3664
3665   - Supply a warning when -j is used and threading isn't built in to
3666     the current version of Python.
3667
3668   - First release of the User's Guide (finally, and despite a lot
3669     of things still missing from it...).
3670
3671   From Clark McGrew:
3672
3673   - Generalize the action for .tex files so that it will decide whether
3674     a file is TeX or LaTeX, check the .aux output to decide if it should
3675     run bibtex, and check the .log output to re-run LaTeX if needed.
3676
3677   From Bram Moolenaar:
3678
3679   - Split the non-SCons-specific functionality from SConf.py to a new,
3680     re-usable Conftest.py module.
3681
3682   From Gary Oberbrunner:
3683
3684   - Allow a directory to be the target or source or dependency of a
3685     Depends(), Ignore(), Precious() or SideEffect() call.
3686
3687   From Gerard Patel:
3688
3689   - Use the %{_mandir} macro when building our RPM package.
3690
3691   From Marko Rauhamaa:
3692
3693   - Have the closing message say "...terminated because of errors" if
3694     there were any.
3695
3696   From Anthony Roach:
3697
3698   - On Win32 systems, only use "rm" to delete files if Cygwin is being
3699     used.   ("rm" doesn't understand Win32-format path names.)
3700
3701   From Christoph Wiedemann:
3702
3703   - Fix test/SWIG.py to find the Python include directory in all cases.
3704
3705   - Fix a bug in detection of Qt installed on the local system.
3706
3707   - Support returning Python 2.3 BooleanType values from Configure checks.
3708
3709   - Provide an error message if someone mistakenly tries to call a
3710     Configure check from within a Builder function.
3711
3712   - Support calling a Builder when a Configure context is still open.
3713
3714   - Handle interrupts better by eliminating all try:-except: blocks
3715     which caught any and all exceptions, including KeyboardInterrupt.
3716
3717   - Add a --duplicate= option to control how files are duplicated.
3718
3719
3720
3721 RELEASE 0.92 - Wed, 20 Aug 2003 03:45:28 -0500
3722
3723   From Charles Crain and Gary Oberbrunner:
3724
3725   - Fix Tool import problems with the Intel and PharLap linkers.
3726
3727   From Steven Knight
3728
3729   - Refactor the DictCmdGenerator class to be a Selector subclass.
3730
3731   - Allow the DefaultEnvironment() function to take arguments and pass
3732     them to instantiation of the default construction environment.
3733
3734   - Update the Debian package so it uses Python 2.2 and more closely
3735     resembles the currently official Debian packaging info.
3736
3737   From Gerard Patel
3738
3739   - When the yacc -d flag is used, take the .h file base name from the
3740     target .c file, not the source (matching what yacc does).
3741
3742
3743
3744 RELEASE 0.91 - Thu, 14 Aug 2003 13:00:44 -0500
3745
3746   From Chad Austin:
3747
3748   - Support specifying a list of tools when calling Environment.Copy().
3749
3750   - Give a Value Nodes a timestamp of the system time when they're
3751     created, so they'll work when using timestamp-based signatures.
3752
3753   - Add a DefaultEnvironment() function that only creates a default
3754     environment on-demand (for fetching source files, e.g.).
3755
3756   - Portability fix for test/M4.py.
3757
3758   From Steven Knight:
3759
3760   - Tighten up the scons -H help output.
3761
3762   - When the input yacc file ends in .yy and the -d flag is specified,
3763     recognize that a .hpp file (not a .h file) will be created.
3764
3765   - Make builder prefixes work correctly when deducing a target
3766     from a source file name in another directory.
3767
3768   - Documentation fixes: typo in the man page; explain up-front about
3769     not propagating the external environment.
3770
3771   - Use "cvs co -d" instead of "cvs co -p >" when checking out something
3772     from CVS with a specified module name.  This avoids zero-length
3773     files when there is a checkout error.
3774
3775   - Add an "sconsign" script to print the contents of .sconsign files.
3776
3777   - Speed up maintaining the various lists of Node children by using
3778     dictionaries to avoid "x in list" searches.
3779
3780   - Cache the computed list of Node children minus those being Ignored
3781     so it's only calculated once.
3782
3783   - Fix use of the --cache-show option when building a Program()
3784     (or using any other arbitrary action) by making sure all Action
3785     instances have strfunction() methods.
3786
3787   - Allow the source of Command() to be a directory.
3788
3789   - Better error handling of things like raw TypeErrors in SConscripts.
3790
3791   - When installing using "setup.py install --prefix=", suppress the
3792     distutils warning message about adding the (incorrect) library
3793     directory to your search path.
3794
3795   - Correct the spelling of the "validater" option to "validator."
3796     Add a DeprecatedWarning when the old spelling is used.
3797
3798   - Allow a Builder's emitter to be a dictionary that maps source file
3799     suffixes to emitter functions, using the suffix of the first file
3800     in the source list to pick the right one.
3801
3802   - Refactor the creation of the Program, *Object and *Library Builders
3803     so that they're moved out of SCons.Defaults and created on demand.
3804
3805   - Don't split SConscript file names on white space.
3806
3807   - Document the SConscript function's "dirs" and "name" keywords.
3808
3809   - Remove the internal (and superfluous) SCons.Util.argmunge() function.
3810
3811   - Add /TP to the default CXXFLAGS for msvc, so it can compile all
3812     of the suffixes we use as C++ files.
3813
3814   - Allow the "prefix" and "suffix" attributes of a Builder to be
3815     callable objects that return generated strings, or dictionaries
3816     that map a source file suffix to the right prefix/suffix.
3817
3818   - Support a MAXLINELINELENGTH construction variable on Win32 systems
3819     to control when a temporary file is used for long command lines.
3820
3821   - Make how we build .rpm packages not depend on the installation
3822     locations from the distutils being used.
3823
3824   - When deducing a target Node, create it directly from the first
3825     source Node, not by trying to create the right string to pass to
3826     arg2nodes().
3827
3828   - Add support for SWIG.
3829
3830   From Bram Moolenaar:
3831
3832   - Test portability fixes for FreeBSD.
3833
3834   From Gary Oberbrunner:
3835
3836   - Report the target being built in error messages when building
3837     multiple sources from different extensions, or when the target file
3838     extension can't be deduced, or when we don't have an action for a
3839     file suffix.
3840
3841   - Provide helpful error messages when the arguments to env.Install()
3842     are incorrect.
3843
3844   - Fix the value returned by the Node.prevsiginfo() method to conform
3845     to a previous change when checking whether a node is current.
3846
3847   - Supply a stack trace if the Taskmaster catches an exception.
3848
3849   - When using a temporary file for a long link line on Win32 systems,
3850     (also) print the command line that is being executed through the
3851     temporary file.
3852
3853   - Initialize the LIB environment variable when using the Intel
3854     compiler (icl).
3855
3856   - Documentation fixes:  better explain the AlwaysBuild() function.
3857
3858   From Laurent Pelecq:
3859
3860   - When the -debug=pdb option is specified, use pdb.Pdb().runcall() to
3861     call pdb directly, don't call Python recursively.
3862
3863   From Ben Scott:
3864
3865   - Add support for a platform-independent CPPDEFINES variable.
3866
3867   From Christoph Wiedemann:
3868
3869   - Have the g++ Tool actually use g++ in preference to c++.
3870
3871   - Have the gcc Tool actually use gcc in preference to cc.
3872
3873   - Add a gnutools.py test of the GNU tool chain.
3874
3875   - Be smarter about linking: use $CC by default and $CXX only if we're
3876     linking with any C++ objects.
3877
3878   - Avoid SCons hanging when a piped command has a lot of output to read.
3879
3880   - Add QT support for preprocessing .ui files into .c files.
3881
3882
3883
3884 RELEASE 0.90 - Wed, 25 Jun 2003 14:24:52 -0500
3885
3886   From Chad Austin:
3887
3888   - Fix the _concat() documentation, and add a test for it.
3889
3890   - Portability fixes for non-GNU versions of lex and yacc.
3891
3892   From Matt Balvin:
3893
3894   - Fix handling of library prefixes when the subdirectory matches
3895     the prefix.
3896
3897   From Timothee Bessett:
3898
3899   - Add an M4 Builder.
3900
3901   From Charles Crain:
3902
3903   - Use '.lnk' as the suffix on the temporary file for linking long
3904     command lines (necessary for the Phar Lap linkloc linker).
3905
3906   - Save non-string Options values as their actual type.
3907
3908   - Save Options string values that contain a single quote correctly.
3909
3910   - Save any Options values that are changed from the default
3911     Environment values, not just ones changed on the command line or in
3912     an Options file.
3913
3914   - Make closing the Options file descriptor exception-safe.
3915
3916   From Steven Knight:
3917
3918   - SCons now enforces (with an error) that construction variables
3919     must have the same form as valid Python identifiers.
3920
3921   - Fix man page bugs: remove duplicate AddPostAction() description;
3922     document no_import_lib; mention that CPPFLAGS does not contain
3923     $_CPPINCFLAGS; mention that F77FLAGS does not contain $_F77INCFLAGS;
3924     mention that LINKFLAGS and SHLINKFLAGS contains neither $_LIBFLAGS
3925     nor $_LIBDIRFLAGS.
3926
3927   - Eliminate a dependency on the distutils.fancy_getopt module by
3928     copying and pasting its wrap_text() function directly.
3929
3930   - Make the Script.Options() subclass match the underlying base class
3931     implementation.
3932
3933   - When reporting a target is up to date, quote the target like make
3934     (backquote-quote) instead of with double quotes.
3935
3936   - Fix handling of ../* targets when using -U, -D or -u.
3937
3938   From Steve Leblanc:
3939
3940   - Don't update the .sconsign files when run with -n.
3941
3942   From Gary Oberbrunner:
3943
3944   - Add support for the Intel C Compiler (icl.exe).
3945
3946   From Anthony Roach
3947
3948   - Fix Import('*').
3949
3950   From David Snopek
3951
3952   - Fix use of SConf in paths with white space in them.
3953
3954   - Add CheckFunc and CheckType functionality to SConf.
3955
3956   - Fix use of SConf with Builders that return a list of nodes.
3957
3958   From David Snopek and Christoph Wiedemann
3959
3960   - Fix use of the SConf subsystem with SConscriptChdir().
3961
3962   From Greg Spencer
3963
3964   - Check for the existence of MS Visual Studio on disk before using it,
3965     to avoid getting fooled by leftover junk in the registry.
3966
3967   - Add support for MSVC++ .NET.
3968
3969   - Add support for MS Visual Studio project files (DSP, DSW,
3970     SLN and VCPROJ files).
3971
3972   From Christoph Wiedemann
3973
3974   - SConf now works correctly when the -n and -q options are used.
3975
3976
3977
3978 RELEASE 0.14 - Wed, 21 May 2003 05:16:32 -0500
3979
3980   From Chad Austin:
3981
3982   - Use .dll (not .so) for shared libraries on Cygwin; use -fPIC
3983     when compiling them.
3984
3985   - Use 'rm' to remove files under Cygwin.
3986
3987   - Add a PLATFORM variable to construction environments.
3988
3989   - Remove the "platform" argument from tool specifications.
3990
3991   - Propogate PYTHONPATH when running the regression tests so distutils
3992     can be found in non-standard locations.
3993
3994   - Using MSVC long command-line linking when running Cygwin.
3995
3996   - Portability fixes for a lot of tests.
3997
3998   - Add a Value Node class for dependencies on in-core Python values.
3999
4000   From Allen Bierbaum:
4001
4002   - Pass an Environment to the Options validator method, and
4003     add an Options.Save() method.
4004
4005   From Steve Christensen:
4006
4007   - Add an optional sort function argument to the GenerateHelpText()
4008     Options function.
4009
4010   - Evaluate the "varlist" variables when computing the signature of a
4011     function action.
4012
4013   From Charles Crain:
4014
4015   - Parse the source .java files for class names (including inner class
4016     names) to figure out the target .class files that will be created.
4017
4018   - Make Java support work with Repositories and SConscriptChdir(0).
4019
4020   - Pass Nodes, not strings, to Builder emitter functions.
4021
4022   - Refactor command-line interpolation and signature calculation
4023     so we can use real Node attributes.
4024
4025   From Steven Knight:
4026
4027   - Add Java support (javac, javah, jar and rmic).
4028
4029   - Propagate the external SYSTEMROOT environment variable into ENV on
4030     Win32 systems, so external commands that use sockets will work.
4031
4032   - Add a .posix attribute to PathList expansions.
4033
4034   - Check out CVS source files using POSIX path names (forward slashes
4035     as separators) even on Win32.
4036
4037   - Add Node.clear() and Node.FS.Entry.clear() methods to wipe out a
4038     Node's state, allowing it to be re-evaluated by continuous
4039     integration build interfaces.
4040
4041   - Change the name of the Set{Build,Content}SignatureType() functions
4042     to {Target,Source}Signatures().  Deprecate the old names but support
4043     them for backwards compatibility.
4044
4045   - Add internal SCons.Node.FS.{Dir,File}.Entry() methods.
4046
4047   - Interpolate the null string if an out-of-range subscript is used
4048     for a construction variable.
4049
4050   - Fix the internal Link function so that it properly links or copies
4051     files in subsidiary BuildDir directories.
4052
4053   - Refactor the internal representation of a single execution instance
4054     of an action to eliminate redundant signature calculations.
4055
4056   - Eliminate redundant signature calculations for Nodes.
4057
4058   - Optimize out calling hasattr() before accessing attributes.
4059
4060   - Say "Cleaning targets" (not "Building...") when the -c option is
4061     used.
4062
4063   From Damyan Pepper:
4064
4065   - Quote the "Entering directory" message like Make.
4066
4067   From Stefan Reichor:
4068
4069   - Add support for using Ghostscript to convert Postscript to PDF files.
4070
4071   From Anthony Roach:
4072
4073   - Add a standalone "Alias" function (separate from an Environment).
4074
4075   - Make Export() work for local variables.
4076
4077   - Support passing a dictionary to Export().
4078
4079   - Support Import('*') to import everything that's been Export()ed.
4080
4081   - Fix an undefined exitvalmap on Win32 systems.
4082
4083   - Support new SetOption() and GetOption() functions for setting
4084     various command-line options from with an SConscript file.
4085
4086   - Deprecate the old SetJobs() and GetJobs() functions in favor of
4087     using the new generic {Set,Get}Option() functions.
4088
4089   - Fix a number of tests that searched for a Fortran compiler using the
4090     external PATH instead of what SCons would use.
4091
4092   - Fix the interaction of SideEffect() and BuildDir() so that (for
4093     example) PDB files get put correctly in a BuildDir().
4094
4095   From David Snopek:
4096
4097   - Contribute the "Autoscons" code for Autoconf-like checking for
4098     the existence of libraries, header files and the like.
4099
4100   - Have the Tool() function add the tool name to the $TOOLS
4101     construction variable.
4102
4103   From Greg Spencer:
4104
4105   - Support the C preprocessor #import statement.
4106
4107   - Allow the SharedLibrary() Builder on Win32 systems to be able to
4108     register a newly-built dll using regsvr32.
4109
4110   - Add a Builder for Windows type library (.tlb) files from IDL files.
4111
4112   - Add an IDL scanner.
4113
4114   - Refactor the Fortran, C and IDL scanners to share common logic.
4115
4116   - Add .srcpath and .srcdir attributes to $TARGET and $SOURCE.
4117
4118   From Christoph Wiedemann:
4119
4120   - Integrate David Snopek's "Autoscons" code as the new SConf
4121     configuration subsystem, including caching of values between
4122     runs (using normal SCons dependency mechanisms), tests, and
4123     documentation.
4124
4125
4126
4127 RELEASE 0.13 - Mon, 31 Mar 2003 20:22:00 -0600
4128
4129   From Charles Crain:
4130
4131   - Fix a bug when BuildDir(duplicate=0) is used and SConscript
4132     files are called from within other SConscript files.
4133
4134   - Support (older) versions of Perforce which don't set the Windows
4135     registry.
4136
4137
4138
4139 RELEASE 0.12 - Thu, 27 Mar 2003 23:52:09 -0600
4140
4141   From Charles Crain:
4142
4143   - Added support for the Perforce source code management system.
4144
4145   - Fix str(Node.FS) so that it returns a path relative to the calling
4146     SConscript file's directory, not the top-level directory.
4147
4148   - Added support for a separate src_dir argument to SConscript()
4149     that allows explicit specification of where the source files
4150     for an SConscript file can be found.
4151
4152   - Support more easily re-usable flavors of command generators by
4153     calling callable variables when strings are expanded.
4154
4155   From Steven Knight:
4156
4157   - Added an INSTALL construction variable that can be set to a function
4158     to control how the Install() and InstallAs() Builders install files.
4159     The default INSTALL function now copies, not links, files.
4160
4161   - Remove deprecated features:  the "name" argument to Builder objects,
4162     and the Environment.Update() method.
4163
4164   - Add an Environment.SourceCode() method to support fetching files
4165     from source code systems.  Add factory methods that create Builders
4166     to support BitKeeper, CVS, RCS, and SCCS.  Add support for fetching
4167     files from RCS or SCCS transparently (like GNU Make).
4168
4169   - Make the internal to_String() function more efficient.
4170
4171   - Make the error message the same as other build errors when there's a
4172     problem unlinking a target file in preparation for it being built.
4173
4174   - Make TARGET, TARGETS, SOURCE and SOURCES reserved variable names and
4175     warn if the user tries to set them in a construction environment.
4176
4177   - Add support for Tar and Zip files.
4178
4179   - Better documentation of the different ways to export variables to a
4180     subsidiary SConscript file.  Fix documentation bugs in a tools
4181     example, places that still assumed SCons split strings on white
4182     space, and typos.
4183
4184   - Support fetching arbitrary files from the TARGETS or SOURCES lists
4185     (e.g. ${SOURCES[2]}) when calculating the build signature of a
4186     command.
4187
4188   - Don't silently swallow exceptions thrown by Scanners (or other
4189     exceptions while finding a node's dependent children).
4190
4191   - Push files to CacheDir() before calling the superclass built()
4192     method (which may clear the build signature as part of clearing
4193     cached implicit dependencies, if the file has a source scanner).
4194     (Bug reported by Jeff Petkau.)
4195
4196   - Raise an internal error if we attempt to push a file to CacheDir()
4197     with a build signature of None.
4198
4199   - Add an explicit Exit() function for terminating early.
4200
4201   - Change the documentation to correctly describe that the -f option
4202     doesn't change to the directory in which the specified file lives.
4203     
4204   - Support changing directories locally with SConscript directory
4205     path names relative to any SConstruct file specified with -f.
4206     This allows you to build in another directory by simply changing
4207     there and pointing at the SConstruct file in another directory.
4208
4209   - Change the default SConscriptChdir() behavior to change to the
4210     SConscript directory while it's being read.
4211
4212   - Fix an exception thrown when the -U option was used with no
4213     Default() target specified.
4214
4215   - Fix -u so that it builds things in corresponding build directories
4216     when used in a source directory.
4217
4218   From Lachlan O'Dea:
4219
4220   - Add SharedObject() support to the masm tool.
4221
4222   - Fix WhereIs() to return normalized paths.
4223
4224   From Jeff Petkau:
4225
4226   - Don't copy a built file to a CacheDir() if it's already there.
4227
4228   - Avoid partial copies of built files in a CacheDir() by copying
4229     to a temporary file and renaming.
4230
4231   From Anthony Roach:
4232
4233   - Fix incorrect dependency-cycle errors when an Aliased source doesn't
4234     exist.
4235
4236
4237
4238 RELEASE 0.11 - Tue, 11 Feb 2003 05:24:33 -0600
4239
4240   From Chad Austin:
4241
4242   - Add support for IRIX and the SGI MIPSPro tool chain.
4243
4244   - Support using the MSVC tool chain when running Cygwin Python.
4245
4246   From Michael Cook:
4247
4248   - Avoid losing signal bits in the exit status from a command,
4249     helping terminate builds on interrupt (CTRL+C).
4250
4251   From Charles Crain:
4252
4253   - Added new AddPreAction() and AddPostAction() functions that support
4254     taking additional actions before or after building specific targets.
4255
4256   - Add support for the PharLap ETS tool chain.
4257
4258   From Steven Knight:
4259
4260   - Allow Python function Actions to specify a list of construction
4261     variables that should be included in the Action's signature.
4262
4263   - Allow libraries in the LIBS variable to explicitly include the prefix
4264     and suffix, even when using the GNU linker.
4265     (Bug reported by Neal Becker.)
4266
4267   - Use DOS-standard CR-LF line endings in the scons.bat file.
4268     (Bug reported by Gary Ruben.)
4269
4270   - Doc changes:  Eliminate description of deprecated "name" keyword
4271     argument from Builder definition (reported by Gary Ruben).
4272
4273   - Support using env.Append() on BUILDERS (and other dictionaries).
4274     (Bug reported by Bj=F6rn Bylander.)
4275
4276   - Setting the BUILDERS construction variable now properly clears
4277     the previous Builder attributes from the construction Environment.
4278     (Bug reported by Bj=F6rn Bylander.)
4279
4280   - Fix adding a prefix to a file when the target isn't specified.
4281     (Bug reported by Esa Ilari Vuokko.)
4282
4283   - Clean up error messages from problems duplicating into read-only
4284     BuildDir directories or into read-only files.
4285
4286   - Add a CommandAction.strfunction() method, and add an "env" argument
4287     to the FunctionAction.strfunction() method, so that all Action
4288     objects have strfunction() methods, and the functions for building
4289     and returning a string both take the same arguments.
4290
4291   - Add support for new CacheDir() functionality to share derived files
4292     between builds, with related options --cache-disable, --cache-force,
4293     and --cache-show.
4294
4295   - Change the default behavior when no targets are specified to build
4296     everything in the current directory and below (like Make).  This
4297     can be disabled by specifying Default(None) in an SConscript.
4298
4299   - Revamp SCons installation to fix a case-sensitive installation
4300     on Win32 systems, and to add SCons-specific --standard-lib,
4301     --standalone-lib, and --version-lib options for easier user
4302     control of where the libraries get installed.
4303
4304   - Fix the ability to directly import and use Platform and Tool modules
4305     that have been implicitly imported into an Environment().
4306
4307   - Add support for allowing an embedding interface to annotate a node
4308     when it's created.
4309
4310   - Extend the SConscript() function to accept build_dir and duplicate
4311     keyword arguments that function like a BuildDir() call.
4312
4313   From Steve Leblanc:
4314
4315   - Fix the output of -c -n when directories are involved, so it
4316     matches -c.
4317
4318   From Anthony Roach:
4319
4320   - Use a different shared object suffix (.os) when using gcc so shared
4321     and static objects can exist side-by-side in the same directory.
4322
4323   - Allow the same object files on Win32 to be linked into either
4324     shared or static libraries.
4325
4326   - Cache implicit cache values when using --implicit-cache.
4327
4328
4329
4330 RELEASE 0.10 - Thu, 16 Jan 2003 04:11:46 -0600
4331
4332   From Derrick 'dman' Hudson:
4333
4334   - Support Repositories on other file systems by symlinking or
4335     copying files when hard linking won't work.
4336
4337   From Steven Knight:
4338
4339   - Remove Python bytecode (*.pyc) files from the scons-local packages.
4340
4341   - Have FunctionActions print a description of what they're doing
4342     (a representation of the Python call).
4343
4344   - Fix the Install() method so that, like other actions, it prints
4345     what would have happened when the -n option is used.
4346
4347   - Don't create duplicate source files in a BuildDir when the -n
4348     option is used.
4349
4350   - Refactor the Scanner interface to eliminate unnecessary Scanner
4351     calls and make it easier to write efficient scanners.
4352
4353   - Added a "recursive" flag to Scanner creation that specifies the
4354     Scanner should be invoked recursively on dependency files returned
4355     by the scanner.
4356
4357   - Significant performance improvement from using a more efficient
4358     check, throughout the code, for whether a Node has a Builder.
4359
4360   - Fix specifying only the source file to MultiStepBuilders such as
4361     the Program Builder.  (Bug reported by Dean Bair.)
4362
4363   - Fix an exception when building from a file with the same basename as
4364     the subdirectory in which it lives.  (Bug reported by Gerard Patel.)
4365
4366   - Fix automatic deduction of a target file name when there are
4367     multiple source files specified; the target is now deduced from just
4368     the first source file in the list.
4369
4370   - Documentation fixes: better initial explanation of SConscript files;
4371     fix a misformatted "table" in the StaticObject explanation.
4372
4373   From Steven Knight and Steve Leblanc:
4374
4375   - Fix the -c option so it will remove symlinks.
4376
4377   From Steve Leblanc:
4378
4379   - Add a Clean() method to support removing user-specified targets
4380     when using the -c option.
4381
4382   - Add a development script for running SCons through PyChecker.
4383
4384   - Clean up things found by PyChecker (mostly unnecessary imports).
4385
4386   - Add a script to use HappyDoc to create HTML class documentation.
4387
4388   From Lachlan O'Dea:
4389
4390   - Make the Environment.get() method return None by default.
4391
4392   From Anthony Roach:
4393
4394   - Add SetJobs() and GetJobs() methods to allow configuration of the
4395     number of default jobs (still overridden by -j).
4396
4397   - Convert the .sconsign file format from ASCII to a pickled Python
4398     data structure.
4399
4400   - Error message cleanups:  Made consistent the format of error
4401     messages (now all start with "scons: ***") and warning messages (now
4402     all start with "scons: warning:").  Caught more cases with the "Do
4403     not know how to build" error message.
4404
4405   - Added support for the MinGW tool chain.
4406
4407   - Added a --debug=includes option.
4408
4409
4410
4411 RELEASE 0.09 - Thu,  5 Dec 2002 04:48:25 -0600
4412
4413   From Chad Austin:
4414
4415   - Add a Prepend() method to Environments, to append values to
4416     the beginning of construction variables.
4417
4418   From Matt Balvin:
4419
4420   - Add long command-line support to the "lib" Tool (Microsoft library
4421     archiver), too.
4422
4423   From Charles Crain:
4424
4425   - Allow $$ in a string to be passed through as $.
4426
4427   - Support file names with odd characters in them.
4428
4429   - Add support for construction variable substition on scanner
4430     directories (in CPPPATH, F77PATH, LIBPATH, etc.).
4431
4432   From Charles Crain and Steven Knight:
4433
4434   - Add Repository() functionality, including the -Y option.
4435
4436   From Steven Knight:
4437
4438   - Fix auto-deduction of target names so that deduced targets end
4439     up in the same subdirectory as the source.
4440
4441   - Don't remove source files specified on the command line!
4442
4443   - Suport the Intel Fortran Compiler (ifl.exe).
4444
4445   - Supply an error message if there are no command-line or
4446     Default() targets specified.
4447
4448   - Fix the ASPPCOM values for the GNU assembler.
4449     (Bug reported by Brett Polivka.)
4450
4451   - Fix an exception thrown when a Default() directory was specified
4452     when using the -U option.
4453
4454   - Issue a warning when -c can't remove a target.
4455
4456   - Eliminate unnecessary Scanner calls by checking for the
4457     existence of a file before scanning it.  (This adds a generic
4458     hook to check an arbitrary condition before scanning.)
4459
4460   - Add explicit messages to tell when we're "Reading SConscript files
4461     ...," "done reading SConscript files," "Building targets," and
4462     "done building targets."  Add a -Q option to supress these.
4463
4464   - Add separate $SHOBJPREFIX and $SHOBJSUFFIX construction variables
4465     (by default, the same as $OBJPREFIX and $OBJSUFFIX).
4466
4467   - Add Make-like error messages when asked to build a source file,
4468     and before trying to build a file that doesn't have all its source
4469     files (including when an invalid drive letter is used on WIN32).
4470
4471   - Add an scons-local-{version} package (in both .tar.gz and .zip
4472     flavors) to help people who want to ship SCons as a stand-alone
4473     build tool in their software packages.
4474
4475   - Prevent SCons from unlinking files in certain situations when
4476     the -n option is used.
4477
4478   - Change the name of Tool/lib.py to Tool/mslib.py.
4479
4480   From Steven Knight and Anthony Roach:
4481
4482   - Man page:  document the fact that Builder calls return Node objects.
4483
4484   From Steve LeBlanc:
4485
4486   - Refactor option processing to use our own version of Greg Ward's
4487     Optik module, modified to run under Python 1.5.2.
4488
4489   - Add a ParseConfig() command to modify an environment based on
4490     parsing output from a *-config command.
4491
4492   From Jeff Petkau:
4493
4494   - Fix interpretation of '#/../foo' on Win32 systems.
4495
4496   From Anthony Roach:
4497
4498   - Fixed use of command lines with spaces in their arguments,
4499     and use of Nodes with spaces in their string representation.
4500
4501   - Make access and modification times of files in a BuildDir match
4502     the source file, even when hard linking isn't available.
4503
4504   - Make -U be case insensitive on Win32 systems.
4505
4506   - Issue a warning and continue when finding a corrupt .sconsign file.
4507
4508   - Fix using an alias as a dependency of a target so that if one of the
4509     alias' dependencies gets rebuilt, the resulting target will, too.
4510
4511   - Fix differently ordered targets causing unnecessary rebuilds
4512     on case insensitive systems.
4513
4514   - Use os.system() to execute external commands whenever the "env"
4515     utility is available, which is much faster than fork()/exec(),
4516     and fixes the -j option on several platforms.
4517
4518   - Fix use of -j with multiple targets.
4519
4520   - Add an Options() object for friendlier accomodation of command-
4521     line arguments.
4522
4523   - Add support for Microsoft VC++ precompiled header (.pch) files,
4524     debugger (.pdb) files, and resource (.rc) files.
4525
4526   - Don't compute the $_CPPINCFLAGS, $_F77INCFLAGS, $_LIBFLAGS and
4527     $_LIBDIRFLAGS variables each time a command is executed, define
4528     them so they're computed only as needed.  Add a new _concat
4529     function to the Environment that allows people to define their
4530     own similar variables.
4531
4532   - Fix dependency scans when $LIBS is overridden.
4533
4534   - Add EnsurePythonVersion() and EnsureSConsVersion() functions.
4535
4536   - Fix the overly-verbose stack trace on ListBuilder build errors.
4537
4538   - Add a SetContentSignatureType() function, allowing use of file
4539     timestamps instead of MD5 signatures.
4540
4541   - Make -U and Default('source') fail gracefully.
4542
4543   - Allow the File() and Dir() methods to take a path-name string as
4544     the starting directory, in addition to a Dir object.
4545
4546   - Allow the command handler to be selected via the SPAWN, SHELL
4547     and ESCAPE construction variables.
4548
4549   - Allow construction variables to be overridden when a Builder
4550     is called.
4551
4552   From sam th:
4553
4554   - Dynamically check for the existence of utilities with which to
4555     initialize Environments by default.
4556
4557
4558
4559 RELEASE 0.08 - Mon, 15 Jul 2002 12:08:51 -0500
4560
4561   From Charles Crain:
4562
4563   - Fixed a bug with relative CPPPATH dirs when using BuildDir().
4564     (Bug reported by Bob Summerwill.)
4565
4566   - Added a warnings framework and a --warn option to enable or
4567     disable warnings.
4568
4569   - Make the C scanner warn users if files referenced by #include
4570     directives cannot be found and --warn=dependency is specified.
4571
4572   - The BUILDERS construction variable should now be a dictionary
4573     that maps builder names to actions.  Existing uses of lists,
4574     and the Builder name= keyword argument, generate warnings
4575     about use of deprecated features.
4576
4577   - Removed the "shared" keyword argument from the Object and
4578     Library builders.
4579     
4580   - Added separated StaticObject, SharedObject, StaticLibrary and
4581     SharedLibrary builders.  Made Object and Library synonyms for
4582     StaticObject and StaticLibrary, respectively.
4583
4584   - Add LIBS and LIBPATH dependencies for shared libraries.
4585
4586   - Removed support for the prefix, suffix and src_suffix arguments
4587     to Builder() to be callable functions.
4588
4589   - Fix handling file names with multiple dots.
4590
4591   - Allow a build directory to be outside of the SConstruct tree.
4592
4593   - Add a FindFile() function that searches for a file node with a
4594     specified name.
4595
4596   - Add $CPPFLAGS to the shared-object command lines for g++ and gcc.
4597
4598   From Charles Crain and Steven Knight:
4599
4600   - Add a "tools=" keyword argument to Environment instantiation,
4601     and a separate Tools() method, for more flexible specification
4602     of tool-specific environment changes.
4603
4604   From Steven Knight:
4605
4606   - Add a "platform=" keyword argument to Environment instantiation,
4607     and a separate Platform() method, for more flexible specification
4608     of platform-specific environment changes.
4609
4610   - Updated README instructions and setup.py code to catch an
4611     installation failure from not having distutils installed.
4612
4613   - Add descriptions to the -H help text for -D, -u and -U so
4614     people can tell them apart.
4615
4616   - Remove the old feature of automatically splitting strings
4617     of file names on white space.
4618
4619   - Add a dependency Scanner for native Fortran "include" statements,
4620     using a new "F77PATH" construction variable.
4621
4622   - Fix C #include scanning to detect file names with characters like
4623     '-' in them.
4624
4625   - Add more specific version / build output to the -v option.
4626
4627   - Add support for the GNU as, Microsoft masm, and nasm assemblers.
4628
4629   - Allow the "target" argument to a Builder call to be omitted, in
4630     which case the target(s) are deduced from the source file(s) and the
4631     Builder's specified suffix.
4632
4633   - Add a tar archive builder.
4634
4635   - Add preliminary support for the OS/2 Platform, including the icc
4636     and ilink Tools.
4637
4638   From Jeff Petkau:
4639
4640   - Fix --implicit-cache if the scanner returns an empty list.
4641
4642   From Anthony Roach:
4643
4644   - Add a "multi" keyword argument to Builder creation that specifies
4645     it's okay to call the builder multiple times for a target.
4646
4647   - Set a "multi" on Aliases so multiple calls will append to an Alias.
4648
4649   - Fix emitter functions' use of path names when using BuildDir or
4650     in subdirectories.
4651
4652   - Fix --implicit-cache causing redundant rebuilds when the header
4653     file list changed.
4654
4655   - Fix --implicit-cache when a file has no implicit dependencies and
4656     its source is generated.
4657
4658   - Make the drive letters on Windows always be the same case, so that
4659     changes in the case of drive letters don't cause a rebuild.
4660
4661   - Fall back to importing the SCons.TimeStamp module if the SCons.MD5
4662     module can't be imported.
4663
4664   - Fix interrupt handling to guarantee that a single interrupt will
4665     halt SCons both when using -j and not.
4666
4667   - Fix .sconsign signature storage so that output files of one build
4668     can be safely used as input files to another build.
4669
4670   - Added a --debug=time option to print SCons execution times.
4671
4672   - Print an error message if a file can't be unlinked before being
4673     built, rather than just silently terminating the build.
4674
4675   - Add a SideEffect() method that can be used to tell the build
4676     engine that a given file is created as a side effect of building
4677     a target.  A file can be specified as a side effect of more than
4678     one build comand, in which case the commands will not be executed
4679     simultaneously.
4680
4681   - Significant performance gains from not using our own version of
4682     the inefficient stock os.path.splitext() method, caching source
4683     suffix computation, code cleanup in MultiStepBuilder.__call__(),
4684     and replicating some logic in scons_subst().
4685
4686   - Add --implicit-deps-changed and --implicit-deps-unchanged options.
4687
4688   - Add a GetLaunchDir() function.
4689
4690   - Add a SetBuildSignatureType() function.
4691
4692   From Zed Shaw:
4693
4694   - Add an Append() method to Environments, to append values to
4695     construction variables.
4696
4697   - Change the name of Update() to Replace().  Keep Update() as a
4698     deprecated synonym, at least for now.
4699
4700   From Terrel Shumway:
4701
4702   - Use a $PYTHON construction variable, initialized to sys.executable,
4703     when using Python to build parts of the SCons packages.
4704
4705   - Use sys.prefix, not sys.exec_prefix, to find pdb.py.
4706
4707
4708
4709 RELEASE 0.07 - Thu,  2 May 2002 13:37:16 -0500
4710
4711   From Chad Austin:
4712
4713   - Changes to build SCons packages on IRIX (and other *NIces).
4714
4715   - Don't create a directory Node when a file already exists there,
4716     and vice versa.
4717
4718   - Add 'dirs' and 'names' keyword arguments to SConscript for
4719     easier specification of subsidiary SConscript files.
4720
4721   From Charles Crain:
4722
4723   - Internal cleanup of environment passing to function Actions.
4724
4725   - Builders can now take arbitrary keyword arguments to create
4726     attributes to be passed to: command generator functions,
4727     FunctionAction functions, Builder emitter functions (below),
4728     and prefix/suffix generator functions (below).
4729
4730   - Command generator functions can now return ANYTHING that can be
4731     converted into an Action (a function, a string, a CommandGenerator
4732     instance, even an ActionBase instance).
4733
4734   - Actions now call get_contents() with the actual target and source
4735     nodes used for the build.
4736
4737   - A new DictCmdGenerator class replaces CompositeBuilder to support
4738     more flexible Builder behavior internally.
4739
4740   - Builders can now take an emitter= keyword argument.  An emitter
4741     is a function that takes target, source, and env argument, then
4742     return a 2-tuple of (new sources, new targets).  The emitter is
4743     called when the Builder is __call__'ed, allowing a user to modify
4744     source and target lists.
4745
4746   - The prefix, suffix and src_suffix Builder arguments now take a
4747     callable as well a string.  The callable is passed the Environment
4748     and any extra Builder keyword arguments and is expected to return
4749     the appropriate prefix or suffix.
4750
4751   - CommandActions can now be a string, a list of command + argument
4752     strings, or a list of commands (strings or lists).
4753
4754   - Added shared library support.  The Object and Library Builders now
4755     take a "shared=1" keyword argument to specify that a shared object
4756     or shared library should be built.  It is an error to try to build
4757     static objects into a shared library or vice versa.
4758
4759   - Win32 support for .def files has been added.  Added the Win32-specific
4760     construction variables $WIN32DEFPREFIX, $WIN32DEFSUFFIX,
4761     $WIN32DLLPREFIX and $WIN32IMPLIBPREFIX.  When building a .dll,
4762     the new construction variable $WIN32_INSERT_DEF, controls whether
4763     the appropriately-named .def file is inserted into the target
4764     list (if not already present).  A .lib file is always added to
4765     a Library build if not present in the list of targets.
4766
4767   - ListBuilder now passes all targets to the action, not just the first.
4768
4769   - Fix so that -c now deletes generated yacc .h files.
4770
4771   - Builder actions and emitter functions can now be initialized, through
4772     construction variables, to things other than strings.
4773
4774   - Make top-relative '#/dir' lookups work like '#dir'.
4775
4776   - Fix for relative CPPPATH directories in subsidiary SConscript files
4777     (broken in 0.06).
4778
4779   - Add a for_signature argument to command generators, so that
4780     generators that need to can return distinct values for the
4781     command signature and for executing the command.
4782
4783   From Alex Jacques:
4784
4785   - Create a better scons.bat file from a py2bat.py script on the Python
4786     mailing list two years ago (modeled after pl2bat.pl).
4787
4788   From Steven Knight:
4789
4790   - Fix so that -c -n does *not* remove the targets!
4791
4792   - Man page:  Add a hierarchical libraries + Program example.
4793
4794   - Support long MSVC linker command lines through a builder action
4795     that writes to a temporary file and uses the magic MSVC "link @file"
4796     argument syntax if the line is longer than 2K characters.
4797
4798   - Fix F77 command-line options on Win32 (use /Fo instead of -o).
4799
4800   - Use the same action to build from .c (lower case) and .C (upper
4801     case) files on case-insensitive systems like Win32.
4802
4803   - Support building a PDF file directly from a TeX or LaTeX file
4804     using pdftex or pdflatex.
4805
4806   - Add a -x option to runtest.py to specify the script being tested.
4807     A -X option indicates it's an executable, not a script to feed
4808     to the Python interpreter.
4809
4810   - Add a Split() function (identical to SCons.Util.argmunge()) for use
4811     in the next release, when Builders will no longer automatically split
4812     strings on white space.
4813
4814   From Steve Leblanc:
4815
4816   - Add the SConscriptChdir() method.
4817
4818   From Anthony Roach:
4819
4820   - Fix --debug=tree when used with directory targets.
4821
4822   - Significant internal restructuring of Scanners and Taskmaster.
4823
4824   - Added new --debug=dtree option.
4825
4826   - Fixes for --profile option.
4827
4828   - Performance improvement in construction variable substitution.
4829
4830   - Implemented caching of content signatures, plus added --max-drift
4831     option to control caching.
4832
4833   - Implemented caching of dependency signatures, enabled by new
4834     --implicit-cache option.
4835
4836   - Added abspath construction variable modifier.
4837
4838   - Added $SOURCE variable as a synonym for $SOURCES[0].
4839
4840   - Write out .sconsign files on error or interrupt so intermediate
4841     build results are saved.
4842
4843   - Change the -U option to -D.  Make a new -U that builds just the
4844     targets from the local SConscript file.
4845
4846   - Fixed use of sys.path so Python modules can be imported from
4847     the SConscript directory.
4848
4849   - Fix for using Aliases with the -u, -U and -D options.
4850
4851   - Fix so that Nodes can be passed to SConscript files.
4852
4853   From Moshe Zadka:
4854   
4855   - Changes for official Debian packaging.
4856
4857
4858
4859 RELEASE 0.06 - Thu, 28 Mar 2002 01:24:29 -0600
4860
4861   From Charles Crain:
4862
4863   - Fix command generators to expand construction variables.
4864
4865   - Make FunctionAction arguments be Nodes, not strings.
4866
4867   From Stephen Kennedy:
4868
4869   - Performance:  Use a dictionary, not a list, for a Node's parents.
4870
4871   From Steven Knight:
4872
4873   - Add .zip files to the packages we build.
4874
4875   - Man page:  document LIBS, fix a typo, document ARGUMENTS.
4876
4877   - Added RANLIB and RANLIBFLAGS construction variables.  Only use them
4878     in ARCOM if there's a "ranlib" program on the system.
4879
4880   - Add a configurable CFILESUFFIX for the Builder of .l and .y files
4881     into C files.
4882
4883   - Add a CXXFile Builder that turns .ll and .yy files into .cc files
4884     (configurable via a CXXFILESUFFIX construction variable).
4885
4886   - Use the POSIX-standard lex -t flag, not the GNU-specific -o flag.
4887     (Bug reported by Russell Christensen.)
4888
4889   - Fixed an exception when CPPPATH or LIBPATH is a null string.
4890     (Bug reported by Richard Kiss.)
4891
4892   - Add a --profile=FILE option to make profiling SCons easier.
4893
4894   - Modify the new DVI builder to create .dvi files from LaTeX (.ltx
4895     and .latex) files.
4896
4897   - Add support for Aliases (phony targets).
4898
4899   - Add a WhereIs() method for searching for path names to executables.
4900
4901   - Add PDF and PostScript document builders.
4902
4903   - Add support for compiling Fortran programs from a variety of
4904     suffixes (a la GNU Make):  .f, .F, .for, .FOR, .fpp and .FPP
4905
4906   - Support a CPPFLAGS variable on all default commands that use the
4907     C preprocessor.
4908
4909   From Steve Leblanc:
4910
4911   - Add support for the -U option.
4912
4913   - Allow CPPPATH, LIBPATH and LIBS to be specified as white-space
4914     separated strings.
4915
4916   - Add a document builder to create .dvi files from TeX (.tex) files.
4917
4918   From Anthony Roach:
4919
4920   - Fix:  Construction variables with values of 0 were incorrectly
4921     interpolated as ''. 
4922
4923   - Support env['VAR'] to fetch construction variable values.
4924
4925   - Man page:  document Precious().
4926
4927
4928
4929 RELEASE 0.05 - Thu, 21 Feb 2002 16:50:03 -0600
4930
4931   From Chad Austin:
4932
4933   - Set PROGSUFFIX to .exe under Cygwin.
4934
4935   From Charles Crain:
4936
4937   - Allow a library to specified as a command-line source file, not just
4938     in the LIBS construction variable.
4939
4940   - Compensate for a bug in os.path.normpath() that returns '' for './'
4941     on WIN32.
4942
4943   - More performance optimizations:  cache #include lines from files,
4944     eliminate unnecessary calls.
4945
4946   - If a prefix or suffix contains white space, treat the resulting
4947     concatenation as separate arguments.
4948
4949   - Fix irregularities in the way we fetch DevStudio information from
4950     the Windows registry, and in our registry error handling.
4951
4952   From Steven Knight:
4953
4954   - Flush stdout after print so it intermixes correctly with stderr
4955     when redirected.
4956
4957   - Allow Scanners to return a list of strings, and document how to
4958     write your own Scanners.
4959
4960   - Look up implicit (scanned) dependencies relative to the directory
4961     of file being scanned.
4962
4963   - Make writing .sconsign files more robust by first trying to write
4964     to a temp file that gets renamed.
4965
4966   - Create all of the directories for a list of targets before trying
4967     to build any of the targets.
4968
4969   - WIN32 portability fixes in tests.
4970
4971   - Allow the list of variables exported to an SConscript file to be
4972     a UserList, too.
4973
4974   - Document the overlooked LIBPATH construction variable.
4975     (Bug reported by Eicke Godehardt.)
4976
4977   - Fix so that Ignore() ignores indirect, implicit dependencies
4978     (included files), not just direct dependencies.
4979
4980   - Put the man page in the Debian distribution.
4981
4982   - Run HTML docs through tidy to clean up the HTML (for Konqueror).
4983
4984   - Add preliminary support for Unicode strings.
4985
4986   - Efficiency:  don't scan dependencies more than once during the
4987     walk of a tree.
4988
4989   - Fix the -c option so it doesn't stop removing targets if one doesn't
4990     already exist.
4991     (Bug reported by Paul Connell.)
4992
4993   - Fix the --debug=pdb option when run on Windows NT.
4994     (Bug reported by Paul Connell.)
4995
4996   - Add support for the -q option.
4997
4998   From Steve Leblanc:
4999
5000   - Add support for the -u option.
5001
5002   - Add .cc and .hh file suffixes to the C Scanner.
5003
5004   From Anthony Roach:
5005
5006   - Make the scons script return an error code on failures.
5007
5008   - Add support for using code to generate a command to build a target.
5009
5010
5011
5012 RELEASE 0.04 - Wed, 30 Jan 2002 11:09:42 -0600
5013
5014   From Charles Crain:
5015
5016   - Significant performance improvements in the Node.FS and
5017     Scanner subsystems.
5018
5019   - Fix signatures of binary files on Win32 systems.
5020
5021   - Allow LIBS and LIBPATH to be strings, not just arrays.
5022
5023   - Print a traceback if a Python-function builder throws an exception.
5024
5025   From Steven Knight:
5026
5027   - Fix using a directory as a Default(), and allow Default() to
5028     support white space in file names for strings in arrays.
5029
5030   - Man page updates:  corrected some mistakes, documented various
5031     missing Environment methods, alphabetized the construction
5032     variables and other functions, defined begin and end macros for
5033     the example sections, regularized white space separation, fixed
5034     the use of Export() in the Multiple Variants example.
5035
5036   - Function action fixes:  None is now a successful return value.
5037     Exceptions are now reported.  Document function actions.
5038
5039   - Add 'Action' and 'Scanner' to the global keywords so SConscript
5040     files can use them too.
5041
5042   - Removed the Wrapper class between Nodes and Walkers.
5043
5044   - Add examples using Library, LIBS, and LIBPATH.
5045
5046   - The C Scanner now always returns a sorted list of dependencies
5047     so order changes don't cause unnecessary rebuilds.
5048
5049   - Strip $(-$) bracketed text from command lines.  Use this to
5050     surround $_INCDIRS and $_LIBDIRS so we don't rebuild in response
5051     to changes to -I or -L options.
5052
5053   - Add the Ignore() method to ignore dependencies.
5054
5055   - Provide an error message when a nonexistent target is specified
5056     on the command line.
5057
5058   - Remove targets before building them, and add an Environment
5059     Precious() method to override that.
5060
5061   - Eliminate redundant calls to the same builder when the target is a
5062     list of targets:  Add a ListBuilder class that wraps Builders to
5063     handle lists atomically.  Extend the Task class to support building
5064     and updating multiple targets in a single Task.  Simplify the
5065     interface between Task and Taskmaster.
5066
5067   - Add a --debug=pdb option to re-run SCons under the Python debugger.
5068
5069   - Only compute a build signature once for each node.
5070
5071   - Changes to our sys.path[] manipulation to support installation into
5072     an arbitrary --prefix value.
5073
5074   From Steve Leblanc:
5075
5076   - Add var=value command-line arguments.
5077
5078
5079
5080 RELEASE 0.03 - Fri, 11 Jan 2002 01:09:30 -0600
5081
5082   From Charles Crain:
5083
5084   - Performance improvements in the Node.FS and Sig.Calculator classes.
5085
5086   - Add the InstallAs() method.
5087
5088   - Execute commands through an external interpreter (sh, cmd.exe, or
5089     command.com) to handle redirection metacharacters.
5090
5091   - Allow the user to supply a command handler.
5092
5093   From Steven Knight:
5094
5095   - Search both /usr/lib and /usr/local/lib for scons directories by
5096     adding them both to sys.path, with whichever is in sys.prefix first.
5097
5098   - Fix interpreting strings of multiple white-space separated file names
5099     as separate file names, allowing prefixes and suffixes to be appended
5100     to each individually.
5101
5102   - Refactor to move CompositeBuilder initialization logic from the
5103     factory wrapper to the __init__() method, and allow a Builder to
5104     have both an action and a src_builder (or array of them).
5105
5106   - Refactor BuilderBase.__call__() to separate Node creation/lookup
5107     from initialization of the Node's builder information.
5108
5109   - Add a CFile Builder object that supports turning lex (.l) and
5110     yacc (.y) files into .c files.
5111
5112   - Document: variable interpretation attributes; how to propogate
5113     the user's environment variables to executed commands; how to
5114     build variants in multiple BuildDirs.
5115
5116   - Collect String, Dict, and List type-checking in common utility
5117     routines so we can accept User{String,Dict,List}s all over.
5118
5119   - Put the Action factory and classes into their own module.
5120
5121   - Use one CPlusPlusAction in the Object Builder's action dictionary,
5122     instead of letting it create multiple identical instances.
5123
5124   - Document the Install() and InstallAs() methods.
5125
5126   From Steve Leblanc:
5127
5128   - Require that a Builder be given a name argument, supplying a
5129     useful error message when it isn't.
5130
5131   From Anthony Roach:
5132
5133   - Add a "duplicate" keyword argument to BuildDir() that can be set
5134     to prevent linking/copying source files into build directories.
5135
5136   - Add a "--debug=tree" option to print an ASCII dependency tree.
5137
5138   - Fetch the location of the Microsoft Visual C++ compiler(s) from
5139     the Registry, instead of hard-coding the location.
5140     
5141   - Made Scanner objects take Nodes, not path names.
5142     
5143   - Have the C Scanner cache the #include file names instead of
5144     (re-)scanning the file each time it's called.
5145
5146   - Created a separate class for parent "nodes" of file system roots,
5147     eliminating the need for separate is-parent-null checks everywhere.
5148     
5149   - Removed defined __hash__() and __cmp() methods from FS.Entry, in
5150     favor of Python's more efficient built-in identity comparisons.
5151
5152
5153
5154 RELEASE 0.02 - Sun, 23 Dec 2001 19:05:09 -0600
5155
5156   From Charles Crain:
5157
5158   - Added the Install(), BuildDir(), and Export() methods.
5159
5160   - Fix the -C option by delaying setting the top of the FS tree.
5161
5162   - Avoid putting the directory path on the libraries in the LIBS
5163     construction variable.
5164
5165   - Added a GetBuildPath() method to return the full path to the
5166     Node for a specified string.
5167
5168   - Fixed variable substitution in CPPPATH and LIBPATH.
5169
5170   From Steven Knight:
5171
5172   - Fixed the version comment in the scons.bat (the UNIX geek used
5173     # instead of @rem).
5174
5175   - Fix to setup.py so it doesn't require a sys.argv[1] argument.
5176
5177   - Provide make-like warning message for "command not found" and
5178     similar errors.
5179
5180   - Added an EXAMPLES section to the man page.
5181
5182   - Make Default() targets properly relative to their SConscript
5183     file's subdirectory.
5184
5185   From Anthony Roach:
5186
5187   - Documented CXXFLAGS, CXXCOM, and CPPPATH.
5188
5189   - Fixed SCONS_LIB_DIR to work as documented.
5190
5191   - Made Default() accept Nodes as arguments.
5192
5193   - Changed Export() to make it easier to use.
5194   
5195   - Added the Import() and Return() methods.
5196
5197
5198
5199 RELEASE 0.01 - Thu Dec 13 19:25:23 CST 2001
5200
5201 A brief overview of important functionality available in release 0.01:
5202
5203   - C and C++ compilation on POSIX and Windows NT.
5204
5205   - Automatic scanning of C/C++ source files for #include dependencies.
5206
5207   - Support for building libraries; setting construction variables
5208     allows creation of shared libraries.
5209
5210   - Library and C preprocessor search paths.
5211
5212   - File changes detected using MD5 signatures.
5213
5214   - User-definable Builder objects for building files.
5215
5216   - User-definable Scanner objects for scanning for dependencies.
5217
5218   - Parallel build (-j) support.
5219
5220   - Dependency cycles detected.
5221
5222   - Linux packages available in RPM and Debian format.
5223
5224   - Windows installer available.