Merge back from checkpoint.
authorbdbaddog <bdbaddog@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Tue, 19 Jan 2010 05:59:03 +0000 (05:59 +0000)
committerbdbaddog <bdbaddog@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Tue, 19 Jan 2010 05:59:03 +0000 (05:59 +0000)
Need to regenerate the .xml files.

git-svn-id: http://scons.tigris.org/svn/scons/trunk@4635 fdb21ef1-2011-0410-befe-b5e4ea1792b1

23 files changed:
Announcement.txt
QMTest/TestSCons.py
SConstruct
doc/user/add-method.xml
doc/user/alias.xml
doc/user/builders-built-in.xml
doc/user/builders-commands.xml
doc/user/builders-writing.xml
doc/user/builders.xml
doc/user/caching.xml
doc/user/command-line.xml
doc/user/depends.xml
doc/user/environments.xml
doc/user/less-simple.xml
doc/user/libraries.xml
doc/user/nodes.xml
doc/user/output.xml
doc/user/parseconfig.xml
doc/user/parseflags.xml
doc/user/simple.xml
doc/user/troubleshoot.xml
doc/user/variants.xml
src/RELEASE.txt

index 384f5455557379808f79e2713e0674fc10554750..521dd71173776efb85a5990729ffb7909ec33dc7 100644 (file)
 __COPYRIGHT__
 __FILE__ __REVISION__ __DATE__ __DEVELOPER__
-
-  A new SCons checkpoint release, 0.XX.0dYYYYMMDD, is now available at the
-  SCons download page:
-
-          http://www.scons.org/download.php
-
-  A SCons "checkpoint release" is intended to provide early access to
-  new features so they can be tested in the field before being released
-  for adoption by other software distributions.
-
-  Note that a checkpoint release is developed using the same test-driven
-  development methdology as all SCons releases.  Existing SCons
-  functionality should all work as it does in previous releases (except
-  for any changes identified in the release notes) and early adopters
-  should be able to use a checkpoint release safely for production work
-  with existing SConscript files.  If not, it represents not only a bug
-  in SCons but also a hole in the regression test suite, and we want to
-  hear about it.
-
-  New features may be more lightly tested than in past releases,
-  especially as concerns their interaction with all of the other
-  functionality in SCons.  We are especially interested in hearing bug
-  reports about new functionality.
-
-  We do not recommend that downstream distributions (Debian, Fedora,
-  etc.) package a checkpoint release, mainly to avoid confusing the
-  "public" release numbering with the long checkpoint release names.
-
-  Here is a summary of the changes since 0.XX:
-
-  NEW FUNCTIONALITY
-
-  - List new features (presumably why a checkpoint is being released)
-
-  DEPRECATED FUNCTIONALITY
-
-  - List anything that's been deprecated since the last release
-
-  CHANGED/ENHANCED EXISTING FUNCTIONALITY
-
-  - List modifications to existing features, where the previous behavior
-    wouldn't actually be considered a bug
-
-  FIXES
-
-  - List fixes of outright bugs
-
-  IMPROVEMENTS
-
-  - List improvements that wouldn't be visible to the user in the
-    documentation:  performance improvements (describe the circumstances
-    under which they would be observed), or major code cleanups
-
-  PACKAGING
-
-  - List changes in the way SCons is packaged and/or released
-
-  DOCUMENTATION
-
-  - List any significant changes to the documentation (not individual
-    typo fixes, even if they're mentioned in src/CHANGES.txt to give
-    the contributor credit)
-
-  DEVELOPMENT
-
-  - List visible changes in the way SCons is developed
-
-  Thanks to LARRY, MOE and CURLY for their contributions to this release.
-
+SCons checkpoint release 1.2.0.d20090223 is now available at the SCons
+download page:
+
+        http://www.scons.org/download.php
+
+This checkpoint provides early access to new features and fixes
+scheduled for release in SCons 1.3.0.
+
+
+IMPORTANT:
+
+- This checkpoint release notably contains completely new code for
+  detecting installed versions of Microsoft Visual C/C++.  The new code
+  has been tested extensively, but it is possible that it will fail to
+  find installed versions on configurations that we don't have available
+  for testing.  Please report *any* problems with support for Microsoft
+  Visual C/C++ as soon as possible so that we can diagnose and fix
+  them before releasing SCons 1.3.0.
+
+- Python versions prior to 2.4 are supported by SCons 1.2.0, but are
+  officially deprecated and will generate a disableable warning message.
+  We plan to remove support for these older versions in SCons 2.0.
+  If removing this support would cause a problem for you, please contact
+  the dev@scons.tigris.org mailing list.
+
+- The following deprecated features will still be supported in 1.3.0
+  but will generate mandatory, non-disableable warnings:
+
+    --  Support for Python versions 1.5, 1.6, 2.0, 2.1, 2.2, and 2.3.
+    --  The overrides= keyword argument to the Builder() call.
+    --  The scanner= keyword argument to the Builder() call.
+    --  The BuildDir() function and env.BuildDir() method.
+    --  The env.Copy() method.
+    --  The SourceSignatures() function and
+        env.SourceSignatures() method.
+    --  The TargetSignatures() function and
+        env.TargetSignatures() method.
+    --  The Sig module (now an unnused stub).
+    --  The --debug=dtree, --debug=stree and --debug=tree options.
+    --  The --debug=nomemoizer option.
+    --  The Options object and the related BoolOption(), EnumOption(),
+        ListOption(), PackageOption() and PathOption() functions.
+
+
+WHAT'S NEW IN THIS RELEASE
+
+For a complete description of important changes since other recent
+releases, see:
+
+        http://www.scons.org/RELEASE.txt
+
+For a complete list of changes in all releases, see the official
+change log:
+
+        http://www.scons.org/CHANGES.txt
+
+We do not recommend that downstream distributions (Debian, Fedora,
+etc.) package a checkpoint release, mainly to avoid confusing the
+"public" release numbering with the long checkpoint release names.
+
+
+Here is a summary of all changes since the 1.1.0 release:
+
+
+NEW FUNCTIONALITY
+
+- SCons now supports batch compilation of Visual Studio C/C++ source
+  files when the new $MSVC_BATCH construction variable is set.
+- New reserved $CHANGED_SOURCES, $CHANGED_TARGETS, $UNCHANGED_SOURCES
+  and $UNCHANGED_TARGETS variables provide finer-grained control
+  over what source or targets to pass to a command line.
+- A new batch_key= keyword argument to Action object creation supports
+  general batched builds.
+- A new --warn=future-deprecated option provides advance warnings about
+  future deprecated features that still have warnings hidden by default.
+- Visual Studio 8 project files can now be generated for 64-bit platforms.
+- Visual Studio & Visual C++ now support TARGET_OS, TARGET_ARCH for
+  cross-compiling to x86, x86_64, ia64
+
+CHANGED/ENHANCED EXISTING FUNCTIONALITY
+
+- $CCFLAGS is no longer included in the default definitions of $CXXFLAGS
+  for Visual C/C++ and MIPSpro C++ on SGI (to match other tools and
+  avoid flag duplication on C++ command lines).
+- The $CCFLAGS variable is now passed to Visual C/C++ precompiled header
+  compilation.
+- Scanning files encoded in utf-8 and utf-16 for implicit dependencies
+  is now supported.
+- Linker tools modules now differentiate properly between the SharedLibrary
+  and LoadableModule Builders.
+- Don't automatically try to build .pdf graphics files for .eps files in
+  \includegraphics{} calls in TeX/LaTeX files when building with the PDF
+  builder (and thus using pdflatex).
+- Setting WINDOWS_INSERT_DEF=0 now disables --output-def when linking
+  under MinGW.
+- AppendENVPath() and PrependENVPath() now interpret '#' in paths
+  relative to the top-level SConstruct directory.
+- The message, "scons: Build interrupted." is no printed on error output,
+  not standard output.
+- Quoted module names in SWIG source files are no handled correctly.
+- Suffix-matching for scanners is now case-insensitive on Windows.
+- Generated Visual Studio 8 project files now work better with
+  IntelliSense, by defining IncludeSearchPath and PreprocessorDefinitions.
+- Unnecessary nested $( $) strings around $_LIBDIRFLAGS have been removed
+  from the default command lines for the Microsoft linker, the OS/2
+  ilink linker and the Phar Lap linkloc linker.
+- SCons now internally spells the Windows environment variables
+  "SystemDrive" and "SystemRoot" (instead of "SYSTEMDRIVE" and
+  "SYSTEMROOT.")
+- Major revamp of Visual Studio/Visual C++ logic for locating and
+  configuring available version on the machine.
+
+FIXES
+
+- The $CHANGED_SOURCES variable now correctly includes files whose
+  corresponding targets don't exist.
+- The $CHANGED_SOURCES variable now works correctly with the
+  --config=force option.
+- $SOURCE and $SOURCES attributes now work even when there are no
+  sources specified in the Builder call.
+- $SWIGOUTDIR values with spaces now work properly.
+- Fix use of $SWIGOUTDIR when generating Python wrappers.
+- Add $SWIGDIRECTORSUFFIX and $SWIGVERSION construction variables.
+- The Borland ilink linker now uses the -e option to specify the output
+  file name.
+- SCons now correctly identifies shared libraries and shared object files
+  in a Repository.
+- Implicit command dependencies are detected even when the first argument
+  is quoted on the command line.
+- #include file names that contain escaped backslashes (\\) are now
+  handled correctly.
+- Have AddOption() remove variables from the list of
+  seen-but-unknown variables (which are reported later).
+- An option name and aliases can now be specified as a tuple.
+- Textfile builder.
+- Fix the -n option when used with VariantDir(duplicate=1)
+  and the variant directory doesn't already exist.
+- Fix scanning of Unicode files for both UTF-16 endian flavors.
+- Fix a TypeError on #include of file names with Unicode characters.
+- Fix an exception if a null command-line argument is passed in.
+- Evaluate Requires() prerequisites before a Node's direct children
+  (sources and dependencies).
+- Remove redundant __metaclass__ initializations in Environment.py.
+- Fix SWIG testing infrastructure to work on Mac OS X.
+- Substfile builder.
+- When reporting a target that SCons doesn't know how to make,
+  specify whether it's a File, Dir, etc.
+- Add -recorder flag to Latex commands and updated internals to
+  use the output to find files TeX creates. This allows the MiKTeX
+  installations to find the created files
+- Notify user of Latex errors that would get buried in the
+  Latex output
+- Remove LATEXSUFFIXES from environments that don't initialize Tex.
+- Add support for the glosaaries package for glossaries and acronyms
+- Fix problem that pdftex, latex, and pdflatex tools by themselves did
+  not create the actions for bibtex, makeindex,... by creating them
+  and other environment settings in one routine called by all four
+  tex tools.
+- Fix problem with filenames of sideeffects when the user changes
+  the name of the output file from the latex default
+
+
+
+
+DOCUMENTATION
+
+- The TestCommon.shobj_prefix variable is now documented.
+- Document that the msvc Tool module uses $PCH, $PCHSTOP and $PDB.
+- The User's Guide has had numerous typos fixed and other corrections.
+- Document that filenames with '.' as the first character are
+  ignored by Glob() by default (matching UNIX glob semantics).
+- Correct the documentation of text returned by sconf.Result().
+
+
+Thanks to Stanislav Baranov, David Cornapeau, Robert P.J. Day, 
+Lukas Erlinghagen, Allan Erskine, Hartmut Goebel, Jared Grubb, 
+Mateusz Gruca, Jim Hunziker, Ted Johnson, Jason Kenney, Steven Knight, 
+Arve Knudsen, Rob Managan, Greg Noel, Gary Oberbrunner, Zia Sobhani, 
+Greg Spencer, Roberto de Vecchi, Ben Webb and Matthew Wesley, 
+Steven Knight for their contributions to this release.
+
+
+On behalf of the SCons team,
+
+        --WPD
index ce0117413f7388807d96e4931986b519129899b3..d8dda8a9bc4d4bf2ab65ba395c28eb98b861efd9 100644 (file)
@@ -52,7 +52,7 @@ from TestCommon import __all__
 
 default_version = '1.2.0'
 
-copyright_years = '2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009'
+copyright_years = '2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010'
 
 # In the checked-in source, the value of SConsVersion in the following
 # line must remain "__ VERSION __" (without the spaces) so the built
index b52acaf6f0253ed162e613120424f63327e7aa70..1c2cc47e42a08f09123d5393e61ca35f32e3b7d1 100644 (file)
@@ -6,10 +6,10 @@
 
 # When this gets changed, you must also change the copyright_years string
 # in QMTest/TestSCons.py so the test scripts look for the right string.
-copyright_years = '2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009'
+copyright_years = '2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010'
 
 # This gets inserted into the man pages to reflect the month of release.
-month_year = 'February 2009'
+month_year = 'January 2010'
 
 #
 # __COPYRIGHT__
index d4a484e9ec4be71189d91f44f1e4e4afac617933..8e078fd5340cf3b4cf7ca63864ca51be59b97588 100644 (file)
@@ -56,7 +56,7 @@
 
   <screen>
     % <userinput>scons -Q /</userinput>
