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