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