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