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