Merged revisions 1767-1783 via svnmerge from
[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 0.97 - XXX
12
13   From Anonymous:
14
15   - Fix looking for default paths in Visual Studio 8.0 (and later).
16
17   From Matt Doar:
18
19   - Provide a more complete write-your-own-Scanner example in the man page.
20
21   From Steven Knight:
22
23   - Fix the Node.FS.Base.rel_path() method when the two nodes are on
24     different drive letters.  (This caused an infinite loop when
25     trying to write .sconsign files.)
26
27   From Gary Oberbrunner:
28
29   - Document use of ${} to execute arbitrary Python code.
30
31   From John Pye:
32
33   - Change ParseConfig() to preserve white space in arguments passed in
34     as a list.
35
36
37
38 RELEASE 0.96.94 - Sun, 07 Jan 2007 18:36:20 -0600
39
40   NOTE:  This is a pre-release of 0.97 for testing purposes.
41
42   From Anonymous:
43
44   - Allow arbitrary white space after a SWIG %module declaration.
45
46   From Paul:
47
48   - When compiling resources under MinGW, make sure there's a space 
49     between the --include-dir option and its argument.
50
51   From Jay Kint:
52
53   - Alleviate long command line issues on Windows by executing command
54     lines directly via os.spawnv() if the command line doesn't need
55     shell interpretation (has no pipes, redirection, etc.).
56
57   From Walter Franzini:
58
59   - Exclude additional Debian packaging files from the copyright check.
60
61   From Fawad Halim:
62
63   - Handle the conflict between the impending Python 2.6 'as' keyword
64     and our Tool/as.py module name.
65
66   From Steven Knight:
67
68   - Speed up the Node.FS.Dir.rel_path() method used to generate path names
69     that get put into the .sconsign* file(s).
70
71   - Optimize Node.FS.Base.get_suffix() by computing the suffix once, up
72     front, when we set the Node's name.  (Duh...)
73
74   - Reduce the Memoizer's responsibilities to simply counting hits and
75     misses when the --debug=memoizer option is used, not to actually
76     handling the key calculation and memoization itself.  This speeds
77     up some configurations significantly, and should cause no functional
78     differences.
79
80   - Add a new scons-time script with subcommands for generating
81     consistent timing output from SCons configurations, extracting
82     various information from those timings, and displaying them in
83     different formats.
84
85   - Reduce some unnecessary stat() calls from on-disk entry type checks.
86
87   - Fix SideEffect() when used with -j, which was badly broken in 0.96.93.
88
89   - Propagate TypeError exceptions when evaluating construction variable
90     expansions up the stack, so users can see what's going on.
91
92   - When disambiguating a Node.FS.Entry into a Dir or File, don't look
93     in the on-disk source directory until we've confirmed there's no
94     on-disk entry locally and there *is* one in the srcdir.  This avoids
95     creating a phantom Node that can interfere with dependencies on
96     directory contents.
97
98   - Add an AllowSubstExceptions() function that gives the SConscript
99     files control over what exceptions cause a string to expand to ''
100     vs. terminating processing with an error.
101
102   - Allow the f90.py and f95.py Tool modules to compile earlier source
103     source files of earlier Fortran version.
104
105   - Fix storing signatures of files retrieved from CacheDir() so they're
106     correctly identified as up-to-date next invocation.
107
108   - Make sure lists of computed source suffixes cached by Builder objects
109     don't persist across changes to the list of source Builders (so the
110     addition of suffixes like .ui by the qt.py Tool module take effect).
111
112   - Enhance the bootstrap.py script to allow it to be used to execute
113     SCons more easily from a checked-out source tree.
114
115   From Ben Leslie:
116
117   - Fix post-Memoizer value caching misspellings in Node.FS._doLookup().
118
119   From Rob Managan, Dmitry Mikhin and Joel B. Mohler:
120
121   - Handle TeX/LaTeX files in subdirectories by changing directory
122     before invoking TeX/LaTeX.
123
124   - Scan LaTeX files for \bibliography lines.
125
126   - Support multiple file names in a "\bibliography{file1,file2}" string.
127
128   - Handle TeX warnings about undefined citations.
129
130   - Support re-running LaTeX if necessary due to a Table of Contents.
131
132   From Dmitry Mikhin:
133
134   - Return LaTeX if "Rerun to get citations correct" shows up on the next
135     line after the "Warning:" string.
136
137   From Gary Oberbrunner:
138
139   - Add #include lines to fix portability issues in two tests.
140
141   - Eliminate some unnecessary os.path.normpath() calls.
142
143   - Add a $CFLAGS variable for C-specific options, leaving $CCFLAGS
144     for options common to C and C++.
145
146   From Tom Parker:
147
148   - Have the error message print the missing file that Qt can't find.
149
150   From John Pye:
151
152   - Fix env.MergeFlags() appending to construction variable value of None.
153
154   From Steve Robbins:
155
156   - Fix the "sconsign" script when the .sconsign.dblite file is explicitly
157     specified on the command line (and not intuited from the old way of
158     calling it with just ".sconsign").
159
160   From Jose Pablo Ezequiel "Pupeno" Fernandez Silva:
161
162   - Give the 'lex' tool knowledge of the additional target files produced
163     by the flex "--header-file=" and "--tables-file=" options.
164
165   - Give the 'yacc' tool knowledge of the additional target files produced
166     by the bison "-g", "--defines=" and "--graph=" options.
167
168   - Generate intermediate files with Objective C file suffixes (.m) when
169     the lex and yacc source files have appropriate suffixes (.lm and .ym).
170
171   From Sohail Somain:
172
173   - Have the mslink.py Tool only look for a 'link' executable on Windows
174     systems.
175
176   From Vaclav Smilauer:
177
178   - Add support for a "srcdir" keyword argument when calling a Builder,
179     which will add a srcdir prefix to all non-relative string sources.
180
181   From Jonathan Ultis:
182
183   - Allow Options converters to take the construction environment as
184     an optional argument.
185
186
187
188 RELEASE 0.96.93 - Mon, 06 Nov 2006 00:44:11 -0600
189
190   NOTE:  This is a pre-release of 0.97 for testing purposes.
191
192   From Anonymous:
193
194   - Allow arbitrary white space after a SWIG %module declaration.
195
196   From Paul:
197
198   - When compiling resources under MinGW, make sure there's a space 
199     between the --include-dir option and its argument.
200
201   From Jay Kint:
202
203   - Alleviate long command line issues on Windows by executing command
204     lines directly via os.spawnv() if the command line doesn't need
205     shell interpretation (has no pipes, redirection, etc.).
206
207   From Walter Franzini:
208
209   - Exclude additional Debian packaging files from the copyright check.
210
211   From Fawad Halim:
212
213   - Handle the conflict between the impending Python 2.6 'as' keyword
214     and our Tool/as.py module name.
215
216   From Steven Knight:
217
218   - Speed up the Node.FS.Dir.rel_path() method used to generate path names
219     that get put into the .sconsign* file(s).
220
221   - Optimize Node.FS.Base.get_suffix() by computing the suffix once, up
222     front, when we set the Node's name.  (Duh...)
223
224   - Reduce the Memoizer's responsibilities to simply counting hits and
225     misses when the --debug=memoizer option is used, not to actually
226     handling the key calculation and memoization itself.  This speeds
227     up some configurations significantly, and should cause no functional
228     differences.
229
230   - Add a new scons-time script with subcommands for generating
231     consistent timing output from SCons configurations, extracting
232     various information from those timings, and displaying them in
233     different formats.
234
235   - Reduce some unnecessary stat() calls from on-disk entry type checks.
236
237   - Fix SideEffect() when used with -j, which was badly broken in 0.96.93.
238
239   - Propagate TypeError exceptions when evaluating construction variable
240     expansions up the stack, so users can see what's going on.
241
242   - When disambiguating a Node.FS.Entry into a Dir or File, don't look
243     in the on-disk source directory until we've confirmed there's no
244     on-disk entry locally and there *is* one in the srcdir.  This avoids
245     creating a phantom Node that can interfere with dependencies on
246     directory contents.
247
248   - Add an AllowSubstExceptions() function that gives the SConscript
249     files control over what exceptions cause a string to expand to ''
250     vs. terminating processing with an error.
251
252   - Allow the f90.py and f95.py Tool modules to compile earlier source
253     source files of earlier Fortran version.
254
255   - Fix storing signatures of files retrieved from CacheDir() so they're
256     correctly identified as up-to-date next invocation.
257
258   - Make sure lists of computed source suffixes cached by Builder objects
259     don't persist across changes to the list of source Builders (so the
260     addition of suffixes like .ui by the qt.py Tool module take effect).
261
262   - Enhance the bootstrap.py script to allow it to be used to execute
263     SCons more easily from a checked-out source tree.
264
265   From Ben Leslie:
266
267   - Fix post-Memoizer value caching misspellings in Node.FS._doLookup().
268
269   From Rob Managan, Dmitry Mikhin and Joel B. Mohler:
270
271   - Handle TeX/LaTeX files in subdirectories by changing directory
272     before invoking TeX/LaTeX.
273
274   - Scan LaTeX files for \bibliography lines.
275
276   - Support multiple file names in a "\bibliography{file1,file2}" string.
277
278   - Handle TeX warnings about undefined citations.
279
280   - Support re-running LaTeX if necessary due to a Table of Contents.
281
282   From Dmitry Mikhin:
283
284   - Return LaTeX if "Rerun to get citations correct" shows up on the next
285     line after the "Warning:" string.
286
287   From Gary Oberbrunner:
288
289   - Add #include lines to fix portability issues in two tests.
290
291   - Eliminate some unnecessary os.path.normpath() calls.
292
293   - Add a $CFLAGS variable for C-specific options, leaving $CCFLAGS
294     for options common to C and C++.
295
296   From Tom Parker:
297
298   - Have the error message print the missing file that Qt can't find.
299
300   From John Pye:
301
302   - Fix env.MergeFlags() appending to construction variable value of None.
303
304   From Steve Robbins:
305
306   - Fix the "sconsign" script when the .sconsign.dblite file is explicitly
307     specified on the command line (and not intuited from the old way of
308     calling it with just ".sconsign").
309
310   From Jose Pablo Ezequiel "Pupeno" Fernandez Silva:
311
312   - Give the 'lex' tool knowledge of the additional target files produced
313     by the flex "--header-file=" and "--tables-file=" options.
314
315   - Give the 'yacc' tool knowledge of the additional target files produced
316     by the bison "-g", "--defines=" and "--graph=" options.
317
318   - Generate intermediate files with Objective C file suffixes (.m) when
319     the lex and yacc source files have appropriate suffixes (.lm and .ym).
320
321   From Sohail Somain:
322
323   - Have the mslink.py Tool only look for a 'link' executable on Windows
324     systems.
325
326   From Vaclav Smilauer:
327
328   - Add support for a "srcdir" keyword argument when calling a Builder,
329     which will add a srcdir prefix to all non-relative string sources.
330
331   From Jonathan Ultis:
332
333   - Allow Options converters to take the construction environment as
334     an optional argument.
335
336
337
338 RELEASE 0.96.93 - Mon, 06 Nov 2006 00:44:11 -0600
339
340   NOTE:  This is a pre-release of 0.97 for testing purposes.
341
342   From Anonymous:
343
344   - Allow Python Value Nodes to be Builder targets.
345
346   From Matthias:
347
348   - Only filter Visual Studio common filename prefixes on complete
349     directory names.
350
351   From Chad Austin:
352
353   - Fix the build of the SCons documentation on systems that don't
354     have "python" in the $PATH.
355
356   From Ken Boortz:
357
358   - Enhance ParseConfig() to recognize options that begin with '+'.
359
360   From John Calcote, Elliot Murphy:
361
362   - Document ways to override the CCPDBFLAGS variable to use the
363     Microsoft linker's /Zi option instead of the default /Z7.
364
365   From Christopher Drexler:
366
367   - Make SCons aware bibtex must be called if any \include files
368     cause creation of a bibliography.
369
370   - Make SCons aware that "\bilbiography" in TeX source files means
371     that related .bbl and .blg bibliography files will be created.
372     (NOTE:  This still needs to search for the string in \include files.)
373
374   From David Gruener:
375
376   - Fix inconsistent handling of Action strfunction arguments.
377
378   - Preserve white space in display Action strfunction strings.
379
380   From James Y. Knight and Gerard Patel:
381
382   - Support creation of shared object files from assembly language.
383
384   From Steven Knight:
385
386   - Speed up the Taskmaster significantly by avoiding unnecessary
387     re-scans of Nodes to find out if there's work to be done, having it
388     track the currently-executed top-level target directly and not
389     through its presence on the target list, and eliminating some other
390     minor list(s), method(s) and manipulation.
391
392   - Fix the expansion of $TARGET and $SOURCE in the expansion of
393     $INSTALLSTR displayed for non-environment calls to InstallAs().
394
395   - Fix the ability to have an Alias() call refer to a directory
396     name that's not identified as a directory until later.
397
398   - Enhance runtest.py with an option to use QMTest as the harness.
399     This will become the default behavior as we add more functionality
400     to the QMTest side.
401
402   - Let linking on mingw use the default function that chooses $CC (gcc)
403     or $CXX (g++) depending on whether there are any C++ source files.
404
405   - Work around a bug in early versions of the Python 2.4 profile module
406     that caused the --profile= option to fail.
407
408   - Only call Options validators and converters once when initializing a
409     construction environment.
410
411   - Fix the ability of env.Append() and env.Prepend(), in all known Python
412     versions, to handle different input value types when the construction
413     variable being updated is a dictionary.
414
415   - Add a --cache-debug option for information about what files it's
416     looking for in a CacheDir().
417
418   - Document the difference in construction variable expansion between
419     {Action,Builder}() and env.{Action,Builder}().
420
421   - Change the name of env.Copy() to env.Clone(), keeping the old name
422     around for backwards compatibility (with the intention of eventually
423     phasing it out to avoid confusion with the Copy() Action factory).
424
425   From Arve Knudsen:
426
427   - Support cleaning and scanning SWIG-generated files.
428
429   From Carsten Koch:
430
431   - Allow selection of Visual Studio version by setting $MSVS_VERSION
432     after construction environment initialization.
433
434   From Jean-Baptiste Lab:
435
436   - Try using zipimport if we can't import Tool or Platform modules
437     using the normal "imp" module.  This allows SCons to be packaged
438     using py2exe's all-in-one-zip-file approach.
439
440   From Ben Liblit:
441
442   - Do not re-scan files if the scanner returns no implicit dependencies.
443
444   From Sanjoy Mahajan:
445
446   - Change use of $SOURCES to $SOURCE in all TeX-related Tool modules.
447
448   From Joel B. Mohler:
449
450   - Make SCons aware that "\makeindex" in TeX source files means that
451     related .ilg, .ind and .idx index files will be created.
452     (NOTE:  This still needs to search for the string in \include files.)
453
454   - Prevent scanning the TeX .aux file for additional files from
455     trying to remove it twice when the -c option is used.
456
457   From Leanid Nazdrynau:
458
459   - Give the MSVC RES (resource) Builder a src_builder list and a .rc
460     src_suffix so other builders can generate .rc files.
461
462   From Matthew A. Nicholson:
463
464   - Enhance Install() and InstallAs() to handle directory trees as sources.
465
466   From Jan Nijtmans:
467
468   - Don't use the -fPIC flag when using gcc on Windows (e.g. MinGW).
469
470   From Greg Noel:
471
472   - Add an env.ParseFlags() method that provides separate logic for
473     parsing GNU tool chain flags into a dictionary.
474     
475   - Add an env.MergeFlags() method to apply an arbitrary dictionary
476     of flags to a construction environment's variables.
477
478   From Gary Oberbrunner:
479
480   - Fix parsing tripartite Intel C compiler version numbers on Linux.
481
482   - Extend the ParseConfig() function to recognize -arch and
483     -isysroot options.
484
485   - Have the error message list the known suffixes when a Builder call
486     can't build a source file with an unknown suffix.
487
488   From Karol Pietrzak:
489
490   - Avoid recursive calls to main() in the program snippet used by the
491     SConf subsystem to test linking against libraries.  This changes the
492     default behavior of CheckLib() and CheckLibWithHeader() to print
493     "Checking for C library foo..." instead of "Checking for main()
494     in C library foo...".
495
496   From John Pye:
497
498   - Throw an exception if a command called by ParseConfig() or
499     ParseFlags() returns an error.
500
501   From Stefan Seefeld:
502
503   - Initial infrastructure for running SCons tests under QMTest.
504
505   From Sohail Somani:
506
507   - Fix tests that fail due to gcc warnings.
508
509   From Dobes Vandermeer:
510
511   - In stack traces, print the full paths of SConscript files.
512
513   From Atul Varma:
514
515   - Fix detection of Visual C++ Express Edition.
516
517   From Dobes Vandermeer:
518
519   - Let the src_dir option to the SConscript() function affect all the 
520     the source file paths, instead of treating all source files paths
521     as relative to the SConscript directory itself.
522
523   From Nicolas Vigier:
524
525   - Fix finding Fortran modules in build directories.
526
527   - Fix use of BuildDir() when the source file in the source directory
528     is a symlink with a relative path.
529
530   From Edward Wang:
531
532   - Fix the Memoizer when the SCons Python modules are executed from
533     .pyo files at different locations from where they were compiled.
534
535   From Johan Zander:
536
537   - Fix missing os.path.join() when constructing the $FRAMEWORKSDKDIR/bin.
538
539
540
541 RELEASE 0.96.92 - Mon, 10 Apr 2006 21:08:22 -0400
542
543   NOTE:  This was a pre-release of 0.97 for testing purposes.
544
545   From Anonymous:
546
547   - Fix the intelc.py Tool module to not throw an exception if the
548     only installed version is something other than ia32.
549
550   - Set $CCVERSION when using gcc.
551
552   From Matthias:
553
554   - Support generating project and solution files for Microsoft
555     Visual Studio version 8.
556
557   - Support generating more than one project file for a Microsoft
558     Visual Studio solution file.
559
560   - Add support for a support "runfile" parameter to Microsoft
561     Visual Studio project file creation.
562
563   - Put the project GUID, not the solution GUID, in the right spot
564     in the solution file.
565
566   From Erling Andersen:
567
568   - Fix interpretation of Node.FS objects wrapped in Proxy instances,
569     allowing expansion of things like ${File(TARGET)} in command lines.
570
571   From Stanislav Baranov:
572
573   - Add a separate MSVSSolution() Builder, with support for the
574     following new construction variables: $MSVSBUILDCOM, $MSVSCLEANCOM,
575     $MSVSENCODING, $MSVSREBUILDCOM, $MSVSSCONS, $MSVSSCONSCOM,
576     $MSVSSCONSFLAGS, $MSVSSCONSCRIPT and $MSVSSOLUTIONCOM.
577
578   From Ralph W. Grosse-Kunstleve and Patrick Mezard:
579
580   - Remove unneceesary (and incorrect) SCons.Util strings on some function
581     calls in SCons.Util.
582
583   From Bob Halley:
584
585   - Fix C/C++ compiler selection on AIX to not always use the external $CC
586     environment variable.
587
588   From August Hörandl:
589
590   - Add a scanner for \include and \import files, with support for
591     searching a directory list in $TEXINPUTS (imported from the external
592     environment).
593
594   - Support $MAKEINDEX, $MAKEINDEXCOM, $MAKEINDEXCOMSTR and
595     $MAKEINDEXFLAGS for generating indices from .idx files.
596
597   From Steven Johnson:
598
599   - Add a NoClean() Environment method and function to override removal
600     of targets during a -c clean, including documentation and tests.
601
602   From Steven Knight:
603
604   - Check for whether files exist on disk by listing the directory
605     contents, not calling os.path.exists() file by file.  This is
606     somewhat more efficient in general, and may be significantly
607     more efficient on Windows.
608
609   - Minor speedups in the internal is_Dict(), is_List() and is_String()
610     functions.
611
612   - Fix a signature refactoring bug that caused Qt header files to
613     get re-generated every time.
614
615   - Don't fail when writing signatures if the .sconsign.dblite file is
616     owned by a different user (e.g. root) from a previous run.
617
618   - When deleting variables from stacked OverrideEnvironments, don't
619     throw a KeyError if we were able to delte the variable from any
620     Environment in the stack.
621
622   - Get rid of the last indentation tabs in the SCons source files and
623     add -tt to the Python invocations in the packaging build and the
624     tests so they don't creep back in.
625
626   - In Visual Studio project files, put quotes around the -C directory
627     so everything works even if the path has spaces in it.
628
629   - The Intel Fortran compiler uses -object:$TARGET, not "-o $TARGET",
630     when building object files on Windows.  Have the the ifort Tool
631     modify the default command lines appropriately.
632
633   - Document the --debug=explain option in the man page.  (How did we
634     miss this?)
635
636   - Add a $LATEXRETRIES variable to allow configuration of the number of
637     times LaTex can be re-called to try to resolve undefined references.
638
639   - Change the order of the arguments to Configure.Checklib() to match
640     the documentation.
641
642   - Handle signature calculation properly when the Python function used
643     for a FunctionAction is an object method.
644
645   - On Windows, assume that absolute path names without a drive letter
646     refer to the drive on which the SConstruct file lives.
647
648   - Add /usr/ccs/bin to the end of the the default external execution
649     PATH on Solaris.
650
651   - Add $PKGCHK and $PKGINFO variables for use on Solaris when searching
652     for the SunPRO C++ compiler.  Make the default value for $PKGCHK
653     be /usr/sbin/pgkchk (since /usr/sbin isn't usually on the external
654     execution $PATH).
655
656   - Fix a man page example of overriding variables when calling
657     SharedLibrary() to also set the $LIBSUFFIXES variable.
658
659   - Add a --taskmastertrace=FILE option to give some insight on how
660     the taskmaster decides what Node to build next.
661
662   - Changed the names of the old $WIN32DEFPREFIX, $WIN32DEFSUFFIX,
663     $WIN32DLLPREFIX and $WIN32IMPLIBPREFIX construction variables to
664     new $WINDOWSDEFPREFIX, $WINDOWSDEFSUFFIX, $WINDOWSDLLPREFIX and
665     $WINDOWSIMPLIBPREFIX construction variables.  The old names are now
666     deprecated, but preserved for backwards compatibility.
667
668   - Fix (?) a runtest.py hang on Windows when the --xml option is used.
669
670   - Change the message when an error occurs trying to interact with the
671     file system to report the target(s) in square brackets (as before) and
672     the actual file or directory that encountered the error afterwards.
673
674   From Chen Lee:
675
676   - Add x64 support for Microsoft Visual Studio 8.
677
678   From Baptiste Lepilleur:
679
680   - Support the --debug=memory option on Windows when the Python version
681     has the win32process and win32api modules.
682
683   - Add support for Visual Studio 2005 Pro.
684
685   - Fix portability issues in various tests: test/Case.py,
686     Test/Java/{JAR,JARCHDIR,JARFLAGS,JAVAC,JAVACFLAGS,JAVAH,RMIC}.py,
687     test/MSVS/vs-{6.0,7.0,7.1,8.0}-exec.py,
688     test/Repository/{Java,JavaH,RMIC}.py,
689     test/QT/{generated-ui,installed,up-to-date,warnings}.py,
690     test/ZIP/ZIP.py.
691
692   - Ignore pkgchk errors on Solaris when searching for the C++ compiler.
693
694   - Speed up the SCons/EnvironmentTests.py unit tests.
695
696   - Add a --verbose= option to runtest.py to print executed commands
697     and their output at various levels.
698
699   From Christian Maaser:
700
701   - Add support for Visual Studio Express Editions.
702
703   - Add support for Visual Studio 8 *.manifest files, includng
704     new $WINDOWS_INSERT_MANIFEST, $WINDOWSPROGMANIFESTSUFFIX,
705     $WINDOWSPROGMANIFESTPREFIX, $WINDOWSPROGMANIFESTSUFFIX,
706     $WINDOWSSHLIBMANIFESTPREFIX and $WINDOWSSHLIBMANIFESTSUFFIX
707     construction variables.
708
709   From Adam MacBeth:
710
711   - Fix detection of additional Java inner classes following use of a
712     "new" keyword inside an inner class.
713
714   From Sanjoy Mahajan:
715
716   - Correct TeX-related command lines to just $SOURCE, not $SOURCES
717
718   From Patrick Mezard:
719
720   - Execute build commands for a command-line target if any of the
721     files built along with the target is out of date or non-existent,
722     not just if the command-line target itself is out of date.
723
724   - Fix the -n option when used with -c to print all of the targets
725     that will be removed for a multi-target Builder call.
726
727   - If there's no file in the source directory, make sure there isn't
728     one in the build directory, too, to avoid dangling files left
729     over from previous runs when a source file is removed.
730
731   - Allow AppendUnique() and PrependUnique() to append strings (and
732     other atomic objects) to lists.
733
734   From Joel B. Mohler:
735
736   - Extend latex.py, pdflatex.py, pdftex.py and tex.py so that building
737     from both TeX and LaTeX files uses the same logic to call $BIBTEX
738     when it's necessary, to call $MAKEINDEX when it's necessary, and to
739     call $TEX or $LATEX multiple times to handle undefined references.
740
741   - Add an emitter to the various TeX builders so that the generated
742     .aux and .log files also get deleted by the -c option.
743
744   From Leanid Nazdrynau:
745
746   - Fix the Qt UIC scanner to work with generated .ui files (by using
747     the FindFile() function instead of checking by-hand for the file).
748
749   From Jan Nieuwenhuizen:
750
751   - Fix a problem with interpreting quoted argument lists on command lines.
752
753   From Greg Noel:
754
755   - Add /sw/bin to the default execution PATH on Mac OS X.
756
757   From Kian Win Ong:
758
759   - When building a .jar file and there is a $JARCHDIR, put the -C
760     in front of each .class file on the command line.
761
762   - Recognize the Java 1.5 enum keyword.
763
764   From Asfand Yar Qazi:
765
766   - Add /opt/bin to the default execution PATH on all POSIX platforms
767     (between /usr/local/bin and /bin).
768
769   From Jon Rafkind:
770
771   - Fix the use of Configure() contexts from nested subsidiary
772     SConscript files.
773
774   From Christoph Schulz:
775
776   - Add support for $CONFIGUREDIR and $CONFIGURELOG variables to control
777     the directory and logs for configuration tests.
778
779   - Add support for a $INSTALLSTR variable.
780
781   - Add support for $RANLIBCOM and $RANLIBCOMSTR variables (which fixes
782     a bug when setting $ARCOMSTR).
783
784   From Amir Szekely:
785
786   - Add use of $CPPDEFINES to $RCCOM (resource file compilation) on MinGW.
787
788   From Erick Tryzelaar:
789
790   - Fix the error message when trying to report that a given option is
791     not gettable/settable from an SConscript file.
792
793   From Dobes Vandermeer:
794
795   - Add support for SCC and other settings in Microsoft Visual
796     Studio project and solution files:  $MSVS_PROJECT_BASE_PATH,
797     $MSVS_PROJECT_GUID, $MSVS_SCC_AUX_PATH, $MSVS_SCC_LOCAL_PATH,
798     $MSVS_SCC_PROJECT_NAME, $MSVS_SCC_PROVIDER,
799
800   - Add support for using a $SCONS_HOME variable (imported from the
801     external environment, or settable internally) to put a shortened
802     SCons execution line in the Visual Studio project file.
803
804   From David J. Van Maren:
805
806   - Only filter common prefixes from source files names in Visual Studio
807     project files if the prefix is a complete (sub)directory name.
808
809   From Thad Ward:
810
811   - If $MSVSVERSIONS is already set, don't overwrite it with
812     information from the registry.
813
814
815
816 RELEASE 0.96.91 - Thu, 08 Sep 2005 07:18:23 -0400
817
818   NOTE:  This was a pre-release of 0.97 for testing purposes.
819
820   From Chad Austin:
821
822   - Have the environment store the toolpath and re-use it to find Tools
823     modules during later Copy() or Tool() calls (unless overridden).
824
825   - Normalize the directory path names in SConsignFile() database
826     files so the same signature file can interoperate on Windows and
827     non-Windows systems.
828
829   - Make --debug=stacktrace print a stacktrace when a UserError is thrown.
830
831   - Remove an old, erroneous cut-and-paste comment in Scanner/Dir.py.
832
833   From Stanislav Baranov:
834
835   - Make it possible to support with custom Alias (sub-)classes.
836
837   - Allow Builders to take empty source lists when called.
838
839   - Allow access to both TARGET and SOURCE in $*PATH expansions.
840
841   - Allow SConscript files to modify BUILD_TARGETS.
842
843   From Timothee Besset:
844
845   - Add support for Objective C/C++ .m and .mm file suffixes (for
846     Mac OS X).
847
848   From Charles Crain
849
850   - Fix the PharLap linkloc.py module to use target+source arguments
851     when calling env.subst().
852
853   From Bjorn Eriksson:
854
855   - Fix an incorrect Command() keyword argument in the man page.
856
857   - Add a $TEMPFILEPREFIX variable to control the prefix or flag used
858     to pass a long-command-line-execution tempfile to a command.
859
860   From Steven Knight:
861
862   - Enhanced the SCons setup.py script to install man pages on
863     UNIX/Linux systems.
864
865   - Add support for an Options.FormatOptionHelpText() method that can
866     be overridden to customize the format of Options help text.
867
868   - Add a global name for the Entry class (which had already been
869     documented).
870
871   - Fix re-scanning of generated source files for implicit dependencies
872     when the -j option is used.
873
874   - Fix a dependency problem that caused $LIBS scans to not be added
875     to all of the targets in a multiple-target builder call, which
876     could cause out-of-order builds when the -j option is used.
877
878   - Store the paths of source files and dependencies in the .sconsign*
879     file(s) relative to the target's directory, not relative to the
880     top-level SConstruct directory.  This starts to make it possible to
881     subdivide the dependency tree arbitrarily by putting an SConstruct
882     file in every directory and using content signatures.
883
884   - Add support for $YACCHFILESUFFIX and $YACCHXXFILESUFFIX variables
885     that accomodate parser generators that write header files to a
886     different suffix than the hard-coded .hpp when the -d option is used.
887
888   - The default behavior is now to store signature information in a
889     single .sconsign.dblite file in the top-level SConstruct directory.
890     The old behavior of a separate .sconsign file in each directory can
891     be specified by calling SConsignFile(None).
892
893   - Remove line number byte codes within the signature calculation
894     of Python function actions, so that changing the location of an
895     otherwise unmodified Python function doesn't cause rebuilds.
896
897   - Fix AddPreAction() and AddPostAction() when an action has more than
898     one target file:  attach the actions to the Executor, not the Node.
899
900   - Allow the source directory of a BuildDir / build_dir to be outside
901     of the top-level SConstruct directory tree.
902
903   - Add a --debug=nomemoizer option that disables the Memoizer for clearer
904     looks at the counts and profiles of the underlying function calls,
905     not the Memoizer wrappers.
906
907   - Print various --debug= stats even if we exit early (e.g. using -h).
908
909   - Really only use the cached content signature value if the file
910     is older than --max-drift, not just if --max-drift is set.
911
912   - Remove support for conversion from old (pre 0.96) .sconsign formats.
913
914   - Add support for a --diskcheck option to enable or disable various
915     on-disk checks:  that File and Dir nodes match on-disk entries;
916     whether an RCS file exists for a missing source file; whether an
917     SCCS file exists for a missing source file.
918
919   - Add a --raw argument to the sconsign script, so it can print a
920     raw representation of each entry's NodeInfo dictionary.
921
922   - Add the 'f90' and 'f95' tools to the list of Fortran compilers
923     searched for by default.
924
925   - Add the +Z option by default when compiling shared objects on
926     HP-UX.
927
928   From Chen Lee:
929
930   - Handle Visual Studio project and solution files in Unicode.
931
932   From Sanjoy Mahajan:
933
934   - Fix a bad use of Copy() in an example in the man page, and a
935     bad regular expression example in the man page and User's Guide.
936
937   From Shannon Mann:
938
939   - Have the Visual Studio project file(s) echo "Starting SCons" before
940     executing SCons, mainly to work around a quote-stripping bug in
941     (some versions of?) the Windows cmd command executor.
942
943   From Georg Mischler:
944
945   - Remove the space after the -o option when invoking the Borland
946     BCC compiler; some versions apparently require that the file name
947     argument be concatenated with the option.
948
949   From Leanid Nazdrynau:
950
951   - Fix the Java parser's handling of backslashes in strings.
952
953   From Greg Noel:
954
955   - Add construction variables to support frameworks on Mac OS X:
956     $FRAMEWORKS, $FRAMEWORKPREFIX, $FRAMEWORKPATH, $FRAMEWORKPATHPREFIX.
957
958   - Re-order link lines so the -o option always comes right after the
959     command name.
960
961   From Gary Oberbrunner:
962
963   - Add support for Intel C++ beta 9.0 (both 32 and 64 bit versions).
964
965   - Document the new $FRAMEWORK* variables for Mac OS X.
966
967   From Karol Pietrzak:
968
969   - Add $RPATH (-R) support to the Sun linker Tool (sunlink).
970
971   - Add a description of env.subst() to the man page.
972
973   From Chris Prince:
974
975   - Look in the right directory, not always the local directory, for a
976     same-named file or directory conflict on disk.
977
978   - On Windows, preserve the external environment's %SYSTEMDRIVE%
979     variable, too.
980
981   From Craig Scott:
982
983   - Have the Fortran module emitter look for Fortan modules to be created
984     relative to $FORTRANMODDIR, not the top-level directory.
985
986   - When saving Options to a file, run default values through the
987     converter before comparing them with the set values.  This correctly
988     suppresses Boolean Option values from getting written to the saved
989     file when they're one of the many synonyms for a default True or
990     False value.
991
992   - Fix the Fortran Scanner's ability to handle a module being used
993     in the same file in which it is defined.
994
995   From Steve-o:
996
997   - Add the -KPIC option by default when compiling shared objects on
998     Solaris.
999
1000   - Change the default suffix for Solaris objects to .o, to conform to
1001     Sun WorkShop's expectations.  Change the profix to so_ so they can
1002     still be differentiated from static objects in the same directory.
1003
1004   From Amir Szekely:
1005
1006   - When calling the resource compiler on MinGW, add --include-dir and
1007     the source directory so it finds the source file.
1008
1009   - Update EnsureSConsVersion() to support revision numbers.
1010
1011   From Greg Ward:
1012
1013   - Fix a misplaced line in the man page.
1014
1015
1016
1017 RELEASE 0.96.90 - Tue, 15 Feb 2005 21:21:12 +0000
1018
1019   NOTE:  This was a pre-release of 0.97 for testing purposes.
1020
1021   From Anonymous:
1022
1023   - Fix Java parsing to avoid erroneously identifying a new array
1024     of class instances as an anonymous inner class.
1025
1026   - Fix a typo in the man page description of PathIsDirCreate.
1027
1028   From Chad Austin:
1029
1030   - Allow Help() to be called multiple times, appending to the help
1031     text each call.
1032
1033   - Allow Tools found on a toolpath to import Python modules from
1034     their local directory.
1035
1036   From Steve Christensen:
1037
1038   - Handle exceptions from Python functions as build actions.
1039
1040   - Add a set of canned PathOption validators:  PathExists (the default),
1041     PathIsFile, PathIsDir and PathIsDirCreate.
1042
1043   From Matthew Doar:
1044
1045   - Add support for .lex and .yacc file suffixes for Lex and Yacc files.
1046
1047   From Eric Frias:
1048
1049   - Huge performance improvement:  wrap the tuples representing an
1050     include path in an object, so that the time it takes to hash the
1051     path doesn't grow porportionally to the length of the path.
1052
1053   From Gottfried Ganssauge:
1054
1055   - Fix SCons on SuSE/AMD-64 Linux by having the wrapper script also
1056     check for the build engine in the parent directory of the Python
1057     library directory (/usr/lib64 instead of /usr/lib).
1058
1059   From Stephen Kennedy:
1060
1061   - Speed up writing the .sconsign file at the end of a run by only
1062     calling sync() once at the end, not after every entry.
1063
1064   From Steven Knight:
1065
1066   - When compiling with Microsoft Visual Studio, don't include the ATL and
1067     MFC directories in the default INCLUDE and LIB environment variables.
1068
1069   - Remove the following deprecated features:  the ParseConfig()
1070     global function (deprecated in 0.93); the misspelled "validater"
1071     keyword to the Options.Add() method (deprecated in 0.91); the
1072     SetBuildSignatureType(), SetContentSignatureType(), SetJobs() and
1073     GetJobs() global functions (deprecated in 0.14).
1074
1075   - Fix problems with corrupting the .sconsign.dblite file when
1076     interrupting builds by writing to a temporary file and renaming,
1077     not writing the file directly.
1078
1079   - Fix a 0.96 regression where when running with -k, targets built from
1080     walking dependencies later on the command line would not realize
1081     that a dependency had failed an earlier build attempt, and would
1082     try to rebuild the dependent targets.
1083
1084   - Change the final messages when using -k and errors occur from
1085     "{building,cleaning} terminated because of errors" to "done
1086     {building,cleaning} targets (errors occurred during {build,clean})."
1087
1088   - Allow Configure.CheckFunc() to take an optional header argument
1089     (already supported by Conftest.py) to specify text at the top of
1090     the compiled test file.
1091
1092   - Fix the --debug=explain output when a Python function action changed
1093     so it prints a meaningful string, not the binary representation of
1094     the function contents.
1095
1096   - Allow a ListOption's default value(s) to be a Python list of specified
1097     values, not just a string containing a comma-separated list of names.
1098
1099   - Add a ParseDepends() function that will parse up a list of explicit
1100     dependencies from a "make depend" style file.
1101
1102   - Support the ability to change directory when executing an Action
1103     through "chdir" keyword arguments to Action and Builder creation
1104     and calls.
1105
1106   - Fix handling of Action ojects (and other callables that don't match
1107     our calling arguments) in construction variable expansions.
1108
1109   - On Win32, install scons.bat in the Python directory when installing
1110     from setup.py.  (The bdist_wininst installer was already doing this.)
1111
1112   - Fix env.SConscript() when called with a list of SConscipt files.
1113     (The SConscript() global function already worked properly.)
1114
1115   - Add a missing newline to the end of the --debug=explain "unknown
1116     reasons" message.
1117
1118   - Enhance ParseConfig() to work properly for spaces in between the -I,
1119     -L and -l options and their arguments.
1120
1121   - Packaging build fix:  Rebuild the files that are use to report the
1122     --version of SCons whenever the development version number changes.
1123
1124   - Fix the ability to specify a target_factory of Dir() to a Builder,
1125     which the default create-a-directory Builder was interfering with.
1126
1127   - Mark a directory as built if it's created as part of the preparation
1128     for another target, to avoid trying to build it again when it comes
1129     up in the target list.
1130
1131   - Allow a function with the right calling signature to be put directly
1132     in an Environment's BUILDERS dictionary, making for easier creation
1133     and use of wrappers (pseudo-Builders) that call other Builders.
1134
1135   - On Python 2.x, wrap lists of Nodes returned by Builders in a UserList
1136     object that adds a method that makes str() object return a string
1137     with all of the Nodes expanded to their path names.  (Builders under
1138     Python 1.5.2 still return lists to avoid TypeErrors when trying
1139     to extend() list, so Python 1.5.2 doesn't get pretty-printing of Node
1140     lists, but everything should still function.)
1141
1142   - Allow Aliases to have actions that will be executed whenever
1143     any of the expanded Alias targets are out of date.
1144
1145   - Fix expansion of env.Command() overrides within target and
1146     source file names.
1147
1148   - Support easier customization of what's displayed by various default
1149     actions by adding lots of new construction variables: $ARCOMSTR,
1150     $ASCOMSTR, $ASPPCOMSTR, $BIBTEXCOMSTR, $BITKEEPERCOMSTR, $CCCOMSTR,
1151     $CVSCOMSTR, $CXXCOMSTR, $DCOMSTR, $DVIPDFCOMSTR, $F77COMSTR,
1152     $F90COMSTR, $F95COMSTR, $FORTRANCOMSTR, $GSCOMSTR, $JARCOMSTR,
1153     $JAVACCOMSTR, $JAVAHCOMSTR, $LATEXCOMSTR, $LEXCOMSTR, $LINKCOMSTR,
1154     $M4COMSTR, $MIDLCOMSTR, $P4COMSTR, $PCHCOMSTR, $PDFLATEXCOMSTR,
1155     $PDFTEXCOMSTR, $PSCOMSTR, $QT_MOCFROMCXXCOMSTR, $QT_MOCFROMHCOMSTR,
1156     $QT_UICCOMSTR, $RCCOMSTR, $REGSVRCOMSTR, $RCS_COCOMSTR, $RMICCOMSTR,
1157     $SCCSCOMSTR, $SHCCCOMSTR, $SHCXXCOMSTR, $SHF77COMSTR, $SHF90COMSTR,
1158     $SHF95COMSTR, $SHFORTRANCOMSTR, $SHLINKCOMSTR, $SWIGCOMSTR,
1159     $TARCOMSTR, $TEXCOMSTR, $YACCCOMSTR and $ZIPCOMSTR.
1160
1161   - Add an optional "map" keyword argument to ListOption() that takes a
1162     dictionary to map user-specified values to legal values from the list
1163     (like EnumOption() already doee).
1164
1165   - Add specific exceptions to try:-except: blocks without any listed,
1166     so that they won't catch and mask keyboard interrupts.
1167
1168   - Make --debug={tree,dtree,stree} print something even when there's
1169     a build failure.
1170
1171   - Fix how Scanners sort the found dependencies so that it doesn't
1172     matter whether the dependency file is in a Repository or not.
1173     This may cause recompilations upon upgrade to this version.
1174
1175   - Make AlwaysBuild() work with Alias and Python value Nodes (making
1176     it much simpler to support aliases like "clean" that just invoke
1177     an arbitrary action).
1178
1179   - Have env.ParseConfig() use AppendUnique() by default to suppress
1180     duplicate entries from multiple calls.  Add a "unique" keyword
1181     argument to allow the old behavior to be specified.
1182
1183   - Allow the library modules imported by an SConscript file to get at
1184     all of the normally-available global functions and variables by saying
1185     "from SCons.Script import *".
1186
1187   - Add a --debug=memoizer option to print Memoizer hit/mass statistics.
1188
1189   - Allow more than one --debug= option to be set at a time.
1190
1191   - Change --debug=count to report object counts before and after
1192     reading SConscript files and before and after building targets.
1193
1194   - Change --debug=memory output to line up the numbers and to better
1195     match (more or less) the headers on the --debug=count columns.
1196
1197   - Speed things up when there are lists of targets and/or sources by
1198     getting rid of some N^2 walks of the lists involved.
1199
1200   - Cache evaluation of LazyActions so we don't create a new object
1201     for each invocation.
1202
1203   - When scanning, don't create Nodes for include files that don't
1204     actually exist on disk.
1205
1206   - Make supported global variables CScanner, DScanner, ProgramScanner and
1207     SourceFileScanner.  Make SourceFileScanner.add_scanner() a supported
1208     part of the public interface.  Keep the old SCons.Defaults.*Scan names
1209     around for a while longer since some people were already using them.
1210
1211   - By default, don't scan directories for on-disk files.  Add a
1212     DirScanner global scanner that can be used in Builders or Command()
1213     calls that want source directory trees scanned for on-disk changes.
1214     Have the Tar() and Zip() Builders use the new DirScanner to preserve
1215     the behavior of rebuilding a .tar or .zip file if any file or
1216     directory under a source tree changes.  Add Command() support for
1217     a source_scanner keyword argument to Command() that can be set to
1218     DirScanner to get this behavior.
1219
1220   - Documentation changes:  Explain that $CXXFLAGS contains $CCFLAGS
1221     by default.  Fix a bad target_factory example in the man page.
1222     Add appendices to the User's Guide to cover the available Tools,
1223     Builders and construction variables.  Comment out the build of
1224     the old Python 10 paper, which doesn't build on all systems and
1225     is old enough at this point that it probably isn't worth the
1226     effort to make it do so.
1227
1228   From Wayne Lee:
1229
1230   - Avoid "maximum recursion limit" errors when removing $(-$) pairs
1231     from long command lines.
1232
1233   From Clive Levinson:
1234
1235   - Make ParseConfig() recognize and add -mno-cygwin to $LINKFLAGS and
1236     $CCFLAGS, and -mwindows to $LINKFLAGS.
1237
1238   From Michael McCracken:
1239
1240   - Add a new "applelink" tool to handle the things like Frameworks and
1241     bundles that Apple has added to gcc for linking.
1242
1243   - Use more appropriate default search lists of linkers, compilers and
1244     and other tools for the 'darwin' platform.
1245
1246   - Add a LoadableModule Builder that builds a bundle on Mac OS X (Darwin)
1247     and a shared library on other systems.
1248
1249   - Improve SWIG tests for use on Mac OS X (Darwin).
1250
1251   From Elliot Murphy:
1252
1253   - Enhance the tests to guarantee persistence of ListOption
1254     values in saved options files.
1255
1256   - Supply the help text when -h is used with the -u, -U or -D options.
1257
1258   From Christian Neeb:
1259
1260   - Fix the Java parser's handling of string definitions to avoid ignoring
1261     subsequent code.
1262
1263   From Han-Wen Nienhuys:
1264
1265   - Optimize variable expansion by:  using the re.sub() method (when
1266     possible); not using "eval" for variables for which we can fetch the
1267     value directory; avoiding slowing substitution logic when there's no
1268     '$' in the string.
1269
1270   From Gary Oberbrunner:
1271
1272   - Add an Environment.Dump() method to print the contents of a
1273     construction environment.
1274
1275   - Allow $LIBS (and similar variables) to contain explicit File Nodes.
1276
1277   - Change ParseConfig to add the found library names directly to the
1278     $LIBS variable, instead of returning them.
1279
1280   - Add ParseConfig() support for the -framework GNU linker option.
1281
1282   - Add a PRINT_CMD_LINE_FUNC construction variable to allow people
1283     to filter (or log) command-line output.
1284
1285   - Print an internal Python stack trace in response to an otherwise
1286     unexplained error when --debug=stacktrace is specified.
1287
1288   - Add a --debug=findlibs option to print what's happening when
1289     the scanner is searching for libraries.
1290
1291   - Allow Tool specifications to be passed a dictionary of keyword
1292     arguments.
1293
1294   - Support an Options default value of None, in which case the variable
1295     will not be added to the construction environment unless it's set
1296     explicitly by the user or from an Options file.
1297
1298   - Avoid copying __builtin__ values into a construction environment's
1299     dictionary when evaluating construction variables.
1300
1301   - Add a new cross-platform intelc.py Tool that can detect and
1302     configure the Intel C++ v8 compiler on both Windows, where it's
1303     named icl, and Linux, where it's named icc.  It also checks that
1304     the directory specified in the Windows registry exists, and sets a
1305     new $INTEL_C_COMPILER_VERSION construction variable to identify the
1306     version being used.  (Niall Douglas contributed an early prototype
1307     of parts of this module.)
1308
1309   - Fix the private Conftest._Have() function so it doesn't change
1310     non-alphanumeric characters to underscores.
1311
1312   - Supply a better error message when a construction variable expansion
1313     has an unknown attribute.
1314
1315   - Documentation changes:  Update the man page to describe use of
1316     filenames or Nodes in $LIBS.
1317
1318   From Chris Pawling:
1319
1320   - Have the linkloc tool use $MSVS_VERSION to select the Microsoft
1321     Visual Studio version to use.
1322
1323   From Kevin Quick:
1324
1325   - Fix the Builder name returned from ListBuilders and other instances
1326     of subclasses of the BuilderBase class.
1327
1328   - Add Builders and construction variables to support rpcgen:
1329     RPCGenClient(), RPCGenHeader(), RPCGenService(), RPCGenXDR(),
1330     $RPCGEN, $RPCGENFLAGS, $RPCGENCLIENTFLAGS, $RPCGENHEADERFLAGS,
1331     $RPCGENSERVICEFLAGS, $RPCGENXDRFLAGS.
1332
1333   - Update the man page to document that prefix and suffix Builder
1334     keyword arguments can be strings, callables or dictionaries.
1335
1336   - Provide more info in the error message when a user tries to build
1337     a target multiple ways.
1338
1339   - Fix Delete() when a file doesn't exist and must_exist=1.  (We were
1340     unintentionally dependent on a bug in versions of the Python shutil.py
1341     module prior to Python 2.3, which would generate an exception for
1342     a nonexistent file even when ignore_errors was set.)
1343
1344   - Only replace a Node's builder with a non-null source builder.
1345
1346   - Fix a stack trace when a suffix selection dictionary is passed
1347     an empty source file list.
1348
1349   - Allow optional names to be attached to Builders, for default
1350     Builders that don't get attached to construction environments.
1351
1352   - Fix problems with Parallel Task Exception handling.
1353
1354   - Build targets in an associated BuildDir even if there are targets
1355     or subdirectories locally in the source directory.
1356
1357   - If a FunctionAction has a callable class as its underlying Python
1358     function, use its strfunction() method (if any) to display the
1359     action.
1360
1361   - Fix handling when BuildDir() exists but is unwriteable.  Add
1362     "Stop." to those error messages for consistency.
1363
1364   - Catch incidents of bad builder creation (without an action) and
1365     supply meaningful error messages.
1366
1367   - Fix handling of src_suffix values that aren't extensions (don't
1368     begin with a '.').
1369
1370   - Don't retrieve files from a CacheDir, but report what would happen,
1371     when the -n option is used.
1372
1373   - Use the source_scanner from the target Node, not the source node
1374     itself.
1375
1376   - Internal Scanners fixes:  Make sure Scanners are only passed Nodes.
1377     Fix how a Scanner.Selector called its base class initialization.
1378     Make comparisons of Scanner objects more robust.  Add a name to
1379     an internal default ObjSourceScanner.
1380
1381   - Add a deprecated warning for use of the old "scanner" keyword argument
1382     to Builder creation.
1383
1384   - Improve the --debug=explain message when the build action changes.
1385
1386   - Test enhancements in SourceCode.py, option-n.py, midl.py.  Better
1387     Command() and Scanner test coverage.  Improved test infrastructure
1388     for -c output.
1389
1390   - Refactor the interface between Action and Executor objects to treat
1391     Actions atomically.
1392
1393   - The --debug=presub option will now report the pre-substitution
1394     each action seprately, instead of reporting the entire list before
1395     executing the actions one by one.
1396
1397   - The --debug=explain option explaining a changed action will now
1398     (more correctly) show pre-substitution action strings, instead of
1399     the commands with substituted file names.
1400
1401   - A Node (file) will now be rebuilt if its PreAction or PostAction
1402     actions change.
1403
1404   - Python Function actions now have their calling signature (target,
1405     source, env) reported correctly when displayed.
1406
1407   - Fix BuildDir()/build_dir handling when the build_dir is underneath
1408     the source directory and trying to use entries from the build_dir
1409     as sources for other targets in the build-dir.
1410
1411   - Fix hard-coding of JDK path names in various Java tests.
1412
1413   - Handle Python stack traces consistently (stop at the SConscript stack
1414     frame, by default) even if the Python source code isn't available.
1415
1416   - Improve the performance of the --debug={tree,dtree} options.
1417
1418   - Add --debug=objects logging of creation of OverrideWarner,
1419     EnvironmentCopy and EnvironmentOverride objects.
1420
1421   - Fix command-line expansion of Python Value Nodes.
1422
1423   - Internal cleanups:  Remove an unnecessary scan argument.  Associate
1424     Scanners only with Builders, not nodes.  Apply overrides once when
1425     a Builder is called, not in multiple places.  Cache results from the
1426     Node.FS.get_suffix() and Node.get_build_env() methods.  Use the Python
1427     md5 modules' hexdigest() method, if there is one.  Have Taskmaster
1428     call get_stat() once for each Node and re-use the value instead of
1429     calling it each time it needs the value.  Have Node.depends_on()
1430     re-use the list from the children() method instead of calling it
1431     multiple times.
1432
1433   - Use the correct scanner if the same source file is used for targets in
1434     two different environments with the same path but different scanners.
1435
1436   - Collect logic for caching values in memory in a Memoizer class,
1437     which cleans up a lot of special-case code in various methods and
1438     caches additional values to speed up most configurations.
1439
1440   - Add a PathAccept validator to the list of new canned PathOption
1441     validators.
1442
1443   From Jeff Squyres:
1444
1445   - Documentation changes:  Use $CPPDEFINES instead of $CCFLAGS in man
1446     page examples.
1447
1448   From Levi Stephen:
1449
1450   - Allow $JARCHDIR to be expanded to other construction variables.
1451
1452   From Christoph Wiedemann:
1453
1454   - Add an Environment.SetDefault() method that only sets values if
1455     they aren't already set.
1456
1457   - Have the qt.py Tool not override variables already set by the user.
1458
1459   - Add separate $QT_BINPATH, $QT_CPPPATH and $QT_LIBPATH variables
1460     so these can be set individually, instead of being hard-wired
1461     relative to $QTDIR.
1462
1463   - The %TEMP% and %TMP% external environment variables are now propagated
1464     automatically to the command execution environment on Windows systems.
1465
1466   - A new --config= command-line option allows explicit control of
1467     of when the Configure() tests are run:  --config=force forces all
1468     checks to be run, --config=cache uses all previously cached values,
1469     --config=auto (the default) runs tests only when dependency analysis
1470     determines it's necessary.
1471
1472   - The Configure() subsystem can now write a config.h file with values
1473     like HAVE_STDIO_H, HAVE_LIBM, etc.
1474
1475   - The Configure() subsystem now executes its checks silently when the
1476     -Q option is specified.
1477
1478   - The Configure() subsystem now reports if a test result is being
1479     taken from cache, and prints the standard output and error output
1480     of tests even when cached.
1481
1482   - Configure() test results are now reported as "yes" or "no" instead of
1483     "ok" or "failed."
1484
1485   - Fixed traceback printing when calling the env.Configure() method
1486     instead of the Configure() global function.
1487
1488   - The Configure() subsystem now caches build failures in a .sconsign
1489     file in the subdirectory, not a .cache file.  This may cause
1490     tests to be re-executed the first time after you install 0.97.
1491
1492   - Additional significant internal cleanups in the Configure() subsystem
1493     and its tests.
1494
1495   - Have the Qt Builder make uic-generated files dependent on the .ui.h
1496     file, if one exists.
1497
1498   - Add a test to make sure that SCons source code does not contain
1499     try:-except: blocks that catch all errors, which potentially catch
1500     and mask keyboard interrupts.
1501
1502   - Fix us of TargetSignatures('content') with the SConf subsystem.
1503
1504   From Russell Yanofsky:
1505
1506   - Add support for the Metrowerks Codewarrior compiler and linker
1507     (mwcc and mwld).
1508
1509
1510
1511 RELEASE 0.96.1 - Mon, 23 Aug 2004 12:55:50 +0000
1512
1513   From Craig Bachelor:
1514
1515   - Handle white space in the executable Python path name within in MSVS
1516     project files by quoting the path.
1517
1518   - Correct the format of a GUID string in a solution (.dsw) file so
1519     MSVS can correctly "build enable" a project.
1520
1521   From Steven Knight:
1522
1523   - Add a must_exist flag to Delete() to let the user control whether
1524     it's an error if the specified entry doesn't exist.  The default
1525     behavior is now to silently do nothing if it doesn't exist.
1526
1527   - Package up the new Platform/darwin.py, mistakenly left out of 0.96.
1528
1529   - Make the scons.bat REM statements into @REM so they aren't printed.
1530
1531   - Make the SCons packaging SConscript files platform independent.
1532
1533   From Anthony Roach:
1534
1535   - Fix scanning of pre-compiled header (.pch) files for #includes,
1536     broken in 0.96.
1537
1538
1539
1540 RELEASE 0.96 - Wed, 18 Aug 2004 13:36:40 +0000
1541
1542   From Chad Austin:
1543
1544   - Make the CacheDir() directory if it doesn't already exist.
1545
1546   - Allow construction variable substitutions in $LIBS specifications.
1547
1548   - Allow the emitter argument to a Builder() to be or expand to a list
1549     of emitter functions, which will be called in sequence.
1550
1551   - Suppress null values in construction variables like $LIBS that use
1552     the internal _concat() function.
1553
1554   - Remove .dll files from the construction variables searched for
1555     libraries that can be fed to Win32 compilers.
1556
1557   From Chad Austin and Christoph Wiedemann:
1558
1559   - Add support for a $RPATH variable to supply a list of directories
1560     to search for shared libraries when linking a program.  Used by
1561     the GNU and IRIX linkers (gnulink and sgilink).
1562
1563   From Charles Crain:
1564
1565   - Restore the ability to do construction variable substitutions in all
1566     kinds of *PATH variables, even when the substitution returns a Node
1567     or other object.
1568
1569   From Tom Epperly:
1570
1571   - Allow the Java() Builder to take more than one source directory.
1572
1573   From Ralf W. Grosse-Kunstleve:
1574
1575   - Have SConsignFile() use, by default, a custom "dblite.py" that we can
1576     control and guarantee to work on all Python versions (or nearly so).
1577
1578   From Jonathan Gurley:
1579
1580   - Add support for the newer "ifort" versions of the Intel Fortran
1581     Compiler for Linux.
1582
1583   From Bob Halley:
1584
1585   - Make the new *FLAGS variable type work with copied Environments.
1586
1587   From Chris Hoeppler:
1588
1589   - Initialize the name of a Scanner.Classic scanner correctly.
1590
1591   From James Juhasz:
1592
1593   - Add support for the .dylib shared library suffix and the -dynamiclib
1594     linker option on Mac OS X.
1595
1596   From Steven Knight:
1597
1598   - Add an Execute() method for executing actions directly.
1599
1600   - Support passing environment override keyword arguments to Command().
1601
1602   - Fix use of $MSVS_IGNORE_IDE_PATHS, which was broken when we added
1603     support for $MSVS_USE_MFC_DIRS last release.
1604
1605   - Make env.Append() and env.Prepend() act like the underlying Python
1606     behavior when the variable being appended to is a UserList object.
1607
1608   - Fix a regression that prevented the Command() global function in
1609     0.95 from working with command-line strings as actions.
1610
1611   - Fix checking out a file from a source code management system when
1612     the env.SourceCode() method was called with an individual file name
1613     or node, not a directory name or node.
1614
1615   - Enhance the Task.make_ready() method to create a list of the
1616     out-of-date Nodes for the task for use by the wrapping interface.
1617
1618   - Allow Scanners to pull the list of suffixes from the construction
1619     environment when the "skeys" keyword argument is a string containing
1620     a construction variable to be expanded.
1621
1622   - Support new $CPPSUFFIXES, $DSUFFIXES $FORTRANSUFFIXES, and
1623     $IDLSUFFIXES.  construction variables that contain the default list
1624     of suffixes to be scanned by a given type of scanner, allowing these
1625     suffix lists to be easily added to or overridden.
1626
1627   - Speed up Node creation when calling a Builder by comparing whether two
1628     Environments are the same object, not if their underlying dictionaries
1629     are equivalent.
1630
1631   - Add a --debug=explain option that reports the reason(s) why SCons
1632     thinks it must rebuild something.
1633
1634   - Add support for functions that return platform-independent Actions
1635     to Chmod(), Copy(), Delete(), Mkdir(), Move() and Touch() files
1636     and/or directories.  Like any other Actions, the returned Action
1637     object may be executed directly using the Execute() global function
1638     or env.Execute() environment method, or may be used as a Builder
1639     action or in an env.Command() action list.
1640
1641   - Add support for the strfunction argument to all types of Actions:
1642     CommandAction, ListAction, and CommandGeneratorAction.
1643
1644   - Speed up turning file system Nodes into strings by caching the
1645     values after we're finished reading the SConscript files.
1646
1647   - Have ParseConfig() recognize and supporting adding the -Wa, -Wl,
1648     and -Wp, flags to ASFLAGS, LINKFLAGS and CPPFLAGS, respectively.
1649
1650   - Change the .sconsign format and the checks for whether a Node is
1651     up-to-date to make dependency checks more efficient and correct.
1652
1653   - Add wrapper Actions to SCons.Defaults for $ASCOM, $ASPPCOM, $LINKCOM,
1654     $SHLINKCOM, $ARCOM, $LEXCOM and $YACCCOM.  This makes it possible
1655     to replace the default print behavior with a custom strfunction()
1656     for each of these.
1657
1658   - When a Node has been built, don't walk the whole tree back to delete
1659     the parents's implicit dependencies, let returning up the normal
1660     Taskmaster descent take care of it for us.
1661
1662   - Add documented support for separate target_scanner and source_scanner
1663     arguments to Builder creation, which allows different scanners to
1664     be applied to source files
1665
1666   - Don't re-install or (re-generate) .h files when a subsidiary #included
1667     .h file changes.  This eliminates incorrect circular dependencies
1668     with .h files generated from other source files.
1669
1670   - Slim down the internal Sig.Calculator class by eliminating methods
1671     whose functionality is now covered by Node methods.
1672
1673   - Document use of the target_factory and source_factory keyword
1674     arguments when creating Builder objects.  Enhance Dir Nodes so that
1675     they can be created with user-specified Builder objects.
1676
1677   - Don't blow up with stack trace when the external $PATH environment
1678     variable isn't set.
1679
1680   - Make Builder calls return lists all the time, even if there's only
1681     one target.  This keeps things consistent and easier to program to
1682     across platforms.
1683
1684   - Add a Flatten() function to make it easier to deal with the Builders
1685     all returning lists of targets, not individual targets.
1686
1687   - Performance optimizations in Node.FS.__doLookup().
1688
1689   - Man page fixes:  formatting typos, misspellings, bad example.
1690
1691   - User's Guide fixes: Fix the signatures of the various example
1692     *Options() calls.  Triple-quote properly a multi-line Split example.
1693
1694   - User's Guide additions:  Chapter describing File and Directory
1695     Nodes.  Section describing declarative nature of SCons functions in
1696     SConscript files.  Better organization and clarification of points
1697     raised by Robert P. J. Day.  Chapter describing SConf (Autoconf-like)
1698     functionality.  Chapter describing how to install Python and
1699     SCons.  Chapter describing Java builds.
1700
1701   From Chris Murray:
1702
1703   - Add a .win32 attribute to force file names to expand with
1704     Windows backslash path separators.
1705
1706   - Fix escaping file names on command lines when the expansion is
1707     concatenated with another string.
1708
1709   - Add support for Fortran 90 and Fortran 95.  This adds $FORTRAN*
1710     variables that specify a default compiler, command-line, flags,
1711     etc. for all Fortran versions, plus separate $F90* and $F95*
1712     variables for when different compilers/flags/etc. must be specified
1713     for different Fortran versions.
1714
1715   - Have individual tools that create libraries override the default
1716     $LIBPREFIX and $LIBSUFFIX values set by the platform.  This makes
1717     it easier to use Microsoft Visual Studio tools on a CygWin platform.
1718
1719   From Gary Oberbrunner:
1720
1721   - Add a --debug=presub option to print actions prior to substitution.
1722
1723   - Add a warning upon use of the override keywords "targets" and
1724     "sources" when calling Builders.  These are usually mistakes which
1725     are otherwise silently (and confusingly) turned into construction
1726     variable overrides.
1727
1728   - Try to find the ICL license file path name in the external environment
1729     and the registry before resorting to the hard-coded path name.
1730
1731   - Add support for fetching command-line keyword=value arguments in
1732     order from an ARGLIST list.
1733
1734   - Avoid stack traces when trying to read dangling symlinks.
1735
1736   - Treat file "extensions" that only contain digits as part of the
1737     file basename.  This supports version numbers as part of shared
1738     library names, for example.
1739
1740   - Avoid problems when there are null entries (None or '') in tool
1741     lists or CPPPATH.
1742
1743   - Add an example and explanation of how to use "tools = ['default', ..."
1744     when creating a construction environment.
1745
1746   - Add a section describing File and Directory Nodes and some of their
1747     attributes and methods.
1748
1749   - Have ParseConfig() add a returned -pthread flag to both $CCFLAGS
1750     and $LINKFLAGS.
1751
1752   - Fix some test portability issues on Mac OS X (darwin).
1753
1754   From Simon Perkins:
1755
1756   - Fix a bug introduced in building shared libraries under MinGW.
1757
1758   From Kevin Quick:
1759
1760   - Handling SCons exceptions according to Pythonic standards.
1761
1762   - Fix test/chained-build.py on systems that execute within one second.
1763
1764   - Fix tests on systems where 'ar' warns about archive creation.
1765
1766   From Anthony Roach:
1767
1768   - Fix use of the --implicit-cache option with timestamp signatures.
1769
1770   - If Visual Studio is installed, assume the C/C++ compiler, the linker
1771     and the MIDL compiler that comes with it are available, too.
1772
1773   - Better error messages when evaluating a construction variable
1774     expansion yields a Python syntax error.
1775
1776   - Change the generation of PDB files when using Visual Studio from
1777     compile time to link time.
1778
1779   From sam th:
1780
1781   - Allow SConf.CheckLib() to search a list of libraries, like the
1782     Autoconf AC_SEARCH_LIBS macro.
1783
1784   - Allow the env.WhereIs() method to take a "reject" argument to
1785     let it weed out specific path names.
1786
1787   From Christoph Wiedemann:
1788
1789   - Add new Moc() and Uic() Builders for more explicit control over
1790     Qt builds, plus new construction variables to control them:
1791     $QT_AUTOSCAN, $QT_DEBUG, $QT_MOCCXXPREFIX, $QT_MOCCXXSUFFIX,
1792     $QT_MOCHPREFIX, $QT_MOCHSUFFIX, $QT_UICDECLPREFIX, $QT_UICDECLSUFFIX,
1793     $QT_UICIMPLPREFIX, $QT_UICIMPLSUFFIX and $QT_UISUFFIX.
1794
1795   - Add a new single_source keyword argument for Builders that enforces
1796     a single source file on calls to the Builder.
1797
1798
1799
1800 RELEASE 0.95 - Mon, 08 Mar 2004 06:43:20 -0600
1801
1802   From Chad Austin:
1803
1804   - Replace print statements with calls to sys.stdout.write() so output
1805     lines stay together when -j is used.
1806
1807   - Add portability fixes for a number of tests.
1808
1809   - Accomodate the fact that Cygwin's os.path.normcase() lies about
1810     the underlying system being case-sensitive.
1811
1812   - Fix an incorrect _concat() call in the $RCINCFLAGS definition for
1813     the mingw Tool.
1814
1815   - Fix a problem with the msvc tool with Python versions prior to 2.3.
1816
1817   - Add support for a "toolpath" Tool() and Environment keyword that
1818     allows Tool modules to be found in specified local directories.
1819
1820   - Work around Cygwin Python's silly fiction that it's using a
1821     case-sensitive file system.
1822
1823   - More robust handling of data in VCComponents.dat.
1824
1825   - If the "env" command is available, spawn commands with the more
1826     general "env -" instead of "env -i".
1827
1828   From Kerim Borchaev:
1829
1830   - Fix a typo in a msvc.py's registry lookup:  "VCComponents.dat", not
1831     "VSComponents.dat".
1832
1833   From Chris Burghart:
1834
1835   - Fix the ability to save/restore a PackageOption to a file.
1836
1837   From Steve Christensen:
1838
1839   - Update the MSVS .NET and MSVC 6.0/7.0 path detection.
1840
1841   From David M. Cooke:
1842
1843   - Make the Fortran scanner case-insensitive for the INCLUDE string.
1844
1845   From Charles Crain:
1846
1847   - If no version of MSVC is detected but the tool is specified,
1848     use the MSVC 6.0 paths by default.
1849
1850   - Ignore any "6.1" version of MSVC found in the registry; this is a
1851     phony version number (created by later service packs?) and would
1852     throw off the logic if the user had any non-default paths configure.
1853
1854   - Correctly detect if the user has independently configured the MSVC
1855     "include," "lib" or "path" in the registry and use the appropriate
1856     values.  Previously, SCons would only use the values if all three
1857     were set in the registry.
1858
1859   - Make sure side-effect nodes are prepare()d before building their
1860     corresponding target.
1861
1862   - Preserve the ability to call BuildDir() multiple times with the
1863     same target and source directory arguments.
1864
1865   From Andy Friesen:
1866
1867   - Add support for the Digital Mars "D" programming language.
1868
1869   From Scott Lystig Fritchie:
1870
1871   - Fix the ability to use a custom _concat() function in the
1872     construction environment when calling _stripixes().
1873
1874   - Make the message about ignoring a missing SConscript file into a
1875     suppressable Warning, not a hard-coded sys.stderr.write().
1876
1877   - If a builder can be called multiple times for a target (because
1878     the sources and overrides are identical, or it's a builder with the
1879     "multi" flag set), allow the builder to be called through multiple
1880     environments so long as the builders have the same signature for
1881     the environments in questions (that is, they're the same action).
1882
1883   From Bob Halley:
1884
1885   - When multiple targets are built by a single action, retrieve all
1886     of them from cache, not just the first target, and exec the build
1887     command if any of the targets isn't present in the cache.
1888
1889   From Zephaniah Hull:
1890
1891   - Fix command-line ARGUMENTS with multiple = in them.
1892
1893   From Steven Knight:
1894
1895   - Fix EnsureSConsVersion() so it checks against the SCons version,
1896     not the Python version, on Pythons with sys.version_info.
1897
1898   - Don't swallow the AttributeError when someone uses an expansion like
1899     $TARGET.bak, so we can supply a more informative error message.
1900
1901   - Fix an odd double-quote escape sequence in the man page.
1902
1903   - Fix looking up a naked drive letter as a directory (Dir('C:')).
1904
1905   - Support using File nodes in the LIBS construction variable.
1906
1907   - Allow the LIBS construction variable to be a single string or File
1908     node, not a list, when only one library is needed.
1909
1910   - Fix typos in the man page:  JAVACHDIR => JARCHDIR; add "for_signature"
1911     to the __call__() example in the "Variable Substitution" section.
1912
1913   - Correct error message spellings of "non-existant" to "non-existent."
1914
1915   - When scanning for libraries to link with, don't append $LIBPREFIXES
1916     or $LIBSUFFIXES values to the $LIBS values if they're already present.
1917
1918   - Add a ZIPCOMPRESSION construction variable to control whether the
1919     internal Python action for the Zip Builder compresses the file or
1920     not.  The default value is zipfile.ZIP_DEFLATED, which generates
1921     a compressed file.
1922
1923   - Refactor construction variable expansion to support recursive
1924     expansion of variables (e.g. CCFLAGS = "$CCFLAGS -g") without going
1925     into an infinite loop.  Support this in all construction variable
1926     overrides, as well as when copying Environments.
1927
1928   - Fix calling Configure() from more than one subsidiary SConscript file.
1929
1930   - Fix the env.Action() method so it returns the correct type of
1931     Action for its argument(s).
1932
1933   - Fix specifying .class files as input to JavaH with the .class suffix
1934     when they weren't generated using the Java Builder.
1935
1936   - Make the check for whether all of the objects going into a
1937     SharedLibrary() are shared work even if the object was built in a
1938     previous run.
1939
1940   - Supply meaningful error messages, not stack traces, if we try to add
1941     a non-Node as a source, dependency, or ignored dependency of a Node.
1942
1943   - Generate MSVS Project files that re-invoke SCons properly regardless
1944     of whether the file was built via scons.bat or scons.py.
1945     (Thanks to Niall Douglas for contributing code and testing.)
1946
1947   - Fix TestCmd.py, runtest.py and specific tests to accomodate being
1948     run from directories whose paths include white space.
1949
1950   - Provide a more useful error message if a construction variable
1951     expansion contains a syntax error during evaluation.
1952
1953   - Fix transparent checkout of implicit dependency files from SCCS
1954     and RCS.
1955
1956   - Added new --debug=count, --debug=memory and --debug=objects options.
1957     --debug=count and --debug=objects only print anything when run
1958     under Python 2.1 or later.
1959
1960   - Deprecate the "overrides" keyword argument to Builder() creation
1961     in favor of using keyword argument values directly (like we do
1962     for builder execution and the like).
1963
1964   - Always use the Builder overrides in substitutions, not just if
1965     there isn't a target-specific environment.
1966
1967   - Add new "rsrcpath" and "rsrcdir" and attributes to $TARGET/$SOURCE,
1968     so Builder command lines can find things in Repository source
1969     directories when using BuildDir.
1970
1971   - Fix the M4 Builder so that it chdirs to the Repository directory
1972     when the input file is in the source directory of a BuildDir.
1973
1974   - Save memory at build time by allowing Nodes to delete their build
1975     environments after they've been built.
1976
1977   - Add AppendUnique() and PrependUnique() Environment methods, which
1978     add values to construction variables like Append() and Prepend()
1979     do, but suppress any duplicate elements in the list.
1980
1981   - Allow the 'qt' tool to still be used successfully from a copied
1982     Environment.  The include and library directories previously ended up
1983     having the same string re-appended to the end, yielding an incorrect
1984     path name.
1985
1986   - Supply a more descriptive error message when the source for a target
1987     can't be found.
1988
1989   - Initialize all *FLAGS variables with objects do the right thing with
1990     appending flags as strings or lists.
1991
1992   - Make things like ${TARGET.dir} work in *PATH construction variables.
1993
1994   - Allow a $MSVS_USE_MFC_DIRS construction variable to control whether
1995     ATL and MFC directories are included in the default INCLUDE and
1996     LIB paths.
1997
1998   - Document the dbm_module argument to the SConsignFile() function.
1999
2000   From Vincent Risi:
2001
2002   - Add support for the bcc32, ilink32 and tlib Borland tools.
2003
2004   From Anthony Roach:
2005
2006   - Supply an error message if the user tries to configure a BuildDir
2007     for a directory that already has one.
2008
2009   - Remove documentation of the still-unimplemented -e option.
2010
2011   - Add -H help text listing the legal --debug values.
2012
2013   - Don't choke if a construction variable is a non-string value.
2014
2015   - Build Type Libraries in the target directory, not the source
2016     directory.
2017
2018   - Add an appendix to the User's Guide showing how to accomplish
2019     various common tasks in Python.
2020
2021   From Greg Spencer:
2022
2023   - Add support for Microsoft Visual Studio 2003 (version 7.1).
2024
2025   - Evaluate $MSVSPROJECTSUFFIX and $MSVSSOLUTIONSUFFIX when the Builder
2026     is invoked, not when the tool is initialized.
2027
2028   From Christoph Wiedemann:
2029
2030   - When compiling Qt, make sure the moc_*.cc files are compiled using
2031     the flags from the environment used to specify the target, not
2032     the environment that first has the Qt Builders attached.
2033
2034
2035
2036 RELEASE 0.94 - Fri, 07 Nov 2003 05:29:48 -0600
2037
2038   From Hartmut Goebel:
2039
2040   - Add several new types of canned functions to help create options:
2041     BoolOption(), EnumOption(), ListOption(), PackageOption(),
2042     PathOption().
2043
2044   From Steven Knight:
2045
2046   - Fix use of CPPDEFINES with C++ source files.
2047
2048   - Fix env.Append() when the operand is an object with a __cmp__()
2049     method (like a Scanner instance).
2050
2051   - Fix subclassing the Environment and Scanner classes.
2052
2053   - Add BUILD_TARGETS, COMMAND_LINE_TARGETS and DEFAULT_TARGETS variables.
2054
2055   From Steve Leblanc:
2056
2057   - SGI fixes:  Fix C++ compilation, add a separate Tool/sgic++.py module.
2058
2059   From Gary Oberbrunner:
2060
2061   - Fix how the man page un-indents after examples in some browsers.
2062
2063   From Vincent Risi:
2064
2065   - Fix the C and C++ tool specifications for AIX.
2066
2067
2068
2069 RELEASE 0.93 - Thu, 23 Oct 2003 07:26:55 -0500
2070
2071   From J.T. Conklin:
2072
2073   - On POSIX, execute commands with the more modern os.spawnvpe()
2074     function, if it's available.
2075
2076   - Scan .S, .spp and .SPP files for C preprocessor dependencies.
2077
2078   - Refactor the Job.Parallel() class to use a thread pool without a
2079     condition variable.  This improves parallel build performance and
2080     handles keyboard interrupts properly when -j is used.
2081
2082   From Charles Crain:
2083
2084   - Add support for a JARCHDIR variable to control changing to a
2085     directory using the jar -C option.
2086
2087   - Add support for detecting Java manifest files when using jar,
2088     and specifying them using the jar m flag.
2089
2090   - Fix some Python 2.2 specific things in various tool modules.
2091
2092   - Support directories as build sources, so that a rebuild of a target
2093     can be triggered if anything underneath the directory changes.
2094
2095   - Have the scons.bat and scons.py files look for the SCons modules
2096     in site-packages as well.
2097
2098   From Christian Engel:
2099
2100   - Support more flexible inclusion of separate C and C++ compilers.
2101
2102   - Use package management tools on AIX and Solaris to find where
2103     the comilers are installed, and what version they are.
2104
2105   - Add support for CCVERSION and CXXVERSION variables for a number
2106     of C and C++ compilers.
2107
2108   From Sergey Fogel:
2109
2110   - Add test cases for the new capabilities to run bibtex and to rerun
2111     latex as needed.
2112
2113   From Ralf W. Grosse-Kunstleve:
2114
2115   - Accomodate anydbm modules that don't have a sync() method.
2116
2117   - Allow SConsignFile() to take an argument specifying the DBM
2118     module to be used.
2119
2120   From Stephen Kennedy:
2121
2122   - Add support for a configurable global .sconsign.dbm file which
2123     can be used to avoid cluttering each directory with an individual
2124     .sconsign file.
2125
2126   From John Johnson:
2127
2128   - Fix (re-)scanning of dependencies in generated or installed
2129     header files.
2130
2131   From Steven Knight:
2132
2133   - The -Q option suppressed too many messages; fix it so that it only
2134     suppresses the Reading/Building messages.
2135
2136   - Support #include when there's no space before the opening quote
2137     or angle bracket.
2138
2139   - Accomodate alphanumeric version strings in EnsurePythonVersion().
2140
2141   - Support arbitrary expansion of construction variables within
2142     file and directory arguments to Builder calls and Environment methods.
2143
2144   - Add Environment-method versions of the following global functions:
2145     Action(), AddPostAction(), AddPreAction(), Alias(), Builder(),
2146     BuildDir(), CacheDir(), Clean(), Configure(), Default(),
2147     EnsurePythonVersion(), EnsureSConsVersion(), Environment(),
2148     Exit(), Export(), FindFile(), GetBuildPath(), GetOption(), Help(),
2149     Import(), Literal(), Local(), Platform(), Repository(), Scanner(),
2150     SConscriptChdir(), SConsignFile(), SetOption(), SourceSignatures(),
2151     Split(), TargetSignatures(), Tool(), Value().
2152
2153   - Add the following global functions that correspond to the same-named
2154     Environment methods:  AlwaysBuild(), Command(), Depends(), Ignore(),
2155     Install(), InstallAs(), Precious(), SideEffect() and SourceCode().
2156
2157   - Add the following global functions that correspond to the default
2158     Builder methods supported by SCons: CFile(), CXXFile(), DVI(), Jar(),
2159     Java(), JavaH(), Library(), M4(), MSVSProject(), Object(), PCH(),
2160     PDF(), PostScript(), Program(), RES(), RMIC(), SharedLibrary(),
2161     SharedObject(), StaticLibrary(), StaticObject(), Tar(), TypeLibrary()
2162     and Zip().
2163
2164   - Rearrange the man page to show construction environment methods and
2165     global functions in the same list, and to explain the difference.
2166
2167   - Alphabetize the explanations of the builder methods in the man page.
2168
2169   - Rename the Environment.Environment class to Enviroment.Base.
2170     Allow the wrapping interface to extend an Environment by using its own
2171     subclass of Environment.Base and setting a new Environment.Environment
2172     variable as the calling entry point.
2173
2174   - Deprecate the ParseConfig() global function in favor of a same-named
2175     construction environment method.
2176
2177   - Allow the Environment.WhereIs() method to take explicit path and
2178     pathext arguments (like the underlying SCons.Util.WhereIs() function).
2179
2180   - Remove the long-obsolete {Get,Set}CommandHandler() functions.
2181
2182   - Enhance env.Append() to suppress null values when appropriate.
2183
2184   - Fix ParseConfig() so it works regardless of initial construction
2185     variable values.
2186
2187     Extend CheckHeader(), CheckCHeader(), CheckCXXHeader() and
2188     CheckLibWithHeader() to accept a list of header files that will be
2189     #included in the test.  The last one in the list is assumed to be
2190     the one being checked for.  (Prototype code contributed by Gerard
2191     Patel and Niall Douglas).
2192
2193   - Supply a warning when -j is used and threading isn't built in to
2194     the current version of Python.
2195
2196   - First release of the User's Guide (finally, and despite a lot
2197     of things still missing from it...).
2198
2199   From Clark McGrew:
2200
2201   - Generalize the action for .tex files so that it will decide whether
2202     a file is TeX or LaTeX, check the .aux output to decide if it should
2203     run bibtex, and check the .log output to re-run LaTeX if needed.
2204
2205   From Bram Moolenaar:
2206
2207   - Split the non-SCons-specific functionality from SConf.py to a new,
2208     re-usable Conftest.py module.
2209
2210   From Gary Oberbrunner:
2211
2212   - Allow a directory to be the target or source or dependency of a
2213     Depends(), Ignore(), Precious() or SideEffect() call.
2214
2215   From Gerard Patel:
2216
2217   - Use the %{_mandir} macro when building our RPM package.
2218
2219   From Marko Rauhamaa:
2220
2221   - Have the closing message say "...terminated because of errors" if
2222     there were any.
2223
2224   From Anthony Roach:
2225
2226   - On Win32 systems, only use "rm" to delete files if Cygwin is being
2227     used.   ("rm" doesn't understand Win32-format path names.)
2228
2229   From Christoph Wiedemann:
2230
2231   - Fix test/SWIG.py to find the Python include directory in all cases.
2232
2233   - Fix a bug in detection of Qt installed on the local system.
2234
2235   - Support returning Python 2.3 BooleanType values from Configure checks.
2236
2237   - Provide an error message if someone mistakenly tries to call a
2238     Configure check from within a Builder function.
2239
2240   - Support calling a Builder when a Configure context is still open.
2241
2242   - Handle interrupts better by eliminating all try:-except: blocks
2243     which caught any and all exceptions, including KeyboardInterrupt.
2244
2245   - Add a --duplicate= option to control how files are duplicated.
2246
2247
2248
2249 RELEASE 0.92 - Wed, 20 Aug 2003 03:45:28 -0500
2250
2251   From Charles Crain and Gary Oberbrunner:
2252
2253   - Fix Tool import problems with the Intel and PharLap linkers.
2254
2255   From Steven Knight
2256
2257   - Refactor the DictCmdGenerator class to be a Selector subclass.
2258
2259   - Allow the DefaultEnvironment() function to take arguments and pass
2260     them to instantiation of the default construction environment.
2261
2262   - Update the Debian package so it uses Python 2.2 and more closely
2263     resembles the currently official Debian packaging info.
2264
2265   From Gerard Patel
2266
2267   - When the yacc -d flag is used, take the .h file base name from the
2268     target .c file, not the source (matching what yacc does).
2269
2270
2271
2272 RELEASE 0.91 - Thu, 14 Aug 2003 13:00:44 -0500
2273
2274   From Chad Austin:
2275
2276   - Support specifying a list of tools when calling Environment.Copy().
2277
2278   - Give a Value Nodes a timestamp of the system time when they're
2279     created, so they'll work when using timestamp-based signatures.
2280
2281   - Add a DefaultEnvironment() function that only creates a default
2282     environment on-demand (for fetching source files, e.g.).
2283
2284   - Portability fix for test/M4.py.
2285
2286   From Steven Knight:
2287
2288   - Tighten up the scons -H help output.
2289
2290   - When the input yacc file ends in .yy and the -d flag is specified,
2291     recognize that a .hpp file (not a .h file) will be created.
2292
2293   - Make builder prefixes work correctly when deducing a target
2294     from a source file name in another directory.
2295
2296   - Documentation fixes: typo in the man page; explain up-front about
2297     not propagating the external environment.
2298
2299   - Use "cvs co -d" instead of "cvs co -p >" when checking out something
2300     from CVS with a specified module name.  This avoids zero-length
2301     files when there is a checkout error.
2302
2303   - Add an "sconsign" script to print the contents of .sconsign files.
2304
2305   - Speed up maintaining the various lists of Node children by using
2306     dictionaries to avoid "x in list" searches.
2307
2308   - Cache the computed list of Node children minus those being Ignored
2309     so it's only calculated once.
2310
2311   - Fix use of the --cache-show option when building a Program()
2312     (or using any other arbitrary action) by making sure all Action
2313     instances have strfunction() methods.
2314
2315   - Allow the source of Command() to be a directory.
2316
2317   - Better error handling of things like raw TypeErrors in SConscripts.
2318
2319   - When installing using "setup.py install --prefix=", suppress the
2320     distutils warning message about adding the (incorrect) library
2321     directory to your search path.
2322
2323   - Correct the spelling of the "validater" option to "validator."
2324     Add a DeprecatedWarning when the old spelling is used.
2325
2326   - Allow a Builder's emitter to be a dictionary that maps source file
2327     suffixes to emitter functions, using the suffix of the first file
2328     in the source list to pick the right one.
2329
2330   - Refactor the creation of the Program, *Object and *Library Builders
2331     so that they're moved out of SCons.Defaults and created on demand.
2332
2333   - Don't split SConscript file names on white space.
2334
2335   - Document the SConscript function's "dirs" and "name" keywords.
2336
2337   - Remove the internal (and superfluous) SCons.Util.argmunge() function.
2338
2339   - Add /TP to the default CXXFLAGS for msvc, so it can compile all
2340     of the suffixes we use as C++ files.
2341
2342   - Allow the "prefix" and "suffix" attributes of a Builder to be
2343     callable objects that return generated strings, or dictionaries
2344     that map a source file suffix to the right prefix/suffix.
2345
2346   - Support a MAXLINELINELENGTH construction variable on Win32 systems
2347     to control when a temporary file is used for long command lines.
2348
2349   - Make how we build .rpm packages not depend on the installation
2350     locations from the distutils being used.
2351
2352   - When deducing a target Node, create it directly from the first
2353     source Node, not by trying to create the right string to pass to
2354     arg2nodes().
2355
2356   - Add support for SWIG.
2357
2358   From Bram Moolenaar:
2359
2360   - Test portability fixes for FreeBSD.
2361
2362   From Gary Oberbrunner:
2363
2364   - Report the target being built in error messages when building
2365     multiple sources from different extensions, or when the target file
2366     extension can't be deduced, or when we don't have an action for a
2367     file suffix.
2368
2369   - Provide helpful error messages when the arguments to env.Install()
2370     are incorrect.
2371
2372   - Fix the value returned by the Node.prevsiginfo() method to conform
2373     to a previous change when checking whether a node is current.
2374
2375   - Supply a stack trace if the Taskmaster catches an exception.
2376
2377   - When using a temporary file for a long link line on Win32 systems,
2378     (also) print the command line that is being executed through the
2379     temporary file.
2380
2381   - Initialize the LIB environment variable when using the Intel
2382     compiler (icl).
2383
2384   - Documentation fixes:  better explain the AlwaysBuild() function.
2385
2386   From Laurent Pelecq:
2387
2388   - When the -debug=pdb option is specified, use pdb.Pdb().runcall() to
2389     call pdb directly, don't call Python recursively.
2390
2391   From Ben Scott:
2392
2393   - Add support for a platform-independent CPPDEFINES variable.
2394
2395   From Christoph Wiedemann:
2396
2397   - Have the g++ Tool actually use g++ in preference to c++.
2398
2399   - Have the gcc Tool actually use gcc in preference to cc.
2400
2401   - Add a gnutools.py test of the GNU tool chain.
2402
2403   - Be smarter about linking: use $CC by default and $CXX only if we're
2404     linking with any C++ objects.
2405
2406   - Avoid SCons hanging when a piped command has a lot of output to read.
2407
2408   - Add QT support for preprocessing .ui files into .c files.
2409
2410
2411
2412 RELEASE 0.90 - Wed, 25 Jun 2003 14:24:52 -0500
2413
2414   From Chad Austin:
2415
2416   - Fix the _concat() documentation, and add a test for it.
2417
2418   - Portability fixes for non-GNU versions of lex and yacc.
2419
2420   From Matt Balvin:
2421
2422   - Fix handling of library prefixes when the subdirectory matches
2423     the prefix.
2424
2425   From Timothee Bessett:
2426
2427   - Add an M4 Builder.
2428
2429   From Charles Crain:
2430
2431   - Use '.lnk' as the suffix on the temporary file for linking long
2432     command lines (necessary for the Phar Lap linkloc linker).
2433
2434   - Save non-string Options values as their actual type.
2435
2436   - Save Options string values that contain a single quote correctly.
2437
2438   - Save any Options values that are changed from the default
2439     Environment values, not just ones changed on the command line or in
2440     an Options file.
2441
2442   - Make closing the Options file descriptor exception-safe.
2443
2444   From Steven Knight:
2445
2446   - SCons now enforces (with an error) that construction variables
2447     must have the same form as valid Python identifiers.
2448
2449   - Fix man page bugs: remove duplicate AddPostAction() description;
2450     document no_import_lib; mention that CPPFLAGS does not contain
2451     $_CPPINCFLAGS; mention that F77FLAGS does not contain $_F77INCFLAGS;
2452     mention that LINKFLAGS and SHLINKFLAGS contains neither $_LIBFLAGS
2453     nor $_LIBDIRFLAGS.
2454
2455   - Eliminate a dependency on the distutils.fancy_getopt module by
2456     copying and pasting its wrap_text() function directly.
2457
2458   - Make the Script.Options() subclass match the underlying base class
2459     implementation.
2460
2461   - When reporting a target is up to date, quote the target like make
2462     (backquote-quote) instead of with double quotes.
2463
2464   - Fix handling of ../* targets when using -U, -D or -u.
2465
2466   From Steve Leblanc:
2467
2468   - Don't update the .sconsign files when run with -n.
2469
2470   From Gary Oberbrunner:
2471
2472   - Add support for the Intel C Compiler (icl.exe).
2473
2474   From Anthony Roach
2475
2476   - Fix Import('*').
2477
2478   From David Snopek
2479
2480   - Fix use of SConf in paths with white space in them.
2481
2482   - Add CheckFunc and CheckType functionality to SConf.
2483
2484   - Fix use of SConf with Builders that return a list of nodes.
2485
2486   From David Snopek and Christoph Wiedemann
2487
2488   - Fix use of the SConf subsystem with SConscriptChdir().
2489
2490   From Greg Spencer
2491
2492   - Check for the existence of MS Visual Studio on disk before using it,
2493     to avoid getting fooled by leftover junk in the registry.
2494
2495   - Add support for MSVC++ .NET.
2496
2497   - Add support for MS Visual Studio project files (DSP, DSW,
2498     SLN and VCPROJ files).
2499
2500   From Christoph Wiedemann
2501
2502   - SConf now works correctly when the -n and -q options are used.
2503
2504
2505
2506 RELEASE 0.14 - Wed, 21 May 2003 05:16:32 -0500
2507
2508   From Chad Austin:
2509
2510   - Use .dll (not .so) for shared libraries on Cygwin; use -fPIC
2511     when compiling them.
2512
2513   - Use 'rm' to remove files under Cygwin.
2514
2515   - Add a PLATFORM variable to construction environments.
2516
2517   - Remove the "platform" argument from tool specifications.
2518
2519   - Propogate PYTHONPATH when running the regression tests so distutils
2520     can be found in non-standard locations.
2521
2522   - Using MSVC long command-line linking when running Cygwin.
2523
2524   - Portability fixes for a lot of tests.
2525
2526   - Add a Value Node class for dependencies on in-core Python values.
2527
2528   From Allen Bierbaum:
2529
2530   - Pass an Environment to the Options validator method, and
2531     add an Options.Save() method.
2532
2533   From Steve Christensen:
2534
2535   - Add an optional sort function argument to the GenerateHelpText()
2536     Options function.
2537
2538   - Evaluate the "varlist" variables when computing the signature of a
2539     function action.
2540
2541   From Charles Crain:
2542
2543   - Parse the source .java files for class names (including inner class
2544     names) to figure out the target .class files that will be created.
2545
2546   - Make Java support work with Repositories and SConscriptChdir(0).
2547
2548   - Pass Nodes, not strings, to Builder emitter functions.
2549
2550   - Refactor command-line interpolation and signature calculation
2551     so we can use real Node attributes.
2552
2553   From Steven Knight:
2554
2555   - Add Java support (javac, javah, jar and rmic).
2556
2557   - Propagate the external SYSTEMROOT environment variable into ENV on
2558     Win32 systems, so external commands that use sockets will work.
2559
2560   - Add a .posix attribute to PathList expansions.
2561
2562   - Check out CVS source files using POSIX path names (forward slashes
2563     as separators) even on Win32.
2564
2565   - Add Node.clear() and Node.FS.Entry.clear() methods to wipe out a
2566     Node's state, allowing it to be re-evaluated by continuous
2567     integration build interfaces.
2568
2569   - Change the name of the Set{Build,Content}SignatureType() functions
2570     to {Target,Source}Signatures().  Deprecate the old names but support
2571     them for backwards compatibility.
2572
2573   - Add internal SCons.Node.FS.{Dir,File}.Entry() methods.
2574
2575   - Interpolate the null string if an out-of-range subscript is used
2576     for a construction variable.
2577
2578   - Fix the internal Link function so that it properly links or copies
2579     files in subsidiary BuildDir directories.
2580
2581   - Refactor the internal representation of a single execution instance
2582     of an action to eliminate redundant signature calculations.
2583
2584   - Eliminate redundant signature calculations for Nodes.
2585
2586   - Optimize out calling hasattr() before accessing attributes.
2587
2588   - Say "Cleaning targets" (not "Building...") when the -c option is
2589     used.
2590
2591   From Damyan Pepper:
2592
2593   - Quote the "Entering directory" message like Make.
2594
2595   From Stefan Reichor:
2596
2597   - Add support for using Ghostscript to convert Postscript to PDF files.
2598
2599   From Anthony Roach:
2600
2601   - Add a standalone "Alias" function (separate from an Environment).
2602
2603   - Make Export() work for local variables.
2604
2605   - Support passing a dictionary to Export().
2606
2607   - Support Import('*') to import everything that's been Export()ed.
2608
2609   - Fix an undefined exitvalmap on Win32 systems.
2610
2611   - Support new SetOption() and GetOption() functions for setting
2612     various command-line options from with an SConscript file.
2613
2614   - Deprecate the old SetJobs() and GetJobs() functions in favor of
2615     using the new generic {Set,Get}Option() functions.
2616
2617   - Fix a number of tests that searched for a Fortran compiler using the
2618     external PATH instead of what SCons would use.
2619
2620   - Fix the interaction of SideEffect() and BuildDir() so that (for
2621     example) PDB files get put correctly in a BuildDir().
2622
2623   From David Snopek:
2624
2625   - Contribute the "Autoscons" code for Autoconf-like checking for
2626     the existence of libraries, header files and the like.
2627
2628   - Have the Tool() function add the tool name to the $TOOLS
2629     construction variable.
2630
2631   From Greg Spencer:
2632
2633   - Support the C preprocessor #import statement.
2634
2635   - Allow the SharedLibrary() Builder on Win32 systems to be able to
2636     register a newly-built dll using regsvr32.
2637
2638   - Add a Builder for Windows type library (.tlb) files from IDL files.
2639
2640   - Add an IDL scanner.
2641
2642   - Refactor the Fortran, C and IDL scanners to share common logic.
2643
2644   - Add .srcpath and .srcdir attributes to $TARGET and $SOURCE.
2645
2646   From Christoph Wiedemann:
2647
2648   - Integrate David Snopek's "Autoscons" code as the new SConf
2649     configuration subsystem, including caching of values between
2650     runs (using normal SCons dependency mechanisms), tests, and
2651     documentation.
2652
2653
2654
2655 RELEASE 0.13 - Mon, 31 Mar 2003 20:22:00 -0600
2656
2657   From Charles Crain:
2658
2659   - Fix a bug when BuildDir(duplicate=0) is used and SConscript
2660     files are called from within other SConscript files.
2661
2662   - Support (older) versions of Perforce which don't set the Windows
2663     registry.
2664
2665
2666
2667 RELEASE 0.12 - Thu, 27 Mar 2003 23:52:09 -0600
2668
2669   From Charles Crain:
2670
2671   - Added support for the Perforce source code management system.
2672
2673   - Fix str(Node.FS) so that it returns a path relative to the calling
2674     SConscript file's directory, not the top-level directory.
2675
2676   - Added support for a separate src_dir argument to SConscript()
2677     that allows explicit specification of where the source files
2678     for an SConscript file can be found.
2679
2680   - Support more easily re-usable flavors of command generators by
2681     calling callable variables when strings are expanded.
2682
2683   From Steven Knight:
2684
2685   - Added an INSTALL construction variable that can be set to a function
2686     to control how the Install() and InstallAs() Builders install files.
2687     The default INSTALL function now copies, not links, files.
2688
2689   - Remove deprecated features:  the "name" argument to Builder objects,
2690     and the Environment.Update() method.
2691
2692   - Add an Environment.SourceCode() method to support fetching files
2693     from source code systems.  Add factory methods that create Builders
2694     to support BitKeeper, CVS, RCS, and SCCS.  Add support for fetching
2695     files from RCS or SCCS transparently (like GNU Make).
2696
2697   - Make the internal to_String() function more efficient.
2698
2699   - Make the error message the same as other build errors when there's a
2700     problem unlinking a target file in preparation for it being built.
2701
2702   - Make TARGET, TARGETS, SOURCE and SOURCES reserved variable names and
2703     warn if the user tries to set them in a construction environment.
2704
2705   - Add support for Tar and Zip files.
2706
2707   - Better documentation of the different ways to export variables to a
2708     subsidiary SConscript file.  Fix documentation bugs in a tools
2709     example, places that still assumed SCons split strings on white
2710     space, and typos.
2711
2712   - Support fetching arbitrary files from the TARGETS or SOURCES lists
2713     (e.g. ${SOURCES[2]}) when calculating the build signature of a
2714     command.
2715
2716   - Don't silently swallow exceptions thrown by Scanners (or other
2717     exceptions while finding a node's dependent children).
2718
2719   - Push files to CacheDir() before calling the superclass built()
2720     method (which may clear the build signature as part of clearing
2721     cached implicit dependencies, if the file has a source scanner).
2722     (Bug reported by Jeff Petkau.)
2723
2724   - Raise an internal error if we attempt to push a file to CacheDir()
2725     with a build signature of None.
2726
2727   - Add an explicit Exit() function for terminating early.
2728
2729   - Change the documentation to correctly describe that the -f option
2730     doesn't change to the directory in which the specified file lives.
2731     
2732   - Support changing directories locally with SConscript directory
2733     path names relative to any SConstruct file specified with -f.
2734     This allows you to build in another directory by simply changing
2735     there and pointing at the SConstruct file in another directory.
2736
2737   - Change the default SConscriptChdir() behavior to change to the
2738     SConscript directory while it's being read.
2739
2740   - Fix an exception thrown when the -U option was used with no
2741     Default() target specified.
2742
2743   - Fix -u so that it builds things in corresponding build directories
2744     when used in a source directory.
2745
2746   From Lachlan O'Dea:
2747
2748   - Add SharedObject() support to the masm tool.
2749
2750   - Fix WhereIs() to return normalized paths.
2751
2752   From Jeff Petkau:
2753
2754   - Don't copy a built file to a CacheDir() if it's already there.
2755
2756   - Avoid partial copies of built files in a CacheDir() by copying
2757     to a temporary file and renaming.
2758
2759   From Anthony Roach:
2760
2761   - Fix incorrect dependency-cycle errors when an Aliased source doesn't
2762     exist.
2763
2764
2765
2766 RELEASE 0.11 - Tue, 11 Feb 2003 05:24:33 -0600
2767
2768   From Chad Austin:
2769
2770   - Add support for IRIX and the SGI MIPSPro tool chain.
2771
2772   - Support using the MSVC tool chain when running Cygwin Python.
2773
2774   From Michael Cook:
2775
2776   - Avoid losing signal bits in the exit status from a command,
2777     helping terminate builds on interrupt (CTRL+C).
2778
2779   From Charles Crain:
2780
2781   - Added new AddPreAction() and AddPostAction() functions that support
2782     taking additional actions before or after building specific targets.
2783
2784   - Add support for the PharLap ETS tool chain.
2785
2786   From Steven Knight:
2787
2788   - Allow Python function Actions to specify a list of construction
2789     variables that should be included in the Action's signature.
2790
2791   - Allow libraries in the LIBS variable to explicitly include the prefix
2792     and suffix, even when using the GNU linker.
2793     (Bug reported by Neal Becker.)
2794
2795   - Use DOS-standard CR-LF line endings in the scons.bat file.
2796     (Bug reported by Gary Ruben.)
2797
2798   - Doc changes:  Eliminate description of deprecated "name" keyword
2799     argument from Builder definition (reported by Gary Ruben).
2800
2801   - Support using env.Append() on BUILDERS (and other dictionaries).
2802     (Bug reported by Bj=F6rn Bylander.)
2803
2804   - Setting the BUILDERS construction variable now properly clears
2805     the previous Builder attributes from the construction Environment.
2806     (Bug reported by Bj=F6rn Bylander.)
2807
2808   - Fix adding a prefix to a file when the target isn't specified.
2809     (Bug reported by Esa Ilari Vuokko.)
2810
2811   - Clean up error messages from problems duplicating into read-only
2812     BuildDir directories or into read-only files.
2813
2814   - Add a CommandAction.strfunction() method, and add an "env" argument
2815     to the FunctionAction.strfunction() method, so that all Action
2816     objects have strfunction() methods, and the functions for building
2817     and returning a string both take the same arguments.
2818
2819   - Add support for new CacheDir() functionality to share derived files
2820     between builds, with related options --cache-disable, --cache-force,
2821     and --cache-show.
2822
2823   - Change the default behavior when no targets are specified to build
2824     everything in the current directory and below (like Make).  This
2825     can be disabled by specifying Default(None) in an SConscript.
2826
2827   - Revamp SCons installation to fix a case-sensitive installation
2828     on Win32 systems, and to add SCons-specific --standard-lib,
2829     --standalone-lib, and --version-lib options for easier user
2830     control of where the libraries get installed.
2831
2832   - Fix the ability to directly import and use Platform and Tool modules
2833     that have been implicitly imported into an Environment().
2834
2835   - Add support for allowing an embedding interface to annotate a node
2836     when it's created.
2837
2838   - Extend the SConscript() function to accept build_dir and duplicate
2839     keyword arguments that function like a BuildDir() call.
2840
2841   From Steve Leblanc:
2842
2843   - Fix the output of -c -n when directories are involved, so it
2844     matches -c.
2845
2846   From Anthony Roach:
2847
2848   - Use a different shared object suffix (.os) when using gcc so shared
2849     and static objects can exist side-by-side in the same directory.
2850
2851   - Allow the same object files on Win32 to be linked into either
2852     shared or static libraries.
2853
2854   - Cache implicit cache values when using --implicit-cache.
2855
2856
2857
2858 RELEASE 0.10 - Thu, 16 Jan 2003 04:11:46 -0600
2859
2860   From Derrick 'dman' Hudson:
2861
2862   - Support Repositories on other file systems by symlinking or
2863     copying files when hard linking won't work.
2864
2865   From Steven Knight:
2866
2867   - Remove Python bytecode (*.pyc) files from the scons-local packages.
2868
2869   - Have FunctionActions print a description of what they're doing
2870     (a representation of the Python call).
2871
2872   - Fix the Install() method so that, like other actions, it prints
2873     what would have happened when the -n option is used.
2874
2875   - Don't create duplicate source files in a BuildDir when the -n
2876     option is used.
2877
2878   - Refactor the Scanner interface to eliminate unnecessary Scanner
2879     calls and make it easier to write efficient scanners.
2880
2881   - Added a "recursive" flag to Scanner creation that specifies the
2882     Scanner should be invoked recursively on dependency files returned
2883     by the scanner.
2884
2885   - Significant performance improvement from using a more efficient
2886     check, throughout the code, for whether a Node has a Builder.
2887
2888   - Fix specifying only the source file to MultiStepBuilders such as
2889     the Program Builder.  (Bug reported by Dean Bair.)
2890
2891   - Fix an exception when building from a file with the same basename as
2892     the subdirectory in which it lives.  (Bug reported by Gerard Patel.)
2893
2894   - Fix automatic deduction of a target file name when there are
2895     multiple source files specified; the target is now deduced from just
2896     the first source file in the list.
2897
2898   - Documentation fixes: better initial explanation of SConscript files;
2899     fix a misformatted "table" in the StaticObject explanation.
2900
2901   From Steven Knight and Steve Leblanc:
2902
2903   - Fix the -c option so it will remove symlinks.
2904
2905   From Steve Leblanc:
2906
2907   - Add a Clean() method to support removing user-specified targets
2908     when using the -c option.
2909
2910   - Add a development script for running SCons through PyChecker.
2911
2912   - Clean up things found by PyChecker (mostly unnecessary imports).
2913
2914   - Add a script to use HappyDoc to create HTML class documentation.
2915
2916   From Lachlan O'Dea:
2917
2918   - Make the Environment.get() method return None by default.
2919
2920   From Anthony Roach:
2921
2922   - Add SetJobs() and GetJobs() methods to allow configuration of the
2923     number of default jobs (still overridden by -j).
2924
2925   - Convert the .sconsign file format from ASCII to a pickled Python
2926     data structure.
2927
2928   - Error message cleanups:  Made consistent the format of error
2929     messages (now all start with "scons: ***") and warning messages (now
2930     all start with "scons: warning:").  Caught more cases with the "Do
2931     not know how to build" error message.
2932
2933   - Added support for the MinGW tool chain.
2934
2935   - Added a --debug=includes option.
2936
2937
2938
2939 RELEASE 0.09 - Thu,  5 Dec 2002 04:48:25 -0600
2940
2941   From Chad Austin:
2942
2943   - Add a Prepend() method to Environments, to append values to
2944     the beginning of construction variables.
2945
2946   From Matt Balvin:
2947
2948   - Add long command-line support to the "lib" Tool (Microsoft library
2949     archiver), too.
2950
2951   From Charles Crain:
2952
2953   - Allow $$ in a string to be passed through as $.
2954
2955   - Support file names with odd characters in them.
2956
2957   - Add support for construction variable substition on scanner
2958     directories (in CPPPATH, F77PATH, LIBPATH, etc.).
2959
2960   From Charles Crain and Steven Knight:
2961
2962   - Add Repository() functionality, including the -Y option.
2963
2964   From Steven Knight:
2965
2966   - Fix auto-deduction of target names so that deduced targets end
2967     up in the same subdirectory as the source.
2968
2969   - Don't remove source files specified on the command line!
2970
2971   - Suport the Intel Fortran Compiler (ifl.exe).
2972
2973   - Supply an error message if there are no command-line or
2974     Default() targets specified.
2975
2976   - Fix the ASPPCOM values for the GNU assembler.
2977     (Bug reported by Brett Polivka.)
2978
2979   - Fix an exception thrown when a Default() directory was specified
2980     when using the -U option.
2981
2982   - Issue a warning when -c can't remove a target.
2983
2984   - Eliminate unnecessary Scanner calls by checking for the
2985     existence of a file before scanning it.  (This adds a generic
2986     hook to check an arbitrary condition before scanning.)
2987
2988   - Add explicit messages to tell when we're "Reading SConscript files
2989     ...," "done reading SConscript files," "Building targets," and
2990     "done building targets."  Add a -Q option to supress these.
2991
2992   - Add separate $SHOBJPREFIX and $SHOBJSUFFIX construction variables
2993     (by default, the same as $OBJPREFIX and $OBJSUFFIX).
2994
2995   - Add Make-like error messages when asked to build a source file,
2996     and before trying to build a file that doesn't have all its source
2997     files (including when an invalid drive letter is used on WIN32).
2998
2999   - Add an scons-local-{version} package (in both .tar.gz and .zip
3000     flavors) to help people who want to ship SCons as a stand-alone
3001     build tool in their software packages.
3002
3003   - Prevent SCons from unlinking files in certain situations when
3004     the -n option is used.
3005
3006   - Change the name of Tool/lib.py to Tool/mslib.py.
3007
3008   From Steven Knight and Anthony Roach:
3009
3010   - Man page:  document the fact that Builder calls return Node objects.
3011
3012   From Steve LeBlanc:
3013
3014   - Refactor option processing to use our own version of Greg Ward's
3015     Optik module, modified to run under Python 1.5.2.
3016
3017   - Add a ParseConfig() command to modify an environment based on
3018     parsing output from a *-config command.
3019
3020   From Jeff Petkau:
3021
3022   - Fix interpretation of '#/../foo' on Win32 systems.
3023
3024   From Anthony Roach:
3025
3026   - Fixed use of command lines with spaces in their arguments,
3027     and use of Nodes with spaces in their string representation.
3028
3029   - Make access and modification times of files in a BuildDir match
3030     the source file, even when hard linking isn't available.
3031
3032   - Make -U be case insensitive on Win32 systems.
3033
3034   - Issue a warning and continue when finding a corrupt .sconsign file.
3035
3036   - Fix using an alias as a dependency of a target so that if one of the
3037     alias' dependencies gets rebuilt, the resulting target will, too.
3038
3039   - Fix differently ordered targets causing unnecessary rebuilds
3040     on case insensitive systems.
3041
3042   - Use os.system() to execute external commands whenever the "env"
3043     utility is available, which is much faster than fork()/exec(),
3044     and fixes the -j option on several platforms.
3045
3046   - Fix use of -j with multiple targets.
3047
3048   - Add an Options() object for friendlier accomodation of command-
3049     line arguments.
3050
3051   - Add support for Microsoft VC++ precompiled header (.pch) files,
3052     debugger (.pdb) files, and resource (.rc) files.
3053
3054   - Don't compute the $_CPPINCFLAGS, $_F77INCFLAGS, $_LIBFLAGS and
3055     $_LIBDIRFLAGS variables each time a command is executed, define
3056     them so they're computed only as needed.  Add a new _concat
3057     function to the Environment that allows people to define their
3058     own similar variables.
3059
3060   - Fix dependency scans when $LIBS is overridden.
3061
3062   - Add EnsurePythonVersion() and EnsureSConsVersion() functions.
3063
3064   - Fix the overly-verbose stack trace on ListBuilder build errors.
3065
3066   - Add a SetContentSignatureType() function, allowing use of file
3067     timestamps instead of MD5 signatures.
3068
3069   - Make -U and Default('source') fail gracefully.
3070
3071   - Allow the File() and Dir() methods to take a path-name string as
3072     the starting directory, in addition to a Dir object.
3073
3074   - Allow the command handler to be selected via the SPAWN, SHELL
3075     and ESCAPE construction variables.
3076
3077   - Allow construction variables to be overridden when a Builder
3078     is called.
3079
3080   From sam th:
3081
3082   - Dynamically check for the existence of utilities with which to
3083     initialize Environments by default.
3084
3085
3086
3087 RELEASE 0.08 - Mon, 15 Jul 2002 12:08:51 -0500
3088
3089   From Charles Crain:
3090
3091   - Fixed a bug with relative CPPPATH dirs when using BuildDir().
3092     (Bug reported by Bob Summerwill.)
3093
3094   - Added a warnings framework and a --warn option to enable or
3095     disable warnings.
3096
3097   - Make the C scanner warn users if files referenced by #include
3098     directives cannot be found and --warn=dependency is specified.
3099
3100   - The BUILDERS construction variable should now be a dictionary
3101     that maps builder names to actions.  Existing uses of lists,
3102     and the Builder name= keyword argument, generate warnings
3103     about use of deprecated features.
3104
3105   - Removed the "shared" keyword argument from the Object and
3106     Library builders.
3107     
3108   - Added separated StaticObject, SharedObject, StaticLibrary and
3109     SharedLibrary builders.  Made Object and Library synonyms for
3110     StaticObject and StaticLibrary, respectively.
3111
3112   - Add LIBS and LIBPATH dependencies for shared libraries.
3113
3114   - Removed support for the prefix, suffix and src_suffix arguments
3115     to Builder() to be callable functions.
3116
3117   - Fix handling file names with multiple dots.
3118
3119   - Allow a build directory to be outside of the SConstruct tree.
3120
3121   - Add a FindFile() function that searches for a file node with a
3122     specified name.
3123
3124   - Add $CPPFLAGS to the shared-object command lines for g++ and gcc.
3125
3126   From Charles Crain and Steven Knight:
3127
3128   - Add a "tools=" keyword argument to Environment instantiation,
3129     and a separate Tools() method, for more flexible specification
3130     of tool-specific environment changes.
3131
3132   From Steven Knight:
3133
3134   - Add a "platform=" keyword argument to Environment instantiation,
3135     and a separate Platform() method, for more flexible specification
3136     of platform-specific environment changes.
3137
3138   - Updated README instructions and setup.py code to catch an
3139     installation failure from not having distutils installed.
3140
3141   - Add descriptions to the -H help text for -D, -u and -U so
3142     people can tell them apart.
3143
3144   - Remove the old feature of automatically splitting strings
3145     of file names on white space.
3146
3147   - Add a dependency Scanner for native Fortran "include" statements,
3148     using a new "F77PATH" construction variable.
3149
3150   - Fix C #include scanning to detect file names with characters like
3151     '-' in them.
3152
3153   - Add more specific version / build output to the -v option.
3154
3155   - Add support for the GNU as, Microsoft masm, and nasm assemblers.
3156
3157   - Allow the "target" argument to a Builder call to be omitted, in
3158     which case the target(s) are deduced from the source file(s) and the
3159     Builder's specified suffix.
3160
3161   - Add a tar archive builder.
3162
3163   - Add preliminary support for the OS/2 Platform, including the icc
3164     and ilink Tools.
3165
3166   From Jeff Petkau:
3167
3168   - Fix --implicit-cache if the scanner returns an empty list.
3169
3170   From Anthony Roach:
3171
3172   - Add a "multi" keyword argument to Builder creation that specifies
3173     it's okay to call the builder multiple times for a target.
3174
3175   - Set a "multi" on Aliases so multiple calls will append to an Alias.
3176
3177   - Fix emitter functions' use of path names when using BuildDir or
3178     in subdirectories.
3179
3180   - Fix --implicit-cache causing redundant rebuilds when the header
3181     file list changed.
3182
3183   - Fix --implicit-cache when a file has no implicit dependencies and
3184     its source is generated.
3185
3186   - Make the drive letters on Windows always be the same case, so that
3187     changes in the case of drive letters don't cause a rebuild.
3188
3189   - Fall back to importing the SCons.TimeStamp module if the SCons.MD5
3190     module can't be imported.
3191
3192   - Fix interrupt handling to guarantee that a single interrupt will
3193     halt SCons both when using -j and not.
3194
3195   - Fix .sconsign signature storage so that output files of one build
3196     can be safely used as input files to another build.
3197
3198   - Added a --debug=time option to print SCons execution times.
3199
3200   - Print an error message if a file can't be unlinked before being
3201     built, rather than just silently terminating the build.
3202
3203   - Add a SideEffect() method that can be used to tell the build
3204     engine that a given file is created as a side effect of building
3205     a target.  A file can be specified as a side effect of more than
3206     one build comand, in which case the commands will not be executed
3207     simultaneously.
3208
3209   - Significant performance gains from not using our own version of
3210     the inefficient stock os.path.splitext() method, caching source
3211     suffix computation, code cleanup in MultiStepBuilder.__call__(),
3212     and replicating some logic in scons_subst().
3213
3214   - Add --implicit-deps-changed and --implicit-deps-unchanged options.
3215
3216   - Add a GetLaunchDir() function.
3217
3218   - Add a SetBuildSignatureType() function.
3219
3220   From Zed Shaw:
3221
3222   - Add an Append() method to Environments, to append values to
3223     construction variables.
3224
3225   - Change the name of Update() to Replace().  Keep Update() as a
3226     deprecated synonym, at least for now.
3227
3228   From Terrel Shumway:
3229
3230   - Use a $PYTHON construction variable, initialized to sys.executable,
3231     when using Python to build parts of the SCons packages.
3232
3233   - Use sys.prefix, not sys.exec_prefix, to find pdb.py.
3234
3235
3236
3237 RELEASE 0.07 - Thu,  2 May 2002 13:37:16 -0500
3238
3239   From Chad Austin:
3240
3241   - Changes to build SCons packages on IRIX (and other *NIces).
3242
3243   - Don't create a directory Node when a file already exists there,
3244     and vice versa.
3245
3246   - Add 'dirs' and 'names' keyword arguments to SConscript for
3247     easier specification of subsidiary SConscript files.
3248
3249   From Charles Crain:
3250
3251   - Internal cleanup of environment passing to function Actions.
3252
3253   - Builders can now take arbitrary keyword arguments to create
3254     attributes to be passed to: command generator functions,
3255     FunctionAction functions, Builder emitter functions (below),
3256     and prefix/suffix generator functions (below).
3257
3258   - Command generator functions can now return ANYTHING that can be
3259     converted into an Action (a function, a string, a CommandGenerator
3260     instance, even an ActionBase instance).
3261
3262   - Actions now call get_contents() with the actual target and source
3263     nodes used for the build.
3264
3265   - A new DictCmdGenerator class replaces CompositeBuilder to support
3266     more flexible Builder behavior internally.
3267
3268   - Builders can now take an emitter= keyword argument.  An emitter
3269     is a function that takes target, source, and env argument, then
3270     return a 2-tuple of (new sources, new targets).  The emitter is
3271     called when the Builder is __call__'ed, allowing a user to modify
3272     source and target lists.
3273
3274   - The prefix, suffix and src_suffix Builder arguments now take a
3275     callable as well a string.  The callable is passed the Environment
3276     and any extra Builder keyword arguments and is expected to return
3277     the appropriate prefix or suffix.
3278
3279   - CommandActions can now be a string, a list of command + argument
3280     strings, or a list of commands (strings or lists).
3281
3282   - Added shared library support.  The Object and Library Builders now
3283     take a "shared=1" keyword argument to specify that a shared object
3284     or shared library should be built.  It is an error to try to build
3285     static objects into a shared library or vice versa.
3286
3287   - Win32 support for .def files has been added.  Added the Win32-specific
3288     construction variables $WIN32DEFPREFIX, $WIN32DEFSUFFIX,
3289     $WIN32DLLPREFIX and $WIN32IMPLIBPREFIX.  When building a .dll,
3290     the new construction variable $WIN32_INSERT_DEF, controls whether
3291     the appropriately-named .def file is inserted into the target
3292     list (if not already present).  A .lib file is always added to
3293     a Library build if not present in the list of targets.
3294
3295   - ListBuilder now passes all targets to the action, not just the first.
3296
3297   - Fix so that -c now deletes generated yacc .h files.
3298
3299   - Builder actions and emitter functions can now be initialized, through
3300     construction variables, to things other than strings.
3301
3302   - Make top-relative '#/dir' lookups work like '#dir'.
3303
3304   - Fix for relative CPPPATH directories in subsidiary SConscript files
3305     (broken in 0.06).
3306
3307   - Add a for_signature argument to command generators, so that
3308     generators that need to can return distinct values for the
3309     command signature and for executing the command.
3310
3311   From Alex Jacques:
3312
3313   - Create a better scons.bat file from a py2bat.py script on the Python
3314     mailing list two years ago (modeled after pl2bat.pl).
3315
3316   From Steven Knight:
3317
3318   - Fix so that -c -n does *not* remove the targets!
3319
3320   - Man page:  Add a hierarchical libraries + Program example.
3321
3322   - Support long MSVC linker command lines through a builder action
3323     that writes to a temporary file and uses the magic MSVC "link @file"
3324     argument syntax if the line is longer than 2K characters.
3325
3326   - Fix F77 command-line options on Win32 (use /Fo instead of -o).
3327
3328   - Use the same action to build from .c (lower case) and .C (upper
3329     case) files on case-insensitive systems like Win32.
3330
3331   - Support building a PDF file directly from a TeX or LaTeX file
3332     using pdftex or pdflatex.
3333
3334   - Add a -x option to runtest.py to specify the script being tested.
3335     A -X option indicates it's an executable, not a script to feed
3336     to the Python interpreter.
3337
3338   - Add a Split() function (identical to SCons.Util.argmunge()) for use
3339     in the next release, when Builders will no longer automatically split
3340     strings on white space.
3341
3342   From Steve Leblanc:
3343
3344   - Add the SConscriptChdir() method.
3345
3346   From Anthony Roach:
3347
3348   - Fix --debug=tree when used with directory targets.
3349
3350   - Significant internal restructuring of Scanners and Taskmaster.
3351
3352   - Added new --debug=dtree option.
3353
3354   - Fixes for --profile option.
3355
3356   - Performance improvement in construction variable substitution.
3357
3358   - Implemented caching of content signatures, plus added --max-drift
3359     option to control caching.
3360
3361   - Implemented caching of dependency signatures, enabled by new
3362     --implicit-cache option.
3363
3364   - Added abspath construction variable modifier.
3365
3366   - Added $SOURCE variable as a synonym for $SOURCES[0].
3367
3368   - Write out .sconsign files on error or interrupt so intermediate
3369     build results are saved.
3370
3371   - Change the -U option to -D.  Make a new -U that builds just the
3372     targets from the local SConscript file.
3373
3374   - Fixed use of sys.path so Python modules can be imported from
3375     the SConscript directory.
3376
3377   - Fix for using Aliases with the -u, -U and -D options.
3378
3379   - Fix so that Nodes can be passed to SConscript files.
3380
3381   From Moshe Zadka:
3382   
3383   - Changes for official Debian packaging.
3384
3385
3386
3387 RELEASE 0.06 - Thu, 28 Mar 2002 01:24:29 -0600
3388
3389   From Charles Crain:
3390
3391   - Fix command generators to expand construction variables.
3392
3393   - Make FunctionAction arguments be Nodes, not strings.
3394
3395   From Stephen Kennedy:
3396
3397   - Performance:  Use a dictionary, not a list, for a Node's parents.
3398
3399   From Steven Knight:
3400
3401   - Add .zip files to the packages we build.
3402
3403   - Man page:  document LIBS, fix a typo, document ARGUMENTS.
3404
3405   - Added RANLIB and RANLIBFLAGS construction variables.  Only use them
3406     in ARCOM if there's a "ranlib" program on the system.
3407
3408   - Add a configurable CFILESUFFIX for the Builder of .l and .y files
3409     into C files.
3410
3411   - Add a CXXFile Builder that turns .ll and .yy files into .cc files
3412     (configurable via a CXXFILESUFFIX construction variable).
3413
3414   - Use the POSIX-standard lex -t flag, not the GNU-specific -o flag.
3415     (Bug reported by Russell Christensen.)
3416
3417   - Fixed an exception when CPPPATH or LIBPATH is a null string.
3418     (Bug reported by Richard Kiss.)
3419
3420   - Add a --profile=FILE option to make profiling SCons easier.
3421
3422   - Modify the new DVI builder to create .dvi files from LaTeX (.ltx
3423     and .latex) files.
3424
3425   - Add support for Aliases (phony targets).
3426
3427   - Add a WhereIs() method for searching for path names to executables.
3428
3429   - Add PDF and PostScript document builders.
3430
3431   - Add support for compiling Fortran programs from a variety of
3432     suffixes (a la GNU Make):  .f, .F, .for, .FOR, .fpp and .FPP
3433
3434   - Support a CPPFLAGS variable on all default commands that use the
3435     C preprocessor.
3436
3437   From Steve Leblanc:
3438
3439   - Add support for the -U option.
3440
3441   - Allow CPPPATH, LIBPATH and LIBS to be specified as white-space
3442     separated strings.
3443
3444   - Add a document builder to create .dvi files from TeX (.tex) files.
3445
3446   From Anthony Roach:
3447
3448   - Fix:  Construction variables with values of 0 were incorrectly
3449     interpolated as ''. 
3450
3451   - Support env['VAR'] to fetch construction variable values.
3452
3453   - Man page:  document Precious().
3454
3455
3456
3457 RELEASE 0.05 - Thu, 21 Feb 2002 16:50:03 -0600
3458
3459   From Chad Austin:
3460
3461   - Set PROGSUFFIX to .exe under Cygwin.
3462
3463   From Charles Crain:
3464
3465   - Allow a library to specified as a command-line source file, not just
3466     in the LIBS construction variable.
3467
3468   - Compensate for a bug in os.path.normpath() that returns '' for './'
3469     on WIN32.
3470
3471   - More performance optimizations:  cache #include lines from files,
3472     eliminate unnecessary calls.
3473
3474   - If a prefix or suffix contains white space, treat the resulting
3475     concatenation as separate arguments.
3476
3477   - Fix irregularities in the way we fetch DevStudio information from
3478     the Windows registry, and in our registry error handling.
3479
3480   From Steven Knight:
3481
3482   - Flush stdout after print so it intermixes correctly with stderr
3483     when redirected.
3484
3485   - Allow Scanners to return a list of strings, and document how to
3486     write your own Scanners.
3487
3488   - Look up implicit (scanned) dependencies relative to the directory
3489     of file being scanned.
3490
3491   - Make writing .sconsign files more robust by first trying to write
3492     to a temp file that gets renamed.
3493
3494   - Create all of the directories for a list of targets before trying
3495     to build any of the targets.
3496
3497   - WIN32 portability fixes in tests.
3498
3499   - Allow the list of variables exported to an SConscript file to be
3500     a UserList, too.
3501
3502   - Document the overlooked LIBPATH construction variable.
3503     (Bug reported by Eicke Godehardt.)
3504
3505   - Fix so that Ignore() ignores indirect, implicit dependencies
3506     (included files), not just direct dependencies.
3507
3508   - Put the man page in the Debian distribution.
3509
3510   - Run HTML docs through tidy to clean up the HTML (for Konqueror).
3511
3512   - Add preliminary support for Unicode strings.
3513
3514   - Efficiency:  don't scan dependencies more than once during the
3515     walk of a tree.
3516
3517   - Fix the -c option so it doesn't stop removing targets if one doesn't
3518     already exist.
3519     (Bug reported by Paul Connell.)
3520
3521   - Fix the --debug=pdb option when run on Windows NT.
3522     (Bug reported by Paul Connell.)
3523
3524   - Add support for the -q option.
3525
3526   From Steve Leblanc:
3527
3528   - Add support for the -u option.
3529
3530   - Add .cc and .hh file suffixes to the C Scanner.
3531
3532   From Anthony Roach:
3533
3534   - Make the scons script return an error code on failures.
3535
3536   - Add support for using code to generate a command to build a target.
3537
3538
3539
3540 RELEASE 0.04 - Wed, 30 Jan 2002 11:09:42 -0600
3541
3542   From Charles Crain:
3543
3544   - Significant performance improvements in the Node.FS and
3545     Scanner subsystems.
3546
3547   - Fix signatures of binary files on Win32 systems.
3548
3549   - Allow LIBS and LIBPATH to be strings, not just arrays.
3550
3551   - Print a traceback if a Python-function builder throws an exception.
3552
3553   From Steven Knight:
3554
3555   - Fix using a directory as a Default(), and allow Default() to
3556     support white space in file names for strings in arrays.
3557
3558   - Man page updates:  corrected some mistakes, documented various
3559     missing Environment methods, alphabetized the construction
3560     variables and other functions, defined begin and end macros for
3561     the example sections, regularized white space separation, fixed
3562     the use of Export() in the Multiple Variants example.
3563
3564   - Function action fixes:  None is now a successful return value.
3565     Exceptions are now reported.  Document function actions.
3566
3567   - Add 'Action' and 'Scanner' to the global keywords so SConscript
3568     files can use them too.
3569
3570   - Removed the Wrapper class between Nodes and Walkers.
3571
3572   - Add examples using Library, LIBS, and LIBPATH.
3573
3574   - The C Scanner now always returns a sorted list of dependencies
3575     so order changes don't cause unnecessary rebuilds.
3576
3577   - Strip $(-$) bracketed text from command lines.  Use this to
3578     surround $_INCDIRS and $_LIBDIRS so we don't rebuild in response
3579     to changes to -I or -L options.
3580
3581   - Add the Ignore() method to ignore dependencies.
3582
3583   - Provide an error message when a nonexistent target is specified
3584     on the command line.
3585
3586   - Remove targets before building them, and add an Environment
3587     Precious() method to override that.
3588
3589   - Eliminate redundant calls to the same builder when the target is a
3590     list of targets:  Add a ListBuilder class that wraps Builders to
3591     handle lists atomically.  Extend the Task class to support building
3592     and updating multiple targets in a single Task.  Simplify the
3593     interface between Task and Taskmaster.
3594
3595   - Add a --debug=pdb option to re-run SCons under the Python debugger.
3596
3597   - Only compute a build signature once for each node.
3598
3599   - Changes to our sys.path[] manipulation to support installation into
3600     an arbitrary --prefix value.
3601
3602   From Steve Leblanc:
3603
3604   - Add var=value command-line arguments.
3605
3606
3607
3608 RELEASE 0.03 - Fri, 11 Jan 2002 01:09:30 -0600
3609
3610   From Charles Crain:
3611
3612   - Performance improvements in the Node.FS and Sig.Calculator classes.
3613
3614   - Add the InstallAs() method.
3615
3616   - Execute commands through an external interpreter (sh, cmd.exe, or
3617     command.com) to handle redirection metacharacters.
3618
3619   - Allow the user to supply a command handler.
3620
3621   From Steven Knight:
3622
3623   - Search both /usr/lib and /usr/local/lib for scons directories by
3624     adding them both to sys.path, with whichever is in sys.prefix first.
3625
3626   - Fix interpreting strings of multiple white-space separated file names
3627     as separate file names, allowing prefixes and suffixes to be appended
3628     to each individually.
3629
3630   - Refactor to move CompositeBuilder initialization logic from the
3631     factory wrapper to the __init__() method, and allow a Builder to
3632     have both an action and a src_builder (or array of them).
3633
3634   - Refactor BuilderBase.__call__() to separate Node creation/lookup
3635     from initialization of the Node's builder information.
3636
3637   - Add a CFile Builder object that supports turning lex (.l) and
3638     yacc (.y) files into .c files.
3639
3640   - Document: variable interpretation attributes; how to propogate
3641     the user's environment variables to executed commands; how to
3642     build variants in multiple BuildDirs.
3643
3644   - Collect String, Dict, and List type-checking in common utility
3645     routines so we can accept User{String,Dict,List}s all over.
3646
3647   - Put the Action factory and classes into their own module.
3648
3649   - Use one CPlusPlusAction in the Object Builder's action dictionary,
3650     instead of letting it create multiple identical instances.
3651
3652   - Document the Install() and InstallAs() methods.
3653
3654   From Steve Leblanc:
3655
3656   - Require that a Builder be given a name argument, supplying a
3657     useful error message when it isn't.
3658
3659   From Anthony Roach:
3660
3661   - Add a "duplicate" keyword argument to BuildDir() that can be set
3662     to prevent linking/copying source files into build directories.
3663
3664   - Add a "--debug=tree" option to print an ASCII dependency tree.
3665
3666   - Fetch the location of the Microsoft Visual C++ compiler(s) from
3667     the Registry, instead of hard-coding the location.
3668     
3669   - Made Scanner objects take Nodes, not path names.
3670     
3671   - Have the C Scanner cache the #include file names instead of
3672     (re-)scanning the file each time it's called.
3673
3674   - Created a separate class for parent "nodes" of file system roots,
3675     eliminating the need for separate is-parent-null checks everywhere.
3676     
3677   - Removed defined __hash__() and __cmp() methods from FS.Entry, in
3678     favor of Python's more efficient built-in identity comparisons.
3679
3680
3681
3682 RELEASE 0.02 - Sun, 23 Dec 2001 19:05:09 -0600
3683
3684   From Charles Crain:
3685
3686   - Added the Install(), BuildDir(), and Export() methods.
3687
3688   - Fix the -C option by delaying setting the top of the FS tree.
3689
3690   - Avoid putting the directory path on the libraries in the LIBS
3691     construction variable.
3692
3693   - Added a GetBuildPath() method to return the full path to the
3694     Node for a specified string.
3695
3696   - Fixed variable substitution in CPPPATH and LIBPATH.
3697
3698   From Steven Knight:
3699
3700   - Fixed the version comment in the scons.bat (the UNIX geek used
3701     # instead of @rem).
3702
3703   - Fix to setup.py so it doesn't require a sys.argv[1] argument.
3704
3705   - Provide make-like warning message for "command not found" and
3706     similar errors.
3707
3708   - Added an EXAMPLES section to the man page.
3709
3710   - Make Default() targets properly relative to their SConscript
3711     file's subdirectory.
3712
3713   From Anthony Roach:
3714
3715   - Documented CXXFLAGS, CXXCOM, and CPPPATH.
3716
3717   - Fixed SCONS_LIB_DIR to work as documented.
3718
3719   - Made Default() accept Nodes as arguments.
3720
3721   - Changed Export() to make it easier to use.
3722   
3723   - Added the Import() and Return() methods.
3724
3725
3726
3727 RELEASE 0.01 - Thu Dec 13 19:25:23 CST 2001
3728
3729 A brief overview of important functionality available in release 0.01:
3730
3731   - C and C++ compilation on POSIX and Windows NT.
3732
3733   - Automatic scanning of C/C++ source files for #include dependencies.
3734
3735   - Support for building libraries; setting construction variables
3736     allows creation of shared libraries.
3737
3738   - Library and C preprocessor search paths.
3739
3740   - File changes detected using MD5 signatures.
3741
3742   - User-definable Builder objects for building files.
3743
3744   - User-definable Scanner objects for scanning for dependencies.
3745
3746   - Parallel build (-j) support.
3747
3748   - Dependency cycles detected.
3749
3750   - Linux packages available in RPM and Debian format.
3751
3752   - Windows installer available.