ANNOUNCE: SCons.0.14 adds Java support, Autoconf-like functionality

Steven Knight knight@baldmt.com
Wed, 21 May 2003 22:50:34 -0500 (CDT)


SCons is a software construction tool (build tool, or make tool) written
in Python.  It is based on the design which won the Software Carpentry
build tool competition in August 2000.

Version 0.14 of SCons has been released and is available for download
from the SCons web site:

	http://www.scons.org/

Or through the download link at the SCons project page at SourceForge:

	http://sourceforge.net/projects/scons/

RPM and Debian packages and a Win32 installer are all available, in
addition to the traditional .tar.gz and .zip files.

This release most notably adds support for Java builds (javac, javah,
rmic and jar), and adds Autoconf-like functionality for finding #include
files and libraries.  It also adds significant performance improvements
over previous versions.


WHAT'S NEW IN THIS RELEASE?

IMPORTANT:  Release 0.14 contains the following interface changes:
  - Tool specifications no longer take a "platform" argument.
  - Emitter functions in Builders are now passed Node objects, not
    strings, for all targets and sources.
  - New TargetSignatures() and SourceSignatures() functions
    have been added to replace SetBuildSignatureType() and
    SetContentSignatureType().
  - The Export() function and the exported variables argument of
    SConscript() now search for variables using the same rules as
    Python: local first, then global.
  - The SetJobs() and GetJobs() functions have been deprecated in favor
    of using SetOption('num_jobs', num) and GetOption('num_jobs').
  - Callable expansions of construction variables in a command line
    now take a fourth "for_signature" argument that is set when the
    expansion is being called to generate a build signature.
  - Construction variables for building a target are now frozen
    when the Builder is called; later changes to the Environment
    do not necessarily affect how the target is build.

  See the release notes for more information about these changes.

This release adds the following features:
  - Support for the Java tools javac, javah, rmic and jar has
    been added.
  - A Configure() function has been added that supports a lot
    of functionality similar to Autoconf.
  - A new PLATFORM construction variable stores a string representing
    the platform on which SCons is being run.
  - Dependencies may now be specified on in-core Python values.
  - Help text can now be sorted arbitrarily.
  - New $TARGET and $SOURCE attributes: ".posix" expands to a path name
    with forward slashes as separators, even on Win32 systems;
    ".srcpath" expands to a path to the source of a file in a BuildDir;
    ".srcdir" expands to a path to the BuildDir itself.
  - A new clear() method resets a Node's state for re-use by continuous
    integration build interfaces.
  - Support for using Ghostscript to convert Postscript to PDF files
    has been added.
  - A stand-alone "Alias" function has been added.
  - Import('*') will now import everything that's been Export()ed.
  - New SetOption() and GetOption() functions support setting and
    fetching various command-line options within an SConscript file.
  - The Tool() function now adds tool names to a $TOOLS variable,
    which may be used to examine what tools are available.
  - The C preprocessor "#import" statement is now supported.
  - Newly-built .dll files can now be registered with the Windows
    registry using regsvr32.
  - An IDL scanner has been added.
  - A builder for Windows type library (.tlb) files from IDL files.

The following fixes have been added:
  - Cygwin fixes:  Use the .dll extension for shared libraries; don'
    use -fPIC when compiling shared libraries; use 'rm' to remove files;
    use MSVC '@' syntax for linking long command-lines.
  - The SYSTEMROOT environment variable on Win32 systems is now
    automatically propagated to the execution ENV environment.
  - Remote CVS file names are now checked out using Posix-style path names.
  - Trying to expand an out-of-range subscript for a construction
    variable like $TARGETS or $SOURCES now interpolates the null string.
  - SCons now correctly links or duplicates files in subsidiary
    BuildDir() directories.
  - SCons now reports "Cleaning targets ..." when the -c option is used.
  - The "Entering directory" message now quotes the directory name
    exactly like Make does.
  - Export() now works correctly for local Python variables, and can
    accept a dictionary as an argument.
  - PDB files now get put in a BuildDir() correctly.

Performance has been improved as follows:
  - Unnecessary redundant signature calculations for command lines and
    Nodes have been eliminated.  Development tests suggest this may
    speed up builds up to 30% or more.


ABOUT SCONS

Distinctive features of SCons include:

  - a global view of all dependencies; no multiple passes to get
    everything built properly
  - configuration files are Python scripts, allowing the full use of a
    real scripting language to solve difficult build problems
  - a modular architecture allows the SCons Build Engine to be
    embedded in other Python software
  - the ability to scan files for implicit dependencies (#include files);
  - improved parallel build (-j) support that provides consistent
    build speedup regardless of source tree layout
  - use of MD5 signatures to decide if a file has really changed; no
    need to "touch" files to fool make that something is up-to-date
  - easily extensible through user-defined Builder and Scanner objects
  - build actions can be Python code, as well as external commands

An scons-users mailing list is available for those interested in getting
started using SCons.  You can subscribe at:

	http://lists.sourceforge.net/lists/listinfo/scons-users

Alternatively, we invite you to subscribe to the low-volume
scons-announce mailing list to receive notification when new versions of
SCons become available:

	http://lists.sourceforge.net/lists/listinfo/scons-announce


ACKNOWLEDGEMENTS

Thanks to Chad Austin, Allen Bierbaum, Steve Christensen, Charles
Crain, Damyan Pepper, Stefan Reichor, Anthony Roach, Greg Spencer, and
Christoph Wiedemann for their contributions to this release.  Special
thanks to David Snopek for donating base code for the new Config
functionality that had been originally written under a different
license.

On behalf of the SCons team,

	--SK