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