-    cc -o hello.o -c hello.c
+    \e[?1034hcc -o hello.o -c hello.c
     cc -o hello hello.o
     Install file: "hello" as "/usr/bin/hello"
     Install file: "hello" as "install/bin/hello"
 
   <screen>
     % <userinput>scons -Q</userinput>
-    cc -o test_stuff.o -c test_stuff.c
+    \e[?1034hcc -o test_stuff.o -c test_stuff.c
     cc -o tests/test_stuff test_stuff.o
   </screen>
 
 
   <screen>
     C:\><userinput>scons -Q</userinput>
-    rc /fores.res res.rc
-    cl /Fotest_stuff.obj /c test_stuff.c /nologo
-    link /nologo /OUT:tests\test_stuff.exe test_stuff.obj res.res
+    IndexError: list index out of range:
+      File "p:\cyghome\bdeegan\scons\trunk\bootstrap\src\engine\SCons\Script\Main.py", line 1294:
+        _exec_main(parser, values)
+      File "p:\cyghome\bdeegan\scons\trunk\bootstrap\src\engine\SCons\Script\Main.py", line 1259:
+        _main(parser)
+      File "p:\cyghome\bdeegan\scons\trunk\bootstrap\src\engine\SCons\Script\Main.py", line 929:
+        SCons.Script._SConscript._SConscript(fs, script)
+      File "p:\cyghome\bdeegan\scons\trunk\bootstrap\src\engine\SCons\Script\SConscript.py", line 179:
+        exec sys.stdin in call_stack[-1].globals
+      File "&lt;stdin&gt;", line 219:
+        None
+      File "p:\cyghome\bdeegan\scons\trunk\bootstrap\src\engine\SCons\Script\SConscript.py", line 614:
+        env = self.factory()
+      File "p:\cyghome\bdeegan\scons\trunk\bootstrap\src\engine\SCons\Script\SConscript.py", line 594:
+        default_env = SCons.Defaults.DefaultEnvironment()
+      File "p:\cyghome\bdeegan\scons\trunk\bootstrap\src\engine\SCons\Defaults.py", line 91:
+        _default_env = apply(SCons.Environment.Environment, args, kw)
+      File "p:\cyghome\bdeegan\scons\trunk\bootstrap\src\engine\SCons\Environment.py", line 1004:
+        apply_tools(self, tools, toolpath)
+      File "p:\cyghome\bdeegan\scons\trunk\bootstrap\src\engine\SCons\Environment.py", line 106:
+        env.Tool(tool)
+      File "p:\cyghome\bdeegan\scons\trunk\bootstrap\src\engine\SCons\Environment.py", line 1703:
+        tool(self)
+      File "&lt;stdin&gt;", line 67:
+        None
+      File "p:\cyghome\bdeegan\scons\trunk\bootstrap\src\engine\SCons\Tool\msvc.py", line 239:
+        mssdk.generate(env)
+      File "p:\cyghome\bdeegan\scons\trunk\bootstrap\src\engine\SCons\Tool\mssdk.py", line 41:
+        mssdk_setup_env(env)
+      File "p:\cyghome\bdeegan\scons\trunk\bootstrap\src\engine\SCons\Tool\MSCommon\sdk.py", line 298:
+        mssdk = get_default_sdk()
+      File "p:\cyghome\bdeegan\scons\trunk\bootstrap\src\engine\SCons\Tool\MSCommon\sdk.py", line 262:
+        return InstalledSDKList[0]
+    \e[?1034h
   </screen>
 
   <para>
index f285d70d83e85f0516ab56d8a2ef7c39074e03b3..9c4a179d762774f6a98bb87431c661a49d563d7f 100644 (file)
@@ -46,7 +46,7 @@
 
   <screen>
      % <userinput>scons -Q install</userinput>
-     cc -o hello.o -c hello.c
+     \e[?1034hcc -o hello.o -c hello.c
      cc -o hello hello.o
      Install file: "hello" as "/usr/bin/hello"
   </screen>
 
   <screen>
      % <userinput>scons -Q install-bin</userinput>
-     cc -o foo.o -c foo.c
+     \e[?1034hcc -o foo.o -c foo.c
      cc -o foo foo.o
      Install file: "foo" as "/usr/bin/foo"
      % <userinput>scons -Q install-lib</userinput>
-     cc -o bar.o -c bar.c
+     \e[?1034hcc -o bar.o -c bar.c
      ar rc libbar.a bar.o
      ranlib libbar.a
      Install file: "libbar.a" as "/usr/lib/libbar.a"
      % <userinput>scons -Q -c /</userinput>
-     Removed foo.o
+     \e[?1034hRemoved foo.o
      Removed foo
      Removed /usr/bin/foo
      Removed bar.o
      Removed libbar.a
      Removed /usr/lib/libbar.a
      % <userinput>scons -Q install</userinput>
-     cc -o foo.o -c foo.c
+     \e[?1034hcc -o foo.o -c foo.c
      cc -o foo foo.o
      Install file: "foo" as "/usr/bin/foo"
      cc -o bar.o -c bar.c
index 738683bce276b3c5ff72f6ef477621e053330d92..cb7fb70effe1edc365c946279c7ef940edba6eca 100644 (file)
 
     <screen>
       % <userinput>scons -Q</userinput>
-      cc -o goodbye.o -c goodbye.c
+      \e[?1034hcc -o goodbye.o -c goodbye.c
       cc -o hello.o -c hello.c
       cc -o hello hello.o goodbye.o -L/usr/dir1 -Ldir2 -lfoo1 -lfoo2
     </screen>
 
     <screen>
       C:\><userinput>scons -Q</userinput>
-      cl /Fogoodbye.obj /c goodbye.c /nologo
-      cl /Fohello.obj /c hello.c /nologo
-      link /nologo /OUT:hello.exe /LIBPATH:\usr\dir1 /LIBPATH:dir2 foo1.lib foo2.lib hello.obj goodbye.obj
+      IndexError: list index out of range:
+        File "p:\cyghome\bdeegan\scons\trunk\bootstrap\src\engine\SCons\Script\Main.py", line 1294:
+          _exec_main(parser, values)
+        File "p:\cyghome\bdeegan\scons\trunk\bootstrap\src\engine\SCons\Script\Main.py", line 1259:
+          _main(parser)
+        File "p:\cyghome\bdeegan\scons\trunk\bootstrap\src\engine\SCons\Script\Main.py", line 929:
+          SCons.Script._SConscript._SConscript(fs, script)
+        File "p:\cyghome\bdeegan\scons\trunk\bootstrap\src\engine\SCons\Script\SConscript.py", line 179:
+          exec sys.stdin in call_stack[-1].globals
+        File "&lt;stdin&gt;", line 219:
+          None
+        File "p:\cyghome\bdeegan\scons\trunk\bootstrap\src\engine\SCons\Script\SConscript.py", line 614:
+          env = self.factory()
+        File "p:\cyghome\bdeegan\scons\trunk\bootstrap\src\engine\SCons\Script\SConscript.py", line 594:
+          default_env = SCons.Defaults.DefaultEnvironment()
+        File "p:\cyghome\bdeegan\scons\trunk\bootstrap\src\engine\SCons\Defaults.py", line 91:
+          _default_env = apply(SCons.Environment.Environment, args, kw)
+        File "p:\cyghome\bdeegan\scons\trunk\bootstrap\src\engine\SCons\Environment.py", line 1004:
+          apply_tools(self, tools, toolpath)
+        File "p:\cyghome\bdeegan\scons\trunk\bootstrap\src\engine\SCons\Environment.py", line 106:
+          env.Tool(tool)
+        File "p:\cyghome\bdeegan\scons\trunk\bootstrap\src\engine\SCons\Environment.py", line 1703:
+          tool(self)
+        File "&lt;stdin&gt;", line 67:
+          None
+        File "p:\cyghome\bdeegan\scons\trunk\bootstrap\src\engine\SCons\Tool\msvc.py", line 239:
+          mssdk.generate(env)
+        File "p:\cyghome\bdeegan\scons\trunk\bootstrap\src\engine\SCons\Tool\mssdk.py", line 41:
+          mssdk_setup_env(env)
+        File "p:\cyghome\bdeegan\scons\trunk\bootstrap\src\engine\SCons\Tool\MSCommon\sdk.py", line 298:
+          mssdk = get_default_sdk()
+        File "p:\cyghome\bdeegan\scons\trunk\bootstrap\src\engine\SCons\Tool\MSCommon\sdk.py", line 262:
+          return InstalledSDKList[0]
+      \e[?1034h
     </screen>
 
     <para>
 
       <screen>
         % <userinput>scons -Q .</userinput>
-        tar -c -f out1.tar file1 file2
+        \e[?1034htar -c -f out1.tar file1 file2
         tar -c -f out2.tar directory
       </screen>
 
 
       <screen>
         % <userinput>scons -Q .</userinput>
-        tar -c -z -f out.tar.gz directory
-      </screen>
-
-      <para>
-
-      you may also wish to set the value of the
-      &cv-link-TARSUFFIX; construction variable
-      to your desired suffix for compress &tar; archives,
-      so that &SCons; can append it to the target file name
-      without your having to specify it explicitly:
-
-      </para>
-
-      <programlisting>
-        env = Environment(TARFLAGS = '-c -z',
-                          TARSUFFIX = '.tgz')
-        env.Tar('out', 'directory')
-      </programlisting>
-
-      <screen>
-        % <userinput>scons -Q .</userinput>
-        tar -c -z -f out.tgz directory
-      </screen>
-
-    </section>
-
-    <section>
-    <title>The &Zip; Builder</title>
-
-      <para>
-
-      The &b-link-Zip; Builder object creates archives of files
-      and/or directory trees in the ZIP file format.
-      Python versions 1.6 or later
-      contain an internal &zipfile; module
-      that &SCons; will use.
-      In this case, given the following
-      &SConstruct; file:
-
-      </para>
-
-      <programlisting>
-        env = Environment()
-        env.Zip('out', ['file1', 'file2'])
-      </programlisting>
-
-      <para>
-
-      Your output will reflect the fact
-      that an internal Python function
-      is being used to create the output ZIP archive:
-
-      </para>
-
-      <screen>
-        % <userinput>scons -Q .</userinput>
-        zip(["out.zip"], ["file1", "file2"])
-      </screen>
-
-      <para>
-
-      If you're using Python version 1.5.2 to run &SCons;,
-      then &SCons; will try to use an external
-      &zip; program as follows:
-
-      </para>
-
-      <screen>
-        % <userinput>scons -Q .</userinput>
-        zip /home/my/project/zip.out file1 file2
-      </screen>
-
-    </section>
-
-  </section>
-
-  <section>
-  <title>Java</title>
-
-    <para>
-
-    &SCons; provides Builder objects
-    for creating various types of Java output files.
-
-    </para>
-
-    <section>
-    <title>Building Class Files:  the &Java; Builder</title>
-
-      <para>
-
-      The &b-link-Java; builder takes one or more input
-      <filename>.java</filename> files
-      and turns them into one or more
-      <filename>.class</filename> files
-      Unlike most builders, however,
-      the &Java; builder takes
-      target and source <emphasis>directories</emphasis>,
-      not files, as input.
-
-      </para>
-
-      <programlisting>
-        env = Environment()
-        env.Java(target = 'classes', source = 'src')
-      </programlisting>
-
-      <para>
-
-      The &Java; builder will then
-      search the specified source directory
-      tree for all <filename>.java</filename> files,
-      and pass any out-of-date
-
-      </para>
-
-      <screen>
-        XXX Java() screen
-      </screen>
-
-    </section>
-
-    <section>
-    <title>The &Jar; Builder</title>
-
-      <para>
-
-      XXX The &Jar; builder object
-
-      </para>
-
-      <programlisting>
-        env = Environment()
-        env.Java(target = 'classes', source = 'src')
-        env.Jar(target = '', source = 'classes')
-      </programlisting>
-
-      <screen>
-        XXX Jar() screen
-      </screen>
-
-    </section>
-
-    <section>
-    <title>Building C header and stub files:  the &JavaH; Builder</title>
-
-      <para>
-
-      XXX JavaH() para
-
-      </para>
-
-      <programlisting>
-        XXX JavaH() programlisting
-      </programlisting>
-
-      <screen>
-        XXX JavaH() screen
-      </screen>
-
-    </section>
-
-    <section>
-    <title>Building RMI stub and skeleton class files:  the &RMIC; Builder</title>
-
-      <para>
-
-      XXX RMIC() para
-
-      </para>
-
-      <programlisting>
-        XXX RMIC() programlisting
-      </programlisting>
-
-      <screen>
-        XXX RMIC() screen
-      </screen>
-
-    </section>
-
-  </section>
index fcb2a96d69ca5d43e0304f836077e895317e9ea1..23fe4ce427f10f0b8b85f3c492ec15581ca3568b 100644 (file)
 
   <screen>
     % <userinput>scons -Q</userinput>
-    sed 's/x/y/' &lt; foo.in &gt; foo.out
-  </screen>
-
-  <para>
-
-  This is often more convenient than
-  creating a &Builder; object
-  and adding it to the &cv-link-BUILDERS; variable
-  of a &consenv;
-
-  </para>
-
-  <para>
-
-  Note that the action you specify to the
-  &Command; &Builder; can be any legal &SCons; &Action;,
-  such as a Python function:
-
-  </para>
-
-  <programlisting>
-     env = Environment()
-     def build(target, source, env):
-         # Whatever it takes to build
-         return None
-     env.Command('foo.out', 'foo.in', build)
-  </programlisting>
-
-  <para>
-
-  Which executes as follows:
-
-  </para>
-
-  <screen>
-    % <userinput>scons -Q</userinput>
-    build(["foo.out"], ["foo.in"])
-  </screen>
-
-  <para>
-
-  Note that &cv-link-SOURCE; and &cv-link-TARGET; are expanded 
-  in the source and target as well as of SCons 1.1,
-  so you can write:
-
-  </para>
-
-  <programlisting>
-     env.Command('${SOURCE.basename}.out', 'foo.in', build)
-  </programlisting>
-
-
-  <para>
-
-  which does the same thing as the previous example, but allows you
-  to avoid repeating yourself.
-
-  </para>
-
index 3932181bec17383886f49113eeb48452a8c193ec..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,957 +0,0 @@
-<!--
-
-  __COPYRIGHT__
-
-  Permission is hereby granted, free of charge, to any person obtaining
-  a copy of this software and associated documentation files (the
-  "Software"), to deal in the Software without restriction, including
-  without limitation the rights to use, copy, modify, merge, publish,
-  distribute, sublicense, and/or sell copies of the Software, and to
-  permit persons to whom the Software is furnished to do so, subject to
-  the following conditions:
-
-  The above copyright notice and this permission notice shall be included
-  in all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-  KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-  WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
-<!--
-
-=head2 Adding new methods
-
-For slightly more demanding changes, you may wish to add new methods to the
-C<cons> package. Here's an example of a very simple extension,
-C<InstallScript>, which installs a tcl script in a requested location, but
-edits the script first to reflect a platform-dependent path that needs to be
-installed in the script:
-
-  # cons::InstallScript - Create a platform dependent version of a shell
-  # script by replacing string ``#!your-path-here'' with platform specific
-  # path $BIN_DIR.
-
-  sub cons::InstallScript {
-       my ($env, $dst, $src) = @_;
-       Command $env $dst, $src, qq(
-               sed s+your-path-here+$BIN_DIR+ %< > %>
-               chmod oug+x %>
-       );
-  }
-
-Notice that this method is defined directly in the C<cons> package (by
-prefixing the name with C<cons::>). A change made in this manner will be
-globally visible to all environments, and could be called as in the
-following example:
-
-  InstallScript $env "$BIN/foo", "foo.tcl";
-
-For a small improvement in generality, the C<BINDIR> variable could be
-passed in as an argument or taken from the construction environment-,-as
-C<%BINDIR>.
-
-
-=head2 Overriding methods
-
-Instead of adding the method to the C<cons> name space, you could define a
-new package which inherits existing methods from the C<cons> package and
-overrides or adds others. This can be done using Perl's inheritance
-mechanisms.
-
-The following example defines a new package C<cons::switch> which
-overrides the standard C<Library> method. The overridden method builds
-linked library modules, rather than library archives. A new
-constructor is provided. Environments created with this constructor
-will have the new library method; others won't.
-
-  package cons::switch;
-  BEGIN {@ISA = 'cons'}
-
-  sub new {
-       shift;
-       bless new cons(@_);
-  }
-
-  sub Library {
-       my($env) = shift;
-       my($lib) = shift;
-       my(@objs) = Objects $env @_;
-       Command $env $lib, @objs, q(
-               %LD -r %LDFLAGS %< -o %>
-       );
-  }
-
-This functionality could be invoked as in the following example:
-
-  $env = new cons::switch(@overrides);
-  ...
-  Library $env 'lib.o', 'foo.c', 'bar.c';
-
--->
-
-  <para>
-
-  Although &SCons; provides many useful methods
-  for building common software products:
-  programs, libraries, documents.
-  you frequently want to be
-  able to build some other type of file
-  not supported directly by &SCons;.
-  Fortunately, &SCons; makes it very easy
-  to define your own &Builder; objects
-  for any custom file types you want to build.
-  (In fact, the &SCons; interfaces for creating
-  &Builder; objects are flexible enough and easy enough to use
-  that all of the the &SCons; built-in &Builder; objects
-  are created the mechanisms described in this section.)
-
-  </para>
-
-  <section>
-  <title>Writing Builders That Execute External Commands</title>
-
-    <para>
-
-    The simplest &Builder; to create is
-    one that executes an external command.
-    For example, if we want to build
-    an output file by running the contents
-    of the input file through a command named
-    <literal>foobuild</literal>,
-    creating that &Builder; might look like:
-
-    </para>
-
-    <programlisting>
-       bld = Builder(action = 'foobuild < $SOURCE > $TARGET')
-    </programlisting>
-
-    <para>
-
-    All the above line does is create a free-standing
-    &Builder; object.
-    The next section will show us how to actually use it.
-
-    </para>
-
-  </section>
-
-  <section>
-  <title>Attaching a Builder to a &ConsEnv;</title>
-
-    <para>
-
-    A &Builder; object isn't useful
-    until it's attached to a &consenv;
-    so that we can call it to arrange
-    for files to be built.
-    This is done through the &cv-link-BUILDERS;
-    &consvar; in an environment.
-    The &cv-BUILDERS; variable is a Python dictionary
-    that maps the names by which you want to call
-    various &Builder; objects to the objects themselves.
-    For example, if we want to call the
-    &Builder; we just defined by the name
-    <function>Foo</function>,
-    our &SConstruct; file might look like:
-
-    </para>
-
-    
-
-    <programlisting>
-       bld = Builder(action = 'foobuild < $SOURCE > $TARGET')
-       env = Environment(BUILDERS = {'Foo' : bld})
-    </programlisting>
-
-    <para>
-
-    With the &Builder; attached to our &consenv;
-    with the name <function>Foo</function>,
-    we can now actually call it like so:
-
-    </para>
-
-    <programlisting>
-       env.Foo('file.foo', 'file.input')
-    </programlisting>
-
-    <para>
-
-    Then when we run &SCons; it looks like:
-
-    </para>
-
-    <screen>
-      % <userinput>scons -Q</userinput>
-      foobuild &lt; file.input &gt; file.foo
-    </screen>
-
-    <para>
-
-    Note, however, that the default &cv-BUILDERS;
-    variable in a &consenv;
-    comes with a default set of &Builder; objects
-    already defined:
-    &b-link-Program;, &b-link-Library;, etc.
-    And when we explicitly set the &cv-BUILDERS; variable
-    when we create the &consenv;,
-    the default &Builder;s are no longer part of
-    the environment:
-
-    </para>
-
-   <!--
-   The ToolSurrogate stuff that's used to capture output initializes
-   SCons.Defaults.ConstructionEnvironment with its own list of TOOLS.
-   In this next example, we want to show the user that when they
-   set the BUILDERS explicitly, the call to env.Program() generates
-   an AttributeError.  This won't happen with all of the default
-   ToolSurrogates in the default construction environment.  To make the
-   AttributeError show up, we have to overwite the default construction
-   environment's TOOLS variable so Program() builder doesn't show up.
-
-   We do this by executing a slightly different SConstruct file than the
-   one we print in the guide, with two extra statements at the front
-   that overwrite the TOOLS variable as described.  Note that we have
-   to jam those statements on to the first line to keep the line number
-   in the generated error consistent with what the user will see in the
-   User's Guide.
-   -->
-    <programlisting>
-       bld = Builder(action = 'foobuild &lt; $SOURCE &gt; $TARGET')
-       env = Environment(BUILDERS = {'Foo' : bld})
-       env.Foo('file.foo', 'file.input')
-       env.Program('hello.c')
-    </programlisting>
-
-    <screen>
-      % <userinput>scons -Q</userinput>
-      AttributeError: SConsEnvironment instance has no attribute 'Program':
-        File "/home/my/project/SConstruct", line 4:
-          env.Program('hello.c')
-    </screen>
-
-    <para>
-
-    To be able to use both our own defined &Builder; objects
-    and the default &Builder; objects in the same &consenv;,
-    you can either add to the &cv-BUILDERS; variable
-    using the &Append; function:
-
-    </para>
-
-    
-
-    <programlisting>
-       env = Environment()
-       bld = Builder(action = 'foobuild < $SOURCE > $TARGET')
-       env.Append(BUILDERS = {'Foo' : bld})
-       env.Foo('file.foo', 'file.input')
-       env.Program('hello.c')
-    </programlisting>
-
-    <para>
-
-    Or you can explicitly set the appropriately-named
-    key in the &cv-BUILDERS; dictionary:
-
-    </para>
-
-    <programlisting>
-       env = Environment()
-       bld = Builder(action = 'foobuild < $SOURCE > $TARGET')
-       env['BUILDERS']['Foo'] = bld
-       env.Foo('file.foo', 'file.input')
-       env.Program('hello.c')
-    </programlisting>
-
-    <para>
-
-    Either way, the same &consenv;
-    can then use both the newly-defined
-    <function>Foo</function> &Builder;
-    and the default &b-link-Program; &Builder;:
-
-    </para>
-
-    <screen>
-      % <userinput>scons -Q</userinput>
-      foobuild &lt; file.input &gt; file.foo
-      cc -o hello.o -c hello.c
-      cc -o hello hello.o
-    </screen>
-
-  </section>
-
-  <section>
-  <title>Letting &SCons; Handle The File Suffixes</title>
-
-    <para>
-
-    By supplying additional information
-    when you create a &Builder;,
-    you can let &SCons; add appropriate file
-    suffixes to the target and/or the source file.
-    For example, rather than having to specify
-    explicitly that you want the <literal>Foo</literal>
-    &Builder; to build the <literal>file.foo</literal>
-    target file from the <literal>file.input</literal> source file,
-    you can give the <literal>.foo</literal>
-    and <literal>.input</literal> suffixes to the &Builder;,
-    making for more compact and readable calls to
-    the <literal>Foo</literal> &Builder;:
-
-    </para>
-
-    
-
-    <programlisting>
-       bld = Builder(action = 'foobuild < $SOURCE > $TARGET',
-                     suffix = '.foo',
-                     src_suffix = '.input')
-       env = Environment(BUILDERS = {'Foo' : bld})
-       env.Foo('file1')
-       env.Foo('file2')
-    </programlisting>
-
-    <screen>
-      % <userinput>scons -Q</userinput>
-      foobuild &lt; file1.input &gt; file1.foo
-      foobuild &lt; file2.input &gt; file2.foo
-    </screen>
-
-    <para>
-
-    You can also supply a <literal>prefix</literal> keyword argument
-    if it's appropriate to have &SCons; append a prefix
-    to the beginning of target file names.
-
-    </para>
-
-  </section>
-
-  <section>
-  <title>Builders That Execute Python Functions</title>
-
-    <para>
-
-    In &SCons;, you don't have to call an external command
-    to build a file.
-    You can, instead, define a Python function
-    that a &Builder; object can invoke
-    to build your target file (or files).
-    Such a &buildfunc; definition looks like:
-
-    </para>
-
-    <programlisting>
-       def build_function(target, source, env):
-           # Code to build "target" from "source"
-           return None
-    </programlisting>
-
-    <para>
-
-    The arguments of a &buildfunc; are:
-
-    </para>
-
-    <variablelist>
-
-      <varlistentry>
-      <term>target</term>
-
-      <listitem>
-      <para>
-
-      A list of Node objects representing
-      the target or targets to be
-      built by this builder function.
-      The file names of these target(s)
-      may be extracted using the Python &str; function.
-
-      </para>
-      </listitem>
-      </varlistentry>
-
-      <varlistentry>
-      <term>source</term>
-
-      <listitem>
-      <para>
-
-      A list of Node objects representing
-      the sources to be
-      used by this builder function to build the targets.
-      The file names of these source(s)
-      may be extracted using the Python &str; function.
-
-      </para>
-      </listitem>
-      </varlistentry>
-
-      <varlistentry>
-      <term>env</term>
-
-      <listitem>
-      <para>
-
-      The &consenv; used for building the target(s).
-      The builder function may use any of the
-      environment's construction variables
-      in any way to affect how it builds the targets.
-
-      </para>
-      </listitem>
-      </varlistentry>
-
-    </variablelist>
-
-    <para>
-
-    The builder function must
-    return a <literal>0</literal> or <literal>None</literal> value
-    if the target(s) are built successfully.
-    The builder function
-    may raise an exception
-    or return any non-zero value
-    to indicate that the build is unsuccessful,
-
-    </para>
-
-    <para>
-
-    Once you've defined the Python function
-    that will build your target file,
-    defining a &Builder; object for it is as
-    simple as specifying the name of the function,
-    instead of an external command,
-    as the &Builder;'s
-    <literal>action</literal>
-    argument:
-
-    </para>
-
-    <programlisting>
-       def build_function(target, source, env):
-           # Code to build "target" from "source"
-           return None
-       bld = Builder(action = build_function,
-                     suffix = '.foo',
-                     src_suffix = '.input')
-       env = Environment(BUILDERS = {'Foo' : bld})
-       env.Foo('file')
-    </programlisting>
-
-    <para>
-
-    And notice that the output changes slightly,
-    reflecting the fact that a Python function,
-    not an external command,
-    is now called to build the target file:
-
-    </para>
-
-    <screen>
-      % <userinput>scons -Q</userinput>
-      build_function(["file.foo"], ["file.input"])
-    </screen>
-
-  </section>
-
-  <section>
-  <title>Builders That Create Actions Using a &Generator;</title>
-
-    <para>
-
-    &SCons; Builder objects can create an action "on the fly"
-    by using a function called a &generator;.
-    This provides a great deal of flexibility to
-    construct just the right list of commands
-    to build your target.
-    A &generator; looks like:
-
-    </para>
-
-    <programlisting>
-       def generate_actions(source, target, env, for_signature):
-           return 'foobuild < %s > %s' % (target[0], source[0])
-    </programlisting>
-
-    <para>
-
-    The arguments of a &generator; are:
-
-    </para>
-
-    <variablelist>
-
-      <varlistentry>
-      <term>source</term>
-
-      <listitem>
-      <para>
-
-      A list of Node objects representing
-      the sources to be built
-      by the command or other action
-      generated by this function.
-      The file names of these source(s)
-      may be extracted using the Python &str; function.
-
-      </para>
-      </listitem>
-
-      </varlistentry>
-
-      <varlistentry>
-      <term>target</term>
-
-      <listitem>
-      <para>
-
-      A list of Node objects representing
-      the target or targets to be built
-      by the command or other action
-      generated by this function.
-      The file names of these target(s)
-      may be extracted using the Python &str; function.
-
-      </para>
-      </listitem>
-
-      </varlistentry>
-
-      <varlistentry>
-      <term>env</term>
-
-      <listitem>
-      <para>
-
-      The &consenv; used for building the target(s).
-      The generator may use any of the
-      environment's construction variables
-      in any way to determine what command
-      or other action to return.
-
-      </para>
-      </listitem>
-
-      </varlistentry>
-
-      <varlistentry>
-      <term>for_signature</term>
-
-      <listitem>
-      <para>
-
-      A flag that specifies whether the
-      generator is being called to contribute to a build signature,
-      as opposed to actually executing the command.
-
-      <!-- XXX NEED MORE HERE, describe generators use in signatures -->
-
-      </para>
-      </listitem>
-
-      </varlistentry>
-
-    </variablelist>
-
-    <para>
-
-    The &generator; must return a
-    command string or other action that will be used to
-    build the specified target(s) from the specified source(s).
-
-    </para>
-
-    <para>
-
-    Once you've defined a &generator;,
-    you create a &Builder; to use it
-    by specifying the generator keyword argument
-    instead of <literal>action</literal>.
-
-    </para>
-
-    
-
-    <programlisting>
-       def generate_actions(source, target, env, for_signature):
-           return 'foobuild < %s > %s' % (source[0], target[0])
-       bld = Builder(generator = generate_actions,
-                     suffix = '.foo',
-                     src_suffix = '.input')
-       env = Environment(BUILDERS = {'Foo' : bld})
-       env.Foo('file')
-    </programlisting>
-
-    <screen>
-      % <userinput>scons -Q</userinput>
-      foobuild &lt; file.input &gt; file.foo
-    </screen>
-
-    <para>
-
-    Note that it's illegal to specify both an
-    <literal>action</literal>
-    and a
-    <literal>generator</literal>
-    for a &Builder;.
-
-    </para>
-
-  </section>
-
-  <section>
-  <title>Builders That Modify the Target or Source Lists Using an &Emitter;</title>
-
-    <para>
-
-    &SCons; supports the ability for a Builder to modify the
-    lists of target(s) from the specified source(s).
-    You do this by defining an &emitter; function
-    that takes as its arguments
-    the list of the targets passed to the builder,
-    the list of the sources passed to the builder,
-    and the construction environment.
-    The emitter function should return the modified
-    lists of targets that should be built
-    and sources from which the targets will be built.
-
-    </para>
-
-    <para>
-
-    For example, suppose you want to define a Builder
-    that always calls a <filename>foobuild</filename> program,
-    and you want to automatically add
-    a new target file named
-    <filename>new_target</filename>
-    and a new source file named
-    <filename>new_source</filename>
-    whenever it's called.
-    The &SConstruct; file might look like this:
-
-    </para>
-
-    
-
-    <programlisting>
-       def modify_targets(target, source, env):
-           target.append('new_target')
-           source.append('new_source')
-           return target, source
-       bld = Builder(action = 'foobuild $TARGETS - $SOURCES',
-                     suffix = '.foo',
-                     src_suffix = '.input',
-                     emitter = modify_targets)
-       env = Environment(BUILDERS = {'Foo' : bld})
-       env.Foo('file')
-    </programlisting>
-
-    <para>
-    
-    And would yield the following output:
-
-    </para>
-
-    <screen>
-      % <userinput>scons -Q</userinput>
-      foobuild file.foo new_target - file.input new_source
-    </screen>
-
-    <para>
-
-    One very flexible thing that you can do is
-    use a construction variable to specify
-    different emitter functions for different
-    construction variable.
-    To do this, specify a string
-    containing a construction variable
-    expansion as the emitter when you call
-    the &Builder; function,
-    and set that construction variable to
-    the desired emitter function
-    in different construction environments:
-
-    </para>
-
-    <programlisting>
-        bld = Builder(action = 'my_command $SOURCES &gt; $TARGET',
-                      suffix = '.foo',
-                      src_suffix = '.input',
-                      emitter = '$MY_EMITTER')
-        def modify1(target, source, env):
-            return target, source + ['modify1.in']
-        def modify2(target, source, env):
-            return target, source + ['modify2.in']
-        env1 = Environment(BUILDERS = {'Foo' : bld},
-                           MY_EMITTER = modify1)
-        env2 = Environment(BUILDERS = {'Foo' : bld},
-                           MY_EMITTER = modify2)
-        env1.Foo('file1')
-        env2.Foo('file2')
-        import os
-        env1['ENV']['PATH'] = env2['ENV']['PATH'] + os.pathsep + os.getcwd()
-        env2['ENV']['PATH'] = env2['ENV']['PATH'] + os.pathsep + os.getcwd()
-      
-
-    </programlisting>
-
-    <programlisting>
-      bld = Builder(action = 'my_command $SOURCES > $TARGET',
-                    suffix = '.foo',
-                    src_suffix = '.input',
-                    emitter = '$MY_EMITTER')
-      def modify1(target, source, env):
-          return target, source + ['modify1.in']
-      def modify2(target, source, env):
-          return target, source + ['modify2.in']
-      env1 = Environment(BUILDERS = {'Foo' : bld},
-                         MY_EMITTER = modify1)
-      env2 = Environment(BUILDERS = {'Foo' : bld},
-                         MY_EMITTER = modify2)
-      env1.Foo('file1')
-      env2.Foo('file2')
-      
-    </programlisting>
-
-    <para>
-
-    In this example, the <filename>modify1.in</filename>
-    and <filename>modify2.in</filename> files
-    get added to the source lists
-    of the different commands:
-
-    </para>
-
-    <screen>
-      % <userinput>scons -Q</userinput>
-      my_command file1.input modify1.in &gt; file1.foo
-      my_command file2.input modify2.in &gt; file2.foo
-    </screen>
-
-  </section>
-
-  <!--
-
-  <section>
-  <title>target_factor=, source_factory=</title>
-
-  </section>
-
-  <section>
-  <title>target_scanner=, source_scanner=</title>
-
-  </section>
-
-  <section>
-  <title>multi=</title>
-
-  </section>
-
-  <section>
-  <title>single_source=</title>
-
-  </section>
-
-  <section>
-  <title>src_builder=</title>
-
-  </section>
-
-  <section>
-  <title>ensure_suffix=</title>
-
-  </section>
-
-  -->
-
-  <section>
-  <title>Where To Put Your Custom Builders and Tools</title>
-
-    <para>
-
-    The <filename>site_scons</filename> directory gives you a place to
-    put Python modules you can import into your &SConscript; files
-    (<filename>site_scons</filename>),
-    add-on tools that can integrate into &SCons;
-    (<filename>site_scons/site_tools</filename>),
-    and a <filename>site_scons/site_init.py</filename> file that
-    gets read before any &SConstruct; or &SConscript; file,
-    allowing you to change &SCons;'s default behavior.
-
-    </para>
-
-    <para>
-
-    If you get a tool from somewhere (the &SCons; wiki or a third party,
-    for instance) and you'd like to use it in your project, the
-    <filename>site_scons</filename> dir is the simplest place to put it.
-    Tools come in two flavors; either a Python function that operates on
-    an &Environment; or a Python file containing two functions,
-    <function>exists()</function> and <function>generate()</function>.
-
-    </para>
-
-    <para>
-
-    A single-function Tool can just be included in your
-    <filename>site_scons/site_init.py</filename> file where it will be
-    parsed and made available for use.  For instance, you could have a
-    <filename>site_scons/site_init.py</filename> file like this:
-
-    </para>
-
-    <programlisting>
-        def TOOL_ADD_HEADER(env):
-           """A Tool to add a header from $HEADER to the source file"""
-           add_header = Builder(action=['echo "$HEADER" &gt; $TARGET',
-                                        'cat $SOURCE &gt;&gt; $TARGET'])
-           env.Append(BUILDERS = {'AddHeader' : add_header})
-           env['HEADER'] = '' # set default value
-    </programlisting>
-
-    <para>
-
-    and a &SConstruct; like this:
-
-    </para>
-
-    <programlisting>
-        # Use TOOL_ADD_HEADER from site_scons/site_init.py
-        env=Environment(tools=['default', TOOL_ADD_HEADER], HEADER="=====")
-        env.AddHeader('tgt', 'src')
-    </programlisting>
-
-    <para>
-
-      The <function>TOOL_ADD_HEADER</function> tool method will be
-      called to add the <function>AddHeader</function> tool to the
-      environment.
-
-    </para>
-
-    <!-- 
-    <scons_output example="site1" os="posix">
-       <scons_output_command>scons -Q</scons_output_command>
-    </scons_output>
-    -->
-
-    <para>
-      Similarly, a more full-fledged tool with
-      <function>exists()</function> and <function>generate()</function>
-      methods can be installed in
-      <filename>site_scons/site_tools/toolname.py</filename>.  Since
-      <filename>site_scons/site_tools</filename> is automatically added
-      to the head of the tool search path, any tool found there will be
-      available to all environments.  Furthermore, a tool found there
-      will override a built-in tool of the same name, so if you need to
-      change the behavior of a built-in tool, site_scons gives you the
-      hook you need.
-    </para>
-
-    <para>
-      Many people have a library of utility Python functions they'd like
-      to include in &SConscript;s; just put that module in
-      <filename>site_scons/my_utils.py</filename> or any valid Python module name of your
-      choice.  For instance you can do something like this in
-      <filename>site_scons/my_utils.py</filename> to add
-      <function>build_id</function> and <function>MakeWorkDir</function>
-      functions:
-    </para>
-      
-    <programlisting>
-        from SCons.Script import *   # for Execute and Mkdir
-        def build_id():
-           """Return a build ID (stub version)"""
-           return "100"
-        def MakeWorkDir(workdir):
-           """Create the specified dir immediately"""
-           Execute(Mkdir(workdir))
-    </programlisting>
-
-    <para>
-
-    And then in your &SConscript; or any sub-&SConscript; anywhere in
-    your build, you can import <filename>my_utils</filename> and use it:
-
-    </para>
-
-    <programlisting>
-        import my_utils
-        print "build_id=" + my_utils.build_id()
-        my_utils.MakeWorkDir('/tmp/work')
-    </programlisting>
-
-    <para>
-      Note that although you can put this library in
-      <filename>site_scons/site_init.py</filename>,
-      it is no better there than <filename>site_scons/my_utils.py</filename>
-      since you still have to import that module into your &SConscript;.
-      Also note that in order to refer to objects in the SCons namespace
-      such as &Environment; or &Mkdir; or &Execute; in any file other
-      than a &SConstruct; or &SConscript; you always need to do
-    </para>
-    <programlisting>
-        from SCons.Script import *
-    </programlisting>
-
-    <para>
-      This is true in modules in <filename>site_scons</filename> such as
-      <filename>site_scons/site_init.py</filename> as well.
-    </para>
-
-    <para>
-
-      If you have a machine-wide site dir you'd like to use instead of
-      <filename>./site_scons</filename>, use the
-      <literal>--site-dir</literal> option to point to your dir.
-      <filename>site_init.py</filename> and
-      <filename>site_tools</filename> will be located under that dir.
-      To avoid using a <filename>site_scons</filename> dir at all, even
-      if it exists, use the <literal>--no-site-dir</literal> option.
-
-    </para>
-
-  </section>
-
-
-  <!--
-
-  <section>
-  <title>Builders That Use Other Builders</title>
-
-    <para>
-
-    XXX para
-
-    </para>
-
-    <scons_example name="ex8">
-       <file name="SConstruct" printme="1">
-       env = Environment()
-       #env.SourceCode('.', env.BitKeeper('my_command'))
-       env.Program('hello.c')
-       </file>
-       <file name="hello.c">
-       hello.c
-       </file>
-    </scons_example>
-
-    <scons_output example="ex8">
-      <scons_output_command>scons -Q</scons_output_command>
-    </scons_output>
-
-  </section>
-
-  -->
index f3989ef38d79d999d3a3fb2fd59d251a8ef8149c..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,57 +0,0 @@
-<!--
-
-  __COPYRIGHT__
-
-  Permission is hereby granted, free of charge, to any person obtaining
-  a copy of this software and associated documentation files (the
-  "Software"), to deal in the Software without restriction, including
-  without limitation the rights to use, copy, modify, merge, publish,
-  distribute, sublicense, and/or sell copies of the Software, and to
-  permit persons to whom the Software is furnished to do so, subject to
-  the following conditions:
-
-  The above copyright notice and this permission notice shall be included
-  in all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-  KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-  WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
-<!--
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
-"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
-
-<refentry id="Command">
-
-<refmeta>
-<refentrytitle>Command</refentrytitle>
-</refmeta>
-
-<methodsynopsis>
-  <methodname>env.Command</methodname>
-  <methodparam>foo</methodparam>
-  <methodparam>bar</methodparam>
-</methodsynopsis>
-
-</refentry>
--->
-
-<para>
-
-This appendix contains descriptions of all of the
-Builders that are <emphasis>potentially</emphasis>
-available "out of the box" in this version of SCons.
-
-</para>
-
-<variablelist>
-
-&builders-gen;
-
-</variablelist>
index 2348d32982b21d0ad3254d667da55c48af4c26b8..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,506 +0,0 @@
-<!--
-
-  __COPYRIGHT__
-
-  Permission is hereby granted, free of charge, to any person obtaining
-  a copy of this software and associated documentation files (the
-  "Software"), to deal in the Software without restriction, including
-  without limitation the rights to use, copy, modify, merge, publish,
-  distribute, sublicense, and/or sell copies of the Software, and to
-  permit persons to whom the Software is furnished to do so, subject to
-  the following conditions:
-
-  The above copyright notice and this permission notice shall be included
-  in all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-  KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-  WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
-  <para>
-
-  On multi-developer software projects,
-  you can sometimes speed up every developer's builds a lot by
-  allowing them to share the derived files that they build.
-  &SCons; makes this easy, as well as reliable.
-
-  </para>
-
-  <section>
-  <title>Specifying the Shared Cache Directory</title>
-
-    <para>
-
-    To enable sharing of derived files,
-    use the &CacheDir; function
-    in any &SConscript; file:
-
-    </para>
-
-    <programlisting>
-       CacheDir('/usr/local/build_cache')
-    </programlisting>
-
-    <para>
-
-    Note that the directory you specify must already exist
-    and be readable and writable by all developers
-    who will be sharing derived files.
-    It should also be in some central location
-    that all builds will be able to access.
-    In environments where developers are using separate systems
-    (like individual workstations) for builds,
-    this directory would typically be
-    on a shared or NFS-mounted file system.
-
-    </para>
-
-    <para>
-
-    Here's what happens:
-    When a build has a &CacheDir; specified,
-    every time a file is built,
-    it is stored in the shared cache directory
-    along with its MD5 build signature.
-      <footnote>
-      <para>
-      Actually, the MD5 signature is used as the name of the file
-      in the shared cache directory in which the contents are stored.
-      </para>
-      </footnote>
-    On subsequent builds,
-    before an action is invoked to build a file,
-    &SCons; will check the shared cache directory
-    to see if a file with the exact same build
-    signature already exists.
-    If so, the derived file will not be built locally,
-    but will be copied into the local build directory
-    from the shared cache directory,
-    like so:
-
-    </para>
-
-    <screen>
-      % <userinput>scons -Q</userinput>
-      cc -o hello.o -c hello.c
-      cc -o hello hello.o
-      % <userinput>scons -Q -c</userinput>
-      Removed hello.o
-      Removed hello
-      % <userinput>scons -Q</userinput>
-      Retrieved `hello.o' from cache
-      Retrieved `hello' from cache
-    </screen>
-
-    <para>
-
-    Note that the &CacheDir; feature still calculates
-    MD5 build sigantures for the shared cache file names
-    even if you configure &SCons; to use timestamps
-    to decide if files are up to date.
-    (See the <xref linkend="chap-depends"></xref>
-    chapter for information about the &Decider; function.)
-    Consequently, using &CacheDir; may reduce or eliminate any
-    potential performance improvements
-    from using timestamps for up-to-date decisions.
-
-    </para>
-
-  </section>
-
-  <section>
-  <title>Keeping Build Output Consistent</title>
-
-    <para>
-
-    One potential drawback to using a shared cache
-    is that the output printed by &SCons;
-    can be inconsistent from invocation to invocation,
-    because any given file may be rebuilt one time
-    and retrieved from the shared cache the next time.
-    This can make analyzing build output more difficult,
-    especially for automated scripts that
-    expect consistent output each time.
-
-    </para>
-
-    <para>
-
-    If, however, you use the <literal>--cache-show</literal> option,
-    &SCons; will print the command line that it
-    <emphasis>would</emphasis> have executed
-    to build the file,
-    even when it is retrieving the file from the shared cache.
-    This makes the build output consistent
-    every time the build is run:
-
-    </para>
-
-    <screen>
-      % <userinput>scons -Q</userinput>
-      cc -o hello.o -c hello.c
-      cc -o hello hello.o
-      % <userinput>scons -Q -c</userinput>
-      Removed hello.o
-      Removed hello
-      % <userinput>scons -Q --cache-show</userinput>
-      cc -o hello.o -c hello.c
-      cc -o hello hello.o
-    </screen>
-
-    <para>
-
-    The trade-off, of course, is that you no longer
-    know whether or not &SCons;
-    has retrieved a derived file from cache
-    or has rebuilt it locally.
-
-    </para>
-
-  </section>
-
-  <section>
-  <title>Not Using the Shared Cache for Specific Files</title>
-
-    <para>
-
-    You may want to disable caching for certain
-    specific files in your configuration.
-    For example, if you only want to put
-    executable files in a central cache,
-    but not the intermediate object files,
-    you can use the &NoCache;
-    function to specify that the
-    object files should not be cached:
-
-    </para>
-
-    <programlisting>
-       env = Environment()
-       obj = env.Object('hello.c')
-       env.Program('hello.c')
-       CacheDir('cache')
-       NoCache('hello.o')
-    </programlisting>
-
-    <para>
-
-    Then when you run &scons; after cleaning
-    the built targets,
-    it will recompile the object file locally
-    (since it doesn't exist in the shared cache directory),
-    but still realize that the shared cache directory
-    contains an up-to-date executable program
-    that can be retrieved instead of re-linking:
-
-    </para>
-
-    <!--
-
-    <scons_output example="ex1">
-      <scons_output_command>scons -Q</scons_output_command>
-      <scons_output_command>scons -Q -c</scons_output_command>
-      <scons_output_command>scons -Q</scons_output_command>
-    </scons_output>
-
-    -->
-
-    <screen>
-      % <userinput>scons -Q</userinput>
-      cc -o hello.o -c hello.c
-      cc -o hello hello.o
-      % <userinput>scons -Q -c</userinput>
-      Removed hello.o
-      Removed hello
-      % <userinput>scons -Q</userinput>
-      cc -o hello.o -c hello.c
-      Retrieved `hello' from cache
-    </screen>
-
-  </section>
-
-  <section>
-  <title>Disabling the Shared Cache</title>
-
-    <para>
-
-    Retrieving an already-built file
-    from the shared cache
-    is usually a significant time-savings
-    over rebuilding the file,
-    but how much of a savings
-    (or even whether it saves time at all)
-    can depend a great deal on your
-    system or network configuration.
-    For example, retrieving cached files
-    from a busy server over a busy network
-    might end up being slower than
-    rebuilding the files locally.
-
-    </para>
-
-    <para>
-
-    In these cases, you can specify
-    the <literal>--cache-disable</literal>
-    command-line option to tell &SCons;
-    to not retrieve already-built files from the
-    shared cache directory:
-
-    </para>
-
-    <screen>
-      % <userinput>scons -Q</userinput>
-      cc -o hello.o -c hello.c
-      cc -o hello hello.o
-      % <userinput>scons -Q -c</userinput>
-      Removed hello.o
-      Removed hello
-      % <userinput>scons -Q</userinput>
-      Retrieved `hello.o' from cache
-      Retrieved `hello' from cache
-      % <userinput>scons -Q -c</userinput>
-      Removed hello.o
-      Removed hello
-      % <userinput>scons -Q --cache-disable</userinput>
-      cc -o hello.o -c hello.c
-      cc -o hello hello.o
-    </screen>
-
-  </section>
-
-  <section>
-  <title>Populating a Shared Cache With Already-Built Files</title>
-
-    <para>
-
-    Sometimes, you may have one or more derived files
-    already built in your local build tree
-    that you wish to make available to other people doing builds.
-    For example, you may find it more effective to perform
-    integration builds with the cache disabled
-    (per the previous section)
-    and only populate the shared cache directory
-    with the built files after the integration build
-    has completed successfully.
-    This way, the cache will only get filled up
-    with derived files that are part of a complete, successful build
-    not with files that might be later overwritten
-    while you debug integration problems.
-
-    </para>
-
-    <para>
-
-    In this case, you can use the
-    the <literal>--cache-force</literal> option
-    to tell &SCons; to put all derived files in the cache,
-    even if the files already exist in your local tree
-    from having been built by a previous invocation:
-
-    </para>
-
-    <screen>
-      % <userinput>scons -Q --cache-disable</userinput>
-      cc -o hello.o -c hello.c
-      cc -o hello hello.o
-      % <userinput>scons -Q -c</userinput>
-      Removed hello.o
-      Removed hello
-      % <userinput>scons -Q --cache-disable</userinput>
-      cc -o hello.o -c hello.c
-      cc -o hello hello.o
-      % <userinput>scons -Q --cache-force</userinput>
-      scons: `.' is up to date.
-      % <userinput>scons -Q</userinput>
-      scons: `.' is up to date.
-    </screen>
-
-    <para>
-
-    Notice how the above sample run
-    demonstrates that the <literal>--cache-disable</literal>
-    option avoids putting the built
-    <filename>hello.o</filename>
-    and
-    <filename>hello</filename> files in the cache,
-    but after using the <literal>--cache-force</literal> option,
-    the files have been put in the cache
-    for the next invocation to retrieve.
-
-    </para>
-
-  </section>
-
-  <section>
-  <title>Minimizing Cache Contention:  the <literal>--random</literal> Option</title>
-
-    <para>
-
-    If you allow multiple builds to update the
-    shared cache directory simultaneously,
-    two builds that occur at the same time
-    can sometimes start "racing"
-    with one another to build the same files
-    in the same order.
-    If, for example,
-    you are linking multiple files into an executable program:
-
-    </para>
-
-    <programlisting>
-       Program('prog',
-               ['f1.c', 'f2.c', 'f3.c', 'f4.c', 'f5.c'])
-    </programlisting>
-
-    <para>
-
-    &SCons; will normally build the input object files
-    on which the program depends in their normal, sorted order:
-
-    </para>
-
-    <screen>
-      % <userinput>scons -Q</userinput>
-      cc -o f1.o -c f1.c
-      cc -o f2.o -c f2.c
-      cc -o f3.o -c f3.c
-      cc -o f4.o -c f4.c
-      cc -o f5.o -c f5.c
-      cc -o prog f1.o f2.o f3.o f4.o f5.o
-    </screen>
-
-    <para>
-
-    But if two such builds take place simultaneously,
-    they may each look in the cache at nearly the same
-    time and both decide that <filename>f1.o</filename>
-    must be rebuilt and pushed into the shared cache directory,
-    then both decide that <filename>f2.o</filename>
-    must be rebuilt (and pushed into the shared cache directory),
-    then both decide that <filename>f3.o</filename>
-    must be rebuilt...
-    This won't cause any actual build problems--both
-    builds will succeed,
-    generate correct output files,
-    and populate the cache--but
-    it does represent wasted effort.
-
-    </para>
-
-    <para>
-
-    To alleviate such contention for the cache,
-    you can use the <literal>--random</literal> command-line option
-    to tell &SCons; to build dependencies
-    in a random order:
-
-    </para>
-
-    <!--
-
-    The following <screen> output was generated by this:
-
-    <scons_output example="ex-random">
-      <scons_output_command>scons -Q - -random</scons_output_command>
-    </scons_output>
-
-    We captured it directly here to guarantee a "random" order,
-    guarding against the potential for - -random to happen
-    to return things in the original sorted order.
-
-    -->
-
-    <screen>
-      % <userinput>scons -Q --random</userinput>
-      cc -o f3.o -c f3.c
-      cc -o f1.o -c f1.c
-      cc -o f5.o -c f5.c
-      cc -o f2.o -c f2.c
-      cc -o f4.o -c f4.c
-      cc -o prog f1.o f2.o f3.o f4.o f5.o
-    </screen>
-
-    <para>
-
-    Multiple builds using the <literal>--random</literal> option
-    will usually build their dependencies in different,
-    random orders,
-    which minimizes the chances for a lot of
-    contention for same-named files
-    in the shared cache directory.
-    Multiple simultaneous builds might still race to try to build
-    the same target file on occasion,
-    but long sequences of inefficient contention
-    should be rare.
-
-    </para>
-
-    <para>
-
-    Note, of course,
-    the <literal>--random</literal> option
-    will cause the output that &SCons; prints
-    to be inconsistent from invocation to invocation,
-    which may be an issue when
-    trying to compare output from different build runs.
-
-    </para>
-
-    <para>
-
-    If you want to make sure dependencies will be built
-    in a random order without having to specify
-    the <literal>--random</literal> on very command line,
-    you can use the &SetOption; function to
-    set the <literal>random</literal> option
-    within any &SConscript; file:
-
-    </para>
-
-    <programlisting>
-       Program('prog',
-               ['f1.c', 'f2.c', 'f3.c', 'f4.c', 'f5.c'])
-
-       SetOption('random', 1)
-       Program('prog',
-               ['f1.c', 'f2.c', 'f3.c', 'f4.c', 'f5.c'])
-    </programlisting>
-
-  </section>
-
-  <!--
-
-  <section>
-  <title>Troubleshooting Shared Caching:  the &cache-debug; Option</title>
-
-    <para>
-
-    XXX describe the - - cache-debug option
-    XXX maybe point to the troubleshooting appendix?
-
-    </para>
-
-  </section>
-
-  -->
-
-  <!--
-
-  <section>
-
-    <para>
-
-    XXX describe CacheDir management:  monitoring, deleting, etc.
-
-    </para>
-
-  </section>
-
-  -->
index 148922eb4967a0b3fb8b7926dd682127cdae15cf..3d48b2a7f1752e9abe541368a1a70cd1acbf9673 100644 (file)
 
       <screen>
         % <userinput>scons</userinput>
-        scons: Reading SConscript files ...
+        \e[?1034hscons: Reading SConscript files ...
         scons: done reading SConscript files.
         scons: Building targets ...
             ... [build output] ...
         scons: done building targets.
         % <userinput>export SCONSFLAGS="-Q"</userinput>
         % <userinput>scons</userinput>
-            ... [build output] ...
+        \e[?1034h    ... [build output] ...
       </screen>
 
       <para>
 
       <screen>
         % <userinput>scons -Q</userinput>
-        running with -j 2
+        \e[?1034hrunning with -j 2
         scons: `.' is up to date.
       </screen>
 
       <screen>
         % <userinput>export NUM_CPU="4"</userinput>
         % <userinput>scons -Q</userinput>
-        running with -j 4
+        \e[?1034hrunning with -j 4
         scons: `.' is up to date.
       </screen>
 
 
       <screen>
         % <userinput>scons -Q -j 7</userinput>
-        running with -j 7
+        \e[?1034hrunning with -j 7
         scons: `.' is up to date.
         % <userinput>export NUM_CPU="4"</userinput>
         % <userinput>scons -Q -j 3</userinput>
-        running with -j 3
+        \e[?1034hrunning with -j 3
         scons: `.' is up to date.
       </screen>
 
 
       <screen>
         % <userinput>scons -Q -n</userinput>
-        Install file: "foo.in" as "/usr/bin/foo.in"
+        \e[?1034hInstall file: "foo.in" as "/usr/bin/foo.in"
       </screen>
 
       <para>
 
       <screen>
         % <userinput>scons -Q -n --prefix=/tmp/install</userinput>
-        Install file: "foo.in" as "/tmp/install/usr/bin/foo.in"
+        \e[?1034hInstall file: "foo.in" as "/tmp/install/usr/bin/foo.in"
       </screen>
 
     </section>
 
     <screen>
        % <userinput>scons -Q debug=0</userinput>
-       cc -o prog.o -c prog.c
+       \e[?1034hcc -o prog.o -c prog.c
        cc -o prog prog.o
        % <userinput>scons -Q debug=0</userinput>
-       scons: `.' is up to date.
+       \e[?1034hscons: `.' is up to date.
        % <userinput>scons -Q debug=1</userinput>
-       cc -o prog.o -c -g prog.c
-       cc -o prog prog.o
+       \e[?1034hscons: `.' is up to date.
        % <userinput>scons -Q debug=1</userinput>
-       scons: `.' is up to date.
+       \e[?1034hscons: `.' is up to date.
     </screen>
 
     <para>
 
     <screen>
        % <userinput>scons -Q define=FOO</userinput>
-       cc -o prog.o -c -DFOO prog.c
+       \e[?1034hcc -o prog.o -c -DFOO prog.c
        % <userinput>scons -Q define=FOO define=BAR</userinput>
-       cc -o prog.o -c -DFOO -DBAR prog.c
+       \e[?1034hscons: `.' is up to date.
     </screen>
 
     <para>
 
       <screen>
         % <userinput>scons -Q RELEASE=1</userinput>
-        cc -o bar.o -c -DRELEASE_BUILD=1 bar.c
+        \e[?1034hcc -o bar.o -c -DRELEASE_BUILD=1 bar.c
         cc -o foo.o -c -DRELEASE_BUILD=1 foo.c
         cc -o foo foo.o bar.o
       </screen>
 
       <screen>
         % <userinput>scons -Q -h</userinput>
-        
+        \e[?1034h
         RELEASE: Set to 1 to build for release
             default: 0
             actual: 0
 
       <screen>
         % <userinput>scons -Q</userinput>
-        cc -o bar.o -c -DRELEASE_BUILD=1 bar.c
+        \e[?1034hcc -o bar.o -c -DRELEASE_BUILD=1 bar.c
         cc -o foo.o -c -DRELEASE_BUILD=1 foo.c
         cc -o foo foo.o bar.o
       </screen>
 
       <screen>
         % <userinput>scons -Q</userinput>
-        cc -o bar.o -c -DRELEASE_BUILD=0 bar.c
+        \e[?1034hcc -o bar.o -c -DRELEASE_BUILD=0 bar.c
         cc -o foo.o -c -DRELEASE_BUILD=0 foo.c
         cc -o foo foo.o bar.o
       </screen>
 
         <screen>
           % <userinput>scons -Q RELEASE=yes foo.o</userinput>
-          cc -o foo.o -c -DRELEASE_BUILD=True foo.c
+          \e[?1034hcc -o foo.o -c -DRELEASE_BUILD=True foo.c
         </screen>
 
         <screen>
           % <userinput>scons -Q RELEASE=t foo.o</userinput>
-          cc -o foo.o -c -DRELEASE_BUILD=True foo.c
+          \e[?1034hcc -o foo.o -c -DRELEASE_BUILD=True foo.c
         </screen>
 
         <para>
 
         <screen>
           % <userinput>scons -Q RELEASE=no foo.o</userinput>
-          cc -o foo.o -c -DRELEASE_BUILD=False foo.c
+          \e[?1034hcc -o foo.o -c -DRELEASE_BUILD=False foo.c
         </screen>
 
         <screen>
           % <userinput>scons -Q RELEASE=f foo.o</userinput>
-          cc -o foo.o -c -DRELEASE_BUILD=False foo.c
+          \e[?1034hcc -o foo.o -c -DRELEASE_BUILD=False foo.c
         </screen>
 
         <para>
           
           scons: *** Error converting option: RELEASE
           Invalid value for boolean option: bad_value
-          File "/home/my/project/SConstruct", line 4, in &lt;module&gt;
+          File "p:\cyghome\bdeegan\scons\trunk\bootstrap\src\engine\SCons\Variables\__init__.py", line 214, in Update
+          \e[?1034h
         </screen>
 
       </section>
 
         <screen>
           % <userinput>scons -Q COLOR=red foo.o</userinput>
-          cc -o foo.o -c -DCOLOR="red" foo.c
+          \e[?1034hcc -o foo.o -c -DCOLOR="red" foo.c
           % <userinput>scons -Q COLOR=blue foo.o</userinput>
-          cc -o foo.o -c -DCOLOR="blue" foo.c
+          \e[?1034hscons: `foo.o' is up to date.
           % <userinput>scons -Q COLOR=green foo.o</userinput>
-          cc -o foo.o -c -DCOLOR="green" foo.c
+          \e[?1034hscons: `foo.o' is up to date.
         </screen>
 
         <para>
           % <userinput>scons -Q COLOR=magenta foo.o</userinput>
           
           scons: *** Invalid value for option COLOR: magenta
-          File "/home/my/project/SConstruct", line 5, in &lt;module&gt;
+          File "p:\cyghome\bdeegan\scons\trunk\bootstrap\src\engine\SCons\Variables\EnumVariable.py", line 51, in _validator
+          \e[?1034h
         </screen>
 
         <para>
 
         <screen>
           % <userinput>scons -Q COLOR=navy foo.o</userinput>
-          cc -o foo.o -c -DCOLOR="blue" foo.c
+          \e[?1034hcc -o foo.o -c -DCOLOR="blue" foo.c
         </screen>
 
         <para>
           % <userinput>scons -Q COLOR=Red foo.o</userinput>
           
           scons: *** Invalid value for option COLOR: Red
-          File "/home/my/project/SConstruct", line 5, in &lt;module&gt;
+          File "p:\cyghome\bdeegan\scons\trunk\bootstrap\src\engine\SCons\Variables\EnumVariable.py", line 51, in _validator
+          \e[?1034h
           % <userinput>scons -Q COLOR=BLUE foo.o</userinput>
           
           scons: *** Invalid value for option COLOR: BLUE
-          File "/home/my/project/SConstruct", line 5, in &lt;module&gt;
+          File "p:\cyghome\bdeegan\scons\trunk\bootstrap\src\engine\SCons\Variables\EnumVariable.py", line 51, in _validator
+          \e[?1034h
           % <userinput>scons -Q COLOR=nAvY foo.o</userinput>
           
           scons: *** Invalid value for option COLOR: nAvY
-          File "/home/my/project/SConstruct", line 5, in &lt;module&gt;
+          File "p:\cyghome\bdeegan\scons\trunk\bootstrap\src\engine\SCons\Variables\EnumVariable.py", line 51, in _validator
+          \e[?1034h
         </screen>
 
         <para>
 
         <screen>
           % <userinput>scons -Q COLOR=Red foo.o</userinput>
-          cc -o foo.o -c -DCOLOR="Red" foo.c
+          \e[?1034hcc -o foo.o -c -DCOLOR="Red" foo.c
           % <userinput>scons -Q COLOR=BLUE foo.o</userinput>
-          cc -o foo.o -c -DCOLOR="BLUE" foo.c
+          \e[?1034hscons: `foo.o' is up to date.
           % <userinput>scons -Q COLOR=nAvY foo.o</userinput>
-          cc -o foo.o -c -DCOLOR="blue" foo.c
+          \e[?1034hscons: `foo.o' is up to date.
           % <userinput>scons -Q COLOR=green foo.o</userinput>
-          cc -o foo.o -c -DCOLOR="green" foo.c
+          \e[?1034hscons: `foo.o' is up to date.
         </screen>
 
         <para>
 
         <screen>
           % <userinput>scons -Q COLOR=Red foo.o</userinput>
-          cc -o foo.o -c -DCOLOR="red" foo.c
+          \e[?1034hcc -o foo.o -c -DCOLOR="red" foo.c
           % <userinput>scons -Q COLOR=nAvY foo.o</userinput>
-          cc -o foo.o -c -DCOLOR="blue" foo.c
+          \e[?1034hscons: `foo.o' is up to date.
           % <userinput>scons -Q COLOR=GREEN foo.o</userinput>
-          cc -o foo.o -c -DCOLOR="green" foo.c
+          \e[?1034hscons: `foo.o' is up to date.
         </screen>
 
       </section>
 
         <screen>
           % <userinput>scons -Q COLORS=red,blue foo.o</userinput>
-          cc -o foo.o -c -DCOLORS="red blue" foo.c
+          \e[?1034hcc -o foo.o -c -DCOLORS="red blue" foo.c
           % <userinput>scons -Q COLORS=blue,green,red foo.o</userinput>
-          cc -o foo.o -c -DCOLORS="blue green red" foo.c
+          \e[?1034hscons: `foo.o' is up to date.
         </screen>
 
         <para>
 
         <screen>
           % <userinput>scons -Q COLORS=all foo.o</userinput>
-          cc -o foo.o -c -DCOLORS="red green blue" foo.c
+          \e[?1034hcc -o foo.o -c -DCOLORS="red green blue" foo.c
           % <userinput>scons -Q COLORS=none foo.o</userinput>
-          cc -o foo.o -c -DCOLORS="" foo.c
+          \e[?1034hscons: `foo.o' is up to date.
         </screen>
 
         <para>
           
           scons: *** Error converting option: COLORS
           Invalid value(s) for option: magenta
-          File "/home/my/project/SConstruct", line 5, in &lt;module&gt;
+          File "p:\cyghome\bdeegan\scons\trunk\bootstrap\src\engine\SCons\Variables\__init__.py", line 214, in Update
+          \e[?1034h
         </screen>
 
       </section>
 
         <screen>
           % <userinput>scons -Q foo.o</userinput>
-          cc -o foo.o -c -DCONFIG_FILE="/etc/my_config" foo.c
+          \e[?1034hcc -o foo.o -c -DCONFIG_FILE="/etc/my_config" foo.c
           % <userinput>scons -Q CONFIG=/usr/local/etc/other_config foo.o</userinput>
-          scons: `foo.o' is up to date.
+          \e[?1034hscons: `foo.o' is up to date.
         </screen>
 
         <para>
           % <userinput>scons -Q CONFIG=/does/not/exist foo.o</userinput>
           
           scons: *** Path for option CONFIG does not exist: /does/not/exist
-          File "/home/my/project/SConstruct", line 6, in &lt;module&gt;
+          File "p:\cyghome\bdeegan\scons\trunk\bootstrap\src\engine\SCons\Variables\PathVariable.py", line 117, in PathExists
+          \e[?1034h
         </screen>
 
         <para>
 
         <screen>
           % <userinput>scons -Q foo.o</userinput>
-          cc -o foo.o -c -DPACKAGE="/opt/location" foo.c
+          \e[?1034hcc -o foo.o -c -DPACKAGE="/opt/location" foo.c
           % <userinput>scons -Q PACKAGE=/usr/local/location foo.o</userinput>
-          cc -o foo.o -c -DPACKAGE="/usr/local/location" foo.c
+          \e[?1034hscons: `foo.o' is up to date.
           % <userinput>scons -Q PACKAGE=yes foo.o</userinput>
-          cc -o foo.o -c -DPACKAGE="True" foo.c
+          \e[?1034hscons: `foo.o' is up to date.
           % <userinput>scons -Q PACKAGE=no foo.o</userinput>
-          cc -o foo.o -c -DPACKAGE="False" foo.c
+          \e[?1034hscons: `foo.o' is up to date.
         </screen>
 
       </section>
 
       <screen>
         % <userinput>scons -Q NOT_KNOWN=foo</userinput>
-        Unknown variables: ['NOT_KNOWN']
+        \e[?1034hUnknown variables: ['NOT_KNOWN']
       </screen>
 
       <para>
 
       <screen>
         % <userinput>scons -Q</userinput>
-        cc -o foo.o -c foo.c
+        \e[?1034hcc -o foo.o -c foo.c
         cc -o foo foo.o
         % <userinput>scons -Q bar</userinput>
-        Don't forget to copy `bar' to the archive!
+        \e[?1034hDon't forget to copy `bar' to the archive!
         cc -o bar.o -c bar.c
         cc -o bar bar.o
       </screen>
 
       <screen>
          % <userinput>scons -Q</userinput>
-         cc -o hello.o -c hello.c
+         \e[?1034hcc -o hello.o -c hello.c
          cc -o hello hello.o
          % <userinput>scons -Q</userinput>
-         scons: `hello' is up to date.
+         \e[?1034hscons: `hello' is up to date.
          % <userinput>scons -Q goodbye</userinput>
-         cc -o goodbye.o -c goodbye.c
+         \e[?1034hcc -o goodbye.o -c goodbye.c
          cc -o goodbye goodbye.o
       </screen>
 
 
       <screen>
          % <userinput>scons -Q .</userinput>
-         cc -o goodbye.o -c goodbye.c
+         \e[?1034hcc -o goodbye.o -c goodbye.c
          cc -o goodbye goodbye.o
          cc -o hello.o -c hello.c
          cc -o hello hello.o
 
       <screen>
          % <userinput>scons -Q</userinput>
-         cc -o prog1.o -c prog1.c
+         \e[?1034hcc -o prog1.o -c prog1.c
          cc -o prog1 prog1.o
          cc -o prog3.o -c prog3.c
          cc -o prog3 prog3.o
          % <userinput>scons -Q .</userinput>
-         cc -o prog2.o -c prog2.c
+         \e[?1034hcc -o prog2.o -c prog2.c
          cc -o prog2 prog2.o
       </screen>
 
 
       <screen>
          % <userinput>scons -Q</userinput>
-         cc -o prog1/foo.o -c prog1/foo.c
+         \e[?1034hcc -o prog1/foo.o -c prog1/foo.c
          cc -o prog1/main.o -c prog1/main.c
          cc -o prog1/main prog1/main.o prog1/foo.o
          % <userinput>scons -Q</userinput>
-         scons: `prog1' is up to date.
+         \e[?1034hscons: `prog1' is up to date.
          % <userinput>scons -Q .</userinput>
-         cc -o prog2/bar.o -c prog2/bar.c
+         \e[?1034hcc -o prog2/bar.o -c prog2/bar.c
          cc -o prog2/main.o -c prog2/main.c
          cc -o prog2/main prog2/main.o prog2/bar.o
       </screen>
       <screen>
          % <userinput>scons -Q</userinput>
          scons: *** No targets specified and no Default() targets found.  Stop.
+         \e[?1034h
          % <userinput>scons -Q .</userinput>
-         cc -o prog1.o -c prog1.c
+         \e[?1034hcc -o prog1.o -c prog1.c
          cc -o prog1 prog1.o
          cc -o prog2.o -c prog2.c
          cc -o prog2 prog2.o
 
         <screen>
            % <userinput>scons</userinput>
-           scons: Reading SConscript files ...
+           \e[?1034hscons: Reading SConscript files ...
            DEFAULT_TARGETS is ['prog1']
            scons: done reading SConscript files.
            scons: Building targets ...
 
         <screen>
            % <userinput>scons</userinput>
-           scons: Reading SConscript files ...
+           \e[?1034hscons: Reading SConscript files ...
            DEFAULT_TARGETS is now ['prog1']
            DEFAULT_TARGETS is now ['prog1', 'prog2']
            scons: done reading SConscript files.
 
       <screen>
         % <userinput>scons -Q</userinput>
-        BUILD_TARGETS is ['prog1']
+        \e[?1034hBUILD_TARGETS is ['prog1']
         cc -o prog1.o -c prog1.c
         cc -o prog1 prog1.o
         % <userinput>scons -Q prog2</userinput>
-        BUILD_TARGETS is ['prog2']
+        \e[?1034hBUILD_TARGETS is ['prog2']
         cc -o prog2.o -c prog2.c
         cc -o prog2 prog2.o
         % <userinput>scons -Q -c .</userinput>
-        BUILD_TARGETS is ['.']
+        \e[?1034hBUILD_TARGETS is ['.']
         Removed prog1.o
         Removed prog1
         Removed prog2.o
index c9207d56e499bf11d84adf48e9b210b096db92f1..873c5f177458b0c1002eafde5b9c62fb476cd404 100644 (file)
          % <userinput>touch -t 198901010000 hello.c</userinput>
          % <userinput>scons -Q hello.o</userinput>
          cc -o hello.o -c hello.c
+         cc -o hello hello.o
       </screen>
 
       <para>
 
     <screen>
        C:\><userinput>scons -Q hello.exe</userinput>
+       
+       scons: warning: No installed VCs
+       File "&lt;stdin&gt;", line 67, in __call__
+       
+       scons: warning: No version of Visual Studio compiler found - C/C++ compilers most likely not set correctly
+       File "&lt;stdin&gt;", line 67, in __call__
        cl /Fohello.obj /c hello.c /nologo /Iinclude /I\home\project\inc
        link /nologo /OUT:hello.exe hello.obj
     </screen>
     <screen>
       % <userinput>scons -Q hello</userinput>
       cc -o version.o -c version.c
-      cc -o hello.o -c hello.c
-      cc -o hello version.o hello.o
-      % <userinput>sleep 1</userinput>
-      % <userinput>scons -Q hello</userinput>
       cc -o version.o -c version.c
+      cc -o hello.o -c hello.c
       scons: `hello' is up to date.
       % <userinput>sleep 1</userinput>
       % <userinput>edit hello.c</userinput>
           [CHANGE THE CONTENTS OF hello.c]
       % <userinput>scons -Q hello</userinput>
       cc -o version.o -c version.c
+      cc -o version.o -c version.c
       cc -o hello.o -c hello.c
       cc -o hello version.o hello.o
       % <userinput>sleep 1</userinput>
index 0746793bbdc2f7749a6d3873791d7dc4df3f18e7..f81dac7b57d5f413165a3f2e60fb490f3f0eacd4 100644 (file)
@@ -656,6 +656,18 @@ environment, of directory names, suffixes, etc.
 
       <screen>
          C:\><userinput>scons -Q</userinput>
+         
+         scons: warning: No installed VCs
+         File "&lt;stdin&gt;", line 67, in __call__
+         
+         scons: warning: No version of Visual Studio compiler found - C/C++ compilers most likely not set correctly
+         File "&lt;stdin&gt;", line 67, in __call__
+         
+         scons: warning: No installed VCs
+         File "&lt;stdin&gt;", line 67, in __call__
+         
+         scons: warning: No version of Visual Studio compiler found - C/C++ compilers most likely not set correctly
+         File "&lt;stdin&gt;", line 67, in __call__
          key = OBJSUFFIX, value = .obj
          key = LIBSUFFIX, value = .lib
          key = PROGSUFFIX, value = .exe
@@ -951,8 +963,15 @@ environment, of directory names, suffixes, etc.
       <screen>
          % <userinput>scons -Q</userinput>
          
-         scons: *** Two environments with different actions were specified for the same target: foo.o
-         File "/home/my/project/SConstruct", line 6, in &lt;module&gt;
+         scons: warning: Two different environments were specified for target foo.o,
+               but they appear to have the same action: CCCom(target, source, env)
+         File "/home/my/project/SConstruct", line 6, in ?
+         
+         scons: warning: Two different environments were specified for target foo,
+               but they appear to have the same action: Cat(target, source, env)
+         File "/home/my/project/SConstruct", line 6, in ?
+         cc -o foo.o -c -g foo.c
+         cc -o foo foo.o
       </screen>
 
       <para>
index 0bc382ef84dedbfa707b97308becdfbcfd93de5b..e7db86dab50fb9b25719db3b6a2a9b283f9734ea 100644 (file)
 
     <screen>
        C:\><userinput>scons -Q</userinput>
+       
+       scons: warning: No installed VCs
+       File "&lt;stdin&gt;", line 67, in __call__
+       
+       scons: warning: No version of Visual Studio compiler found - C/C++ compilers most likely not set correctly
+       File "&lt;stdin&gt;", line 67, in __call__
        cl /Fohello.obj /c hello.c /nologo
        link /nologo /OUT:new_hello.exe hello.obj
     </screen>
 
     <screen>
        C:\><userinput>scons -Q</userinput>
+       
+       scons: warning: No installed VCs
+       File "&lt;stdin&gt;", line 67, in __call__
+       
+       scons: warning: No version of Visual Studio compiler found - C/C++ compilers most likely not set correctly
+       File "&lt;stdin&gt;", line 67, in __call__
        cl /Fofile1.obj /c file1.c /nologo
        cl /Fofile2.obj /c file2.c /nologo
        cl /Foprog.obj /c prog.c /nologo
index 1fa06af9c9e4dcf9d91c708e72d1321755e1a8f1..45ad16a7b685b34e3f8e4fb3bd255eedbc44844e 100644 (file)
 
     <screen>
       C:\><userinput>scons -Q</userinput>
+      
+      scons: warning: No installed VCs
+      File "&lt;stdin&gt;", line 67, in __call__
+      
+      scons: warning: No version of Visual Studio compiler found - C/C++ compilers most likely not set correctly
+      File "&lt;stdin&gt;", line 67, in __call__
       cl /Fof1.obj /c f1.c /nologo
       cl /Fof2.obj /c f2.c /nologo
       cl /Fof3.obj /c f3.c /nologo
 
       <screen>
         C:\><userinput>scons -Q</userinput>
+        
+        scons: warning: No installed VCs
+        File "&lt;stdin&gt;", line 67, in __call__
+        
+        scons: warning: No version of Visual Studio compiler found - C/C++ compilers most likely not set correctly
+        File "&lt;stdin&gt;", line 67, in __call__
         cl /Fof1.obj /c f1.c /nologo
         cl /Fof2.obj /c f2.c /nologo
         cl /Fof3.obj /c f3.c /nologo
 
     <screen>
       C:\><userinput>scons -Q</userinput>
+      
+      scons: warning: No installed VCs
+      File "&lt;stdin&gt;", line 67, in __call__
+      
+      scons: warning: No version of Visual Studio compiler found - C/C++ compilers most likely not set correctly
+      File "&lt;stdin&gt;", line 67, in __call__
       cl /Fof1.obj /c f1.c /nologo
       cl /Fof2.obj /c f2.c /nologo
       cl /Fof3.obj /c f3.c /nologo
 
     <screen>
       C:\><userinput>scons -Q</userinput>
+      
+      scons: warning: No installed VCs
+      File "&lt;stdin&gt;", line 67, in __call__
+      
+      scons: warning: No version of Visual Studio compiler found - C/C++ compilers most likely not set correctly
+      File "&lt;stdin&gt;", line 67, in __call__
       cl /Foprog.obj /c prog.c /nologo
       link /nologo /OUT:prog.exe /LIBPATH:\usr\lib /LIBPATH:\usr\local\lib m.lib prog.obj
     </screen>
index 8f3436a46c2e74303fb18089f6162ca309f6a8d3..394ec37202f1554a8ae2b9fa145b0276a9a1c7ad 100644 (file)
 
     <screen>
        C:\><userinput>scons -Q</userinput>
+       
+       scons: warning: No installed VCs
+       File "&lt;stdin&gt;", line 67, in __call__
+       
+       scons: warning: No version of Visual Studio compiler found - C/C++ compilers most likely not set correctly
+       File "&lt;stdin&gt;", line 67, in __call__
        cl /Fogoodbye.obj /c goodbye.c -DGOODBYE
        cl /Fohello.obj /c hello.c -DHELLO
        link /nologo /OUT:hello.exe hello.obj goodbye.obj
 
     <screen>
       C:\><userinput>scons -Q</userinput>
+      
+      scons: warning: No installed VCs
+      File "&lt;stdin&gt;", line 67, in __call__
+      
+      scons: warning: No version of Visual Studio compiler found - C/C++ compilers most likely not set correctly
+      File "&lt;stdin&gt;", line 67, in __call__
       The object file is: hello.obj
       The program file is: hello.exe
       cl /Fohello.obj /c hello.c /nologo
index ff39fca0008b6de8a56b8113f07acbb3b48a22be..8a9b67e48aa79e92e210e7eab74ae722877c7f91 100644 (file)
     <screen>
        C:\><userinput>scons -h</userinput>
        scons: Reading SConscript files ...
+       
+       scons: warning: No installed VCs
+       File "&lt;stdin&gt;", line 67, in __call__
+       
+       scons: warning: No version of Visual Studio compiler found - C/C++ compilers most likely not set correctly
+       File "&lt;stdin&gt;", line 67, in __call__
+       
+       scons: warning: No installed VCs
+       File "&lt;stdin&gt;", line 67, in __call__
+       
+       scons: warning: No version of Visual Studio compiler found - C/C++ compilers most likely not set correctly
+       File "&lt;stdin&gt;", line 67, in __call__
        scons: done reading SConscript files.
        
        Type: 'scons program' to build the production program.
index 3613d77c0a630329803bbacfe01b79453d2ba9b6..4adf97d2e015e24f73d6fb3a8b409d6c54058178 100644 (file)
 
  <screen>
     % <userinput>scons -Q</userinput>
-    ['/lib/compat', '/usr/X11/include']
-    scons: `.' is up to date.
+    Package x11 was not found in the pkg-config search path.
+    Perhaps you should add the directory containing `x11.pc'
+    to the PKG_CONFIG_PATH environment variable
+    No package 'x11' found
+    OSError: 'pkg-config x11 --cflags --libs' exited 1:
+      File "/home/my/project/SConstruct", line 3:
+        env.ParseConfig("pkg-config x11 --cflags --libs")
+      File "bootstrap/src/engine/SCons/Environment.py", line 1474:
+        None
+      File "bootstrap/src/engine/SCons/Environment.py", line 593:
+        None
  </screen>
 
  <para>
 
  <screen>
     % <userinput>scons -Q</userinput>
-    ['/usr/X11/include']
-    scons: `.' is up to date.
+    Package x11 was not found in the pkg-config search path.
+    Perhaps you should add the directory containing `x11.pc'
+    to the PKG_CONFIG_PATH environment variable
+    No package 'x11' found
+    OSError: 'pkg-config x11 --cflags --libs' exited 1:
+      File "/home/my/project/SConstruct", line 2:
+        env.ParseConfig("pkg-config x11 --cflags --libs")
+      File "bootstrap/src/engine/SCons/Environment.py", line 1474:
+        None
+      File "bootstrap/src/engine/SCons/Environment.py", line 593:
+        None
  </screen>
index 632077e5f141e4febd9621a23291557219b88c44..1a169ac2d910e2aea54ff7f3e50ad5de7a24fd85 100644 (file)
 
  <screen>
     C:\><userinput>scons -Q</userinput>
+    
+    scons: warning: No installed VCs
+    File "&lt;stdin&gt;", line 67, in __call__
+    
+    scons: warning: No version of Visual Studio compiler found - C/C++ compilers most likely not set correctly
+    File "&lt;stdin&gt;", line 67, in __call__
+    
+    scons: warning: No installed VCs
+    File "&lt;stdin&gt;", line 67, in __call__
+    
+    scons: warning: No version of Visual Studio compiler found - C/C++ compilers most likely not set correctly
+    File "&lt;stdin&gt;", line 67, in __call__
     CPPPATH ['/opt/include']
     LIBPATH ['/opt/lib']
     LIBS ['foo']
index 6bd70b0bc4bd4fdfe28544a1e3ae7878828856d5..308985462713f2e088821c4296eb8d29a02b8482 100644 (file)
    <screen>
       C:\><userinput>scons</userinput>
       scons: Reading SConscript files ...
+      
+      scons: warning: No installed VCs
+      File "&lt;stdin&gt;", line 67, in __call__
+      
+      scons: warning: No version of Visual Studio compiler found - C/C++ compilers most likely not set correctly
+      File "&lt;stdin&gt;", line 67, in __call__
       scons: done reading SConscript files.
       scons: Building targets ...
       cl /Fohello.obj /c hello.c /nologo
    <screen>
       C:\><userinput>scons</userinput>
       scons: Reading SConscript files ...
+      
+      scons: warning: No installed VCs
+      File "&lt;stdin&gt;", line 67, in __call__
+      
+      scons: warning: No version of Visual Studio compiler found - C/C++ compilers most likely not set correctly
+      File "&lt;stdin&gt;", line 67, in __call__
       scons: done reading SConscript files.
       scons: Building targets ...
       cl /Fohello.obj /c hello.c /nologo
    <screen>
       C:\><userinput>scons</userinput>
       scons: Reading SConscript files ...
+      
+      scons: warning: No installed VCs
+      File "&lt;stdin&gt;", line 67, in __call__
+      
+      scons: warning: No version of Visual Studio compiler found - C/C++ compilers most likely not set correctly
+      File "&lt;stdin&gt;", line 67, in __call__
       scons: done reading SConscript files.
       scons: Building targets ...
       cl /Fohello.obj /c hello.c /nologo
       scons: done building targets.
       C:\><userinput>scons -c</userinput>
       scons: Reading SConscript files ...
+      
+      scons: warning: No installed VCs
+      File "&lt;stdin&gt;", line 67, in __call__
+      
+      scons: warning: No version of Visual Studio compiler found - C/C++ compilers most likely not set correctly
+      File "&lt;stdin&gt;", line 67, in __call__
       scons: done reading SConscript files.
       scons: Cleaning targets ...
       Removed hello.obj
    <screen>
       C:\><userinput>scons</userinput>
       scons: Reading SConscript files ...
+      
+      scons: warning: No installed VCs
+      File "&lt;stdin&gt;", line 67, in __call__
+      
+      scons: warning: No version of Visual Studio compiler found - C/C++ compilers most likely not set correctly
+      File "&lt;stdin&gt;", line 67, in __call__
       scons: done reading SConscript files.
       scons: Building targets ...
       cl /Fohello.obj /c hello.c /nologo
 
    <screen>
       C:\><userinput>scons -Q</userinput>
+      
+      scons: warning: No installed VCs
+      File "&lt;stdin&gt;", line 67, in __call__
+      
+      scons: warning: No version of Visual Studio compiler found - C/C++ compilers most likely not set correctly
+      File "&lt;stdin&gt;", line 67, in __call__
       cl /Fohello.obj /c hello.c /nologo
       link /nologo /OUT:hello.exe hello.obj
    </screen>
index 857fcc3eb4960f78c85cfb8d2094fc3a079adb5c..2ac91ec2b2f284958f99fa912fc12a628efd7b4f 100644 (file)
     <screen>
       C:\><userinput>scons</userinput>
       scons: Reading SConscript files ...
+      
+      scons: warning: No installed VCs
+      File "&lt;stdin&gt;", line 67, in __call__
+      
+      scons: warning: No version of Visual Studio compiler found - C/C++ compilers most likely not set correctly
+      File "&lt;stdin&gt;", line 67, in __call__
+      
+      scons: warning: No installed VCs
+      File "&lt;stdin&gt;", line 67, in __call__
+      
+      scons: warning: No version of Visual Studio compiler found - C/C++ compilers most likely not set correctly
+      File "&lt;stdin&gt;", line 67, in __call__
       { 'BUILDERS': {'_InternalInstall': &lt;function InstallBuilderWrapper at 0x700000&gt;, 'Object': &lt;SCons.Builder.CompositeBuilder instance at 0x700000&gt;, 'PCH': &lt;SCons.Builder.BuilderBase instance at 0x700000&gt;, 'RES': &lt;SCons.Builder.BuilderBase instance at 0x700000&gt;, 'SharedObject': &lt;SCons.Builder.CompositeBuilder instance at 0x700000&gt;, 'StaticObject': &lt;SCons.Builder.CompositeBuilder instance at 0x700000&gt;, '_InternalInstallAs': &lt;function InstallAsBuilderWrapper at 0x700000&gt;},
         'CC': 'cl',
         'CCCOM': &lt;SCons.Action.FunctionAction instance at 0x700000&gt;,
         'DSUFFIXES': ['.d'],
         'Dir': &lt;SCons.Defaults.Variable_Method_Caller instance at 0x700000&gt;,
         'Dirs': &lt;SCons.Defaults.Variable_Method_Caller instance at 0x700000&gt;,
-        'ENV': { 'PATH': 'C:\\WINDOWS\\System32',
+        'ENV': { 'PATH': 'C:/WINDOWS\\System32',
                  'PATHEXT': '.COM;.EXE;.BAT;.CMD',
                  'SystemRoot': 'C:\\WINDOWS'},
         'ESCAPE': &lt;function escape at 0x700000&gt;,
     <screen>
       C:\><userinput>scons</userinput>
       scons: Reading SConscript files ...
-      { 'PATH': 'C:\\WINDOWS\\System32',
+      scons: warning: No installed VCs
+      File "&lt;stdin&gt;", line 67, in __call__
+      
+      scons: warning: No version of Visual Studio compiler found - C/C++ compilers most likely not set correctly
+      File "&lt;stdin&gt;", line 67, in __call__
+      
+      scons: warning: No installed VCs
+      File "&lt;stdin&gt;", line 67, in __call__
+      
+      scons: warning: No version of Visual Studio compiler found - C/C++ compilers most likely not set correctly
+      File "&lt;stdin&gt;", line 67, in __call__
+      { 'PATH': 'C:/WINDOWS\\System32',
         'PATHEXT': '.COM;.EXE;.BAT;.CMD',
         'SystemRoot': 'C:\\WINDOWS'}
       scons: done reading SConscript files.
         File "bootstrap/src/engine/SCons/Job.py", line 197, in start
           task.prepare()
         File "bootstrap/src/engine/SCons/Script/Main.py", line 167, in prepare
-          return SCons.Taskmaster.OutOfDateTask.prepare(self)
         File "bootstrap/src/engine/SCons/Taskmaster.py", line 190, in prepare
-          executor.prepare()
         File "bootstrap/src/engine/SCons/Executor.py", line 397, in prepare
-          raise SCons.Errors.StopError, msg % (s, self.batches[0].targets[0])
     </screen>
 
     <para>
index 3ae3e4a8042f5d7537ae2ee64ba502a792e17eab..e60dd8c2d846918cb4c90096b358d962032f933b 100644 (file)
@@ -108,6 +108,18 @@ is pretty smart about rebuilding things when you change options.
 
   <screen>
     C:\><userinput>scons -Q OS=windows</userinput>
+    
+    scons: warning: No installed VCs
+    File "&lt;stdin&gt;", line 67, in __call__
+    
+    scons: warning: No version of Visual Studio compiler found - C/C++ compilers most likely not set correctly
+    File "&lt;stdin&gt;", line 67, in __call__
+    
+    scons: warning: No installed VCs
+    File "&lt;stdin&gt;", line 67, in __call__
+    
+    scons: warning: No version of Visual Studio compiler found - C/C++ compilers most likely not set correctly
+    File "&lt;stdin&gt;", line 67, in __call__
     Install file: "build/windows/world/world.h" as "export/windows/include/world.h"
     cl /Fobuild\windows\hello\hello.obj /c build\windows\hello\hello.c /nologo /Iexport\windows\include
     cl /Fobuild\windows\world\world.obj /c build\windows\world\world.c /nologo /Iexport\windows\include
index b9c9fc87ed5d262c5bc21c0555db02f8a2bfc438..843fab28be356acc05db14bc3070052776c3eca0 100644 (file)
@@ -20,7 +20,7 @@ more effectively, please sign up for the scons-users mailing list at:
 
 
 
-RELEASE 1.2.0.d20090223 - Mon, 23 Feb 2009 08:41:06 -0800
+RELEASE 1.2.0.d20100117 - Sun, 17 Jan 2010 14:26:59 -0800
 
   Please consult the CHANGES.txt file for a list of specific changes
   since last release.
@@ -34,7 +34,7 @@ RELEASE 1.2.0.d20090223 - Mon, 23 Feb 2009 08:41:06 -0800
         features will still be supported in 1.3.0 but will generate
         mandatory, non-disableable warnings:
 
-            --  Support for Python versions 1.5, 1.6, 2.0, 2.1, 2.2 and 2.3.
+            --  Support for Python versions 1.5, 1.6, 2.0, 2.1, 2.2, and 2.3.
             --  The overrides= keyword argument to the Builder() call.
             --  The scanner= keyword argument to the Builder() call.
             --  The BuildDir() function and env.BuildDir() method.
@@ -80,6 +80,13 @@ RELEASE 1.2.0.d20090223 - Mon, 23 Feb 2009 08:41:06 -0800
        projects from your SConstructs, MSVS_VERSION must be set to
        the same version as MSVC_VERSION.
 
+        Support for HOST_OS,HOST_ARCH,TARGET_OS, TARGET_ARCH has been
+        added to allow specifying different target arch than the host 
+        system. This is only supported for Visual Studio/Visual C++
+        at this time.
+
+    --  Support for Latex glosseries and acronyms has been added
+
     --  VISUAL C/C++ PRECOMPILED HEADERS WILL BE REBUILT
 
         Precompiled header files built with Visual C/C++ will be