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