Add AddPreAction() and AddPostAction() methods. (Charles Crain)
[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.11 - XXX
12
13   From Charles Crain:
14
15   - Added new AddPreAction() and AddPostAction() functions that support
16     taking additional actions before or after building specific targets.
17
18   From Steven Knight:
19
20   - Allow Python function Actions to specify a list of construction
21     variables that should be included in the Action's signature.
22
23   From Anthony Roach:
24
25   - Use a different static object suffix (.os) when using gcc so shared
26     and static objects can exist side-by-side in the same directory.
27
28   - Allow the same object files on Win32 to be linked into either
29     shared or static libraries.
30
31
32
33 RELEASE 0.10 - Thu, 16 Jan 2003 04:11:46 -0600
34
35   From Derrick 'dman' Hudson:
36
37   - Support Repositories on other file systems by symlinking or
38     copying files when hard linking won't work.
39
40   From Steven Knight:
41
42   - Remove Python bytecode (*.pyc) files from the scons-local packages.
43
44   - Have FunctionActions print a description of what they're doing
45     (a representation of the Python call).
46
47   - Fix the Install() method so that, like other actions, it prints
48     what would have happened when the -n option is used.
49
50   - Don't create duplicate source files in a BuildDir when the -n
51     option is used.
52
53   - Refactor the Scanner interface to eliminate unnecessary Scanner
54     calls and make it easier to write efficient scanners.
55
56   - Added a "recursive" flag to Scanner creation that specifies the
57     Scanner should be invoked recursively on dependency files returned
58     by the scanner.
59
60   - Significant performance improvement from using a more efficient
61     check, throughout the code, for whether a Node has a Builder.
62
63   - Fix specifying only the source file to MultiStepBuilders such as
64     the Program Builder.  (Bug reported by Dean Bair.)
65
66   - Fix an exception when building from a file with the same basename as
67     the subdirectory in which it lives.  (Bug reported by Gerard Patel.)
68
69   - Fix automatic deduction of a target file name when there are
70     multiple source files specified; the target is now deduced from just
71     the first source file in the list.
72
73   - Documentation fixes: better initial explanation of SConscript files;
74     fix a misformatted "table" in the StaticObject explanation.
75
76   From Steven Knight and Steve Leblanc:
77
78   - Fix the -c option so it will remove symlinks.
79
80   From Steve Leblanc:
81
82   - Add a Clean() method to support removing user-specified targets
83     when using the -c option.
84
85   - Add a development script for running SCons through PyChecker.
86
87   - Clean up things found by PyChecker (mostly unnecessary imports).
88
89   - Add a script to use HappyDoc to create HTML class documentation.
90
91   From Lachlan O'Dea:
92
93   - Make the Environment.get() method return None by default.
94
95   From Anthony Roach:
96
97   - Add SetJobs() and GetJobs() methods to allow configuration of the
98     number of default jobs (still overridden by -j).
99
100   - Convert the .sconsign file format from ASCII to a pickled Python
101     data structure.
102
103   - Error message cleanups:  Made consistent the format of error
104     messages (now all start with "scons: ***") and warning messages (now
105     all start with "scons: warning:").  Caught more cases with the "Do
106     not know how to build" error message.
107
108   - Added support for the MinGW tool chain.
109
110   - Added a --debug=includes option.
111
112
113
114 RELEASE 0.09 - Thu,  5 Dec 2002 04:48:25 -0600
115
116   From Chad Austin:
117
118   - Add a Prepend() method to Environments, to append values to
119     the beginning of construction variables.
120
121   From Matt Balvin:
122
123   - Add long command-line support to the "lib" Tool (Microsoft library
124     archiver), too.
125
126   From Charles Crain:
127
128   - Allow $$ in a string to be passed through as $.
129
130   - Support file names with odd characters in them.
131
132   - Add support for construction variable substition on scanner
133     directories (in CPPPATH, F77PATH, LIBPATH, etc.).
134
135   From Charles Crain and Steven Knight:
136
137   - Add Repository() functionality, including the -Y option.
138
139   From Steven Knight:
140
141   - Fix auto-deduction of target names so that deduced targets end
142     up in the same subdirectory as the source.
143
144   - Don't remove source files specified on the command line!
145
146   - Suport the Intel Fortran Compiler (ifl.exe).
147
148   - Supply an error message if there are no command-line or
149     Default() targets specified.
150
151   - Fix the ASPPCOM values for the GNU assembler.
152     (Bug reported by Brett Polivka.)
153
154   - Fix an exception thrown when a Default() directory was specified
155     when using the -U option.
156
157   - Issue a warning when -c can't remove a target.
158
159   - Eliminate unnecessary Scanner calls by checking for the
160     existence of a file before scanning it.  (This adds a generic
161     hook to check an arbitrary condition before scanning.)
162
163   - Add explicit messages to tell when we're "Reading SConscript files
164     ...," "done reading SConscript files," "Building targets," and
165     "done building targets."  Add a -Q option to supress these.
166
167   - Add separate $SHOBJPREFIX and $SHOBJSUFFIX construction variables
168     (by default, the same as $OBJPREFIX and $OBJSUFFIX).
169
170   - Add Make-like error messages when asked to build a source file,
171     and before trying to build a file that doesn't have all its source
172     files (including when an invalid drive letter is used on WIN32).
173
174   - Add an scons-local-{version} package (in both .tar.gz and .zip
175     flavors) to help people who want to ship SCons as a stand-alone
176     build tool in their software packages.
177
178   - Prevent SCons from unlinking files in certain situations when
179     the -n option is used.
180
181   - Change the name of Tool/lib.py to Tool/mslib.py.
182
183   From Steven Knight and Anthony Roach:
184
185   - Man page:  document the fact that Builder calls return Node objects.
186
187   From Steve LeBlanc:
188
189   - Refactor option processing to use our own version of Greg Ward's
190     Optik module, modified to run under Python 1.5.2.
191
192   - Add a ParseConfig() command to modify an environment based on
193     parsing output from a *-config command.
194
195   From Jeff Petkau:
196
197   - Fix interpretation of '#/../foo' on Win32 systems.
198
199   From Anthony Roach:
200
201   - Fixed use of command lines with spaces in their arguments,
202     and use of Nodes with spaces in their string representation.
203
204   - Make access and modification times of files in a BuildDir match
205     the source file, even when hard linking isn't available.
206
207   - Make -U be case insensitive on Win32 systems.
208
209   - Issue a warning and continue when finding a corrupt .sconsign file.
210
211   - Fix using an alias as a dependency of a target so that if one of the
212     alias' dependencies gets rebuilt, the resulting target will, too.
213
214   - Fix differently ordered targets causing unnecessary rebuilds
215     on case insensitive systems.
216
217   - Use os.system() to execute external commands whenever the "env"
218     utility is available, which is much faster than fork()/exec(),
219     and fixes the -j option on several platforms.
220
221   - Fix use of -j with multiple targets.
222
223   - Add an Options() object for friendlier accomodation of command-
224     line arguments.
225
226   - Add support for Microsoft VC++ precompiled header (.pch) files,
227     debugger (.pdb) files, and resource (.rc) files.
228
229   - Don't compute the $_CPPINCFLAGS, $_F77INCFLAGS, $_LIBFLAGS and
230     $_LIBDIRFLAGS variables each time a command is executed, define
231     them so they're computed only as needed.  Add a new _concat
232     function to the Environment that allows people to define their
233     own similar variables.
234
235   - Fix dependency scans when $LIBS is overridden.
236
237   - Add EnsurePythonVersion() and EnsureSConsVersion() functions.
238
239   - Fix the overly-verbose stack trace on ListBuilder build errors.
240
241   - Add a SetContentSignatureType() function, allowing use of file
242     timestamps instead of MD5 signatures.
243
244   - Make -U and Default('source') fail gracefully.
245
246   - Allow the File() and Dir() methods to take a path-name string as
247     the starting directory, in addition to a Dir object.
248
249   - Allow the command handler to be selected via the SPAWN, SHELL
250     and ESCAPE construction variables.
251
252   - Allow construction variables to be overridden when a Builder
253     is called.
254
255   From sam th:
256
257   - Dynamically check for the existence of utilities with which to
258     initialize Environments by default.
259
260
261
262 RELEASE 0.08 - Mon, 15 Jul 2002 12:08:51 -0500
263
264   From Charles Crain:
265
266   - Fixed a bug with relative CPPPATH dirs when using BuildDir().
267     (Bug reported by Bob Summerwill.)
268
269   - Added a warnings framework and a --warn option to enable or
270     disable warnings.
271
272   - Make the C scanner warn users if files referenced by #include
273     directives cannot be found and --warn=dependency is specified.
274
275   - The BUILDERS construction variable should now be a dictionary
276     that maps builder names to actions.  Existing uses of lists,
277     and the Builder name= keyword argument, generate warnings
278     about use of deprecated features.
279
280   - Removed the "shared" keyword argument from the Object and
281     Library builders.
282     
283   - Added separated StaticObject, SharedObject, StaticLibrary and
284     SharedLibrary builders.  Made Object and Library synonyms for
285     StaticObject and StaticLibrary, respectively.
286
287   - Add LIBS and LIBPATH dependencies for shared libraries.
288
289   - Removed support for the prefix, suffix and src_suffix arguments
290     to Builder() to be callable functions.
291
292   - Fix handling file names with multiple dots.
293
294   - Allow a build directory to be outside of the SConstruct tree.
295
296   - Add a FindFile() function that searches for a file node with a
297     specified name.
298
299   - Add $CPPFLAGS to the shared-object command lines for g++ and gcc.
300
301   From Charles Crain and Steven Knight:
302
303   - Add a "tools=" keyword argument to Environment instantiation,
304     and a separate Tools() method, for more flexible specification
305     of tool-specific environment changes.
306
307   From Steven Knight:
308
309   - Add a "platform=" keyword argument to Environment instantiation,
310     and a separate Platform() method, for more flexible specification
311     of platform-specific environment changes.
312
313   - Updated README instructions and setup.py code to catch an
314     installation failure from not having distutils installed.
315
316   - Add descriptions to the -H help text for -D, -u and -U so
317     people can tell them apart.
318
319   - Remove the old feature of automatically splitting strings
320     of file names on white space.
321
322   - Add a dependency Scanner for native Fortran "include" statements,
323     using a new "F77PATH" construction variable.
324
325   - Fix C #include scanning to detect file names with characters like
326     '-' in them.
327
328   - Add more specific version / build output to the -v option.
329
330   - Add support for the GNU as, Microsoft masm, and nasm assemblers.
331
332   - Allow the "target" argument to a Builder call to be omitted, in
333     which case the target(s) are deduced from the source file(s) and the
334     Builder's specified suffix.
335
336   - Add a tar archive builder.
337
338   - Add preliminary support for the OS/2 Platform, including the icc
339     and ilink Tools.
340
341   From Jeff Petkau:
342
343   - Fix --implicit-cache if the scanner returns an empty list.
344
345   From Anthony Roach:
346
347   - Add a "multi" keyword argument to Builder creation that specifies
348     it's okay to call the builder multiple times for a target.
349
350   - Set a "multi" on Aliases so multiple calls will append to an Alias.
351
352   - Fix emitter functions' use of path names when using BuildDir or
353     in subdirectories.
354
355   - Fix --implicit-cache causing redundant rebuilds when the header
356     file list changed.
357
358   - Fix --implicit-cache when a file has no implicit dependencies and
359     its source is generated.
360
361   - Make the drive letters on Windows always be the same case, so that
362     changes in the case of drive letters don't cause a rebuild.
363
364   - Fall back to importing the SCons.TimeStamp module if the SCons.MD5
365     module can't be imported.
366
367   - Fix interrupt handling to guarantee that a single interrupt will
368     halt SCons both when using -j and not.
369
370   - Fix .sconsign signature storage so that output files of one build
371     can be safely used as input files to another build.
372
373   - Added a --debug=time option to print SCons execution times.
374
375   - Print an error message if a file can't be unlinked before being
376     built, rather than just silently terminating the build.
377
378   - Add a SideEffect() method that can be used to tell the build
379     engine that a given file is created as a side effect of building
380     a target.  A file can be specified as a side effect of more than
381     one build comand, in which case the commands will not be executed
382     simultaneously.
383
384   - Significant performance gains from not using our own version of
385     the inefficient stock os.path.splitext() method, caching source
386     suffix computation, code cleanup in MultiStepBuilder.__call__(),
387     and replicating some logic in scons_subst().
388
389   - Add --implicit-deps-changed and --implicit-deps-unchanged options.
390
391   - Add a GetLaunchDir() function.
392
393   - Add a SetBuildSignatureType() function.
394
395   From Zed Shaw:
396
397   - Add an Append() method to Environments, to append values to
398     construction variables.
399
400   - Change the name of Update() to Replace().  Keep Update() as a
401     deprecated synonym, at least for now.
402
403   From Terrel Shumway:
404
405   - Use a $PYTHON construction variable, initialized to sys.executable,
406     when using Python to build parts of the SCons packages.
407
408   - Use sys.prefix, not sys.exec_prefix, to find pdb.py.
409
410
411
412 RELEASE 0.07 - Thu,  2 May 2002 13:37:16 -0500
413
414   From Chad Austin:
415
416   - Changes to build SCons packages on IRIX (and other *NIces).
417
418   - Don't create a directory Node when a file already exists there,
419     and vice versa.
420
421   - Add 'dirs' and 'names' keyword arguments to SConscript for
422     easier specification of subsidiary SConscript files.
423
424   From Charles Crain:
425
426   - Internal cleanup of environment passing to function Actions.
427
428   - Builders can now take arbitrary keyword arguments to create
429     attributes to be passed to: command generator functions,
430     FunctionAction functions, Builder emitter functions (below),
431     and prefix/suffix generator functions (below).
432
433   - Command generator functions can now return ANYTHING that can be
434     converted into an Action (a function, a string, a CommandGenerator
435     instance, even an ActionBase instance).
436
437   - Actions now call get_contents() with the actual target and source
438     nodes used for the build.
439
440   - A new DictCmdGenerator class replaces CompositeBuilder to support
441     more flexible Builder behavior internally.
442
443   - Builders can now take an emitter= keyword argument.  An emitter
444     is a function that takes target, source, and env argument, then
445     return a 2-tuple of (new sources, new targets).  The emitter is
446     called when the Builder is __call__'ed, allowing a user to modify
447     source and target lists.
448
449   - The prefix, suffix and src_suffix Builder arguments now take a
450     callable as well a string.  The callable is passed the Environment
451     and any extra Builder keyword arguments and is expected to return
452     the appropriate prefix or suffix.
453
454   - CommandActions can now be a string, a list of command + argument
455     strings, or a list of commands (strings or lists).
456
457   - Added shared library support.  The Object and Library Builders now
458     take a "shared=1" keyword argument to specify that a shared object
459     or shared library should be built.  It is an error to try to build
460     static objects into a shared library or vice versa.
461
462   - Win32 support for .def files has been added.  Added the Win32-specific
463     construction variables $WIN32DEFPREFIX, $WIN32DEFSUFFIX,
464     $WIN32DLLPREFIX and $WIN32IMPLIBPREFIX.  When building a .dll,
465     the new construction variable $WIN32_INSERT_DEF, controls whether
466     the appropriately-named .def file is inserted into the target
467     list (if not already present).  A .lib file is always added to
468     a Library build if not present in the list of targets.
469
470   - ListBuilder now passes all targets to the action, not just the first.
471
472   - Fix so that -c now deletes generated yacc .h files.
473
474   - Builder actions and emitter functions can now be initialized, through
475     construction variables, to things other than strings.
476
477   - Make top-relative '#/dir' lookups work like '#dir'.
478
479   - Fix for relative CPPPATH directories in subsidiary SConscript files
480     (broken in 0.06).
481
482   - Add a for_signature argument to command generators, so that
483     generators that need to can return distinct values for the
484     command signature and for executing the command.
485
486   From Alex Jacques:
487
488   - Create a better scons.bat file from a py2bat.py script on the Python
489     mailing list two years ago (modeled after pl2bat.pl).
490
491   From Steven Knight:
492
493   - Fix so that -c -n does *not* remove the targets!
494
495   - Man page:  Add a hierarchical libraries + Program example.
496
497   - Support long MSVC linker command lines through a builder action
498     that writes to a temporary file and uses the magic MSVC "link @file"
499     argument syntax if the line is longer than 2K characters.
500
501   - Fix F77 command-line options on Win32 (use /Fo instead of -o).
502
503   - Use the same action to build from .c (lower case) and .C (upper
504     case) files on case-insensitive systems like Win32.
505
506   - Support building a PDF file directly from a TeX or LaTeX file
507     using pdftex or pdflatex.
508
509   - Add a -x option to runtest.py to specify the script being tested.
510     A -X option indicates it's an executable, not a script to feed
511     to the Python interpreter.
512
513   - Add a Split() function (identical to SCons.Util.argmunge()) for use
514     in the next release, when Builders will no longer automatically split
515     strings on white space.
516
517   From Steve Leblanc:
518
519   - Add the SConscriptChdir() method.
520
521   From Anthony Roach:
522
523   - Fix --debug=tree when used with directory targets.
524
525   - Significant internal restructuring of Scanners and Taskmaster.
526
527   - Added new --debug=dtree option.
528
529   - Fixes for --profile option.
530
531   - Performance improvement in construction variable substitution.
532
533   - Implemented caching of content signatures, plus added --max-drift
534     option to control caching.
535
536   - Implemented caching of dependency signatures, enabled by new
537     --implicit-cache option.
538
539   - Added abspath construction variable modifier.
540
541   - Added $SOURCE variable as a synonym for $SOURCES[0].
542
543   - Write out .sconsign files on error or interrupt so intermediate
544     build results are saved.
545
546   - Change the -U option to -D.  Make a new -U that builds just the
547     targets from the local SConscript file.
548
549   - Fixed use of sys.path so Python modules can be imported from
550     the SConscript directory.
551
552   - Fix for using Aliases with the -u, -U and -D options.
553
554   - Fix so that Nodes can be passed to SConscript files.
555
556   From Moshe Zadka:
557   
558   - Changes for official Debian packaging.
559
560
561
562 RELEASE 0.06 - Thu, 28 Mar 2002 01:24:29 -0600
563
564   From Charles Crain:
565
566   - Fix command generators to expand construction variables.
567
568   - Make FunctionAction arguments be Nodes, not strings.
569
570   From Stephen Kennedy:
571
572   - Performance:  Use a dictionary, not a list, for a Node's parents.
573
574   From Steven Knight:
575
576   - Add .zip files to the packages we build.
577
578   - Man page:  document LIBS, fix a typo, document ARGUMENTS.
579
580   - Added RANLIB and RANLIBFLAGS construction variables.  Only use them
581     in ARCOM if there's a "ranlib" program on the system.
582
583   - Add a configurable CFILESUFFIX for the Builder of .l and .y files
584     into C files.
585
586   - Add a CXXFile Builder that turns .ll and .yy files into .cc files
587     (configurable via a CXXFILESUFFIX construction variable).
588
589   - Use the POSIX-standard lex -t flag, not the GNU-specific -o flag.
590     (Bug reported by Russell Christensen.)
591
592   - Fixed an exception when CPPPATH or LIBPATH is a null string.
593     (Bug reported by Richard Kiss.)
594
595   - Add a --profile=FILE option to make profiling SCons easier.
596
597   - Modify the new DVI builder to create .dvi files from LaTeX (.ltx
598     and .latex) files.
599
600   - Add support for Aliases (phony targets).
601
602   - Add a WhereIs() method for searching for path names to executables.
603
604   - Add PDF and PostScript document builders.
605
606   - Add support for compiling Fortran programs from a variety of
607     suffixes (a la GNU Make):  .f, .F, .for, .FOR, .fpp and .FPP
608
609   - Support a CPPFLAGS variable on all default commands that use the
610     C preprocessor.
611
612   From Steve Leblanc:
613
614   - Add support for the -U option.
615
616   - Allow CPPPATH, LIBPATH and LIBS to be specified as white-space
617     separated strings.
618
619   - Add a document builder to create .dvi files from TeX (.tex) files.
620
621   From Anthony Roach:
622
623   - Fix:  Construction variables with values of 0 were incorrectly
624     interpolated as ''. 
625
626   - Support env['VAR'] to fetch construction variable values.
627
628   - Man page:  document Precious().
629
630
631
632 RELEASE 0.05 - Thu, 21 Feb 2002 16:50:03 -0600
633
634   From Chad Austin:
635
636   - Set PROGSUFFIX to .exe under Cygwin.
637
638   From Charles Crain:
639
640   - Allow a library to specified as a command-line source file, not just
641     in the LIBS construction variable.
642
643   - Compensate for a bug in os.path.normpath() that returns '' for './'
644     on WIN32.
645
646   - More performance optimizations:  cache #include lines from files,
647     eliminate unnecessary calls.
648
649   - If a prefix or suffix contains white space, treat the resulting
650     concatenation as separate arguments.
651
652   - Fix irregularities in the way we fetch DevStudio information from
653     the Windows registry, and in our registry error handling.
654
655   From Steven Knight:
656
657   - Flush stdout after print so it intermixes correctly with stderr
658     when redirected.
659
660   - Allow Scanners to return a list of strings, and document how to
661     write your own Scanners.
662
663   - Look up implicit (scanned) dependencies relative to the directory
664     of file being scanned.
665
666   - Make writing .sconsign files more robust by first trying to write
667     to a temp file that gets renamed.
668
669   - Create all of the directories for a list of targets before trying
670     to build any of the targets.
671
672   - WIN32 portability fixes in tests.
673
674   - Allow the list of variables exported to an SConscript file to be
675     a UserList, too.
676
677   - Document the overlooked LIBPATH construction variable.
678     (Bug reported by Eicke Godehardt.)
679
680   - Fix so that Ignore() ignores indirect, implicit dependencies
681     (included files), not just direct dependencies.
682
683   - Put the man page in the Debian distribution.
684
685   - Run HTML docs through tidy to clean up the HTML (for Konqueror).
686
687   - Add preliminary support for Unicode strings.
688
689   - Efficiency:  don't scan dependencies more than once during the
690     walk of a tree.
691
692   - Fix the -c option so it doesn't stop removing targets if one doesn't
693     already exist.
694     (Bug reported by Paul Connell.)
695
696   - Fix the --debug=pdb option when run on Windows NT.
697     (Bug reported by Paul Connell.)
698
699   - Add support for the -q option.
700
701   From Steve Leblanc:
702
703   - Add support for the -u option.
704
705   - Add .cc and .hh file suffixes to the C Scanner.
706
707   From Anthony Roach:
708
709   - Make the scons script return an error code on failures.
710
711   - Add support for using code to generate a command to build a target.
712
713
714
715 RELEASE 0.04 - Wed, 30 Jan 2002 11:09:42 -0600
716
717   From Charles Crain:
718
719   - Significant performance improvements in the Node.FS and
720     Scanner subsystems.
721
722   - Fix signatures of binary files on Win32 systems.
723
724   - Allow LIBS and LIBPATH to be strings, not just arrays.
725
726   - Print a traceback if a Python-function builder throws an exception.
727
728   From Steven Knight:
729
730   - Fix using a directory as a Default(), and allow Default() to
731     support white space in file names for strings in arrays.
732
733   - Man page updates:  corrected some mistakes, documented various
734     missing Environment methods, alphabetized the construction
735     variables and other functions, defined begin and end macros for
736     the example sections, regularized white space separation, fixed
737     the use of Export() in the Multiple Variants example.
738
739   - Function action fixes:  None is now a successful return value.
740     Exceptions are now reported.  Document function actions.
741
742   - Add 'Action' and 'Scanner' to the global keywords so SConscript
743     files can use them too.
744
745   - Removed the Wrapper class between Nodes and Walkers.
746
747   - Add examples using Library, LIBS, and LIBPATH.
748
749   - The C Scanner now always returns a sorted list of dependencies
750     so order changes don't cause unnecessary rebuilds.
751
752   - Strip $(-$) bracketed text from command lines.  Use this to
753     surround $_INCDIRS and $_LIBDIRS so we don't rebuild in response
754     to changes to -I or -L options.
755
756   - Add the Ignore() method to ignore dependencies.
757
758   - Provide an error message when a nonexistent target is specified
759     on the command line.
760
761   - Remove targets before building them, and add an Environment
762     Precious() method to override that.
763
764   - Eliminate redundant calls to the same builder when the target is a
765     list of targets:  Add a ListBuilder class that wraps Builders to
766     handle lists atomically.  Extend the Task class to support building
767     and updating multiple targets in a single Task.  Simplify the
768     interface between Task and Taskmaster.
769
770   - Add a --debug=pdb option to re-run SCons under the Python debugger.
771
772   - Only compute a build signature once for each node.
773
774   - Changes to our sys.path[] manipulation to support installation into
775     an arbitrary --prefix value.
776
777   From Steve Leblanc:
778
779   - Add var=value command-line arguments.
780
781
782
783 RELEASE 0.03 - Fri, 11 Jan 2002 01:09:30 -0600
784
785   From Charles Crain:
786
787   - Performance improvements in the Node.FS and Sig.Calculator classes.
788
789   - Add the InstallAs() method.
790
791   - Execute commands through an external interpreter (sh, cmd.exe, or
792     command.com) to handle redirection metacharacters.
793
794   - Allow the user to supply a command handler.
795
796   From Steven Knight:
797
798   - Search both /usr/lib and /usr/local/lib for scons directories by
799     adding them both to sys.path, with whichever is in sys.prefix first.
800
801   - Fix interpreting strings of multiple white-space separated file names
802     as separate file names, allowing prefixes and suffixes to be appended
803     to each individually.
804
805   - Refactor to move CompositeBuilder initialization logic from the
806     factory wrapper to the __init__() method, and allow a Builder to
807     have both an action and a src_builder (or array of them).
808
809   - Refactor BuilderBase.__call__() to separate Node creation/lookup
810     from initialization of the Node's builder information.
811
812   - Add a CFile Builder object that supports turning lex (.l) and
813     yacc (.y) files into .c files.
814
815   - Document: variable interpretation attributes; how to propogate
816     the user's environment variables to executed commands; how to
817     build variants in multiple BuildDirs.
818
819   - Collect String, Dict, and List type-checking in common utility
820     routines so we can accept User{String,Dict,List}s all over.
821
822   - Put the Action factory and classes into their own module.
823
824   - Use one CPlusPlusAction in the Object Builder's action dictionary,
825     instead of letting it create multiple identical instances.
826
827   - Document the Install() and InstallAs() methods.
828
829   From Steve Leblanc:
830
831   - Require that a Builder be given a name argument, supplying a
832     useful error message when it isn't.
833
834   From Anthony Roach:
835
836   - Add a "duplicate" keyword argument to BuildDir() that can be set
837     to prevent linking/copying source files into build directories.
838
839   - Add a "--debug=tree" option to print an ASCII dependency tree.
840
841   - Fetch the location of the Microsoft Visual C++ compiler(s) from
842     the Registry, instead of hard-coding the location.
843     
844   - Made Scanner objects take Nodes, not path names.
845     
846   - Have the C Scanner cache the #include file names instead of
847     (re-)scanning the file each time it's called.
848
849   - Created a separate class for parent "nodes" of file system roots,
850     eliminating the need for separate is-parent-null checks everywhere.
851     
852   - Removed defined __hash__() and __cmp() methods from FS.Entry, in
853     favor of Python's more efficient built-in identity comparisons.
854
855
856
857 RELEASE 0.02 - Sun, 23 Dec 2001 19:05:09 -0600
858
859   From Charles Crain:
860
861   - Added the Install(), BuildDir(), and Export() methods.
862
863   - Fix the -C option by delaying setting the top of the FS tree.
864
865   - Avoid putting the directory path on the libraries in the LIBS
866     construction variable.
867
868   - Added a GetBuildPath() method to return the full path to the
869     Node for a specified string.
870
871   - Fixed variable substitution in CPPPATH and LIBPATH.
872
873   From Steven Knight:
874
875   - Fixed the version comment in the scons.bat (the UNIX geek used
876     # instead of @rem).
877
878   - Fix to setup.py so it doesn't require a sys.argv[1] argument.
879
880   - Provide make-like warning message for "command not found" and
881     similar errors.
882
883   - Added an EXAMPLES section to the man page.
884
885   - Make Default() targets properly relative to their SConscript
886     file's subdirectory.
887
888   From Anthony Roach:
889
890   - Documented CXXFLAGS, CXXCOM, and CPPPATH.
891
892   - Fixed SCONS_LIB_DIR to work as documented.
893
894   - Made Default() accept Nodes as arguments.
895
896   - Changed Export() to make it easier to use.
897   
898   - Added the Import() and Return() methods.
899
900
901
902 RELEASE 0.01 - Thu Dec 13 19:25:23 CST 2001
903
904 A brief overview of important functionality available in release 0.01:
905
906   - C and C++ compilation on POSIX and Windows NT.
907
908   - Automatic scanning of C/C++ source files for #include dependencies.
909
910   - Support for building libraries; setting construction variables
911     allows creation of shared libraries.
912
913   - Library and C preprocessor search paths.
914
915   - File changes detected using MD5 signatures.
916
917   - User-definable Builder objects for building files.
918
919   - User-definable Scanner objects for scanning for dependencies.
920
921   - Parallel build (-j) support.
922
923   - Dependency cycles detected.
924
925   - Linux packages available in RPM and Debian format.
926
927   - Windows installer available.