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