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