6694df2d38fc8f3e01a03fd16bfddb3f74f2fa91
[scons.git] / src / CHANGES.txt
1 r __COPYRIGHT__
2 # __FILE__ __REVISION__ __DATE__ __DEVELOPER__
3
4
5                  SCons - a software construction tool
6
7                             Change Log
8
9
10
11 RELEASE 0.96 - XXX
12
13   From Chad Austin:
14
15   - Make the CacheDir() directory if it doesn't already exist.
16
17   - Allow construction variable substitutions in $LIBS specifications.
18
19   - Allow the emitter argument to a Builder() to be or expand to a list
20     of emitter functions, which will be called in sequence.
21
22   - Suppress null values in construction variables like $LIBS that use
23     the internal _concat() function.
24
25   - Remove .dll files from the construction variables searched for
26     libraries that can be fed to Win32 compilers.
27
28   From Chad Austin and Christoph Wiedemann:
29
30   - Add support for a $RPATH variable to supply a list of directories
31     to search for shared libraries when linking a program.
32
33   From Charles Crain:
34
35   - Restore the ability to do construction variable substitutions in all
36     kinds of *PATH variables, even when the substitution returns a Node
37     or other object.
38
39   From Tom Epperly:
40
41   - Allow the Java() Builder to take more than one source directory.
42
43   From Ralf W. Grosse-Kunstleve:
44
45   - Have SConsignFile() use, by default, a custom "dblite.py" that we can
46     control and guarantee to work on all Python versions (or nearly so).
47
48   From Bob Halley:
49
50   - Make the new *FLAGS variable type work with copied Environments.
51
52   From Chris Hoeppler:
53
54   - Initialize the name of a Scanner.Classic scanner correctly.
55
56   From Steven Knight:
57
58   - Add an Execute() method for executing actions directly.
59
60   - Support passing environment override keyword arguments to Command().
61
62   - Fix use of $MSVS_IGNORE_IDE_PATHS, which was broken when we added
63     support for $MSVS_USE_MFC_DIRS last release.
64
65   - Make env.Append() and env.Prepend() act like the underlying Python
66     behavior when the variable being appended to is a UserList object.
67
68   - Fix a regression that prevented the Command() global function in
69     0.95 from working with command-line strings as actions.
70
71   - Fix checking out a file from a source code management system when
72     the env.SourceCode() method was called with an individual file name
73     or node, not a directory name or node.
74
75   - Enhance the Task.make_ready() method to create a list of the
76     out-of-date Nodes for the task for use by the wrapping interface.
77
78   - Allow Scanners to pull the list of suffixes from the construction
79     environment when the "skeys" keyword argument is a string containing
80     a construction variable to be expanded.
81
82   - Support new $CPPSUFFIXES, $DSUFFIXES $FORTRANSUFFIXES, and
83     $IDLSUFFIXES.  construction variables that contain the default list
84     of suffixes to be scanned by a given type of scanner, allowing these
85     suffix lists to be easily added to or overridden.
86
87   - Speed up Node creation when calling a Builder by comparing whether two
88     Environments are the same object, not if their underlying dictionaries
89     are equivalent.
90
91   - Add a --debug=explain option that reports the reason(s) why SCons
92     thinks it must rebuild something.
93
94   - Add --save-explain-info and SetOption('save_explain_info') options
95     to control whether the --debug=explain information is saved in
96     the .sconsign file(s).  Not saving this information can improve
97     performance and save memory usage.
98
99   - Add support for functions that return platform-independent Actions
100     to Chmod(), Copy(), Delete(), Mkdir(), Move() and Touch() files
101     and/or directories.  Like any other Actions, the returned Action
102     object may be executed directly using the Execute() global function
103     or env.Execute() environment method, or may be used as a Builder
104     action or in an env.Command() action list.
105
106   - Add support for the strfunction argument to all types of Actions:
107     CommandAction, ListAction, and CommandGeneratorAction.
108
109   - Speed up turning file system Nodes into strings by caching the
110     values after we're finished reading the SConscript files.
111
112   - Have ParseConfig() recognize and supporting adding the -Wa, -Wl,
113     and -Wp, flags to ASFLAGS, LINKFLAGS and CPPFLAGS, respectively.
114
115   - Change the .sconsign format and the checks for whether a Node is
116     up-to-date to make dependency checks more efficient and correct.
117
118   - Add wrapper Actions to SCons.Defaults for $ASCOM, $ASPPCOM, $LINKCOM,
119     $SHLINKCOM, $ARCOM, $LEXCOM and $YACCCOM.  This makes it possible
120     to replace the default print behavior with a custom strfunction()
121     for each of these.
122
123   - When a Node has been built, don't walk the whole tree back to delete
124     the parents's implicit dependencies, let returning up the normal
125     Taskmaster descent take care of it for us.
126
127   - Add documented support for separate target_scanner and source_scanner
128     arguments to Builder creation, which allows different scanners to
129     be applied to source files
130
131   - Don't re-install or (re-generate) .h files when a subsidiary #included
132     .h file changes.  This eliminates incorrect circular dependencies
133     with .h files generated from other source files.
134
135   - Slim down the internal Sig.Calculator class by eliminating methods
136     whose functionality is now covered by Node methods.
137
138   - Document use of the target_factory and source_factory keyword
139     arguments when creating Builder objects.  Enhance Dir Nodes so that
140     they can be created with user-specified Builder objects.
141
142   From Gary Oberbrunner:
143
144   - Add a --debug=presub option to print actions prior to substitution.
145
146   - Add a warning upon use of the override keywords "targets" and
147     "sources" when calling Builders.  These are usually mistakes which
148     are otherwise silently (and confusingly) turned into construction
149     variable overrides.
150
151   - Try to find the ICL license file path name in the external environment
152     and the registry before resorting to the hard-coded path name.
153
154   - Add support for fetching command-line keyword=value arguments in
155     order from an ARGLIST list.
156
157   - Avoid stack traces when trying to read dangling symlinks.
158
159   From Simon Perkins:
160
161   - Fix a bug introduced in building shared libraries under MinGW.
162
163   From Kevin Quick:
164
165   - Fix test/chained-build.py on systems that execute within one second.
166
167   From Anthony Roach:
168
169   - Fix use of the --implicit-cache option with timestamp signatures.
170
171   - If Visual Studio is installed, assume the C/C++ compiler, the linker
172     and the MIDL compiler that comes with it are available, too.
173
174   - Better error messages when evaluating a construction variable
175     expansion yields a Python syntax error.
176
177   - Change the generation of PDB files when using Visual Studio from
178     compile time to link time.
179
180   From sam th:
181
182   - Allow SConf.CheckLib() to search a list of libraries, like the
183     Autoconf AC_SEARCH_LIBS macro.
184
185   - Allow the env.WhereIs() method to take a "reject" argument to
186     let it weed out specific path names.
187
188
189
190 RELEASE 0.95 - Mon, 08 Mar 2004 06:43:20 -0600
191
192   From Chad Austin:
193
194   - Replace print statements with calls to sys.stdout.write() so output
195     lines stay together when -j is used.
196
197   - Add portability fixes for a number of tests.
198
199   - Accomodate the fact that Cygwin's os.path.normcase() lies about
200     the underlying system being case-sensitive.
201
202   - Fix an incorrect _concat() call in the $RCINCFLAGS definition for
203     the mingw Tool.
204
205   - Fix a problem with the msvc tool with Python versions prior to 2.3.
206
207   - Add support for a "toolpath" Tool() and Environment keyword that
208     allows Tool modules to be found in specified local directories.
209
210   - Work around Cygwin Python's silly fiction that it's using a
211     case-sensitive file system.
212
213   - More robust handling of data in VCComponents.dat.
214
215   - If the "env" command is available, spawn commands with the more
216     general "env -" instead of "env -i".
217
218   From Kerim Borchaev:
219
220   - Fix a typo in a msvc.py's registry lookup:  "VCComponents.dat", not
221     "VSComponents.dat".
222
223   From Chris Burghart:
224
225   - Fix the ability to save/restore a PackageOption to a file.
226
227   From Steve Christensen:
228
229   - Update the MSVS .NET and MSVC 6.0/7.0 path detection.
230
231   From David M. Cooke:
232
233   - Make the Fortran scanner case-insensitive for the INCLUDE string.
234
235   From Charles Crain:
236
237   - If no version of MSVC is detected but the tool is specified,
238     use the MSVC 6.0 paths by default.
239
240   - Ignore any "6.1" version of MSVC found in the registry; this is a
241     phony version number (created by later service packs?) and would
242     throw off the logic if the user had any non-default paths configure.
243
244   - Correctly detect if the user has independently configured the MSVC
245     "include," "lib" or "path" in the registry and use the appropriate
246     values.  Previously, SCons would only use the values if all three
247     were set in the registry.
248
249   - Make sure side-effect nodes are prepare()d before building their
250     corresponding target.
251
252   - Preserve the ability to call BuildDir() multiple times with the
253     same target and source directory arguments.
254
255   From Andy Friesen:
256
257   - Add support for the Digital Mars "D" programming language.
258
259   From Scott Lystig Fritchie:
260
261   - Fix the ability to use a custom _concat() function in the
262     construction environment when calling _stripixes().
263
264   - Make the message about ignoring a missing SConscript file into a
265     suppressable Warning, not a hard-coded sys.stderr.write().
266
267   - If a builder can be called multiple times for a target (because
268     the sources and overrides are identical, or it's a builder with the
269     "multi" flag set), allow the builder to be called through multiple
270     environments so long as the builders have the same signature for
271     the environments in questions (that is, they're the same action).
272
273   From Bob Halley:
274
275   - When multiple targets are built by a single action, retrieve all
276     of them from cache, not just the first target, and exec the build
277     command if any of the targets isn't present in the cache.
278
279   From Zephaniah Hull:
280
281   - Fix command-line ARGUMENTS with multiple = in them.
282
283   From Steven Knight:
284
285   - Fix EnsureSConsVersion() so it checks against the SCons version,
286     not the Python version, on Pythons with sys.version_info.
287
288   - Don't swallow the AttributeError when someone uses an expansion like
289     $TARGET.bak, so we can supply a more informative error message.
290
291   - Fix an odd double-quote escape sequence in the man page.
292
293   - Fix looking up a naked drive letter as a directory (Dir('C:')).
294
295   - Support using File nodes in the LIBS construction variable.
296
297   - Allow the LIBS construction variable to be a single string or File
298     node, not a list, when only one library is needed.
299
300   - Fix typos in the man page:  JAVACHDIR => JARCHDIR; add "for_signature"
301     to the __call__() example in the "Variable Substitution" section.
302
303   - Correct error message spellings of "non-existant" to "non-existent."
304
305   - When scanning for libraries to link with, don't append $LIBPREFIXES
306     or $LIBSUFFIXES values to the $LIBS values if they're already present.
307
308   - Add a ZIPCOMPRESSION construction variable to control whether the
309     internal Python action for the Zip Builder compresses the file or
310     not.  The default value is zipfile.ZIP_DEFLATED, which generates
311     a compressed file.
312
313   - Refactor construction variable expansion to support recursive
314     expansion of variables (e.g. CCFLAGS = "$CCFLAGS -g") without going
315     into an infinite loop.  Support this in all construction variable
316     overrides, as well as when copying Environments.
317
318   - Fix calling Configure() from more than one subsidiary SConscript file.
319
320   - Fix the env.Action() method so it returns the correct type of
321     Action for its argument(s).
322
323   - Fix specifying .class files as input to JavaH with the .class suffix
324     when they weren't generated using the Java Builder.
325
326   - Make the check for whether all of the objects going into a
327     SharedLibrary() are shared work even if the object was built in a
328     previous run.
329
330   - Supply meaningful error messages, not stack traces, if we try to add
331     a non-Node as a source, dependency, or ignored dependency of a Node.
332
333   - Generate MSVS Project files that re-invoke SCons properly regardless
334     of whether the file was built via scons.bat or scons.py.
335     (Thanks to Niall Douglas for contributing code and testing.)
336
337   - Fix TestCmd.py, runtest.py and specific tests to accomodate being
338     run from directories whose paths include white space.
339
340   - Provide a more useful error message if a construction variable
341     expansion contains a syntax error during evaluation.
342
343   - Fix transparent checkout of implicit dependency files from SCCS
344     and RCS.
345
346   - Added new --debug=count, --debug=memory and --debug=objects options.
347     --debug=count and --debug=objects only print anything when run
348     under Python 2.1 or later.
349
350   - Deprecate the "overrides" keyword argument to Builder() creation
351     in favor of using keyword argument values directly (like we do
352     for builder execution and the like).
353
354   - Always use the Builder overrides in substitutions, not just if
355     there isn't a target-specific environment.
356
357   - Add new "rsrcpath" and "rsrcdir" and attributes to $TARGET/$SOURCE,
358     so Builder command lines can find things in Repository source
359     directories when using BuildDir.
360
361   - Fix the M4 Builder so that it chdirs to the Repository directory
362     when the input file is in the source directory of a BuildDir.
363
364   - Save memory at build time by allowing Nodes to delete their build
365     environments after they've been built.
366
367   - Add AppendUnique() and PrependUnique() Environment methods, which
368     add values to construction variables like Append() and Prepend()
369     do, but suppress any duplicate elements in the list.
370
371   - Allow the 'qt' tool to still be used successfully from a copied
372     Environment.  The include and library directories previously ended up
373     having the same string re-appended to the end, yielding an incorrect
374     path name.
375
376   - Supply a more descriptive error message when the source for a target
377     can't be found.
378
379   - Initialize all *FLAGS variables with objects do the right thing with
380     appending flags as strings or lists.
381
382   - Make things like ${TARGET.dir} work in *PATH construction variables.
383
384   - Allow a $MSVS_USE_MFC_DIRS construction variable to control whether
385     ATL and MFC directories are included in the default INCLUDE and
386     LIB paths.
387
388   - Document the dbm_module argument to the SConsignFile() function.
389
390   From Vincent Risi:
391
392   - Add support for the bcc32, ilink32 and tlib Borland tools.
393
394   From Anthony Roach:
395
396   - Supply an error message if the user tries to configure a BuildDir
397     for a directory that already has one.
398
399   - Remove documentation of the still-unimplemented -e option.
400
401   - Add -H help text listing the legal --debug values.
402
403   - Don't choke if a construction variable is a non-string value.
404
405   - Build Type Libraries in the target directory, not the source
406     directory.
407
408   - Add an appendix to the User's Guide showing how to accomplish
409     various common tasks in Python.
410
411   From Greg Spencer:
412
413   - Add support for Microsoft Visual Studio 2003 (version 7.1).
414
415   - Evaluate $MSVSPROJECTSUFFIX and $MSVSSOLUTIONSUFFIX when the Builder
416     is invoked, not when the tool is initialized.
417
418   From Christoph Wiedemann:
419
420   - When compiling Qt, make sure the moc_*.cc files are compiled using
421     the flags from the environment used to specify the target, not
422     the environment that first has the Qt Builders attached.
423
424   - Add new Moc() and Uic() Builders for Qt, and a slew of $QT_*
425     construction variables to control them.
426
427   - Add a new single_source keyword argument for Builders that enforces
428     a single source file on calls to the Builder.
429
430
431
432 RELEASE 0.94 - Fri, 07 Nov 2003 05:29:48 -0600
433
434   From Hartmut Goebel:
435
436   - Add several new types of canned functions to help create options:
437     BoolOption(), EnumOption(), ListOption(), PackageOption(),
438     PathOption().
439
440   From Steven Knight:
441
442   - Fix use of CPPDEFINES with C++ source files.
443
444   - Fix env.Append() when the operand is an object with a __cmp__()
445     method (like a Scanner instance).
446
447   - Fix subclassing the Environment and Scanner classes.
448
449   - Add BUILD_TARGETS, COMMAND_LINE_TARGETS and DEFAULT_TARGETS variables.
450
451   From Steve Leblanc:
452
453   - SGI fixes:  Fix C++ compilation, add a separate Tool/sgic++.py module.
454
455   From Gary Oberbrunner:
456
457   - Fix how the man page un-indents after examples in some browsers.
458
459   From Vincent Risi:
460
461   - Fix the C and C++ tool specifications for AIX.
462
463
464
465 RELEASE 0.93 - Thu, 23 Oct 2003 07:26:55 -0500
466
467   From J.T. Conklin:
468
469   - On POSIX, execute commands with the more modern os.spawnvpe()
470     function, if it's available.
471
472   - Scan .S, .spp and .SPP files for C preprocessor dependencies.
473
474   - Refactor the Job.Parallel() class to use a thread pool without a
475     condition variable.  This improves parallel build performance and
476     handles keyboard interrupts properly when -j is used.
477
478   From Charles Crain:
479
480   - Add support for a JARCHDIR variable to control changing to a
481     directory using the jar -C option.
482
483   - Add support for detecting Java manifest files when using jar,
484     and specifying them using the jar m flag.
485
486   - Fix some Python 2.2 specific things in various tool modules.
487
488   - Support directories as build sources, so that a rebuild of a target
489     can be triggered if anything underneath the directory changes.
490
491   - Have the scons.bat and scons.py files look for the SCons modules
492     in site-packages as well.
493
494   From Christian Engel:
495
496   - Support more flexible inclusion of separate C and C++ compilers.
497
498   - Use package management tools on AIX and Solaris to find where
499     the comilers are installed, and what version they are.
500
501   - Add support for CCVERSION and CXXVERSION variables for a number
502     of C and C++ compilers.
503
504   From Sergey Fogel:
505
506   - Add test cases for the new capabilities to run bibtex and to rerun
507     latex as needed.
508
509   From Ralf W. Grosse-Kunstleve:
510
511   - Accomodate anydbm modules that don't have a sync() method.
512
513   - Allow SConsignFile() to take an argument specifying the DBM
514     module to be used.
515
516   From Stephen Kennedy:
517
518   - Add support for a configurable global .sconsign.dbm file which
519     can be used to avoid cluttering each directory with an individual
520     .sconsign file.
521
522   From John Johnson:
523
524   - Fix (re-)scanning of dependencies in generated or installed
525     header files.
526
527   From Steven Knight:
528
529   - The -Q option suppressed too many messages; fix it so that it only
530     suppresses the Reading/Building messages.
531
532   - Support #include when there's no space before the opening quote
533     or angle bracket.
534
535   - Accomodate alphanumeric version strings in EnsurePythonVersion().
536
537   - Support arbitrary expansion of construction variables within
538     file and directory arguments to Builder calls and Environment methods.
539
540   - Add Environment-method versions of the following global functions:
541     Action(), AddPostAction(), AddPreAction(), Alias(), Builder(),
542     BuildDir(), CacheDir(), Clean(), Configure(), Default(),
543     EnsurePythonVersion(), EnsureSConsVersion(), Environment(),
544     Exit(), Export(), FindFile(), GetBuildPath(), GetOption(), Help(),
545     Import(), Literal(), Local(), Platform(), Repository(), Scanner(),
546     SConscriptChdir(), SConsignFile(), SetOption(), SourceSignatures(),
547     Split(), TargetSignatures(), Tool(), Value().
548
549   - Add the following global functions that correspond to the same-named
550     Environment methods:  AlwaysBuild(), Command(), Depends(), Ignore(),
551     Install(), InstallAs(), Precious(), SideEffect() and SourceCode().
552
553   - Add the following global functions that correspond to the default
554     Builder methods supported by SCons: CFile(), CXXFile(), DVI(), Jar(),
555     Java(), JavaH(), Library(), M4(), MSVSProject(), Object(), PCH(),
556     PDF(), PostScript(), Program(), RES(), RMIC(), SharedLibrary(),
557     SharedObject(), StaticLibrary(), StaticObject(), Tar(), TypeLibrary()
558     and Zip().
559
560   - Rearrange the man page to show construction environment methods and
561     global functions in the same list, and to explain the difference.
562
563   - Alphabetize the explanations of the builder methods in the man page.
564
565   - Rename the Environment.Environment class to Enviroment.Base.
566     Allow the wrapping interface to extend an Environment by using its own
567     subclass of Environment.Base and setting a new Environment.Environment
568     variable as the calling entry point.
569
570   - Deprecate the ParseConfig() global function in favor of a same-named
571     construction environment method.
572
573   - Allow the Environment.WhereIs() method to take explicit path and
574     pathext arguments (like the underlying SCons.Util.WhereIs() function).
575
576   - Remove the long-obsolete {Get,Set}CommandHandler() functions.
577
578   - Enhance env.Append() to suppress null values when appropriate.
579
580   - Fix ParseConfig() so it works regardless of initial construction
581     variable values.
582
583     Extend CheckHeader(), CheckCHeader(), CheckCXXHeader() and
584     CheckLibWithHeader() to accept a list of header files that will be
585     #included in the test.  The last one in the list is assumed to be
586     the one being checked for.  (Prototype code contributed by Gerard
587     Patel and Niall Douglas).
588
589   - Supply a warning when -j is used and threading isn't built in to
590     the current version of Python.
591
592   - First release of the User's Guide (finally, and despite a lot
593     of things still missing from it...).
594
595   From Clark McGrew:
596
597   - Generalize the action for .tex files so that it will decide whether
598     a file is TeX or LaTeX, check the .aux output to decide if it should
599     run bibtex, and check the .log output to re-run LaTeX if needed.
600
601   From Bram Moolenaar:
602
603   - Split the non-SCons-specific functionality from SConf.py to a new,
604     re-usable Conftest.py module.
605
606   From Gary Oberbrunner:
607
608   - Allow a directory to be the target or source or dependency of a
609     Depends(), Ignore(), Precious() or SideEffect() call.
610
611   From Gerard Patel:
612
613   - Use the %{_mandir} macro when building our RPM package.
614
615   From Marko Rauhamaa:
616
617   - Have the closing message say "...terminated because of errors" if
618     there were any.
619
620   From Anthony Roach:
621
622   - On Win32 systems, only use "rm" to delete files if Cygwin is being
623     used.   ("rm" doesn't understand Win32-format path names.)
624
625   From Christoph Wiedemann:
626
627   - Fix test/SWIG.py to find the Python include directory in all cases.
628
629   - Fix a bug in detection of Qt installed on the local system.
630
631   - Support returning Python 2.3 BooleanType values from Configure checks.
632
633   - Provide an error message if someone mistakenly tries to call a
634     Configure check from within a Builder function.
635
636   - Support calling a Builder when a Configure context is still open.
637
638   - Handle interrupts better by eliminating all try:-except: blocks
639     which caught any and all exceptions, including KeyboardInterrupt.
640
641   - Add a --duplicate= option to control how files are duplicated.
642
643
644
645 RELEASE 0.92 - Wed, 20 Aug 2003 03:45:28 -0500
646
647   From Charles Crain and Gary Oberbrunner:
648
649   - Fix Tool import problems with the Intel and PharLap linkers.
650
651   From Steven Knight
652
653   - Refactor the DictCmdGenerator class to be a Selector subclass.
654
655   - Allow the DefaultEnvironment() function to take arguments and pass
656     them to instantiation of the default construction environment.
657
658   - Update the Debian package so it uses Python 2.2 and more closely
659     resembles the currently official Debian packaging info.
660
661   From Gerard Patel
662
663   - When the yacc -d flag is used, take the .h file base name from the
664     target .c file, not the source (matching what yacc does).
665
666
667
668 RELEASE 0.91 - Thu, 14 Aug 2003 13:00:44 -0500
669
670   From Chad Austin:
671
672   - Support specifying a list of tools when calling Environment.Copy().
673
674   - Give a Value Nodes a timestamp of the system time when they're
675     created, so they'll work when using timestamp-based signatures.
676
677   - Add a DefaultEnvironment() function that only creates a default
678     environment on-demand (for fetching source files, e.g.).
679
680   - Portability fix for test/M4.py.
681
682   From Steven Knight:
683
684   - Tighten up the scons -H help output.
685
686   - When the input yacc file ends in .yy and the -d flag is specified,
687     recognize that a .hpp file (not a .h file) will be created.
688
689   - Make builder prefixes work correctly when deducing a target
690     from a source file name in another directory.
691
692   - Documentation fixes: typo in the man page; explain up-front about
693     not propagating the external environment.
694
695   - Use "cvs co -d" instead of "cvs co -p >" when checking out something
696     from CVS with a specified module name.  This avoids zero-length
697     files when there is a checkout error.
698
699   - Add an "sconsign" script to print the contents of .sconsign files.
700
701   - Speed up maintaining the various lists of Node children by using
702     dictionaries to avoid "x in list" searches.
703
704   - Cache the computed list of Node children minus those being Ignored
705     so it's only calculated once.
706
707   - Fix use of the --cache-show option when building a Program()
708     (or using any other arbitrary action) by making sure all Action
709     instances have strfunction() methods.
710
711   - Allow the source of Command() to be a directory.
712
713   - Better error handling of things like raw TypeErrors in SConscripts.
714
715   - When installing using "setup.py install --prefix=", suppress the
716     distutils warning message about adding the (incorrect) library
717     directory to your search path.
718
719   - Correct the spelling of the "validater" option to "validator."
720     Add a DeprecatedWarning when the old spelling is used.
721
722   - Allow a Builder's emitter to be a dictionary that maps source file
723     suffixes to emitter functions, using the suffix of the first file
724     in the source list to pick the right one.
725
726   - Refactor the creation of the Program, *Object and *Library Builders
727     so that they're moved out of SCons.Defaults and created on demand.
728
729   - Don't split SConscript file names on white space.
730
731   - Document the SConscript function's "dirs" and "name" keywords.
732
733   - Remove the internal (and superfluous) SCons.Util.argmunge() function.
734
735   - Add /TP to the default CXXFLAGS for msvc, so it can compile all
736     of the suffixes we use as C++ files.
737
738   - Allow the "prefix" and "suffix" attributes of a Builder to be
739     callable objects that return generated strings, or dictionaries
740     that map a source file suffix to the right prefix/suffix.
741
742   - Support a MAXLINELINELENGTH construction variable on Win32 systems
743     to control when a temporary file is used for long command lines.
744
745   - Make how we build .rpm packages not depend on the installation
746     locations from the distutils being used.
747
748   - When deducing a target Node, create it directly from the first
749     source Node, not by trying to create the right string to pass to
750     arg2nodes().
751
752   - Add support for SWIG.
753
754   From Bram Moolenaar:
755
756   - Test portability fixes for FreeBSD.
757
758   From Gary Oberbrunner:
759
760   - Report the target being built in error messages when building
761     multiple sources from different extensions, or when the target file
762     extension can't be deduced, or when we don't have an action for a
763     file suffix.
764
765   - Provide helpful error messages when the arguments to env.Install()
766     are incorrect.
767
768   - Fix the value returned by the Node.prevsiginfo() method to conform
769     to a previous change when checking whether a node is current.
770
771   - Supply a stack trace if the Taskmaster catches an exception.
772
773   - When using a temporary file for a long link line on Win32 systems,
774     (also) print the command line that is being executed through the
775     temporary file.
776
777   - Initialize the LIB environment variable when using the Intel
778     compiler (icl).
779
780   - Documentation fixes:  better explain the AlwaysBuild() function.
781
782   From Laurent Pelecq:
783
784   - When the -debug=pdb option is specified, use pdb.Pdb().runcall() to
785     call pdb directly, don't call Python recursively.
786
787   From Ben Scott:
788
789   - Add support for a platform-independent CPPDEFINES variable.
790
791   From Christoph Wiedemann:
792
793   - Have the g++ Tool actually use g++ in preference to c++.
794
795   - Have the gcc Tool actually use gcc in preference to cc.
796
797   - Add a gnutools.py test of the GNU tool chain.
798
799   - Be smarter about linking: use $CC by default and $CXX only if we're
800     linking with any C++ objects.
801
802   - Avoid SCons hanging when a piped command has a lot of output to read.
803
804   - Add QT support for preprocessing .ui files into .c files.
805
806
807
808 RELEASE 0.90 - Wed, 25 Jun 2003 14:24:52 -0500
809
810   From Chad Austin:
811
812   - Fix the _concat() documentation, and add a test for it.
813
814   - Portability fixes for non-GNU versions of lex and yacc.
815
816   From Matt Balvin:
817
818   - Fix handling of library prefixes when the subdirectory matches
819     the prefix.
820
821   From Timothee Bessett:
822
823   - Add an M4 Builder.
824
825   From Charles Crain:
826
827   - Use '.lnk' as the suffix on the temporary file for linking long
828     command lines (necessary for the Phar Lap linkloc linker).
829
830   - Save non-string Options values as their actual type.
831
832   - Save Options string values that contain a single quote correctly.
833
834   - Save any Options values that are changed from the default
835     Environment values, not just ones changed on the command line or in
836     an Options file.
837
838   - Make closing the Options file descriptor exception-safe.
839
840   From Steven Knight:
841
842   - SCons now enforces (with an error) that construction variables
843     must have the same form as valid Python identifiers.
844
845   - Fix man page bugs: remove duplicate AddPostAction() description;
846     document no_import_lib; mention that CPPFLAGS does not contain
847     $_CPPINCFLAGS; mention that F77FLAGS does not contain $_F77INCFLAGS;
848     mention that LINKFLAGS and SHLINKFLAGS contains neither $_LIBFLAGS
849     nor $_LIBDIRFLAGS.
850
851   - Eliminate a dependency on the distutils.fancy_getopt module by
852     copying and pasting its wrap_text() function directly.
853
854   - Make the Script.Options() subclass match the underlying base class
855     implementation.
856
857   - When reporting a target is up to date, quote the target like make
858     (backquote-quote) instead of with double quotes.
859
860   - Fix handling of ../* targets when using -U, -D or -u.
861
862   From Steve Leblanc:
863
864   - Don't update the .sconsign files when run with -n.
865
866   From Gary Oberbrunner:
867
868   - Add support for the Intel C Compiler (icl.exe).
869
870   From Anthony Roach
871
872   - Fix Import('*').
873
874   From David Snopek
875
876   - Fix use of SConf in paths with white space in them.
877
878   - Add CheckFunc and CheckType functionality to SConf.
879
880   - Fix use of SConf with Builders that return a list of nodes.
881
882   From David Snopek and Christoph Wiedemann
883
884   - Fix use of the SConf subsystem with SConscriptChdir().
885
886   From Greg Spencer
887
888   - Check for the existence of MS Visual Studio on disk before using it,
889     to avoid getting fooled by leftover junk in the registry.
890
891   - Add support for MSVC++ .NET.
892
893   - Add support for MS Visual Studio project files (DSP, DSW,
894     SLN and VCPROJ files).
895
896   From Christoph Wiedemann
897
898   - SConf now works correctly when the -n and -q options are used.
899
900
901
902 RELEASE 0.14 - Wed, 21 May 2003 05:16:32 -0500
903
904   From Chad Austin:
905
906   - Use .dll (not .so) for shared libraries on Cygwin; use -fPIC
907     when compiling them.
908
909   - Use 'rm' to remove files under Cygwin.
910
911   - Add a PLATFORM variable to construction environments.
912
913   - Remove the "platform" argument from tool specifications.
914
915   - Propogate PYTHONPATH when running the regression tests so distutils
916     can be found in non-standard locations.
917
918   - Using MSVC long command-line linking when running Cygwin.
919
920   - Portability fixes for a lot of tests.
921
922   - Add a Value Node class for dependencies on in-core Python values.
923
924   From Allen Bierbaum:
925
926   - Pass an Environment to the Options validator method, and
927     add an Options.Save() method.
928
929   From Steve Christensen:
930
931   - Add an optional sort function argument to the GenerateHelpText()
932     Options function.
933
934   - Evaluate the "varlist" variables when computing the signature of a
935     function action.
936
937   From Charles Crain:
938
939   - Parse the source .java files for class names (including inner class
940     names) to figure out the target .class files that will be created.
941
942   - Make Java support work with Repositories and SConscriptChdir(0).
943
944   - Pass Nodes, not strings, to Builder emitter functions.
945
946   - Refactor command-line interpolation and signature calculation
947     so we can use real Node attributes.
948
949   From Steven Knight:
950
951   - Add Java support (javac, javah, jar and rmic).
952
953   - Propagate the external SYSTEMROOT environment variable into ENV on
954     Win32 systems, so external commands that use sockets will work.
955
956   - Add a .posix attribute to PathList expansions.
957
958   - Check out CVS source files using POSIX path names (forward slashes
959     as separators) even on Win32.
960
961   - Add Node.clear() and Node.FS.Entry.clear() methods to wipe out a
962     Node's state, allowing it to be re-evaluated by continuous
963     integration build interfaces.
964
965   - Change the name of the Set{Build,Content}SignatureType() functions
966     to {Target,Source}Signatures().  Deprecate the old names but support
967     them for backwards compatibility.
968
969   - Add internal SCons.Node.FS.{Dir,File}.Entry() methods.
970
971   - Interpolate the null string if an out-of-range subscript is used
972     for a construction variable.
973
974   - Fix the internal Link function so that it properly links or copies
975     files in subsidiary BuildDir directories.
976
977   - Refactor the internal representation of a single execution instance
978     of an action to eliminate redundant signature calculations.
979
980   - Eliminate redundant signature calculations for Nodes.
981
982   - Optimize out calling hasattr() before accessing attributes.
983
984   - Say "Cleaning targets" (not "Building...") when the -c option is
985     used.
986
987   From Damyan Pepper:
988
989   - Quote the "Entering directory" message like Make.
990
991   From Stefan Reichor:
992
993   - Add support for using Ghostscript to convert Postscript to PDF files.
994
995   From Anthony Roach:
996
997   - Add a standalone "Alias" function (separate from an Environment).
998
999   - Make Export() work for local variables.
1000
1001   - Support passing a dictionary to Export().
1002
1003   - Support Import('*') to import everything that's been Export()ed.
1004
1005   - Fix an undefined exitvalmap on Win32 systems.
1006
1007   - Support new SetOption() and GetOption() functions for setting
1008     various command-line options from with an SConscript file.
1009
1010   - Deprecate the old SetJobs() and GetJobs() functions in favor of
1011     using the new generic {Set,Get}Option() functions.
1012
1013   - Fix a number of tests that searched for a Fortran compiler using the
1014     external PATH instead of what SCons would use.
1015
1016   - Fix the interaction of SideEffect() and BuildDir() so that (for
1017     example) PDB files get put correctly in a BuildDir().
1018
1019   From David Snopek:
1020
1021   - Contribute the "Autoscons" code for Autoconf-like checking for
1022     the existence of libraries, header files and the like.
1023
1024   - Have the Tool() function add the tool name to the $TOOLS
1025     construction variable.
1026
1027   From Greg Spencer:
1028
1029   - Support the C preprocessor #import statement.
1030
1031   - Allow the SharedLibrary() Builder on Win32 systems to be able to
1032     register a newly-built dll using regsvr32.
1033
1034   - Add a Builder for Windows type library (.tlb) files from IDL files.
1035
1036   - Add an IDL scanner.
1037
1038   - Refactor the Fortran, C and IDL scanners to share common logic.
1039
1040   - Add .srcpath and .srcdir attributes to $TARGET and $SOURCE.
1041
1042   From Christoph Wiedemann:
1043
1044   - Integrate David Snopek's "Autoscons" code as the new SConf
1045     configuration subsystem, including caching of values between
1046     runs (using normal SCons dependency mechanisms), tests, and
1047     documentation.
1048
1049
1050
1051 RELEASE 0.13 - Mon, 31 Mar 2003 20:22:00 -0600
1052
1053   From Charles Crain:
1054
1055   - Fix a bug when BuildDir(duplicate=0) is used and SConscript
1056     files are called from within other SConscript files.
1057
1058   - Support (older) versions of Perforce which don't set the Windows
1059     registry.
1060
1061
1062
1063 RELEASE 0.12 - Thu, 27 Mar 2003 23:52:09 -0600
1064
1065   From Charles Crain:
1066
1067   - Added support for the Perforce source code management system.
1068
1069   - Fix str(Node.FS) so that it returns a path relative to the calling
1070     SConscript file's directory, not the top-level directory.
1071
1072   - Added support for a separate src_dir argument to SConscript()
1073     that allows explicit specification of where the source files
1074     for an SConscript file can be found.
1075
1076   - Support more easily re-usable flavors of command generators by
1077     calling callable variables when strings are expanded.
1078
1079   From Steven Knight:
1080
1081   - Added an INSTALL construction variable that can be set to a function
1082     to control how the Install() and InstallAs() Builders install files.
1083     The default INSTALL function now copies, not links, files.
1084
1085   - Remove deprecated features:  the "name" argument to Builder objects,
1086     and the Environment.Update() method.
1087
1088   - Add an Environment.SourceCode() method to support fetching files
1089     from source code systems.  Add factory methods that create Builders
1090     to support BitKeeper, CVS, RCS, and SCCS.  Add support for fetching
1091     files from RCS or SCCS transparently (like GNU Make).
1092
1093   - Make the internal to_String() function more efficient.
1094
1095   - Make the error message the same as other build errors when there's a
1096     problem unlinking a target file in preparation for it being built.
1097
1098   - Make TARGET, TARGETS, SOURCE and SOURCES reserved variable names and
1099     warn if the user tries to set them in a construction environment.
1100
1101   - Add support for Tar and Zip files.
1102
1103   - Better documentation of the different ways to export variables to a
1104     subsidiary SConscript file.  Fix documentation bugs in a tools
1105     example, places that still assumed SCons split strings on white
1106     space, and typos.
1107
1108   - Support fetching arbitrary files from the TARGETS or SOURCES lists
1109     (e.g. ${SOURCES[2]}) when calculating the build signature of a
1110     command.
1111
1112   - Don't silently swallow exceptions thrown by Scanners (or other
1113     exceptions while finding a node's dependent children).
1114
1115   - Push files to CacheDir() before calling the superclass built()
1116     method (which may clear the build signature as part of clearing
1117     cached implicit dependencies, if the file has a source scanner).
1118     (Bug reported by Jeff Petkau.)
1119
1120   - Raise an internal error if we attempt to push a file to CacheDir()
1121     with a build signature of None.
1122
1123   - Add an explicit Exit() function for terminating early.
1124
1125   - Change the documentation to correctly describe that the -f option
1126     doesn't change to the directory in which the specified file lives.
1127     
1128   - Support changing directories locally with SConscript directory
1129     path names relative to any SConstruct file specified with -f.
1130     This allows you to build in another directory by simply changing
1131     there and pointing at the SConstruct file in another directory.
1132
1133   - Change the default SConscriptChdir() behavior to change to the
1134     SConscript directory while it's being read.
1135
1136   - Fix an exception thrown when the -U option was used with no
1137     Default() target specified.
1138
1139   - Fix -u so that it builds things in corresponding build directories
1140     when used in a source directory.
1141
1142   From Lachlan O'Dea:
1143
1144   - Add SharedObject() support to the masm tool.
1145
1146   - Fix WhereIs() to return normalized paths.
1147
1148   From Jeff Petkau:
1149
1150   - Don't copy a built file to a CacheDir() if it's already there.
1151
1152   - Avoid partial copies of built files in a CacheDir() by copying
1153     to a temporary file and renaming.
1154
1155   From Anthony Roach:
1156
1157   - Fix incorrect dependency-cycle errors when an Aliased source doesn't
1158     exist.
1159
1160
1161
1162 RELEASE 0.11 - Tue, 11 Feb 2003 05:24:33 -0600
1163
1164   From Chad Austin:
1165
1166   - Add support for IRIX and the SGI MIPSPro tool chain.
1167
1168   - Support using the MSVC tool chain when running Cygwin Python.
1169
1170   From Michael Cook:
1171
1172   - Avoid losing signal bits in the exit status from a command,
1173     helping terminate builds on interrupt (CTRL+C).
1174
1175   From Charles Crain:
1176
1177   - Added new AddPreAction() and AddPostAction() functions that support
1178     taking additional actions before or after building specific targets.
1179
1180   - Add support for the PharLap ETS tool chain.
1181
1182   From Steven Knight:
1183
1184   - Allow Python function Actions to specify a list of construction
1185     variables that should be included in the Action's signature.
1186
1187   - Allow libraries in the LIBS variable to explicitly include the prefix
1188     and suffix, even when using the GNU linker.
1189     (Bug reported by Neal Becker.)
1190
1191   - Use DOS-standard CR-LF line endings in the scons.bat file.
1192     (Bug reported by Gary Ruben.)
1193
1194   - Doc changes:  Eliminate description of deprecated "name" keyword
1195     argument from Builder definition (reported by Gary Ruben).
1196
1197   - Support using env.Append() on BUILDERS (and other dictionaries).
1198     (Bug reported by Bj=F6rn Bylander.)
1199
1200   - Setting the BUILDERS construction variable now properly clears
1201     the previous Builder attributes from the construction Environment.
1202     (Bug reported by Bj=F6rn Bylander.)
1203
1204   - Fix adding a prefix to a file when the target isn't specified.
1205     (Bug reported by Esa Ilari Vuokko.)
1206
1207   - Clean up error messages from problems duplicating into read-only
1208     BuildDir directories or into read-only files.
1209
1210   - Add a CommandAction.strfunction() method, and add an "env" argument
1211     to the FunctionAction.strfunction() method, so that all Action
1212     objects have strfunction() methods, and the functions for building
1213     and returning a string both take the same arguments.
1214
1215   - Add support for new CacheDir() functionality to share derived files
1216     between builds, with related options --cache-disable, --cache-force,
1217     and --cache-show.
1218
1219   - Change the default behavior when no targets are specified to build
1220     everything in the current directory and below (like Make).  This
1221     can be disabled by specifying Default(None) in an SConscript.
1222
1223   - Revamp SCons installation to fix a case-sensitive installation
1224     on Win32 systems, and to add SCons-specific --standard-lib,
1225     --standalone-lib, and --version-lib options for easier user
1226     control of where the libraries get installed.
1227
1228   - Fix the ability to directly import and use Platform and Tool modules
1229     that have been implicitly imported into an Environment().
1230
1231   - Add support for allowing an embedding interface to annotate a node
1232     when it's created.
1233
1234   - Extend the SConscript() function to accept build_dir and duplicate
1235     keyword arguments that function like a BuildDir() call.
1236
1237   From Steve Leblanc:
1238
1239   - Fix the output of -c -n when directories are involved, so it
1240     matches -c.
1241
1242   From Anthony Roach:
1243
1244   - Use a different shared object suffix (.os) when using gcc so shared
1245     and static objects can exist side-by-side in the same directory.
1246
1247   - Allow the same object files on Win32 to be linked into either
1248     shared or static libraries.
1249
1250   - Cache implicit cache values when using --implicit-cache.
1251
1252
1253
1254 RELEASE 0.10 - Thu, 16 Jan 2003 04:11:46 -0600
1255
1256   From Derrick 'dman' Hudson:
1257
1258   - Support Repositories on other file systems by symlinking or
1259     copying files when hard linking won't work.
1260
1261   From Steven Knight:
1262
1263   - Remove Python bytecode (*.pyc) files from the scons-local packages.
1264
1265   - Have FunctionActions print a description of what they're doing
1266     (a representation of the Python call).
1267
1268   - Fix the Install() method so that, like other actions, it prints
1269     what would have happened when the -n option is used.
1270
1271   - Don't create duplicate source files in a BuildDir when the -n
1272     option is used.
1273
1274   - Refactor the Scanner interface to eliminate unnecessary Scanner
1275     calls and make it easier to write efficient scanners.
1276
1277   - Added a "recursive" flag to Scanner creation that specifies the
1278     Scanner should be invoked recursively on dependency files returned
1279     by the scanner.
1280
1281   - Significant performance improvement from using a more efficient
1282     check, throughout the code, for whether a Node has a Builder.
1283
1284   - Fix specifying only the source file to MultiStepBuilders such as
1285     the Program Builder.  (Bug reported by Dean Bair.)
1286
1287   - Fix an exception when building from a file with the same basename as
1288     the subdirectory in which it lives.  (Bug reported by Gerard Patel.)
1289
1290   - Fix automatic deduction of a target file name when there are
1291     multiple source files specified; the target is now deduced from just
1292     the first source file in the list.
1293
1294   - Documentation fixes: better initial explanation of SConscript files;
1295     fix a misformatted "table" in the StaticObject explanation.
1296
1297   From Steven Knight and Steve Leblanc:
1298
1299   - Fix the -c option so it will remove symlinks.
1300
1301   From Steve Leblanc:
1302
1303   - Add a Clean() method to support removing user-specified targets
1304     when using the -c option.
1305
1306   - Add a development script for running SCons through PyChecker.
1307
1308   - Clean up things found by PyChecker (mostly unnecessary imports).
1309
1310   - Add a script to use HappyDoc to create HTML class documentation.
1311
1312   From Lachlan O'Dea:
1313
1314   - Make the Environment.get() method return None by default.
1315
1316   From Anthony Roach:
1317
1318   - Add SetJobs() and GetJobs() methods to allow configuration of the
1319     number of default jobs (still overridden by -j).
1320
1321   - Convert the .sconsign file format from ASCII to a pickled Python
1322     data structure.
1323
1324   - Error message cleanups:  Made consistent the format of error
1325     messages (now all start with "scons: ***") and warning messages (now
1326     all start with "scons: warning:").  Caught more cases with the "Do
1327     not know how to build" error message.
1328
1329   - Added support for the MinGW tool chain.
1330
1331   - Added a --debug=includes option.
1332
1333
1334
1335 RELEASE 0.09 - Thu,  5 Dec 2002 04:48:25 -0600
1336
1337   From Chad Austin:
1338
1339   - Add a Prepend() method to Environments, to append values to
1340     the beginning of construction variables.
1341
1342   From Matt Balvin:
1343
1344   - Add long command-line support to the "lib" Tool (Microsoft library
1345     archiver), too.
1346
1347   From Charles Crain:
1348
1349   - Allow $$ in a string to be passed through as $.
1350
1351   - Support file names with odd characters in them.
1352
1353   - Add support for construction variable substition on scanner
1354     directories (in CPPPATH, F77PATH, LIBPATH, etc.).
1355
1356   From Charles Crain and Steven Knight:
1357
1358   - Add Repository() functionality, including the -Y option.
1359
1360   From Steven Knight:
1361
1362   - Fix auto-deduction of target names so that deduced targets end
1363     up in the same subdirectory as the source.
1364
1365   - Don't remove source files specified on the command line!
1366
1367   - Suport the Intel Fortran Compiler (ifl.exe).
1368
1369   - Supply an error message if there are no command-line or
1370     Default() targets specified.
1371
1372   - Fix the ASPPCOM values for the GNU assembler.
1373     (Bug reported by Brett Polivka.)
1374
1375   - Fix an exception thrown when a Default() directory was specified
1376     when using the -U option.
1377
1378   - Issue a warning when -c can't remove a target.
1379
1380   - Eliminate unnecessary Scanner calls by checking for the
1381     existence of a file before scanning it.  (This adds a generic
1382     hook to check an arbitrary condition before scanning.)
1383
1384   - Add explicit messages to tell when we're "Reading SConscript files
1385     ...," "done reading SConscript files," "Building targets," and
1386     "done building targets."  Add a -Q option to supress these.
1387
1388   - Add separate $SHOBJPREFIX and $SHOBJSUFFIX construction variables
1389     (by default, the same as $OBJPREFIX and $OBJSUFFIX).
1390
1391   - Add Make-like error messages when asked to build a source file,
1392     and before trying to build a file that doesn't have all its source
1393     files (including when an invalid drive letter is used on WIN32).
1394
1395   - Add an scons-local-{version} package (in both .tar.gz and .zip
1396     flavors) to help people who want to ship SCons as a stand-alone
1397     build tool in their software packages.
1398
1399   - Prevent SCons from unlinking files in certain situations when
1400     the -n option is used.
1401
1402   - Change the name of Tool/lib.py to Tool/mslib.py.
1403
1404   From Steven Knight and Anthony Roach:
1405
1406   - Man page:  document the fact that Builder calls return Node objects.
1407
1408   From Steve LeBlanc:
1409
1410   - Refactor option processing to use our own version of Greg Ward's
1411     Optik module, modified to run under Python 1.5.2.
1412
1413   - Add a ParseConfig() command to modify an environment based on
1414     parsing output from a *-config command.
1415
1416   From Jeff Petkau:
1417
1418   - Fix interpretation of '#/../foo' on Win32 systems.
1419
1420   From Anthony Roach:
1421
1422   - Fixed use of command lines with spaces in their arguments,
1423     and use of Nodes with spaces in their string representation.
1424
1425   - Make access and modification times of files in a BuildDir match
1426     the source file, even when hard linking isn't available.
1427
1428   - Make -U be case insensitive on Win32 systems.
1429
1430   - Issue a warning and continue when finding a corrupt .sconsign file.
1431
1432   - Fix using an alias as a dependency of a target so that if one of the
1433     alias' dependencies gets rebuilt, the resulting target will, too.
1434
1435   - Fix differently ordered targets causing unnecessary rebuilds
1436     on case insensitive systems.
1437
1438   - Use os.system() to execute external commands whenever the "env"
1439     utility is available, which is much faster than fork()/exec(),
1440     and fixes the -j option on several platforms.
1441
1442   - Fix use of -j with multiple targets.
1443
1444   - Add an Options() object for friendlier accomodation of command-
1445     line arguments.
1446
1447   - Add support for Microsoft VC++ precompiled header (.pch) files,
1448     debugger (.pdb) files, and resource (.rc) files.
1449
1450   - Don't compute the $_CPPINCFLAGS, $_F77INCFLAGS, $_LIBFLAGS and
1451     $_LIBDIRFLAGS variables each time a command is executed, define
1452     them so they're computed only as needed.  Add a new _concat
1453     function to the Environment that allows people to define their
1454     own similar variables.
1455
1456   - Fix dependency scans when $LIBS is overridden.
1457
1458   - Add EnsurePythonVersion() and EnsureSConsVersion() functions.
1459
1460   - Fix the overly-verbose stack trace on ListBuilder build errors.
1461
1462   - Add a SetContentSignatureType() function, allowing use of file
1463     timestamps instead of MD5 signatures.
1464
1465   - Make -U and Default('source') fail gracefully.
1466
1467   - Allow the File() and Dir() methods to take a path-name string as
1468     the starting directory, in addition to a Dir object.
1469
1470   - Allow the command handler to be selected via the SPAWN, SHELL
1471     and ESCAPE construction variables.
1472
1473   - Allow construction variables to be overridden when a Builder
1474     is called.
1475
1476   From sam th:
1477
1478   - Dynamically check for the existence of utilities with which to
1479     initialize Environments by default.
1480
1481
1482
1483 RELEASE 0.08 - Mon, 15 Jul 2002 12:08:51 -0500
1484
1485   From Charles Crain:
1486
1487   - Fixed a bug with relative CPPPATH dirs when using BuildDir().
1488     (Bug reported by Bob Summerwill.)
1489
1490   - Added a warnings framework and a --warn option to enable or
1491     disable warnings.
1492
1493   - Make the C scanner warn users if files referenced by #include
1494     directives cannot be found and --warn=dependency is specified.
1495
1496   - The BUILDERS construction variable should now be a dictionary
1497     that maps builder names to actions.  Existing uses of lists,
1498     and the Builder name= keyword argument, generate warnings
1499     about use of deprecated features.
1500
1501   - Removed the "shared" keyword argument from the Object and
1502     Library builders.
1503     
1504   - Added separated StaticObject, SharedObject, StaticLibrary and
1505     SharedLibrary builders.  Made Object and Library synonyms for
1506     StaticObject and StaticLibrary, respectively.
1507
1508   - Add LIBS and LIBPATH dependencies for shared libraries.
1509
1510   - Removed support for the prefix, suffix and src_suffix arguments
1511     to Builder() to be callable functions.
1512
1513   - Fix handling file names with multiple dots.
1514
1515   - Allow a build directory to be outside of the SConstruct tree.
1516
1517   - Add a FindFile() function that searches for a file node with a
1518     specified name.
1519
1520   - Add $CPPFLAGS to the shared-object command lines for g++ and gcc.
1521
1522   From Charles Crain and Steven Knight:
1523
1524   - Add a "tools=" keyword argument to Environment instantiation,
1525     and a separate Tools() method, for more flexible specification
1526     of tool-specific environment changes.
1527
1528   From Steven Knight:
1529
1530   - Add a "platform=" keyword argument to Environment instantiation,
1531     and a separate Platform() method, for more flexible specification
1532     of platform-specific environment changes.
1533
1534   - Updated README instructions and setup.py code to catch an
1535     installation failure from not having distutils installed.
1536
1537   - Add descriptions to the -H help text for -D, -u and -U so
1538     people can tell them apart.
1539
1540   - Remove the old feature of automatically splitting strings
1541     of file names on white space.
1542
1543   - Add a dependency Scanner for native Fortran "include" statements,
1544     using a new "F77PATH" construction variable.
1545
1546   - Fix C #include scanning to detect file names with characters like
1547     '-' in them.
1548
1549   - Add more specific version / build output to the -v option.
1550
1551   - Add support for the GNU as, Microsoft masm, and nasm assemblers.
1552
1553   - Allow the "target" argument to a Builder call to be omitted, in
1554     which case the target(s) are deduced from the source file(s) and the
1555     Builder's specified suffix.
1556
1557   - Add a tar archive builder.
1558
1559   - Add preliminary support for the OS/2 Platform, including the icc
1560     and ilink Tools.
1561
1562   From Jeff Petkau:
1563
1564   - Fix --implicit-cache if the scanner returns an empty list.
1565
1566   From Anthony Roach:
1567
1568   - Add a "multi" keyword argument to Builder creation that specifies
1569     it's okay to call the builder multiple times for a target.
1570
1571   - Set a "multi" on Aliases so multiple calls will append to an Alias.
1572
1573   - Fix emitter functions' use of path names when using BuildDir or
1574     in subdirectories.
1575
1576   - Fix --implicit-cache causing redundant rebuilds when the header
1577     file list changed.
1578
1579   - Fix --implicit-cache when a file has no implicit dependencies and
1580     its source is generated.
1581
1582   - Make the drive letters on Windows always be the same case, so that
1583     changes in the case of drive letters don't cause a rebuild.
1584
1585   - Fall back to importing the SCons.TimeStamp module if the SCons.MD5
1586     module can't be imported.
1587
1588   - Fix interrupt handling to guarantee that a single interrupt will
1589     halt SCons both when using -j and not.
1590
1591   - Fix .sconsign signature storage so that output files of one build
1592     can be safely used as input files to another build.
1593
1594   - Added a --debug=time option to print SCons execution times.
1595
1596   - Print an error message if a file can't be unlinked before being
1597     built, rather than just silently terminating the build.
1598
1599   - Add a SideEffect() method that can be used to tell the build
1600     engine that a given file is created as a side effect of building
1601     a target.  A file can be specified as a side effect of more than
1602     one build comand, in which case the commands will not be executed
1603     simultaneously.
1604
1605   - Significant performance gains from not using our own version of
1606     the inefficient stock os.path.splitext() method, caching source
1607     suffix computation, code cleanup in MultiStepBuilder.__call__(),
1608     and replicating some logic in scons_subst().
1609
1610   - Add --implicit-deps-changed and --implicit-deps-unchanged options.
1611
1612   - Add a GetLaunchDir() function.
1613
1614   - Add a SetBuildSignatureType() function.
1615
1616   From Zed Shaw:
1617
1618   - Add an Append() method to Environments, to append values to
1619     construction variables.
1620
1621   - Change the name of Update() to Replace().  Keep Update() as a
1622     deprecated synonym, at least for now.
1623
1624   From Terrel Shumway:
1625
1626   - Use a $PYTHON construction variable, initialized to sys.executable,
1627     when using Python to build parts of the SCons packages.
1628
1629   - Use sys.prefix, not sys.exec_prefix, to find pdb.py.
1630
1631
1632
1633 RELEASE 0.07 - Thu,  2 May 2002 13:37:16 -0500
1634
1635   From Chad Austin:
1636
1637   - Changes to build SCons packages on IRIX (and other *NIces).
1638
1639   - Don't create a directory Node when a file already exists there,
1640     and vice versa.
1641
1642   - Add 'dirs' and 'names' keyword arguments to SConscript for
1643     easier specification of subsidiary SConscript files.
1644
1645   From Charles Crain:
1646
1647   - Internal cleanup of environment passing to function Actions.
1648
1649   - Builders can now take arbitrary keyword arguments to create
1650     attributes to be passed to: command generator functions,
1651     FunctionAction functions, Builder emitter functions (below),
1652     and prefix/suffix generator functions (below).
1653
1654   - Command generator functions can now return ANYTHING that can be
1655     converted into an Action (a function, a string, a CommandGenerator
1656     instance, even an ActionBase instance).
1657
1658   - Actions now call get_contents() with the actual target and source
1659     nodes used for the build.
1660
1661   - A new DictCmdGenerator class replaces CompositeBuilder to support
1662     more flexible Builder behavior internally.
1663
1664   - Builders can now take an emitter= keyword argument.  An emitter
1665     is a function that takes target, source, and env argument, then
1666     return a 2-tuple of (new sources, new targets).  The emitter is
1667     called when the Builder is __call__'ed, allowing a user to modify
1668     source and target lists.
1669
1670   - The prefix, suffix and src_suffix Builder arguments now take a
1671     callable as well a string.  The callable is passed the Environment
1672     and any extra Builder keyword arguments and is expected to return
1673     the appropriate prefix or suffix.
1674
1675   - CommandActions can now be a string, a list of command + argument
1676     strings, or a list of commands (strings or lists).
1677
1678   - Added shared library support.  The Object and Library Builders now
1679     take a "shared=1" keyword argument to specify that a shared object
1680     or shared library should be built.  It is an error to try to build
1681     static objects into a shared library or vice versa.
1682
1683   - Win32 support for .def files has been added.  Added the Win32-specific
1684     construction variables $WIN32DEFPREFIX, $WIN32DEFSUFFIX,
1685     $WIN32DLLPREFIX and $WIN32IMPLIBPREFIX.  When building a .dll,
1686     the new construction variable $WIN32_INSERT_DEF, controls whether
1687     the appropriately-named .def file is inserted into the target
1688     list (if not already present).  A .lib file is always added to
1689     a Library build if not present in the list of targets.
1690
1691   - ListBuilder now passes all targets to the action, not just the first.
1692
1693   - Fix so that -c now deletes generated yacc .h files.
1694
1695   - Builder actions and emitter functions can now be initialized, through
1696     construction variables, to things other than strings.
1697
1698   - Make top-relative '#/dir' lookups work like '#dir'.
1699
1700   - Fix for relative CPPPATH directories in subsidiary SConscript files
1701     (broken in 0.06).
1702
1703   - Add a for_signature argument to command generators, so that
1704     generators that need to can return distinct values for the
1705     command signature and for executing the command.
1706
1707   From Alex Jacques:
1708
1709   - Create a better scons.bat file from a py2bat.py script on the Python
1710     mailing list two years ago (modeled after pl2bat.pl).
1711
1712   From Steven Knight:
1713
1714   - Fix so that -c -n does *not* remove the targets!
1715
1716   - Man page:  Add a hierarchical libraries + Program example.
1717
1718   - Support long MSVC linker command lines through a builder action
1719     that writes to a temporary file and uses the magic MSVC "link @file"
1720     argument syntax if the line is longer than 2K characters.
1721
1722   - Fix F77 command-line options on Win32 (use /Fo instead of -o).
1723
1724   - Use the same action to build from .c (lower case) and .C (upper
1725     case) files on case-insensitive systems like Win32.
1726
1727   - Support building a PDF file directly from a TeX or LaTeX file
1728     using pdftex or pdflatex.
1729
1730   - Add a -x option to runtest.py to specify the script being tested.
1731     A -X option indicates it's an executable, not a script to feed
1732     to the Python interpreter.
1733
1734   - Add a Split() function (identical to SCons.Util.argmunge()) for use
1735     in the next release, when Builders will no longer automatically split
1736     strings on white space.
1737
1738   From Steve Leblanc:
1739
1740   - Add the SConscriptChdir() method.
1741
1742   From Anthony Roach:
1743
1744   - Fix --debug=tree when used with directory targets.
1745
1746   - Significant internal restructuring of Scanners and Taskmaster.
1747
1748   - Added new --debug=dtree option.
1749
1750   - Fixes for --profile option.
1751
1752   - Performance improvement in construction variable substitution.
1753
1754   - Implemented caching of content signatures, plus added --max-drift
1755     option to control caching.
1756
1757   - Implemented caching of dependency signatures, enabled by new
1758     --implicit-cache option.
1759
1760   - Added abspath construction variable modifier.
1761
1762   - Added $SOURCE variable as a synonym for $SOURCES[0].
1763
1764   - Write out .sconsign files on error or interrupt so intermediate
1765     build results are saved.
1766
1767   - Change the -U option to -D.  Make a new -U that builds just the
1768     targets from the local SConscript file.
1769
1770   - Fixed use of sys.path so Python modules can be imported from
1771     the SConscript directory.
1772
1773   - Fix for using Aliases with the -u, -U and -D options.
1774
1775   - Fix so that Nodes can be passed to SConscript files.
1776
1777   From Moshe Zadka:
1778   
1779   - Changes for official Debian packaging.
1780
1781
1782
1783 RELEASE 0.06 - Thu, 28 Mar 2002 01:24:29 -0600
1784
1785   From Charles Crain:
1786
1787   - Fix command generators to expand construction variables.
1788
1789   - Make FunctionAction arguments be Nodes, not strings.
1790
1791   From Stephen Kennedy:
1792
1793   - Performance:  Use a dictionary, not a list, for a Node's parents.
1794
1795   From Steven Knight:
1796
1797   - Add .zip files to the packages we build.
1798
1799   - Man page:  document LIBS, fix a typo, document ARGUMENTS.
1800
1801   - Added RANLIB and RANLIBFLAGS construction variables.  Only use them
1802     in ARCOM if there's a "ranlib" program on the system.
1803
1804   - Add a configurable CFILESUFFIX for the Builder of .l and .y files
1805     into C files.
1806
1807   - Add a CXXFile Builder that turns .ll and .yy files into .cc files
1808     (configurable via a CXXFILESUFFIX construction variable).
1809
1810   - Use the POSIX-standard lex -t flag, not the GNU-specific -o flag.
1811     (Bug reported by Russell Christensen.)
1812
1813   - Fixed an exception when CPPPATH or LIBPATH is a null string.
1814     (Bug reported by Richard Kiss.)
1815
1816   - Add a --profile=FILE option to make profiling SCons easier.
1817
1818   - Modify the new DVI builder to create .dvi files from LaTeX (.ltx
1819     and .latex) files.
1820
1821   - Add support for Aliases (phony targets).
1822
1823   - Add a WhereIs() method for searching for path names to executables.
1824
1825   - Add PDF and PostScript document builders.
1826
1827   - Add support for compiling Fortran programs from a variety of
1828     suffixes (a la GNU Make):  .f, .F, .for, .FOR, .fpp and .FPP
1829
1830   - Support a CPPFLAGS variable on all default commands that use the
1831     C preprocessor.
1832
1833   From Steve Leblanc:
1834
1835   - Add support for the -U option.
1836
1837   - Allow CPPPATH, LIBPATH and LIBS to be specified as white-space
1838     separated strings.
1839
1840   - Add a document builder to create .dvi files from TeX (.tex) files.
1841
1842   From Anthony Roach:
1843
1844   - Fix:  Construction variables with values of 0 were incorrectly
1845     interpolated as ''. 
1846
1847   - Support env['VAR'] to fetch construction variable values.
1848
1849   - Man page:  document Precious().
1850
1851
1852
1853 RELEASE 0.05 - Thu, 21 Feb 2002 16:50:03 -0600
1854
1855   From Chad Austin:
1856
1857   - Set PROGSUFFIX to .exe under Cygwin.
1858
1859   From Charles Crain:
1860
1861   - Allow a library to specified as a command-line source file, not just
1862     in the LIBS construction variable.
1863
1864   - Compensate for a bug in os.path.normpath() that returns '' for './'
1865     on WIN32.
1866
1867   - More performance optimizations:  cache #include lines from files,
1868     eliminate unnecessary calls.
1869
1870   - If a prefix or suffix contains white space, treat the resulting
1871     concatenation as separate arguments.
1872
1873   - Fix irregularities in the way we fetch DevStudio information from
1874     the Windows registry, and in our registry error handling.
1875
1876   From Steven Knight:
1877
1878   - Flush stdout after print so it intermixes correctly with stderr
1879     when redirected.
1880
1881   - Allow Scanners to return a list of strings, and document how to
1882     write your own Scanners.
1883
1884   - Look up implicit (scanned) dependencies relative to the directory
1885     of file being scanned.
1886
1887   - Make writing .sconsign files more robust by first trying to write
1888     to a temp file that gets renamed.
1889
1890   - Create all of the directories for a list of targets before trying
1891     to build any of the targets.
1892
1893   - WIN32 portability fixes in tests.
1894
1895   - Allow the list of variables exported to an SConscript file to be
1896     a UserList, too.
1897
1898   - Document the overlooked LIBPATH construction variable.
1899     (Bug reported by Eicke Godehardt.)
1900
1901   - Fix so that Ignore() ignores indirect, implicit dependencies
1902     (included files), not just direct dependencies.
1903
1904   - Put the man page in the Debian distribution.
1905
1906   - Run HTML docs through tidy to clean up the HTML (for Konqueror).
1907
1908   - Add preliminary support for Unicode strings.
1909
1910   - Efficiency:  don't scan dependencies more than once during the
1911     walk of a tree.
1912
1913   - Fix the -c option so it doesn't stop removing targets if one doesn't
1914     already exist.
1915     (Bug reported by Paul Connell.)
1916
1917   - Fix the --debug=pdb option when run on Windows NT.
1918     (Bug reported by Paul Connell.)
1919
1920   - Add support for the -q option.
1921
1922   From Steve Leblanc:
1923
1924   - Add support for the -u option.
1925
1926   - Add .cc and .hh file suffixes to the C Scanner.
1927
1928   From Anthony Roach:
1929
1930   - Make the scons script return an error code on failures.
1931
1932   - Add support for using code to generate a command to build a target.
1933
1934
1935
1936 RELEASE 0.04 - Wed, 30 Jan 2002 11:09:42 -0600
1937
1938   From Charles Crain:
1939
1940   - Significant performance improvements in the Node.FS and
1941     Scanner subsystems.
1942
1943   - Fix signatures of binary files on Win32 systems.
1944
1945   - Allow LIBS and LIBPATH to be strings, not just arrays.
1946
1947   - Print a traceback if a Python-function builder throws an exception.
1948
1949   From Steven Knight:
1950
1951   - Fix using a directory as a Default(), and allow Default() to
1952     support white space in file names for strings in arrays.
1953
1954   - Man page updates:  corrected some mistakes, documented various
1955     missing Environment methods, alphabetized the construction
1956     variables and other functions, defined begin and end macros for
1957     the example sections, regularized white space separation, fixed
1958     the use of Export() in the Multiple Variants example.
1959
1960   - Function action fixes:  None is now a successful return value.
1961     Exceptions are now reported.  Document function actions.
1962
1963   - Add 'Action' and 'Scanner' to the global keywords so SConscript
1964     files can use them too.
1965
1966   - Removed the Wrapper class between Nodes and Walkers.
1967
1968   - Add examples using Library, LIBS, and LIBPATH.
1969
1970   - The C Scanner now always returns a sorted list of dependencies
1971     so order changes don't cause unnecessary rebuilds.
1972
1973   - Strip $(-$) bracketed text from command lines.  Use this to
1974     surround $_INCDIRS and $_LIBDIRS so we don't rebuild in response
1975     to changes to -I or -L options.
1976
1977   - Add the Ignore() method to ignore dependencies.
1978
1979   - Provide an error message when a nonexistent target is specified
1980     on the command line.
1981
1982   - Remove targets before building them, and add an Environment
1983     Precious() method to override that.
1984
1985   - Eliminate redundant calls to the same builder when the target is a
1986     list of targets:  Add a ListBuilder class that wraps Builders to
1987     handle lists atomically.  Extend the Task class to support building
1988     and updating multiple targets in a single Task.  Simplify the
1989     interface between Task and Taskmaster.
1990
1991   - Add a --debug=pdb option to re-run SCons under the Python debugger.
1992
1993   - Only compute a build signature once for each node.
1994
1995   - Changes to our sys.path[] manipulation to support installation into
1996     an arbitrary --prefix value.
1997
1998   From Steve Leblanc:
1999
2000   - Add var=value command-line arguments.
2001
2002
2003
2004 RELEASE 0.03 - Fri, 11 Jan 2002 01:09:30 -0600
2005
2006   From Charles Crain:
2007
2008   - Performance improvements in the Node.FS and Sig.Calculator classes.
2009
2010   - Add the InstallAs() method.
2011
2012   - Execute commands through an external interpreter (sh, cmd.exe, or
2013     command.com) to handle redirection metacharacters.
2014
2015   - Allow the user to supply a command handler.
2016
2017   From Steven Knight:
2018
2019   - Search both /usr/lib and /usr/local/lib for scons directories by
2020     adding them both to sys.path, with whichever is in sys.prefix first.
2021
2022   - Fix interpreting strings of multiple white-space separated file names
2023     as separate file names, allowing prefixes and suffixes to be appended
2024     to each individually.
2025
2026   - Refactor to move CompositeBuilder initialization logic from the
2027     factory wrapper to the __init__() method, and allow a Builder to
2028     have both an action and a src_builder (or array of them).
2029
2030   - Refactor BuilderBase.__call__() to separate Node creation/lookup
2031     from initialization of the Node's builder information.
2032
2033   - Add a CFile Builder object that supports turning lex (.l) and
2034     yacc (.y) files into .c files.
2035
2036   - Document: variable interpretation attributes; how to propogate
2037     the user's environment variables to executed commands; how to
2038     build variants in multiple BuildDirs.
2039
2040   - Collect String, Dict, and List type-checking in common utility
2041     routines so we can accept User{String,Dict,List}s all over.
2042
2043   - Put the Action factory and classes into their own module.
2044
2045   - Use one CPlusPlusAction in the Object Builder's action dictionary,
2046     instead of letting it create multiple identical instances.
2047
2048   - Document the Install() and InstallAs() methods.
2049
2050   From Steve Leblanc:
2051
2052   - Require that a Builder be given a name argument, supplying a
2053     useful error message when it isn't.
2054
2055   From Anthony Roach:
2056
2057   - Add a "duplicate" keyword argument to BuildDir() that can be set
2058     to prevent linking/copying source files into build directories.
2059
2060   - Add a "--debug=tree" option to print an ASCII dependency tree.
2061
2062   - Fetch the location of the Microsoft Visual C++ compiler(s) from
2063     the Registry, instead of hard-coding the location.
2064     
2065   - Made Scanner objects take Nodes, not path names.
2066     
2067   - Have the C Scanner cache the #include file names instead of
2068     (re-)scanning the file each time it's called.
2069
2070   - Created a separate class for parent "nodes" of file system roots,
2071     eliminating the need for separate is-parent-null checks everywhere.
2072     
2073   - Removed defined __hash__() and __cmp() methods from FS.Entry, in
2074     favor of Python's more efficient built-in identity comparisons.
2075
2076
2077
2078 RELEASE 0.02 - Sun, 23 Dec 2001 19:05:09 -0600
2079
2080   From Charles Crain:
2081
2082   - Added the Install(), BuildDir(), and Export() methods.
2083
2084   - Fix the -C option by delaying setting the top of the FS tree.
2085
2086   - Avoid putting the directory path on the libraries in the LIBS
2087     construction variable.
2088
2089   - Added a GetBuildPath() method to return the full path to the
2090     Node for a specified string.
2091
2092   - Fixed variable substitution in CPPPATH and LIBPATH.
2093
2094   From Steven Knight:
2095
2096   - Fixed the version comment in the scons.bat (the UNIX geek used
2097     # instead of @rem).
2098
2099   - Fix to setup.py so it doesn't require a sys.argv[1] argument.
2100
2101   - Provide make-like warning message for "command not found" and
2102     similar errors.
2103
2104   - Added an EXAMPLES section to the man page.
2105
2106   - Make Default() targets properly relative to their SConscript
2107     file's subdirectory.
2108
2109   From Anthony Roach:
2110
2111   - Documented CXXFLAGS, CXXCOM, and CPPPATH.
2112
2113   - Fixed SCONS_LIB_DIR to work as documented.
2114
2115   - Made Default() accept Nodes as arguments.
2116
2117   - Changed Export() to make it easier to use.
2118   
2119   - Added the Import() and Return() methods.
2120
2121
2122
2123 RELEASE 0.01 - Thu Dec 13 19:25:23 CST 2001
2124
2125 A brief overview of important functionality available in release 0.01:
2126
2127   - C and C++ compilation on POSIX and Windows NT.
2128
2129   - Automatic scanning of C/C++ source files for #include dependencies.
2130
2131   - Support for building libraries; setting construction variables
2132     allows creation of shared libraries.
2133
2134   - Library and C preprocessor search paths.
2135
2136   - File changes detected using MD5 signatures.
2137
2138   - User-definable Builder objects for building files.
2139
2140   - User-definable Scanner objects for scanning for dependencies.
2141
2142   - Parallel build (-j) support.
2143
2144   - Dependency cycles detected.
2145
2146   - Linux packages available in RPM and Debian format.
2147
2148   - Windows installer available.