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