Initialize a LIB environment variable for the Intel compiler. (Gary Oberbrunner)
[scons.git] / src / CHANGES.txt
1 # __COPYRIGHT__
2 # __FILE__ __REVISION__ __DATE__ __DEVELOPER__
3
4
5                  SCons - a software construction tool
6
7                             Change Log
8
9
10
11 RELEASE 0.XX - XXX
12
13   From Chad Austin:
14
15   - Support specifying a list of tools when calling Environment.Copy().
16
17   - Give a Value Nodes a timestamp of the system time when they're
18     created, so they'll work when using timestamp-based signatures.
19
20   - Add a DefaultEnvironment() function that only creates a default
21     environment on-demand (for fetching source files, e.g.).
22
23   - Portability fix for test/M4.py.
24
25   From Steven Knight:
26
27   - Tighten up the scons -H help output.
28
29   - When the input yacc file ends in .yy and the -d flag is specified,
30     recognize that a .hpp file (not a .h file) will be created.
31
32   - Make builder prefixes work correctly when deducing a target
33     from a source file name in another directory.
34
35   - Documentation fixes:  typo in the man page.
36
37   - Use "cvs co -d" instead of "cvs co -p >" when checking out something
38     from CVS with a specified module name.  This avoids zero-length
39     files when there is a checkout error.
40
41   - Add an "sconsign" script to print the contents of .sconsign files.
42
43   - Speed up maintaining the various lists of Node children by using
44     dictionaries to avoid "x in list" searches.
45
46   - Cache the computed list of Node children minus those being Ignored
47     so it's only calculated once.
48
49   - Fix use of the --cache-show option when building a Program()
50     (or using any other arbitrary action) by making sure all Action
51     instances have strfunction() methods.
52
53   - Allow the source of Command() to be a directory.
54
55   - Better error handling of things like raw TypeErrors in SConscripts.
56
57   - When installing using "setup.py install --prefix=", suppress the
58     distutils warning message about adding the (incorrect) library
59     directory to your search path.
60
61   - Correct the spelling of the "validater" option to "validator."
62     Add a DeprecatedWarning when the old spelling is used.
63
64   - Allow a Builder's emitter to be a dictionary that maps source file
65     suffixes to emitter functions, using the suffix of the first file
66     in the source list to pick the right one.
67
68   - Refactor the creation of the Program, *Object and *Library Builders
69     so that they're moved out of SCons.Defaults and created on demand.
70
71   - Don't split SConscript file names on white space.
72
73   - Document the SConscript function's "dirs" and "name" keywords.
74
75   - Remove the internal (and superfluous) SCons.Util.argmunge() function.
76
77   - Add /TP to the default CXXFLAGS for msvc, so it can compile all
78     of the suffixes we use as C++ files.
79
80   - Allow the "prefix" and "suffix" attributes of a Builder to be
81     callable objects that return generated strings.
82
83   - Support a MAXLINELINELENGTH construction variable on Win32 systems
84     to control when a temporary file is used for long command lines.
85
86   From Gary Oberbrunner:
87
88   - Report the target being built in error messages when building
89     multiple sources from different extensions, or when the target file
90     extension can't be deduced, or when we don't have an action for a
91     file suffix.
92
93   - Provide helpful error messages when the arguments to env.Install()
94     are incorrect.
95
96   - Fix the value returned by the Node.prevsiginfo() method to conform
97     to a previous change when checking whether a node is current.
98
99   - Supply a stack trace if the Taskmaster catches an exception.
100
101   - When using a temporary file for a long link line on Win32 systems,
102     (also) print the command line that is being executed through the
103     temporary file.
104
105   - Initialize the LIB environment variable when using the Intel
106     compiler (icl).
107
108   From Laurent Pelecq:
109
110   - When the -debug=pdb option is specified, use pdb.Pdb().runcall() to
111     call pdb directly, don't call Python recursively.
112
113   From Ben Scott:
114
115   - Add support for a platform-independent CPPDEFINES variable.
116
117   From Christoph Wiedemann:
118
119   - Have the g++ Tool actually use g++ in preference to c++.
120
121   - Have the gcc Tool actually use gcc in preference to cc.
122
123   - Add a gnutools.py test of the GNU tool chain.
124
125   - Be smarter about linking: use $CC by default and $CXX only if we're
126     linking with any C++ objects.
127
128   - Avoid SCons hanging when a piped command has a lot of output to read.
129
130   - Add QT support for preprocessing .ui files into .c files.
131
132
133
134 RELEASE 0.90 - Wed, 25 Jun 2003 14:24:52 -0500
135
136   From Chad Austin:
137
138   - Fix the _concat() documentation, and add a test for it.
139
140   - Portability fixes for non-GNU versions of lex and yacc.
141
142   From Matt Balvin:
143
144   - Fix handling of library prefixes when the subdirectory matches
145     the prefix.
146
147   From Timothee Bessett:
148
149   - Add an M4 Builder.
150
151   From Charles Crain:
152
153   - Use '.lnk' as the suffix on the temporary file for linking long
154     command lines (necessary for the Phar Lap linkloc linker).
155
156   - Save non-string Options values as their actual type.
157
158   - Save Options string values that contain a single quote correctly.
159
160   - Save any Options values that are changed from the default
161     Environment values, not just ones changed on the command line or in
162     an Options file.
163
164   - Make closing the Options file descriptor exception-safe.
165
166   From Steven Knight:
167
168   - SCons now enforces (with an error) that construction variables
169     must have the same form as valid Python identifiers.
170
171   - Fix man page bugs: remove duplicate AddPostAction() description;
172     document no_import_lib; mention that CPPFLAGS does not contain
173     $_CPPINCFLAGS; mention that F77FLAGS does not contain $_F77INCFLAGS;
174     mention that LINKFLAGS and SHLINKFLAGS contains neither $_LIBFLAGS
175     nor $_LIBDIRFLAGS.
176
177   - Eliminate a dependency on the distutils.fancy_getopt module by
178     copying and pasting its wrap_text() function directly.
179
180   - Make the Script.Options() subclass match the underlying base class
181     implementation.
182
183   - When reporting a target is up to date, quote the target like make
184     (backquote-quote) instead of with double quotes.
185
186   - Fix handling of ../* targets when using -U, -D or -u.
187
188   From Steve Leblanc:
189
190   - Don't update the .sconsign files when run with -n.
191
192   From Gary Oberbrunner:
193
194   - Add support for the Intel C Compiler (icl.exe).
195
196   From Anthony Roach
197
198   - Fix Import('*').
199
200   From David Snopek
201
202   - Fix use of SConf in paths with white space in them.
203
204   - Add CheckFunc and CheckType functionality to SConf.
205
206   - Fix use of SConf with Builders that return a list of nodes.
207
208   From David Snopek and Christoph Wiedemann
209
210   - Fix use of the SConf subsystem with SConscriptChdir().
211
212   From Greg Spencer
213
214   - Check for the existence of MS Visual Studio on disk before using it,
215     to avoid getting fooled by leftover junk in the registry.
216
217   - Add support for MSVC++ .NET.
218
219   - Add support for MS Visual Studio project files (DSP, DSW,
220     SLN and VCPROJ files).
221
222   From Christoph Wiedemann
223
224   - SConf now works correctly when the -n and -q options are used.
225
226
227
228 RELEASE 0.14 - Wed, 21 May 2003 05:16:32 -0500
229
230   From Chad Austin:
231
232   - Use .dll (not .so) for shared libraries on Cygwin; use -fPIC
233     when compiling them.
234
235   - Use 'rm' to remove files under Cygwin.
236
237   - Add a PLATFORM variable to construction environments.
238
239   - Remove the "platform" argument from tool specifications.
240
241   - Propogate PYTHONPATH when running the regression tests so distutils
242     can be found in non-standard locations.
243
244   - Using MSVC long command-line linking when running Cygwin.
245
246   - Portability fixes for a lot of tests.
247
248   - Add a Value Node class for dependencies on in-core Python values.
249
250   From Allen Bierbaum:
251
252   - Pass an Environment to the Options validator method, and
253     add an Options.Save() method.
254
255   From Steve Christensen:
256
257   - Add an optional sort function argument to the GenerateHelpText()
258     Options function.
259
260   - Evaluate the "varlist" variables when computing the signature of a
261     function action.
262
263   From Charles Crain:
264
265   - Parse the source .java files for class names (including inner class
266     names) to figure out the target .class files that will be created.
267
268   - Make Java support work with Repositories and SConscriptChdir(0).
269
270   - Pass Nodes, not strings, to Builder emitter functions.
271
272   - Refactor command-line interpolation and signature calculation
273     so we can use real Node attributes.
274
275   From Steven Knight:
276
277   - Add Java support (javac, javah, jar and rmic).
278
279   - Propagate the external SYSTEMROOT environment variable into ENV on
280     Win32 systems, so external commands that use sockets will work.
281
282   - Add a .posix attribute to PathList expansions.
283
284   - Check out CVS source files using POSIX path names (forward slashes
285     as separators) even on Win32.
286
287   - Add Node.clear() and Node.FS.Entry.clear() methods to wipe out a
288     Node's state, allowing it to be re-evaluated by continuous
289     integration build interfaces.
290
291   - Change the name of the Set{Build,Content}SignatureType() functions
292     to {Target,Source}Signatures().  Deprecate the old names but support
293     them for backwards compatibility.
294
295   - Add internal SCons.Node.FS.{Dir,File}.Entry() methods.
296
297   - Interpolate the null string if an out-of-range subscript is used
298     for a construction variable.
299
300   - Fix the internal Link function so that it properly links or copies
301     files in subsidiary BuildDir directories.
302
303   - Refactor the internal representation of a single execution instance
304     of an action to eliminate redundant signature calculations.
305
306   - Eliminate redundant signature calculations for Nodes.
307
308   - Optimize out calling hasattr() before accessing attributes.
309
310   - Say "Cleaning targets" (not "Building...") when the -c option is
311     used.
312
313   From Damyan Pepper:
314
315   - Quote the "Entering directory" message like Make.
316
317   From Stefan Reichor:
318
319   - Add support for using Ghostscript to convert Postscript to PDF files.
320
321   From Anthony Roach:
322
323   - Add a standalone "Alias" function (separate from an Environment).
324
325   - Make Export() work for local variables.
326
327   - Support passing a dictionary to Export().
328
329   - Support Import('*') to import everything that's been Export()ed.
330
331   - Fix an undefined exitvalmap on Win32 systems.
332
333   - Support new SetOption() and GetOption() functions for setting
334     various command-line options from with an SConscript file.
335
336   - Deprecate the old SetJobs() and GetJobs() functions in favor of
337     using the new generic {Set,Get}Option() functions.
338
339   - Fix a number of tests that searched for a Fortran compiler using the
340     external PATH instead of what SCons would use.
341
342   - Fix the interaction of SideEffect() and BuildDir() so that (for
343     example) PDB files get put correctly in a BuildDir().
344
345   From David Snopek:
346
347   - Contribute the "Autoscons" code for Autoconf-like checking for
348     the existence of libraries, header files and the like.
349
350   - Have the Tool() function add the tool name to the $TOOLS
351     construction variable.
352
353   From Greg Spencer:
354
355   - Support the C preprocessor #import statement.
356
357   - Allow the SharedLibrary() Builder on Win32 systems to be able to
358     register a newly-built dll using regsvr32.
359
360   - Add a Builder for Windows type library (.tlb) files from IDL files.
361
362   - Add an IDL scanner.
363
364   - Refactor the Fortran, C and IDL scanners to share common logic.
365
366   - Add .srcpath and .srcdir attributes to $TARGET and $SOURCE.
367
368   From Christoph Wiedemann:
369
370   - Integrate David Snopek's "Autoscons" code as the new SConf
371     configuration subsystem, including caching of values between
372     runs (using normal SCons dependency mechanisms), tests, and
373     documentation.
374
375
376
377 RELEASE 0.13 - Mon, 31 Mar 2003 20:22:00 -0600
378
379   From Charles Crain:
380
381   - Fix a bug when BuildDir(duplicate=0) is used and SConscript
382     files are called from within other SConscript files.
383
384   - Support (older) versions of Perforce which don't set the Windows
385     registry.
386
387
388
389 RELEASE 0.12 - Thu, 27 Mar 2003 23:52:09 -0600
390
391   From Charles Crain:
392
393   - Added support for the Perforce source code management system.
394
395   - Fix str(Node.FS) so that it returns a path relative to the calling
396     SConscript file's directory, not the top-level directory.
397
398   - Added support for a separate src_dir argument to SConscript()
399     that allows explicit specification of where the source files
400     for an SConscript file can be found.
401
402   - Support more easily re-usable flavors of command generators by
403     calling callable variables when strings are expanded.
404
405   From Steven Knight:
406
407   - Added an INSTALL construction variable that can be set to a function
408     to control how the Install() and InstallAs() Builders install files.
409     The default INSTALL function now copies, not links, files.
410
411   - Remove deprecated features:  the "name" argument to Builder objects,
412     and the Environment.Update() method.
413
414   - Add an Environment.SourceCode() method to support fetching files
415     from source code systems.  Add factory methods that create Builders
416     to support BitKeeper, CVS, RCS, and SCCS.  Add support for fetching
417     files from RCS or SCCS transparently (like GNU Make).
418
419   - Make the internal to_String() function more efficient.
420
421   - Make the error message the same as other build errors when there's a
422     problem unlinking a target file in preparation for it being built.
423
424   - Make TARGET, TARGETS, SOURCE and SOURCES reserved variable names and
425     warn if the user tries to set them in a construction environment.
426
427   - Add support for Tar and Zip files.
428
429   - Better documentation of the different ways to export variables to a
430     subsidiary SConscript file.  Fix documentation bugs in a tools
431     example, places that still assumed SCons split strings on white
432     space, and typos.
433
434   - Support fetching arbitrary files from the TARGETS or SOURCES lists
435     (e.g. ${SOURCES[2]}) when calculating the build signature of a
436     command.
437
438   - Don't silently swallow exceptions thrown by Scanners (or other
439     exceptions while finding a node's dependent children).
440
441   - Push files to CacheDir() before calling the superclass built()
442     method (which may clear the build signature as part of clearing
443     cached implicit dependencies, if the file has a source scanner).
444     (Bug reported by Jeff Petkau.)
445
446   - Raise an internal error if we attempt to push a file to CacheDir()
447     with a build signature of None.
448
449   - Add an explicit Exit() function for terminating early.
450
451   - Change the documentation to correctly describe that the -f option
452     doesn't change to the directory in which the specified file lives.
453     
454   - Support changing directories locally with SConscript directory
455     path names relative to any SConstruct file specified with -f.
456     This allows you to build in another directory by simply changing
457     there and pointing at the SConstruct file in another directory.
458
459   - Change the default SConscriptChdir() behavior to change to the
460     SConscript directory while it's being read.
461
462   - Fix an exception thrown when the -U option was used with no
463     Default() target specified.
464
465   - Fix -u so that it builds things in corresponding build directories
466     when used in a source directory.
467
468   From Lachlan O'Dea:
469
470   - Add SharedObject() support to the masm tool.
471
472   - Fix WhereIs() to return normalized paths.
473
474   From Jeff Petkau:
475
476   - Don't copy a built file to a CacheDir() if it's already there.
477
478   - Avoid partial copies of built files in a CacheDir() by copying
479     to a temporary file and renaming.
480
481   From Anthony Roach:
482
483   - Fix incorrect dependency-cycle errors when an Aliased source doesn't
484     exist.
485
486
487
488 RELEASE 0.11 - Tue, 11 Feb 2003 05:24:33 -0600
489
490   From Chad Austin:
491
492   - Add support for IRIX and the SGI MIPSPro tool chain.
493
494   - Support using the MSVC tool chain when running Cygwin Python.
495
496   From Michael Cook:
497
498   - Avoid losing signal bits in the exit status from a command,
499     helping terminate builds on interrupt (CTRL+C).
500
501   From Charles Crain:
502
503   - Added new AddPreAction() and AddPostAction() functions that support
504     taking additional actions before or after building specific targets.
505
506   - Add support for the PharLap ETS tool chain.
507
508   From Steven Knight:
509
510   - Allow Python function Actions to specify a list of construction
511     variables that should be included in the Action's signature.
512
513   - Allow libraries in the LIBS variable to explicitly include the prefix
514     and suffix, even when using the GNU linker.
515     (Bug reported by Neal Becker.)
516
517   - Use DOS-standard CR-LF line endings in the scons.bat file.
518     (Bug reported by Gary Ruben.)
519
520   - Doc changes:  Eliminate description of deprecated "name" keyword
521     argument from Builder definition (reported by Gary Ruben).
522
523   - Support using env.Append() on BUILDERS (and other dictionaries).
524     (Bug reported by Bj=F6rn Bylander.)
525
526   - Setting the BUILDERS construction variable now properly clears
527     the previous Builder attributes from the construction Environment.
528     (Bug reported by Bj=F6rn Bylander.)
529
530   - Fix adding a prefix to a file when the target isn't specified.
531     (Bug reported by Esa Ilari Vuokko.)
532
533   - Clean up error messages from problems duplicating into read-only
534     BuildDir directories or into read-only files.
535
536   - Add a CommandAction.strfunction() method, and add an "env" argument
537     to the FunctionAction.strfunction() method, so that all Action
538     objects have strfunction() methods, and the functions for building
539     and returning a string both take the same arguments.
540
541   - Add support for new CacheDir() functionality to share derived files
542     between builds, with related options --cache-disable, --cache-force,
543     and --cache-show.
544
545   - Change the default behavior when no targets are specified to build
546     everything in the current directory and below (like Make).  This
547     can be disabled by specifying Default(None) in an SConscript.
548
549   - Revamp SCons installation to fix a case-sensitive installation
550     on Win32 systems, and to add SCons-specific --standard-lib,
551     --standalone-lib, and --version-lib options for easier user
552     control of where the libraries get installed.
553
554   - Fix the ability to directly import and use Platform and Tool modules
555     that have been implicitly imported into an Environment().
556
557   - Add support for allowing an embedding interface to annotate a node
558     when it's created.
559
560   - Extend the SConscript() function to accept build_dir and duplicate
561     keyword arguments that function like a BuildDir() call.
562
563   From Steve Leblanc:
564
565   - Fix the output of -c -n when directories are involved, so it
566     matches -c.
567
568   From Anthony Roach:
569
570   - Use a different shared object suffix (.os) when using gcc so shared
571     and static objects can exist side-by-side in the same directory.
572
573   - Allow the same object files on Win32 to be linked into either
574     shared or static libraries.
575
576   - Cache implicit cache values when using --implicit-cache.
577
578
579
580 RELEASE 0.10 - Thu, 16 Jan 2003 04:11:46 -0600
581
582   From Derrick 'dman' Hudson:
583
584   - Support Repositories on other file systems by symlinking or
585     copying files when hard linking won't work.
586
587   From Steven Knight:
588
589   - Remove Python bytecode (*.pyc) files from the scons-local packages.
590
591   - Have FunctionActions print a description of what they're doing
592     (a representation of the Python call).
593
594   - Fix the Install() method so that, like other actions, it prints
595     what would have happened when the -n option is used.
596
597   - Don't create duplicate source files in a BuildDir when the -n
598     option is used.
599
600   - Refactor the Scanner interface to eliminate unnecessary Scanner
601     calls and make it easier to write efficient scanners.
602
603   - Added a "recursive" flag to Scanner creation that specifies the
604     Scanner should be invoked recursively on dependency files returned
605     by the scanner.
606
607   - Significant performance improvement from using a more efficient
608     check, throughout the code, for whether a Node has a Builder.
609
610   - Fix specifying only the source file to MultiStepBuilders such as
611     the Program Builder.  (Bug reported by Dean Bair.)
612
613   - Fix an exception when building from a file with the same basename as
614     the subdirectory in which it lives.  (Bug reported by Gerard Patel.)
615
616   - Fix automatic deduction of a target file name when there are
617     multiple source files specified; the target is now deduced from just
618     the first source file in the list.
619
620   - Documentation fixes: better initial explanation of SConscript files;
621     fix a misformatted "table" in the StaticObject explanation.
622
623   From Steven Knight and Steve Leblanc:
624
625   - Fix the -c option so it will remove symlinks.
626
627   From Steve Leblanc:
628
629   - Add a Clean() method to support removing user-specified targets
630     when using the -c option.
631
632   - Add a development script for running SCons through PyChecker.
633
634   - Clean up things found by PyChecker (mostly unnecessary imports).
635
636   - Add a script to use HappyDoc to create HTML class documentation.
637
638   From Lachlan O'Dea:
639
640   - Make the Environment.get() method return None by default.
641
642   From Anthony Roach:
643
644   - Add SetJobs() and GetJobs() methods to allow configuration of the
645     number of default jobs (still overridden by -j).
646
647   - Convert the .sconsign file format from ASCII to a pickled Python
648     data structure.
649
650   - Error message cleanups:  Made consistent the format of error
651     messages (now all start with "scons: ***") and warning messages (now
652     all start with "scons: warning:").  Caught more cases with the "Do
653     not know how to build" error message.
654
655   - Added support for the MinGW tool chain.
656
657   - Added a --debug=includes option.
658
659
660
661 RELEASE 0.09 - Thu,  5 Dec 2002 04:48:25 -0600
662
663   From Chad Austin:
664
665   - Add a Prepend() method to Environments, to append values to
666     the beginning of construction variables.
667
668   From Matt Balvin:
669
670   - Add long command-line support to the "lib" Tool (Microsoft library
671     archiver), too.
672
673   From Charles Crain:
674
675   - Allow $$ in a string to be passed through as $.
676
677   - Support file names with odd characters in them.
678
679   - Add support for construction variable substition on scanner
680     directories (in CPPPATH, F77PATH, LIBPATH, etc.).
681
682   From Charles Crain and Steven Knight:
683
684   - Add Repository() functionality, including the -Y option.
685
686   From Steven Knight:
687
688   - Fix auto-deduction of target names so that deduced targets end
689     up in the same subdirectory as the source.
690
691   - Don't remove source files specified on the command line!
692
693   - Suport the Intel Fortran Compiler (ifl.exe).
694
695   - Supply an error message if there are no command-line or
696     Default() targets specified.
697
698   - Fix the ASPPCOM values for the GNU assembler.
699     (Bug reported by Brett Polivka.)
700
701   - Fix an exception thrown when a Default() directory was specified
702     when using the -U option.
703
704   - Issue a warning when -c can't remove a target.
705
706   - Eliminate unnecessary Scanner calls by checking for the
707     existence of a file before scanning it.  (This adds a generic
708     hook to check an arbitrary condition before scanning.)
709
710   - Add explicit messages to tell when we're "Reading SConscript files
711     ...," "done reading SConscript files," "Building targets," and
712     "done building targets."  Add a -Q option to supress these.
713
714   - Add separate $SHOBJPREFIX and $SHOBJSUFFIX construction variables
715     (by default, the same as $OBJPREFIX and $OBJSUFFIX).
716
717   - Add Make-like error messages when asked to build a source file,
718     and before trying to build a file that doesn't have all its source
719     files (including when an invalid drive letter is used on WIN32).
720
721   - Add an scons-local-{version} package (in both .tar.gz and .zip
722     flavors) to help people who want to ship SCons as a stand-alone
723     build tool in their software packages.
724
725   - Prevent SCons from unlinking files in certain situations when
726     the -n option is used.
727
728   - Change the name of Tool/lib.py to Tool/mslib.py.
729
730   From Steven Knight and Anthony Roach:
731
732   - Man page:  document the fact that Builder calls return Node objects.
733
734   From Steve LeBlanc:
735
736   - Refactor option processing to use our own version of Greg Ward's
737     Optik module, modified to run under Python 1.5.2.
738
739   - Add a ParseConfig() command to modify an environment based on
740     parsing output from a *-config command.
741
742   From Jeff Petkau:
743
744   - Fix interpretation of '#/../foo' on Win32 systems.
745
746   From Anthony Roach:
747
748   - Fixed use of command lines with spaces in their arguments,
749     and use of Nodes with spaces in their string representation.
750
751   - Make access and modification times of files in a BuildDir match
752     the source file, even when hard linking isn't available.
753
754   - Make -U be case insensitive on Win32 systems.
755
756   - Issue a warning and continue when finding a corrupt .sconsign file.
757
758   - Fix using an alias as a dependency of a target so that if one of the
759     alias' dependencies gets rebuilt, the resulting target will, too.
760
761   - Fix differently ordered targets causing unnecessary rebuilds
762     on case insensitive systems.
763
764   - Use os.system() to execute external commands whenever the "env"
765     utility is available, which is much faster than fork()/exec(),
766     and fixes the -j option on several platforms.
767
768   - Fix use of -j with multiple targets.
769
770   - Add an Options() object for friendlier accomodation of command-
771     line arguments.
772
773   - Add support for Microsoft VC++ precompiled header (.pch) files,
774     debugger (.pdb) files, and resource (.rc) files.
775
776   - Don't compute the $_CPPINCFLAGS, $_F77INCFLAGS, $_LIBFLAGS and
777     $_LIBDIRFLAGS variables each time a command is executed, define
778     them so they're computed only as needed.  Add a new _concat
779     function to the Environment that allows people to define their
780     own similar variables.
781
782   - Fix dependency scans when $LIBS is overridden.
783
784   - Add EnsurePythonVersion() and EnsureSConsVersion() functions.
785
786   - Fix the overly-verbose stack trace on ListBuilder build errors.
787
788   - Add a SetContentSignatureType() function, allowing use of file
789     timestamps instead of MD5 signatures.
790
791   - Make -U and Default('source') fail gracefully.
792
793   - Allow the File() and Dir() methods to take a path-name string as
794     the starting directory, in addition to a Dir object.
795
796   - Allow the command handler to be selected via the SPAWN, SHELL
797     and ESCAPE construction variables.
798
799   - Allow construction variables to be overridden when a Builder
800     is called.
801
802   From sam th:
803
804   - Dynamically check for the existence of utilities with which to
805     initialize Environments by default.
806
807
808
809 RELEASE 0.08 - Mon, 15 Jul 2002 12:08:51 -0500
810
811   From Charles Crain:
812
813   - Fixed a bug with relative CPPPATH dirs when using BuildDir().
814     (Bug reported by Bob Summerwill.)
815
816   - Added a warnings framework and a --warn option to enable or
817     disable warnings.
818
819   - Make the C scanner warn users if files referenced by #include
820     directives cannot be found and --warn=dependency is specified.
821
822   - The BUILDERS construction variable should now be a dictionary
823     that maps builder names to actions.  Existing uses of lists,
824     and the Builder name= keyword argument, generate warnings
825     about use of deprecated features.
826
827   - Removed the "shared" keyword argument from the Object and
828     Library builders.
829     
830   - Added separated StaticObject, SharedObject, StaticLibrary and
831     SharedLibrary builders.  Made Object and Library synonyms for
832     StaticObject and StaticLibrary, respectively.
833
834   - Add LIBS and LIBPATH dependencies for shared libraries.
835
836   - Removed support for the prefix, suffix and src_suffix arguments
837     to Builder() to be callable functions.
838
839   - Fix handling file names with multiple dots.
840
841   - Allow a build directory to be outside of the SConstruct tree.
842
843   - Add a FindFile() function that searches for a file node with a
844     specified name.
845
846   - Add $CPPFLAGS to the shared-object command lines for g++ and gcc.
847
848   From Charles Crain and Steven Knight:
849
850   - Add a "tools=" keyword argument to Environment instantiation,
851     and a separate Tools() method, for more flexible specification
852     of tool-specific environment changes.
853
854   From Steven Knight:
855
856   - Add a "platform=" keyword argument to Environment instantiation,
857     and a separate Platform() method, for more flexible specification
858     of platform-specific environment changes.
859
860   - Updated README instructions and setup.py code to catch an
861     installation failure from not having distutils installed.
862
863   - Add descriptions to the -H help text for -D, -u and -U so
864     people can tell them apart.
865
866   - Remove the old feature of automatically splitting strings
867     of file names on white space.
868
869   - Add a dependency Scanner for native Fortran "include" statements,
870     using a new "F77PATH" construction variable.
871
872   - Fix C #include scanning to detect file names with characters like
873     '-' in them.
874
875   - Add more specific version / build output to the -v option.
876
877   - Add support for the GNU as, Microsoft masm, and nasm assemblers.
878
879   - Allow the "target" argument to a Builder call to be omitted, in
880     which case the target(s) are deduced from the source file(s) and the
881     Builder's specified suffix.
882
883   - Add a tar archive builder.
884
885   - Add preliminary support for the OS/2 Platform, including the icc
886     and ilink Tools.
887
888   From Jeff Petkau:
889
890   - Fix --implicit-cache if the scanner returns an empty list.
891
892   From Anthony Roach:
893
894   - Add a "multi" keyword argument to Builder creation that specifies
895     it's okay to call the builder multiple times for a target.
896
897   - Set a "multi" on Aliases so multiple calls will append to an Alias.
898
899   - Fix emitter functions' use of path names when using BuildDir or
900     in subdirectories.
901
902   - Fix --implicit-cache causing redundant rebuilds when the header
903     file list changed.
904
905   - Fix --implicit-cache when a file has no implicit dependencies and
906     its source is generated.
907
908   - Make the drive letters on Windows always be the same case, so that
909     changes in the case of drive letters don't cause a rebuild.
910
911   - Fall back to importing the SCons.TimeStamp module if the SCons.MD5
912     module can't be imported.
913
914   - Fix interrupt handling to guarantee that a single interrupt will
915     halt SCons both when using -j and not.
916
917   - Fix .sconsign signature storage so that output files of one build
918     can be safely used as input files to another build.
919
920   - Added a --debug=time option to print SCons execution times.
921
922   - Print an error message if a file can't be unlinked before being
923     built, rather than just silently terminating the build.
924
925   - Add a SideEffect() method that can be used to tell the build
926     engine that a given file is created as a side effect of building
927     a target.  A file can be specified as a side effect of more than
928     one build comand, in which case the commands will not be executed
929     simultaneously.
930
931   - Significant performance gains from not using our own version of
932     the inefficient stock os.path.splitext() method, caching source
933     suffix computation, code cleanup in MultiStepBuilder.__call__(),
934     and replicating some logic in scons_subst().
935
936   - Add --implicit-deps-changed and --implicit-deps-unchanged options.
937
938   - Add a GetLaunchDir() function.
939
940   - Add a SetBuildSignatureType() function.
941
942   From Zed Shaw:
943
944   - Add an Append() method to Environments, to append values to
945     construction variables.
946
947   - Change the name of Update() to Replace().  Keep Update() as a
948     deprecated synonym, at least for now.
949
950   From Terrel Shumway:
951
952   - Use a $PYTHON construction variable, initialized to sys.executable,
953     when using Python to build parts of the SCons packages.
954
955   - Use sys.prefix, not sys.exec_prefix, to find pdb.py.
956
957
958
959 RELEASE 0.07 - Thu,  2 May 2002 13:37:16 -0500
960
961   From Chad Austin:
962
963   - Changes to build SCons packages on IRIX (and other *NIces).
964
965   - Don't create a directory Node when a file already exists there,
966     and vice versa.
967
968   - Add 'dirs' and 'names' keyword arguments to SConscript for
969     easier specification of subsidiary SConscript files.
970
971   From Charles Crain:
972
973   - Internal cleanup of environment passing to function Actions.
974
975   - Builders can now take arbitrary keyword arguments to create
976     attributes to be passed to: command generator functions,
977     FunctionAction functions, Builder emitter functions (below),
978     and prefix/suffix generator functions (below).
979
980   - Command generator functions can now return ANYTHING that can be
981     converted into an Action (a function, a string, a CommandGenerator
982     instance, even an ActionBase instance).
983
984   - Actions now call get_contents() with the actual target and source
985     nodes used for the build.
986
987   - A new DictCmdGenerator class replaces CompositeBuilder to support
988     more flexible Builder behavior internally.
989
990   - Builders can now take an emitter= keyword argument.  An emitter
991     is a function that takes target, source, and env argument, then
992     return a 2-tuple of (new sources, new targets).  The emitter is
993     called when the Builder is __call__'ed, allowing a user to modify
994     source and target lists.
995
996   - The prefix, suffix and src_suffix Builder arguments now take a
997     callable as well a string.  The callable is passed the Environment
998     and any extra Builder keyword arguments and is expected to return
999     the appropriate prefix or suffix.
1000
1001   - CommandActions can now be a string, a list of command + argument
1002     strings, or a list of commands (strings or lists).
1003
1004   - Added shared library support.  The Object and Library Builders now
1005     take a "shared=1" keyword argument to specify that a shared object
1006     or shared library should be built.  It is an error to try to build
1007     static objects into a shared library or vice versa.
1008
1009   - Win32 support for .def files has been added.  Added the Win32-specific
1010     construction variables $WIN32DEFPREFIX, $WIN32DEFSUFFIX,
1011     $WIN32DLLPREFIX and $WIN32IMPLIBPREFIX.  When building a .dll,
1012     the new construction variable $WIN32_INSERT_DEF, controls whether
1013     the appropriately-named .def file is inserted into the target
1014     list (if not already present).  A .lib file is always added to
1015     a Library build if not present in the list of targets.
1016
1017   - ListBuilder now passes all targets to the action, not just the first.
1018
1019   - Fix so that -c now deletes generated yacc .h files.
1020
1021   - Builder actions and emitter functions can now be initialized, through
1022     construction variables, to things other than strings.
1023
1024   - Make top-relative '#/dir' lookups work like '#dir'.
1025
1026   - Fix for relative CPPPATH directories in subsidiary SConscript files
1027     (broken in 0.06).
1028
1029   - Add a for_signature argument to command generators, so that
1030     generators that need to can return distinct values for the
1031     command signature and for executing the command.
1032
1033   From Alex Jacques:
1034
1035   - Create a better scons.bat file from a py2bat.py script on the Python
1036     mailing list two years ago (modeled after pl2bat.pl).
1037
1038   From Steven Knight:
1039
1040   - Fix so that -c -n does *not* remove the targets!
1041
1042   - Man page:  Add a hierarchical libraries + Program example.
1043
1044   - Support long MSVC linker command lines through a builder action
1045     that writes to a temporary file and uses the magic MSVC "link @file"
1046     argument syntax if the line is longer than 2K characters.
1047
1048   - Fix F77 command-line options on Win32 (use /Fo instead of -o).
1049
1050   - Use the same action to build from .c (lower case) and .C (upper
1051     case) files on case-insensitive systems like Win32.
1052
1053   - Support building a PDF file directly from a TeX or LaTeX file
1054     using pdftex or pdflatex.
1055
1056   - Add a -x option to runtest.py to specify the script being tested.
1057     A -X option indicates it's an executable, not a script to feed
1058     to the Python interpreter.
1059
1060   - Add a Split() function (identical to SCons.Util.argmunge()) for use
1061     in the next release, when Builders will no longer automatically split
1062     strings on white space.
1063
1064   From Steve Leblanc:
1065
1066   - Add the SConscriptChdir() method.
1067
1068   From Anthony Roach:
1069
1070   - Fix --debug=tree when used with directory targets.
1071
1072   - Significant internal restructuring of Scanners and Taskmaster.
1073
1074   - Added new --debug=dtree option.
1075
1076   - Fixes for --profile option.
1077
1078   - Performance improvement in construction variable substitution.
1079
1080   - Implemented caching of content signatures, plus added --max-drift
1081     option to control caching.
1082
1083   - Implemented caching of dependency signatures, enabled by new
1084     --implicit-cache option.
1085
1086   - Added abspath construction variable modifier.
1087
1088   - Added $SOURCE variable as a synonym for $SOURCES[0].
1089
1090   - Write out .sconsign files on error or interrupt so intermediate
1091     build results are saved.
1092
1093   - Change the -U option to -D.  Make a new -U that builds just the
1094     targets from the local SConscript file.
1095
1096   - Fixed use of sys.path so Python modules can be imported from
1097     the SConscript directory.
1098
1099   - Fix for using Aliases with the -u, -U and -D options.
1100
1101   - Fix so that Nodes can be passed to SConscript files.
1102
1103   From Moshe Zadka:
1104   
1105   - Changes for official Debian packaging.
1106
1107
1108
1109 RELEASE 0.06 - Thu, 28 Mar 2002 01:24:29 -0600
1110
1111   From Charles Crain:
1112
1113   - Fix command generators to expand construction variables.
1114
1115   - Make FunctionAction arguments be Nodes, not strings.
1116
1117   From Stephen Kennedy:
1118
1119   - Performance:  Use a dictionary, not a list, for a Node's parents.
1120
1121   From Steven Knight:
1122
1123   - Add .zip files to the packages we build.
1124
1125   - Man page:  document LIBS, fix a typo, document ARGUMENTS.
1126
1127   - Added RANLIB and RANLIBFLAGS construction variables.  Only use them
1128     in ARCOM if there's a "ranlib" program on the system.
1129
1130   - Add a configurable CFILESUFFIX for the Builder of .l and .y files
1131     into C files.
1132
1133   - Add a CXXFile Builder that turns .ll and .yy files into .cc files
1134     (configurable via a CXXFILESUFFIX construction variable).
1135
1136   - Use the POSIX-standard lex -t flag, not the GNU-specific -o flag.
1137     (Bug reported by Russell Christensen.)
1138
1139   - Fixed an exception when CPPPATH or LIBPATH is a null string.
1140     (Bug reported by Richard Kiss.)
1141
1142   - Add a --profile=FILE option to make profiling SCons easier.
1143
1144   - Modify the new DVI builder to create .dvi files from LaTeX (.ltx
1145     and .latex) files.
1146
1147   - Add support for Aliases (phony targets).
1148
1149   - Add a WhereIs() method for searching for path names to executables.
1150
1151   - Add PDF and PostScript document builders.
1152
1153   - Add support for compiling Fortran programs from a variety of
1154     suffixes (a la GNU Make):  .f, .F, .for, .FOR, .fpp and .FPP
1155
1156   - Support a CPPFLAGS variable on all default commands that use the
1157     C preprocessor.
1158
1159   From Steve Leblanc:
1160
1161   - Add support for the -U option.
1162
1163   - Allow CPPPATH, LIBPATH and LIBS to be specified as white-space
1164     separated strings.
1165
1166   - Add a document builder to create .dvi files from TeX (.tex) files.
1167
1168   From Anthony Roach:
1169
1170   - Fix:  Construction variables with values of 0 were incorrectly
1171     interpolated as ''. 
1172
1173   - Support env['VAR'] to fetch construction variable values.
1174
1175   - Man page:  document Precious().
1176
1177
1178
1179 RELEASE 0.05 - Thu, 21 Feb 2002 16:50:03 -0600
1180
1181   From Chad Austin:
1182
1183   - Set PROGSUFFIX to .exe under Cygwin.
1184
1185   From Charles Crain:
1186
1187   - Allow a library to specified as a command-line source file, not just
1188     in the LIBS construction variable.
1189
1190   - Compensate for a bug in os.path.normpath() that returns '' for './'
1191     on WIN32.
1192
1193   - More performance optimizations:  cache #include lines from files,
1194     eliminate unnecessary calls.
1195
1196   - If a prefix or suffix contains white space, treat the resulting
1197     concatenation as separate arguments.
1198
1199   - Fix irregularities in the way we fetch DevStudio information from
1200     the Windows registry, and in our registry error handling.
1201
1202   From Steven Knight:
1203
1204   - Flush stdout after print so it intermixes correctly with stderr
1205     when redirected.
1206
1207   - Allow Scanners to return a list of strings, and document how to
1208     write your own Scanners.
1209
1210   - Look up implicit (scanned) dependencies relative to the directory
1211     of file being scanned.
1212
1213   - Make writing .sconsign files more robust by first trying to write
1214     to a temp file that gets renamed.
1215
1216   - Create all of the directories for a list of targets before trying
1217     to build any of the targets.
1218
1219   - WIN32 portability fixes in tests.
1220
1221   - Allow the list of variables exported to an SConscript file to be
1222     a UserList, too.
1223
1224   - Document the overlooked LIBPATH construction variable.
1225     (Bug reported by Eicke Godehardt.)
1226
1227   - Fix so that Ignore() ignores indirect, implicit dependencies
1228     (included files), not just direct dependencies.
1229
1230   - Put the man page in the Debian distribution.
1231
1232   - Run HTML docs through tidy to clean up the HTML (for Konqueror).
1233
1234   - Add preliminary support for Unicode strings.
1235
1236   - Efficiency:  don't scan dependencies more than once during the
1237     walk of a tree.
1238
1239   - Fix the -c option so it doesn't stop removing targets if one doesn't
1240     already exist.
1241     (Bug reported by Paul Connell.)
1242
1243   - Fix the --debug=pdb option when run on Windows NT.
1244     (Bug reported by Paul Connell.)
1245
1246   - Add support for the -q option.
1247
1248   From Steve Leblanc:
1249
1250   - Add support for the -u option.
1251
1252   - Add .cc and .hh file suffixes to the C Scanner.
1253
1254   From Anthony Roach:
1255
1256   - Make the scons script return an error code on failures.
1257
1258   - Add support for using code to generate a command to build a target.
1259
1260
1261
1262 RELEASE 0.04 - Wed, 30 Jan 2002 11:09:42 -0600
1263
1264   From Charles Crain:
1265
1266   - Significant performance improvements in the Node.FS and
1267     Scanner subsystems.
1268
1269   - Fix signatures of binary files on Win32 systems.
1270
1271   - Allow LIBS and LIBPATH to be strings, not just arrays.
1272
1273   - Print a traceback if a Python-function builder throws an exception.
1274
1275   From Steven Knight:
1276
1277   - Fix using a directory as a Default(), and allow Default() to
1278     support white space in file names for strings in arrays.
1279
1280   - Man page updates:  corrected some mistakes, documented various
1281     missing Environment methods, alphabetized the construction
1282     variables and other functions, defined begin and end macros for
1283     the example sections, regularized white space separation, fixed
1284     the use of Export() in the Multiple Variants example.
1285
1286   - Function action fixes:  None is now a successful return value.
1287     Exceptions are now reported.  Document function actions.
1288
1289   - Add 'Action' and 'Scanner' to the global keywords so SConscript
1290     files can use them too.
1291
1292   - Removed the Wrapper class between Nodes and Walkers.
1293
1294   - Add examples using Library, LIBS, and LIBPATH.
1295
1296   - The C Scanner now always returns a sorted list of dependencies
1297     so order changes don't cause unnecessary rebuilds.
1298
1299   - Strip $(-$) bracketed text from command lines.  Use this to
1300     surround $_INCDIRS and $_LIBDIRS so we don't rebuild in response
1301     to changes to -I or -L options.
1302
1303   - Add the Ignore() method to ignore dependencies.
1304
1305   - Provide an error message when a nonexistent target is specified
1306     on the command line.
1307
1308   - Remove targets before building them, and add an Environment
1309     Precious() method to override that.
1310
1311   - Eliminate redundant calls to the same builder when the target is a
1312     list of targets:  Add a ListBuilder class that wraps Builders to
1313     handle lists atomically.  Extend the Task class to support building
1314     and updating multiple targets in a single Task.  Simplify the
1315     interface between Task and Taskmaster.
1316
1317   - Add a --debug=pdb option to re-run SCons under the Python debugger.
1318
1319   - Only compute a build signature once for each node.
1320
1321   - Changes to our sys.path[] manipulation to support installation into
1322     an arbitrary --prefix value.
1323
1324   From Steve Leblanc:
1325
1326   - Add var=value command-line arguments.
1327
1328
1329
1330 RELEASE 0.03 - Fri, 11 Jan 2002 01:09:30 -0600
1331
1332   From Charles Crain:
1333
1334   - Performance improvements in the Node.FS and Sig.Calculator classes.
1335
1336   - Add the InstallAs() method.
1337
1338   - Execute commands through an external interpreter (sh, cmd.exe, or
1339     command.com) to handle redirection metacharacters.
1340
1341   - Allow the user to supply a command handler.
1342
1343   From Steven Knight:
1344
1345   - Search both /usr/lib and /usr/local/lib for scons directories by
1346     adding them both to sys.path, with whichever is in sys.prefix first.
1347
1348   - Fix interpreting strings of multiple white-space separated file names
1349     as separate file names, allowing prefixes and suffixes to be appended
1350     to each individually.
1351
1352   - Refactor to move CompositeBuilder initialization logic from the
1353     factory wrapper to the __init__() method, and allow a Builder to
1354     have both an action and a src_builder (or array of them).
1355
1356   - Refactor BuilderBase.__call__() to separate Node creation/lookup
1357     from initialization of the Node's builder information.
1358
1359   - Add a CFile Builder object that supports turning lex (.l) and
1360     yacc (.y) files into .c files.
1361
1362   - Document: variable interpretation attributes; how to propogate
1363     the user's environment variables to executed commands; how to
1364     build variants in multiple BuildDirs.
1365
1366   - Collect String, Dict, and List type-checking in common utility
1367     routines so we can accept User{String,Dict,List}s all over.
1368
1369   - Put the Action factory and classes into their own module.
1370
1371   - Use one CPlusPlusAction in the Object Builder's action dictionary,
1372     instead of letting it create multiple identical instances.
1373
1374   - Document the Install() and InstallAs() methods.
1375
1376   From Steve Leblanc:
1377
1378   - Require that a Builder be given a name argument, supplying a
1379     useful error message when it isn't.
1380
1381   From Anthony Roach:
1382
1383   - Add a "duplicate" keyword argument to BuildDir() that can be set
1384     to prevent linking/copying source files into build directories.
1385
1386   - Add a "--debug=tree" option to print an ASCII dependency tree.
1387
1388   - Fetch the location of the Microsoft Visual C++ compiler(s) from
1389     the Registry, instead of hard-coding the location.
1390     
1391   - Made Scanner objects take Nodes, not path names.
1392     
1393   - Have the C Scanner cache the #include file names instead of
1394     (re-)scanning the file each time it's called.
1395
1396   - Created a separate class for parent "nodes" of file system roots,
1397     eliminating the need for separate is-parent-null checks everywhere.
1398     
1399   - Removed defined __hash__() and __cmp() methods from FS.Entry, in
1400     favor of Python's more efficient built-in identity comparisons.
1401
1402
1403
1404 RELEASE 0.02 - Sun, 23 Dec 2001 19:05:09 -0600
1405
1406   From Charles Crain:
1407
1408   - Added the Install(), BuildDir(), and Export() methods.
1409
1410   - Fix the -C option by delaying setting the top of the FS tree.
1411
1412   - Avoid putting the directory path on the libraries in the LIBS
1413     construction variable.
1414
1415   - Added a GetBuildPath() method to return the full path to the
1416     Node for a specified string.
1417
1418   - Fixed variable substitution in CPPPATH and LIBPATH.
1419
1420   From Steven Knight:
1421
1422   - Fixed the version comment in the scons.bat (the UNIX geek used
1423     # instead of @rem).
1424
1425   - Fix to setup.py so it doesn't require a sys.argv[1] argument.
1426
1427   - Provide make-like warning message for "command not found" and
1428     similar errors.
1429
1430   - Added an EXAMPLES section to the man page.
1431
1432   - Make Default() targets properly relative to their SConscript
1433     file's subdirectory.
1434
1435   From Anthony Roach:
1436
1437   - Documented CXXFLAGS, CXXCOM, and CPPPATH.
1438
1439   - Fixed SCONS_LIB_DIR to work as documented.
1440
1441   - Made Default() accept Nodes as arguments.
1442
1443   - Changed Export() to make it easier to use.
1444   
1445   - Added the Import() and Return() methods.
1446
1447
1448
1449 RELEASE 0.01 - Thu Dec 13 19:25:23 CST 2001
1450
1451 A brief overview of important functionality available in release 0.01:
1452
1453   - C and C++ compilation on POSIX and Windows NT.
1454
1455   - Automatic scanning of C/C++ source files for #include dependencies.
1456
1457   - Support for building libraries; setting construction variables
1458     allows creation of shared libraries.
1459
1460   - Library and C preprocessor search paths.
1461
1462   - File changes detected using MD5 signatures.
1463
1464   - User-definable Builder objects for building files.
1465
1466   - User-definable Scanner objects for scanning for dependencies.
1467
1468   - Parallel build (-j) support.
1469
1470   - Dependency cycles detected.
1471
1472   - Linux packages available in RPM and Debian format.
1473
1474   - Windows installer available.