From 7c6b954c00c2a2eed2e975ec797216c515cd249d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Sat, 26 Jul 2014 11:45:47 +0200 Subject: Imported Upstream version 2.3.2 --- debian/patches/java_ignore_nonexistent_files.patch | 21 - debian/patches/manpages.patch | 17138 ------------------- debian/patches/parallel_build.patch | 38 - debian/patches/remove_stale_files.patch | 31 - debian/patches/series | 4 - 5 files changed, 17232 deletions(-) delete mode 100644 debian/patches/java_ignore_nonexistent_files.patch delete mode 100644 debian/patches/manpages.patch delete mode 100644 debian/patches/parallel_build.patch delete mode 100644 debian/patches/remove_stale_files.patch delete mode 100644 debian/patches/series (limited to 'debian/patches') diff --git a/debian/patches/java_ignore_nonexistent_files.patch b/debian/patches/java_ignore_nonexistent_files.patch deleted file mode 100644 index 5ba4713..0000000 --- a/debian/patches/java_ignore_nonexistent_files.patch +++ /dev/null @@ -1,21 +0,0 @@ -Description: Ignore nonexistent files before trying to use them in Java() -Origin: Debian -Bug-Debian: http://bugs.debian.org/338232 -Forwarded: http://scons.tigris.org/issues/show_bug.cgi?id=2207 - -Index: scons/engine/SCons/Tool/JavaCommon.py -=================================================================== ---- scons.orig/engine/SCons/Tool/JavaCommon.py 2013-03-23 03:19:25.394200546 +0100 -+++ scons/engine/SCons/Tool/JavaCommon.py 2013-03-23 03:28:01.158216345 +0100 -@@ -282,7 +282,10 @@ - return self.outer_state - - def parse_java_file(fn, version=default_java_version): -- return parse_java(open(fn, 'r').read(), version) -+ try: -+ return parse_java(open(fn, 'r').read(), version) -+ except IOError: -+ return (None, []) - - def parse_java(contents, version=default_java_version, trace=None): - """Parse a .java file and return a double of package directory, diff --git a/debian/patches/manpages.patch b/debian/patches/manpages.patch deleted file mode 100644 index 38506ce..0000000 --- a/debian/patches/manpages.patch +++ /dev/null @@ -1,17138 +0,0 @@ -Description: Restore man pages from version 2.3.0 -Author: Luca Falavigna - -Index: scons/scons-time.1 -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ scons/scons-time.1 2014-04-26 12:21:47.051232252 +0200 -@@ -0,0 +1,1017 @@ -+.\" Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation -+.\" -+.\" 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. -+.\" -+.\" doc/man/scons-time.1 2013/03/03 09:48:35 garyo -+.\" -+.\" ES - Example Start - indents and turns off line fill -+.de ES -+.RS -+.nf -+.. -+.\" EE - Example End - ends indent and turns line fill back on -+.de EE -+.RE -+.fi -+.. -+'\"========================================================================== -+.de SF -+.B scons-time func -+[\fB-h\fR] -+[\fB--chdir=\fIDIR\fR] -+[\fB-f \fIFILE\fR] -+[\fB--fmt=\fIFORMAT\fR] -+[\fB--func=\fINAME\fR] -+[\fB-p \fISTRING\fR] -+[\fB-t \fINUMBER\fR] -+[\fB--title= TITLE\fR] -+[\fIARGUMENTS\fR] -+.. -+'\"-------------------------------------------------------------------------- -+.de SY -+.B scons-time mem -+[\fB-h\fR] -+[\fB--chdir=\fIDIR\fR] -+[\fB-f \fIFILE\fR] -+[\fB--fmt=\fIFORMAT\fR] -+[\fB-p \fISTRING\fR] -+[\fB--stage=\fISTAGE\fR] -+[\fB-t \fINUMBER\fR] -+[\fB--title=\fITITLE\fR] -+[\fIARGUMENTS\fR] -+.. -+'\"-------------------------------------------------------------------------- -+.de SO -+.B scons-time obj -+[\fB-h\fR] -+[\fB--chdir=\fIDIR\fR] -+[\fB-f \fIFILE\fR] -+[\fB--fmt=\fIFORMAT\fR] -+[\fB-p \fISTRING\fR] -+[\fB--stage=\fISTAGE\fR] -+[\fB-t \fINUMBER\fR] -+[\fB--title=\fITITLE\fR] -+[\fIARGUMENTS\fR] -+.. -+'\"-------------------------------------------------------------------------- -+.de SR -+.B scons-time run -+[\fB-hnqv\fR] -+[\fB--aegis=\fIPROJECT\fR] -+[\fB-f \fIFILE\fR] -+[\fB--number=\fINUMBER\fR] -+[\fB--outdir=\fIOUTDIR\fR] -+[\fB-p \fISTRING\fR] -+[\fB--python=\fIPYTHON\fR] -+[\fB-s \fIDIR\fR] -+[\fB--scons=\fISCONS\fR] -+[\fB--svn=\fIURL\fR] -+[\fIARGUMENTS\fR] -+.. -+'\"-------------------------------------------------------------------------- -+.de ST -+.B scons-time time -+[\fB-h\fR] -+[\fB--chdir=\fIDIR\fR] -+[\fB-f \fIFILE\fR] -+[\fB--fmt=\fIFORMAT\fR] -+[\fB-p \fISTRING\fR] -+[\fB-t \fINUMBER\fR] -+[\fB--title=\fITITLE\fR] -+[\fB--which=\fIWHICH\fR] -+[\fIARGUMENTS\fR] -+.. -+.TH SCONS-TIME 1 "March 2013" -+.SH NAME -+scons-time \- generate and display SCons timing information -+'\"========================================================================== -+.SH SYNOPSIS -+.B scons-time -+.IR subcommand -+[ -+.IR options ... -+] -+[ -+.IR arguments ... -+] -+'\"-------------------------------------------------------------------------- -+.SS "Generating Timing Information" -+.SR -+'\"-------------------------------------------------------------------------- -+.SS "Extracting Function Timings" -+.SF -+'\"-------------------------------------------------------------------------- -+.SS "Extracting Memory Statistics" -+.SY -+'\"-------------------------------------------------------------------------- -+.SS "Extracting Object Counts" -+.SO -+'\"-------------------------------------------------------------------------- -+.SS "Extracting Execution Times" -+.ST -+'\"-------------------------------------------------------------------------- -+.SS "Help Text" -+.B scons-time help -+.I SUBCOMMAND -+[...] -+'\"========================================================================== -+.SH DESCRIPTION -+The -+.B scons-time -+command runs an SCons configuration -+through a standard set of profiled timings -+and can extract and graph information from the -+resulting profiles and log files of those timings. -+The action to be performed by the -+.B scons-time -+script is specified -+by a subcommand, the first argument on the command line. -+See the -+.B SUBCOMMANDS -+section below for information about the operation -+of specific subcommands. -+.P -+The basic way to use -+.B scons-time -+is to run the -+.B scons-time run -+subcommand -+(possibly multiple times) -+to generate profile and log file output, -+and then use one of the other -+subcommands to display the results -+captured in the profiles and log files -+for a particular kind of information: -+function timings -+(the -+.B scons-time func -+subcommand), -+total memory used -+(the -+.B scons-time mem -+subcommand), -+object counts -+(the -+.B scons-time obj -+subcommand) -+and overall execution time -+(the -+.B scons-time time -+subcommand). -+Options exist to place and find the -+profiles and log files in separate directories, -+to generate the output in a format suitable -+for graphing with the -+.BR gnuplot (1) -+program, -+and so on. -+.P -+There are two basic ways the -+.B scons-time run -+subcommand -+is intended to be used -+to gather timing statistics -+for a configuration. -+One is to use the -+.B --svn= -+option to test a configuration against -+a list of revisions from the SCons Subversion repository. -+This will generate a profile and timing log file -+for every revision listed with the -+.B --number= -+option, -+and can be used to look at the -+impact of committed changes to the -+SCons code base on a particular -+configuration over time. -+.P -+The other way is to profile incremental changes to a -+local SCons code base during a development cycle--that is, -+to look at the performance impact of changes -+you're making in the local tree. -+In this mode, -+you run the -+.B scons-time run -+subcommand -+.I without -+the -+.B --svn= -+option, -+in which case it simply looks in the profile/log file output directory -+(the current directory by default) -+and automatically figures out the -+.I next -+run number for the output profile and log file. -+Used in this way, -+the development cycle goes something like: -+make a change to SCons; -+run -+.B scons-time run -+to profile it against a specific configuration; -+make another change to SCons; -+run -+.B scons-time run -+again to profile it; -+etc. -+'\"========================================================================== -+.SH OPTIONS -+The -+.B scons-time -+command only supports a few global options: -+.TP -+-h, --help -+Displays the global help text and exits, -+identical to the -+.B scons-time help -+subcommand. -+.TP -+-V, --version -+Displays the -+.B scons-time -+version and exits. -+.P -+Most functionality is controlled by options -+to the individual subcommands. -+See the next section for information -+about individual subcommand options. -+'\"========================================================================== -+.SH SUBCOMMANDS -+The -+.B scons-time -+command supports the following -+individual subcommands. -+'\"-------------------------------------------------------------------------- -+.SS "The func Subcommand" -+.SF -+.P -+The -+.B scons-time func -+subcommand displays timing information -+for a specific Python function within SCons. -+By default, it extracts information about the -+.BR _main () -+function, -+which includes the Python profiler timing -+for all of SCons. -+.P -+The -+.B scons-time func -+subcommand extracts function timing information -+from all the specified file arguments, -+which should be Python profiler output files. -+(Normally, these would be -+.B *.prof -+files generated by the -+.B scons-time run -+subcommand, -+but they can actually be generated -+by any Python profiler invocation.) -+All file name arguments will be -+globbed for on-disk files. -+.P -+If no arguments are specified, -+then function timing information -+will be extracted from all -+.B *.prof -+files, -+or the subset of them -+with a prefix specified by the -+.B -p -+option. -+.P -+Options include: -+.TP -+-C DIRECTORY, --chdir=DIRECTORY -+Changes to the specified -+.I DIRECTORY -+before looking for the specified files -+(or files that match the specified patterns). -+.TP -+-f FILE, --file=FILE -+Reads configuration information from the specified -+.IR FILE . -+.TP -+-fmt=FORMAT, --format=FORMAT -+Reports the output in the specified -+.IR FORMAT . -+The formats currently supported are -+.B ascii -+(the default) -+and -+.BR gnuplot . -+.TP -+--func=NAME -+Extracts timings for the specified function -+.IR NAME . -+The default is to report cumulative timings for the -+.BR _main () -+function, -+which contains the entire SCons run. -+.TP -+-h, --help -+Displays help text for the -+.B scons-time func -+subcommand. -+.TP -+-p STRING, --prefix=STRING -+Specifies the prefix string for profiles -+from which to extract function timing information. -+This will be used to search for profiles -+if no arguments are specified on the command line. -+.TP -+-t NUMBER, --tail=NUMBER -+Only extracts function timings from the last -+.I NUMBER -+files. -+'\"-------------------------------------------------------------------------- -+.SS "The help Subcommand" -+.B scons-time help -+.I SUBCOMMAND -+[...] -+The -+.B help -+subcommand prints help text for any -+other subcommands listed as later arguments on the command line. -+'\"-------------------------------------------------------------------------- -+.SS "The mem Subcommand" -+.SY -+.P -+The -+.B scons-time mem -+subcommand displays how much memory SCons uses. -+.P -+The -+.B scons-time mem -+subcommand extracts memory use information -+from all the specified file arguments, -+which should be files containing output from -+running SCons with the -+.B --debug=memory -+option. -+(Normally, these would be -+.B *.log -+files generated by the -+.B scons-time run -+subcommand.) -+All file name arguments will be -+globbed for on-disk files. -+.P -+If no arguments are specified, -+then memory information -+will be extracted from all -+.B *.log -+files, -+or the subset of them -+with a prefix specified by the -+.B -p -+option. -+.P -+.TP -+-C DIR, --chdir=DIR -+Changes to the specified -+.I DIRECTORY -+before looking for the specified files -+(or files that match the specified patterns). -+.TP -+-f FILE, --file=FILE -+Reads configuration information from the specified -+.IR FILE . -+.TP -+-fmt=FORMAT, --format=FORMAT -+Reports the output in the specified -+.IR FORMAT . -+The formats currently supported are -+.B ascii -+(the default) -+and -+.BR gnuplot . -+.TP -+-h, --help -+Displays help text for the -+.B scons-time mem -+subcommand. -+.TP -+-p STRING, --prefix=STRING -+Specifies the prefix string for log files -+from which to extract memory usage information. -+This will be used to search for log files -+if no arguments are specified on the command line. -+.TP -+--stage=STAGE -+Prints the memory used at the end of the specified -+.IR STAGE : -+.B pre-read -+(before the SConscript files are read), -+.B post-read , -+(after the SConscript files are read), -+.B pre-build -+(before any targets are built) -+or -+.B post-build -+(after any targets are built). -+If no -+.B --stage -+option is specified, -+the default behavior is -+.BR post-build , -+which reports the final amount of memory -+used by SCons during each run. -+.TP -+-t NUMBER, --tail=NUMBER -+Only reports memory statistics from the last -+.I NUMBER -+files. -+'\"-------------------------------------------------------------------------- -+.SS "The obj Subcommand" -+.SO -+.P -+The -+.B scons-time obj -+subcommand displays how many objects of a specific named type -+are created by SCons. -+.P -+The -+.B scons-time obj -+subcommand extracts object counts -+from all the specified file arguments, -+which should be files containing output from -+running SCons with the -+.B --debug=count -+option. -+(Normally, these would be -+.B *.log -+files generated by the -+.B scons-time run -+subcommand.) -+All file name arguments will be -+globbed for on-disk files. -+.P -+If no arguments are specified, -+then object counts -+will be extracted from all -+.B *.log -+files, -+or the subset of them -+with a prefix specified by the -+.B -p -+option. -+.TP -+-C DIR, --chdir=DIR -+Changes to the specified -+.I DIRECTORY -+before looking for the specified files -+(or files that match the specified patterns). -+.TP -+-f FILE, --file=FILE -+Reads configuration information from the specified -+.IR FILE . -+.TP -+-fmt=FORMAT, --format=FORMAT -+Reports the output in the specified -+.IR FORMAT . -+The formats currently supported are -+.B ascii -+(the default) -+and -+.BR gnuplot . -+.TP -+-h, --help -+Displays help text for the -+.B scons-time obj -+subcommand. -+.TP -+-p STRING, --prefix=STRING -+Specifies the prefix string for log files -+from which to extract object counts. -+This will be used to search for log files -+if no arguments are specified on the command line. -+.TP -+--stage=STAGE -+Prints the object count at the end of the specified -+.IR STAGE : -+.B pre-read -+(before the SConscript files are read), -+.B post-read , -+(after the SConscript files are read), -+.B pre-build -+(before any targets are built) -+or -+.B post-build -+(after any targets are built). -+If no -+.B --stage -+option is specified, -+the default behavior is -+.BR post-build , -+which reports the final object count during each run. -+.TP -+-t NUMBER, --tail=NUMBER -+Only reports object counts from the last -+.I NUMBER -+files. -+'\"-------------------------------------------------------------------------- -+.SS "The run Subcommand" -+.SR -+The -+.B scons-time run -+subcommand is the basic subcommand -+for profiling a specific configuration -+against a version of SCons. -+.P -+The configuration to be tested -+is specified as a list of files -+or directories that will be unpacked or copied -+into a temporary directory -+in which SCons will be invoked. -+The -+.B scons-time run -+subcommand understands file suffixes like -+.BR .tar , -+.BR .tar.gz , -+.BR .tgz -+and -+.BR .zip -+and will unpack their contents into a temporary directory. -+If more than one argument is specified, -+each one will be unpacked or copied -+into the temporary directory "on top of" -+the previous archives or directories, -+so the expectation is that multiple -+specified archives share the same directory layout. -+.P -+Once the file or directory arguments are unpacked or -+copied to the temporary directory, -+the -+.B scons-time run -+subcommand runs the -+requested version of SCons -+against the configuration -+three times: -+.TP -+Startup -+SCons is run with the -+.B --help -+option so that just the SConscript files are read, -+and then the default help text is printed. -+This profiles just the perceived "overhead" of starting up SCons -+and processing the SConscript files. -+.TP -+Full build -+SCons is run to build everything specified in the configuration. -+Specific targets to be passed in on the command l ine -+may be specified by the -+.B targets -+keyword in a configuration file; see below for details. -+.TP -+Rebuild -+SCons is run again on the same just-built directory. -+If the dependencies in the SCons configuration are correct, -+this should be an up-to-date, "do nothing" rebuild. -+.P -+Each invocation captures the output log file and a profile. -+.P -+The -+.B scons-time run -+subcommand supports the following options: -+.TP -+--aegis=PROJECT -+Specifies the Aegis -+.I PROJECT -+from which the -+version(s) of -+.B scons -+being timed will be extracted. -+When -+.B --aegis -+is specified, the -+.BI --number= NUMBER -+option specifies delta numbers -+that will be tested. -+Output from each invocation run will be placed in file -+names that match the Aegis delta numbers. -+If the -+.B --number= -+option is not specified, -+then the default behavior is to time the -+tip of the specified -+.IR PROJECT . -+.TP -+-f FILE, --file=FILE -+Reads configuration information from the specified -+.IR FILE . -+This often provides a more convenient way to specify and -+collect parameters associated with a specific timing configuration -+than specifying them on the command line. -+See the -+.B CONFIGURATION FILE -+section below -+for information about the configuration file parameters. -+.TP -+-h, --help -+Displays help text for the -+.B scons-time run -+subcommand. -+.TP -+-n, --no-exec -+Do not execute commands, -+just printing the command-line equivalents of what would be executed. -+Note that the -+.B scons-time -+script actually executes its actions in Python, -+where possible, -+for portability. -+The commands displayed are UNIX -+.I equivalents -+of what it's doing. -+.TP -+--number=NUMBER -+Specifies the run number to be used in the names of -+the log files and profile outputs generated by this run. -+.IP -+When used in conjunction with the -+.BI --aegis= PROJECT -+option, -+.I NUMBER -+specifies one or more comma-separated Aegis delta numbers -+that will be retrieved automatically from the specified Aegis -+.IR PROJECT . -+.IP -+When used in conjunction with the -+.BI --svn= URL -+option, -+.I NUMBER -+specifies one or more comma-separated Subversion revision numbers -+that will be retrieved automatically from the Subversion -+repository at the specified -+.IR URL . -+Ranges of delta or revision numbers -+may be specified be separating two numbers -+with a hyphen -+.RB ( \- ). -+.P -+Example: -+.ES -+% scons-time run --svn=http://scons.tigris.org/svn/trunk --num=1247,1249-1252 . -+.EE -+.TP -+-p STRING, --prefix=STRING -+Specifies the prefix string to be used for all of the log files -+and profiles generated by this run. -+The default is derived from the first -+specified argument: -+if the first argument is a directory, -+the default prefix is the name of the directory; -+if the first argument is an archive -+(tar or zip file), -+the default prefix is the the base name of the archive, -+that is, what remains after stripping the archive suffix -+.RB ( .tgz ", " .tar.gz " or " .zip ). -+.TP -+--python=PYTHON -+Specifies a path to the Python executable to be used -+for the timing runs. -+The default is to use the same Python executable that -+is running the -+.B scons-time -+command itself. -+.TP -+-q, --quiet -+Suppresses display of the command lines being executed. -+.TP -+-s DIR, --subdir=DIR -+Specifies the name of directory or subdirectory -+from which the commands should be executed. -+The default is XXX -+.TP -+--scons=SCONS -+Specifies a path to the SCons script to be used -+for the timing runs. -+The default is XXX -+.TP -+--svn=URL, --subversion=URL -+Specifies the -+.I URL -+of the Subversion repository from which the -+version(s) of -+.B scons -+being timed will be extracted. -+When -+.B --svn -+is specified, the -+.BI --number= NUMBER -+option specifies revision numbers -+that will be tested. -+Output from each invocation run will be placed in file -+names that match the Subversion revision numbers. -+If the -+.B --number= -+option is not specified, -+then the default behavior is to time the -+.B HEAD -+of the specified -+.IR URL . -+.TP -+-v, --verbose -+Displays the output from individual commands to the screen -+(in addition to capturing the output in log files). -+'\"-------------------------------------------------------------------------- -+.SS "The time Subcommand" -+.ST -+.P -+The -+.B scons-time time -+subcommand displays SCons execution times -+as reported by the -+.B scons --debug=time -+option. -+.P -+The -+.B scons-time time -+subcommand extracts SCons timing -+from all the specified file arguments, -+which should be files containing output from -+running SCons with the -+.B --debug=time -+option. -+(Normally, these would be -+.B *.log -+files generated by the -+.B scons-time run -+subcommand.) -+All file name arguments will be -+globbed for on-disk files. -+.P -+If no arguments are specified, -+then execution timings -+will be extracted from all -+.B *.log -+files, -+or the subset of them -+with a prefix specified by the -+.B -p -+option. -+.TP -+-C DIR, --chdir=DIR -+Changes to the specified -+.I DIRECTORY -+before looking for the specified files -+(or files that match the specified patterns). -+.TP -+-f FILE, --file=FILE -+Reads configuration information from the specified -+.IR FILE . -+.TP -+-fmt=FORMAT, --format=FORMAT -+Reports the output in the specified -+.IR FORMAT . -+The formats currently supported are -+.B ascii -+(the default) -+and -+.BR gnuplot . -+.TP -+-h, --help -+Displays help text for the -+.B scons-time time -+subcommand. -+.TP -+-p STRING, --prefix=STRING -+Specifies the prefix string for log files -+from which to extract execution timings. -+This will be used to search for log files -+if no arguments are specified on the command line. -+.TP -+-t NUMBER, --tail=NUMBER -+Only reports object counts from the last -+.I NUMBER -+files. -+.TP -+--which=WHICH -+Prints the execution time for the specified -+.IR WHICH -+value: -+.B total -+(the total execution time), -+.B SConscripts -+(total execution time for the SConscript files themselves), -+.B SCons -+(exectuion time in SCons code itself) -+or -+.B commands -+(execution time of the commands and other actions -+used to build targets). -+If no -+.B --which -+option is specified, -+the default behavior is -+.BR total , -+which reports the total execution time for each run. -+'\"========================================================================== -+.SH CONFIGURATION FILE -+Various -+.B scons-time -+subcommands can read information from a specified -+configuration file when passed the -+.B \-f -+or -+.B \--file -+options. -+The configuration file is actually executed as a Python script. -+Setting Python variables in the configuration file -+controls the behavior of the -+.B scons-time -+script more conveniently than having to specify -+command-line options or arguments for every run, -+and provides a handy way to "shrink-wrap" -+the necessary information for producing (and reporting) -+consistent timing runs for a given configuration. -+.TP -+.B aegis -+The Aegis executable for extracting deltas. -+The default is simply -+.BR aegis . -+.TP -+.B aegis_project -+The Aegis project from which deltas should be extracted. -+The default is whatever is specified -+with the -+.B --aegis= -+command-line option. -+.TP -+.B archive_list -+A list of archives (files or directories) -+that will be copied to the temporary directory -+in which SCons will be invoked. -+.BR .tar , -+.BR .tar.gz , -+.BR .tgz -+and -+.BR .zip -+files will have their contents unpacked in -+the temporary directory. -+Directory trees and files will be copied as-is. -+.TP -+.B initial_commands -+A list of commands that will be executed -+before the actual timed -+.B scons -+runs. -+This can be used for commands that are necessary -+to prepare the source tree\-for example, -+creating a configuration file -+that should not be part of the timed run. -+.TP -+.B key_location -+The location of the key on Gnuplot graphing information -+generated with the -+.BR --format=gnuplot -+option. -+The default is -+.BR "bottom left" . -+.TP -+.B prefix -+The file name prefix to be used when -+running or extracting timing for this configuration. -+.TP -+.B python -+The path name of the Python executable -+to be used when running or extracting information -+for this configuration. -+The default is the same version of Python -+used to run the SCons -+.TP -+.B scons -+The path name of the SCons script to be used -+when running or extracting information -+for this configuration. -+The default is simply -+.BR scons . -+.TP -+.B scons_flags -+The -+.B scons -+flags used when running SCons to collect timing information. -+The default value is -+.BR "--debug=count --debug=memory --debug=time --debug=memoizer" . -+.TP -+.B scons_lib_dir -+.TP -+.B scons_wrapper -+.TP -+.B startup_targets -+.TP -+.B subdir -+The subdirectory of the project into which the -+.B scons-time -+script should change -+before executing the SCons commands to time. -+.TP -+.B subversion_url -+The Subversion URL from -+.TP -+.B svn -+The subversion executable used to -+check out revisions of SCons to be timed. -+The default is simple -+.BR svn . -+.TP -+.B svn_co_flag -+.TP -+.B tar -+.TP -+.B targets -+A string containing the targets that should be added to -+the command line of every timed -+.B scons -+run. -+This can be used to restrict what's being timed to a -+subset of the full build for the configuration. -+.TP -+.B targets0 -+.TP -+.B targets1 -+.TP -+.B targets2 -+.TP -+.B title -+.TP -+.B unzip -+.TP -+.B verbose -+.TP -+.B vertical_bars -+'\"-------------------------------------------------------------------------- -+.SS Example -+Here is an example -+.B scons-time -+configuration file -+for a hypothetical sample project: -+.P -+.ES -+# The project doesn't use SCons natively (yet), so we're -+# timing a separate set of SConscript files that we lay -+# on top of the vanilla unpacked project tarball. -+arguments = ['project-1.2.tgz', 'project-SConscripts.tar'] -+ -+# The subdirectory name contains the project version number, -+# so tell scons-time to chdir there before building. -+subdir = 'project-1.2' -+ -+# Set the prefix so output log files and profiles are named: -+# project-000-[012].{log,prof} -+# project-001-[012].{log,prof} -+# etc. -+prefix = 'project' -+ -+# The SConscript files being tested don't do any SConf -+# configuration, so run their normal ./configure script -+# before we invoke SCons. -+initial_commands = [ -+ './configure', -+] -+ -+# Only time building the bin/project executable. -+targets = 'bin/project' -+ -+# Time against SCons revisions of the branches/core branch -+subversion_url = 'http://scons.tigris.org/svn/scons/branches/core' -+.EE -+'\"========================================================================== -+.SH ENVIRONMENT -+The -+.B scons-time -+script uses the following environment variables: -+.TP -+.B PRESERVE -+If this value is set, -+the -+.B scons-time -+script will -+.I not -+remove the temporary directory or directories -+in which it builds the specified configuration -+or downloads a specific version of SCons. -+'\"========================================================================== -+.SH "SEE ALSO" -+.BR gnuplot (1), -+.BR scons (1) -+ -+.SH AUTHORS -+Steven Knight -Index: scons/scons.1 -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ scons/scons.1 2014-04-26 12:21:47.059232201 +0200 -@@ -0,0 +1,15895 @@ -+.\" Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation -+.\" -+.\" 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. -+.\" -+.\" doc/man/scons.1 2013/03/03 09:48:35 garyo -+.\" -+.TH SCONS 1 "March 2013" -+.\" ES - Example Start - indents and turns off line fill -+.rm ES -+.de ES -+.RS -+.nf -+.. -+.\" EE - Example End - ends indent and turns line fill back on -+.rm EE -+.de EE -+.fi -+.RE -+.. -+.SH NAME -+scons \- a software construction tool -+.SH SYNOPSIS -+.B scons -+[ -+.IR options ... -+] -+[ -+.IR name = val ... -+] -+[ -+.IR targets ... -+] -+.SH DESCRIPTION -+ -+The -+.B scons -+utility builds software (or other files) by determining which -+component pieces must be rebuilt and executing the necessary commands to -+rebuild them. -+ -+By default, -+.B scons -+searches for a file named -+.IR SConstruct , -+.IR Sconstruct , -+or -+.I sconstruct -+(in that order) in the current directory and reads its -+configuration from the first file found. -+An alternate file name may be -+specified via the -+.B -f -+option. -+ -+The -+.I SConstruct -+file can specify subsidiary -+configuration files using the -+.BR SConscript () -+function. -+By convention, -+these subsidiary files are named -+.IR SConscript , -+although any name may be used. -+(Because of this naming convention, -+the term "SConscript files" -+is sometimes used to refer -+generically to all -+.B scons -+configuration files, -+regardless of actual file name.) -+ -+The configuration files -+specify the target files to be built, and -+(optionally) the rules to build those targets. Reasonable default -+rules exist for building common software components (executable -+programs, object files, libraries), so that for most software -+projects, only the target and input files need be specified. -+ -+Before reading the -+.I SConstruct -+file, -+.B scons -+looks for a directory named -+.I site_scons -+in various system directories (see below) and the directory containing the -+.I SConstruct -+file; for each of those dirs which exists, -+.I site_scons -+is prepended to sys.path, -+the file -+.IR site_scons/site_init.py , -+is evaluated if it exists, -+and the directory -+.I site_scons/site_tools -+is prepended to the default toolpath if it exists. -+See the -+.I --no-site-dir -+and -+.I --site-dir -+options for more details. -+ -+.B scons -+reads and executes the SConscript files as Python scripts, -+so you may use normal Python scripting capabilities -+(such as flow control, data manipulation, and imported Python libraries) -+to handle complicated build situations. -+.BR scons , -+however, reads and executes all of the SConscript files -+.I before -+it begins building any targets. -+To make this obvious, -+.B scons -+prints the following messages about what it is doing: -+ -+.ES -+$ scons foo.out -+scons: Reading SConscript files ... -+scons: done reading SConscript files. -+scons: Building targets ... -+cp foo.in foo.out -+scons: done building targets. -+$ -+.EE -+ -+The status messages -+(everything except the line that reads "cp foo.in foo.out") -+may be suppressed using the -+.B -Q -+option. -+ -+.B scons -+does not automatically propagate -+the external environment used to execute -+.B scons -+to the commands used to build target files. -+This is so that builds will be guaranteed -+repeatable regardless of the environment -+variables set at the time -+.B scons -+is invoked. -+This also means that if the compiler or other commands -+that you want to use to build your target files -+are not in standard system locations, -+.B scons -+will not find them unless -+you explicitly set the PATH -+to include those locations. -+Whenever you create an -+.B scons -+construction environment, -+you can propagate the value of PATH -+from your external environment as follows: -+ -+.ES -+import os -+env = Environment(ENV = {'PATH' : os.environ['PATH']}) -+.EE -+ -+Similarly, if the commands use external environment variables -+like $PATH, $HOME, $JAVA_HOME, $LANG, $SHELL, $TERM, etc., -+these variables can also be explicitly propagated: -+ -+.ES -+import os -+env = Environment(ENV = {'PATH' : os.environ['PATH'], -+ 'HOME' : os.environ['HOME']}) -+.EE -+ -+Or you may explicitly propagate the invoking user's -+complete external environment: -+ -+.ES -+import os -+env = Environment(ENV = os.environ) -+.EE -+ -+This comes at the expense of making your build -+dependent on the user's environment being set correctly, -+but it may be more convenient for many configurations. -+ -+.B scons -+can scan known input files automatically for dependency -+information (for example, #include statements -+in C or C++ files) and will rebuild dependent files appropriately -+whenever any "included" input file changes. -+.B scons -+supports the -+ability to define new scanners for unknown input file types. -+ -+.B scons -+knows how to fetch files automatically from -+SCCS or RCS subdirectories -+using SCCS, RCS or BitKeeper. -+ -+.B scons -+is normally executed in a top-level directory containing a -+.I SConstruct -+file, optionally specifying -+as command-line arguments -+the target file or files to be built. -+ -+By default, the command -+ -+.ES -+scons -+.EE -+ -+will build all target files in or below the current directory. -+Explicit default targets -+(to be built when no targets are specified on the command line) -+may be defined the SConscript file(s) -+using the -+.B Default() -+function, described below. -+ -+Even when -+.B Default() -+targets are specified in the SConscript file(s), -+all target files in or below the current directory -+may be built by explicitly specifying -+the current directory (.) -+as a command-line target: -+ -+.ES -+scons . -+.EE -+ -+Building all target files, -+including any files outside of the current directory, -+may be specified by supplying a command-line target -+of the root directory (on POSIX systems): -+ -+.ES -+scons / -+.EE -+ -+or the path name(s) of the volume(s) in which all the targets -+should be built (on Windows systems): -+ -+.ES -+scons C:\\ D:\\ -+.EE -+ -+To build only specific targets, -+supply them as command-line arguments: -+ -+.ES -+scons foo bar -+.EE -+ -+in which case only the specified targets will be built -+(along with any derived files on which they depend). -+ -+Specifying "cleanup" targets in SConscript files is not usually necessary. -+The -+.B -c -+flag removes all files -+necessary to build the specified target: -+ -+.ES -+scons -c . -+.EE -+ -+to remove all target files, or: -+ -+.ES -+scons -c build export -+.EE -+ -+to remove target files under build and export. -+Additional files or directories to remove can be specified using the -+.BR Clean() -+function. -+Conversely, targets that would normally be removed by the -+.B -c -+invocation -+can be prevented from being removed by using the -+.BR NoClean () -+function. -+ -+A subset of a hierarchical tree may be built by -+remaining at the top-level directory (where the -+.I SConstruct -+file lives) and specifying the subdirectory as the target to be -+built: -+ -+.ES -+scons src/subdir -+.EE -+ -+or by changing directory and invoking scons with the -+.B -u -+option, which traverses up the directory -+hierarchy until it finds the -+.I SConstruct -+file, and then builds -+targets relatively to the current subdirectory: -+ -+.ES -+cd src/subdir -+scons -u . -+.EE -+ -+.B scons -+supports building multiple targets in parallel via a -+.B -j -+option that takes, as its argument, the number -+of simultaneous tasks that may be spawned: -+ -+.ES -+scons -j 4 -+.EE -+ -+builds four targets in parallel, for example. -+ -+.B scons -+can maintain a cache of target (derived) files that can -+be shared between multiple builds. When caching is enabled in a -+SConscript file, any target files built by -+.B scons -+will be copied -+to the cache. If an up-to-date target file is found in the cache, it -+will be retrieved from the cache instead of being rebuilt locally. -+Caching behavior may be disabled and controlled in other ways by the -+.BR --cache-force , -+.BR --cache-disable , -+and -+.B --cache-show -+command-line options. The -+.B --random -+option is useful to prevent multiple builds -+from trying to update the cache simultaneously. -+ -+Values of variables to be passed to the SConscript file(s) -+may be specified on the command line: -+ -+.ES -+scons debug=1 . -+.EE -+ -+These variables are available in SConscript files -+through the ARGUMENTS dictionary, -+and can be used in the SConscript file(s) to modify -+the build in any way: -+ -+.ES -+if ARGUMENTS.get('debug', 0): -+ env = Environment(CCFLAGS = '-g') -+else: -+ env = Environment() -+.EE -+ -+The command-line variable arguments are also available -+in the ARGLIST list, -+indexed by their order on the command line. -+This allows you to process them in order rather than by name, -+if necessary. -+ARGLIST[0] returns a tuple -+containing (argname, argvalue). -+A Python exception is thrown if you -+try to access a list member that -+does not exist. -+ -+.B scons -+requires Python version 2.4 or later. -+There should be no other dependencies or requirements to run -+.B scons. -+ -+.\" The following paragraph reflects the default tool search orders -+.\" currently in SCons/Tool/__init__.py. If any of those search orders -+.\" change, this documentation should change, too. -+By default, -+.B scons -+knows how to search for available programming tools -+on various systems. -+On Windows systems, -+.B scons -+searches in order for the -+Microsoft Visual C++ tools, -+the MinGW tool chain, -+the Intel compiler tools, -+and the PharLap ETS compiler. -+On OS/2 systems, -+.B scons -+searches in order for the -+OS/2 compiler, -+the GCC tool chain, -+and the Microsoft Visual C++ tools, -+On SGI IRIX, IBM AIX, Hewlett Packard HP-UX, and Sun Solaris systems, -+.B scons -+searches for the native compiler tools -+(MIPSpro, Visual Age, aCC, and Forte tools respectively) -+and the GCC tool chain. -+On all other platforms, -+including POSIX (Linux and UNIX) platforms, -+.B scons -+searches in order -+for the GCC tool chain, -+the Microsoft Visual C++ tools, -+and the Intel compiler tools. -+You may, of course, override these default values -+by appropriate configuration of -+Environment construction variables. -+ -+.SH OPTIONS -+In general, -+.B scons -+supports the same command-line options as GNU -+.BR make , -+and many of those supported by -+.BR cons . -+ -+.TP -+-b -+Ignored for compatibility with non-GNU versions of -+.BR make. -+ -+.TP -+-c, --clean, --remove -+Clean up by removing all target files for which a construction -+command is specified. -+Also remove any files or directories associated to the construction command -+using the -+.BR Clean () -+function. -+Will not remove any targets specified by the -+.BR NoClean () -+function. -+ -+.TP -+.RI --cache-debug= file -+Print debug information about the -+.BR CacheDir () -+derived-file caching -+to the specified -+.IR file . -+If -+.I file -+is -+.B \- -+(a hyphen), -+the debug information are printed to the standard output. -+The printed messages describe what signature file names are -+being looked for in, retrieved from, or written to the -+.BR CacheDir () -+directory tree. -+ -+.TP -+--cache-disable, --no-cache -+Disable the derived-file caching specified by -+.BR CacheDir (). -+.B scons -+will neither retrieve files from the cache -+nor copy files to the cache. -+ -+.TP -+--cache-force, --cache-populate -+When using -+.BR CacheDir (), -+populate a cache by copying any already-existing, up-to-date -+derived files to the cache, -+in addition to files built by this invocation. -+This is useful to populate a new cache with -+all the current derived files, -+or to add to the cache any derived files -+recently built with caching disabled via the -+.B --cache-disable -+option. -+ -+.TP -+--cache-show -+When using -+.BR CacheDir () -+and retrieving a derived file from the cache, -+show the command -+that would have been executed to build the file, -+instead of the usual report, -+"Retrieved `file' from cache." -+This will produce consistent output for build logs, -+regardless of whether a target -+file was rebuilt or retrieved from the cache. -+ -+.TP -+.RI --config= mode -+This specifies how the -+.B Configure -+call should use or generate the -+results of configuration tests. -+The option should be specified from -+among the following choices: -+ -+.TP -+--config=auto -+scons will use its normal dependency mechanisms -+to decide if a test must be rebuilt or not. -+This saves time by not running the same configuration tests -+every time you invoke scons, -+but will overlook changes in system header files -+or external commands (such as compilers) -+if you don't specify those dependecies explicitly. -+This is the default behavior. -+ -+.TP -+--config=force -+If this option is specified, -+all configuration tests will be re-run -+regardless of whether the -+cached results are out of date. -+This can be used to explicitly -+force the configuration tests to be updated -+in response to an otherwise unconfigured change -+in a system header file or compiler. -+ -+.TP -+--config=cache -+If this option is specified, -+no configuration tests will be rerun -+and all results will be taken from cache. -+Note that scons will still consider it an error -+if --config=cache is specified -+and a necessary test does not -+yet have any results in the cache. -+ -+.TP -+.RI "-C" " directory" ", --directory=" directory -+Change to the specified -+.I directory -+before searching for the -+.IR SConstruct , -+.IR Sconstruct , -+or -+.I sconstruct -+file, or doing anything -+else. Multiple -+.B -C -+options are interpreted -+relative to the previous one, and the right-most -+.B -C -+option wins. (This option is nearly -+equivalent to -+.BR "-f directory/SConstruct" , -+except that it will search for -+.IR SConstruct , -+.IR Sconstruct , -+or -+.I sconstruct -+in the specified directory.) -+ -+.\" .TP -+.\" -d -+.\" Display dependencies while building target files. Useful for -+.\" figuring out why a specific file is being rebuilt, as well as -+.\" general debugging of the build process. -+ -+.TP -+-D -+Works exactly the same way as the -+.B -u -+option except for the way default targets are handled. -+When this option is used and no targets are specified on the command line, -+all default targets are built, whether or not they are below the current -+directory. -+ -+.TP -+.RI --debug= type -+Debug the build process. -+.I type -+specifies what type of debugging: -+ -+.TP -+--debug=count -+Print how many objects are created -+of the various classes used internally by SCons -+before and after reading the SConscript files -+and before and after building targets. -+This is not supported when SCons is executed with the Python -+.B -O -+(optimized) option -+or when the SCons modules -+have been compiled with optimization -+(that is, when executing from -+.B *.pyo -+files). -+ -+.TP -+--debug=duplicate -+Print a line for each unlink/relink (or copy) of a variant file from -+its source file. Includes debugging info for unlinking stale variant -+files, as well as unlinking old targets before building them. -+ -+.TP -+--debug=dtree -+A synonym for the newer -+.B --tree=derived -+option. -+This will be deprecated in some future release -+and ultimately removed. -+ -+.TP -+--debug=explain -+Print an explanation of precisely why -+.B scons -+is deciding to (re-)build any targets. -+(Note: this does not print anything -+for targets that are -+.I not -+rebuilt.) -+ -+.TP -+--debug=findlibs -+Instruct the scanner that searches for libraries -+to print a message about each potential library -+name it is searching for, -+and about the actual libraries it finds. -+ -+.TP -+--debug=includes -+Print the include tree after each top-level target is built. -+This is generally used to find out what files are included by the sources -+of a given derived file: -+ -+.ES -+$ scons --debug=includes foo.o -+.EE -+ -+.TP -+--debug=memoizer -+Prints a summary of hits and misses using the Memoizer, -+an internal subsystem that counts -+how often SCons uses cached values in memory -+instead of recomputing them each time they're needed. -+ -+.TP -+--debug=memory -+Prints how much memory SCons uses -+before and after reading the SConscript files -+and before and after building targets. -+ -+.TP -+--debug=nomemoizer -+A deprecated option preserved for backwards compatibility. -+ -+.TP -+--debug=objects -+Prints a list of the various objects -+of the various classes used internally by SCons. -+ -+.TP -+--debug=pdb -+Re-run SCons under the control of the -+.RI pdb -+Python debugger. -+ -+.TP -+--debug=prepare -+Print a line each time any target (internal or external) -+is prepared for building. -+.B scons -+prints this for each target it considers, even if that -+target is up to date (see also --debug=explain). -+This can help debug problems with targets that aren't being -+built; it shows whether -+.B scons -+is at least considering them or not. -+ -+.TP -+--debug=presub -+Print the raw command line used to build each target -+before the construction environment variables are substituted. -+Also shows which targets are being built by this command. -+Output looks something like this: -+.ES -+$ scons --debug=presub -+Building myprog.o with action(s): -+ $SHCC $SHCFLAGS $SHCCFLAGS $CPPFLAGS $_CPPINCFLAGS -c -o $TARGET $SOURCES -+\&... -+.EE -+ -+.TP -+--debug=stacktrace -+Prints an internal Python stack trace -+when encountering an otherwise unexplained error. -+ -+.TP -+--debug=stree -+A synonym for the newer -+.B --tree=all,status -+option. -+This will be deprecated in some future release -+and ultimately removed. -+ -+.TP -+--debug=time -+Prints various time profiling information: -+the time spent executing each individual build command; -+the total build time (time SCons ran from beginning to end); -+the total time spent reading and executing SConscript files; -+the total time spent SCons itself spend running -+(that is, not counting reading and executing SConscript files); -+and both the total time spent executing all build commands -+and the elapsed wall-clock time spent executing those build commands. -+(When -+.B scons -+is executed without the -+.B -j -+option, -+the elapsed wall-clock time will typically -+be slightly longer than the total time spent -+executing all the build commands, -+due to the SCons processing that takes place -+in between executing each command. -+When -+.B scons -+is executed -+.I with -+the -+.B -j -+option, -+and your build configuration allows good parallelization, -+the elapsed wall-clock time should -+be significantly smaller than the -+total time spent executing all the build commands, -+since multiple build commands and -+intervening SCons processing -+should take place in parallel.) -+ -+.TP -+--debug=tree -+A synonym for the newer -+.B --tree=all -+option. -+This will be deprecated in some future release -+and ultimately removed. -+ -+.TP -+.RI --diskcheck= types -+Enable specific checks for -+whether or not there is a file on disk -+where the SCons configuration expects a directory -+(or vice versa), -+and whether or not RCS or SCCS sources exist -+when searching for source and include files. -+The -+.I types -+argument can be set to: -+.BR all , -+to enable all checks explicitly -+(the default behavior); -+.BR none , -+to disable all such checks; -+.BR match , -+to check that files and directories on disk -+match SCons' expected configuration; -+.BR rcs , -+to check for the existence of an RCS source -+for any missing source or include files; -+.BR sccs , -+to check for the existence of an SCCS source -+for any missing source or include files. -+Multiple checks can be specified separated by commas; -+for example, -+.B --diskcheck=sccs,rcs -+would still check for SCCS and RCS sources, -+but disable the check for on-disk matches of files and directories. -+Disabling some or all of these checks -+can provide a performance boost for large configurations, -+or when the configuration will check for files and/or directories -+across networked or shared file systems, -+at the slight increased risk of an incorrect build -+or of not handling errors gracefully -+(if include files really should be -+found in SCCS or RCS, for example, -+or if a file really does exist -+where the SCons configuration expects a directory). -+ -+.TP -+.RI --duplicate= ORDER -+There are three ways to duplicate files in a build tree: hard links, -+soft (symbolic) links and copies. The default behaviour of SCons is to -+prefer hard links to soft links to copies. You can specify different -+behaviours with this option. -+.IR ORDER -+must be one of -+.IR hard-soft-copy -+(the default), -+.IR soft-hard-copy , -+.IR hard-copy , -+.IR soft-copy -+or -+.IR copy . -+SCons will attempt to duplicate files using -+the mechanisms in the specified order. -+ -+.\" .TP -+.\" -e, --environment-overrides -+.\" Variables from the execution environment override construction -+.\" variables from the SConscript files. -+ -+.TP -+.RI -f " file" ", --file=" file ", --makefile=" file ", --sconstruct=" file -+Use -+.I file -+as the initial SConscript file. -+Multiple -+.B -f -+options may be specified, -+in which case -+.B scons -+will read all of the specified files. -+ -+.TP -+-h, --help -+Print a local help message for this build, if one is defined in -+the SConscript file(s), plus a line that describes the -+.B -H -+option for command-line option help. If no local help message -+is defined, prints the standard help message about command-line -+options. Exits after displaying the appropriate message. -+ -+.TP -+-H, --help-options -+Print the standard help message about command-line options and -+exit. -+ -+.TP -+-i, --ignore-errors -+Ignore all errors from commands executed to rebuild files. -+ -+.TP -+.RI -I " directory" ", --include-dir=" directory -+Specifies a -+.I directory -+to search for -+imported Python modules. If several -+.B -I -+options -+are used, the directories are searched in the order specified. -+ -+.TP -+--implicit-cache -+Cache implicit dependencies. -+This causes -+.B scons -+to use the implicit (scanned) dependencies -+from the last time it was run -+instead of scanning the files for implicit dependencies. -+This can significantly speed up SCons, -+but with the following limitations: -+.IP -+.B scons -+will not detect changes to implicit dependency search paths -+(e.g. -+.BR CPPPATH ", " LIBPATH ) -+that would ordinarily -+cause different versions of same-named files to be used. -+.IP -+.B scons -+will miss changes in the implicit dependencies -+in cases where a new implicit -+dependency is added earlier in the implicit dependency search path -+(e.g. -+.BR CPPPATH ", " LIBPATH ) -+than a current implicit dependency with the same name. -+ -+.TP -+--implicit-deps-changed -+Forces SCons to ignore the cached implicit dependencies. This causes the -+implicit dependencies to be rescanned and recached. This implies -+.BR --implicit-cache . -+ -+.TP -+--implicit-deps-unchanged -+Force SCons to ignore changes in the implicit dependencies. -+This causes cached implicit dependencies to always be used. -+This implies -+.BR --implicit-cache . -+ -+.TP -+--interactive -+Starts SCons in interactive mode. -+The SConscript files are read once and a -+.B "scons>>>" -+prompt is printed. -+Targets may now be rebuilt by typing commands at interactive prompt -+without having to re-read the SConscript files -+and re-initialize the dependency graph from scratch. -+ -+SCons interactive mode supports the following commands: -+ -+.RS 10 -+.TP 6 -+.BI build "[OPTIONS] [TARGETS] ..." -+Builds the specified -+.I TARGETS -+(and their dependencies) -+with the specified -+SCons command-line -+.IR OPTIONS . -+.B b -+and -+.B scons -+are synonyms. -+ -+The following SCons command-line options affect the -+.B build -+command: -+ -+.ES -+--cache-debug=FILE -+--cache-disable, --no-cache -+--cache-force, --cache-populate -+--cache-show -+--debug=TYPE -+-i, --ignore-errors -+-j N, --jobs=N -+-k, --keep-going -+-n, --no-exec, --just-print, --dry-run, --recon -+-Q -+-s, --silent, --quiet -+--taskmastertrace=FILE -+--tree=OPTIONS -+.EE -+ -+.IP "" 6 -+Any other SCons command-line options that are specified -+do not cause errors -+but have no effect on the -+.B build -+command -+(mainly because they affect how the SConscript files are read, -+which only happens once at the beginning of interactive mode). -+ -+.TP 6 -+.BI clean "[OPTIONS] [TARGETS] ..." -+Cleans the specified -+.I TARGETS -+(and their dependencies) -+with the specified options. -+.B c -+is a synonym. -+This command is itself a synonym for -+.B "build --clean" -+ -+.TP 6 -+.BI exit -+Exits SCons interactive mode. -+You can also exit by terminating input -+(CTRL+D on UNIX or Linux systems, -+CTRL+Z on Windows systems). -+ -+.TP 6 -+.BI help "[COMMAND]" -+Provides a help message about -+the commands available in SCons interactive mode. -+If -+.I COMMAND -+is specified, -+.B h -+and -+.B ? -+are synonyms. -+ -+.TP 6 -+.BI shell "[COMMANDLINE]" -+Executes the specified -+.I COMMANDLINE -+in a subshell. -+If no -+.I COMMANDLINE -+is specified, -+executes the interactive command interpreter -+specified in the -+.B SHELL -+environment variable -+(on UNIX and Linux systems) -+or the -+.B COMSPEC -+environment variable -+(on Windows systems). -+.B sh -+and -+.B ! -+are synonyms. -+ -+.TP 6 -+.B version -+Prints SCons version information. -+.RE -+ -+.IP -+An empty line repeats the last typed command. -+Command-line editing can be used if the -+.B readline -+module is available. -+ -+.ES -+$ scons --interactive -+scons: Reading SConscript files ... -+scons: done reading SConscript files. -+scons>>> build -n prog -+scons>>> exit -+.EE -+ -+.TP -+.RI -j " N" ", --jobs=" N -+Specifies the number of jobs (commands) to run simultaneously. -+If there is more than one -+.B -j -+option, the last one is effective. -+.\" ??? If the -+.\" .B -j -+.\" option -+.\" is specified without an argument, -+.\" .B scons -+.\" will not limit the number of -+.\" simultaneous jobs. -+ -+.TP -+-k, --keep-going -+Continue as much as possible after an error. The target that -+failed and those that depend on it will not be remade, but other -+targets specified on the command line will still be processed. -+ -+.\" .TP -+.\" .RI -l " N" ", --load-average=" N ", --max-load=" N -+.\" No new jobs (commands) will be started if -+.\" there are other jobs running and the system load -+.\" average is at least -+.\" .I N -+.\" (a floating-point number). -+ -+.\" -+.\" .TP -+.\" --list-derived -+.\" List derived files (targets, dependencies) that would be built, -+.\" but do not build them. -+.\" [XXX This can probably go away with the right -+.\" combination of other options. Revisit this issue.] -+.\" -+.\" .TP -+.\" --list-actions -+.\" List derived files that would be built, with the actions -+.\" (commands) that build them. Does not build the files. -+.\" [XXX This can probably go away with the right -+.\" combination of other options. Revisit this issue.] -+.\" -+.\" .TP -+.\" --list-where -+.\" List derived files that would be built, plus where the file is -+.\" defined (file name and line number). Does not build the files. -+.\" [XXX This can probably go away with the right -+.\" combination of other options. Revisit this issue.] -+ -+.TP -+-m -+Ignored for compatibility with non-GNU versions of -+.BR make . -+ -+.TP -+.RI --max-drift= SECONDS -+Set the maximum expected drift in the modification time of files to -+.IR SECONDS . -+This value determines how long a file must be unmodified -+before its cached content signature -+will be used instead of -+calculating a new content signature (MD5 checksum) -+of the file's contents. -+The default value is 2 days, which means a file must have a -+modification time of at least two days ago in order to have its -+cached content signature used. -+A negative value means to never cache the content -+signature and to ignore the cached value if there already is one. A value -+of 0 means to always use the cached signature, -+no matter how old the file is. -+ -+.TP -+.RI --md5-chunksize= KILOBYTES -+Set the block size used to compute MD5 signatures to -+.IR KILOBYTES . -+This value determines the size of the chunks which are read in at once when -+computing MD5 signatures. Files below that size are fully stored in memory -+before performing the signature computation while bigger files are read in -+block-by-block. A huge block-size leads to high memory consumption while a very -+small block-size slows down the build considerably. -+ -+The default value is to use a chunk size of 64 kilobytes, which should -+be appropriate for most uses. -+ -+.TP -+-n, --just-print, --dry-run, --recon -+No execute. Print the commands that would be executed to build -+any out-of-date target files, but do not execute the commands. -+ -+.TP -+.RI --no-site-dir -+Prevents the automatic addition of the standard -+.I site_scons -+dirs to -+.IR sys.path . -+Also prevents loading the -+.I site_scons/site_init.py -+modules if they exist, and prevents adding their -+.I site_scons/site_tools -+dirs to the toolpath. -+ -+.\" .TP -+.\" .RI -o " file" ", --old-file=" file ", --assume-old=" file -+.\" Do not rebuild -+.\" .IR file , -+.\" and do -+.\" not rebuild anything due to changes in the contents of -+.\" .IR file . -+.\" .TP -+.\" .RI --override " file" -+.\" Read values to override specific build environment variables -+.\" from the specified -+.\" .IR file . -+.\" .TP -+.\" -p -+.\" Print the data base (construction environments, -+.\" Builder and Scanner objects) that are defined -+.\" after reading the SConscript files. -+.\" After printing, a normal build is performed -+.\" as usual, as specified by other command-line options. -+.\" This also prints version information -+.\" printed by the -+.\" .B -v -+.\" option. -+.\" -+.\" To print the database without performing a build do: -+.\" -+.\" .ES -+.\" scons -p -q -+.\" .EE -+ -+.TP -+.RI --profile= file -+Run SCons under the Python profiler -+and save the results in the specified -+.IR file . -+The results may be analyzed using the Python -+pstats module. -+ -+.TP -+-q, --question -+Do not run any commands, or print anything. Just return an exit -+status that is zero if the specified targets are already up to -+date, non-zero otherwise. -+.TP -+-Q -+Quiets SCons status messages about -+reading SConscript files, -+building targets -+and entering directories. -+Commands that are executed -+to rebuild target files are still printed. -+ -+.\" .TP -+.\" -r, -R, --no-builtin-rules, --no-builtin-variables -+.\" Clear the default construction variables. Construction -+.\" environments that are created will be completely empty. -+ -+.TP -+--random -+Build dependencies in a random order. This is useful when -+building multiple trees simultaneously with caching enabled, -+to prevent multiple builds from simultaneously trying to build -+or retrieve the same target files. -+ -+.TP -+-s, --silent, --quiet -+Silent. Do not print commands that are executed to rebuild -+target files. -+Also suppresses SCons status messages. -+ -+.TP -+-S, --no-keep-going, --stop -+Ignored for compatibility with GNU -+.BR make . -+ -+.TP -+.RI --site-dir= dir -+Uses the named dir as the site dir rather than the default -+.I site_scons -+dirs. This dir will get prepended to -+.IR sys.path , -+the module -+.IR dir /site_init.py -+will get loaded if it exists, and -+.IR dir /site_tools -+will get added to the default toolpath. -+ -+The default set of -+.I site_scons -+dirs used when -+.I --site-dir -+is not specified depends on the system platform, as follows. Note -+that the directories are examined in the order given, from most -+generic to most specific, so the last-executed site_init.py file is -+the most specific one (which gives it the chance to override -+everything else), and the dirs are prepended to the paths, again so -+the last dir examined comes first in the resulting path. -+ -+.IP "Windows:" -+.nf -+ %ALLUSERSPROFILE/Application Data/scons/site_scons -+ %USERPROFILE%/Local Settings/Application Data/scons/site_scons -+ %APPDATA%/scons/site_scons -+ %HOME%/.scons/site_scons -+ ./site_scons -+.fi -+.IP "Mac OS X:" -+.nf -+ /Library/Application Support/SCons/site_scons -+ /opt/local/share/scons/site_scons (for MacPorts) -+ /sw/share/scons/site_scons (for Fink) -+ $HOME/Library/Application Support/SCons/site_scons -+ $HOME/.scons/site_scons -+ ./site_scons -+.fi -+.IP "Solaris:" -+.nf -+ /opt/sfw/scons/site_scons -+ /usr/share/scons/site_scons -+ $HOME/.scons/site_scons -+ ./site_scons -+.fi -+.IP "Linux, HPUX, and other Posix-like systems:" -+.nf -+ /usr/share/scons/site_scons -+ $HOME/.scons/site_scons -+ ./site_scons -+.fi -+ -+.TP -+.RI --stack-size= KILOBYTES -+Set the size stack used to run threads to -+.IR KILOBYTES . -+This value determines the stack size of the threads used to run jobs. -+These are the threads that execute the actions of the builders for the -+nodes that are out-of-date. -+Note that this option has no effect unless the -+.B num_jobs -+option, which corresponds to -j and --jobs, is larger than one. Using -+a stack size that is too small may cause stack overflow errors. This -+usually shows up as segmentation faults that cause scons to abort -+before building anything. Using a stack size that is too large will -+cause scons to use more memory than required and may slow down the entire -+build process. -+ -+The default value is to use a stack size of 256 kilobytes, which should -+be appropriate for most uses. You should not need to increase this value -+unless you encounter stack overflow errors. -+ -+.TP -+-t, --touch -+Ignored for compatibility with GNU -+.BR make . -+(Touching a file to make it -+appear up-to-date is unnecessary when using -+.BR scons .) -+ -+.TP -+.RI --taskmastertrace= file -+Prints trace information to the specified -+.I file -+about how the internal Taskmaster object -+evaluates and controls the order in which Nodes are built. -+A file name of -+.B - -+may be used to specify the standard output. -+ -+.TP -+.RI -tree= options -+Prints a tree of the dependencies -+after each top-level target is built. -+This prints out some or all of the tree, -+in various formats, -+depending on the -+.I options -+specified: -+ -+.TP -+--tree=all -+Print the entire dependency tree -+after each top-level target is built. -+This prints out the complete dependency tree, -+including implicit dependencies and ignored dependencies. -+ -+.TP -+--tree=derived -+Restricts the tree output to only derived (target) files, -+not source files. -+ -+.TP -+--tree=status -+Prints status information for each displayed node. -+ -+.TP -+--tree=prune -+Prunes the tree to avoid repeating dependency information -+for nodes that have already been displayed. -+Any node that has already been displayed -+will have its name printed in -+.BR "[square brackets]" , -+as an indication that the dependencies -+for that node can be found by searching -+for the relevant output higher up in the tree. -+ -+.IP -+Multiple options may be specified, -+separated by commas: -+ -+.ES -+# Prints only derived files, with status information: -+scons --tree=derived,status -+ -+# Prints all dependencies of target, with status information -+# and pruning dependencies of already-visited Nodes: -+scons --tree=all,prune,status target -+.EE -+ -+.TP -+-u, --up, --search-up -+Walks up the directory structure until an -+.I SConstruct , -+.I Sconstruct -+or -+.I sconstruct -+file is found, and uses that -+as the top of the directory tree. -+If no targets are specified on the command line, -+only targets at or below the -+current directory will be built. -+ -+.TP -+-U -+Works exactly the same way as the -+.B -u -+option except for the way default targets are handled. -+When this option is used and no targets are specified on the command line, -+all default targets that are defined in the SConscript(s) in the current -+directory are built, regardless of what directory the resultant targets end -+up in. -+ -+.TP -+-v, --version -+Print the -+.B scons -+version, copyright information, -+list of authors, and any other relevant information. -+Then exit. -+ -+.TP -+-w, --print-directory -+Print a message containing the working directory before and -+after other processing. -+ -+.TP -+--no-print-directory -+Turn off -w, even if it was turned on implicitly. -+ -+.TP -+.RI --warn= type ", --warn=no-" type -+Enable or disable warnings. -+.I type -+specifies the type of warnings to be enabled or disabled: -+ -+.TP -+--warn=all, --warn=no-all -+Enables or disables all warnings. -+ -+.TP -+--warn=cache-write-error, --warn=no-cache-write-error -+Enables or disables warnings about errors trying to -+write a copy of a built file to a specified -+.BR CacheDir (). -+These warnings are disabled by default. -+ -+.TP -+--warn=corrupt-sconsign, --warn=no-corrupt-sconsign -+Enables or disables warnings about unfamiliar signature data in -+.B .sconsign -+files. -+These warnings are enabled by default. -+ -+.TP -+--warn=dependency, --warn=no-dependency -+Enables or disables warnings about dependencies. -+These warnings are disabled by default. -+ -+.TP -+--warn=deprecated, --warn=no-deprecated -+Enables or disables all warnings about use of -+currently deprecated features. -+These warnings are enabled by default. -+Note that the -+.B --warn=no-deprecated -+option does not disable warnings about absolutely all deprecated features. -+Warnings for some deprecated features that have already been through -+several releases with deprecation warnings -+may be mandatory for a release or two -+before they are officially no longer supported by SCons. -+Warnings for some specific deprecated features -+may be enabled or disabled individually; -+see below. -+ -+.RS -+.TP -+--warn=deprecated-copy, --warn=no-deprecated-copy -+Enables or disables warnings about use of the deprecated -+.B env.Copy() -+method. -+ -+.TP -+--warn=deprecated-source-signatures, --warn=no-deprecated-source-signatures -+Enables or disables warnings about use of the deprecated -+.B SourceSignatures() -+function or -+.B env.SourceSignatures() -+method. -+ -+.TP -+--warn=deprecated-target-signatures, --warn=no-deprecated-target-signatures -+Enables or disables warnings about use of the deprecated -+.B TargetSignatures() -+function or -+.B env.TargetSignatures() -+method. -+.RE -+ -+.TP -+--warn=duplicate-environment, --warn=no-duplicate-environment -+Enables or disables warnings about attempts to specify a build -+of a target with two different construction environments -+that use the same action. -+These warnings are enabled by default. -+ -+.TP -+--warn=fortran-cxx-mix, --warn=no-fortran-cxx-mix -+Enables or disables the specific warning about linking -+Fortran and C++ object files in a single executable, -+which can yield unpredictable behavior with some compilers. -+ -+.TP -+--warn=future-deprecated, --warn=no-future-deprecated -+Enables or disables warnings about features -+that will be deprecated in the future. -+These warnings are disabled by default. -+Enabling this warning is especially -+recommended for projects that redistribute -+SCons configurations for other users to build, -+so that the project can be warned as soon as possible -+about to-be-deprecated features -+that may require changes to the configuration. -+ -+.TP -+--warn=link, --warn=no-link -+Enables or disables warnings about link steps. -+ -+.TP -+--warn=misleading-keywords, --warn=no-misleading-keywords -+Enables or disables warnings about use of the misspelled keywords -+.B targets -+and -+.B sources -+when calling Builders. -+(Note the last -+.B s -+characters, the correct spellings are -+.B target -+and -+.B source.) -+These warnings are enabled by default. -+ -+.TP -+--warn=missing-sconscript, --warn=no-missing-sconscript -+Enables or disables warnings about missing SConscript files. -+These warnings are enabled by default. -+ -+.TP -+--warn=no-md5-module, --warn=no-no-md5-module -+Enables or disables warnings about the version of Python -+not having an MD5 checksum module available. -+These warnings are enabled by default. -+ -+.TP -+--warn=no-metaclass-support, --warn=no-no-metaclass-support -+Enables or disables warnings about the version of Python -+not supporting metaclasses when the -+.B --debug=memoizer -+option is used. -+These warnings are enabled by default. -+ -+.TP -+--warn=no-object-count, --warn=no-no-object-count -+Enables or disables warnings about the -+.B --debug=object -+feature not working when -+.B scons -+is run with the python -+.B \-O -+option or from optimized Python (.pyo) modules. -+ -+.TP -+--warn=no-parallel-support, --warn=no-no-parallel-support -+Enables or disables warnings about the version of Python -+not being able to support parallel builds when the -+.B -j -+option is used. -+These warnings are enabled by default. -+ -+.TP -+--warn=python-version, --warn=no-python-version -+Enables or disables the warning about running -+SCons with a deprecated version of Python. -+These warnings are enabled by default. -+ -+.TP -+--warn=reserved-variable, --warn=no-reserved-variable -+Enables or disables warnings about attempts to set the -+reserved construction variable names -+.BR CHANGED_SOURCES , -+.BR CHANGED_TARGETS , -+.BR TARGET , -+.BR TARGETS , -+.BR SOURCE , -+.BR SOURCES , -+.BR UNCHANGED_SOURCES -+or -+.BR UNCHANGED_TARGETS . -+These warnings are disabled by default. -+ -+.TP -+--warn=stack-size, --warn=no-stack-size -+Enables or disables warnings about requests to set the stack size -+that could not be honored. -+These warnings are enabled by default. -+ -+.\" .TP -+.\" .RI --write-filenames= file -+.\" Write all filenames considered into -+.\" .IR file . -+.\" -+.\" .TP -+.\" .RI -W " file" ", --what-if=" file ", --new-file=" file ", --assume-new=" file -+.\" Pretend that the target -+.\" .I file -+.\" has been -+.\" modified. When used with the -+.\" .B -n -+.\" option, this -+.\" show you what would be rebuilt if you were to modify that file. -+.\" Without -+.\" .B -n -+.\" ... what? XXX -+.\" -+.\" .TP -+.\" --warn-undefined-variables -+.\" Warn when an undefined variable is referenced. -+ -+.TP -+.RI -Y " repository" ", --repository=" repository ", --srcdir=" repository -+Search the specified repository for any input and target -+files not found in the local directory hierarchy. Multiple -+.B -Y -+options may be specified, in which case the -+repositories are searched in the order specified. -+ -+.SH CONFIGURATION FILE REFERENCE -+.\" .SS Python Basics -+.\" XXX Adding this in the future would be a help. -+.SS Construction Environments -+A construction environment is the basic means by which the SConscript -+files communicate build information to -+.BR scons . -+A new construction environment is created using the -+.B Environment -+function: -+ -+.ES -+env = Environment() -+.EE -+ -+Variables, called -+.I construction -+.IR variables , -+may be set in a construction environment -+either by specifying them as keywords when the object is created -+or by assigning them a value after the object is created: -+ -+.ES -+env = Environment(FOO = 'foo') -+env['BAR'] = 'bar' -+.EE -+ -+As a convenience, -+construction variables may also be set or modified by the -+.I parse_flags -+keyword argument, which applies the -+.B ParseFlags -+method (described below) to the argument value -+after all other processing is completed. -+This is useful either if the exact content of the flags is unknown -+(for example, read from a control file) -+or if the flags are distributed to a number of construction variables. -+ -+.ES -+env = Environment(parse_flags = '-Iinclude -DEBUG -lm') -+.EE -+ -+This example adds 'include' to -+.BR CPPPATH , -+\&'EBUG' to -+.BR CPPDEFINES , -+and 'm' to -+.BR LIBS . -+ -+By default, a new construction environment is -+initialized with a set of builder methods -+and construction variables that are appropriate -+for the current platform. -+An optional platform keyword argument may be -+used to specify that an environment should -+be initialized for a different platform: -+ -+.ES -+env = Environment(platform = 'cygwin') -+env = Environment(platform = 'os2') -+env = Environment(platform = 'posix') -+env = Environment(platform = 'win32') -+.EE -+ -+Specifying a platform initializes the appropriate -+construction variables in the environment -+to use and generate file names with prefixes -+and suffixes appropriate for the platform. -+ -+Note that the -+.B win32 -+platform adds the -+.B SystemDrive -+and -+.B SystemRoot -+variables from the user's external environment -+to the construction environment's -+.B ENV -+dictionary. -+This is so that any executed commands -+that use sockets to connect with other systems -+(such as fetching source files from -+external CVS repository specifications like -+.BR :pserver:anonymous@cvs.sourceforge.net:/cvsroot/scons ) -+will work on Windows systems. -+ -+The platform argument may be function or callable object, -+in which case the Environment() method -+will call the specified argument to update -+the new construction environment: -+ -+.ES -+def my_platform(env): -+ env['VAR'] = 'xyzzy' -+ -+env = Environment(platform = my_platform) -+.EE -+ -+Additionally, a specific set of tools -+with which to initialize the environment -+may be specified as an optional keyword argument: -+ -+.ES -+env = Environment(tools = ['msvc', 'lex']) -+.EE -+ -+Non-built-in tools may be specified using the toolpath argument: -+ -+.ES -+env = Environment(tools = ['default', 'foo'], toolpath = ['tools']) -+.EE -+ -+This looks for a tool specification in tools/foo.py (as well as -+using the ordinary default tools for the platform). foo.py should -+have two functions: generate(env, **kw) and exists(env). -+The -+.B generate() -+function -+modifies the passed-in environment -+to set up variables so that the tool -+can be executed; -+it may use any keyword arguments -+that the user supplies (see below) -+to vary its initialization. -+The -+.B exists() -+function should return a true -+value if the tool is available. -+Tools in the toolpath are used before -+any of the built-in ones. For example, adding gcc.py to the toolpath -+would override the built-in gcc tool. -+Also note that the toolpath is -+stored in the environment for use -+by later calls to -+.BR Clone () -+and -+.BR Tool () -+methods: -+ -+.ES -+base = Environment(toolpath=['custom_path']) -+derived = base.Clone(tools=['custom_tool']) -+derived.CustomBuilder() -+.EE -+ -+The elements of the tools list may also -+be functions or callable objects, -+in which case the Environment() method -+will call the specified elements -+to update the new construction environment: -+ -+.ES -+def my_tool(env): -+ env['XYZZY'] = 'xyzzy' -+ -+env = Environment(tools = [my_tool]) -+.EE -+ -+The individual elements of the tools list -+may also themselves be two-element lists of the form -+.RI ( toolname ", " kw_dict ). -+SCons searches for the -+.I toolname -+specification file as described above, and -+passes -+.IR kw_dict , -+which must be a dictionary, as keyword arguments to the tool's -+.B generate -+function. -+The -+.B generate -+function can use the arguments to modify the tool's behavior -+by setting up the environment in different ways -+or otherwise changing its initialization. -+ -+.ES -+# in tools/my_tool.py: -+def generate(env, **kw): -+ # Sets MY_TOOL to the value of keyword argument 'arg1' or 1. -+ env['MY_TOOL'] = kw.get('arg1', '1') -+def exists(env): -+ return 1 -+ -+# in SConstruct: -+env = Environment(tools = ['default', ('my_tool', {'arg1': 'abc'})], -+ toolpath=['tools']) -+.EE -+ -+The tool definition (i.e. my_tool()) can use the PLATFORM variable from -+the environment it receives to customize the tool for different platforms. -+ -+If no tool list is specified, then SCons will auto-detect the installed -+tools using the PATH variable in the ENV construction variable and the -+platform name when the Environment is constructed. Changing the PATH -+variable after the Environment is constructed will not cause the tools to -+be redetected. -+ -+SCons supports the following tool specifications out of the box: -+ -+.ES -+386asm -+aixc++ -+aixcc -+aixf77 -+aixlink -+ar -+as -+bcc32 -+c++ -+cc -+cvf -+dmd -+dvipdf -+dvips -+f77 -+f90 -+f95 -+fortran -+g++ -+g77 -+gas -+gcc -+gfortran -+gnulink -+gs -+hpc++ -+hpcc -+hplink -+icc -+icl -+ifl -+ifort -+ilink -+ilink32 -+intelc -+jar -+javac -+javah -+latex -+lex -+link -+linkloc -+m4 -+masm -+midl -+mingw -+mslib -+mslink -+mssdk -+msvc -+msvs -+mwcc -+mwld -+nasm -+pdflatex -+pdftex -+qt -+rmic -+rpcgen -+sgiar -+sgic++ -+sgicc -+sgilink -+sunar -+sunc++ -+suncc -+sunf77 -+sunf90 -+sunf95 -+sunlink -+swig -+tar -+tex -+textfile -+tlib -+yacc -+zip -+.EE -+ -+Additionally, there is a "tool" named -+.B default -+which configures the -+environment with a default set of tools for the current platform. -+ -+On posix and cygwin platforms -+the GNU tools (e.g. gcc) are preferred by SCons, -+on Windows the Microsoft tools (e.g. msvc) -+followed by MinGW are preferred by SCons, -+and in OS/2 the IBM tools (e.g. icc) are preferred by SCons. -+ -+.SS Builder Methods -+ -+Build rules are specified by calling a construction -+environment's builder methods. -+The arguments to the builder methods are -+.B target -+(a list of targets to be built, -+usually file names) -+and -+.B source -+(a list of sources to be built, -+usually file names). -+ -+Because long lists of file names -+can lead to a lot of quoting, -+.B scons -+supplies a -+.B Split() -+global function -+and a same-named environment method -+that split a single string -+into a list, separated on -+strings of white-space characters. -+(These are similar to the split() member function of Python strings -+but work even if the input isn't a string.) -+ -+Like all Python arguments, -+the target and source arguments to a builder method -+can be specified either with or without -+the "target" and "source" keywords. -+When the keywords are omitted, -+the target is first, -+followed by the source. -+The following are equivalent examples of calling the Program builder method: -+ -+.ES -+env.Program('bar', ['bar.c', 'foo.c']) -+env.Program('bar', Split('bar.c foo.c')) -+env.Program('bar', env.Split('bar.c foo.c')) -+env.Program(source = ['bar.c', 'foo.c'], target = 'bar') -+env.Program(target = 'bar', Split('bar.c foo.c')) -+env.Program(target = 'bar', env.Split('bar.c foo.c')) -+env.Program('bar', source = 'bar.c foo.c'.split()) -+.EE -+ -+Target and source file names -+that are not absolute path names -+(that is, do not begin with -+.B / -+on POSIX systems -+or -+.B \\ -+on Windows systems, -+with or without -+an optional drive letter) -+are interpreted relative to the directory containing the -+.B SConscript -+file being read. -+An initial -+.B # -+(hash mark) -+on a path name means that the rest of the file name -+is interpreted relative to -+the directory containing -+the top-level -+.B SConstruct -+file, -+even if the -+.B # -+is followed by a directory separator character -+(slash or backslash). -+ -+Examples: -+ -+.ES -+# The comments describing the targets that will be built -+# assume these calls are in a SConscript file in the -+# a subdirectory named "subdir". -+ -+# Builds the program "subdir/foo" from "subdir/foo.c": -+env.Program('foo', 'foo.c') -+ -+# Builds the program "/tmp/bar" from "subdir/bar.c": -+env.Program('/tmp/bar', 'bar.c') -+ -+# An initial '#' or '#/' are equivalent; the following -+# calls build the programs "foo" and "bar" (in the -+# top-level SConstruct directory) from "subdir/foo.c" and -+# "subdir/bar.c", respectively: -+env.Program('#foo', 'foo.c') -+env.Program('#/bar', 'bar.c') -+ -+# Builds the program "other/foo" (relative to the top-level -+# SConstruct directory) from "subdir/foo.c": -+env.Program('#other/foo', 'foo.c') -+.EE -+ -+When the target shares the same base name -+as the source and only the suffix varies, -+and if the builder method has a suffix defined for the target file type, -+then the target argument may be omitted completely, -+and -+.B scons -+will deduce the target file name from -+the source file name. -+The following examples all build the -+executable program -+.B bar -+(on POSIX systems) -+or -+.B bar.exe -+(on Windows systems) -+from the bar.c source file: -+ -+.ES -+env.Program(target = 'bar', source = 'bar.c') -+env.Program('bar', source = 'bar.c') -+env.Program(source = 'bar.c') -+env.Program('bar.c') -+.EE -+ -+As a convenience, a -+.B srcdir -+keyword argument may be specified -+when calling a Builder. -+When specified, -+all source file strings that are not absolute paths -+will be interpreted relative to the specified -+.BR srcdir . -+The following example will build the -+.B build/prog -+(or -+.B build/prog.exe -+on Windows) -+program from the files -+.B src/f1.c -+and -+.BR src/f2.c : -+ -+.ES -+env.Program('build/prog', ['f1.c', 'f2.c'], srcdir='src') -+.EE -+ -+It is possible to override or add construction variables when calling a -+builder method by passing additional keyword arguments. -+These overridden or added -+variables will only be in effect when building the target, so they will not -+affect other parts of the build. For example, if you want to add additional -+libraries for just one program: -+ -+.ES -+env.Program('hello', 'hello.c', LIBS=['gl', 'glut']) -+.EE -+ -+or generate a shared library with a non-standard suffix: -+ -+.ES -+env.SharedLibrary('word', 'word.cpp', -+ SHLIBSUFFIX='.ocx', -+ LIBSUFFIXES=['.ocx']) -+.EE -+ -+(Note that both the $SHLIBSUFFIX and $LIBSUFFIXES variables must be set -+if you want SCons to search automatically -+for dependencies on the non-standard library names; -+see the descriptions of these variables, below, for more information.) -+ -+It is also possible to use the -+.I parse_flags -+keyword argument in an override: -+ -+.ES -+env = Program('hello', 'hello.c', parse_flags = '-Iinclude -DEBUG -lm') -+.EE -+ -+This example adds 'include' to -+.BR CPPPATH , -+\&'EBUG' to -+.BR CPPDEFINES , -+and 'm' to -+.BR LIBS . -+ -+Although the builder methods defined by -+.B scons -+are, in fact, -+methods of a construction environment object, -+they may also be called without an explicit environment: -+ -+.ES -+Program('hello', 'hello.c') -+SharedLibrary('word', 'word.cpp') -+.EE -+ -+In this case, -+the methods are called internally using a default construction -+environment that consists of the tools and values that -+.B scons -+has determined are appropriate for the local system. -+ -+Builder methods that can be called without an explicit -+environment may be called from custom Python modules that you -+import into an SConscript file by adding the following -+to the Python module: -+ -+.ES -+from SCons.Script import * -+.EE -+ -+All builder methods return a list-like object -+containing Nodes that -+represent the target or targets that will be built. -+A -+.I Node -+is an internal SCons object -+which represents -+build targets or sources. -+ -+The returned Node-list object -+can be passed to other builder methods as source(s) -+or passed to any SCons function or method -+where a filename would normally be accepted. -+For example, if it were necessary -+to add a specific -+.B -D -+flag when compiling one specific object file: -+ -+.ES -+bar_obj_list = env.StaticObject('bar.c', CPPDEFINES='-DBAR') -+env.Program(source = ['foo.c', bar_obj_list, 'main.c']) -+.EE -+ -+Using a Node in this way -+makes for a more portable build -+by avoiding having to specify -+a platform-specific object suffix -+when calling the Program() builder method. -+ -+Note that Builder calls will automatically "flatten" -+the source and target file lists, -+so it's all right to have the bar_obj list -+return by the StaticObject() call -+in the middle of the source file list. -+If you need to manipulate a list of lists returned by Builders -+directly using Python, -+you can either build the list by hand: -+ -+.ES -+foo = Object('foo.c') -+bar = Object('bar.c') -+objects = ['begin.o'] + foo + ['middle.o'] + bar + ['end.o'] -+for object in objects: -+ print str(object) -+.EE -+ -+Or you can use the -+.BR Flatten () -+function supplied by scons -+to create a list containing just the Nodes, -+which may be more convenient: -+ -+.ES -+foo = Object('foo.c') -+bar = Object('bar.c') -+objects = Flatten(['begin.o', foo, 'middle.o', bar, 'end.o']) -+for object in objects: -+ print str(object) -+.EE -+ -+Note also that because Builder calls return -+a list-like object, not an actual Python list, -+you should -+.I not -+use the Python -+.B += -+operator to append Builder results to a Python list. -+Because the list and the object are different types, -+Python will not update the original list in place, -+but will instead create a new Node-list object -+containing the concatenation of the list -+elements and the Builder results. -+This will cause problems for any other Python variables -+in your SCons configuration -+that still hold on to a reference to the original list. -+Instead, use the Python -+.B .extend() -+method to make sure the list is updated in-place. -+Example: -+ -+.ES -+object_files = [] -+ -+# Do NOT use += as follows: -+# -+# object_files += Object('bar.c') -+# -+# It will not update the object_files list in place. -+# -+# Instead, use the .extend() method: -+object_files.extend(Object('bar.c')) -+ -+.EE -+ -+The path name for a Node's file may be used -+by passing the Node to the Python-builtin -+.B str() -+function: -+ -+.ES -+bar_obj_list = env.StaticObject('bar.c', CPPDEFINES='-DBAR') -+print "The path to bar_obj is:", str(bar_obj_list[0]) -+.EE -+ -+Note again that because the Builder call returns a list, -+we have to access the first element in the list -+.B (bar_obj_list[0]) -+to get at the Node that actually represents -+the object file. -+ -+Builder calls support a -+.B chdir -+keyword argument that -+specifies that the Builder's action(s) -+should be executed -+after changing directory. -+If the -+.B chdir -+argument is -+a string or a directory Node, -+scons will change to the specified directory. -+If the -+.B chdir -+is not a string or Node -+and is non-zero, -+then scons will change to the -+target file's directory. -+ -+.ES -+# scons will change to the "sub" subdirectory -+# before executing the "cp" command. -+env.Command('sub/dir/foo.out', 'sub/dir/foo.in', -+ "cp dir/foo.in dir/foo.out", -+ chdir='sub') -+ -+# Because chdir is not a string, scons will change to the -+# target's directory ("sub/dir") before executing the -+# "cp" command. -+env.Command('sub/dir/foo.out', 'sub/dir/foo.in', -+ "cp foo.in foo.out", -+ chdir=1) -+.EE -+ -+Note that scons will -+.I not -+automatically modify -+its expansion of -+construction variables like -+.B $TARGET -+and -+.B $SOURCE -+when using the chdir -+keyword argument--that is, -+the expanded file names -+will still be relative to -+the top-level SConstruct directory, -+and consequently incorrect -+relative to the chdir directory. -+If you use the chdir keyword argument, -+you will typically need to supply a different -+command line using -+expansions like -+.B ${TARGET.file} -+and -+.B ${SOURCE.file} -+to use just the filename portion of the -+targets and source. -+ -+.B scons -+provides the following builder methods: -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+'\" BEGIN GENERATED BUILDER DESCRIPTIONS -+'\" -+'\" The descriptions below of the various SCons Builders are generated -+'\" from the .xml files that live next to the various Python modules in -+'\" the build enginer library. If you're reading this [gnt]roff file -+'\" with an eye towards patching this man page, you can still submit -+'\" a diff against this text, but it will have to be translated to a -+'\" diff against the underlying .xml file before the patch is actually -+'\" accepted. If you do that yourself, it will make it easier to -+'\" integrate the patch. -+'\" -+'\" BEGIN GENERATED BUILDER DESCRIPTIONS -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.IP CFile() -+.IP env.CFile() -+Builds a C source file given a lex (\fB.l\fP) -+or yacc (\fB.y\fP) input file. -+The suffix specified by the \fB$CFILESUFFIX\fP construction variable -+(\fB.c\fP by default) -+is automatically added to the target -+if it is not already present. -+Example: -+ -+.ES -+# builds foo.c -+env.CFile(target = 'foo.c', source = 'foo.l') -+# builds bar.c -+env.CFile(target = 'bar', source = 'bar.y') -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.IP Command() -+.IP env.Command() -+The \fBCommand\fP() "Builder" is actually implemented -+as a function that looks like a Builder, -+but actually takes an additional argument of the action -+from which the Builder should be made. -+See the \fBCommand\fP() function description -+for the calling syntax and details. -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.IP CXXFile() -+.IP env.CXXFile() -+Builds a C++ source file given a lex (\fB.ll\fP) -+or yacc (\fB.yy\fP) -+input file. -+The suffix specified by the \fB$CXXFILESUFFIX\fP construction variable -+(\fB.cc\fP by default) -+is automatically added to the target -+if it is not already present. -+Example: -+ -+.ES -+# builds foo.cc -+env.CXXFile(target = 'foo.cc', source = 'foo.ll') -+# builds bar.cc -+env.CXXFile(target = 'bar', source = 'bar.yy') -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.IP DVI() -+.IP env.DVI() -+Builds a \fB.dvi\fP file -+from a \fB.tex\fP, -+\fB.ltx\fP or \fB.latex\fP input file. -+If the source file suffix is \fB.tex\fP, -+.B scons -+will examine the contents of the file; -+if the string -+.B \\documentclass -+or -+.B \\documentstyle -+is found, the file is assumed to be a LaTeX file and -+the target is built by invoking the \fB$LATEXCOM\fP command line; -+otherwise, the \fB$TEXCOM\fP command line is used. -+If the file is a LaTeX file, -+the -+.BR DVI () -+builder method will also examine the contents -+of the -+.B .aux -+file and invoke the \fB$BIBTEX\fP command line -+if the string -+.B bibdata -+is found, -+start \fB$MAKEINDEX\fP to generate an index if a -+.B .ind -+file is found -+and will examine the contents -+.B .log -+file and re-run the \fB$LATEXCOM\fP command -+if the log file says it is necessary. -+ -+The suffix \fB.dvi\fP -+(hard-coded within TeX itself) -+is automatically added to the target -+if it is not already present. -+Examples: -+ -+.ES -+# builds from aaa.tex -+env.DVI(target = 'aaa.dvi', source = 'aaa.tex') -+# builds bbb.dvi -+env.DVI(target = 'bbb', source = 'bbb.ltx') -+# builds from ccc.latex -+env.DVI(target = 'ccc.dvi', source = 'ccc.latex') -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.IP Install() -+.IP env.Install() -+Installs one or more source files or directories -+in the specified target, -+which must be a directory. -+The names of the specified source files or directories -+remain the same within the destination directory. The -+sources may be given as a string or as a node returned by -+a builder. -+ -+.ES -+env.Install('/usr/local/bin', source = ['foo', 'bar']) -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.IP InstallAs() -+.IP env.InstallAs() -+Installs one or more source files or directories -+to specific names, -+allowing changing a file or directory name -+as part of the installation. -+It is an error if the -+target -+and -+source -+arguments list different numbers of files or directories. -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.IP InstallVersionedLib() -+.IP env.InstallVersionedLib() -+Installs a versioned shared library. The \fB$SHLIBVERSION\fP -+construction variable should be defined in the environment -+to confirm the version number in the library name. -+The symlinks appropriate to the architecture will be generated. -+ -+.ES -+env.InstallAs(target = '/usr/local/bin/foo', -+ source = 'foo_debug') -+env.InstallAs(target = ['../lib/libfoo.a', '../lib/libbar.a'], -+ source = ['libFOO.a', 'libBAR.a']) -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.IP Jar() -+.IP env.Jar() -+Builds a Java archive (\fB.jar\fP) file -+from the specified list of sources. -+Any directories in the source list -+will be searched for \fB.class\fP files). -+Any \fB.java\fP files in the source list -+will be compiled to \fB.class\fP files -+by calling the \fBJava\fP() Builder. -+ -+If the \fB$JARCHDIR\fP value is set, the -+.B jar -+command will change to the specified directory using the -+.B \-C -+option. -+If \fB$JARCHDIR\fP is not set explicitly, -+&SCons; will use the top of any subdirectory tree -+in which Java \fB.class\fP -+were built by the \fBJava\fP() Builder. -+ -+If the contents any of the source files begin with the string -+.BR Manifest-Version , -+the file is assumed to be a manifest -+and is passed to the -+.B jar -+command with the -+.B m -+option set. -+ -+.ES -+env.Jar(target = 'foo.jar', source = 'classes') -+ -+env.Jar(target = 'bar.jar', -+ source = ['bar1.java', 'bar2.java']) -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.IP Java() -+.IP env.Java() -+Builds one or more Java class files. -+The sources may be any combination of explicit -+\fB.java\fP files, -+or directory trees which will be scanned -+for \fB.java\fP files. -+ -+SCons will parse each source \fB.java\fP file -+to find the classes -+(including inner classes) -+defined within that file, -+and from that figure out the -+target \fB.class\fP files that will be created. -+The class files will be placed underneath -+the specified target directory. -+ -+SCons will also search each Java file -+for the Java package name, -+which it assumes can be found on a line -+beginning with the string -+.B package -+in the first column; -+the resulting \fB.class\fP files -+will be placed in a directory reflecting -+the specified package name. -+For example, -+the file -+.B Foo.java -+defining a single public -+.I Foo -+class and -+containing a package name of -+.I sub.dir -+will generate a corresponding -+.B sub/dir/Foo.class -+class file. -+ -+Examples: -+ -+.ES -+env.Java(target = 'classes', source = 'src') -+env.Java(target = 'classes', source = ['src1', 'src2']) -+env.Java(target = 'classes', source = ['File1.java', 'File2.java']) -+.EE -+.IP -+Java source files can use the native encoding for the underlying OS. -+Since SCons compiles in simple ASCII mode by default, -+the compiler will generate warnings about unmappable characters, -+which may lead to errors as the file is processed further. -+In this case, the user must specify the \fBLANG\fP -+environment variable to tell the compiler what encoding is used. -+For portibility, it's best if the encoding is hard-coded -+so that the compile will work if it is done on a system -+with a different encoding. -+ -+.ES -+env = Environment() -+env['ENV']['LANG'] = 'en_GB.UTF-8' -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.IP JavaH() -+.IP env.JavaH() -+Builds C header and source files for -+implementing Java native methods. -+The target can be either a directory -+in which the header files will be written, -+or a header file name which -+will contain all of the definitions. -+The source can be the names of \fB.class\fP files, -+the names of \fB.java\fP files -+to be compiled into \fB.class\fP files -+by calling the \fBJava\fP() builder method, -+or the objects returned from the -+.BR Java () -+builder method. -+ -+If the construction variable -+.B $JAVACLASSDIR -+is set, either in the environment -+or in the call to the -+.BR JavaH () -+builder method itself, -+then the value of the variable -+will be stripped from the -+beginning of any \fB.class\fP file names. -+ -+Examples: -+ -+.ES -+# builds java_native.h -+classes = env.Java(target = 'classdir', source = 'src') -+env.JavaH(target = 'java_native.h', source = classes) -+ -+# builds include/package_foo.h and include/package_bar.h -+env.JavaH(target = 'include', -+ source = ['package/foo.class', 'package/bar.class']) -+ -+# builds export/foo.h and export/bar.h -+env.JavaH(target = 'export', -+ source = ['classes/foo.class', 'classes/bar.class'], -+ JAVACLASSDIR = 'classes') -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.IP Library() -+.IP env.Library() -+A synonym for the -+.BR StaticLibrary () -+builder method. -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.IP LoadableModule() -+.IP env.LoadableModule() -+On most systems, -+this is the same as -+.BR SharedLibrary (). -+On Mac OS X (Darwin) platforms, -+this creates a loadable module bundle. -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.IP M4() -+.IP env.M4() -+Builds an output file from an M4 input file. -+This uses a default \fB$M4FLAGS\fP value of -+.BR \-E , -+which considers all warnings to be fatal -+and stops on the first warning -+when using the GNU version of m4. -+Example: -+ -+.ES -+env.M4(target = 'foo.c', source = 'foo.c.m4') -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.IP Moc() -+.IP env.Moc() -+Builds an output file from a moc input file. Moc input files are either -+header files or cxx files. This builder is only available after using the -+tool 'qt'. See the \fB$QTDIR\fP variable for more information. -+Example: -+ -+.ES -+env.Moc('foo.h') # generates moc_foo.cc -+env.Moc('foo.cpp') # generates foo.moc -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.IP MOFiles() -+.IP env.MOFiles() -+This builder belongs to &t-link-msgfmt; tool. The builder compiles -+\fBPO\fP files to \fBMO\fP files. -+ -+.IR Example 1 . -+Create \fBpl.mo\fP and \fBen.mo\fP by compiling -+.BR pl.po\fP and \fBen.po : -+.ES -+ # ... -+ env.MOFiles(['pl', 'en']) -+.EE -+.IP -+.IR Example 2 . -+Compile files for languages defined in \fBLINGUAS\fP file: -+.ES -+ # ... -+ env.MOFiles(LINGUAS_FILE = 1) -+.EE -+.IP -+.IR Example 3 . -+Create \fBpl.mo\fP and \fBen.mo\fP by compiling -+\fBpl.po\fP and \fBen.po\fP plus files for -+languages defined in \fBLINGUAS\fP file: -+.ES -+ # ... -+ env.MOFiles(['pl', 'en'], LINGUAS_FILE = 1) -+.EE -+.IP -+.IR Example 4 . -+Compile files for languages defined in \fBLINGUAS\fP file -+(another version): -+.ES -+ # ... -+ env['LINGUAS_FILE'] = 1 -+ env.MOFiles() -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.IP MSVSProject() -+.IP env.MSVSProject() -+Builds a Microsoft Visual Studio project file, -+and by default builds a solution file as well. -+ -+This builds a Visual Studio project file, based on the version of -+Visual Studio that is configured (either the latest installed version, -+or the version specified by -+.B $MSVS_VERSION -+in the Environment constructor). -+For Visual Studio 6, it will generate a -+.B .dsp -+file. -+For Visual Studio 7 (.NET) and later versions, it will generate a -+.B .vcproj -+file. -+ -+By default, -+this also generates a solution file -+for the specified project, -+a -+.B .dsw -+file for Visual Studio 6 -+or a -+.B .sln -+file for Visual Studio 7 (.NET). -+This behavior may be disabled by specifying -+.B auto_build_solution=0 -+when you call -+.BR MSVSProject (), -+in which case you presumably want to -+build the solution file(s) -+by calling the -+.BR MSVSSolution () -+Builder (see below). -+ -+The \fBMSVSProject\fP() builder -+takes several lists of filenames -+to be placed into the project file. -+These are currently limited to -+.BR srcs , -+.BR incs , -+.BR localincs , -+.BR resources , -+and -+.BR misc . -+These are pretty self-explanatory, but it should be noted that these -+lists are added to the \fB$SOURCES\fP construction variable as strings, -+NOT as SCons File Nodes. This is because they represent file -+names to be added to the project file, not the source files used to -+build the project file. -+ -+The above filename lists are all optional, -+although at least one must be specified -+for the resulting project file to be non-empty. -+ -+In addition to the above lists of values, -+the following values may be specified: -+ -+.BR target : -+The name of the target -+.B .dsp -+or -+.B .vcproj -+file. -+The correct -+suffix for the version of Visual Studio must be used, -+but the -+.B $MSVSPROJECTSUFFIX -+construction variable -+will be defined to the correct value (see example below). -+ -+.BR variant : -+The name of this particular variant. -+For Visual Studio 7 projects, -+this can also be a list of variant names. -+These are typically things like "Debug" or "Release", but really -+can be anything you want. -+For Visual Studio 7 projects, -+they may also specify a target platform -+separated from the variant name by a -+.B | -+(vertical pipe) -+character: -+.BR Debug|Xbox . -+The default target platform is Win32. -+Multiple calls to -+.BR MSVSProject () -+with different variants are allowed; -+all variants will be added to the project file with their appropriate -+build targets and sources. -+ -+.BR buildtarget : -+An optional string, node, or list of strings or nodes -+(one per build variant), to tell the Visual Studio debugger -+what output target to use in what build variant. -+The number of -+.B buildtarget -+entries must match the number of -+.B variant -+entries. -+ -+.BR runfile : -+The name of the file that Visual Studio 7 and later -+will run and debug. -+This appears as the value of the -+.B Output -+field in the resutling Visual Studio project file. -+If this is not specified, -+the default is the same as the specified -+.B buildtarget -+value. -+ -+Note that because &SCons; always executes its build commands -+from the directory in which the \fBSConstruct\fP file is located, -+if you generate a project file in a different directory -+than the \fBSConstruct\fP directory, -+users will not be able to double-click -+on the file name in compilation error messages -+displayed in the Visual Studio console output window. -+This can be remedied by adding the -+Visual C/C++ -+.B /FC -+compiler option to the \fB$CCFLAGS\fP variable -+so that the compiler will print -+the full path name of any -+files that cause compilation errors. -+ -+Example usage: -+ -+.ES -+barsrcs = ['bar.cpp'], -+barincs = ['bar.h'], -+barlocalincs = ['StdAfx.h'] -+barresources = ['bar.rc','resource.h'] -+barmisc = ['bar_readme.txt'] -+ -+dll = env.SharedLibrary(target = 'bar.dll', -+ source = barsrcs) -+ -+env.MSVSProject(target = 'Bar' + env['MSVSPROJECTSUFFIX'], -+ srcs = barsrcs, -+ incs = barincs, -+ localincs = barlocalincs, -+ resources = barresources, -+ misc = barmisc, -+ buildtarget = dll, -+ variant = 'Release') -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.IP MSVSSolution() -+.IP env.MSVSSolution() -+Builds a Microsoft Visual Studio solution file. -+ -+This builds a Visual Studio solution file, -+based on the version of Visual Studio that is configured -+(either the latest installed version, -+or the version specified by -+.B $MSVS_VERSION -+in the construction environment). -+For Visual Studio 6, it will generate a -+.B .dsw -+file. -+For Visual Studio 7 (.NET), it will -+generate a -+.B .sln -+file. -+ -+The following values must be specified: -+ -+.BR target : -+The name of the target .dsw or .sln file. The correct -+suffix for the version of Visual Studio must be used, but the value -+.B $MSVSSOLUTIONSUFFIX -+will be defined to the correct value (see example below). -+ -+.BR variant : -+The name of this particular variant, or a list of variant -+names (the latter is only supported for MSVS 7 solutions). These are -+typically things like "Debug" or "Release", but really can be anything -+you want. For MSVS 7 they may also specify target platform, like this -+"Debug|Xbox". Default platform is Win32. -+ -+.BR projects : -+A list of project file names, or Project nodes returned by calls to the -+.BR MSVSProject () -+Builder, -+to be placed into the solution file. -+It should be noted that these file names are NOT added to the $SOURCES -+environment variable in form of files, but rather as strings. This -+is because they represent file names to be added to the solution file, -+not the source files used to build the solution file. -+ -+Example Usage: -+ -+.ES -+env.MSVSSolution(target = 'Bar' + env['MSVSSOLUTIONSUFFIX'], -+ projects = ['bar' + env['MSVSPROJECTSUFFIX']], -+ variant = 'Release') -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.IP Object() -+.IP env.Object() -+A synonym for the -+.BR StaticObject () -+builder method. -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.IP Package() -+.IP env.Package() -+Builds software distribution packages. -+Packages consist of files to install and packaging information. -+The former may be specified with the \fIsource\fP parameter and may be left out, -+in which case the &FindInstalledFiles; function will collect -+all files that have an \fBInstall\fP() or \fBInstallAs\fP() Builder attached. -+If the \fItarget\fP is not specified -+it will be deduced from additional information given to this Builder. -+ -+The packaging information is specified -+with the help of construction variables documented below. -+This information is called a tag to stress that -+some of them can also be attached to files with the &Tag; function. -+The mandatory ones will complain if they were not specified. -+They vary depending on chosen target packager. -+ -+The target packager may be selected with the "PACKAGETYPE" command line -+option or with the \fB$PACKAGETYPE\fP construction variable. Currently -+the following packagers available: -+ -+ * msi - Microsoft Installer -+ * rpm - Redhat Package Manger -+ * ipkg - Itsy Package Management System -+ * tarbz2 - compressed tar -+ * targz - compressed tar -+ * zip - zip file -+ * src_tarbz2 - compressed tar source -+ * src_targz - compressed tar source -+ * src_zip - zip file source -+ -+An updated list is always available under the "package_type" option when -+running "scons --help" on a project that has packaging activated. -+.ES -+env = Environment(tools=['default', 'packaging']) -+env.Install('/bin/', 'my_program') -+env.Package( NAME = 'foo', -+ VERSION = '1.2.3', -+ PACKAGEVERSION = 0, -+ PACKAGETYPE = 'rpm', -+ LICENSE = 'gpl', -+ SUMMARY = 'balalalalal', -+ DESCRIPTION = 'this should be really really long', -+ X_RPM_GROUP = 'Application/fu', -+ SOURCE_URL = 'http://foo.org/foo-1.2.3.tar.gz' -+ ) -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.IP PCH() -+.IP env.PCH() -+Builds a Microsoft Visual C++ precompiled header. -+Calling this builder method -+returns a list of two targets: the PCH as the first element, and the object -+file as the second element. Normally the object file is ignored. -+This builder method is only -+provided when Microsoft Visual C++ is being used as the compiler. -+The PCH builder method is generally used in -+conjunction with the PCH construction variable to force object files to use -+the precompiled header: -+ -+.ES -+env['PCH'] = env.PCH('StdAfx.cpp')[0] -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.IP PDF() -+.IP env.PDF() -+Builds a \fB.pdf\fP file -+from a \fB.dvi\fP input file -+(or, by extension, a \fB.tex\fP, -+.BR .ltx , -+or -+\fB.latex\fP input file). -+The suffix specified by the \fB$PDFSUFFIX\fP construction variable -+(\fB.pdf\fP by default) -+is added automatically to the target -+if it is not already present. Example: -+ -+.ES -+# builds from aaa.tex -+env.PDF(target = 'aaa.pdf', source = 'aaa.tex') -+# builds bbb.pdf from bbb.dvi -+env.PDF(target = 'bbb', source = 'bbb.dvi') -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.IP POInit() -+.IP env.POInit() -+This builder belongs to &t-link-msginit; tool. The builder initializes missing -+\fBPO\fP file(s) if \fB$POAUTOINIT\fP is set. If -+\fB$POAUTOINIT\fP is not set (default), \fBPOInit\fP() prints instruction for -+user (that is supposed to be a translator), telling how the -+\fBPO\fP file should be initialized. In normal projects -+.IR you should not use \fBPOInit\fP() and use \fBPOUpdate () -+instead\fP. \fBPOUpdate\fP() chooses intelligently between -+.BR msgmerge(1)\fP and \fBmsginit(1)\fP. \fBPOInit () -+always uses \fBmsginit(1)\fP and should be regarded as builder for -+special purposes or for temporary use (e.g. for quick, one time initialization -+of a bunch of \fBPO\fP files) or for tests. -+ -+Target nodes defined through \fBPOInit\fP() are not built by default (they're -+\fBIgnore\fPd from \fB'.'\fP node) but are added to -+special \fBAlias\fP (\fB'po-create'\fP by default). -+The alias name may be changed through the \fB$POCREATE_ALIAS\fP -+construction variable. All \fBPO\fP files defined through -+.BR POInit\fP() may be easily initialized by \fBscons po-create . -+ -+.IR Example 1 . -+Initialize \fBen.po\fP and \fBpl.po\fP from -+.BR messages.pot : -+.ES -+ # ... -+ env.POInit(['en', 'pl']) # messages.pot --> [en.po, pl.po] -+.EE -+.IP -+.IR Example 2 . -+Initialize \fBen.po\fP and \fBpl.po\fP from -+.BR foo.pot : -+.ES -+ # ... -+ env.POInit(['en', 'pl'], ['foo']) # foo.pot --> [en.po, pl.po] -+.EE -+.IP -+.IR Example 3 . -+Initialize \fBen.po\fP and \fBpl.po\fP from -+\fBfoo.pot\fP but using \fB$POTDOMAIN\fP construction -+variable: -+.ES -+ # ... -+ env.POInit(['en', 'pl'], POTDOMAIN='foo') # foo.pot --> [en.po, pl.po] -+.EE -+.IP -+.IR Example 4 . -+Initialize \fBPO\fP files for languages defined in -+\fBLINGUAS\fP file. The files will be initialized from template -+.BR messages.pot : -+.ES -+ # ... -+ env.POInit(LINGUAS_FILE = 1) # needs 'LINGUAS' file -+.EE -+.IP -+.IR Example 5 . -+Initialize \fBen.po\fP and \fBpl.pl\fP -+\fBPO\fP files plus files for languages defined in -+\fBLINGUAS\fP file. The files will be initialized from template -+.BR messages.pot : -+.ES -+ # ... -+ env.POInit(['en', 'pl'], LINGUAS_FILE = 1) -+.EE -+.IP -+.IR Example 6 . -+You may preconfigure your environment first, and then initialize -+\fBPO\fP files: -+.ES -+ # ... -+ env['POAUTOINIT'] = 1 -+ env['LINGUAS_FILE'] = 1 -+ env['POTDOMAIN'] = 'foo' -+ env.POInit() -+.EE -+which has same efect as: -+.ES -+ # ... -+ env.POInit(POAUTOINIT = 1, LINGUAS_FILE = 1, POTDOMAIN = 'foo') -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.IP PostScript() -+.IP env.PostScript() -+Builds a \fB.ps\fP file -+from a \fB.dvi\fP input file -+(or, by extension, a \fB.tex\fP, -+.BR .ltx , -+or -+\fB.latex\fP input file). -+The suffix specified by the \fB$PSSUFFIX\fP construction variable -+(\fB.ps\fP by default) -+is added automatically to the target -+if it is not already present. Example: -+ -+.ES -+# builds from aaa.tex -+env.PostScript(target = 'aaa.ps', source = 'aaa.tex') -+# builds bbb.ps from bbb.dvi -+env.PostScript(target = 'bbb', source = 'bbb.dvi') -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.IP POTUpdate() -+.IP env.POTUpdate() -+The builder belongs to &t-link-xgettext; tool. The builder updates target -+\fBPOT\fP file if exists or creates one if it doesn't. The node is -+not built by default (i.e. it is \fBIgnore\fPd from -+\fB'.'\fP), but only on demand (i.e. when given -+\fBPOT\fP file is required or when special alias is invoked). This -+builder adds its targe node (\fBmessages.pot\fP, say) to a -+special alias (\fBpot-update\fP by default, see -+\fB$POTUPDATE_ALIAS\fP) so you can update/create them easily with -+\fBscons pot-update\fP. The file is not written until there is no -+real change in internationalized messages (or in comments that enter -+\fBPOT\fP file). -+ -+ -+You may see \fBxgettext(1)\fP being invoked by the -+&t-link-xgettext; tool even if there is no real change in internationalized -+messages (so the \fBPOT\fP file is not being updated). This -+happens every time a source file has changed. In such case we invoke -+\fBxgettext(1)\fP and compare its output with the content of -+\fBPOT\fP file to decide whether the file should be updated or -+not. -+ -+.I "Example 1." -+Let's create \fBpo/\fP directory and place following -+\fBSConstruct\fP script there: -+.ES -+ # SConstruct in 'po/' subdir -+ env = Environment( tools = ['default', 'xgettext'] ) -+ env.POTUpdate(['foo'], ['../a.cpp', '../b.cpp']) -+ env.POTUpdate(['bar'], ['../c.cpp', '../d.cpp']) -+.EE -+.IP -+ -+Then invoke scons few times: -+.ES -+ user@host:$ scons # Does not create foo.pot nor bar.pot -+ user@host:$ scons foo.pot # Updates or creates foo.pot -+ user@host:$ scons pot-update # Updates or creates foo.pot and bar.pot -+ user@host:$ scons -c # Does not clean foo.pot nor bar.pot. -+.EE -+the results shall be as the comments above say. -+ -+.I "Example 2." -+The \fBPOTUpdate\fP() builder may be used with no target specified, in which -+case default target \fBmessages.pot\fP will be used. The -+default target may also be overridden by setting \fB$POTDOMAIN\fP construction -+variable or providing it as an override to \fBPOTUpdate\fP() builder: -+.ES -+ # SConstruct script -+ env = Environment( tools = ['default', 'xgettext'] ) -+ env['POTDOMAIN'] = "foo" -+ env.POTUpdate(source = ["a.cpp", "b.cpp"]) # Creates foo.pot ... -+ env.POTUpdate(POTDOMAIN = "bar", source = ["c.cpp", "d.cpp"]) # and bar.pot -+.EE -+.IP -+.I "Example 3." -+The sources may be specified within separate file, for example -+.BR POTFILES.in : -+.ES -+ # POTFILES.in in 'po/' subdirectory -+ ../a.cpp -+ ../b.cpp -+ # end of file -+.EE -+.IP -+ -+The name of the file (\fBPOTFILES.in\fP) containing the list of -+sources is provided via \fB$XGETTEXTFROM\fP: -+.ES -+ # SConstruct file in 'po/' subdirectory -+ env = Environment( tools = ['default', 'xgettext'] ) -+ env.POTUpdate(XGETTEXTFROM = 'POTFILES.in') -+.EE -+.IP -+ -+ -+.I "Example 4." -+You may use \fB$XGETTEXTPATH\fP to define source search path. Assume, for -+example, that you have files \fBa.cpp\fP, -+.BR b.cpp\fP, \fBpo/SConstruct , -+.BR po/POTFILES.in\fP. Then your \fBPOT -related -+files could look as below: -+.ES -+ # POTFILES.in in 'po/' subdirectory -+ a.cpp -+ b.cpp -+ # end of file -+.EE -+ -+.ES -+ # SConstruct file in 'po/' subdirectory -+ env = Environment( tools = ['default', 'xgettext'] ) -+ env.POTUpdate(XGETTEXTFROM = 'POTFILES.in', XGETTEXTPATH='../') -+.EE -+.IP -+.I "Example 5." -+Multiple search directories may be defined within a list, i.e. -+\fBXGETTEXTPATH = ['dir1', 'dir2', ...]\fP. The order in the list -+determines the search order of source files. The path to the first file found -+is used. -+ -+Let's create \fB0/1/po/SConstruct\fP script: -+.ES -+ # SConstruct file in '0/1/po/' subdirectory -+ env = Environment( tools = ['default', 'xgettext'] ) -+ env.POTUpdate(XGETTEXTFROM = 'POTFILES.in', XGETTEXTPATH=['../', '../../']) -+.EE -+and \fB0/1/po/POTFILES.in\fP: -+.ES -+ # POTFILES.in in '0/1/po/' subdirectory -+ a.cpp -+ # end of file -+.EE -+Write two \fB*.cpp\fP files, the first one is -+.BR 0/a.cpp : -+.ES -+ /* 0/a.cpp */ -+ gettext("Hello from ../../a.cpp") -+.EE -+and the second is \fB0/1/a.cpp\fP: -+.ES -+ /* 0/1/a.cpp */ -+ gettext("Hello from ../a.cpp") -+.EE -+then run scons. You'll obtain \fB0/1/po/messages.pot\fP with the -+message \fB"Hello from ../a.cpp"\fP. When you reverse order in -+\fI$XGETTEXTFOM\fP, i.e. when you write SConscript as -+.ES -+ # SConstruct file in '0/1/po/' subdirectory -+ env = Environment( tools = ['default', 'xgettext'] ) -+ env.POTUpdate(XGETTEXTFROM = 'POTFILES.in', XGETTEXTPATH=['../../', '../']) -+.EE -+.IP -+ then the \fBmessages.pot\fP will contain -+\fBmsgid "Hello from ../../a.cpp"\fP line and not -+.BR msgid "Hello from ../a.cpp" . -+ -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.IP POUpdate() -+.IP env.POUpdate() -+The builder belongs to &t-link-msgmerge; tool. The builder updates -+\fBPO\fP files with \fBmsgmerge(1)\fP, or initializes -+missing \fBPO\fP files as described in documentation of -+&t-link-msginit; tool and \fBPOInit\fP() builder (see also -+\fB$POAUTOINIT\fP). Note, that \fBPOUpdate\fP() \fIdoes not add its -+targets to \fBpo-create\fP alias\fP as \fBPOInit\fP() -+does. -+ -+Target nodes defined through \fBPOUpdate\fP() are not built by default -+(they're \fBIgnore\fPd from \fB'.'\fP node). Instead, -+they are added automatically to special \fBAlias\fP -+(\fB'po-update'\fP by default). The alias name may be changed -+through the \fB$POUPDATE_ALIAS\fP construction variable. You can easily -+update \fBPO\fP files in your project by \fBscons -+po-update\fP. -+ -+.I "Example 1." -+Update \fBen.po\fP and \fBpl.po\fP from -+.BR messages.pot\fP template (see also \fB$POTDOMAIN ), -+assuming that the later one exists or there is rule to build it (see -+.BR POTUpdate ()): -+.ES -+ # ... -+ env.POUpdate(['en','pl']) # messages.pot --> [en.po, pl.po] -+.EE -+.IP -+.I "Example 2." -+Update \fBen.po\fP and \fBpl.po\fP from -+\fBfoo.pot\fP template: -+.ES -+ # ... -+ env.POUpdate(['en', 'pl'], ['foo']) # foo.pot --> [en.po, pl.pl] -+.EE -+.IP -+.I "Example 3." -+Update \fBen.po\fP and \fBpl.po\fP from -+\fBfoo.pot\fP (another version): -+.ES -+ # ... -+ env.POUpdate(['en', 'pl'], POTDOMAIN='foo') # foo.pot -- > [en.po, pl.pl] -+.EE -+.IP -+.I "Example 4." -+Update files for languages defined in \fBLINGUAS\fP file. The -+files are updated from \fBmessages.pot\fP template: -+.ES -+ # ... -+ env.POUpdate(LINGUAS_FILE = 1) # needs 'LINGUAS' file -+.EE -+.IP -+.I "Example 5." -+Same as above, but update from \fBfoo.pot\fP template: -+.ES -+ # ... -+ env.POUpdate(LINGUAS_FILE = 1, source = ['foo']) -+.EE -+.IP -+.I "Example 6." -+Update \fBen.po\fP and \fBpl.po\fP plus files for -+languages defined in \fBLINGUAS\fP file. The files are updated -+from \fBmessages.pot\fP template: -+.ES -+ # produce 'en.po', 'pl.po' + files defined in 'LINGUAS': -+ env.POUpdate(['en', 'pl' ], LINGUAS_FILE = 1) -+.EE -+.IP -+.I "Example 7." -+Use \fB$POAUTOINIT\fP to automatically initialize \fBPO\fP file -+if it doesn't exist: -+.ES -+ # ... -+ env.POUpdate(LINGUAS_FILE = 1, POAUTOINIT = 1) -+.EE -+.IP -+.I "Example 8." -+Update \fBPO\fP files for languages defined in -+\fBLINGUAS\fP file. The files are updated from -+\fBfoo.pot\fP template. All necessary settings are -+pre-configured via environment. -+.ES -+ # ... -+ env['POAUTOINIT'] = 1 -+ env['LINGUAS_FILE'] = 1 -+ env['POTDOMAIN'] = 'foo' -+ env.POUpdate() -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.IP Program() -+.IP env.Program() -+Builds an executable given one or more object files -+or C, C++, D, or Fortran source files. -+If any C, C++, D or Fortran source files are specified, -+then they will be automatically -+compiled to object files using the -+.BR Object () -+builder method; -+see that builder method's description for -+a list of legal source file suffixes -+and how they are interpreted. -+The target executable file prefix -+(specified by the \fB$PROGPREFIX\fP construction variable; nothing by default) -+and suffix -+(specified by the \fB$PROGSUFFIX\fP construction variable; -+by default, \fB.exe\fP on Windows systems, -+nothing on POSIX systems) -+are automatically added to the target if not already present. -+Example: -+ -+.ES -+env.Program(target = 'foo', source = ['foo.o', 'bar.c', 'baz.f']) -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.IP RES() -+.IP env.RES() -+Builds a Microsoft Visual C++ resource file. -+This builder method is only provided -+when Microsoft Visual C++ or MinGW is being used as the compiler. The -+.B .res -+(or -+.B .o -+for MinGW) suffix is added to the target name if no other suffix is given. -+The source -+file is scanned for implicit dependencies as though it were a C file. -+Example: -+ -+.ES -+env.RES('resource.rc') -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.IP RMIC() -+.IP env.RMIC() -+Builds stub and skeleton class files -+for remote objects -+from Java \fB.class\fP files. -+The target is a directory -+relative to which the stub -+and skeleton class files will be written. -+The source can be the names of \fB.class\fP files, -+or the objects return from the -+.BR Java () -+builder method. -+ -+If the construction variable -+.B $JAVACLASSDIR -+is set, either in the environment -+or in the call to the -+.BR RMIC () -+builder method itself, -+then the value of the variable -+will be stripped from the -+beginning of any \fB.class \fP -+file names. -+ -+.ES -+classes = env.Java(target = 'classdir', source = 'src') -+env.RMIC(target = 'outdir1', source = classes) -+ -+env.RMIC(target = 'outdir2', -+ source = ['package/foo.class', 'package/bar.class']) -+ -+env.RMIC(target = 'outdir3', -+ source = ['classes/foo.class', 'classes/bar.class'], -+ JAVACLASSDIR = 'classes') -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.IP RPCGenClient() -+.IP env.RPCGenClient() -+Generates an RPC client stub (\fB_clnt.c\fP) file -+from a specified RPC (\fB.x\fP) source file. -+Because rpcgen only builds output files -+in the local directory, -+the command will be executed -+in the source file's directory by default. -+ -+.ES -+# Builds src/rpcif_clnt.c -+env.RPCGenClient('src/rpcif.x') -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.IP RPCGenHeader() -+.IP env.RPCGenHeader() -+Generates an RPC header (\fB.h\fP) file -+from a specified RPC (\fB.x\fP) source file. -+Because rpcgen only builds output files -+in the local directory, -+the command will be executed -+in the source file's directory by default. -+ -+.ES -+# Builds src/rpcif.h -+env.RPCGenHeader('src/rpcif.x') -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.IP RPCGenService() -+.IP env.RPCGenService() -+Generates an RPC server-skeleton (\fB_svc.c\fP) file -+from a specified RPC (\fB.x\fP) source file. -+Because rpcgen only builds output files -+in the local directory, -+the command will be executed -+in the source file's directory by default. -+ -+.ES -+# Builds src/rpcif_svc.c -+env.RPCGenClient('src/rpcif.x') -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.IP RPCGenXDR() -+.IP env.RPCGenXDR() -+Generates an RPC XDR routine (\fB_xdr.c\fP) file -+from a specified RPC (\fB.x\fP) source file. -+Because rpcgen only builds output files -+in the local directory, -+the command will be executed -+in the source file's directory by default. -+ -+.ES -+# Builds src/rpcif_xdr.c -+env.RPCGenClient('src/rpcif.x') -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.IP SharedLibrary() -+.IP env.SharedLibrary() -+Builds a shared library -+(\fB.so\fP on a POSIX system, -+\fB.dll\fP on Windows) -+given one or more object files -+or C, C++, D or Fortran source files. -+If any source files are given, -+then they will be automatically -+compiled to object files. -+The static library prefix and suffix (if any) -+are automatically added to the target. -+The target library file prefix -+(specified by the \fB$SHLIBPREFIX\fP construction variable; -+by default, \fBlib\fP on POSIX systems, -+nothing on Windows systems) -+and suffix -+(specified by the \fB$SHLIBSUFFIX\fP construction variable; -+by default, \fB.dll\fP on Windows systems, -+\fB.so\fP on POSIX systems) -+are automatically added to the target if not already present. -+Example: -+ -+.ES -+env.SharedLibrary(target = 'bar', source = ['bar.c', 'foo.o']) -+.EE -+.IP -+On Windows systems, the -+.BR SharedLibrary () -+builder method will always build an import -+(\fB.lib\fP) library -+in addition to the shared (\fB.dll\fP) library, -+adding a \fB.lib\fP library with the same basename -+if there is not already a \fB.lib\fP file explicitly -+listed in the targets. -+ -+Any object files listed in the -+.B source -+must have been built for a shared library -+(that is, using the -+.BR SharedObject () -+builder method). -+.B scons -+will raise an error if there is any mismatch. -+ -+On some platforms, there is a distinction between a shared library -+(loaded automatically by the system to resolve external references) -+and a loadable module (explicitly loaded by user action). -+For maximum portability, use the \fBLoadableModule\fP() builder for the latter. -+ -+When the \fB$SHLIBVERSION\fP construction variable is defined a versioned -+shared library is created. This modifies the \fB$SHLINKFLAGS\fP as required, -+adds the version number to the library name, and creates the symlinks that -+are needed. \fB$SHLIBVERSION\fP needs to be of the form X.Y.Z, where X -+and Y are numbers, and Z is a number but can also contain letters to designate -+alpha, beta, or release candidate patch levels. -+ -+This builder may create multiple links to the library. On a POSIX system, -+for the shared library libbar.so.2.3.1, the links created would be -+libbar.so, libbar.so.2, and libbar.so.2.3; on a Darwin (OSX) system -+the library would be libbar.2.3.1.dylib and the link would be -+libbar.dylib. -+ -+On Windows systems, specifying -+.B register=1 -+will cause the \fB.dll\fP to be -+registered after it is built using REGSVR32. -+The command that is run -+("regsvr32" by default) is determined by \fB$REGSVR\fP construction -+variable, and the flags passed are determined by \fB$REGSVRFLAGS\fP. By -+default, \fB$REGSVRFLAGS\fP includes the \fB/s\fP option, -+to prevent dialogs from popping -+up and requiring user attention when it is run. If you change -+\fB$REGSVRFLAGS\fP, be sure to include the \fB/s\fP option. -+For example, -+ -+.ES -+env.SharedLibrary(target = 'bar', -+ source = ['bar.cxx', 'foo.obj'], -+ register=1) -+.EE -+.IP -+will register \fBbar.dll\fP as a COM object -+when it is done linking it. -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.IP SharedObject() -+.IP env.SharedObject() -+Builds an object file for -+inclusion in a shared library. -+Source files must have one of the same set of extensions -+specified above for the -+.BR StaticObject () -+builder method. -+On some platforms building a shared object requires additional -+compiler option -+(e.g. \fB\-fPIC\fP for gcc) -+in addition to those needed to build a -+normal (static) object, but on some platforms there is no difference between a -+shared object and a normal (static) one. When there is a difference, SCons -+will only allow shared objects to be linked into a shared library, and will -+use a different suffix for shared objects. On platforms where there is no -+difference, SCons will allow both normal (static) -+and shared objects to be linked into a -+shared library, and will use the same suffix for shared and normal -+(static) objects. -+The target object file prefix -+(specified by the \fB$SHOBJPREFIX\fP construction variable; -+by default, the same as \fB$OBJPREFIX\fP) -+and suffix -+(specified by the \fB$SHOBJSUFFIX\fP construction variable) -+are automatically added to the target if not already present. -+Examples: -+ -+.ES -+env.SharedObject(target = 'ddd', source = 'ddd.c') -+env.SharedObject(target = 'eee.o', source = 'eee.cpp') -+env.SharedObject(target = 'fff.obj', source = 'fff.for') -+.EE -+.IP -+Note that the source files will be scanned -+according to the suffix mappings in the -+.B SourceFileScanner -+object. -+See the section "Scanner Objects," -+below, for more information. -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.IP StaticLibrary() -+.IP env.StaticLibrary() -+Builds a static library given one or more object files -+or C, C++, D or Fortran source files. -+If any source files are given, -+then they will be automatically -+compiled to object files. -+The static library prefix and suffix (if any) -+are automatically added to the target. -+The target library file prefix -+(specified by the \fB$LIBPREFIX\fP construction variable; -+by default, \fBlib\fP on POSIX systems, -+nothing on Windows systems) -+and suffix -+(specified by the \fB$LIBSUFFIX\fP construction variable; -+by default, \fB.lib\fP on Windows systems, -+\fB.a\fP on POSIX systems) -+are automatically added to the target if not already present. -+Example: -+ -+.ES -+env.StaticLibrary(target = 'bar', source = ['bar.c', 'foo.o']) -+.EE -+.IP -+Any object files listed in the -+.B source -+must have been built for a static library -+(that is, using the -+.BR StaticObject () -+builder method). -+.B scons -+will raise an error if there is any mismatch. -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.IP StaticObject() -+.IP env.StaticObject() -+Builds a static object file -+from one or more C, C++, D, or Fortran source files. -+Source files must have one of the following extensions: -+ -+.ES -+ .asm assembly language file -+ .ASM assembly language file -+ .c C file -+ .C Windows: C file -+ POSIX: C++ file -+ .cc C++ file -+ .cpp C++ file -+ .cxx C++ file -+ .cxx C++ file -+ .c++ C++ file -+ .C++ C++ file -+ .d D file -+ .f Fortran file -+ .F Windows: Fortran file -+ POSIX: Fortran file + C pre-processor -+ .for Fortran file -+ .FOR Fortran file -+ .fpp Fortran file + C pre-processor -+ .FPP Fortran file + C pre-processor -+ .m Object C file -+ .mm Object C++ file -+ .s assembly language file -+ .S Windows: assembly language file -+ ARM: CodeSourcery Sourcery Lite -+ .sx assembly language file + C pre-processor -+ POSIX: assembly language file + C pre-processor -+ .spp assembly language file + C pre-processor -+ .SPP assembly language file + C pre-processor -+.EE -+.IP -+The target object file prefix -+(specified by the \fB$OBJPREFIX\fP construction variable; nothing by default) -+and suffix -+(specified by the \fB$OBJSUFFIX\fP construction variable; -+\fB.obj\fP on Windows systems, -+\fB.o\fP on POSIX systems) -+are automatically added to the target if not already present. -+Examples: -+ -+.ES -+env.StaticObject(target = 'aaa', source = 'aaa.c') -+env.StaticObject(target = 'bbb.o', source = 'bbb.c++') -+env.StaticObject(target = 'ccc.obj', source = 'ccc.f') -+.EE -+.IP -+Note that the source files will be scanned -+according to the suffix mappings in -+.B SourceFileScanner -+object. -+See the section "Scanner Objects," -+below, for more information. -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.IP Substfile() -+.IP env.Substfile() -+The \fBSubstfile\fP() builder generates a single text file -+by concatenating the source files. -+Nested lists of sources are flattened. -+\fB$LINESEPARATOR\fP is used to separate the source files; -+see the description of \fBTextfile\fP() for details. -+ -+If a single source file is present with an \fB.in\fP suffix, -+the suffix is stripped and the remainder is used as the default target name. -+ -+The prefix and suffix specified by the \fB$SUBSTFILEPREFIX\fP -+and \fB$SUBSTFILESUFFIX\fP construction variables -+(the null string by default in both cases) -+are automatically added to the target if they are not already present. -+ -+If a construction variable named \fB$SUBST_DICT\fP is present, -+it may be either a Python dictionary or a sequence of (key,value) tuples. -+If the former, -+the dictionary is converted into a list of tuples in an arbitrary order, -+so if one key is a prefix of another key -+or if one substitution could be further expanded by another subsitition, -+it is unpredictible whether the expansion will occur. -+ -+Any occurences in the source of a key -+are replaced by the corresponding value, -+which may be a Python callable function or a string. -+If a value is a function, -+it is first called (with no arguments) to produce a string. -+The string is \fIsubst\fP-expanded -+and the result replaces the key. -+ -+.ES -+env = Environment(tools = ['default', 'textfile']) -+ -+env['prefix'] = '/usr/bin' -+script_dict = {'@prefix@': '/bin', @exec_prefix@: '$prefix'} -+env.Substfile('script.in', SUBST_DICT = script_dict) -+ -+conf_dict = {'%VERSION%': '1.2.3', '%BASE%': 'MyProg'} -+env.Substfile('config.h.in', conf_dict, SUBST_DICT = conf_dict) -+ -+# UNPREDICTABLE - one key is a prefix of another -+bad_foo = {'$foo': '$foo', '$foobar': '$foobar'} -+env.Substfile('foo.in', SUBST_DICT = bad_foo) -+ -+# PREDICTABLE - keys are applied longest first -+good_foo = [('$foobar', '$foobar'), ('$foo', '$foo')] -+env.Substfile('foo.in', SUBST_DICT = good_foo) -+ -+# UNPREDICTABLE - one substitution could be futher expanded -+bad_bar = {'@bar@': '@soap@', '@soap@': 'lye'} -+env.Substfile('bar.in', SUBST_DICT = bad_bar) -+ -+# PREDICTABLE - substitutions are expanded in order -+good_bar = (('@bar@', '@soap@'), ('@soap@', 'lye')) -+env.Substfile('bar.in', SUBST_DICT = good_bar) -+ -+# the SUBST_DICT may be in common (and not an override) -+substutions = {} -+subst = Environment(tools = ['textfile'], SUBST_DICT = substitutions) -+substitutions['@foo@'] = 'foo' -+subst['SUBST_DICT']['@bar@'] = 'bar' -+subst.Substfile('pgm1.c', [Value('#include "@foo@.h"'), -+ Value('#include "@bar@.h"'), -+ "common.in", -+ "pgm1.in" -+ ]) -+subst.Substfile('pgm2.c', [Value('#include "@foo@.h"'), -+ Value('#include "@bar@.h"'), -+ "common.in", -+ "pgm2.in" -+ ]) -+ -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.IP Tar() -+.IP env.Tar() -+Builds a tar archive of the specified files -+and/or directories. -+Unlike most builder methods, -+the -+.BR Tar () -+builder method may be called multiple times -+for a given target; -+each additional call -+adds to the list of entries -+that will be built into the archive. -+Any source directories will -+be scanned for changes to -+any on-disk files, -+regardless of whether or not -+.B scons -+knows about them from other Builder or function calls. -+ -+.ES -+env.Tar('src.tar', 'src') -+ -+# Create the stuff.tar file. -+env.Tar('stuff', ['subdir1', 'subdir2']) -+# Also add "another" to the stuff.tar file. -+env.Tar('stuff', 'another') -+ -+# Set TARFLAGS to create a gzip-filtered archive. -+env = Environment(TARFLAGS = '-c -z') -+env.Tar('foo.tar.gz', 'foo') -+ -+# Also set the suffix to .tgz. -+env = Environment(TARFLAGS = '-c -z', -+ TARSUFFIX = '.tgz') -+env.Tar('foo') -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.IP Textfile() -+.IP env.Textfile() -+The \fBTextfile\fP() builder generates a single text file. -+The source strings constitute the lines; -+nested lists of sources are flattened. -+\fB$LINESEPARATOR\fP is used to separate the strings. -+ -+If present, the \fB$SUBST_DICT\fP construction variable -+is used to modify the strings before they are written; -+see the \fBSubstfile\fP() description for details. -+ -+The prefix and suffix specified by the \fB$TEXTFILEPREFIX\fP -+and \fB$TEXTFILESUFFIX\fP construction variables -+(the null string and \fB.txt\fP by default, respectively) -+are automatically added to the target if they are not already present. -+Examples: -+ -+.ES -+# builds/writes foo.txt -+env.Textfile(target = 'foo.txt', source = ['Goethe', 42, 'Schiller']) -+ -+# builds/writes bar.txt -+env.Textfile(target = 'bar', -+ source = ['lalala', 'tanteratei'], -+ LINESEPARATOR='|*') -+ -+# nested lists are flattened automatically -+env.Textfile(target = 'blob', -+ source = ['lalala', ['Goethe', 42 'Schiller'], 'tanteratei']) -+ -+# files may be used as input by wraping them in File() -+env.Textfile(target = 'concat', # concatenate files with a marker between -+ source = [File('concat1'), File('concat2')], -+ LINESEPARATOR = '====================\\n') -+ -+Results are: -+foo.txt -+ ....8<---- -+ Goethe -+ 42 -+ Schiller -+ ....8<---- (no linefeed at the end) -+ -+bar.txt: -+ ....8<---- -+ lalala|*tanteratei -+ ....8<---- (no linefeed at the end) -+ -+blob.txt -+ ....8<---- -+ lalala -+ Goethe -+ 42 -+ Schiller -+ tanteratei -+ ....8<---- (no linefeed at the end) -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.IP Translate() -+.IP env.Translate() -+This pseudo-builder belongs to &t-link-gettext; toolset. The builder extracts -+internationalized messages from source files, updates \fBPOT\fP -+template (if necessary) and then updates \fBPO\fP translations (if -+necessary). If \fB$POAUTOINIT\fP is set, missing \fBPO\fP files -+will be automatically created (i.e. without translator person intervention). -+The variables \fB$LINGUAS_FILE\fP and \fB$POTDOMAIN\fP are taken into -+acount too. All other construction variables used by \fBPOTUpdate\fP(), and -+\fBPOUpdate\fP() work here too. -+ -+.IR Example 1 . -+The simplest way is to specify input files and output languages inline in -+a SCons script when invoking \fBTranslate\fP() -+.ES -+# SConscript in 'po/' directory -+env = Environment( tools = ["default", "gettext"] ) -+env['POAUTOINIT'] = 1 -+env.Translate(['en','pl'], ['../a.cpp','../b.cpp']) -+.EE -+.IP -+.IR Example 2 . -+If you wish, you may also stick to conventional style known from -+autotools, i.e. using -+\fBPOTFILES.in\fP and \fBLINGUAS\fP files -+.ES -+# LINGUAS -+en pl -+#end -+.EE -+ -+.ES -+# POTFILES.in -+a.cpp -+b.cpp -+# end -+.EE -+ -+.ES -+# SConscript -+env = Environment( tools = ["default", "gettext"] ) -+env['POAUTOINIT'] = 1 -+env['XGETTEXTPATH'] = ['../'] -+env.Translate(LINGUAS_FILE = 1, XGETTEXTFROM = 'POTFILES.in') -+.EE -+.IP -+The last approach is perhaps the recommended one. It allows easily split -+internationalization/localization onto separate SCons scripts, where a script -+in source tree is responsible for translations (from sources to -+\fBPO\fP files) and script(s) under variant directories are -+responsible for compilation of \fBPO\fP to \fBMO\fP -+files to and for installation of \fBMO\fP files. The "gluing -+factor" synchronizing these two scripts is then the content of -+\fBLINGUAS\fP file. Note, that the updated -+\fBPOT\fP and \fBPO\fP files are usually going to be -+committed back to the repository, so they must be updated within the source -+directory (and not in variant directories). Additionally, the file listing of -+\fBpo/\fP directory contains \fBLINGUAS\fP file, -+so the source tree looks familiar to translators, and they may work with the -+project in their usual way. -+ -+.IR Example 3 . -+Let's prepare a development tree as below -+.ES -+ project/ -+ + SConstruct -+ + build/ -+ + src/ -+ + po/ -+ + SConscript -+ + SConscript.i18n -+ + POTFILES.in -+ + LINGUAS -+.EE -+with \fBbuild\fP being variant directory. Write the top-level -+\fBSConstruct\fP script as follows -+.ES -+ # SConstruct -+ env = Environment( tools = ["default", "gettext"] ) -+ VariantDir('build', 'src', duplicate = 0) -+ env['POAUTOINIT'] = 1 -+ SConscript('src/po/SConscript.i18n', exports = 'env') -+ SConscript('build/po/SConscript', exports = 'env') -+.EE -+the \fBsrc/po/SConscript.i18n\fP as -+.ES -+ # src/po/SConscript.i18n -+ Import('env') -+ env.Translate(LINGUAS_FILE=1, XGETTEXTFROM='POTFILES.in', XGETTEXTPATH=['../']) -+.EE -+and the \fBsrc/po/SConscript\fP -+.ES -+ # src/po/SConscript -+ Import('env') -+ env.MOFiles(LINGUAS_FILE = 1) -+.EE -+Such setup produces \fBPOT\fP and \fBPO\fP files -+under source tree in \fBsrc/po/\fP and binary -+\fBMO\fP files under variant tree in -+\fBbuild/po/\fP. This way the \fBPOT\fP and -+\fBPO\fP files are separated from other output files, which must -+not be committed back to source repositories (e.g. \fBMO\fP -+files). -+ -+ -+In above example, the \fBPO\fP files are not updated, -+nor created automatically when you issue \fBscons '.'\fP command. -+The files must be updated (created) by hand via \fBscons -+po-update\fP and then \fBMO\fP files can be compiled by -+running \fBscons '.'\fP. -+ -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.IP TypeLibrary() -+.IP env.TypeLibrary() -+Builds a Windows type library (\fB.tlb\fP) -+file from an input IDL file (\fB.idl\fP). -+In addition, it will build the associated inteface stub and -+proxy source files, -+naming them according to the base name of the \fB.idl\fP file. -+For example, -+ -+.ES -+env.TypeLibrary(source="foo.idl") -+.EE -+.IP -+Will create \fBfoo.tlb\fP, -+.BR foo.h , -+.BR foo_i.c , -+.B foo_p.c -+and -+.B foo_data.c -+files. -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.IP Uic() -+.IP env.Uic() -+Builds a header file, an implementation file and a moc file from an ui file. -+and returns the corresponding nodes in the above order. -+This builder is only available after using the tool 'qt'. Note: you can -+specify \fB.ui\fP files directly as source -+files to the \fBProgram\fP(), -+\fBLibrary\fP() and \fBSharedLibrary\fP() builders -+without using this builder. Using this builder lets you override the standard -+naming conventions (be careful: prefixes are always prepended to names of -+built files; if you don't want prefixes, you may set them to ``). -+See the \fB$QTDIR\fP variable for more information. -+Example: -+ -+.ES -+env.Uic('foo.ui') # -> ['foo.h', 'uic_foo.cc', 'moc_foo.cc'] -+env.Uic(target = Split('include/foo.h gen/uicfoo.cc gen/mocfoo.cc'), -+ source = 'foo.ui') # -> ['include/foo.h', 'gen/uicfoo.cc', 'gen/mocfoo.cc'] -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.IP Zip() -+.IP env.Zip() -+Builds a zip archive of the specified files -+and/or directories. -+Unlike most builder methods, -+the -+.BR Zip () -+builder method may be called multiple times -+for a given target; -+each additional call -+adds to the list of entries -+that will be built into the archive. -+Any source directories will -+be scanned for changes to -+any on-disk files, -+regardless of whether or not -+.B scons -+knows about them from other Builder or function calls. -+ -+.ES -+env.Zip('src.zip', 'src') -+ -+# Create the stuff.zip file. -+env.Zip('stuff', ['subdir1', 'subdir2']) -+# Also add "another" to the stuff.tar file. -+env.Zip('stuff', 'another') -+.EE -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+'\" END GENERATED BUILDER DESCRIPTIONS -+'\" -+'\" The descriptions above of the various SCons Builders are generated -+'\" from the .xml files that live next to the various Python modules in -+'\" the build enginer library. If you're reading this [gnt]roff file -+'\" with an eye towards patching this man page, you can still submit -+'\" a diff against this text, but it will have to be translated to a -+'\" diff against the underlying .xml file before the patch is actually -+'\" accepted. If you do that yourself, it will make it easier to -+'\" integrate the patch. -+'\" -+'\" END GENERATED BUILDER DESCRIPTIONS -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+ -+.P -+All -+targets of builder methods automatically depend on their sources. -+An explicit dependency can -+be specified using the -+.B Depends -+method of a construction environment (see below). -+ -+In addition, -+.B scons -+automatically scans -+source files for various programming languages, -+so the dependencies do not need to be specified explicitly. -+By default, SCons can -+C source files, -+C++ source files, -+Fortran source files with -+.B .F -+(POSIX systems only), -+.B .fpp, -+or -+.B .FPP -+file extensions, -+and assembly language files with -+.B .S -+(POSIX systems only), -+.B .spp, -+or -+.B .SPP -+files extensions -+for C preprocessor dependencies. -+SCons also has default support -+for scanning D source files, -+You can also write your own Scanners -+to add support for additional source file types. -+These can be added to the default -+Scanner object used by the -+.BR Object (), -+.BR StaticObject (), -+and -+.BR SharedObject () -+Builders by adding them -+to the -+.B SourceFileScanner -+object. -+See the section "Scanner Objects" -+below, for more information about -+defining your own Scanner objects -+and using the -+.B SourceFileScanner -+object. -+ -+.SS Methods and Functions to Do Things -+In addition to Builder methods, -+.B scons -+provides a number of other construction environment methods -+and global functions to -+manipulate the build configuration. -+ -+Usually, a construction environment method -+and global function with the same name both exist -+so that you don't have to remember whether -+to a specific bit of functionality -+must be called with or without a construction environment. -+In the following list, -+if you call something as a global function -+it looks like: -+.ES -+.RI Function( arguments ) -+.EE -+and if you call something through a construction -+environment it looks like: -+.ES -+.RI env.Function( arguments ) -+.EE -+If you can call the functionality in both ways, -+then both forms are listed. -+ -+Global functions may be called from custom Python modules that you -+import into an SConscript file by adding the following -+to the Python module: -+ -+.ES -+from SCons.Script import * -+.EE -+ -+Except where otherwise noted, -+the same-named -+construction environment method -+and global function -+provide the exact same functionality. -+The only difference is that, -+where appropriate, -+calling the functionality through a construction environment will -+substitute construction variables into -+any supplied strings. -+For example: -+ -+.ES -+env = Environment(FOO = 'foo') -+Default('$FOO') -+env.Default('$FOO') -+.EE -+ -+In the above example, -+the first call to the global -+.B Default() -+function will actually add a target named -+.B $FOO -+to the list of default targets, -+while the second call to the -+.B env.Default() -+construction environment method -+will expand the value -+and add a target named -+.B foo -+to the list of default targets. -+For more on construction variable expansion, -+see the next section on -+construction variables. -+ -+Construction environment methods -+and global functions supported by -+.B scons -+include: -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+'\" BEGIN GENERATED FUNCTION DESCRIPTIONS -+'\" -+'\" The descriptions below of the various SCons functions are generated -+'\" from the .xml files that live next to the various Python modules in -+'\" the build enginer library. If you're reading this [gnt]roff file -+'\" with an eye towards patching this man page, you can still submit -+'\" a diff against this text, but it will have to be translated to a -+'\" diff against the underlying .xml file before the patch is actually -+'\" accepted. If you do that yourself, it will make it easier to -+'\" integrate the patch. -+'\" -+'\" BEGIN GENERATED FUNCTION DESCRIPTIONS -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI Action( action ", [" cmd/str/fun ", [" var ", ...]] [option=" value ", ...])" -+.TP -+.IR env .Action( action ", [" cmd/str/fun ", [" var ", ...]] [option=" value ", ...])" -+Creates an Action object for -+the specified -+.IR action . -+See the section "Action Objects," -+below, for a complete explanation of the arguments and behavior. -+ -+Note that the -+.BR env.Action () -+form of the invocation will expand -+construction variables in any argument strings, -+including the -+.I action -+argument, at the time it is called -+using the construction variables in the -+.I env -+construction environment through which -+.BR env.Action () -+was called. -+The -+.BR Action () -+form delays all variable expansion -+until the Action object is actually used. -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI AddMethod( object ", " function ", [" name ]) -+.TP -+.IR env .AddMethod( function ", [" name ]) -+When called with the -+.BR AddMethod () -+form, -+adds the specified -+.I function -+to the specified -+.I object -+as the specified method -+.IR name . -+When called with the -+.BR env.AddMethod () -+form, -+adds the specified -+.I function -+to the construction environment -+.I env -+as the specified method -+.IR name . -+In both cases, if -+.I name -+is omitted or -+.BR None , -+the name of the -+specified -+.I function -+itself is used for the method name. -+ -+Examples: -+ -+.ES -+# Note that the first argument to the function to -+# be attached as a method must be the object through -+# which the method will be called; the Python -+# convention is to call it 'self'. -+def my_method(self, arg): -+ print "my_method() got", arg -+ -+# Use the global AddMethod() function to add a method -+# to the Environment class. This -+AddMethod(Environment, my_method) -+env = Environment() -+env.my_method('arg') -+ -+# Add the function as a method, using the function -+# name for the method call. -+env = Environment() -+env.AddMethod(my_method, 'other_method_name') -+env.other_method_name('another arg') -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI AddOption( arguments ) -+This function adds a new command-line option to be recognized. -+The specified -+.I arguments -+are the same as supported by the standard Python -+.BR optparse.add_option () -+method (with a few additional capabilities noted below); -+see the documentation for -+.B optparse -+for a thorough discussion of its option-processing capabities. -+ -+In addition to the arguments and values supported by the -+.BR optparse.add_option () -+method, -+the SCons -+.BR AddOption () -+function allows you to set the -+.B nargs -+keyword value to -+.B '?' -+(a string with just the question mark) -+to indicate that the specified long option(s) take(s) an -+.I optional -+argument. -+When -+.B "nargs = '?'" -+is passed to the -+.BR AddOption () -+function, the -+.B const -+keyword argument -+may be used to supply the "default" -+value that should be used when the -+option is specified on the command line -+without an explicit argument. -+ -+If no -+.B default= -+keyword argument is supplied when calling -+.BR AddOption (), -+the option will have a default value of -+.BR None . -+ -+Once a new command-line option has been added with -+.BR AddOption (), -+the option value may be accessed using -+.BR GetOption () -+or -+.BR env.GetOption (). -+The value may also be set, using -+.BR SetOption () -+or -+.BR env.SetOption (), -+if conditions in a -+.B SConscript -+require overriding any default value. -+Note, however, that a -+value specified on the command line will -+.I always -+override a value set by any SConscript file. -+ -+Any specified -+.B help= -+strings for the new option(s) -+will be displayed by the -+.B \-H -+or -+.B \-h -+options -+(the latter only if no other help text is -+specified in the SConscript files). -+The help text for the local options specified by -+.BR AddOption () -+will appear below the SCons options themselves, -+under a separate -+.B "Local Options" -+heading. -+The options will appear in the help text -+in the order in which the -+.BR AddOption () -+calls occur. -+ -+Example: -+ -+.ES -+AddOption('--prefix', -+ dest='prefix', -+ nargs=1, type='string', -+ action='store', -+ metavar='DIR', -+ help='installation prefix') -+env = Environment(PREFIX = GetOption('prefix')) -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI AddPostAction( target ", " action ) -+.TP -+.IR env .AddPostAction( target ", " action ) -+Arranges for the specified -+.I action -+to be performed -+after the specified -+.I target -+has been built. -+The specified action(s) may be -+an Action object, or anything that -+can be converted into an Action object -+(see below). -+ -+When multiple targets are supplied, -+the action may be called multiple times, -+once after each action that generates -+one or more targets in the list. -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI AddPreAction( target ", " action ) -+.TP -+.IR env .AddPreAction( target ", " action ) -+Arranges for the specified -+.I action -+to be performed -+before the specified -+.I target -+is built. -+The specified action(s) may be -+an Action object, or anything that -+can be converted into an Action object -+(see below). -+ -+When multiple targets are specified, -+the action(s) may be called multiple times, -+once before each action that generates -+one or more targets in the list. -+ -+Note that if any of the targets are built in multiple steps, -+the action will be invoked just -+before the "final" action that specifically -+generates the specified target(s). -+For example, when building an executable program -+from a specified source -+.B .c -+file via an intermediate object file: -+ -+.ES -+foo = Program('foo.c') -+AddPreAction(foo, 'pre_action') -+.EE -+.IP -+The specified -+.B pre_action -+would be executed before -+.B scons -+calls the link command that actually -+generates the executable program binary -+.BR foo , -+not before compiling the -+.B foo.c -+file into an object file. -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI Alias( alias ", [" targets ", [" action ]]) -+.TP -+.IR env .Alias( alias ", [" targets ", [" action ]]) -+Creates one or more phony targets that -+expand to one or more other targets. -+An optional -+.I action -+(command) -+or list of actions -+can be specified that will be executed -+whenever the any of the alias targets are out-of-date. -+Returns the Node object representing the alias, -+which exists outside of any file system. -+This Node object, or the alias name, -+may be used as a dependency of any other target, -+including another alias. -+.BR Alias () -+can be called multiple times for the same -+alias to add additional targets to the alias, -+or additional actions to the list for this alias. -+ -+Examples: -+ -+.ES -+Alias('install') -+Alias('install', '/usr/bin') -+Alias(['install', 'install-lib'], '/usr/local/lib') -+ -+env.Alias('install', ['/usr/local/bin', '/usr/local/lib']) -+env.Alias('install', ['/usr/local/man']) -+ -+env.Alias('update', ['file1', 'file2'], "update_database $SOURCES") -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI AllowSubstExceptions([ exception ", ...])" -+Specifies the exceptions that will be allowed -+when expanding construction variables. -+By default, -+any construction variable expansions that generate a -+.B NameError -+or -+.B IndexError -+exception will expand to a -+.B '' -+(a null string) and not cause scons to fail. -+All exceptions not in the specified list -+will generate an error message -+and terminate processing. -+ -+If -+.BR AllowSubstExceptions () -+is called multiple times, -+each call completely overwrites the previous list -+of allowed exceptions. -+ -+Example: -+ -+.ES -+# Requires that all construction variable names exist. -+# (You may wish to do this if you want to enforce strictly -+# that all construction variables must be defined before use.) -+AllowSubstExceptions() -+ -+# Also allow a string containing a zero-division expansion -+# like '${1 / 0}' to evalute to ''. -+AllowSubstExceptions(IndexError, NameError, ZeroDivisionError) -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI AlwaysBuild( target ", ...)" -+.TP -+.IR env .AlwaysBuild( target ", ...)" -+Marks each given -+.I target -+so that it is always assumed to be out of date, -+and will always be rebuilt if needed. -+Note, however, that -+.BR AlwaysBuild () -+does not add its target(s) to the default target list, -+so the targets will only be built -+if they are specified on the command line, -+or are a dependent of a target specified on the command line--but -+they will -+.I always -+be built if so specified. -+Multiple targets can be passed in to a single call to -+.BR AlwaysBuild (). -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.IR env .Append(key= val ", [...])" -+Appends the specified keyword arguments -+to the end of construction variables in the environment. -+If the Environment does not have -+the specified construction variable, -+it is simply added to the environment. -+If the values of the construction variable -+and the keyword argument are the same type, -+then the two values will be simply added together. -+Otherwise, the construction variable -+and the value of the keyword argument -+are both coerced to lists, -+and the lists are added together. -+(See also the Prepend method, below.) -+ -+Example: -+ -+.ES -+env.Append(CCFLAGS = ' -g', FOO = ['foo.yyy']) -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.IR env .AppendENVPath( name ", " newpath ", [" envname ", " sep ", " delete_existing ]) -+This appends new path elements to the given path in the -+specified external environment -+.RB ( ENV -+by default). -+This will only add -+any particular path once (leaving the last one it encounters and -+ignoring the rest, to preserve path order), -+and to help assure this, -+will normalize all paths (using -+.B os.path.normpath -+and -+.BR os.path.normcase ). -+This can also handle the -+case where the given old path variable is a list instead of a -+string, in which case a list will be returned instead of a string. -+ -+If -+.I delete_existing -+is 0, then adding a path that already exists -+will not move it to the end; it will stay where it is in the list. -+ -+Example: -+ -+.ES -+print 'before:',env['ENV']['INCLUDE'] -+include_path = '/foo/bar:/foo' -+env.AppendENVPath('INCLUDE', include_path) -+print 'after:',env['ENV']['INCLUDE'] -+ -+yields: -+before: /foo:/biz -+after: /biz:/foo/bar:/foo -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.IR env .AppendUnique(key= val ", [...], delete_existing=" 0) -+Appends the specified keyword arguments -+to the end of construction variables in the environment. -+If the Environment does not have -+the specified construction variable, -+it is simply added to the environment. -+If the construction variable being appended to is a list, -+then any value(s) that already exist in the -+construction variable will -+.I not -+be added again to the list. -+However, if delete_existing is 1, -+existing matching values are removed first, so -+existing values in the arg list move to the end of the list. -+ -+Example: -+ -+.ES -+env.AppendUnique(CCFLAGS = '-g', FOO = ['foo.yyy']) -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.IR env .BitKeeper() -+A factory function that -+returns a Builder object -+to be used to fetch source files -+using BitKeeper. -+The returned Builder -+is intended to be passed to the -+.BR SourceCode () -+function. -+ -+This function is deprecated. For details, see the entry for the -+.BR SourceCode () -+function. -+ -+Example: -+ -+.ES -+env.SourceCode('.', env.BitKeeper()) -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI BuildDir( build_dir ", " src_dir ", [" duplicate ]) -+.TP -+.IR env .BuildDir( build_dir ", " src_dir ", [" duplicate ]) -+Deprecated synonyms for -+.BR VariantDir () -+and -+.BR env.VariantDir (). -+The -+.I build_dir -+argument becomes the -+.I variant_dir -+argument of -+.BR VariantDir () -+or -+.BR env.VariantDir (). -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI Builder( action ", [" arguments ]) -+.TP -+.IR env .Builder( action ", [" arguments ]) -+Creates a Builder object for -+the specified -+.IR action . -+See the section "Builder Objects," -+below, for a complete explanation of the arguments and behavior. -+ -+Note that the -+.BR env.Builder () -+form of the invocation will expand -+construction variables in any arguments strings, -+including the -+.I action -+argument, -+at the time it is called -+using the construction variables in the -+.I env -+construction environment through which -+.BR env.Builder () -+was called. -+The -+.BR Builder () -+form delays all variable expansion -+until after the Builder object is actually called. -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI CacheDir( cache_dir ) -+.TP -+.IR env .CacheDir( cache_dir ) -+Specifies that -+.B scons -+will maintain a cache of derived files in -+.IR cache_dir . -+The derived files in the cache will be shared -+among all the builds using the same -+.BR CacheDir () -+call. -+Specifying a -+.I cache_dir -+of -+.B None -+disables derived file caching. -+ -+Calling -+.BR env.CacheDir () -+will only affect targets built -+through the specified construction environment. -+Calling -+.BR CacheDir () -+sets a global default -+that will be used by all targets built -+through construction environments -+that do -+.I not -+have an -+.BR env.CacheDir () -+specified. -+ -+When a -+.BR CacheDir () -+is being used and -+.B scons -+finds a derived file that needs to be rebuilt, -+it will first look in the cache to see if a -+derived file has already been built -+from identical input files and an identical build action -+(as incorporated into the MD5 build signature). -+If so, -+.B scons -+will retrieve the file from the cache. -+If the derived file is not present in the cache, -+.B scons -+will rebuild it and -+then place a copy of the built file in the cache -+(identified by its MD5 build signature), -+so that it may be retrieved by other -+builds that need to build the same derived file -+from identical inputs. -+ -+Use of a specified -+.BR CacheDir () -+may be disabled for any invocation -+by using the -+.B \-\-cache-disable -+option. -+ -+If the -+.B \-\-cache-force -+option is used, -+.B scons -+will place a copy of -+.I all -+derived files in the cache, -+even if they already existed -+and were not built by this invocation. -+This is useful to populate a cache -+the first time -+.BR CacheDir () -+is added to a build, -+or after using the -+.B \-\-cache-disable -+option. -+ -+When using -+.BR CacheDir (), -+.B scons -+will report, -+"Retrieved `file' from cache," -+unless the -+.B \-\-cache-show -+option is being used. -+When the -+.B \-\-cache-show -+option is used, -+.B scons -+will print the action that -+.I would -+have been used to build the file, -+without any indication that -+the file was actually retrieved from the cache. -+This is useful to generate build logs -+that are equivalent regardless of whether -+a given derived file has been built in-place -+or retrieved from the cache. -+ -+The -+.BR NoCache () -+method can be used to disable caching of specific files. This can be -+useful if inputs and/or outputs of some tool are impossible to -+predict or prohibitively large. -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI Clean( targets ", " files_or_dirs ) -+.TP -+.IR env .Clean( targets ", " files_or_dirs ) -+This specifies a list of files or directories which should be removed -+whenever the targets are specified with the -+.B \-c -+command line option. -+The specified targets may be a list -+or an individual target. -+Multiple calls to -+.BR Clean () -+are legal, -+and create new targets or add files and directories to the -+clean list for the specified targets. -+ -+Multiple files or directories should be specified -+either as separate arguments to the -+.BR Clean () -+method, or as a list. -+.BR Clean () -+will also accept the return value of any of the construction environment -+Builder methods. -+Examples: -+ -+The related -+.BR NoClean () -+function overrides calling -+.BR Clean () -+for the same target, -+and any targets passed to both functions will -+.I not -+be removed by the -+.B \-c -+option. -+ -+Examples: -+ -+.ES -+Clean('foo', ['bar', 'baz']) -+Clean('dist', env.Program('hello', 'hello.c')) -+Clean(['foo', 'bar'], 'something_else_to_clean') -+.EE -+.IP -+In this example, -+installing the project creates a subdirectory for the documentation. -+This statement causes the subdirectory to be removed -+if the project is deinstalled. -+.ES -+Clean(docdir, os.path.join(docdir, projectname)) -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.IR env .Clone([key= val ", ...])" -+Returns a separate copy of a construction environment. -+If there are any keyword arguments specified, -+they are added to the returned copy, -+overwriting any existing values -+for the keywords. -+ -+Example: -+ -+.ES -+env2 = env.Clone() -+env3 = env.Clone(CCFLAGS = '-g') -+.EE -+.IP -+Additionally, a list of tools and a toolpath may be specified, as in -+the Environment constructor: -+ -+.ES -+def MyTool(env): env['FOO'] = 'bar' -+env4 = env.Clone(tools = ['msvc', MyTool]) -+.EE -+.IP -+The -+.I parse_flags -+keyword argument is also recognized: -+ -+.ES -+# create an environment for compiling programs that use wxWidgets -+wx_env = env.Clone(parse_flags = '!wx-config --cflags --cxxflags') -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI Command( target ", " source ", " action ", [key=" val ", ...])" -+.TP -+.IR env .Command( target ", " source ", " action ", [key=" val ", ...])" -+Executes a specific action -+(or list of actions) -+to build a target file or files. -+This is more convenient -+than defining a separate Builder object -+for a single special-case build. -+ -+As a special case, the -+.I source_scanner -+keyword argument can -+be used to specify -+a Scanner object -+that will be used to scan the sources. -+(The global -+.B DirScanner -+object can be used -+if any of the sources will be directories -+that must be scanned on-disk for -+changes to files that aren't -+already specified in other Builder of function calls.) -+ -+Any other keyword arguments specified override any -+same-named existing construction variables. -+ -+An action can be an external command, -+specified as a string, -+or a callable Python object; -+see "Action Objects," below, -+for more complete information. -+Also note that a string specifying an external command -+may be preceded by an -+.B @ -+(at-sign) -+to suppress printing the command in question, -+or by a -+.B \- -+(hyphen) -+to ignore the exit status of the external command. -+ -+Examples: -+ -+.ES -+env.Command('foo.out', 'foo.in', -+ "$FOO_BUILD < $SOURCES > $TARGET") -+ -+env.Command('bar.out', 'bar.in', -+ ["rm -f $TARGET", -+ "$BAR_BUILD < $SOURCES > $TARGET"], -+ ENV = {'PATH' : '/usr/local/bin/'}) -+ -+def rename(env, target, source): -+ import os -+ os.rename('.tmp', str(target[0])) -+ -+env.Command('baz.out', 'baz.in', -+ ["$BAZ_BUILD < $SOURCES > .tmp", -+ rename ]) -+.EE -+.IP -+Note that the -+.BR Command () -+function will usually assume, by default, -+that the specified targets and/or sources are Files, -+if no other part of the configuration -+identifies what type of entry it is. -+If necessary, you can explicitly specify -+that targets or source nodes should -+be treated as directoriese -+by using the -+.BR Dir () -+or -+.BR env.Dir () -+functions. -+ -+Examples: -+ -+.ES -+env.Command('ddd.list', Dir('ddd'), 'ls -l $SOURCE > $TARGET') -+ -+env['DISTDIR'] = 'destination/directory' -+env.Command(env.Dir('$DISTDIR')), None, make_distdir) -+.EE -+.IP -+(Also note that SCons will usually -+automatically create any directory necessary to hold a target file, -+so you normally don't need to create directories by hand.) -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI Configure( env ", [" custom_tests ", " conf_dir ", " log_file ", " config_h ]) -+.TP -+.IR env .Configure([ custom_tests ", " conf_dir ", " log_file ", " config_h ]) -+Creates a Configure object for integrated -+functionality similar to GNU autoconf. -+See the section "Configure Contexts," -+below, for a complete explanation of the arguments and behavior. -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.IR env .Copy([key= val ", ...])" -+A now-deprecated synonym for -+.BR env.Clone (). -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.IR env .CVS( repository ", " module ) -+A factory function that -+returns a Builder object -+to be used to fetch source files -+from the specified -+CVS -+.IR repository . -+The returned Builder -+is intended to be passed to the -+.BR SourceCode () -+function. -+ -+This function is deprecated. For details, see the entry for the -+.BR SourceCode () -+function. -+ -+The optional specified -+.I module -+will be added to the beginning -+of all repository path names; -+this can be used, in essence, -+to strip initial directory names -+from the repository path names, -+so that you only have to -+replicate part of the repository -+directory hierarchy in your -+local build directory. -+ -+Examples: -+ -+.ES -+# Will fetch foo/bar/src.c -+# from /usr/local/CVSROOT/foo/bar/src.c. -+env.SourceCode('.', env.CVS('/usr/local/CVSROOT')) -+ -+# Will fetch bar/src.c -+# from /usr/local/CVSROOT/foo/bar/src.c. -+env.SourceCode('.', env.CVS('/usr/local/CVSROOT', 'foo')) -+ -+# Will fetch src.c -+# from /usr/local/CVSROOT/foo/bar/src.c. -+env.SourceCode('.', env.CVS('/usr/local/CVSROOT', 'foo/bar')) -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI Decider( function ) -+.TP -+.IR env .Decider( function ) -+Specifies that all up-to-date decisions for -+targets built through this construction environment -+will be handled by the specified -+.IR function . -+The -+.I function -+can be one of the following strings -+that specify the type of decision function -+to be performed: -+ -+.RS 10 -+.TP 6 -+.B timestamp-newer -+Specifies that a target shall be considered out of date and rebuilt -+if the dependency's timestamp is newer than the target file's timestamp. -+This is the behavior of the classic Make utility, -+and -+.B make -+can be used a synonym for -+.BR timestamp-newer . -+.TP 6 -+.B timestamp-match -+Specifies that a target shall be considered out of date and rebuilt -+if the dependency's timestamp is different than the -+timestamp recorded the last time the target was built. -+This provides behavior very similar to the classic Make utility -+(in particular, files are not opened up so that their -+contents can be checksummed) -+except that the target will also be rebuilt if a -+dependency file has been restored to a version with an -+.I earlier -+timestamp, such as can happen when restoring files from backup archives. -+.TP 6 -+.B MD5 -+Specifies that a target shall be considered out of date and rebuilt -+if the dependency's content has changed sine the last time -+the target was built, -+as determined be performing an MD5 checksum -+on the dependency's contents -+and comparing it to the checksum recorded the -+last time the target was built. -+.B content -+can be used as a synonym for -+.BR MD5 . -+.TP 6 -+.B MD5-timestamp -+Specifies that a target shall be considered out of date and rebuilt -+if the dependency's content has changed sine the last time -+the target was built, -+except that dependencies with a timestamp that matches -+the last time the target was rebuilt will be -+assumed to be up-to-date and -+.I not -+rebuilt. -+This provides behavior very similar -+to the -+.B MD5 -+behavior of always checksumming file contents, -+with an optimization of not checking -+the contents of files whose timestamps haven't changed. -+The drawback is that SCons will -+.I not -+detect if a file's content has changed -+but its timestamp is the same, -+as might happen in an automated script -+that runs a build, -+updates a file, -+and runs the build again, -+all within a single second. -+.RE -+ -+Examples: -+ -+.ES -+# Use exact timestamp matches by default. -+Decider('timestamp-match') -+ -+# Use MD5 content signatures for any targets built -+# with the attached construction environment. -+env.Decider('content') -+.EE -+.IP -+In addition to the above already-available functions, -+the -+.I function -+argument may be an actual Python function -+that takes the following three arguments: -+ -+.RS 10 -+.IP dependency -+The Node (file) which -+should cause the -+.I target -+to be rebuilt -+if it has "changed" since the last tme -+.I target -+was built. -+.IP target -+The Node (file) being built. -+In the normal case, -+this is what should get rebuilt -+if the -+.I dependency -+has "changed." -+.IP prev_ni -+Stored information about the state of the -+.I dependency -+the last time the -+.I target -+was built. -+This can be consulted to match various -+file characteristics -+such as the timestamp, -+size, or content signature. -+.RE -+ -+The -+.I function -+should return a -+.B True -+(non-zero) -+value if the -+.I dependency -+has "changed" since the last time -+the -+.I target -+was built -+(indicating that the target -+.I should -+be rebuilt), -+and -+.B False -+(zero) -+otherwise -+(indicating that the target should -+.I not -+be rebuilt). -+Note that the decision can be made -+using whatever criteria are appopriate. -+Ignoring some or all of the function arguments -+is perfectly normal. -+ -+Example: -+ -+.ES -+def my_decider(dependency, target, prev_ni): -+ return not os.path.exists(str(target)) -+ -+env.Decider(my_decider) -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI Default( targets ) -+.TP -+.IR env .Default( targets ) -+This specifies a list of default targets, -+which will be built by -+.B scons -+if no explicit targets are given on the command line. -+Multiple calls to -+.BR Default () -+are legal, -+and add to the list of default targets. -+ -+Multiple targets should be specified as -+separate arguments to the -+.BR Default () -+method, or as a list. -+.BR Default () -+will also accept the Node returned by any -+of a construction environment's -+builder methods. -+ -+Examples: -+ -+.ES -+Default('foo', 'bar', 'baz') -+env.Default(['a', 'b', 'c']) -+hello = env.Program('hello', 'hello.c') -+env.Default(hello) -+.EE -+.IP -+An argument to -+.BR Default () -+of -+.B None -+will clear all default targets. -+Later calls to -+.BR Default () -+will add to the (now empty) default-target list -+like normal. -+ -+The current list of targets added using the -+.BR Default () -+function or method is available in the -+.B DEFAULT_TARGETS -+list; -+see below. -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI DefaultEnvironment([ args ]) -+Creates and returns a default construction environment object. -+This construction environment is used internally by SCons -+in order to execute many of the global functions in this list, -+and to fetch source files transparently -+from source code management systems. -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI Depends( target ", " dependency ) -+.TP -+.IR env .Depends( target ", " dependency ) -+Specifies an explicit dependency; -+the -+.I target -+will be rebuilt -+whenever the -+.I dependency -+has changed. -+Both the specified -+.I target -+and -+.I dependency -+can be a string -+(usually the path name of a file or directory) -+or Node objects, -+or a list of strings or Node objects -+(such as returned by a Builder call). -+This should only be necessary -+for cases where the dependency -+is not caught by a Scanner -+for the file. -+ -+Example: -+ -+.ES -+env.Depends('foo', 'other-input-file-for-foo') -+ -+mylib = env.Library('mylib.c') -+installed_lib = env.Install('lib', mylib) -+bar = env.Program('bar.c') -+ -+# Arrange for the library to be copied into the installation -+# directory before trying to build the "bar" program. -+# (Note that this is for example only. A "real" library -+# dependency would normally be configured through the $LIBS -+# and $LIBPATH variables, not using an env.Depends() call.) -+ -+env.Depends(bar, installed_lib) -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.IR env .Dictionary([ vars ]) -+Returns a dictionary object -+containing copies of all of the -+construction variables in the environment. -+If there are any variable names specified, -+only the specified construction -+variables are returned in the dictionary. -+ -+Example: -+ -+.ES -+dict = env.Dictionary() -+cc_dict = env.Dictionary('CC', 'CCFLAGS', 'CCCOM') -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI Dir( name ", [" directory ]) -+.TP -+.IR env .Dir( name ", [" directory ]) -+This returns a Directory Node, -+an object that represents the specified directory -+.IR name . -+.I name -+can be a relative or absolute path. -+.I directory -+is an optional directory that will be used as the parent directory. -+If no -+.I directory -+is specified, the current script's directory is used as the parent. -+ -+If -+.I name -+is a list, SCons returns a list of Dir nodes. -+Construction variables are expanded in -+.IR name . -+ -+Directory Nodes can be used anywhere you -+would supply a string as a directory name -+to a Builder method or function. -+Directory Nodes have attributes and methods -+that are useful in many situations; -+see "File and Directory Nodes," below. -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.IR env .Dump([ key ]) -+Returns a pretty printable representation of the environment. -+.IR key , -+if not -+.BR None , -+should be a string containing the name of the variable of interest. -+ -+This SConstruct: -+ -+.ES -+env=Environment() -+print env.Dump('CCCOM') -+.EE -+.IP -+will print: -+ -+.ES -+\'$CC -c -o $TARGET $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS $SOURCES' -+.EE -+.IP -+While this SConstruct: -+ -+.ES -+env=Environment() -+print env.Dump() -+.EE -+.IP -+will print: -+.ES -+{ 'AR': 'ar', -+ 'ARCOM': '$AR $ARFLAGS $TARGET $SOURCES\\n$RANLIB $RANLIBFLAGS $TARGET', -+ 'ARFLAGS': ['r'], -+ 'AS': 'as', -+ 'ASCOM': '$AS $ASFLAGS -o $TARGET $SOURCES', -+ 'ASFLAGS': [], -+ ... -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI EnsurePythonVersion( major ", " minor ) -+.TP -+.IR env .EnsurePythonVersion( major ", " minor ) -+Ensure that the Python version is at least -+.IR major\fP.\fIminor . -+This function will -+print out an error message and exit SCons with a non-zero exit code if the -+actual Python version is not late enough. -+ -+Example: -+ -+.ES -+EnsurePythonVersion(2,2) -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI EnsureSConsVersion( major ", " minor ", [" revision ]) -+.TP -+.IR env .EnsureSConsVersion( major ", " minor ", [" revision ]) -+Ensure that the SCons version is at least -+.IR major.minor , -+or -+.IR major.minor.revision . -+if -+.I revision -+is specified. -+This function will -+print out an error message and exit SCons with a non-zero exit code if the -+actual SCons version is not late enough. -+ -+Examples: -+ -+.ES -+EnsureSConsVersion(0,14) -+ -+EnsureSConsVersion(0,96,90) -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI Environment([key= value ", ...])" -+.TP -+.IR env .Environment([key= value ", ...])" -+Return a new construction environment -+initialized with the specified -+.IR key = value -+pairs. -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI Execute( action ", [" strfunction ", " varlist ]) -+.TP -+.IR env .Execute( action ", [" strfunction ", " varlist ]) -+Executes an Action object. -+The specified -+.I action -+may be an Action object -+(see the section "Action Objects," -+below, for a complete explanation of the arguments and behavior), -+or it may be a command-line string, -+list of commands, -+or executable Python function, -+each of which will be converted -+into an Action object -+and then executed. -+The exit value of the command -+or return value of the Python function -+will be returned. -+ -+Note that -+.B scons -+will print an error message if the executed -+.I action -+fails--that is, -+exits with or returns a non-zero value. -+.B scons -+will -+.IR not , -+however, -+automatically terminate the build -+if the specified -+.I action -+fails. -+If you want the build to stop in response to a failed -+.BR Execute () -+call, -+you must explicitly check for a non-zero return value: -+ -+.ES -+Execute(Copy('file.out', 'file.in')) -+ -+if Execute("mkdir sub/dir/ectory"): -+ # The mkdir failed, don't try to build. -+ Exit(1) -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI Exit([ value ]) -+.TP -+.IR env .Exit([ value ]) -+This tells -+.B scons -+to exit immediately -+with the specified -+.IR value . -+A default exit value of -+.B 0 -+(zero) -+is used if no value is specified. -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI Export( vars ) -+.TP -+.IR env .Export( vars ) -+This tells -+.B scons -+to export a list of variables from the current -+SConscript file to all other SConscript files. -+The exported variables are kept in a global collection, -+so subsequent calls to -+.BR Export () -+will over-write previous exports that have the same name. -+Multiple variable names can be passed to -+.BR Export () -+as separate arguments or as a list. -+Keyword arguments can be used to provide names and their values. -+A dictionary can be used to map variables to a different name when exported. -+Both local variables and global variables can be exported. -+ -+Examples: -+ -+.ES -+env = Environment() -+# Make env available for all SConscript files to Import(). -+Export("env") -+ -+package = 'my_name' -+# Make env and package available for all SConscript files:. -+Export("env", "package") -+ -+# Make env and package available for all SConscript files: -+Export(["env", "package"]) -+ -+# Make env available using the name debug: -+Export(debug = env) -+ -+# Make env available using the name debug: -+Export({"debug":env}) -+.EE -+.IP -+Note that the -+.BR SConscript () -+function supports an -+.I exports -+argument that makes it easier to to export a variable or -+set of variables to a single SConscript file. -+See the description of the -+.BR SConscript () -+function, below. -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI File( name ", [" directory ]) -+.TP -+.IR env .File( name ", [" directory ]) -+This returns a -+File Node, -+an object that represents the specified file -+.IR name . -+.I name -+can be a relative or absolute path. -+.I directory -+is an optional directory that will be used as the parent directory. -+ -+If -+.I name -+is a list, SCons returns a list of File nodes. -+Construction variables are expanded in -+.IR name . -+ -+File Nodes can be used anywhere you -+would supply a string as a file name -+to a Builder method or function. -+File Nodes have attributes and methods -+that are useful in many situations; -+see "File and Directory Nodes," below. -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI FindFile( file ", " dirs ) -+.TP -+.IR env .FindFile( file ", " dirs ) -+Search for -+.I file -+in the path specified by -+.IR dirs . -+.I dirs -+may be a list of directory names or a single directory name. -+In addition to searching for files that exist in the filesystem, -+this function also searches for derived files -+that have not yet been built. -+ -+Example: -+ -+.ES -+foo = env.FindFile('foo', ['dir1', 'dir2']) -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI FindInstalledFiles() -+.TP -+.IR env .FindInstalledFiles() -+Returns the list of targets set up by the -+.BR Install () -+or -+.BR InstallAs () -+builders. -+ -+This function serves as a convenient method to select the contents of -+a binary package. -+ -+Example: -+ -+.ES -+Install( '/bin', [ 'executable_a', 'executable_b' ] ) -+ -+# will return the file node list -+# [ '/bin/executable_a', '/bin/executable_b' ] -+FindInstalledFiles() -+ -+Install( '/lib', [ 'some_library' ] ) -+ -+# will return the file node list -+# [ '/bin/executable_a', '/bin/executable_b', '/lib/some_library' ] -+FindInstalledFiles() -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI FindPathDirs( variable ) -+Returns a function -+(actually a callable Python object) -+intended to be used as the -+.I path_function -+of a Scanner object. -+The returned object will look up the specified -+.I variable -+in a construction environment -+and treat the construction variable's value as a list of -+directory paths that should be searched -+(like -+.BR $CPPPATH , -+.BR $LIBPATH , -+etc.). -+ -+Note that use of -+.BR FindPathDirs () -+is generally preferable to -+writing your own -+.I path_function -+for the following reasons: -+1) The returned list will contain all appropriate directories -+found in source trees -+(when -+.BR VariantDir () -+is used) -+or in code repositories -+(when -+.BR Repository () -+or the -+.B \-Y -+option are used). -+2) scons will identify expansions of -+.I variable -+that evaluate to the same list of directories as, -+in fact, the same list, -+and avoid re-scanning the directories for files, -+when possible. -+ -+Example: -+ -+.ES -+def my_scan(node, env, path, arg): -+ # Code to scan file contents goes here... -+ return include_files -+ -+scanner = Scanner(name = 'myscanner', -+ function = my_scan, -+ path_function = FindPathDirs('MYPATH')) -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI FindSourceFiles(node= '"."') -+.TP -+.IR env .FindSourceFiles(node= '"."') -+Returns the list of nodes which serve as the source of the built files. -+It does so by inspecting the dependency tree starting at the optional -+argument -+.I node -+which defaults to the '"."'-node. It will then return all leaves of -+.IR node . -+These are all children which have no further children. -+ -+This function is a convenient method to select the contents of a Source -+Package. -+ -+Example: -+ -+.ES -+Program( 'src/main_a.c' ) -+Program( 'src/main_b.c' ) -+Program( 'main_c.c' ) -+ -+# returns ['main_c.c', 'src/main_a.c', 'SConstruct', 'src/main_b.c'] -+FindSourceFiles() -+ -+# returns ['src/main_b.c', 'src/main_a.c' ] -+FindSourceFiles( 'src' ) -+.EE -+.IP -+As you can see build support files (SConstruct in the above example) -+will also be returned by this function. -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI Flatten( sequence ) -+.TP -+.IR env .Flatten( sequence ) -+Takes a sequence (that is, a Python list or tuple) -+that may contain nested sequences -+and returns a flattened list containing -+all of the individual elements in any sequence. -+This can be helpful for collecting -+the lists returned by calls to Builders; -+other Builders will automatically -+flatten lists specified as input, -+but direct Python manipulation of -+these lists does not. -+ -+Examples: -+ -+.ES -+foo = Object('foo.c') -+bar = Object('bar.c') -+ -+# Because `foo' and `bar' are lists returned by the Object() Builder, -+# `objects' will be a list containing nested lists: -+objects = ['f1.o', foo, 'f2.o', bar, 'f3.o'] -+ -+# Passing such a list to another Builder is all right because -+# the Builder will flatten the list automatically: -+Program(source = objects) -+ -+# If you need to manipulate the list directly using Python, you need to -+# call Flatten() yourself, or otherwise handle nested lists: -+for object in Flatten(objects): -+ print str(object) -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI GetBuildFailures() -+Returns a list of exceptions for the -+actions that failed while -+attempting to build targets. -+Each element in the returned list is a -+.I BuildError -+object -+with the following attributes -+that record various aspects -+of the build failure: -+ -+.B .node -+The node that was being built -+when the build failure occurred. -+ -+.B .status -+The numeric exit status -+returned by the command or Python function -+that failed when trying to build the -+specified Node. -+ -+.B .errstr -+The SCons error string -+describing the build failure. -+(This is often a generic -+message like "Error 2" -+to indicate that an executed -+command exited with a status of 2.) -+ -+.B .filename -+The name of the file or -+directory that actually caused the failure. -+This may be different from the -+.B .node -+attribute. -+For example, -+if an attempt to build a target named -+.B sub/dir/target -+fails because the -+.B sub/dir -+directory could not be created, -+then the -+.B .node -+attribute will be -+.B sub/dir/target -+but the -+.B .filename -+attribute will be -+.BR sub/dir . -+ -+.B .executor -+The SCons Executor object -+for the target Node -+being built. -+This can be used to retrieve -+the construction environment used -+for the failed action. -+ -+.B .action -+The actual SCons Action object that failed. -+This will be one specific action -+out of the possible list of -+actions that would have been -+executed to build the target. -+ -+.B .command -+The actual expanded command that was executed and failed, -+after expansion of -+.BR $TARGET , -+.BR $SOURCE , -+and other construction variables. -+ -+Note that the -+.BR GetBuildFailures () -+function -+will always return an empty list -+until any build failure has occurred, -+which means that -+.BR GetBuildFailures () -+will always return an empty list -+while the -+.B SConscript -+files are being read. -+Its primary intended use is -+for functions that will be -+executed before SCons exits -+by passing them to the -+standard Python -+.BR atexit.register () -+function. -+Example: -+ -+.ES -+import atexit -+ -+def print_build_failures(): -+ from SCons.Script import GetBuildFailures -+ for bf in GetBuildFailures(): -+ print "%s failed: %s" % (bf.node, bf.errstr) -+ -+atexit.register(print_build_failures) -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI GetBuildPath( file ", [...])" -+.TP -+.IR env .GetBuildPath( file ", [...])" -+Returns the -+.B scons -+path name (or names) for the specified -+.I file -+(or files). -+The specified -+.I file -+or files -+may be -+.B scons -+Nodes or strings representing path names. -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI GetLaunchDir() -+.TP -+.IR env .GetLaunchDir() -+Returns the absolute path name of the directory from which -+.B scons -+was initially invoked. -+This can be useful when using the -+.BR \-u , -+.B \-U -+or -+.B \-D -+options, which internally -+change to the directory in which the -+.B SConstruct -+file is found. -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI GetOption( name ) -+.TP -+.IR env .GetOption( name ) -+This function provides a way to query the value of -+SCons options set on scons command line -+(or set using the -+.BR SetOption () -+function). -+The options supported are: -+ -+.RS 10 -+.TP 6 -+.B cache_debug -+which corresponds to --cache-debug; -+.TP 6 -+.B cache_disable -+which corresponds to --cache-disable; -+.TP 6 -+.B cache_force -+which corresponds to --cache-force; -+.TP 6 -+.B cache_show -+which corresponds to --cache-show; -+.TP 6 -+.B clean -+which corresponds to -c, --clean and --remove; -+.TP 6 -+.B config -+which corresponds to --config; -+.TP 6 -+.B directory -+which corresponds to -C and --directory; -+.TP 6 -+.B diskcheck -+which corresponds to --diskcheck -+.TP 6 -+.B duplicate -+which corresponds to --duplicate; -+.TP 6 -+.B file -+which corresponds to -f, --file, --makefile and --sconstruct; -+.TP 6 -+.B help -+which corresponds to -h and --help; -+.TP 6 -+.B ignore_errors -+which corresponds to --ignore-errors; -+.TP 6 -+.B implicit_cache -+which corresponds to --implicit-cache; -+.TP 6 -+.B implicit_deps_changed -+which corresponds to --implicit-deps-changed; -+.TP 6 -+.B implicit_deps_unchanged -+which corresponds to --implicit-deps-unchanged; -+.TP 6 -+.B interactive -+which corresponds to --interact and --interactive; -+.TP 6 -+.B keep_going -+which corresponds to -k and --keep-going; -+.TP 6 -+.B max_drift -+which corresponds to --max-drift; -+.TP 6 -+.B no_exec -+which corresponds to -n, --no-exec, --just-print, --dry-run and --recon; -+.TP 6 -+.B no_site_dir -+which corresponds to --no-site-dir; -+.TP 6 -+.B num_jobs -+which corresponds to -j and --jobs; -+.TP 6 -+.B profile_file -+which corresponds to --profile; -+.TP 6 -+.B question -+which corresponds to -q and --question; -+.TP 6 -+.B random -+which corresponds to --random; -+.TP 6 -+.B repository -+which corresponds to -Y, --repository and --srcdir; -+.TP 6 -+.B silent -+which corresponds to -s, --silent and --quiet; -+.TP 6 -+.B site_dir -+which corresponds to --site-dir; -+.TP 6 -+.B stack_size -+which corresponds to --stack-size; -+.TP 6 -+.B taskmastertrace_file -+which corresponds to --taskmastertrace; and -+.TP 6 -+.B warn -+which corresponds to --warn and --warning. -+.RE -+ -+See the documentation for the -+corresponding command line object for information about each specific -+option. -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI Glob( pattern ", [" ondisk ", " source ", " strings ]) -+.TP -+.IR env .Glob( pattern ", [" ondisk ", " source ", " strings ]) -+Returns Nodes (or strings) that match the specified -+.IR pattern , -+relative to the directory of the current -+.B SConscript -+file. -+The -+.BR env.Glob () -+form performs string substition on -+.I pattern -+and returns whatever matches -+the resulting expanded pattern. -+ -+The specified -+.I pattern -+uses Unix shell style metacharacters for matching: -+ -+.ES -+ * matches everything -+ ? matches any single character -+ [seq] matches any character in seq -+ [!seq] matches any char not in seq -+.EE -+.IP -+If the first character of a filename is a dot, -+it must be matched explicitly. -+Character matches do -+.I not -+span directory separators. -+ -+The -+.BR Glob () -+knows about -+repositories -+(see the -+.BR Repository () -+function) -+and source directories -+(see the -+.BR VariantDir () -+function) -+and -+returns a Node (or string, if so configured) -+in the local (SConscript) directory -+if matching Node is found -+anywhere in a corresponding -+repository or source directory. -+ -+The -+.I ondisk -+argument may be set to -+.B False -+(or any other non-true value) -+to disable the search for matches on disk, -+thereby only returning matches among -+already-configured File or Dir Nodes. -+The default behavior is to -+return corresponding Nodes -+for any on-disk matches found. -+ -+The -+.I source -+argument may be set to -+.B True -+(or any equivalent value) -+to specify that, -+when the local directory is a -+.BR VariantDir (), -+the returned Nodes should be from the -+corresponding source directory, -+not the local directory. -+ -+The -+.I strings -+argument may be set to -+.B True -+(or any equivalent value) -+to have the -+.BR Glob () -+function return strings, not Nodes, -+that represent the matched files or directories. -+The returned strings will be relative to -+the local (SConscript) directory. -+(Note that This may make it easier to perform -+arbitrary manipulation of file names, -+but if the returned strings are -+passed to a different -+.B SConscript -+file, -+any Node translation will be relative -+to the other -+.B SConscript -+directory, -+not the original -+.B SConscript -+directory.) -+ -+Examples: -+ -+.ES -+Program('foo', Glob('*.c')) -+Zip('/tmp/everything', Glob('.??*') + Glob('*')) -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI Help( text ) -+.TP -+.IR env .Help( text ) -+This specifies help text to be printed if the -+.B \-h -+argument is given to -+.BR scons . -+If -+.BR Help () -+is called multiple times, the text is appended together in the order -+that -+.BR Help () -+is called. -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI Ignore( target ", " dependency ) -+.TP -+.IR env .Ignore( target ", " dependency ) -+The specified dependency file(s) -+will be ignored when deciding if -+the target file(s) need to be rebuilt. -+ -+You can also use -+.BR Ignore () -+to remove a target from the default build. -+In order to do this you must specify the directory the target will -+be built in as the target, and the file you want to skip building -+as the dependency. -+ -+Note that this will only remove the dependencies listed from -+the files built by default. It will still be built if that -+dependency is needed by another object being built. -+See the third and forth examples below. -+ -+Examples: -+ -+.ES -+env.Ignore('foo', 'foo.c') -+env.Ignore('bar', ['bar1.h', 'bar2.h']) -+env.Ignore('.','foobar.obj') -+env.Ignore('bar','bar/foobar.obj') -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI Import( vars ) -+.TP -+.IR env .Import( vars ) -+This tells -+.B scons -+to import a list of variables into the current SConscript file. This -+will import variables that were exported with -+.BR Export () -+or in the -+.I exports -+argument to -+.BR SConscript (). -+Variables exported by -+.BR SConscript () -+have precedence. -+Multiple variable names can be passed to -+.BR Import () -+as separate arguments or as a list. The variable "*" can be used -+to import all variables. -+ -+Examples: -+ -+.ES -+Import("env") -+Import("env", "variable") -+Import(["env", "variable"]) -+Import("*") -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI Literal( string ) -+.TP -+.IR env .Literal( string ) -+The specified -+.I string -+will be preserved as-is -+and not have construction variables expanded. -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI Local( targets ) -+.TP -+.IR env .Local( targets ) -+The specified -+.I targets -+will have copies made in the local tree, -+even if an already up-to-date copy -+exists in a repository. -+Returns a list of the target Node or Nodes. -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.IR env .MergeFlags( arg ", [" unique ]) -+Merges the specified -+.I arg -+values to the construction environment's construction variables. -+If the -+.I arg -+argument is not a dictionary, -+it is converted to one by calling -+.BR env.ParseFlags () -+on the argument -+before the values are merged. -+Note that -+.I arg -+must be a single value, -+so multiple strings must -+be passed in as a list, -+not as separate arguments to -+.BR env.MergeFlags (). -+ -+By default, -+duplicate values are eliminated; -+you can, however, specify -+.B unique=0 -+to allow duplicate -+values to be added. -+When eliminating duplicate values, -+any construction variables that end with -+the string -+.B PATH -+keep the left-most unique value. -+All other construction variables keep -+the right-most unique value. -+ -+Examples: -+ -+.ES -+# Add an optimization flag to $CCFLAGS. -+env.MergeFlags('-O3') -+ -+# Combine the flags returned from running pkg-config with an optimization -+# flag and merge the result into the construction variables. -+env.MergeFlags(['!pkg-config gtk+-2.0 --cflags', '-O3']) -+ -+# Combine an optimization flag with the flags returned from running pkg-config -+# twice and merge the result into the construction variables. -+env.MergeFlags(['-O3', -+ '!pkg-config gtk+-2.0 --cflags --libs', -+ '!pkg-config libpng12 --cflags --libs']) -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI NoCache( target ", ...)" -+.TP -+.IR env .NoCache( target ", ...)" -+Specifies a list of files which should -+.I not -+be cached whenever the -+.BR CacheDir () -+method has been activated. -+The specified targets may be a list -+or an individual target. -+ -+Multiple files should be specified -+either as separate arguments to the -+.BR NoCache () -+method, or as a list. -+.BR NoCache () -+will also accept the return value of any of the construction environment -+Builder methods. -+ -+Calling -+.BR NoCache () -+on directories and other non-File Node types has no effect because -+only File Nodes are cached. -+ -+Examples: -+ -+.ES -+NoCache('foo.elf') -+NoCache(env.Program('hello', 'hello.c')) -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI NoClean( target ", ...)" -+.TP -+.IR env .NoClean( target ", ...)" -+Specifies a list of files or directories which should -+.I not -+be removed whenever the targets (or their dependencies) -+are specified with the -+.B \-c -+command line option. -+The specified targets may be a list -+or an individual target. -+Multiple calls to -+.BR NoClean () -+are legal, -+and prevent each specified target -+from being removed by calls to the -+.B \-c -+option. -+ -+Multiple files or directories should be specified -+either as separate arguments to the -+.BR NoClean () -+method, or as a list. -+.BR NoClean () -+will also accept the return value of any of the construction environment -+Builder methods. -+ -+Calling -+.BR NoClean () -+for a target overrides calling -+.BR Clean () -+for the same target, -+and any targets passed to both functions will -+.I not -+be removed by the -+.B \-c -+option. -+ -+Examples: -+ -+.ES -+NoClean('foo.elf') -+NoClean(env.Program('hello', 'hello.c')) -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.IR env .ParseConfig( command ", [" function ", " unique ]) -+Calls the specified -+.I function -+to modify the environment as specified by the output of -+.IR command . -+The default -+.I function -+is -+.BR env.MergeFlags (), -+which expects the output of a typical -+.B *-config -+command -+(for example, -+.BR gtk-config ) -+and adds the options -+to the appropriate construction variables. -+By default, -+duplicate values are not -+added to any construction variables; -+you can specify -+.B unique=0 -+to allow duplicate -+values to be added. -+ -+Interpreted options -+and the construction variables they affect -+are as specified for the -+.BR env.ParseFlags () -+method (which this method calls). -+See that method's description, below, -+for a table of options and construction variables. -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI ParseDepends( filename ", [" must_exist ", " only_one ]) -+.TP -+.IR env .ParseDepends( filename ", [" must_exist ", " only_one ]) -+Parses the contents of the specified -+.I filename -+as a list of dependencies in the style of -+.B Make -+or -+.BR mkdep , -+and explicitly establishes all of the listed dependencies. -+ -+By default, -+it is not an error -+if the specified -+.I filename -+does not exist. -+The optional -+.I must_exist -+argument may be set to a non-zero -+value to have -+scons -+throw an exception and -+generate an error if the file does not exist, -+or is otherwise inaccessible. -+ -+The optional -+.I only_one -+argument may be set to a non-zero -+value to have -+scons -+thrown an exception and -+generate an error -+if the file contains dependency -+information for more than one target. -+This can provide a small sanity check -+for files intended to be generated -+by, for example, the -+.B "gcc -M" -+flag, -+which should typically only -+write dependency information for -+one output file into a corresponding -+.B .d -+file. -+ -+The -+.I filename -+and all of the files listed therein -+will be interpreted relative to -+the directory of the -+.B SConscript -+file which calls the -+.BR ParseDepends () -+function. -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.IR env .ParseFlags( flags ", ...)" -+Parses one or more strings containing -+typical command-line flags for GCC tool chains -+and returns a dictionary with the flag values -+separated into the appropriate SCons construction variables. -+This is intended as a companion to the -+.BR env.MergeFlags () -+method, but allows for the values in the returned dictionary -+to be modified, if necessary, -+before merging them into the construction environment. -+(Note that -+.BR env.MergeFlags () -+will call this method if its argument is not a dictionary, -+so it is usually not necessary to call -+.BR env.ParseFlags () -+directly unless you want to manipulate the values.) -+ -+If the first character in any string is -+an exclamation mark (!), -+the rest of the string is executed as a command, -+and the output from the command is -+parsed as GCC tool chain command-line flags -+and added to the resulting dictionary. -+ -+Flag values are translated accordig to the prefix found, -+and added to the following construction variables: -+ -+.ES -+-arch CCFLAGS, LINKFLAGS -+-D CPPDEFINES -+-framework FRAMEWORKS -+-frameworkdir= FRAMEWORKPATH -+-include CCFLAGS -+-isysroot CCFLAGS, LINKFLAGS -+-I CPPPATH -+-l LIBS -+-L LIBPATH -+-mno-cygwin CCFLAGS, LINKFLAGS -+-mwindows LINKFLAGS -+-pthread CCFLAGS, LINKFLAGS -+-std= CFLAGS -+-Wa, ASFLAGS, CCFLAGS -+-Wl,-rpath= RPATH -+-Wl,-R, RPATH -+-Wl,-R RPATH -+-Wl, LINKFLAGS -+-Wp, CPPFLAGS -+- CCFLAGS -++ CCFLAGS, LINKFLAGS -+.EE -+.IP -+Any other strings not associated with options -+are assumed to be the names of libraries -+and added to the -+.B $LIBS -+construction variable. -+ -+Examples (all of which produce the same result): -+ -+.ES -+dict = env.ParseFlags('-O2 -Dfoo -Dbar=1') -+dict = env.ParseFlags('-O2', '-Dfoo', '-Dbar=1') -+dict = env.ParseFlags(['-O2', '-Dfoo -Dbar=1']) -+dict = env.ParseFlags('-O2', '!echo -Dfoo -Dbar=1') -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.IR env .Perforce() -+A factory function that -+returns a Builder object -+to be used to fetch source files -+from the Perforce source code management system. -+The returned Builder -+is intended to be passed to the -+.BR SourceCode () -+function. -+ -+This function is deprecated. For details, see the entry for the -+.BR SourceCode () -+function. -+ -+Example: -+ -+.ES -+env.SourceCode('.', env.Perforce()) -+.EE -+.IP -+Perforce uses a number of external -+environment variables for its operation. -+Consequently, this function adds the -+following variables from the user's external environment -+to the construction environment's -+ENV dictionary: -+P4CHARSET, -+P4CLIENT, -+P4LANGUAGE, -+P4PASSWD, -+P4PORT, -+P4USER, -+SystemRoot, -+USER, -+and -+USERNAME. -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI Platform( string ) -+The -+.BR Platform () -+form returns a callable object -+that can be used to initialize -+a construction environment using the -+platform keyword of the -+.BR Environment () -+function. -+ -+Example: -+ -+.ES -+env = Environment(platform = Platform('win32')) -+.EE -+.IP -+The -+.BR env.Platform () -+form applies the callable object for the specified platform -+.I string -+to the environment through which the method was called. -+ -+.ES -+env.Platform('posix') -+.EE -+.IP -+Note that the -+.B win32 -+platform adds the -+.B SystemDrive -+and -+.B SystemRoot -+variables from the user's external environment -+to the construction environment's -+.B $ENV -+dictionary. -+This is so that any executed commands -+that use sockets to connect with other systems -+(such as fetching source files from -+external CVS repository specifications like -+.BR :pserver:anonymous@cvs.sourceforge.net:/cvsroot/scons ) -+will work on Windows systems. -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI Precious( target ", ...)" -+.TP -+.IR env .Precious( target ", ...)" -+Marks each given -+.I target -+as precious so it is not deleted before it is rebuilt. Normally -+.B scons -+deletes a target before building it. -+Multiple targets can be passed in to a single call to -+.BR Precious (). -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.IR env .Prepend(key= val ", [...])" -+Appends the specified keyword arguments -+to the beginning of construction variables in the environment. -+If the Environment does not have -+the specified construction variable, -+it is simply added to the environment. -+If the values of the construction variable -+and the keyword argument are the same type, -+then the two values will be simply added together. -+Otherwise, the construction variable -+and the value of the keyword argument -+are both coerced to lists, -+and the lists are added together. -+(See also the Append method, above.) -+ -+Example: -+ -+.ES -+env.Prepend(CCFLAGS = '-g ', FOO = ['foo.yyy']) -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.IR env .PrependENVPath( name ", " newpath ", [" envname ", " sep ", " delete_existing ]) -+This appends new path elements to the given path in the -+specified external environment -+.RB ( $ENV -+by default). -+This will only add -+any particular path once (leaving the first one it encounters and -+ignoring the rest, to preserve path order), -+and to help assure this, -+will normalize all paths (using -+.B os.path.normpath -+and -+.BR os.path.normcase ). -+This can also handle the -+case where the given old path variable is a list instead of a -+string, in which case a list will be returned instead of a string. -+ -+If -+.I delete_existing -+is 0, then adding a path that already exists -+will not move it to the beginning; -+it will stay where it is in the list. -+ -+Example: -+ -+.ES -+print 'before:',env['ENV']['INCLUDE'] -+include_path = '/foo/bar:/foo' -+env.PrependENVPath('INCLUDE', include_path) -+print 'after:',env['ENV']['INCLUDE'] -+.EE -+.IP -+The above example will print: -+ -+.ES -+before: /biz:/foo -+after: /foo/bar:/foo:/biz -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.IR env .PrependUnique(key= val ", delete_existing=" "0, [...])" -+Appends the specified keyword arguments -+to the beginning of construction variables in the environment. -+If the Environment does not have -+the specified construction variable, -+it is simply added to the environment. -+If the construction variable being appended to is a list, -+then any value(s) that already exist in the -+construction variable will -+.I not -+be added again to the list. -+However, if delete_existing is 1, -+existing matching values are removed first, so -+existing values in the arg list move to the front of the list. -+ -+Example: -+ -+.ES -+env.PrependUnique(CCFLAGS = '-g', FOO = ['foo.yyy']) -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI Progress( callable ", [" interval ]) -+.TP -+.RI Progress( string ", [" interval ", " file ", " overwrite ]) -+.TP -+.RI Progress( list_of_strings ", [" interval ", " file ", " overwrite ]) -+Allows SCons to show progress made during the build -+by displaying a string or calling a function while -+evaluating Nodes (e.g. files). -+ -+If the first specified argument is a Python callable -+(a function or an object that has a -+.BR __call__ () -+method), -+the function will be called -+once every -+.I interval -+times a Node is evaluated. -+The callable will be passed the evaluated Node -+as its only argument. -+(For future compatibility, -+it's a good idea to also add -+.B *args -+and -+.B **kw -+as arguments to your function or method. -+This will prevent the code from breaking -+if SCons ever changes the interface -+to call the function with additional arguments in the future.) -+ -+An example of a simple custom progress function -+that prints a string containing the Node name -+every 10 Nodes: -+ -+.ES -+def my_progress_function(node, *args, **kw): -+ print 'Evaluating node %s!' % node -+Progress(my_progress_function, interval=10) -+.EE -+.IP -+A more complicated example of a custom progress display object -+that prints a string containing a count -+every 100 evaluated Nodes. -+Note the use of -+.B \\r -+(a carriage return) -+at the end so that the string -+will overwrite itself on a display: -+ -+.ES -+import sys -+class ProgressCounter(object): -+ count = 0 -+ def __call__(self, node, *args, **kw): -+ self.count += 100 -+ sys.stderr.write('Evaluated %s nodes\\r' % self.count) -+Progress(ProgressCounter(), interval=100) -+.EE -+.IP -+If the first argument -+.BR Progress () -+is a string, -+the string will be displayed -+every -+.I interval -+evaluated Nodes. -+The default is to print the string on standard output; -+an alternate output stream -+may be specified with the -+.B file= -+argument. -+The following will print a series of dots -+on the error output, -+one dot for every 100 evaluated Nodes: -+ -+.ES -+import sys -+Progress('.', interval=100, file=sys.stderr) -+.EE -+.IP -+If the string contains the verbatim substring -+.BR $TARGET , -+it will be replaced with the Node. -+Note that, for performance reasons, this is -+.I not -+a regular SCons variable substition, -+so you can not use other variables -+or use curly braces. -+The following example will print the name of -+every evaluated Node, -+using a -+.B \\r -+(carriage return) to cause each line to overwritten by the next line, -+and the -+.B overwrite= -+keyword argument to make sure the previously-printed -+file name is overwritten with blank spaces: -+ -+.ES -+import sys -+Progress('$TARGET\\r', overwrite=True) -+.EE -+.IP -+If the first argument to -+.BR Progress () -+is a list of strings, -+then each string in the list will be displayed -+in rotating fashion every -+.I interval -+evaluated Nodes. -+This can be used to implement a "spinner" -+on the user's screen as follows: -+ -+.ES -+Progress(['-\\r', '\\\\\\r', '|\\r', '/\\r'], interval=5) -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.IR env .RCS() -+A factory function that -+returns a Builder object -+to be used to fetch source files -+from RCS. -+The returned Builder -+is intended to be passed to the -+.BR SourceCode () -+function: -+ -+This function is deprecated. For details, see the entry for the -+.BR SourceCode () -+function. -+ -+Examples: -+ -+.ES -+env.SourceCode('.', env.RCS()) -+.EE -+.IP -+Note that -+.B scons -+will fetch source files -+from RCS subdirectories automatically, -+so configuring RCS -+as demonstrated in the above example -+should only be necessary if -+you are fetching from -+RCS,v -+files in the same -+directory as the source files, -+or if you need to explicitly specify RCS -+for a specific subdirectory. -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.IR env .Replace(key= val ", [...])" -+Replaces construction variables in the Environment -+with the specified keyword arguments. -+ -+Example: -+ -+.ES -+env.Replace(CCFLAGS = '-g', FOO = 'foo.xxx') -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI Repository( directory ) -+.TP -+.IR env .Repository( directory ) -+Specifies that -+.I directory -+is a repository to be searched for files. -+Multiple calls to -+.BR Repository () -+are legal, -+and each one adds to the list of -+repositories that will be searched. -+ -+To -+.BR scons , -+a repository is a copy of the source tree, -+from the top-level directory on down, -+which may contain -+both source files and derived files -+that can be used to build targets in -+the local source tree. -+The canonical example would be an -+official source tree maintained by an integrator. -+If the repository contains derived files, -+then the derived files should have been built using -+.BR scons , -+so that the repository contains the necessary -+signature information to allow -+.B scons -+to figure out when it is appropriate to -+use the repository copy of a derived file, -+instead of building one locally. -+ -+Note that if an up-to-date derived file -+already exists in a repository, -+.B scons -+will -+.I not -+make a copy in the local directory tree. -+In order to guarantee that a local copy -+will be made, -+use the -+.BR Local () -+method. -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI Requires( target ", " prerequisite ) -+.TP -+.IR env .Requires( target ", " prerequisite ) -+Specifies an order-only relationship -+between the specified target file(s) -+and the specified prerequisite file(s). -+The prerequisite file(s) -+will be (re)built, if necessary, -+.I before -+the target file(s), -+but the target file(s) do not actually -+depend on the prerequisites -+and will not be rebuilt simply because -+the prerequisite file(s) change. -+ -+Example: -+ -+.ES -+env.Requires('foo', 'file-that-must-be-built-before-foo') -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI Return([ vars "..., stop=" ]) -+By default, -+this stops processing the current SConscript -+file and returns to the calling SConscript file -+the values of the variables named in the -+.I vars -+string arguments. -+Multiple strings contaning variable names may be passed to -+.BR Return (). -+Any strings that contain white space -+ -+The optional -+.B stop= -+keyword argument may be set to a false value -+to continue processing the rest of the SConscript -+file after the -+.BR Return () -+call. -+This was the default behavior prior to SCons 0.98. -+However, the values returned -+are still the values of the variables in the named -+.I vars -+at the point -+.BR Return () -+is called. -+ -+Examples: -+ -+.ES -+# Returns without returning a value. -+Return() -+ -+# Returns the value of the 'foo' Python variable. -+Return("foo") -+ -+# Returns the values of the Python variables 'foo' and 'bar'. -+Return("foo", "bar") -+ -+# Returns the values of Python variables 'val1' and 'val2'. -+Return('val1 val2') -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI Scanner( function ", [" argument ", " keys ", " path_function ", " node_class ", " node_factory ", " scan_check ", " recursive ]) -+.TP -+.IR env .Scanner( function ", [" argument ", " keys ", " path_function ", " node_class ", " node_factory ", " scan_check ", " recursive ]) -+Creates a Scanner object for -+the specified -+.IR function . -+See the section "Scanner Objects," -+below, for a complete explanation of the arguments and behavior. -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.IR env .SCCS() -+A factory function that -+returns a Builder object -+to be used to fetch source files -+from SCCS. -+The returned Builder -+is intended to be passed to the -+.BR SourceCode () -+function. -+ -+Example: -+ -+.ES -+env.SourceCode('.', env.SCCS()) -+.EE -+.IP -+Note that -+.B scons -+will fetch source files -+from SCCS subdirectories automatically, -+so configuring SCCS -+as demonstrated in the above example -+should only be necessary if -+you are fetching from -+.B s.SCCS -+files in the same -+directory as the source files, -+or if you need to explicitly specify SCCS -+for a specific subdirectory. -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI SConscript( scripts ", [" exports ", " variant_dir ", " duplicate ]) -+.TP -+.IR env .SConscript( scripts ", [" exports ", " variant_dir ", " duplicate ]) -+.TP -+.RI SConscript(dirs= subdirs ", [name=" script ", " exports ", " variant_dir ", " duplicate ]) -+.TP -+.IR env .SConscript(dirs= subdirs ", [name=" script ", " exports ", " variant_dir ", " duplicate ]) -+This tells -+.B scons -+to execute -+one or more subsidiary SConscript (configuration) files. -+Any variables returned by a called script using -+.BR Return () -+will be returned by the call to -+.BR SConscript (). -+There are two ways to call the -+.BR SConscript () -+function. -+ -+The first way you can call -+.BR SConscript () -+is to explicitly specify one or more -+.I scripts -+as the first argument. -+A single script may be specified as a string; -+multiple scripts must be specified as a list -+(either explicitly or as created by -+a function like -+.BR Split ()). -+Examples: -+.ES -+SConscript('SConscript') # run SConscript in the current directory -+SConscript('src/SConscript') # run SConscript in the src directory -+SConscript(['src/SConscript', 'doc/SConscript']) -+config = SConscript('MyConfig.py') -+.EE -+.IP -+The second way you can call -+.BR SConscript () -+is to specify a list of (sub)directory names -+as a -+.BI dirs= subdirs -+keyword argument. -+In this case, -+.B scons -+will, by default, -+execute a subsidiary configuration file named -+.B SConscript -+in each of the specified directories. -+You may specify a name other than -+.B SConscript -+by supplying an optional -+.BI name= script -+keyword argument. -+The first three examples below have the same effect -+as the first three examples above: -+.ES -+SConscript(dirs='.') # run SConscript in the current directory -+SConscript(dirs='src') # run SConscript in the src directory -+SConscript(dirs=['src', 'doc']) -+SConscript(dirs=['sub1', 'sub2'], name='MySConscript') -+.EE -+.IP -+The optional -+.I exports -+argument provides a list of variable names or a dictionary of -+named values to export to the -+.IR script(s) . -+These variables are locally exported only to the specified -+.IR script(s) , -+and do not affect the global pool of variables used by the -+.BR Export () -+function. -+The subsidiary -+.I script(s) -+must use the -+.BR Import () -+function to import the variables. -+Examples: -+.ES -+foo = SConscript('sub/SConscript', exports='env') -+SConscript('dir/SConscript', exports=['env', 'variable']) -+SConscript(dirs='subdir', exports='env variable') -+SConscript(dirs=['one', 'two', 'three'], exports='shared_info') -+.EE -+.IP -+If the optional -+.I variant_dir -+argument is present, it causes an effect equivalent to the -+.BR VariantDir () -+method described below. -+(If -+.I variant_dir -+is not present, the -+.I duplicate -+argument is ignored.) -+The -+.I variant_dir -+argument is interpreted relative to the directory of the calling -+.B SConscript -+file. -+See the description of the -+.BR VariantDir () -+function below for additional details and restrictions. -+ -+If -+.I variant_dir -+is present, -+the source directory is the directory in which the -+.B SConscript -+file resides and the -+.B SConscript -+file is evaluated as if it were in the -+.I variant_dir -+directory: -+.ES -+SConscript('src/SConscript', variant_dir = 'build') -+.EE -+.IP -+is equivalent to -+ -+.ES -+VariantDir('build', 'src') -+SConscript('build/SConscript') -+.EE -+.IP -+This later paradigm is often used when the sources are -+in the same directory as the -+.BR SConstruct : -+ -+.ES -+SConscript('SConscript', variant_dir = 'build') -+.EE -+.IP -+is equivalent to -+ -+.ES -+VariantDir('build', '.') -+SConscript('build/SConscript') -+.EE -+.IP -+Here are some composite examples: -+ -+.ES -+# collect the configuration information and use it to build src and doc -+shared_info = SConscript('MyConfig.py') -+SConscript('src/SConscript', exports='shared_info') -+SConscript('doc/SConscript', exports='shared_info') -+.EE -+ -+.ES -+# build debugging and production versions. SConscript -+# can use Dir('.').path to determine variant. -+SConscript('SConscript', variant_dir='debug', duplicate=0) -+SConscript('SConscript', variant_dir='prod', duplicate=0) -+.EE -+ -+.ES -+# build debugging and production versions. SConscript -+# is passed flags to use. -+opts = { 'CPPDEFINES' : ['DEBUG'], 'CCFLAGS' : '-pgdb' } -+SConscript('SConscript', variant_dir='debug', duplicate=0, exports=opts) -+opts = { 'CPPDEFINES' : ['NODEBUG'], 'CCFLAGS' : '-O' } -+SConscript('SConscript', variant_dir='prod', duplicate=0, exports=opts) -+.EE -+ -+.ES -+# build common documentation and compile for different architectures -+SConscript('doc/SConscript', variant_dir='build/doc', duplicate=0) -+SConscript('src/SConscript', variant_dir='build/x86', duplicate=0) -+SConscript('src/SConscript', variant_dir='build/ppc', duplicate=0) -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI SConscriptChdir( value ) -+.TP -+.IR env .SConscriptChdir( value ) -+By default, -+.B scons -+changes its working directory -+to the directory in which each -+subsidiary SConscript file lives. -+This behavior may be disabled -+by specifying either: -+ -+.ES -+SConscriptChdir(0) -+env.SConscriptChdir(0) -+.EE -+.IP -+in which case -+.B scons -+will stay in the top-level directory -+while reading all SConscript files. -+(This may be necessary when building from repositories, -+when all the directories in which SConscript files may be found -+don't necessarily exist locally.) -+You may enable and disable -+this ability by calling -+SConscriptChdir() -+multiple times. -+ -+Example: -+ -+.ES -+env = Environment() -+SConscriptChdir(0) -+SConscript('foo/SConscript') # will not chdir to foo -+env.SConscriptChdir(1) -+SConscript('bar/SConscript') # will chdir to bar -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI SConsignFile([ file ", " dbm_module ]) -+.TP -+.IR env .SConsignFile([ file ", " dbm_module ]) -+This tells -+.B scons -+to store all file signatures -+in the specified database -+.IR file . -+If the -+.I file -+name is omitted, -+.B .sconsign -+is used by default. -+(The actual file name(s) stored on disk -+may have an appropriated suffix appended -+by the -+.IR dbm_module .) -+If -+.I file -+is not an absolute path name, -+the file is placed in the same directory as the top-level -+.B SConstruct -+file. -+ -+If -+.I file -+is -+.BR None , -+then -+.B scons -+will store file signatures -+in a separate -+.B .sconsign -+file in each directory, -+not in one global database file. -+(This was the default behavior -+prior to SCons 0.96.91 and 0.97.) -+ -+The optional -+.I dbm_module -+argument can be used to specify -+which Python database module -+The default is to use a custom -+.B SCons.dblite -+module that uses pickled -+Python data structures, -+and which works on all Python versions. -+ -+Examples: -+ -+.ES -+# Explicitly stores signatures in ".sconsign.dblite" -+# in the top-level SConstruct directory (the -+# default behavior). -+SConsignFile() -+ -+# Stores signatures in the file "etc/scons-signatures" -+# relative to the top-level SConstruct directory. -+SConsignFile("etc/scons-signatures") -+ -+# Stores signatures in the specified absolute file name. -+SConsignFile("/home/me/SCons/signatures") -+ -+# Stores signatures in a separate .sconsign file -+# in each directory. -+SConsignFile(None) -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.IR env .SetDefault(key= val ", [...])" -+Sets construction variables to default values specified with the keyword -+arguments if (and only if) the variables are not already set. -+The following statements are equivalent: -+ -+.ES -+env.SetDefault(FOO = 'foo') -+ -+if 'FOO' not in env: env['FOO'] = 'foo' -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI SetOption( name ", " value ) -+.TP -+.IR env .SetOption( name ", " value ) -+This function provides a way to set a select subset of the scons command -+line options from a SConscript file. The options supported are: -+ -+.RS 10 -+.TP 6 -+.B clean -+which corresponds to -c, --clean and --remove; -+.TP 6 -+.B duplicate -+which corresponds to --duplicate; -+.TP 6 -+.B help -+which corresponds to -h and --help; -+.TP 6 -+.B implicit_cache -+which corresponds to --implicit-cache; -+.TP 6 -+.B max_drift -+which corresponds to --max-drift; -+.TP 6 -+.B no_exec -+which corresponds to -n, --no-exec, --just-print, --dry-run and --recon; -+.TP 6 -+.B num_jobs -+which corresponds to -j and --jobs; -+.TP 6 -+.B random -+which corresponds to --random; and -+.TP 6 -+.B stack_size -+which corresponds to --stack-size. -+.RE -+ -+See the documentation for the -+corresponding command line object for information about each specific -+option. -+ -+Example: -+ -+.ES -+SetOption('max_drift', 1) -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI SideEffect( side_effect ", " target ) -+.TP -+.IR env .SideEffect( side_effect ", " target ) -+Declares -+.I side_effect -+as a side effect of building -+.IR target . -+Both -+.I side_effect -+and -+.I target -+can be a list, a file name, or a node. -+A side effect is a target file that is created or updated -+as a side effect of building other targets. -+For example, a Windows PDB -+file is created as a side effect of building the .obj -+files for a static library, -+and various log files are created updated -+as side effects of various TeX commands. -+If a target is a side effect of multiple build commands, -+.B scons -+will ensure that only one set of commands -+is executed at a time. -+Consequently, you only need to use this method -+for side-effect targets that are built as a result of -+multiple build commands. -+ -+Because multiple build commands may update -+the same side effect file, -+by default the -+.I side_effect -+target is -+.I not -+automatically removed -+when the -+.I target -+is removed by the -+.B \-c -+option. -+(Note, however, that the -+.I side_effect -+might be removed as part of -+cleaning the directory in which it lives.) -+If you want to make sure the -+.I side_effect -+is cleaned whenever a specific -+.I target -+is cleaned, -+you must specify this explicitly -+with the -+.BR Clean () -+or -+.BR env.Clean () -+function. -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI SourceCode( entries ", " builder ) -+.TP -+.IR env .SourceCode( entries ", " builder ) -+This function and its associate factory functions are deprecated. -+There is no replacement. -+The intended use was to keep a local tree in sync with an archive, -+but in actuality the function only causes the archive -+to be fetched on the first run. -+Synchronizing with the archive is best done external to &SCons;. -+ -+Arrange for non-existent source files to -+be fetched from a source code management system -+using the specified -+.IR builder . -+The specified -+.I entries -+may be a Node, string or list of both, -+and may represent either individual -+source files or directories in which -+source files can be found. -+ -+For any non-existent source files, -+.B scons -+will search up the directory tree -+and use the first -+.BR SourceCode () -+builder it finds. -+The specified -+.I builder -+may be -+.BR None , -+in which case -+.B scons -+will not use a builder to fetch -+source files for the specified -+.IR entries , -+even if a -+.BR SourceCode () -+builder has been specified -+for a directory higher up the tree. -+ -+.B scons -+will, by default, -+fetch files from SCCS or RCS subdirectories -+without explicit configuration. -+This takes some extra processing time -+to search for the necessary -+source code management files on disk. -+You can avoid these extra searches -+and speed up your build a little -+by disabling these searches as follows: -+ -+.ES -+env.SourceCode('.', None) -+.EE -+.IP -+Note that if the specified -+.I builder -+is one you create by hand, -+it must have an associated -+construction environment to use -+when fetching a source file. -+ -+.B scons -+provides a set of canned factory -+functions that return appropriate -+Builders for various popular -+source code management systems. -+Canonical examples of invocation include: -+ -+.ES -+env.SourceCode('.', env.BitKeeper('/usr/local/BKsources')) -+env.SourceCode('src', env.CVS('/usr/local/CVSROOT')) -+env.SourceCode('/', env.RCS()) -+env.SourceCode(['f1.c', 'f2.c'], env.SCCS()) -+env.SourceCode('no_source.c', None) -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI SourceSignatures( type ) -+.TP -+.IR env .SourceSignatures( type ) -+Note: Although it is not yet officially deprecated, -+use of this function is discouraged. -+See the -+.BR Decider () -+function for a more flexible and straightforward way -+to configure SCons' decision-making. -+ -+The -+.BR SourceSignatures () -+function tells -+.B scons -+how to decide if a source file -+(a file that is not built from any other files) -+has changed since the last time it -+was used to build a particular target file. -+Legal values are -+.B MD5 -+or -+.BR timestamp . -+ -+If the environment method is used, -+the specified type of source signature -+is only used when deciding whether targets -+built with that environment are up-to-date or must be rebuilt. -+If the global function is used, -+the specified type of source signature becomes the default -+used for all decisions -+about whether targets are up-to-date. -+ -+.B MD5 -+means -+.B scons -+decides that a source file has changed -+if the MD5 checksum of its contents has changed since -+the last time it was used to rebuild a particular target file. -+ -+.B timestamp -+means -+.B scons -+decides that a source file has changed -+if its timestamp (modification time) has changed since -+the last time it was used to rebuild a particular target file. -+(Note that although this is similar to the behavior of Make, -+by default it will also rebuild if the dependency is -+.I older -+than the last time it was used to rebuild the target file.) -+ -+There is no different between the two behaviors -+for Python -+.BR Value () -+node objects. -+ -+.B MD5 -+signatures take longer to compute, -+but are more accurate than -+.B timestamp -+signatures. -+The default value is -+.BR MD5 . -+ -+Note that the default -+.BR TargetSignatures () -+setting (see below) -+is to use this -+.BR SourceSignatures () -+setting for any target files that are used -+to build other target files. -+Consequently, changing the value of -+.BR SourceSignatures () -+will, by default, -+affect the up-to-date decision for all files in the build -+(or all files built with a specific construction environment -+when -+.BR env.SourceSignatures () -+is used). -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI Split( arg ) -+.TP -+.IR env .Split( arg ) -+Returns a list of file names or other objects. -+If arg is a string, -+it will be split on strings of white-space characters -+within the string, -+making it easier to write long lists of file names. -+If arg is already a list, -+the list will be returned untouched. -+If arg is any other type of object, -+it will be returned as a list -+containing just the object. -+ -+Example: -+ -+.ES -+files = Split("f1.c f2.c f3.c") -+files = env.Split("f4.c f5.c f6.c") -+files = Split(""" -+ f7.c -+ f8.c -+ f9.c -+""") -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.IR env .subst( input ", [" raw ", " target ", " source ", " conv ]) -+Performs construction variable interpolation -+on the specified string or sequence argument -+.IR input . -+ -+By default, -+leading or trailing white space will -+be removed from the result. -+and all sequences of white space -+will be compressed to a single space character. -+Additionally, any -+.B $( -+and -+.B $) -+character sequences will be stripped from the returned string, -+The optional -+.I raw -+argument may be set to -+.B 1 -+if you want to preserve white space and -+.BR $( - $) -+sequences. -+The -+.I raw -+argument may be set to -+.B 2 -+if you want to strip -+all characters between -+any -+.B $( -+and -+.B $) -+pairs -+(as is done for signature calculation). -+ -+If the input is a sequence -+(list or tuple), -+the individual elements of -+the sequence will be expanded, -+and the results will be returned as a list. -+ -+The optional -+.I target -+and -+.I source -+keyword arguments -+must be set to lists of -+target and source nodes, respectively, -+if you want the -+.BR $TARGET , -+.BR $TARGETS , -+.B $SOURCE -+and -+.B $SOURCES -+to be available for expansion. -+This is usually necessary if you are -+calling -+.BR env.subst () -+from within a Python function used -+as an SCons action. -+ -+Returned string values or sequence elements -+are converted to their string representation by default. -+The optional -+.I conv -+argument -+may specify a conversion function -+that will be used in place of -+the default. -+For example, if you want Python objects -+(including SCons Nodes) -+to be returned as Python objects, -+you can use the Python -+.B lambda -+idiom to pass in an unnamed function -+that simply returns its unconverted argument. -+ -+Example: -+ -+.ES -+print env.subst("The C compiler is: $CC") -+ -+def compile(target, source, env): -+ sourceDir = env.subst("${SOURCE.srcdir}", -+ target=target, -+ source=source) -+ -+source_nodes = env.subst('$EXPAND_TO_NODELIST', -+ conv=lambda x: x) -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI Tag( node ", " tags ) -+Annotates file or directory Nodes with -+information about how the -+.BR Package () -+Builder should package those files or directories. -+All tags are optional. -+ -+Examples: -+ -+.ES -+# makes sure the built library will be installed with 0644 file -+# access mode -+Tag( Library( 'lib.c' ), UNIX_ATTR="0644" ) -+ -+# marks file2.txt to be a documentation file -+Tag( 'file2.txt', DOC ) -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI TargetSignatures( type ) -+.TP -+.IR env .TargetSignatures( type ) -+Note: Although it is not yet officially deprecated, -+use of this function is discouraged. -+See the -+.BR Decider () -+function for a more flexible and straightforward way -+to configure SCons' decision-making. -+ -+The -+.BR TargetSignatures () -+function tells -+.B scons -+how to decide if a target file -+(a file that -+.I is -+built from any other files) -+has changed since the last time it -+was used to build some other target file. -+Legal values are -+.BR "build" ; -+.B "content" -+(or its synonym -+.BR "MD5" ); -+.BR "timestamp" ; -+or -+.BR "source" . -+ -+If the environment method is used, -+the specified type of target signature is only used -+for targets built with that environment. -+If the global function is used, -+the specified type of signature becomes the default -+used for all target files that -+don't have an explicit target signature type -+specified for their environments. -+ -+.B "content" -+(or its synonym -+.BR "MD5" ) -+means -+.B scons -+decides that a target file has changed -+if the MD5 checksum of its contents has changed since -+the last time it was used to rebuild some other target file. -+This means -+.B scons -+will open up -+MD5 sum the contents -+of target files after they're built, -+and may decide that it does not need to rebuild -+"downstream" target files if a file was -+rebuilt with exactly the same contents as the last time. -+ -+.B "timestamp" -+means -+.B scons -+decides that a target file has changed -+if its timestamp (modification time) has changed since -+the last time it was used to rebuild some other target file. -+(Note that although this is similar to the behavior of Make, -+by default it will also rebuild if the dependency is -+.I older -+than the last time it was used to rebuild the target file.) -+ -+.B "source" -+means -+.B scons -+decides that a target file has changed -+as specified by the corresponding -+.BR SourceSignatures () -+setting -+.RB ( "MD5" -+or -+.BR "timestamp" ). -+This means that -+.B scons -+will treat all input files to a target the same way, -+regardless of whether they are source files -+or have been built from other files. -+ -+.B "build" -+means -+.B scons -+decides that a target file has changed -+if it has been rebuilt in this invocation -+or if its content or timestamp have changed -+as specified by the corresponding -+.BR SourceSignatures () -+setting. -+This "propagates" the status of a rebuilt file -+so that other "downstream" target files -+will always be rebuilt, -+even if the contents or the timestamp -+have not changed. -+ -+.B "build" -+signatures are fastest because -+.B "content" -+(or -+.BR "MD5" ) -+signatures take longer to compute, -+but are more accurate than -+.B "timestamp" -+signatures, -+and can prevent unnecessary "downstream" rebuilds -+when a target file is rebuilt to the exact same contents -+as the previous build. -+The -+.B "source" -+setting provides the most consistent behavior -+when other target files may be rebuilt from -+both source and target input files. -+The default value is -+.BR "source" . -+ -+Because the default setting is -+.BR "source" , -+using -+.BR SourceSignatures () -+is generally preferable to -+.BR TargetSignatures (), -+so that the up-to-date decision -+will be consistent for all files -+(or all files built with a specific construction environment). -+Use of -+.BR TargetSignatures () -+provides specific control for how built target files -+affect their "downstream" dependencies. -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI Tool( string ", [" toolpath ", **" kw ]) -+.TP -+.IR env .Tool( string ", [" toolpath ", **" kw ]) -+The -+.BR Tool () -+form of the function -+returns a callable object -+that can be used to initialize -+a construction environment using the -+tools keyword of the Environment() method. -+The object may be called with a construction -+environment as an argument, -+in which case the object will -+add the necessary variables -+to the construction environment -+and the name of the tool will be added to the -+.B $TOOLS -+construction variable. -+ -+Additional keyword arguments are passed to the tool's -+.BR generate () -+method. -+ -+Examples: -+ -+.ES -+env = Environment(tools = [ Tool('msvc') ]) -+ -+env = Environment() -+t = Tool('msvc') -+t(env) # adds 'msvc' to the TOOLS variable -+u = Tool('opengl', toolpath = ['tools']) -+u(env) # adds 'opengl' to the TOOLS variable -+.EE -+.IP -+The -+.BR env.Tool () -+form of the function -+applies the callable object for the specified tool -+.I string -+to the environment through which the method was called. -+ -+Additional keyword arguments are passed to the tool's -+.BR generate () -+method. -+ -+.ES -+env.Tool('gcc') -+env.Tool('opengl', toolpath = ['build/tools']) -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI Value( value ", [" built_value ]) -+.TP -+.IR env .Value( value ", [" built_value ]) -+Returns a Node object representing the specified Python value. Value -+Nodes can be used as dependencies of targets. If the result of -+calling -+.BI str( value ) -+changes between SCons runs, any targets depending on -+.BI Value( value ) -+will be rebuilt. -+(This is true even when using timestamps to decide if -+files are up-to-date.) -+When using timestamp source signatures, Value Nodes' -+timestamps are equal to the system time when the Node is created. -+ -+The returned Value Node object has a -+.BR write () -+method that can be used to "build" a Value Node -+by setting a new value. -+The optional -+.I built_value -+argument can be specified -+when the Value Node is created -+to indicate the Node should already be considered -+"built." -+There is a corresponding -+.BR read () -+method that will return the built value of the Node. -+ -+Examples: -+ -+.ES -+env = Environment() -+ -+def create(target, source, env): -+ # A function that will write a 'prefix=$SOURCE' -+ # string into the file name specified as the -+ # $TARGET. -+ f = open(str(target[0]), 'wb') -+ f.write('prefix=' + source[0].get_contents()) -+ -+# Fetch the prefix= argument, if any, from the command -+# line, and use /usr/local as the default. -+prefix = ARGUMENTS.get('prefix', '/usr/local') -+ -+# Attach a .Config() builder for the above function action -+# to the construction environment. -+env['BUILDERS']['Config'] = Builder(action = create) -+env.Config(target = 'package-config', source = Value(prefix)) -+ -+def build_value(target, source, env): -+ # A function that "builds" a Python Value by updating -+ # the the Python value with the contents of the file -+ # specified as the source of the Builder call ($SOURCE). -+ target[0].write(source[0].get_contents()) -+ -+output = env.Value('before') -+input = env.Value('after') -+ -+# Attach a .UpdateValue() builder for the above function -+# action to the construction environment. -+env['BUILDERS']['UpdateValue'] = Builder(action = build_value) -+env.UpdateValue(target = Value(output), source = Value(input)) -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI VariantDir( variant_dir ", " src_dir ", [" duplicate ]) -+.TP -+.IR env .VariantDir( variant_dir ", " src_dir ", [" duplicate ]) -+Use the -+.BR VariantDir () -+function to create a copy of your sources in another location: -+if a name under -+.I variant_dir -+is not found but exists under -+.IR src_dir , -+the file or directory is copied to -+.IR variant_dir . -+Target files can be built in a different directory -+than the original sources by simply refering to the sources (and targets) -+within the variant tree. -+ -+.BR VariantDir () -+can be called multiple times with the same -+.I src_dir -+to set up multiple builds with different options -+.RI ( variants ). -+The -+.I src_dir -+location must be in or underneath the SConstruct file's directory, and -+.I variant_dir -+may not be underneath -+.IR src_dir . -+ -+The default behavior is for -+.B scons -+to physically duplicate the source files in the variant tree. -+Thus, a build performed in the variant tree is guaranteed to be identical -+to a build performed in the source tree even if -+intermediate source files are generated during the build, -+or preprocessors or other scanners search for included files -+relative to the source file, -+or individual compilers or other invoked tools are hard-coded -+to put derived files in the same directory as source files. -+ -+If possible on the platform, -+the duplication is performed by linking rather than copying; -+see also the -+.B \-\-duplicate -+command-line option. -+Moreover, only the files needed for the build are duplicated; -+files and directories that are not used are not present in -+.IR variant_dir . -+ -+Duplicating the source tree may be disabled by setting the -+.B duplicate -+argument to -+.B 0 -+(zero). -+This will cause -+.B scons -+to invoke Builders using the path names of source files in -+.I src_dir -+and the path names of derived files within -+.IR variant_dir . -+This is always more efficient than -+.BR duplicate=1 , -+and is usually safe for most builds -+(but see above for cases that may cause problems). -+ -+Note that -+.BR VariantDir () -+works most naturally with a subsidiary SConscript file. -+However, you would then call the subsidiary SConscript file -+not in the source directory, but in the -+.IR variant_dir , -+regardless of the value of -+.BR duplicate . -+This is how you tell -+.B scons -+which variant of a source tree to build: -+ -+.ES -+# run src/SConscript in two variant directories -+VariantDir('build/variant1', 'src') -+SConscript('build/variant1/SConscript') -+VariantDir('build/variant2', 'src') -+SConscript('build/variant2/SConscript') -+.EE -+.IP -+See also the -+.BR SConscript () -+function, described above, -+for another way to specify a variant directory -+in conjunction with calling a subsidiary SConscript file. -+ -+Examples: -+ -+.ES -+# use names in the build directory, not the source directory -+VariantDir('build', 'src', duplicate=0) -+Program('build/prog', 'build/source.c') -+.EE -+ -+.ES -+# this builds both the source and docs in a separate subtree -+VariantDir('build', '.', duplicate=0) -+SConscript(dirs=['build/src','build/doc']) -+.EE -+ -+.ES -+# same as previous example, but only uses SConscript -+SConscript(dirs='src', variant_dir='build/src', duplicate=0) -+SConscript(dirs='doc', variant_dir='build/doc', duplicate=0) -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+.RI WhereIs( program ", [" path ", " pathext ", " reject ]) -+.TP -+.IR env .WhereIs( program ", [" path ", " pathext ", " reject ]) -+Searches for the specified executable -+.IR program , -+returning the full path name to the program -+if it is found, -+and returning None if not. -+Searches the specified -+.IR path , -+the value of the calling environment's PATH -+.RB ( env['ENV']['PATH'] ), -+or the user's current external PATH -+.RB ( os.environ['PATH'] ) -+by default. -+On Windows systems, searches for executable -+programs with any of the file extensions -+listed in the specified -+.IR pathext , -+the calling environment's PATHEXT -+.RB ( env['ENV']['PATHEXT'] ) -+or the user's current PATHEXT -+.RB ( os.environ['PATHEXT'] ) -+by default. -+Will not select any -+path name or names -+in the specified -+.I reject -+list, if any. -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+'\" END GENERATED FUNCTION DESCRIPTIONS -+'\" -+'\" The descriptions above of the various SCons functions are generated -+'\" from the .xml files that live next to the various Python modules in -+'\" the build enginer library. If you're reading this [gnt]roff file -+'\" with an eye towards patching this man page, you can still submit -+'\" a diff against this text, but it will have to be translated to a -+'\" diff against the underlying .xml file before the patch is actually -+'\" accepted. If you do that yourself, it will make it easier to -+'\" integrate the patch. -+'\" -+'\" END GENERATED FUNCTION DESCRIPTIONS -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+ -+.SS SConscript Variables -+In addition to the global functions and methods, -+.B scons -+supports a number of Python variables -+that can be used in SConscript files -+to affect how you want the build to be performed. -+These variables may be accessed from custom Python modules that you -+import into an SConscript file by adding the following -+to the Python module: -+ -+.ES -+from SCons.Script import * -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+ARGLIST -+A list -+.IR keyword = value -+arguments specified on the command line. -+Each element in the list is a tuple -+containing the -+.RI ( keyword , value ) -+of the argument. -+The separate -+.I keyword -+and -+.I value -+elements of the tuple -+can be accessed by -+subscripting for element -+.B [0] -+and -+.B [1] -+of the tuple, respectively. -+ -+Example: -+ -+.ES -+print "first keyword, value =", ARGLIST[0][0], ARGLIST[0][1] -+print "second keyword, value =", ARGLIST[1][0], ARGLIST[1][1] -+third_tuple = ARGLIST[2] -+print "third keyword, value =", third_tuple[0], third_tuple[1] -+for key, value in ARGLIST: -+ # process key and value -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+ARGUMENTS -+A dictionary of all the -+.IR keyword = value -+arguments specified on the command line. -+The dictionary is not in order, -+and if a given keyword has -+more than one value assigned to it -+on the command line, -+the last (right-most) value is -+the one in the -+.B ARGUMENTS -+dictionary. -+ -+Example: -+ -+.ES -+if ARGUMENTS.get('debug', 0): -+ env = Environment(CCFLAGS = '-g') -+else: -+ env = Environment() -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+BUILD_TARGETS -+A list of the targets which -+.B scons -+will actually try to build, -+regardless of whether they were specified on -+the command line or via the -+.BR Default () -+function or method. -+The elements of this list may be strings -+.I or -+nodes, so you should run the list through the Python -+.B str -+function to make sure any Node path names -+are converted to strings. -+ -+Because this list may be taken from the -+list of targets specified using the -+.BR Default () -+function or method, -+the contents of the list may change -+on each successive call to -+.BR Default (). -+See the -+.B DEFAULT_TARGETS -+list, below, -+for additional information. -+ -+Example: -+ -+.ES -+if 'foo' in BUILD_TARGETS: -+ print "Don't forget to test the `foo' program!" -+if 'special/program' in BUILD_TARGETS: -+ SConscript('special') -+.EE -+.IP -+Note that the -+.B BUILD_TARGETS -+list only contains targets expected listed -+on the command line or via calls to the -+.BR Default () -+function or method. -+It does -+.I not -+contain all dependent targets that will be built as -+a result of making the sure the explicitly-specified -+targets are up to date. -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+COMMAND_LINE_TARGETS -+A list of the targets explicitly specified on -+the command line. -+If there are no targets specified on the command line, -+the list is empty. -+This can be used, for example, -+to take specific actions only -+when a certain target or targets -+is explicitly being built. -+ -+Example: -+ -+.ES -+if 'foo' in COMMAND_LINE_TARGETS: -+ print "Don't forget to test the `foo' program!" -+if 'special/program' in COMMAND_LINE_TARGETS: -+ SConscript('special') -+.EE -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+.TP -+DEFAULT_TARGETS -+A list of the target -+.I nodes -+that have been specified using the -+.BR Default () -+function or method. -+The elements of the list are nodes, -+so you need to run them through the Python -+.B str -+function to get at the path name for each Node. -+ -+Example: -+ -+.ES -+print str(DEFAULT_TARGETS[0]) -+if 'foo' in map(str, DEFAULT_TARGETS): -+ print "Don't forget to test the `foo' program!" -+.EE -+.IP -+The contents of the -+.B DEFAULT_TARGETS -+list change on on each successive call to the -+.BR Default () -+function: -+ -+.ES -+print map(str, DEFAULT_TARGETS) # originally [] -+Default('foo') -+print map(str, DEFAULT_TARGETS) # now a node ['foo'] -+Default('bar') -+print map(str, DEFAULT_TARGETS) # now a node ['foo', 'bar'] -+Default(None) -+print map(str, DEFAULT_TARGETS) # back to [] -+.EE -+.IP -+Consequently, be sure to use -+.B DEFAULT_TARGETS -+only after you've made all of your -+.BR Default () -+calls, -+or else simply be careful of the order -+of these statements in your SConscript files -+so that you don't look for a specific -+default target before it's actually been added to the list. -+ -+.SS Construction Variables -+.\" XXX From Gary Ruben, 23 April 2002: -+.\" I think it would be good to have an example with each construction -+.\" variable description in the documentation. -+.\" eg. -+.\" CC The C compiler -+.\" Example: env["CC"] = "c68x" -+.\" Default: env["CC"] = "cc" -+.\" -+.\" CCCOM The command line ... -+.\" Example: -+.\" To generate the compiler line c68x -ps -qq -mr -o $TARGET $SOURCES -+.\" env["CC"] = "c68x" -+.\" env["CFLAGS"] = "-ps -qq -mr" -+.\" env["CCCOM"] = "$CC $CFLAGS -o $TARGET $SOURCES -+.\" Default: -+.\" (I dunno what this is ;-) -+A construction environment has an associated dictionary of -+.I construction variables -+that are used by built-in or user-supplied build rules. -+Construction variables must follow the same rules for -+Python identifiers: -+the initial character must be an underscore or letter, -+followed by any number of underscores, letters, or digits. -+ -+A number of useful construction variables are automatically defined by -+scons for each supported platform, and additional construction variables -+can be defined by the user. The following is a list of the automatically -+defined construction variables: -+ -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+'\" BEGIN GENERATED CONSTRUCTION VARIABLE DESCRIPTIONS -+'\" -+'\" The descriptions below of the various SCons construction variables -+'\" are generated from the .xml files that live next to the various -+'\" Python modules in the build enginer library. If you're reading -+'\" this [gnt]roff file with an eye towards patching this man page, -+'\" you can still submit a diff against this text, but it will have to -+'\" be translated to a diff against the underlying .xml file before the -+'\" patch is actually accepted. If you do that yourself, it will make -+'\" it easier to integrate the patch. -+'\" -+'\" BEGIN GENERATED CONSTRUCTION VARIABLE DESCRIPTIONS -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+ -+.IP AR -+The static library archiver. -+ -+.IP ARCHITECTURE -+Specifies the system architecture for which -+the package is being built. -+The default is the system architecture -+of the machine on which SCons is running. -+This is used to fill in the -+.B Architecture: -+field in an Ipkg -+\fBcontrol\fP file, -+and as part of the name of a generated RPM file. -+ -+.IP ARCOM -+The command line used to generate a static library from object files. -+ -+.IP ARCOMSTR -+The string displayed when an object file -+is generated from an assembly-language source file. -+If this is not set, then \fB$ARCOM\fP (the command line) is displayed. -+ -+.ES -+env = Environment(ARCOMSTR = "Archiving $TARGET") -+.EE -+ -+.IP ARFLAGS -+General options passed to the static library archiver. -+ -+.IP AS -+The assembler. -+ -+.IP ASCOM -+The command line used to generate an object file -+from an assembly-language source file. -+ -+.IP ASCOMSTR -+The string displayed when an object file -+is generated from an assembly-language source file. -+If this is not set, then \fB$ASCOM\fP (the command line) is displayed. -+ -+.ES -+env = Environment(ASCOMSTR = "Assembling $TARGET") -+.EE -+ -+.IP ASFLAGS -+General options passed to the assembler. -+ -+.IP ASPPCOM -+The command line used to assemble an assembly-language -+source file into an object file -+after first running the file through the C preprocessor. -+Any options specified -+in the \fB$ASFLAGS\fP and \fB$CPPFLAGS\fP construction variables -+are included on this command line. -+ -+.IP ASPPCOMSTR -+The string displayed when an object file -+is generated from an assembly-language source file -+after first running the file through the C preprocessor. -+If this is not set, then \fB$ASPPCOM\fP (the command line) is displayed. -+ -+.ES -+env = Environment(ASPPCOMSTR = "Assembling $TARGET") -+.EE -+ -+.IP ASPPFLAGS -+General options when an assembling an assembly-language -+source file into an object file -+after first running the file through the C preprocessor. -+The default is to use the value of \fB$ASFLAGS\fP. -+ -+.IP BIBTEX -+The bibliography generator for the TeX formatter and typesetter and the -+LaTeX structured formatter and typesetter. -+ -+.IP BIBTEXCOM -+The command line used to call the bibliography generator for the -+TeX formatter and typesetter and the LaTeX structured formatter and -+typesetter. -+ -+.IP BIBTEXCOMSTR -+The string displayed when generating a bibliography -+for TeX or LaTeX. -+If this is not set, then \fB$BIBTEXCOM\fP (the command line) is displayed. -+ -+.ES -+env = Environment(BIBTEXCOMSTR = "Generating bibliography $TARGET") -+.EE -+ -+.IP BIBTEXFLAGS -+General options passed to the bibliography generator for the TeX formatter -+and typesetter and the LaTeX structured formatter and typesetter. -+ -+.IP BITKEEPER -+The BitKeeper executable. -+ -+.IP BITKEEPERCOM -+The command line for -+fetching source files using BitKeeper. -+ -+.IP BITKEEPERCOMSTR -+The string displayed when fetching -+a source file using BitKeeper. -+If this is not set, then \fB$BITKEEPERCOM\fP -+(the command line) is displayed. -+ -+.IP BITKEEPERGET -+The command (\fB$BITKEEPER\fP) and subcommand -+for fetching source files using BitKeeper. -+ -+.IP BITKEEPERGETFLAGS -+Options that are passed to the BitKeeper -+.B get -+subcommand. -+ -+.IP BUILDERS -+A dictionary mapping the names of the builders -+available through this environment -+to underlying Builder objects. -+Builders named -+Alias, CFile, CXXFile, DVI, Library, Object, PDF, PostScript, and Program -+are available by default. -+If you initialize this variable when an -+Environment is created: -+ -+.ES -+env = Environment(BUILDERS = {'NewBuilder' : foo}) -+.EE -+.IP -+the default Builders will no longer be available. -+To use a new Builder object in addition to the default Builders, -+add your new Builder object like this: -+ -+.ES -+env = Environment() -+env.Append(BUILDERS = {'NewBuilder' : foo}) -+.EE -+.IP -+or this: -+ -+.ES -+env = Environment() -+env['BUILDERS]['NewBuilder'] = foo -+.EE -+ -+.IP CC -+The C compiler. -+ -+.IP CCCOM -+The command line used to compile a C source file to a (static) object -+file. Any options specified in the \fB$CFLAGS\fP, \fB$CCFLAGS\fP and -+\fB$CPPFLAGS\fP construction variables are included on this command -+line. -+ -+.IP CCCOMSTR -+The string displayed when a C source file -+is compiled to a (static) object file. -+If this is not set, then \fB$CCCOM\fP (the command line) is displayed. -+ -+.ES -+env = Environment(CCCOMSTR = "Compiling static object $TARGET") -+.EE -+ -+.IP CCFLAGS -+General options that are passed to the C and C++ compilers. -+ -+.IP CCPCHFLAGS -+Options added to the compiler command line -+to support building with precompiled headers. -+The default value expands expands to the appropriate -+Microsoft Visual C++ command-line options -+when the \fB$PCH\fP construction variable is set. -+ -+.IP CCPDBFLAGS -+Options added to the compiler command line -+to support storing debugging information in a -+Microsoft Visual C++ PDB file. -+The default value expands expands to appropriate -+Microsoft Visual C++ command-line options -+when the \fB$PDB\fP construction variable is set. -+ -+The Visual C++ compiler option that SCons uses by default -+to generate PDB information is \fB/Z7\fP. -+This works correctly with parallel (\fB\-j\fP) builds -+because it embeds the debug information in the intermediate object files, -+as opposed to sharing a single PDB file between multiple object files. -+This is also the only way to get debug information -+embedded into a static library. -+Using the \fB/Zi\fP instead may yield improved -+link-time performance, -+although parallel builds will no longer work. -+ -+You can generate PDB files with the \fB/Zi\fP -+switch by overriding the default \fB$CCPDBFLAGS\fP variable as follows: -+ -+.ES -+env['CCPDBFLAGS'] = ['${(PDB and "/Zi /Fd%s" % File(PDB)) or ""}'] -+.EE -+.IP -+An alternative would be to use the \fB/Zi\fP -+to put the debugging information in a separate \fB.pdb\fP -+file for each object file by overriding -+the \fB$CCPDBFLAGS\fP variable as follows: -+ -+.ES -+env['CCPDBFLAGS'] = '/Zi /Fd${TARGET}.pdb' -+.EE -+ -+.IP CCVERSION -+The version number of the C compiler. -+This may or may not be set, -+depending on the specific C compiler being used. -+ -+.IP CFILESUFFIX -+The suffix for C source files. -+This is used by the internal CFile builder -+when generating C files from Lex (.l) or YACC (.y) input files. -+The default suffix, of course, is -+.B .c -+(lower case). -+On case-insensitive systems (like Windows), -+SCons also treats -+.B .C -+(upper case) files -+as C files. -+ -+.IP CFLAGS -+General options that are passed to the C compiler (C only; not C++). -+ -+.IP CHANGE_SPECFILE -+A hook for modifying the file that controls the packaging build -+(the \fB.spec\fP for RPM, -+the \fBcontrol\fP for Ipkg, -+the \fB.wxs\fP for MSI). -+If set, the function will be called -+after the SCons template for the file has been written. -+XXX -+ -+.IP CHANGED_SOURCES -+A reserved variable name -+that may not be set or used in a construction environment. -+(See "Variable Substitution," below.) -+ -+.IP CHANGED_TARGETS -+A reserved variable name -+that may not be set or used in a construction environment. -+(See "Variable Substitution," below.) -+ -+.IP CHANGELOG -+The name of a file containing the change log text -+to be included in the package. -+This is included as the -+.B %changelog -+section of the RPM -+\fB.spec\fP file. -+ -+.IP _concat -+A function used to produce variables like \fB$_CPPINCFLAGS\fP. It takes -+four or five -+arguments: a prefix to concatenate onto each element, a list of -+elements, a suffix to concatenate onto each element, an environment -+for variable interpolation, and an optional function that will be -+called to transform the list before concatenation. -+ -+.ES -+env['_CPPINCFLAGS'] = '$( ${_concat(INCPREFIX, CPPPATH, INCSUFFIX, __env__, RDirs)} $)', -+.EE -+ -+.IP CONFIGUREDIR -+The name of the directory in which -+Configure context test files are written. -+The default is -+.B .sconf_temp -+in the top-level directory -+containing the -+.B SConstruct -+file. -+ -+.IP CONFIGURELOG -+The name of the Configure context log file. -+The default is -+.B config.log -+in the top-level directory -+containing the -+.B SConstruct -+file. -+ -+.IP _CPPDEFFLAGS -+An automatically-generated construction variable -+containing the C preprocessor command-line options -+to define values. -+The value of \fB$_CPPDEFFLAGS\fP is created -+by appending \fB$CPPDEFPREFIX\fP and \fB$CPPDEFSUFFIX\fP -+to the beginning and end -+of each definition in \fB$CPPDEFINES\fP. -+ -+.IP CPPDEFINES -+A platform independent specification of C preprocessor definitions. -+The definitions will be added to command lines -+through the automatically-generated -+\fB$_CPPDEFFLAGS\fP construction variable (see above), -+which is constructed according to -+the type of value of \fB$CPPDEFINES\fP: -+ -+If \fB$CPPDEFINES\fP is a string, -+the values of the -+.BR $CPPDEFPREFIX and $CPPDEFSUFFIX -+construction variables -+will be added to the beginning and end. -+ -+.ES -+# Will add -Dxyz to POSIX compiler command lines, -+# and /Dxyz to Microsoft Visual C++ command lines. -+env = Environment(CPPDEFINES='xyz') -+.EE -+.IP -+If \fB$CPPDEFINES\fP is a list, -+the values of the -+.BR $CPPDEFPREFIX and $CPPDEFSUFFIX -+construction variables -+will be appended to the beginning and end -+of each element in the list. -+If any element is a list or tuple, -+then the first item is the name being -+defined and the second item is its value: -+ -+.ES -+# Will add -DB=2 -DA to POSIX compiler command lines, -+# and /DB=2 /DA to Microsoft Visual C++ command lines. -+env = Environment(CPPDEFINES=[('B', 2), 'A']) -+.EE -+.IP -+If \fB$CPPDEFINES\fP is a dictionary, -+the values of the -+.BR $CPPDEFPREFIX and $CPPDEFSUFFIX -+construction variables -+will be appended to the beginning and end -+of each item from the dictionary. -+The key of each dictionary item -+is a name being defined -+to the dictionary item's corresponding value; -+if the value is -+.BR None , -+then the name is defined without an explicit value. -+Note that the resulting flags are sorted by keyword -+to ensure that the order of the options on the -+command line is consistent each time -+.B scons -+is run. -+ -+.ES -+# Will add -DA -DB=2 to POSIX compiler command lines, -+# and /DA /DB=2 to Microsoft Visual C++ command lines. -+env = Environment(CPPDEFINES={'B':2, 'A':None}) -+.EE -+ -+.IP CPPDEFPREFIX -+The prefix used to specify preprocessor definitions -+on the C compiler command line. -+This will be appended to the beginning of each definition -+in the \fB$CPPDEFINES\fP construction variable -+when the \fB$_CPPDEFFLAGS\fP variable is automatically generated. -+ -+.IP CPPDEFSUFFIX -+The suffix used to specify preprocessor definitions -+on the C compiler command line. -+This will be appended to the end of each definition -+in the \fB$CPPDEFINES\fP construction variable -+when the \fB$_CPPDEFFLAGS\fP variable is automatically generated. -+ -+.IP CPPFLAGS -+User-specified C preprocessor options. -+These will be included in any command that uses the C preprocessor, -+including not just compilation of C and C++ source files -+via the \fB$CCCOM\fP, -+.BR $SHCCCOM , -+\fB$CXXCOM\fP and -+\fB$SHCXXCOM\fP command lines, -+but also the \fB$FORTRANPPCOM\fP, -+.BR $SHFORTRANPPCOM , -+\fB$F77PPCOM\fP and -+\fB$SHF77PPCOM\fP command lines -+used to compile a Fortran source file, -+and the \fB$ASPPCOM\fP command line -+used to assemble an assembly language source file, -+after first running each file through the C preprocessor. -+Note that this variable does -+.I not -+contain -+.B \-I -+(or similar) include search path options -+that scons generates automatically from \fB$CPPPATH\fP. -+See \fB$_CPPINCFLAGS\fP, below, -+for the variable that expands to those options. -+ -+.IP _CPPINCFLAGS -+An automatically-generated construction variable -+containing the C preprocessor command-line options -+for specifying directories to be searched for include files. -+The value of \fB$_CPPINCFLAGS\fP is created -+by appending \fB$INCPREFIX\fP and \fB$INCSUFFIX\fP -+to the beginning and end -+of each directory in \fB$CPPPATH\fP. -+ -+.IP CPPPATH -+The list of directories that the C preprocessor will search for include -+directories. The C/C++ implicit dependency scanner will search these -+directories for include files. Don't explicitly put include directory -+arguments in CCFLAGS or CXXFLAGS because the result will be non-portable -+and the directories will not be searched by the dependency scanner. Note: -+directory names in CPPPATH will be looked-up relative to the SConscript -+directory when they are used in a command. To force -+.B scons -+to look-up a directory relative to the root of the source tree use #: -+ -+.ES -+env = Environment(CPPPATH='#/include') -+.EE -+.IP -+The directory look-up can also be forced using the -+.BR Dir () -+function: -+ -+.ES -+include = Dir('include') -+env = Environment(CPPPATH=include) -+.EE -+.IP -+The directory list will be added to command lines -+through the automatically-generated -+.B $_CPPINCFLAGS -+construction variable, -+which is constructed by -+appending the values of the -+.BR $INCPREFIX and $INCSUFFIX -+construction variables -+to the beginning and end -+of each directory in \fB$CPPPATH\fP. -+Any command lines you define that need -+the CPPPATH directory list should -+include \fB$_CPPINCFLAGS\fP: -+ -+.ES -+env = Environment(CCCOM="my_compiler $_CPPINCFLAGS -c -o $TARGET $SOURCE") -+.EE -+ -+.IP CPPSUFFIXES -+The list of suffixes of files that will be scanned -+for C preprocessor implicit dependencies -+(#include lines). -+The default list is: -+ -+.ES -+[".c", ".C", ".cxx", ".cpp", ".c++", ".cc", -+ ".h", ".H", ".hxx", ".hpp", ".hh", -+ ".F", ".fpp", ".FPP", -+ ".m", ".mm", -+ ".S", ".spp", ".SPP"] -+.EE -+ -+.IP CVS -+The CVS executable. -+ -+.IP CVSCOFLAGS -+Options that are passed to the CVS checkout subcommand. -+ -+.IP CVSCOM -+The command line used to -+fetch source files from a CVS repository. -+ -+.IP CVSCOMSTR -+The string displayed when fetching -+a source file from a CVS repository. -+If this is not set, then \fB$CVSCOM\fP -+(the command line) is displayed. -+ -+.IP CVSFLAGS -+General options that are passed to CVS. -+By default, this is set to -+.B "-d $CVSREPOSITORY" -+to specify from where the files must be fetched. -+ -+.IP CVSREPOSITORY -+The path to the CVS repository. -+This is referenced in the default -+\fB$CVSFLAGS\fP value. -+ -+.IP CXX -+The C++ compiler. -+ -+.IP CXXCOM -+The command line used to compile a C++ source file to an object file. -+Any options specified in the \fB$CXXFLAGS\fP and -+\fB$CPPFLAGS\fP construction variables -+are included on this command line. -+ -+.IP CXXCOMSTR -+The string displayed when a C++ source file -+is compiled to a (static) object file. -+If this is not set, then \fB$CXXCOM\fP (the command line) is displayed. -+ -+.ES -+env = Environment(CXXCOMSTR = "Compiling static object $TARGET") -+.EE -+ -+.IP CXXFILESUFFIX -+The suffix for C++ source files. -+This is used by the internal CXXFile builder -+when generating C++ files from Lex (.ll) or YACC (.yy) input files. -+The default suffix is -+.BR .cc . -+SCons also treats files with the suffixes -+.BR .cpp , -+.BR .cxx , -+.BR .c++ , -+and -+.B .C++ -+as C++ files, -+and files with -+.B .mm -+suffixes as Objective C++ files. -+On case-sensitive systems (Linux, UNIX, and other POSIX-alikes), -+SCons also treats -+.B .C -+(upper case) files -+as C++ files. -+ -+.IP CXXFLAGS -+General options that are passed to the C++ compiler. -+By default, this includes the value of \fB$CCFLAGS\fP, -+so that setting \fB$CCFLAGS\fP affects both C and C++ compilation. -+If you want to add C++-specific flags, -+you must set or override the value of \fB$CXXFLAGS\fP. -+ -+.IP CXXVERSION -+The version number of the C++ compiler. -+This may or may not be set, -+depending on the specific C++ compiler being used. -+ -+.IP DESCRIPTION -+A long description of the project being packaged. -+This is included in the relevant section -+of the file that controls the packaging build. -+ -+.IP DESCRIPTION_lang -+A language-specific long description for -+the specified \fIlang\fP. -+This is used to populate a -+.B "%description -l" -+section of an RPM -+\fB.spec\fP file. -+ -+.IP Dir -+A function that converts a string -+into a Dir instance relative to the target being built. -+ -+.IP Dirs -+A function that converts a list of strings -+into a list of Dir instances relative to the target being built. -+ -+.IP DSUFFIXES -+The list of suffixes of files that will be scanned -+for imported D package files. -+The default list is: -+ -+.ES -+['.d'] -+.EE -+ -+.IP DVIPDF -+The TeX DVI file to PDF file converter. -+ -+.IP DVIPDFCOM -+The command line used to convert TeX DVI files into a PDF file. -+ -+.IP DVIPDFCOMSTR -+The string displayed when a TeX DVI file -+is converted into a PDF file. -+If this is not set, then \fB$DVIPDFCOM\fP (the command line) is displayed. -+ -+.IP DVIPDFFLAGS -+General options passed to the TeX DVI file to PDF file converter. -+ -+.IP DVIPS -+The TeX DVI file to PostScript converter. -+ -+.IP DVIPSFLAGS -+General options passed to the TeX DVI file to PostScript converter. -+ -+.IP ENV -+A dictionary of environment variables -+to use when invoking commands. When -+\fB$ENV\fP is used in a command all list -+values will be joined using the path separator and any other non-string -+values will simply be coerced to a string. -+Note that, by default, -+.B scons -+does -+.I not -+propagate the environment in force when you -+execute -+.B scons -+to the commands used to build target files. -+This is so that builds will be guaranteed -+repeatable regardless of the environment -+variables set at the time -+.B scons -+is invoked. -+ -+If you want to propagate your -+environment variables -+to the commands executed -+to build target files, -+you must do so explicitly: -+ -+.ES -+import os -+env = Environment(ENV = os.environ) -+.EE -+.IP -+Note that you can choose only to propagate -+certain environment variables. -+A common example is -+the system -+.B PATH -+environment variable, -+so that -+.B scons -+uses the same utilities -+as the invoking shell (or other process): -+ -+.ES -+import os -+env = Environment(ENV = {'PATH' : os.environ['PATH']}) -+.EE -+ -+.IP ESCAPE -+A function that will be called to escape shell special characters in -+command lines. The function should take one argument: the command line -+string to escape; and should return the escaped command line. -+ -+.IP F77 -+The Fortran 77 compiler. -+You should normally set the \fB$FORTRAN\fP variable, -+which specifies the default Fortran compiler -+for all Fortran versions. -+You only need to set \fB$F77\fP if you need to use a specific compiler -+or compiler version for Fortran 77 files. -+ -+.IP F77COM -+The command line used to compile a Fortran 77 source file to an object file. -+You only need to set \fB$F77COM\fP if you need to use a specific -+command line for Fortran 77 files. -+You should normally set the \fB$FORTRANCOM\fP variable, -+which specifies the default command line -+for all Fortran versions. -+ -+.IP F77COMSTR -+The string displayed when a Fortran 77 source file -+is compiled to an object file. -+If this is not set, then \fB$F77COM\fP or \fB$FORTRANCOM\fP -+(the command line) is displayed. -+ -+.IP F77FILESUFFIXES -+The list of file extensions for which the F77 dialect will be used. By -+default, this is ['.f77'] -+ -+.IP F77FLAGS -+General user-specified options that are passed to the Fortran 77 compiler. -+Note that this variable does -+.I not -+contain -+.B \-I -+(or similar) include search path options -+that scons generates automatically from \fB$F77PATH\fP. -+See -+.B $_F77INCFLAGS -+below, -+for the variable that expands to those options. -+You only need to set \fB$F77FLAGS\fP if you need to define specific -+user options for Fortran 77 files. -+You should normally set the \fB$FORTRANFLAGS\fP variable, -+which specifies the user-specified options -+passed to the default Fortran compiler -+for all Fortran versions. -+ -+.IP _F77INCFLAGS -+An automatically-generated construction variable -+containing the Fortran 77 compiler command-line options -+for specifying directories to be searched for include files. -+The value of \fB$_F77INCFLAGS\fP is created -+by appending \fB$INCPREFIX\fP and \fB$INCSUFFIX\fP -+to the beginning and end -+of each directory in \fB$F77PATH\fP. -+ -+.IP F77PATH -+The list of directories that the Fortran 77 compiler will search for include -+directories. The implicit dependency scanner will search these -+directories for include files. Don't explicitly put include directory -+arguments in \fB$F77FLAGS\fP because the result will be non-portable -+and the directories will not be searched by the dependency scanner. Note: -+directory names in \fB$F77PATH\fP will be looked-up relative to the SConscript -+directory when they are used in a command. To force -+.B scons -+to look-up a directory relative to the root of the source tree use #: -+You only need to set \fB$F77PATH\fP if you need to define a specific -+include path for Fortran 77 files. -+You should normally set the \fB$FORTRANPATH\fP variable, -+which specifies the include path -+for the default Fortran compiler -+for all Fortran versions. -+ -+.ES -+env = Environment(F77PATH='#/include') -+.EE -+.IP -+The directory look-up can also be forced using the -+.BR Dir () -+function: -+ -+.ES -+include = Dir('include') -+env = Environment(F77PATH=include) -+.EE -+.IP -+The directory list will be added to command lines -+through the automatically-generated -+.B $_F77INCFLAGS -+construction variable, -+which is constructed by -+appending the values of the -+.BR $INCPREFIX and $INCSUFFIX -+construction variables -+to the beginning and end -+of each directory in \fB$F77PATH\fP. -+Any command lines you define that need -+the F77PATH directory list should -+include \fB$_F77INCFLAGS\fP: -+ -+.ES -+env = Environment(F77COM="my_compiler $_F77INCFLAGS -c -o $TARGET $SOURCE") -+.EE -+ -+.IP F77PPCOM -+The command line used to compile a Fortran 77 source file to an object file -+after first running the file through the C preprocessor. -+Any options specified in the \fB$F77FLAGS\fP and \fB$CPPFLAGS\fP construction variables -+are included on this command line. -+You only need to set \fB$F77PPCOM\fP if you need to use a specific -+C-preprocessor command line for Fortran 77 files. -+You should normally set the \fB$FORTRANPPCOM\fP variable, -+which specifies the default C-preprocessor command line -+for all Fortran versions. -+ -+.IP F77PPCOMSTR -+The string displayed when a Fortran 77 source file -+is compiled to an object file -+after first running the file through the C preprocessor. -+If this is not set, then \fB$F77PPCOM\fP or \fB$FORTRANPPCOM\fP -+(the command line) is displayed. -+ -+.IP F77PPFILESUFFIXES -+The list of file extensions for which the compilation + preprocessor pass for -+F77 dialect will be used. By default, this is empty -+ -+.IP F90 -+The Fortran 90 compiler. -+You should normally set the \fB$FORTRAN\fP variable, -+which specifies the default Fortran compiler -+for all Fortran versions. -+You only need to set \fB$F90\fP if you need to use a specific compiler -+or compiler version for Fortran 90 files. -+ -+.IP F90COM -+The command line used to compile a Fortran 90 source file to an object file. -+You only need to set \fB$F90COM\fP if you need to use a specific -+command line for Fortran 90 files. -+You should normally set the \fB$FORTRANCOM\fP variable, -+which specifies the default command line -+for all Fortran versions. -+ -+.IP F90COMSTR -+The string displayed when a Fortran 90 source file -+is compiled to an object file. -+If this is not set, then \fB$F90COM\fP or \fB$FORTRANCOM\fP -+(the command line) is displayed. -+ -+.IP F90FILESUFFIXES -+The list of file extensions for which the F90 dialect will be used. By -+default, this is ['.f90'] -+ -+.IP F90FLAGS -+General user-specified options that are passed to the Fortran 90 compiler. -+Note that this variable does -+.I not -+contain -+.B \-I -+(or similar) include search path options -+that scons generates automatically from \fB$F90PATH\fP. -+See -+.B $_F90INCFLAGS -+below, -+for the variable that expands to those options. -+You only need to set \fB$F90FLAGS\fP if you need to define specific -+user options for Fortran 90 files. -+You should normally set the \fB$FORTRANFLAGS\fP variable, -+which specifies the user-specified options -+passed to the default Fortran compiler -+for all Fortran versions. -+ -+.IP _F90INCFLAGS -+An automatically-generated construction variable -+containing the Fortran 90 compiler command-line options -+for specifying directories to be searched for include files. -+The value of \fB$_F90INCFLAGS\fP is created -+by appending \fB$INCPREFIX\fP and \fB$INCSUFFIX\fP -+to the beginning and end -+of each directory in \fB$F90PATH\fP. -+ -+.IP F90PATH -+The list of directories that the Fortran 90 compiler will search for include -+directories. The implicit dependency scanner will search these -+directories for include files. Don't explicitly put include directory -+arguments in \fB$F90FLAGS\fP because the result will be non-portable -+and the directories will not be searched by the dependency scanner. Note: -+directory names in \fB$F90PATH\fP will be looked-up relative to the SConscript -+directory when they are used in a command. To force -+.B scons -+to look-up a directory relative to the root of the source tree use #: -+You only need to set \fB$F90PATH\fP if you need to define a specific -+include path for Fortran 90 files. -+You should normally set the \fB$FORTRANPATH\fP variable, -+which specifies the include path -+for the default Fortran compiler -+for all Fortran versions. -+ -+.ES -+env = Environment(F90PATH='#/include') -+.EE -+.IP -+The directory look-up can also be forced using the -+.BR Dir () -+function: -+ -+.ES -+include = Dir('include') -+env = Environment(F90PATH=include) -+.EE -+.IP -+The directory list will be added to command lines -+through the automatically-generated -+.B $_F90INCFLAGS -+construction variable, -+which is constructed by -+appending the values of the -+.BR $INCPREFIX and $INCSUFFIX -+construction variables -+to the beginning and end -+of each directory in \fB$F90PATH\fP. -+Any command lines you define that need -+the F90PATH directory list should -+include \fB$_F90INCFLAGS\fP: -+ -+.ES -+env = Environment(F90COM="my_compiler $_F90INCFLAGS -c -o $TARGET $SOURCE") -+.EE -+ -+.IP F90PPCOM -+The command line used to compile a Fortran 90 source file to an object file -+after first running the file through the C preprocessor. -+Any options specified in the \fB$F90FLAGS\fP and \fB$CPPFLAGS\fP construction variables -+are included on this command line. -+You only need to set \fB$F90PPCOM\fP if you need to use a specific -+C-preprocessor command line for Fortran 90 files. -+You should normally set the \fB$FORTRANPPCOM\fP variable, -+which specifies the default C-preprocessor command line -+for all Fortran versions. -+ -+.IP F90PPCOMSTR -+The string displayed when a Fortran 90 source file -+is compiled after first running the file through the C preprocessor. -+If this is not set, then \fB$F90PPCOM\fP or \fB$FORTRANPPCOM\fP -+(the command line) is displayed. -+ -+.IP F90PPFILESUFFIXES -+The list of file extensions for which the compilation + preprocessor pass for -+F90 dialect will be used. By default, this is empty -+ -+.IP F95 -+The Fortran 95 compiler. -+You should normally set the \fB$FORTRAN\fP variable, -+which specifies the default Fortran compiler -+for all Fortran versions. -+You only need to set \fB$F95\fP if you need to use a specific compiler -+or compiler version for Fortran 95 files. -+ -+.IP F95COM -+The command line used to compile a Fortran 95 source file to an object file. -+You only need to set \fB$F95COM\fP if you need to use a specific -+command line for Fortran 95 files. -+You should normally set the \fB$FORTRANCOM\fP variable, -+which specifies the default command line -+for all Fortran versions. -+ -+.IP F95COMSTR -+The string displayed when a Fortran 95 source file -+is compiled to an object file. -+If this is not set, then \fB$F95COM\fP or \fB$FORTRANCOM\fP -+(the command line) is displayed. -+ -+.IP F95FILESUFFIXES -+The list of file extensions for which the F95 dialect will be used. By -+default, this is ['.f95'] -+ -+.IP F95FLAGS -+General user-specified options that are passed to the Fortran 95 compiler. -+Note that this variable does -+.I not -+contain -+.B \-I -+(or similar) include search path options -+that scons generates automatically from \fB$F95PATH\fP. -+See -+.B $_F95INCFLAGS -+below, -+for the variable that expands to those options. -+You only need to set \fB$F95FLAGS\fP if you need to define specific -+user options for Fortran 95 files. -+You should normally set the \fB$FORTRANFLAGS\fP variable, -+which specifies the user-specified options -+passed to the default Fortran compiler -+for all Fortran versions. -+ -+.IP _F95INCFLAGS -+An automatically-generated construction variable -+containing the Fortran 95 compiler command-line options -+for specifying directories to be searched for include files. -+The value of \fB$_F95INCFLAGS\fP is created -+by appending \fB$INCPREFIX\fP and \fB$INCSUFFIX\fP -+to the beginning and end -+of each directory in \fB$F95PATH\fP. -+ -+.IP F95PATH -+The list of directories that the Fortran 95 compiler will search for include -+directories. The implicit dependency scanner will search these -+directories for include files. Don't explicitly put include directory -+arguments in \fB$F95FLAGS\fP because the result will be non-portable -+and the directories will not be searched by the dependency scanner. Note: -+directory names in \fB$F95PATH\fP will be looked-up relative to the SConscript -+directory when they are used in a command. To force -+.B scons -+to look-up a directory relative to the root of the source tree use #: -+You only need to set \fB$F95PATH\fP if you need to define a specific -+include path for Fortran 95 files. -+You should normally set the \fB$FORTRANPATH\fP variable, -+which specifies the include path -+for the default Fortran compiler -+for all Fortran versions. -+ -+.ES -+env = Environment(F95PATH='#/include') -+.EE -+.IP -+The directory look-up can also be forced using the -+.BR Dir () -+function: -+ -+.ES -+include = Dir('include') -+env = Environment(F95PATH=include) -+.EE -+.IP -+The directory list will be added to command lines -+through the automatically-generated -+.B $_F95INCFLAGS -+construction variable, -+which is constructed by -+appending the values of the -+.BR $INCPREFIX and $INCSUFFIX -+construction variables -+to the beginning and end -+of each directory in \fB$F95PATH\fP. -+Any command lines you define that need -+the F95PATH directory list should -+include \fB$_F95INCFLAGS\fP: -+ -+.ES -+env = Environment(F95COM="my_compiler $_F95INCFLAGS -c -o $TARGET $SOURCE") -+.EE -+ -+.IP F95PPCOM -+The command line used to compile a Fortran 95 source file to an object file -+after first running the file through the C preprocessor. -+Any options specified in the \fB$F95FLAGS\fP and \fB$CPPFLAGS\fP construction variables -+are included on this command line. -+You only need to set \fB$F95PPCOM\fP if you need to use a specific -+C-preprocessor command line for Fortran 95 files. -+You should normally set the \fB$FORTRANPPCOM\fP variable, -+which specifies the default C-preprocessor command line -+for all Fortran versions. -+ -+.IP F95PPCOMSTR -+The string displayed when a Fortran 95 source file -+is compiled to an object file -+after first running the file through the C preprocessor. -+If this is not set, then \fB$F95PPCOM\fP or \fB$FORTRANPPCOM\fP -+(the command line) is displayed. -+ -+.IP F95PPFILESUFFIXES -+The list of file extensions for which the compilation + preprocessor pass for -+F95 dialect will be used. By default, this is empty -+ -+.IP File -+A function that converts a string into a File instance relative to the -+target being built. -+ -+.IP FORTRAN -+The default Fortran compiler -+for all versions of Fortran. -+ -+.IP FORTRANCOM -+The command line used to compile a Fortran source file to an object file. -+By default, any options specified -+in the \fB$FORTRANFLAGS\fP, -+.BR $CPPFLAGS , -+.BR $_CPPDEFFLAGS , -+\fB$_FORTRANMODFLAG\fP, and -+\fB$_FORTRANINCFLAGS\fP construction variables -+are included on this command line. -+ -+.IP FORTRANCOMSTR -+The string displayed when a Fortran source file -+is compiled to an object file. -+If this is not set, then \fB$FORTRANCOM\fP -+(the command line) is displayed. -+ -+.IP FORTRANFILESUFFIXES -+The list of file extensions for which the FORTRAN dialect will be used. By -+default, this is ['.f', '.for', '.ftn'] -+ -+.IP FORTRANFLAGS -+General user-specified options that are passed to the Fortran compiler. -+Note that this variable does -+.I not -+contain -+.B \-I -+(or similar) include or module search path options -+that scons generates automatically from \fB$FORTRANPATH\fP. -+See -+.BR $_FORTRANINCFLAGS\fP and \fB$_FORTRANMODFLAG , -+below, -+for the variables that expand those options. -+ -+.IP _FORTRANINCFLAGS -+An automatically-generated construction variable -+containing the Fortran compiler command-line options -+for specifying directories to be searched for include -+files and module files. -+The value of \fB$_FORTRANINCFLAGS\fP is created -+by prepending/appending \fB$INCPREFIX\fP and \fB$INCSUFFIX\fP -+to the beginning and end -+of each directory in \fB$FORTRANPATH\fP. -+ -+.IP FORTRANMODDIR -+Directory location where the Fortran compiler should place -+any module files it generates. This variable is empty, by default. Some -+Fortran compilers will internally append this directory in the search path -+for module files, as well. -+ -+.IP FORTRANMODDIRPREFIX -+The prefix used to specify a module directory on the Fortran compiler command -+line. -+This will be appended to the beginning of the directory -+in the \fB$FORTRANMODDIR\fP construction variables -+when the \fB$_FORTRANMODFLAG\fP variables is automatically generated. -+ -+.IP FORTRANMODDIRSUFFIX -+The suffix used to specify a module directory on the Fortran compiler command -+line. -+This will be appended to the beginning of the directory -+in the \fB$FORTRANMODDIR\fP construction variables -+when the \fB$_FORTRANMODFLAG\fP variables is automatically generated. -+ -+.IP _FORTRANMODFLAG -+An automatically-generated construction variable -+containing the Fortran compiler command-line option -+for specifying the directory location where the Fortran -+compiler should place any module files that happen to get -+generated during compilation. -+The value of \fB$_FORTRANMODFLAG\fP is created -+by prepending/appending \fB$FORTRANMODDIRPREFIX\fP and -+.B $FORTRANMODDIRSUFFIX -+to the beginning and end of the directory in \fB$FORTRANMODDIR\fP. -+ -+.IP FORTRANMODPREFIX -+The module file prefix used by the Fortran compiler. SCons assumes that -+the Fortran compiler follows the quasi-standard naming convention for -+module files of -+.BR module_name.mod . -+As a result, this variable is left empty, by default. For situations in -+which the compiler does not necessarily follow the normal convention, -+the user may use this variable. Its value will be appended to every -+module file name as scons attempts to resolve dependencies. -+ -+.IP FORTRANMODSUFFIX -+The module file suffix used by the Fortran compiler. SCons assumes that -+the Fortran compiler follows the quasi-standard naming convention for -+module files of -+.BR module_name.mod . -+As a result, this variable is set to ".mod", by default. For situations -+in which the compiler does not necessarily follow the normal convention, -+the user may use this variable. Its value will be appended to every -+module file name as scons attempts to resolve dependencies. -+ -+.IP FORTRANPATH -+The list of directories that the Fortran compiler will search for -+include files and (for some compilers) module files. The Fortran implicit -+dependency scanner will search these directories for include files (but -+not module files since they are autogenerated and, as such, may not -+actually exist at the time the scan takes place). Don't explicitly put -+include directory arguments in FORTRANFLAGS because the result will be -+non-portable and the directories will not be searched by the dependency -+scanner. Note: directory names in FORTRANPATH will be looked-up relative -+to the SConscript directory when they are used in a command. To force -+.B scons -+to look-up a directory relative to the root of the source tree use #: -+ -+.ES -+env = Environment(FORTRANPATH='#/include') -+.EE -+.IP -+The directory look-up can also be forced using the -+.BR Dir () -+function: -+ -+.ES -+include = Dir('include') -+env = Environment(FORTRANPATH=include) -+.EE -+.IP -+The directory list will be added to command lines -+through the automatically-generated -+.B $_FORTRANINCFLAGS -+construction variable, -+which is constructed by -+appending the values of the -+.BR $INCPREFIX and $INCSUFFIX -+construction variables -+to the beginning and end -+of each directory in \fB$FORTRANPATH\fP. -+Any command lines you define that need -+the FORTRANPATH directory list should -+include \fB$_FORTRANINCFLAGS\fP: -+ -+.ES -+env = Environment(FORTRANCOM="my_compiler $_FORTRANINCFLAGS -c -o $TARGET $SOURCE") -+.EE -+ -+.IP FORTRANPPCOM -+The command line used to compile a Fortran source file to an object file -+after first running the file through the C preprocessor. -+By default, any options specified in the \fB$FORTRANFLAGS\fP, -+.BR $CPPFLAGS , -+.BR $_CPPDEFFLAGS , -+\fB$_FORTRANMODFLAG\fP, and -+.B $_FORTRANINCFLAGS -+construction variables are included on this command line. -+ -+.IP FORTRANPPCOMSTR -+The string displayed when a Fortran source file -+is compiled to an object file -+after first running the file through the C preprocessor. -+If this is not set, then \fB$FORTRANPPCOM\fP -+(the command line) is displayed. -+ -+.IP FORTRANPPFILESUFFIXES -+The list of file extensions for which the compilation + preprocessor pass for -+FORTRAN dialect will be used. By default, this is ['.fpp', '.FPP'] -+ -+.IP FORTRANSUFFIXES -+The list of suffixes of files that will be scanned -+for Fortran implicit dependencies -+(INCLUDE lines and USE statements). -+The default list is: -+ -+.ES -+[".f", ".F", ".for", ".FOR", ".ftn", ".FTN", ".fpp", ".FPP", -+".f77", ".F77", ".f90", ".F90", ".f95", ".F95"] -+.EE -+ -+.IP FRAMEWORKPATH -+On Mac OS X with gcc, -+a list containing the paths to search for frameworks. -+Used by the compiler to find framework-style includes like -+#include . -+Used by the linker to find user-specified frameworks when linking (see -+.BR $FRAMEWORKS ). -+For example: -+ -+.ES -+ env.AppendUnique(FRAMEWORKPATH='#myframeworkdir') -+.EE -+.IP -+will add -+ -+.ES -+ ... -Fmyframeworkdir -+.EE -+.IP -+to the compiler and linker command lines. -+ -+.IP _FRAMEWORKPATH -+On Mac OS X with gcc, an automatically-generated construction variable -+containing the linker command-line options corresponding to -+.BR $FRAMEWORKPATH . -+ -+.IP FRAMEWORKPATHPREFIX -+On Mac OS X with gcc, the prefix to be used for the FRAMEWORKPATH entries. -+(see \fB$FRAMEWORKPATH\fP). -+The default value is -+.BR \-F . -+ -+.IP FRAMEWORKPREFIX -+On Mac OS X with gcc, -+the prefix to be used for linking in frameworks -+(see \fB$FRAMEWORKS\fP). -+The default value is -+.BR \-framework . -+ -+.IP _FRAMEWORKS -+On Mac OS X with gcc, -+an automatically-generated construction variable -+containing the linker command-line options -+for linking with FRAMEWORKS. -+ -+.IP FRAMEWORKS -+On Mac OS X with gcc, a list of the framework names to be linked into a -+program or shared library or bundle. -+The default value is the empty list. -+For example: -+ -+.ES -+ env.AppendUnique(FRAMEWORKS=Split('System Cocoa SystemConfiguration')) -+.EE -+.IP -+ -+.IP FRAMEWORKSFLAGS -+On Mac OS X with gcc, -+general user-supplied frameworks options to be added at -+the end of a command -+line building a loadable module. -+(This has been largely superseded by -+the \fB$FRAMEWORKPATH\fP, \fB$FRAMEWORKPATHPREFIX\fP, -+\fB$FRAMEWORKPREFIX\fP and \fB$FRAMEWORKS\fP variables -+described above.) -+ -+.IP GS -+The Ghostscript program used to convert PostScript to PDF files. -+ -+.IP GSCOM -+The Ghostscript command line used to convert PostScript to PDF files. -+ -+.IP GSCOMSTR -+The string displayed when -+Ghostscript is used to convert -+a PostScript file to a PDF file. -+If this is not set, then \fB$GSCOM\fP (the command line) is displayed. -+ -+.IP GSFLAGS -+General options passed to the Ghostscript program -+when converting PostScript to PDF files. -+ -+.IP HOST_ARCH -+Sets the host architecture for Visual Studio compiler. If not set, -+default to the detected host architecture: note that this may depend -+on the python you are using. -+This variable must be passed as an argument to the Environment() -+constructor; setting it later has no effect. -+ -+Valid values are the same as for \fB$TARGET_ARCH\fP. -+ -+This is currently only used on Windows, but in the future it will be -+used on other OSes as well. -+ -+.IP HOST_OS -+ The name of the host operating system used to create the Environment. -+ If a platform is specified when creating the Environment, then -+ that Platform's logic will handle setting this value. -+ This value is immutable, and should not be changed by the user after -+ the Environment is initialized. -+ Currently only set for Win32. -+ -+.IP IDLSUFFIXES -+The list of suffixes of files that will be scanned -+for IDL implicit dependencies -+(#include or import lines). -+The default list is: -+ -+.ES -+[".idl", ".IDL"] -+.EE -+ -+.IP IMPLICIT_COMMAND_DEPENDENCIES -+Controls whether or not SCons will -+add implicit dependencies for the commands -+executed to build targets. -+ -+By default, SCons will add -+to each target -+an implicit dependency on the command -+represented by the first argument on any -+command line it executes. -+The specific file for the dependency is -+found by searching the -+.I PATH -+variable in the -+.I ENV -+environment used to execute the command. -+ -+If the construction variable -+.B $IMPLICIT_COMMAND_DEPENDENCIES -+is set to a false value -+.RB ( None , -+.BR False , -+.BR 0 , -+etc.), -+then the implicit dependency will -+not be added to the targets -+built with that construction environment. -+ -+.ES -+env = Environment(IMPLICIT_COMMAND_DEPENDENCIES = 0) -+.EE -+ -+.IP INCPREFIX -+The prefix used to specify an include directory on the C compiler command -+line. -+This will be appended to the beginning of each directory -+in the \fB$CPPPATH\fP and \fB$FORTRANPATH\fP construction variables -+when the \fB$_CPPINCFLAGS\fP and \fB$_FORTRANINCFLAGS\fP -+variables are automatically generated. -+ -+.IP INCSUFFIX -+The suffix used to specify an include directory on the C compiler command -+line. -+This will be appended to the end of each directory -+in the \fB$CPPPATH\fP and \fB$FORTRANPATH\fP construction variables -+when the \fB$_CPPINCFLAGS\fP and \fB$_FORTRANINCFLAGS\fP -+variables are automatically generated. -+ -+.IP INSTALL -+A function to be called to install a file into a -+destination file name. -+The default function copies the file into the destination -+(and sets the destination file's mode and permission bits -+to match the source file's). -+The function takes the following arguments: -+ -+.ES -+def install(dest, source, env): -+.EE -+.IP -+.I dest -+is the path name of the destination file. -+.I source -+is the path name of the source file. -+.I env -+is the construction environment -+(a dictionary of construction values) -+in force for this file installation. -+ -+.IP INSTALLSTR -+The string displayed when a file is -+installed into a destination file name. -+The default is: -+.ES -+Install file: "$SOURCE" as "$TARGET" -+.EE -+ -+.IP INTEL_C_COMPILER_VERSION -+Set by the "intelc" Tool -+to the major version number of the Intel C compiler -+selected for use. -+ -+.IP JAR -+The Java archive tool. -+ -+.IP JARCHDIR -+The directory to which the Java archive tool should change -+(using the -+.B \-C -+option). -+ -+.IP JARCOM -+The command line used to call the Java archive tool. -+ -+.IP JARCOMSTR -+The string displayed when the Java archive tool -+is called -+If this is not set, then \fB$JARCOM\fP (the command line) is displayed. -+ -+.ES -+env = Environment(JARCOMSTR = "JARchiving $SOURCES into $TARGET") -+.EE -+ -+.IP JARFLAGS -+General options passed to the Java archive tool. -+By default this is set to -+.B cf -+to create the necessary -+.B jar -+file. -+ -+.IP JARSUFFIX -+The suffix for Java archives: -+.B .jar -+by default. -+ -+.IP JAVABOOTCLASSPATH -+Specifies the list of directories that -+will be added to the -+&javac; command line -+via the \fB\-bootclasspath\fP option. -+The individual directory names will be -+separated by the operating system's path separate character -+(\fB:\fP on UNIX/Linux/POSIX, -+\fB;\fP on Windows). -+ -+.IP JAVAC -+The Java compiler. -+ -+.IP JAVACCOM -+The command line used to compile a directory tree containing -+Java source files to -+corresponding Java class files. -+Any options specified in the \fB$JAVACFLAGS\fP construction variable -+are included on this command line. -+ -+.IP JAVACCOMSTR -+The string displayed when compiling -+a directory tree of Java source files to -+corresponding Java class files. -+If this is not set, then \fB$JAVACCOM\fP (the command line) is displayed. -+ -+.ES -+env = Environment(JAVACCOMSTR = "Compiling class files $TARGETS from $SOURCES") -+.EE -+ -+.IP JAVACFLAGS -+General options that are passed to the Java compiler. -+ -+.IP JAVACLASSDIR -+The directory in which Java class files may be found. -+This is stripped from the beginning of any Java .class -+file names supplied to the -+.B JavaH -+builder. -+ -+.IP JAVACLASSPATH -+Specifies the list of directories that -+will be searched for Java -+\fB.class\fP file. -+The directories in this list will be added to the -+&javac; and &javah; command lines -+via the \fB\-classpath\fP option. -+The individual directory names will be -+separated by the operating system's path separate character -+(\fB:\fP on UNIX/Linux/POSIX, -+\fB;\fP on Windows). -+ -+Note that this currently just adds the specified -+directory via the \fB\-classpath\fP option. -+&SCons; does not currently search the -+\fB$JAVACLASSPATH\fP directories for dependency -+\fB.class\fP files. -+ -+.IP JAVACLASSSUFFIX -+The suffix for Java class files; -+.B .class -+by default. -+ -+.IP JAVAH -+The Java generator for C header and stub files. -+ -+.IP JAVAHCOM -+The command line used to generate C header and stub files -+from Java classes. -+Any options specified in the \fB$JAVAHFLAGS\fP construction variable -+are included on this command line. -+ -+.IP JAVAHCOMSTR -+The string displayed when C header and stub files -+are generated from Java classes. -+If this is not set, then \fB$JAVAHCOM\fP (the command line) is displayed. -+ -+.ES -+env = Environment(JAVAHCOMSTR = "Generating header/stub file(s) $TARGETS from $SOURCES") -+.EE -+ -+.IP JAVAHFLAGS -+General options passed to the C header and stub file generator -+for Java classes. -+ -+.IP JAVASOURCEPATH -+Specifies the list of directories that -+will be searched for input -+\fB.java\fP file. -+The directories in this list will be added to the -+&javac; command line -+via the \fB\-sourcepath\fP option. -+The individual directory names will be -+separated by the operating system's path separate character -+(\fB:\fP on UNIX/Linux/POSIX, -+\fB;\fP on Windows). -+ -+Note that this currently just adds the specified -+directory via the \fB\-sourcepath\fP option. -+&SCons; does not currently search the -+\fB$JAVASOURCEPATH\fP directories for dependency -+\fB.java\fP files. -+ -+.IP JAVASUFFIX -+The suffix for Java files; -+.B .java -+by default. -+ -+.IP JAVAVERSION -+Specifies the Java version being used by the \fBJava\fP() builder. -+This is \fInot\fP currently used to select one -+version of the Java compiler vs. another. -+Instead, you should set this to specify the version of Java -+supported by your &javac; compiler. -+The default is \fB1.4\fP. -+ -+This is sometimes necessary because -+Java 1.5 changed the file names that are created -+for nested anonymous inner classes, -+which can cause a mismatch with the files -+that &SCons; expects will be generated by the &javac; compiler. -+Setting \fB$JAVAVERSION\fP to \fB1.5\fP -+(or \fB1.6\fP, as appropriate) -+can make &SCons; realize that a Java 1.5 or 1.6 -+build is actually up to date. -+ -+.IP LATEX -+The LaTeX structured formatter and typesetter. -+ -+.IP LATEXCOM -+The command line used to call the LaTeX structured formatter and typesetter. -+ -+.IP LATEXCOMSTR -+The string displayed when calling -+the LaTeX structured formatter and typesetter. -+If this is not set, then \fB$LATEXCOM\fP (the command line) is displayed. -+ -+.ES -+env = Environment(LATEXCOMSTR = "Building $TARGET from LaTeX input $SOURCES") -+.EE -+ -+.IP LATEXFLAGS -+General options passed to the LaTeX structured formatter and typesetter. -+ -+.IP LATEXRETRIES -+The maximum number of times that LaTeX -+will be re-run if the -+.B .log -+generated by the \fB$LATEXCOM\fP command -+indicates that there are undefined references. -+The default is to try to resolve undefined references -+by re-running LaTeX up to three times. -+ -+.IP LATEXSUFFIXES -+The list of suffixes of files that will be scanned -+for LaTeX implicit dependencies -+(\fB\\include\fP or \fB\\import\fP files). -+The default list is: -+ -+.ES -+[".tex", ".ltx", ".latex"] -+.EE -+ -+.IP LDMODULE -+The linker for building loadable modules. -+By default, this is the same as \fB$SHLINK\fP. -+ -+.IP LDMODULECOM -+The command line for building loadable modules. -+On Mac OS X, this uses the \fB$LDMODULE\fP, -+\fB$LDMODULEFLAGS\fP and -+\fB$FRAMEWORKSFLAGS\fP variables. -+On other systems, this is the same as \fB$SHLINK\fP. -+ -+.IP LDMODULECOMSTR -+The string displayed when building loadable modules. -+If this is not set, then \fB$LDMODULECOM\fP (the command line) is displayed. -+ -+.IP LDMODULEFLAGS -+General user options passed to the linker for building loadable modules. -+ -+.IP LDMODULEPREFIX -+The prefix used for loadable module file names. -+On Mac OS X, this is null; -+on other systems, this is -+the same as \fB$SHLIBPREFIX\fP. -+ -+.IP LDMODULESUFFIX -+The suffix used for loadable module file names. -+On Mac OS X, this is null; -+on other systems, this is -+the same as $SHLIBSUFFIX. -+ -+.IP LEX -+The lexical analyzer generator. -+ -+.IP LEXCOM -+The command line used to call the lexical analyzer generator -+to generate a source file. -+ -+.IP LEXCOMSTR -+The string displayed when generating a source file -+using the lexical analyzer generator. -+If this is not set, then \fB$LEXCOM\fP (the command line) is displayed. -+ -+.ES -+env = Environment(LEXCOMSTR = "Lex'ing $TARGET from $SOURCES") -+.EE -+ -+.IP LEXFLAGS -+General options passed to the lexical analyzer generator. -+ -+.IP _LIBDIRFLAGS -+An automatically-generated construction variable -+containing the linker command-line options -+for specifying directories to be searched for library. -+The value of \fB$_LIBDIRFLAGS\fP is created -+by appending \fB$LIBDIRPREFIX\fP and \fB$LIBDIRSUFFIX\fP -+to the beginning and end -+of each directory in \fB$LIBPATH\fP. -+ -+.IP LIBDIRPREFIX -+The prefix used to specify a library directory on the linker command line. -+This will be appended to the beginning of each directory -+in the \fB$LIBPATH\fP construction variable -+when the \fB$_LIBDIRFLAGS\fP variable is automatically generated. -+ -+.IP LIBDIRSUFFIX -+The suffix used to specify a library directory on the linker command line. -+This will be appended to the end of each directory -+in the \fB$LIBPATH\fP construction variable -+when the \fB$_LIBDIRFLAGS\fP variable is automatically generated. -+ -+.IP LIBEMITTER -+TODO -+ -+.IP _LIBFLAGS -+An automatically-generated construction variable -+containing the linker command-line options -+for specifying libraries to be linked with the resulting target. -+The value of \fB$_LIBFLAGS\fP is created -+by appending \fB$LIBLINKPREFIX\fP and \fB$LIBLINKSUFFIX\fP -+to the beginning and end -+of each filename in \fB$LIBS\fP. -+ -+.IP LIBLINKPREFIX -+The prefix used to specify a library to link on the linker command line. -+This will be appended to the beginning of each library -+in the \fB$LIBS\fP construction variable -+when the \fB$_LIBFLAGS\fP variable is automatically generated. -+ -+.IP LIBLINKSUFFIX -+The suffix used to specify a library to link on the linker command line. -+This will be appended to the end of each library -+in the \fB$LIBS\fP construction variable -+when the \fB$_LIBFLAGS\fP variable is automatically generated. -+ -+.IP LIBPATH -+The list of directories that will be searched for libraries. -+The implicit dependency scanner will search these -+directories for include files. Don't explicitly put include directory -+arguments in \fB$LINKFLAGS\fP or \fB$SHLINKFLAGS\fP -+because the result will be non-portable -+and the directories will not be searched by the dependency scanner. Note: -+directory names in LIBPATH will be looked-up relative to the SConscript -+directory when they are used in a command. To force -+.B scons -+to look-up a directory relative to the root of the source tree use #: -+ -+.ES -+env = Environment(LIBPATH='#/libs') -+.EE -+.IP -+The directory look-up can also be forced using the -+.BR Dir () -+function: -+ -+.ES -+libs = Dir('libs') -+env = Environment(LIBPATH=libs) -+.EE -+.IP -+The directory list will be added to command lines -+through the automatically-generated -+.B $_LIBDIRFLAGS -+construction variable, -+which is constructed by -+appending the values of the -+.BR $LIBDIRPREFIX and $LIBDIRSUFFIX -+construction variables -+to the beginning and end -+of each directory in \fB$LIBPATH\fP. -+Any command lines you define that need -+the LIBPATH directory list should -+include \fB$_LIBDIRFLAGS\fP: -+ -+.ES -+env = Environment(LINKCOM="my_linker $_LIBDIRFLAGS $_LIBFLAGS -o $TARGET $SOURCE") -+.EE -+ -+.IP LIBPREFIX -+The prefix used for (static) library file names. -+A default value is set for each platform -+(posix, win32, os2, etc.), -+but the value is overridden by individual tools -+(ar, mslib, sgiar, sunar, tlib, etc.) -+to reflect the names of the libraries they create. -+ -+.IP LIBPREFIXES -+A list of all legal prefixes for library file names. -+When searching for library dependencies, -+SCons will look for files with these prefixes, -+the base library name, -+and suffixes in the \fB$LIBSUFFIXES\fP list. -+ -+.IP LIBS -+A list of one or more libraries -+that will be linked with -+any executable programs -+created by this environment. -+ -+The library list will be added to command lines -+through the automatically-generated -+.B $_LIBFLAGS -+construction variable, -+which is constructed by -+appending the values of the -+.BR $LIBLINKPREFIX and $LIBLINKSUFFIX -+construction variables -+to the beginning and end -+of each filename in \fB$LIBS\fP. -+Any command lines you define that need -+the LIBS library list should -+include \fB$_LIBFLAGS\fP: -+ -+.ES -+env = Environment(LINKCOM="my_linker $_LIBDIRFLAGS $_LIBFLAGS -o $TARGET $SOURCE") -+.EE -+.IP -+If you add a -+File -+object to the -+.B $LIBS -+list, the name of that file will be added to -+.BR $_LIBFLAGS , -+and thus the link line, as is, without -+.B $LIBLINKPREFIX -+or -+.BR $LIBLINKSUFFIX . -+For example: -+ -+.ES -+env.Append(LIBS=File('/tmp/mylib.so')) -+.EE -+.IP -+In all cases, scons will add dependencies from the executable program to -+all the libraries in this list. -+ -+.IP LIBSUFFIX -+The suffix used for (static) library file names. -+A default value is set for each platform -+(posix, win32, os2, etc.), -+but the value is overridden by individual tools -+(ar, mslib, sgiar, sunar, tlib, etc.) -+to reflect the names of the libraries they create. -+ -+.IP LIBSUFFIXES -+A list of all legal suffixes for library file names. -+When searching for library dependencies, -+SCons will look for files with prefixes, in the \fB$LIBPREFIXES\fP list, -+the base library name, -+and these suffixes. -+ -+.IP LICENSE -+The abbreviated name of the license under which -+this project is released (gpl, lpgl, bsd etc.). -+See http://www.opensource.org/licenses/alphabetical -+for a list of license names. -+ -+.IP LINESEPARATOR -+The separator used by the \fBSubstfile\fP() and \fBTextfile\fP() builders. -+This value is used between sources when constructing the target. -+It defaults to the current system line separator. -+ -+.IP LINGUAS_FILE -+The \fB$LINGUAS_FILE\fP defines file(s) containing list of additional linguas -+to be processed by \fBPOInit\fP(), \fBPOUpdate\fP() or \fBMOFiles\fP() -+builders. It also affects \fBTranslate\fP() builder. If the variable contains -+a string, it defines name of the list file. The \fB$LINGUAS_FILE\fP may be a -+list of file names as well. If \fB$LINGUAS_FILE\fP is set to -+\fBTrue\fP (or non-zero numeric value), the list will be read from -+default file named -+.BR LINGUAS . -+ -+ -+.IP LINK -+The linker. -+ -+.IP LINKCOM -+The command line used to link object files into an executable. -+ -+.IP LINKCOMSTR -+The string displayed when object files -+are linked into an executable. -+If this is not set, then \fB$LINKCOM\fP (the command line) is displayed. -+ -+.ES -+env = Environment(LINKCOMSTR = "Linking $TARGET") -+.EE -+ -+.IP LINKFLAGS -+General user options passed to the linker. -+Note that this variable should -+.I not -+contain -+.B \-l -+(or similar) options for linking with the libraries listed in \fB$LIBS\fP, -+nor -+.B \-L -+(or similar) library search path options -+that scons generates automatically from \fB$LIBPATH\fP. -+See -+.B $_LIBFLAGS -+above, -+for the variable that expands to library-link options, -+and -+.B $_LIBDIRFLAGS -+above, -+for the variable that expands to library search path options. -+ -+.IP M4 -+The M4 macro preprocessor. -+ -+.IP M4COM -+The command line used to pass files through the M4 macro preprocessor. -+ -+.IP M4COMSTR -+The string displayed when -+a file is passed through the M4 macro preprocessor. -+If this is not set, then \fB$M4COM\fP (the command line) is displayed. -+ -+.IP M4FLAGS -+General options passed to the M4 macro preprocessor. -+ -+.IP MAKEINDEX -+The makeindex generator for the TeX formatter and typesetter and the -+LaTeX structured formatter and typesetter. -+ -+.IP MAKEINDEXCOM -+The command line used to call the makeindex generator for the -+TeX formatter and typesetter and the LaTeX structured formatter and -+typesetter. -+ -+.IP MAKEINDEXCOMSTR -+The string displayed when calling the makeindex generator for the -+TeX formatter and typesetter -+and the LaTeX structured formatter and typesetter. -+If this is not set, then \fB$MAKEINDEXCOM\fP (the command line) is displayed. -+ -+.IP MAKEINDEXFLAGS -+General options passed to the makeindex generator for the TeX formatter -+and typesetter and the LaTeX structured formatter and typesetter. -+ -+.IP MAXLINELENGTH -+The maximum number of characters allowed on an external command line. -+On Win32 systems, -+link lines longer than this many characters -+are linked via a temporary file name. -+ -+.IP MIDL -+The Microsoft IDL compiler. -+ -+.IP MIDLCOM -+The command line used to pass files to the Microsoft IDL compiler. -+ -+.IP MIDLCOMSTR -+The string displayed when -+the Microsoft IDL copmiler is called. -+If this is not set, then \fB$MIDLCOM\fP (the command line) is displayed. -+ -+.IP MIDLFLAGS -+General options passed to the Microsoft IDL compiler. -+ -+.IP MOSUFFIX -+Suffix used for \fBMO\fP files (default: \fB'.mo'\fP). -+See &t-link-msgfmt; tool and \fBMOFiles\fP() builder. -+ -+.IP MSGFMT -+Absolute path to \fBmsgfmt(1)\fP binary, found by -+.BR Detect() . -+See &t-link-msgfmt; tool and \fBMOFiles\fP() builder. -+ -+.IP MSGFMTCOM -+Complete command line to run \fBmsgfmt(1)\fP program. -+See &t-link-msgfmt; tool and \fBMOFiles\fP() builder. -+ -+.IP MSGFMTCOMSTR -+String to display when \fBmsgfmt(1)\fP is invoked -+(default: \fB''\fP, which means ``print \fB$MSGFMTCOM\fP''). -+See &t-link-msgfmt; tool and \fBMOFiles\fP() builder. -+ -+.IP MSGFMTFLAGS -+Additional flags to \fBmsgfmt(1)\fP. -+See &t-link-msgfmt; tool and \fBMOFiles\fP() builder. -+ -+.IP MSGINIT -+Path to \fBmsginit(1)\fP program (found via -+.BR Detect() ). -+See &t-link-msginit; tool and \fBPOInit\fP() builder. -+ -+.IP MSGINITCOM -+Complete command line to run \fBmsginit(1)\fP program. -+See &t-link-msginit; tool and \fBPOInit\fP() builder. -+ -+.IP MSGINITCOMSTR -+String to display when \fBmsginit(1)\fP is invoked -+(default: \fB''\fP, which means ``print \fB$MSGINITCOM\fP''). -+See &t-link-msginit; tool and \fBPOInit\fP() builder. -+ -+.IP MSGINITFLAGS -+List of additional flags to \fBmsginit(1)\fP (default: -+.BR [] ). -+See &t-link-msginit; tool and \fBPOInit\fP() builder. -+ -+.IP _MSGINITLOCALE -+Internal ``macro''. Computes locale (language) name based on target filename -+(default: \fB'${TARGET.filebase}' \fP). -+ -+.IP MSGMERGE -+Absolute path to \fBmsgmerge(1)\fP binary as found by -+.BR Detect() . -+See &t-link-msgmerge; tool and \fBPOUpdate\fP() builder. -+ -+.IP MSGMERGECOM -+Complete command line to run \fBmsgmerge(1)\fP command. -+See &t-link-msgmerge; tool and \fBPOUpdate\fP() builder. -+ -+.IP MSGMERGECOMSTR -+String to be displayed when \fBmsgmerge(1)\fP is invoked -+(default: \fB''\fP, which means ``print \fB$MSGMERGECOM\fP''). -+See &t-link-msgmerge; tool and \fBPOUpdate\fP() builder. -+ -+.IP MSGMERGEFLAGS -+Additional flags to \fBmsgmerge(1)\fP command. -+See &t-link-msgmerge; tool and \fBPOUpdate\fP() builder. -+ -+.IP MSSDK_DIR -+The directory containing the Microsoft SDK -+(either Platform SDK or Windows SDK) -+to be used for compilation. -+ -+.IP MSSDK_VERSION -+The version string of the Microsoft SDK -+(either Platform SDK or Windows SDK) -+to be used for compilation. -+Supported versions include -+.BR 6.1 , -+.BR 6.0A , -+.BR 6.0 , -+.B 2003R2 -+and -+.BR 2003R1 . -+ -+.IP MSVC_BATCH -+When set to any true value, -+specifies that SCons should batch -+compilation of object files -+when calling the Microsoft Visual C/C++ compiler. -+All compilations of source files from the same source directory -+that generate target files in a same output directory -+and were configured in SCons using the same construction environment -+will be built in a single call to the compiler. -+Only source files that have changed since their -+object files were built will be passed to each compiler invocation -+(via the \fB$CHANGED_SOURCES\fP construction variable). -+Any compilations where the object (target) file base name -+(minus the \fB.obj\fP) -+does not match the source file base name -+will be compiled separately. -+ -+.IP MSVC_USE_SCRIPT -+Use a batch script to set up Microsoft Visual Studio compiler -+ -+.BR $MSVC_USE_SCRIPT\fP overrides \fB$MSVC_VERSION\fP and \fB$TARGET_ARCH . -+If set to the name of a Visual Studio .bat file (e.g. vcvars.bat), -+SCons will run that bat file and extract the relevant variables from -+the result (typically %INCLUDE%, %LIB%, and %PATH%). Setting -+MSVC_USE_SCRIPT to None bypasses the Visual Studio autodetection -+entirely; use this if you are running SCons in a Visual Studio cmd -+window and importing the shell's environment variables. -+ -+.IP MSVC_VERSION -+Sets the preferred version of Microsoft Visual C/C++ to use. -+ -+If \fB$MSVC_VERSION\fP is not set, SCons will (by default) select the -+latest version of Visual C/C++ installed on your system. If the -+specified version isn't installed, tool initialization will fail. -+This variable must be passed as an argument to the Environment() -+constructor; setting it later has no effect. Set it to an unexpected -+value (e.g. "XXX") to see the valid values on your system. -+ -+.IP MSVS -+When the Microsoft Visual Studio tools are initialized, they set up -+this dictionary with the following keys: -+ -+.BR VERSION : -+the version of MSVS being used (can be set via -+.BR $MSVS_VERSION ) -+ -+.BR VERSIONS : -+the available versions of MSVS installed -+ -+.BR VCINSTALLDIR : -+installed directory of Visual C++ -+ -+.BR VSINSTALLDIR : -+installed directory of Visual Studio -+ -+.BR FRAMEWORKDIR : -+installed directory of the .NET framework -+ -+.BR FRAMEWORKVERSIONS : -+list of installed versions of the .NET framework, sorted latest to oldest. -+ -+.BR FRAMEWORKVERSION : -+latest installed version of the .NET framework -+ -+.BR FRAMEWORKSDKDIR : -+installed location of the .NET SDK. -+ -+.BR PLATFORMSDKDIR : -+installed location of the Platform SDK. -+ -+.BR PLATFORMSDK_MODULES : -+dictionary of installed Platform SDK modules, -+where the dictionary keys are keywords for the various modules, and -+the values are 2-tuples where the first is the release date, and the -+second is the version number. -+ -+If a value isn't set, it wasn't available in the registry. -+ -+.IP MSVS_ARCH -+Sets the architecture for which the generated project(s) should build. -+ -+The default value is \fBx86\fP. -+\fBamd64\fP is also supported -+by &SCons; for some Visual Studio versions. -+Trying to set \fB$MSVS_ARCH\fP to an architecture that's not -+supported for a given Visual Studio version -+will generate an error. -+ -+.IP MSVS_PROJECT_GUID -+The string -+placed in a generated Microsoft Visual Studio project file -+as the value of the -+.B ProjectGUID -+attribute. -+There is no default value. If not defined, a new GUID is generated. -+ -+.IP MSVS_SCC_AUX_PATH -+The path name -+placed in a generated Microsoft Visual Studio project file -+as the value of the -+.B SccAuxPath -+attribute -+if the -+.B MSVS_SCC_PROVIDER -+construction variable is also set. -+There is no default value. -+ -+.IP MSVS_SCC_CONNECTION_ROOT -+The root path of projects in your SCC workspace, i.e the path under which -+all project and solution files will be generated. It is used as a -+reference path from which the relative paths of the generated -+Microsoft Visual Studio project and solution files are computed. -+The relative project file path is placed as the value of the -+.B SccLocalPath -+attribute -+of the project file -+and as the values of the -+.B SccProjectFilePathRelativizedFromConnection[i] -+(where [i] ranges from 0 to the number of projects in the solution) -+attributes of the -+.B GlobalSection(SourceCodeControl) -+section of the Microsoft Visual Studio solution file. -+Similarly the relative solution file path is placed as the values of the -+.B SccLocalPath[i] -+(where [i] ranges from 0 to the number of projects in the solution) -+attributes of the -+.B GlobalSection(SourceCodeControl) -+section of the Microsoft Visual Studio solution file. -+This is used only -+if the -+.B MSVS_SCC_PROVIDER -+construction variable is also set. -+The default value is the current working directory. -+ -+.IP MSVS_SCC_PROJECT_NAME -+The project name -+placed in a generated Microsoft Visual Studio project file -+as the value of the -+.B SccProjectName -+attribute -+if the -+.B MSVS_SCC_PROVIDER -+construction variable is also set. -+In this case the string is also placed in the -+.B SccProjectName0 -+attribute of the -+.B GlobalSection(SourceCodeControl) -+section of the Microsoft Visual Studio solution file. -+There is no default value. -+ -+.IP MSVS_SCC_PROVIDER -+The string -+placed in a generated Microsoft Visual Studio project file -+as the value of the -+.B SccProvider -+attribute. -+The string is also placed in the -+.B SccProvider0 -+attribute of the -+.B GlobalSection(SourceCodeControl) -+section of the Microsoft Visual Studio solution file. -+There is no default value. -+ -+.IP MSVS_VERSION -+Sets the preferred version of Microsoft Visual Studio to use. -+ -+If \fB$MSVS_VERSION\fP is not set, -+&SCons; will (by default) select the latest version -+of Visual Studio installed on your system. -+So, if you have version 6 and version 7 (MSVS .NET) installed, -+it will prefer version 7. -+You can override this by -+specifying the -+.B MSVS_VERSION -+variable in the Environment initialization, setting it to the -+appropriate version ('6.0' or '7.0', for example). -+If the specified version isn't installed, -+tool initialization will fail. -+ -+This is obsolete: use \fB$MSVC_VERSION\fP instead. If \fB$MSVS_VERSION\fP is set and -+.BR $MSVC_VERSION\fP is not, \fB$MSVC_VERSION\fP will be set automatically to \fB$MSVS_VERSION . -+If both are set to different values, scons will raise an error. -+ -+.IP MSVSBUILDCOM -+The build command line placed in -+a generated Microsoft Visual Studio project file. -+The default is to have Visual Studio invoke SCons with any specified -+build targets. -+ -+.IP MSVSCLEANCOM -+The clean command line placed in -+a generated Microsoft Visual Studio project file. -+The default is to have Visual Studio invoke SCons with the -c option -+to remove any specified targets. -+ -+.IP MSVSENCODING -+The encoding string placed in -+a generated Microsoft Visual Studio project file. -+The default is encoding -+.BR Windows-1252 . -+ -+.IP MSVSPROJECTCOM -+The action used to generate Microsoft Visual Studio project files. -+ -+.IP MSVSPROJECTSUFFIX -+The suffix used for Microsoft Visual Studio project (DSP) files. -+The default value is -+.B .vcproj -+when using Visual Studio version 7.x (.NET) -+or later version, -+and -+.B .dsp -+when using earlier versions of Visual Studio. -+ -+.IP MSVSREBUILDCOM -+The rebuild command line placed in -+a generated Microsoft Visual Studio project file. -+The default is to have Visual Studio invoke SCons with any specified -+rebuild targets. -+ -+.IP MSVSSCONS -+The SCons used in generated Microsoft Visual Studio project files. -+The default is the version of SCons being -+used to generate the project file. -+ -+.IP MSVSSCONSCOM -+The default SCons command used in generated Microsoft Visual Studio -+project files. -+ -+.IP MSVSSCONSCRIPT -+The sconscript file -+(that is, -+.B SConstruct -+or -+.B SConscript -+file) -+that will be invoked by Visual Studio -+project files -+(through the -+.B $MSVSSCONSCOM -+variable). -+The default is the same sconscript file -+that contains the call to -+.BR MSVSProject () -+to build the project file. -+ -+.IP MSVSSCONSFLAGS -+The SCons flags used in generated Microsoft Visual Studio -+project files. -+ -+.IP MSVSSOLUTIONCOM -+The action used to generate Microsoft Visual Studio solution files. -+ -+.IP MSVSSOLUTIONSUFFIX -+The suffix used for Microsoft Visual Studio solution (DSW) files. -+The default value is -+.B .sln -+when using Visual Studio version 7.x (.NET), -+and -+.B .dsw -+when using earlier versions of Visual Studio. -+ -+.IP MT -+The program used on Windows systems to embed manifests into DLLs and EXEs. -+See also \fB$WINDOWS_EMBED_MANIFEST\fP. -+ -+.IP MTEXECOM -+The Windows command line used to embed manifests into executables. -+See also \fB$MTSHLIBCOM\fP. -+ -+.IP MTFLAGS -+Flags passed to the \fB$MT\fP manifest embedding program (Windows only). -+ -+.IP MTSHLIBCOM -+The Windows command line used to embed manifests into shared libraries (DLLs). -+See also \fB$MTEXECOM\fP. -+ -+.IP MWCW_VERSION -+The version number of the MetroWerks CodeWarrior C compiler -+to be used. -+ -+.IP MWCW_VERSIONS -+A list of installed versions of the MetroWerks CodeWarrior C compiler -+on this system. -+ -+.IP NAME -+Specfies the name of the project to package. -+ -+.IP no_import_lib -+When set to non-zero, -+suppresses creation of a corresponding Windows static import lib by the -+.B SharedLibrary -+builder when used with -+MinGW, Microsoft Visual Studio or Metrowerks. -+This also suppresses creation -+of an export (.exp) file -+when using Microsoft Visual Studio. -+ -+.IP OBJPREFIX -+The prefix used for (static) object file names. -+ -+.IP OBJSUFFIX -+The suffix used for (static) object file names. -+ -+.IP P4 -+The Perforce executable. -+ -+.IP P4COM -+The command line used to -+fetch source files from Perforce. -+ -+.IP P4COMSTR -+The string displayed when -+fetching a source file from Perforce. -+If this is not set, then \fB$P4COM\fP (the command line) is displayed. -+ -+.IP P4FLAGS -+General options that are passed to Perforce. -+ -+.IP PACKAGEROOT -+Specifies the directory where all files in resulting archive will be -+placed if applicable. The default value is "$NAME-$VERSION". -+ -+.IP PACKAGETYPE -+Selects the package type to build. Currently these are available: -+ -+ * msi - Microsoft Installer -+ * rpm - Redhat Package Manger -+ * ipkg - Itsy Package Management System -+ * tarbz2 - compressed tar -+ * targz - compressed tar -+ * zip - zip file -+ * src_tarbz2 - compressed tar source -+ * src_targz - compressed tar source -+ * src_zip - zip file source -+ -+This may be overridden with the "package_type" command line option. -+ -+.IP PACKAGEVERSION -+The version of the package (not the underlying project). -+This is currently only used by the rpm packager -+and should reflect changes in the packaging, -+not the underlying project code itself. -+ -+.IP PCH -+The Microsoft Visual C++ precompiled header that will be used when compiling -+object files. This variable is ignored by tools other than Microsoft Visual C++. -+When this variable is -+defined SCons will add options to the compiler command line to -+cause it to use the precompiled header, and will also set up the -+dependencies for the PCH file. -+Example: -+ -+.ES -+env['PCH'] = 'StdAfx.pch' -+.EE -+ -+.IP PCHCOM -+The command line used by the -+.BR PCH () -+builder to generated a precompiled header. -+ -+.IP PCHCOMSTR -+The string displayed when generating a precompiled header. -+If this is not set, then \fB$PCHCOM\fP (the command line) is displayed. -+ -+.IP PCHPDBFLAGS -+A construction variable that, when expanded, -+adds the \fB/yD\fP flag to the command line -+only if the \fB$PDB\fP construction variable is set. -+ -+.IP PCHSTOP -+This variable specifies how much of a source file is precompiled. This -+variable is ignored by tools other than Microsoft Visual C++, or when -+the PCH variable is not being used. When this variable is define it -+must be a string that is the name of the header that -+is included at the end of the precompiled portion of the source files, or -+the empty string if the "#pragma hrdstop" construct is being used: -+ -+.ES -+env['PCHSTOP'] = 'StdAfx.h' -+.EE -+ -+.IP PDB -+The Microsoft Visual C++ PDB file that will store debugging information for -+object files, shared libraries, and programs. This variable is ignored by -+tools other than Microsoft Visual C++. -+When this variable is -+defined SCons will add options to the compiler and linker command line to -+cause them to generate external debugging information, and will also set up the -+dependencies for the PDB file. -+Example: -+ -+.ES -+env['PDB'] = 'hello.pdb' -+.EE -+.IP -+The Visual C++ compiler switch that SCons uses by default -+to generate PDB information is \fB/Z7\fP. -+This works correctly with parallel (\fB\-j\fP) builds -+because it embeds the debug information in the intermediate object files, -+as opposed to sharing a single PDB file between multiple object files. -+This is also the only way to get debug information -+embedded into a static library. -+Using the \fB/Zi\fP instead may yield improved -+link-time performance, -+although parallel builds will no longer work. -+You can generate PDB files with the \fB/Zi\fP -+switch by overriding the default \fB$CCPDBFLAGS\fP variable; -+see the entry for that variable for specific examples. -+ -+.IP PDFCOM -+A deprecated synonym for \fB$DVIPDFCOM\fP. -+ -+.IP PDFLATEX -+The &pdflatex; utility. -+ -+.IP PDFLATEXCOM -+The command line used to call the &pdflatex; utility. -+ -+.IP PDFLATEXCOMSTR -+The string displayed when calling the &pdflatex; utility. -+If this is not set, then \fB$PDFLATEXCOM\fP (the command line) is displayed. -+ -+.ES -+env = Environment(PDFLATEX;COMSTR = "Building $TARGET from LaTeX input $SOURCES") -+.EE -+ -+.IP PDFLATEXFLAGS -+General options passed to the &pdflatex; utility. -+ -+.IP PDFPREFIX -+The prefix used for PDF file names. -+ -+.IP PDFSUFFIX -+The suffix used for PDF file names. -+ -+.IP PDFTEX -+The &pdftex; utility. -+ -+.IP PDFTEXCOM -+The command line used to call the &pdftex; utility. -+ -+.IP PDFTEXCOMSTR -+The string displayed when calling the &pdftex; utility. -+If this is not set, then \fB$PDFTEXCOM\fP (the command line) is displayed. -+ -+.ES -+env = Environment(PDFTEXCOMSTR = "Building $TARGET from TeX input $SOURCES") -+.EE -+ -+.IP PDFTEXFLAGS -+General options passed to the &pdftex; utility. -+ -+.IP PKGCHK -+On Solaris systems, -+the package-checking program that will -+be used (along with \fB$PKGINFO\fP) -+to look for installed versions of -+the Sun PRO C++ compiler. -+The default is -+.BR /usr/sbin/pgkchk . -+ -+.IP PKGINFO -+On Solaris systems, -+the package information program that will -+be used (along with \fB$PKGCHK\fP) -+to look for installed versions of -+the Sun PRO C++ compiler. -+The default is -+.BR pkginfo . -+ -+.IP PLATFORM -+The name of the platform used to create the Environment. If no platform is -+specified when the Environment is created, -+.B scons -+autodetects the platform. -+ -+.ES -+env = Environment(tools = []) -+if env['PLATFORM'] == 'cygwin': -+ Tool('mingw')(env) -+else: -+ Tool('msvc')(env) -+.EE -+ -+.IP POAUTOINIT -+The \fB$POAUTOINIT\fP variable, if set to \fBTrue\fP (on non-zero -+numeric value), let the &t-link-msginit; tool to automatically initialize -+\fImissing\fP \fBPO\fP files with -+\fBmsginit(1)\fP. This applies to both, -+\fBPOInit\fP() and \fBPOUpdate\fP() builders (and others that use any of -+them). -+ -+.IP POCREATE_ALIAS -+Common alias for all \fBPO\fP files created with \fBPOInit\fP() -+builder (default: \fB'po-create'\fP). -+See &t-link-msginit; tool and \fBPOInit\fP() builder. -+ -+.IP POSUFFIX -+Suffix used for \fBPO\fP files (default: \fB'.po'\fP) -+See &t-link-msginit; tool and \fBPOInit\fP() builder. -+ -+.IP POTDOMAIN -+The \fB$POTDOMAIN\fP defines default domain, used to generate -+\fBPOT\fP filename as \fB\fB$POTDOMAIN\fP.pot\fP when -+no \fBPOT\fP file name is provided by the user. This applies to -+\fBPOTUpdate\fP(), \fBPOInit\fP() and \fBPOUpdate\fP() builders (and -+builders, that use them, e.g. \fBTranslate\fP()). Normally (if \fB$POTDOMAIN\fP is -+not defined), the builders use \fBmessages.pot\fP as default -+\fBPOT\fP file name. -+ -+.IP POTSUFFIX -+Suffix used for PO Template files (default: \fB'.pot'\fP). -+See &t-link-xgettext; tool and \fBPOTUpdate\fP() builder. -+ -+.IP POTUPDATE_ALIAS -+Name of the common phony target for all PO Templates created with -+.BR POUpdate\fP() (default: \fB'pot-update' ). -+See &t-link-xgettext; tool and \fBPOTUpdate\fP() builder. -+ -+.IP POUPDATE_ALIAS -+Common alias for all \fBPO\fP files being defined with -+.BR POUpdate\fP() builder (default: \fB'po-update' ). -+See &t-link-msgmerge; tool and \fBPOUpdate\fP() builder. -+ -+.IP PRINT_CMD_LINE_FUNC -+A Python function used to print the command lines as they are executed -+(assuming command printing is not disabled by the -+.B \-q -+or -+.B \-s -+options or their equivalents). -+The function should take four arguments: -+.IR s , -+the command being executed (a string), -+.IR target , -+the target being built (file node, list, or string name(s)), -+.IR source , -+the source(s) used (file node, list, or string name(s)), and -+.IR env , -+the environment being used. -+ -+The function must do the printing itself. The default implementation, -+used if this variable is not set or is None, is: -+.ES -+def print_cmd_line(s, target, source, env): -+ sys.stdout.write(s + "\\n") -+.EE -+.IP -+Here's an example of a more interesting function: -+ -+.ES -+def print_cmd_line(s, target, source, env): -+ sys.stdout.write("Building %s -> %s...\\n" % -+ (' and '.join([str(x) for x in source]), -+ ' and '.join([str(x) for x in target]))) -+env=Environment(PRINT_CMD_LINE_FUNC=print_cmd_line) -+env.Program('foo', 'foo.c') -+.EE -+.IP -+This just prints "Building \fItargetname\fP from \fIsourcename\fP..." instead -+of the actual commands. -+Such a function could also log the actual commands to a log file, -+for example. -+ -+.IP PROGEMITTER -+TODO -+ -+.IP PROGPREFIX -+The prefix used for executable file names. -+ -+.IP PROGSUFFIX -+The suffix used for executable file names. -+ -+.IP PSCOM -+The command line used to convert TeX DVI files into a PostScript file. -+ -+.IP PSCOMSTR -+The string displayed when a TeX DVI file -+is converted into a PostScript file. -+If this is not set, then \fB$PSCOM\fP (the command line) is displayed. -+ -+.IP PSPREFIX -+The prefix used for PostScript file names. -+ -+.IP PSSUFFIX -+The prefix used for PostScript file names. -+ -+.IP QT_AUTOSCAN -+Turn off scanning for mocable files. Use the Moc Builder to explicitly -+specify files to run moc on. -+ -+.IP QT_BINPATH -+The path where the qt binaries are installed. -+The default value is '\fB$QTDIR\fP/bin'. -+ -+.IP QT_CPPPATH -+The path where the qt header files are installed. -+The default value is '\fB$QTDIR\fP/include'. -+Note: If you set this variable to None, -+the tool won't change the \fB$CPPPATH\fP -+construction variable. -+ -+.IP QT_DEBUG -+Prints lots of debugging information while scanning for moc files. -+ -+.IP QT_LIB -+Default value is 'qt'. You may want to set this to 'qt-mt'. Note: If you set -+this variable to None, the tool won't change the \fB$LIBS\fP variable. -+ -+.IP QT_LIBPATH -+The path where the qt libraries are installed. -+The default value is '\fB$QTDIR\fP/lib'. -+Note: If you set this variable to None, -+the tool won't change the \fB$LIBPATH\fP -+construction variable. -+ -+.IP QT_MOC -+Default value is '\fB$QT_BINPATH\fP/moc'. -+ -+.IP QT_MOCCXXPREFIX -+Default value is ''. Prefix for moc output files, when source is a cxx file. -+ -+.IP QT_MOCCXXSUFFIX -+Default value is '.moc'. Suffix for moc output files, when source is a cxx -+file. -+ -+.IP QT_MOCFROMCXXCOM -+Command to generate a moc file from a cpp file. -+ -+.IP QT_MOCFROMCXXCOMSTR -+The string displayed when generating a moc file from a cpp file. -+If this is not set, then \fB$QT_MOCFROMCXXCOM\fP (the command line) is displayed. -+ -+.IP QT_MOCFROMCXXFLAGS -+Default value is '-i'. These flags are passed to moc, when moccing a -+C++ file. -+ -+.IP QT_MOCFROMHCOM -+Command to generate a moc file from a header. -+ -+.IP QT_MOCFROMHCOMSTR -+The string displayed when generating a moc file from a cpp file. -+If this is not set, then \fB$QT_MOCFROMHCOM\fP (the command line) is displayed. -+ -+.IP QT_MOCFROMHFLAGS -+Default value is ''. These flags are passed to moc, when moccing a header -+file. -+ -+.IP QT_MOCHPREFIX -+Default value is 'moc_'. Prefix for moc output files, when source is a header. -+ -+.IP QT_MOCHSUFFIX -+Default value is '\fB$CXXFILESUFFIX\fP'. Suffix for moc output files, when source is -+a header. -+ -+.IP QT_UIC -+Default value is '\fB$QT_BINPATH\fP/uic'. -+ -+.IP QT_UICCOM -+Command to generate header files from .ui files. -+ -+.IP QT_UICCOMSTR -+The string displayed when generating header files from .ui files. -+If this is not set, then \fB$QT_UICCOM\fP (the command line) is displayed. -+ -+.IP QT_UICDECLFLAGS -+Default value is ''. These flags are passed to uic, when creating a a h -+file from a .ui file. -+ -+.IP QT_UICDECLPREFIX -+Default value is ''. Prefix for uic generated header files. -+ -+.IP QT_UICDECLSUFFIX -+Default value is '.h'. Suffix for uic generated header files. -+ -+.IP QT_UICIMPLFLAGS -+Default value is ''. These flags are passed to uic, when creating a cxx -+file from a .ui file. -+ -+.IP QT_UICIMPLPREFIX -+Default value is 'uic_'. Prefix for uic generated implementation files. -+ -+.IP QT_UICIMPLSUFFIX -+Default value is '\fB$CXXFILESUFFIX\fP'. Suffix for uic generated implementation -+files. -+ -+.IP QT_UISUFFIX -+Default value is '.ui'. Suffix of designer input files. -+ -+.IP QTDIR -+The qt tool tries to take this from os.environ. -+It also initializes all QT_* -+construction variables listed below. -+(Note that all paths are constructed -+with python's os.path.join() method, -+but are listed here with the '/' separator -+for easier reading.) -+In addition, the construction environment -+variables \fB$CPPPATH\fP, -+\fB$LIBPATH\fP and -+\fB$LIBS\fP may be modified -+and the variables -+.BR $PROGEMITTER\fP, \fB$SHLIBEMITTER and $LIBEMITTER -+are modified. Because the build-performance is affected when using this tool, -+you have to explicitly specify it at Environment creation: -+ -+.ES -+Environment(tools=['default','qt']) -+.EE -+.IP -+The qt tool supports the following operations: -+ -+.I "Automatic moc file generation from header files." -+You do not have to specify moc files explicitly, the tool does it for you. -+However, there are a few preconditions to do so: Your header file must have -+the same filebase as your implementation file and must stay in the same -+directory. It must have one of the suffixes .h, .hpp, .H, .hxx, .hh. You -+can turn off automatic moc file generation by setting QT_AUTOSCAN to 0. -+See also the corresponding -+.BR Moc() () -+builder method. -+ -+.I "Automatic moc file generation from cxx files." -+As stated in the qt documentation, include the moc file at the end of -+the cxx file. Note that you have to include the file, which is generated -+by the transformation ${QT_MOCCXXPREFIX}${QT_MOCCXXSUFFIX}, by default -+.moc. A warning is generated after building the moc file, if you -+do not include the correct file. If you are using VariantDir, you may -+need to specify duplicate=1. You can turn off automatic moc file generation -+by setting QT_AUTOSCAN to 0. See also the corresponding -+.BR Moc () -+builder method. -+ -+.I "Automatic handling of .ui files." -+The implementation files generated from .ui files are handled much the same -+as yacc or lex files. Each .ui file given as a source of Program, Library or -+SharedLibrary will generate three files, the declaration file, the -+implementation file and a moc file. Because there are also generated headers, -+you may need to specify duplicate=1 in calls to VariantDir. -+See also the corresponding -+.BR Uic () -+builder method. -+ -+.IP RANLIB -+The archive indexer. -+ -+.IP RANLIBCOM -+The command line used to index a static library archive. -+ -+.IP RANLIBCOMSTR -+The string displayed when a static library archive is indexed. -+If this is not set, then \fB$RANLIBCOM\fP (the command line) is displayed. -+ -+.ES -+env = Environment(RANLIBCOMSTR = "Indexing $TARGET") -+.EE -+ -+.IP RANLIBFLAGS -+General options passed to the archive indexer. -+ -+.IP RC -+The resource compiler used to build -+a Microsoft Visual C++ resource file. -+ -+.IP RCCOM -+The command line used to build -+a Microsoft Visual C++ resource file. -+ -+.IP RCCOMSTR -+The string displayed when invoking the resource compiler -+to build a Microsoft Visual C++ resource file. -+If this is not set, then \fB$RCCOM\fP (the command line) is displayed. -+ -+.IP RCFLAGS -+The flags passed to the resource compiler by the RES builder. -+ -+.IP RCINCFLAGS -+An automatically-generated construction variable -+containing the command-line options -+for specifying directories to be searched -+by the resource compiler. -+The value of \fB$RCINCFLAGS\fP is created -+by appending \fB$RCINCPREFIX\fP and \fB$RCINCSUFFIX\fP -+to the beginning and end -+of each directory in \fB$CPPPATH\fP. -+ -+.IP RCINCPREFIX -+The prefix (flag) used to specify an include directory -+on the resource compiler command line. -+This will be appended to the beginning of each directory -+in the \fB$CPPPATH\fP construction variable -+when the \fB$RCINCFLAGS\fP variable is expanded. -+ -+.IP RCINCSUFFIX -+The suffix used to specify an include directory -+on the resource compiler command line. -+This will be appended to the end of each directory -+in the \fB$CPPPATH\fP construction variable -+when the \fB$RCINCFLAGS\fP variable is expanded. -+ -+.IP RCS -+The RCS executable. -+Note that this variable is not actually used -+for the command to fetch source files from RCS; -+see the -+.B $RCS_CO -+construction variable, below. -+ -+.IP RCS_CO -+The RCS "checkout" executable, -+used to fetch source files from RCS. -+ -+.IP RCS_COCOM -+The command line used to -+fetch (checkout) source files from RCS. -+ -+.IP RCS_COCOMSTR -+The string displayed when fetching -+a source file from RCS. -+If this is not set, then \fB$RCS_COCOM\fP -+(the command line) is displayed. -+ -+.IP RCS_COFLAGS -+Options that are passed to the \fB$RCS_CO\fP command. -+ -+.IP RDirs -+A function that converts a string into a list of Dir instances by -+searching the repositories. -+ -+.IP REGSVR -+The program used on Windows systems -+to register a newly-built DLL library -+whenever the \fBSharedLibrary\fP() builder -+is passed a keyword argument of \fBregister=1\fP. -+ -+.IP REGSVRCOM -+The command line used on Windows systems -+to register a newly-built DLL library -+whenever the \fBSharedLibrary\fP() builder -+is passed a keyword argument of \fBregister=1\fP. -+ -+.IP REGSVRCOMSTR -+The string displayed when registering a newly-built DLL file. -+If this is not set, then \fB$REGSVRCOM\fP (the command line) is displayed. -+ -+.IP REGSVRFLAGS -+Flags passed to the DLL registration program -+on Windows systems when a newly-built DLL library is registered. -+By default, -+this includes the \fB/s\fP -+that prevents dialog boxes from popping up -+and requiring user attention. -+ -+.IP RMIC -+The Java RMI stub compiler. -+ -+.IP RMICCOM -+The command line used to compile stub -+and skeleton class files -+from Java classes that contain RMI implementations. -+Any options specified in the \fB$RMICFLAGS\fP construction variable -+are included on this command line. -+ -+.IP RMICCOMSTR -+The string displayed when compiling -+stub and skeleton class files -+from Java classes that contain RMI implementations. -+If this is not set, then \fB$RMICCOM\fP (the command line) is displayed. -+ -+.ES -+env = Environment(RMICCOMSTR = "Generating stub/skeleton class files $TARGETS from $SOURCES") -+.EE -+ -+.IP RMICFLAGS -+General options passed to the Java RMI stub compiler. -+ -+.IP _RPATH -+An automatically-generated construction variable -+containing the rpath flags to be used when linking -+a program with shared libraries. -+The value of \fB$_RPATH\fP is created -+by appending \fB$RPATHPREFIX\fP and \fB$RPATHSUFFIX\fP -+to the beginning and end -+of each directory in \fB$RPATH\fP. -+ -+.IP RPATH -+A list of paths to search for shared libraries when running programs. -+Currently only used in the GNU (gnulink), -+IRIX (sgilink) and Sun (sunlink) linkers. -+Ignored on platforms and toolchains that don't support it. -+Note that the paths added to RPATH -+are not transformed by -+.B scons -+in any way: if you want an absolute -+path, you must make it absolute yourself. -+ -+.IP RPATHPREFIX -+The prefix used to specify a directory to be searched for -+shared libraries when running programs. -+This will be appended to the beginning of each directory -+in the \fB$RPATH\fP construction variable -+when the \fB$_RPATH\fP variable is automatically generated. -+ -+.IP RPATHSUFFIX -+The suffix used to specify a directory to be searched for -+shared libraries when running programs. -+This will be appended to the end of each directory -+in the \fB$RPATH\fP construction variable -+when the \fB$_RPATH\fP variable is automatically generated. -+ -+.IP RPCGEN -+The RPC protocol compiler. -+ -+.IP RPCGENCLIENTFLAGS -+Options passed to the RPC protocol compiler -+when generating client side stubs. -+These are in addition to any flags specified in the -+.B $RPCGENFLAGS -+construction variable. -+ -+.IP RPCGENFLAGS -+General options passed to the RPC protocol compiler. -+ -+.IP RPCGENHEADERFLAGS -+Options passed to the RPC protocol compiler -+when generating a header file. -+These are in addition to any flags specified in the -+.B $RPCGENFLAGS -+construction variable. -+ -+.IP RPCGENSERVICEFLAGS -+Options passed to the RPC protocol compiler -+when generating server side stubs. -+These are in addition to any flags specified in the -+.B $RPCGENFLAGS -+construction variable. -+ -+.IP RPCGENXDRFLAGS -+Options passed to the RPC protocol compiler -+when generating XDR routines. -+These are in addition to any flags specified in the -+.B $RPCGENFLAGS -+construction variable. -+ -+.IP SCANNERS -+A list of the available implicit dependency scanners. -+New file scanners may be added by -+appending to this list, -+although the more flexible approach -+is to associate scanners -+with a specific Builder. -+See the sections "Builder Objects" -+and "Scanner Objects," -+below, for more information. -+ -+.IP SCCS -+The SCCS executable. -+ -+.IP SCCSCOM -+The command line used to -+fetch source files from SCCS. -+ -+.IP SCCSCOMSTR -+The string displayed when fetching -+a source file from a CVS repository. -+If this is not set, then \fB$SCCSCOM\fP -+(the command line) is displayed. -+ -+.IP SCCSFLAGS -+General options that are passed to SCCS. -+ -+.IP SCCSGETFLAGS -+Options that are passed specifically to the SCCS "get" subcommand. -+This can be set, for example, to -+.B \-e -+to check out editable files from SCCS. -+ -+.IP SCONS_HOME -+The (optional) path to the SCons library directory, -+initialized from the external environment. -+If set, this is used to construct a shorter and more -+efficient search path in the -+.B $MSVSSCONS -+command line executed -+from Microsoft Visual Studio project files. -+ -+.IP SHCC -+The C compiler used for generating shared-library objects. -+ -+.IP SHCCCOM -+The command line used to compile a C source file -+to a shared-library object file. -+Any options specified in the \fB$SHCFLAGS\fP, -+\fB$SHCCFLAGS\fP and -+\fB$CPPFLAGS\fP construction variables -+are included on this command line. -+ -+.IP SHCCCOMSTR -+The string displayed when a C source file -+is compiled to a shared object file. -+If this is not set, then \fB$SHCCCOM\fP (the command line) is displayed. -+ -+.ES -+env = Environment(SHCCCOMSTR = "Compiling shared object $TARGET") -+.EE -+ -+.IP SHCCFLAGS -+Options that are passed to the C and C++ compilers -+to generate shared-library objects. -+ -+.IP SHCFLAGS -+Options that are passed to the C compiler (only; not C++) -+to generate shared-library objects. -+ -+.IP SHCXX -+The C++ compiler used for generating shared-library objects. -+ -+.IP SHCXXCOM -+The command line used to compile a C++ source file -+to a shared-library object file. -+Any options specified in the \fB$SHCXXFLAGS\fP and -+\fB$CPPFLAGS\fP construction variables -+are included on this command line. -+ -+.IP SHCXXCOMSTR -+The string displayed when a C++ source file -+is compiled to a shared object file. -+If this is not set, then \fB$SHCXXCOM\fP (the command line) is displayed. -+ -+.ES -+env = Environment(SHCXXCOMSTR = "Compiling shared object $TARGET") -+.EE -+ -+.IP SHCXXFLAGS -+Options that are passed to the C++ compiler -+to generate shared-library objects. -+ -+.IP SHELL -+A string naming the shell program that will be passed to the -+.B $SPAWN -+function. -+See the -+.B $SPAWN -+construction variable for more information. -+ -+.IP SHF77 -+The Fortran 77 compiler used for generating shared-library objects. -+You should normally set the \fB$SHFORTRAN\fP variable, -+which specifies the default Fortran compiler -+for all Fortran versions. -+You only need to set \fB$SHF77\fP if you need to use a specific compiler -+or compiler version for Fortran 77 files. -+ -+.IP SHF77COM -+The command line used to compile a Fortran 77 source file -+to a shared-library object file. -+You only need to set \fB$SHF77COM\fP if you need to use a specific -+command line for Fortran 77 files. -+You should normally set the \fB$SHFORTRANCOM\fP variable, -+which specifies the default command line -+for all Fortran versions. -+ -+.IP SHF77COMSTR -+The string displayed when a Fortran 77 source file -+is compiled to a shared-library object file. -+If this is not set, then \fB$SHF77COM\fP or \fB$SHFORTRANCOM\fP -+(the command line) is displayed. -+ -+.IP SHF77FLAGS -+Options that are passed to the Fortran 77 compiler -+to generated shared-library objects. -+You only need to set \fB$SHF77FLAGS\fP if you need to define specific -+user options for Fortran 77 files. -+You should normally set the \fB$SHFORTRANFLAGS\fP variable, -+which specifies the user-specified options -+passed to the default Fortran compiler -+for all Fortran versions. -+ -+.IP SHF77PPCOM -+The command line used to compile a Fortran 77 source file to a -+shared-library object file -+after first running the file through the C preprocessor. -+Any options specified in the \fB$SHF77FLAGS\fP and \fB$CPPFLAGS\fP construction variables -+are included on this command line. -+You only need to set \fB$SHF77PPCOM\fP if you need to use a specific -+C-preprocessor command line for Fortran 77 files. -+You should normally set the \fB$SHFORTRANPPCOM\fP variable, -+which specifies the default C-preprocessor command line -+for all Fortran versions. -+ -+.IP SHF77PPCOMSTR -+The string displayed when a Fortran 77 source file -+is compiled to a shared-library object file -+after first running the file through the C preprocessor. -+If this is not set, then \fB$SHF77PPCOM\fP or \fB$SHFORTRANPPCOM\fP -+(the command line) is displayed. -+ -+.IP SHF90 -+The Fortran 90 compiler used for generating shared-library objects. -+You should normally set the \fB$SHFORTRAN\fP variable, -+which specifies the default Fortran compiler -+for all Fortran versions. -+You only need to set \fB$SHF90\fP if you need to use a specific compiler -+or compiler version for Fortran 90 files. -+ -+.IP SHF90COM -+The command line used to compile a Fortran 90 source file -+to a shared-library object file. -+You only need to set \fB$SHF90COM\fP if you need to use a specific -+command line for Fortran 90 files. -+You should normally set the \fB$SHFORTRANCOM\fP variable, -+which specifies the default command line -+for all Fortran versions. -+ -+.IP SHF90COMSTR -+The string displayed when a Fortran 90 source file -+is compiled to a shared-library object file. -+If this is not set, then \fB$SHF90COM\fP or \fB$SHFORTRANCOM\fP -+(the command line) is displayed. -+ -+.IP SHF90FLAGS -+Options that are passed to the Fortran 90 compiler -+to generated shared-library objects. -+You only need to set \fB$SHF90FLAGS\fP if you need to define specific -+user options for Fortran 90 files. -+You should normally set the \fB$SHFORTRANFLAGS\fP variable, -+which specifies the user-specified options -+passed to the default Fortran compiler -+for all Fortran versions. -+ -+.IP SHF90PPCOM -+The command line used to compile a Fortran 90 source file to a -+shared-library object file -+after first running the file through the C preprocessor. -+Any options specified in the \fB$SHF90FLAGS\fP and \fB$CPPFLAGS\fP construction variables -+are included on this command line. -+You only need to set \fB$SHF90PPCOM\fP if you need to use a specific -+C-preprocessor command line for Fortran 90 files. -+You should normally set the \fB$SHFORTRANPPCOM\fP variable, -+which specifies the default C-preprocessor command line -+for all Fortran versions. -+ -+.IP SHF90PPCOMSTR -+The string displayed when a Fortran 90 source file -+is compiled to a shared-library object file -+after first running the file through the C preprocessor. -+If this is not set, then \fB$SHF90PPCOM\fP or \fB$SHFORTRANPPCOM\fP -+(the command line) is displayed. -+ -+.IP SHF95 -+The Fortran 95 compiler used for generating shared-library objects. -+You should normally set the \fB$SHFORTRAN\fP variable, -+which specifies the default Fortran compiler -+for all Fortran versions. -+You only need to set \fB$SHF95\fP if you need to use a specific compiler -+or compiler version for Fortran 95 files. -+ -+.IP SHF95COM -+The command line used to compile a Fortran 95 source file -+to a shared-library object file. -+You only need to set \fB$SHF95COM\fP if you need to use a specific -+command line for Fortran 95 files. -+You should normally set the \fB$SHFORTRANCOM\fP variable, -+which specifies the default command line -+for all Fortran versions. -+ -+.IP SHF95COMSTR -+The string displayed when a Fortran 95 source file -+is compiled to a shared-library object file. -+If this is not set, then \fB$SHF95COM\fP or \fB$SHFORTRANCOM\fP -+(the command line) is displayed. -+ -+.IP SHF95FLAGS -+Options that are passed to the Fortran 95 compiler -+to generated shared-library objects. -+You only need to set \fB$SHF95FLAGS\fP if you need to define specific -+user options for Fortran 95 files. -+You should normally set the \fB$SHFORTRANFLAGS\fP variable, -+which specifies the user-specified options -+passed to the default Fortran compiler -+for all Fortran versions. -+ -+.IP SHF95PPCOM -+The command line used to compile a Fortran 95 source file to a -+shared-library object file -+after first running the file through the C preprocessor. -+Any options specified in the \fB$SHF95FLAGS\fP and \fB$CPPFLAGS\fP construction variables -+are included on this command line. -+You only need to set \fB$SHF95PPCOM\fP if you need to use a specific -+C-preprocessor command line for Fortran 95 files. -+You should normally set the \fB$SHFORTRANPPCOM\fP variable, -+which specifies the default C-preprocessor command line -+for all Fortran versions. -+ -+.IP SHF95PPCOMSTR -+The string displayed when a Fortran 95 source file -+is compiled to a shared-library object file -+after first running the file through the C preprocessor. -+If this is not set, then \fB$SHF95PPCOM\fP or \fB$SHFORTRANPPCOM\fP -+(the command line) is displayed. -+ -+.IP SHFORTRAN -+The default Fortran compiler used for generating shared-library objects. -+ -+.IP SHFORTRANCOM -+The command line used to compile a Fortran source file -+to a shared-library object file. -+ -+.IP SHFORTRANCOMSTR -+The string displayed when a Fortran source file -+is compiled to a shared-library object file. -+If this is not set, then \fB$SHFORTRANCOM\fP -+(the command line) is displayed. -+ -+.IP SHFORTRANFLAGS -+Options that are passed to the Fortran compiler -+to generate shared-library objects. -+ -+.IP SHFORTRANPPCOM -+The command line used to compile a Fortran source file to a -+shared-library object file -+after first running the file through the C preprocessor. -+Any options specified -+in the \fB$SHFORTRANFLAGS\fP and -+\fB$CPPFLAGS\fP construction variables -+are included on this command line. -+ -+.IP SHFORTRANPPCOMSTR -+The string displayed when a Fortran source file -+is compiled to a shared-library object file -+after first running the file through the C preprocessor. -+If this is not set, then \fB$SHFORTRANPPCOM\fP -+(the command line) is displayed. -+ -+.IP SHLIBEMITTER -+TODO -+ -+.IP SHLIBPREFIX -+The prefix used for shared library file names. -+ -+.IP SHLIBSUFFIX -+The suffix used for shared library file names. -+ -+.IP SHLIBVERSION -+When this construction variable is defined, a versioned shared library -+is created. This modifies the \fB$SHLINKFLAGS\fP as required, adds -+the version number to the library name, and creates the symlinks that -+are needed. \fB$SHLIBVERSION\fP needs to be of the form X.Y.Z, -+where X and Y are numbers, and Z is a number but can also contain -+letters to designate alpha, beta, or release candidate patch levels. -+ -+.IP SHLINK -+The linker for programs that use shared libraries. -+ -+.IP SHLINKCOM -+The command line used to link programs using shared libraries. -+ -+.IP SHLINKCOMSTR -+The string displayed when programs using shared libraries are linked. -+If this is not set, then \fB$SHLINKCOM\fP (the command line) is displayed. -+ -+.ES -+env = Environment(SHLINKCOMSTR = "Linking shared $TARGET") -+.EE -+ -+.IP SHLINKFLAGS -+General user options passed to the linker for programs using shared libraries. -+Note that this variable should -+.I not -+contain -+.B \-l -+(or similar) options for linking with the libraries listed in \fB$LIBS\fP, -+nor -+.B \-L -+(or similar) include search path options -+that scons generates automatically from \fB$LIBPATH\fP. -+See -+.B $_LIBFLAGS -+above, -+for the variable that expands to library-link options, -+and -+.B $_LIBDIRFLAGS -+above, -+for the variable that expands to library search path options. -+ -+.IP SHOBJPREFIX -+The prefix used for shared object file names. -+ -+.IP SHOBJSUFFIX -+The suffix used for shared object file names. -+ -+.IP SOURCE -+A reserved variable name -+that may not be set or used in a construction environment. -+(See "Variable Substitution," below.) -+ -+.IP SOURCE_URL -+The URL -+(web address) -+of the location from which the project was retrieved. -+This is used to fill in the -+.B Source: -+field in the controlling information for Ipkg and RPM packages. -+ -+.IP SOURCES -+A reserved variable name -+that may not be set or used in a construction environment. -+(See "Variable Substitution," below.) -+ -+.IP SPAWN -+A command interpreter function that will be called to execute command line -+strings. The function must expect the following arguments: -+ -+.ES -+def spawn(shell, escape, cmd, args, env): -+.EE -+.IP -+.I sh -+is a string naming the shell program to use. -+.I escape -+is a function that can be called to escape shell special characters in -+the command line. -+.I cmd -+is the path to the command to be executed. -+.I args -+is the arguments to the command. -+.I env -+is a dictionary of the environment variables -+in which the command should be executed. -+ -+.IP SUBST_DICT -+The dictionary used by the \fBSubstfile\fP() or \fBTextfile\fP() builders -+for substitution values. -+It can be anything acceptable to the dict() constructor, -+so in addition to a dictionary, -+lists of tuples are also acceptable. -+ -+.IP SUBSTFILEPREFIX -+The prefix used for \fBSubstfile\fP() file names, -+the null string by default. -+ -+.IP SUBSTFILESUFFIX -+The suffix used for \fBSubstfile\fP() file names, -+the null string by default. -+ -+.IP SUMMARY -+A short summary of what the project is about. -+This is used to fill in the -+.B Summary: -+field in the controlling information for Ipkg and RPM packages, -+and as the -+.B Description: -+field in MSI packages. -+ -+.IP SWIG -+The scripting language wrapper and interface generator. -+ -+.IP SWIGCFILESUFFIX -+The suffix that will be used for intermediate C -+source files generated by -+the scripting language wrapper and interface generator. -+The default value is -+.BR _wrap\fP\fB$CFILESUFFIX . -+By default, this value is used whenever the -+.B \-c++ -+option is -+.I not -+specified as part of the -+.B $SWIGFLAGS -+construction variable. -+ -+.IP SWIGCOM -+The command line used to call -+the scripting language wrapper and interface generator. -+ -+.IP SWIGCOMSTR -+The string displayed when calling -+the scripting language wrapper and interface generator. -+If this is not set, then \fB$SWIGCOM\fP (the command line) is displayed. -+ -+.IP SWIGCXXFILESUFFIX -+The suffix that will be used for intermediate C++ -+source files generated by -+the scripting language wrapper and interface generator. -+The default value is -+.BR _wrap\fP\fB$CFILESUFFIX . -+By default, this value is used whenever the -+.B \-c++ -+option is specified as part of the -+.B $SWIGFLAGS -+construction variable. -+ -+.IP SWIGDIRECTORSUFFIX -+The suffix that will be used for intermediate C++ header -+files generated by the scripting language wrapper and interface generator. -+These are only generated for C++ code when the SWIG 'directors' feature is -+turned on. -+The default value is -+.BR _wrap.h . -+ -+.IP SWIGFLAGS -+General options passed to -+the scripting language wrapper and interface generator. -+This is where you should set -+.BR \-python , -+.BR \-perl5 , -+.BR \-tcl , -+or whatever other options you want to specify to SWIG. -+If you set the -+.B \-c++ -+option in this variable, -+.B scons -+will, by default, -+generate a C++ intermediate source file -+with the extension that is specified as the -+.B $CXXFILESUFFIX -+variable. -+ -+.IP _SWIGINCFLAGS -+An automatically-generated construction variable -+containing the SWIG command-line options -+for specifying directories to be searched for included files. -+The value of \fB$_SWIGINCFLAGS\fP is created -+by appending \fB$SWIGINCPREFIX\fP and \fB$SWIGINCSUFFIX\fP -+to the beginning and end -+of each directory in \fB$SWIGPATH\fP. -+ -+.IP SWIGINCPREFIX -+The prefix used to specify an include directory on the SWIG command line. -+This will be appended to the beginning of each directory -+in the \fB$SWIGPATH\fP construction variable -+when the \fB$_SWIGINCFLAGS\fP variable is automatically generated. -+ -+.IP SWIGINCSUFFIX -+The suffix used to specify an include directory on the SWIG command line. -+This will be appended to the end of each directory -+in the \fB$SWIGPATH\fP construction variable -+when the \fB$_SWIGINCFLAGS\fP variable is automatically generated. -+ -+.IP SWIGOUTDIR -+Specifies the output directory in which -+the scripting language wrapper and interface generator -+should place generated language-specific files. -+This will be used by SCons to identify -+the files that will be generated by the &swig; call, -+and translated into the -+\fBswig -outdir\fP option on the command line. -+ -+.IP SWIGPATH -+The list of directories that the scripting language wrapper -+and interface generate will search for included files. -+The SWIG implicit dependency scanner will search these -+directories for include files. -+The default is to use the same path -+specified as \fB$CPPPATH\fP. -+ -+Don't explicitly put include directory -+arguments in SWIGFLAGS; -+the result will be non-portable -+and the directories will not be searched by the dependency scanner. -+Note: directory names in SWIGPATH will be looked-up relative to the SConscript -+directory when they are used in a command. -+To force -+.B scons -+to look-up a directory relative to the root of the source tree use #: -+ -+.ES -+env = Environment(SWIGPATH='#/include') -+.EE -+.IP -+The directory look-up can also be forced using the -+.BR Dir () -+function: -+ -+.ES -+include = Dir('include') -+env = Environment(SWIGPATH=include) -+.EE -+.IP -+The directory list will be added to command lines -+through the automatically-generated -+.B $_SWIGINCFLAGS -+construction variable, -+which is constructed by -+appending the values of the -+.BR $SWIGINCPREFIX and $SWIGINCSUFFIX -+construction variables -+to the beginning and end -+of each directory in \fB$SWIGPATH\fP. -+Any command lines you define that need -+the SWIGPATH directory list should -+include \fB$_SWIGINCFLAGS\fP: -+ -+.ES -+env = Environment(SWIGCOM="my_swig -o $TARGET $_SWIGINCFLAGS $SORUCES") -+.EE -+ -+.IP SWIGVERSION -+The version number of the SWIG tool. -+ -+.IP TAR -+The tar archiver. -+ -+.IP TARCOM -+The command line used to call the tar archiver. -+ -+.IP TARCOMSTR -+The string displayed when archiving files -+using the tar archiver. -+If this is not set, then \fB$TARCOM\fP (the command line) is displayed. -+ -+.ES -+env = Environment(TARCOMSTR = "Archiving $TARGET") -+.EE -+ -+.IP TARFLAGS -+General options passed to the tar archiver. -+ -+.IP TARGET -+A reserved variable name -+that may not be set or used in a construction environment. -+(See "Variable Substitution," below.) -+ -+.IP TARGET_ARCH -+Sets the target architecture for Visual Studio compiler (i.e. the arch -+of the binaries generated by the compiler). If not set, default to -+\fB$HOST_ARCH\fP, or, if that is unset, to the architecture of the -+running machine's OS (note that the python build or architecture has no -+effect). -+This variable must be passed as an argument to the Environment() -+constructor; setting it later has no effect. -+This is currently only used on Windows, but in the future it will be -+used on other OSes as well. -+ -+Valid values for Windows are -+.BR x86 , -+.B i386 -+(for 32 bits); -+.BR amd64 , -+.BR emt64 , -+.B x86_64 -+(for 64 bits); -+and \fBia64\fP (Itanium). -+For example, if you want to compile 64-bit binaries, you would set -+\fBTARGET_ARCH='x86_64'\fP in your SCons environment. -+ -+.IP TARGET_OS -+ The name of the target operating system for the compiled objects -+ created by this Environment. -+ This defaults to the value of HOST_OS, and the user can override it. -+ Currently only set for Win32. -+ -+.IP TARGETS -+A reserved variable name -+that may not be set or used in a construction environment. -+(See "Variable Substitution," below.) -+ -+.IP TARSUFFIX -+The suffix used for tar file names. -+ -+.IP TEMPFILEPREFIX -+The prefix for a temporary file used -+to execute lines longer than $MAXLINELENGTH. -+The default is '@'. -+This may be set for toolchains that use other values, -+such as '-@' for the diab compiler -+or '-via' for ARM toolchain. -+ -+.IP TEX -+The TeX formatter and typesetter. -+ -+.IP TEXCOM -+The command line used to call the TeX formatter and typesetter. -+ -+.IP TEXCOMSTR -+The string displayed when calling -+the TeX formatter and typesetter. -+If this is not set, then \fB$TEXCOM\fP (the command line) is displayed. -+ -+.ES -+env = Environment(TEXCOMSTR = "Building $TARGET from TeX input $SOURCES") -+.EE -+ -+.IP TEXFLAGS -+General options passed to the TeX formatter and typesetter. -+ -+.IP TEXINPUTS -+List of directories that the LaTeX program will search -+for include directories. -+The LaTeX implicit dependency scanner will search these -+directories for \\include and \\import files. -+ -+.IP TEXTFILEPREFIX -+The prefix used for \fBTextfile\fP() file names, -+the null string by default. -+ -+.IP TEXTFILESUFFIX -+The suffix used for \fBTextfile\fP() file names; -+\fB.txt\fP by default. -+ -+.IP TOOLS -+A list of the names of the Tool specifications -+that are part of this construction environment. -+ -+.IP UNCHANGED_SOURCES -+A reserved variable name -+that may not be set or used in a construction environment. -+(See "Variable Substitution," below.) -+ -+.IP UNCHANGED_TARGETS -+A reserved variable name -+that may not be set or used in a construction environment. -+(See "Variable Substitution," below.) -+ -+.IP VENDOR -+The person or organization who supply the packaged software. -+This is used to fill in the -+.B Vendor: -+field in the controlling information for RPM packages, -+and the -+.B Manufacturer: -+field in the controlling information for MSI packages. -+ -+.IP VERSION -+The version of the project, specified as a string. -+ -+.IP WIN32_INSERT_DEF -+A deprecated synonym for \fB$WINDOWS_INSERT_DEF\fP. -+ -+.IP WIN32DEFPREFIX -+A deprecated synonym for \fB$WINDOWSDEFPREFIX\fP. -+ -+.IP WIN32DEFSUFFIX -+A deprecated synonym for \fB$WINDOWSDEFSUFFIX\fP. -+ -+.IP WIN32EXPPREFIX -+A deprecated synonym for \fB$WINDOWSEXPSUFFIX\fP. -+ -+.IP WIN32EXPSUFFIX -+A deprecated synonym for \fB$WINDOWSEXPSUFFIX\fP. -+ -+.IP WINDOWS_EMBED_MANIFEST -+Set this variable to True or 1 to embed the compiler-generated manifest -+(normally \fB${TARGET}.manifest\fP) -+into all Windows exes and DLLs built with this environment, -+as a resource during their link step. -+This is done using \fB$MT\fP and \fB$MTEXECOM\fP and \fB$MTSHLIBCOM\fP. -+ -+.IP WINDOWS_INSERT_DEF -+When this is set to true, -+a library build of a Windows shared library -+(\fB.dll\fP file) -+will also build a corresponding \fB.def\fP file -+at the same time, -+if a \fB.def\fP file -+is not already listed as a build target. -+The default is 0 (do not build a \fB.def\fP file). -+ -+.IP WINDOWS_INSERT_MANIFEST -+When this is set to true, -+.B scons -+will be aware of the -+.B .manifest -+files generated by Microsoft Visua C/C++ 8. -+ -+.IP WINDOWSDEFPREFIX -+The prefix used for Windows \fB.def\fP file names. -+ -+.IP WINDOWSDEFSUFFIX -+The suffix used for Windows \fB.def\fP file names. -+ -+.IP WINDOWSEXPPREFIX -+The prefix used for Windows \fB.exp\fP file names. -+ -+.IP WINDOWSEXPSUFFIX -+The suffix used for Windows \fB.exp\fP file names. -+ -+.IP WINDOWSPROGMANIFESTPREFIX -+The prefix used for executable program \fB.manifest\fP files -+generated by Microsoft Visual C/C++. -+ -+.IP WINDOWSPROGMANIFESTSUFFIX -+The suffix used for executable program \fB.manifest\fP files -+generated by Microsoft Visual C/C++. -+ -+.IP WINDOWSSHLIBMANIFESTPREFIX -+The prefix used for shared library \fB.manifest\fP files -+generated by Microsoft Visual C/C++. -+ -+.IP WINDOWSSHLIBMANIFESTSUFFIX -+The suffix used for shared library \fB.manifest\fP files -+generated by Microsoft Visual C/C++. -+ -+.IP X_IPK_DEPENDS -+This is used to fill in the -+.B Depends: -+field in the controlling information for Ipkg packages. -+ -+.IP X_IPK_DESCRIPTION -+This is used to fill in the -+.B Description: -+field in the controlling information for Ipkg packages. -+The default value is -+.B "$SUMMARY\\n$DESCRIPTION" -+.IP X_IPK_MAINTAINER -+This is used to fill in the -+.B Maintainer: -+field in the controlling information for Ipkg packages. -+ -+.IP X_IPK_PRIORITY -+This is used to fill in the -+.B Priority: -+field in the controlling information for Ipkg packages. -+ -+.IP X_IPK_SECTION -+This is used to fill in the -+.B Section: -+field in the controlling information for Ipkg packages. -+ -+.IP X_MSI_LANGUAGE -+This is used to fill in the -+.B Language: -+attribute in the controlling information for MSI packages. -+ -+.IP X_MSI_LICENSE_TEXT -+The text of the software license in RTF format. -+Carriage return characters will be -+replaced with the RTF equivalent \\\\par. -+ -+.IP X_MSI_UPGRADE_CODE -+TODO -+ -+.IP X_RPM_AUTOREQPROV -+This is used to fill in the -+.B AutoReqProv: -+field in the RPM -+\fB.spec\fP file. -+ -+.IP X_RPM_BUILD -+internal, but overridable -+ -+.IP X_RPM_BUILDREQUIRES -+This is used to fill in the -+.B BuildRequires: -+field in the RPM -+\fB.spec\fP file. -+ -+.IP X_RPM_BUILDROOT -+internal, but overridable -+ -+.IP X_RPM_CLEAN -+internal, but overridable -+ -+.IP X_RPM_CONFLICTS -+This is used to fill in the -+.B Conflicts: -+field in the RPM -+\fB.spec\fP file. -+ -+.IP X_RPM_DEFATTR -+This value is used as the default attributes -+for the files in the RPM package. -+The default value is -+.BR (-,root,root) . -+ -+.IP X_RPM_DISTRIBUTION -+This is used to fill in the -+.B Distribution: -+field in the RPM -+\fB.spec\fP file. -+ -+.IP X_RPM_EPOCH -+This is used to fill in the -+.B Epoch: -+field in the controlling information for RPM packages. -+ -+.IP X_RPM_EXCLUDEARCH -+This is used to fill in the -+.B ExcludeArch: -+field in the RPM -+\fB.spec\fP file. -+ -+.IP X_RPM_EXLUSIVEARCH -+This is used to fill in the -+.B ExclusiveArch: -+field in the RPM -+\fB.spec\fP file. -+ -+.IP X_RPM_GROUP -+This is used to fill in the -+.B Group: -+field in the RPM -+\fB.spec\fP file. -+ -+.IP X_RPM_GROUP_lang -+This is used to fill in the -+.B Group(lang): -+field in the RPM -+\fB.spec\fP file. -+Note that -+.I lang -+is not literal -+and should be replaced by -+the appropriate language code. -+ -+.IP X_RPM_ICON -+This is used to fill in the -+.B Icon: -+field in the RPM -+\fB.spec\fP file. -+ -+.IP X_RPM_INSTALL -+internal, but overridable -+ -+.IP X_RPM_PACKAGER -+This is used to fill in the -+.B Packager: -+field in the RPM -+\fB.spec\fP file. -+ -+.IP X_RPM_POSTINSTALL -+This is used to fill in the -+.B %post: -+section in the RPM -+\fB.spec\fP file. -+ -+.IP X_RPM_POSTUNINSTALL -+This is used to fill in the -+.B %postun: -+section in the RPM -+\fB.spec\fP file. -+ -+.IP X_RPM_PREFIX -+This is used to fill in the -+.B Prefix: -+field in the RPM -+\fB.spec\fP file. -+ -+.IP X_RPM_PREINSTALL -+This is used to fill in the -+.B %pre: -+section in the RPM -+\fB.spec\fP file. -+ -+.IP X_RPM_PREP -+internal, but overridable -+ -+.IP X_RPM_PREUNINSTALL -+This is used to fill in the -+.B %preun: -+section in the RPM -+\fB.spec\fP file. -+ -+.IP X_RPM_PROVIDES -+This is used to fill in the -+.B Provides: -+field in the RPM -+\fB.spec\fP file. -+ -+.IP X_RPM_REQUIRES -+This is used to fill in the -+.B Requires: -+field in the RPM -+\fB.spec\fP file. -+ -+.IP X_RPM_SERIAL -+This is used to fill in the -+.B Serial: -+field in the RPM -+\fB.spec\fP file. -+ -+.IP X_RPM_URL -+This is used to fill in the -+.B Url: -+field in the RPM -+\fB.spec\fP file. -+ -+.IP XGETTEXT -+Path to \fBxgettext(1)\fP program (found via -+.BR Detect() ). -+See &t-link-xgettext; tool and \fBPOTUpdate\fP() builder. -+ -+.IP XGETTEXTCOM -+Complete xgettext command line. -+See &t-link-xgettext; tool and \fBPOTUpdate\fP() builder. -+ -+.IP XGETTEXTCOMSTR -+A string that is shown when \fBxgettext(1)\fP command is invoked -+(default: \fB''\fP, which means "print \fB$XGETTEXTCOM\fP"). -+See &t-link-xgettext; tool and \fBPOTUpdate\fP() builder. -+ -+.IP _XGETTEXTDOMAIN -+Internal "macro". Generates \fBxgettext\fP domain name -+form source and target (default: \fB'${TARGET.filebase}'\fP). -+ -+.IP XGETTEXTFLAGS -+Additional flags to \fBxgettext(1)\fP. -+See &t-link-xgettext; tool and \fBPOTUpdate\fP() builder. -+ -+.IP XGETTEXTFROM -+Name of file containing list of \fBxgettext(1)\fP's source -+files. Autotools' users know this as \fBPOTFILES.in\fP so they -+will in most cases set \fBXGETTEXTFROM="POTFILES.in"\fP here. -+The \fB$XGETTEXTFROM\fP files have same syntax and semantics as the well known -+GNU \fBPOTFILES.in\fP. -+See &t-link-xgettext; tool and \fBPOTUpdate\fP() builder. -+ -+.IP _XGETTEXTFROMFLAGS -+Internal "macro". Genrates list of \fB\-D\fP flags -+from the \fB$XGETTEXTPATH\fP list. -+ -+.IP XGETTEXTFROMPREFIX -+This flag is used to add single \fB$XGETTEXTFROM\fP file to -+\fBxgettext(1)\fP's commandline (default: -+.BR '-f' ). -+ -+.IP XGETTEXTFROMSUFFIX -+(default: \fB''\fP) -+ -+.IP XGETTEXTPATH -+List of directories, there \fBxgettext(1)\fP will look for -+source files (default: \fB[]\fP). -+This variable works only together with \fB$XGETTEXTFROM\fP -+ -+See also &t-link-xgettext; tool and \fBPOTUpdate\fP() builder. -+ -+.IP _XGETTEXTPATHFLAGS -+Internal "macro". Generates list of \fB\-f\fP flags -+from \fB$XGETTEXTFROM\fP. -+ -+.IP XGETTEXTPATHPREFIX -+This flag is used to add single search path to -+\fBxgettext(1)\fP's commandline (default: -+.BR '-D' ). -+ -+.IP XGETTEXTPATHSUFFIX -+(default: \fB''\fP) -+ -+.IP YACC -+The parser generator. -+ -+.IP YACCCOM -+The command line used to call the parser generator -+to generate a source file. -+ -+.IP YACCCOMSTR -+The string displayed when generating a source file -+using the parser generator. -+If this is not set, then \fB$YACCCOM\fP (the command line) is displayed. -+ -+.ES -+env = Environment(YACCCOMSTR = "Yacc'ing $TARGET from $SOURCES") -+.EE -+ -+.IP YACCFLAGS -+General options passed to the parser generator. -+If \fB$YACCFLAGS\fP contains a \fB\-d\fP option, -+SCons assumes that the call will also create a .h file -+(if the yacc source file ends in a .y suffix) -+or a .hpp file -+(if the yacc source file ends in a .yy suffix) -+ -+.IP YACCHFILESUFFIX -+The suffix of the C -+header file generated by the parser generator -+when the -+.B \-d -+option is used. -+Note that setting this variable does not cause -+the parser generator to generate a header -+file with the specified suffix, -+it exists to allow you to specify -+what suffix the parser generator will use of its own accord. -+The default value is -+.BR .h . -+ -+.IP YACCHXXFILESUFFIX -+The suffix of the C++ -+header file generated by the parser generator -+when the -+.B \-d -+option is used. -+Note that setting this variable does not cause -+the parser generator to generate a header -+file with the specified suffix, -+it exists to allow you to specify -+what suffix the parser generator will use of its own accord. -+The default value is -+.BR .hpp , -+except on Mac OS X, -+where the default is -+.BR ${TARGET.suffix}.h . -+because the default &bison; parser generator just -+appends \fB.h\fP -+to the name of the generated C++ file. -+ -+.IP YACCVCGFILESUFFIX -+The suffix of the file -+containing the VCG grammar automaton definition -+when the -+.B \-\-graph= -+option is used. -+Note that setting this variable does not cause -+the parser generator to generate a VCG -+file with the specified suffix, -+it exists to allow you to specify -+what suffix the parser generator will use of its own accord. -+The default value is -+.BR .vcg . -+ -+.IP ZIP -+The zip compression and file packaging utility. -+ -+.IP ZIPCOM -+The command line used to call the zip utility, -+or the internal Python function used to create a -+zip archive. -+ -+.IP ZIPCOMPRESSION -+The -+.I compression -+flag -+from the Python -+.B zipfile -+module used by the internal Python function -+to control whether the zip archive -+is compressed or not. -+The default value is -+.BR zipfile.ZIP_DEFLATED , -+which creates a compressed zip archive. -+This value has no effect if the -+.B zipfile -+module is unavailable. -+ -+.IP ZIPCOMSTR -+The string displayed when archiving files -+using the zip utility. -+If this is not set, then \fB$ZIPCOM\fP -+(the command line or internal Python function) is displayed. -+ -+.ES -+env = Environment(ZIPCOMSTR = "Zipping $TARGET") -+.EE -+ -+.IP ZIPFLAGS -+General options passed to the zip utility. -+ -+.IP ZIPSUFFIX -+The suffix used for zip file names. -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+'\" END GENERATED CONSTRUCTION VARIABLE DESCRIPTIONS -+'\" -+'\" The descriptions above of the various SCons construction variables -+'\" are generated from the .xml files that live next to the various -+'\" Python modules in the build enginer library. If you're reading -+'\" this [gnt]roff file with an eye towards patching this man page, -+'\" you can still submit a diff against this text, but it will have to -+'\" be translated to a diff against the underlying .xml file before the -+'\" patch is actually accepted. If you do that yourself, it will make -+'\" it easier to integrate the patch. -+'\" -+'\" END GENERATED CONSTRUCTION VARIABLE DESCRIPTIONS -+'\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -+ -+.LP -+Construction variables can be retrieved and set using the -+.B Dictionary -+method of the construction environment: -+ -+.ES -+dict = env.Dictionary() -+dict["CC"] = "cc" -+.EE -+ -+or using the [] operator: -+ -+.ES -+env["CC"] = "cc" -+.EE -+ -+Construction variables can also be passed to the construction environment -+constructor: -+ -+.ES -+env = Environment(CC="cc") -+.EE -+ -+or when copying a construction environment using the -+.B Clone -+method: -+ -+.ES -+env2 = env.Clone(CC="cl.exe") -+.EE -+ -+.SS Configure Contexts -+ -+.B scons -+supports -+.I configure contexts, -+an integrated mechanism similar to the -+various AC_CHECK macros in GNU autoconf -+for testing for the existence of C header -+files, libraries, etc. -+In contrast to autoconf, -+.B scons -+does not maintain an explicit cache of the tested values, -+but uses its normal dependency tracking to keep the checked values -+up to date. However, users may override this behaviour with the -+.B --config -+command line option. -+ -+The following methods can be used to perform checks: -+ -+.TP -+.RI Configure( env ", [" custom_tests ", " conf_dir ", " log_file ", " config_h ", " clean ", " help]) -+.TP -+.RI env.Configure([ custom_tests ", " conf_dir ", " log_file ", " config_h ", " clean ", " help]) -+This creates a configure context, which can be used to perform checks. -+.I env -+specifies the environment for building the tests. -+This environment may be modified when performing checks. -+.I custom_tests -+is a dictionary containing custom tests. -+See also the section about custom tests below. -+By default, no custom tests are added to the configure context. -+.I conf_dir -+specifies a directory where the test cases are built. -+Note that this directory is not used for building -+normal targets. -+The default value is the directory -+#/.sconf_temp. -+.I log_file -+specifies a file which collects the output from commands -+that are executed to check for the existence of header files, libraries, etc. -+The default is the file #/config.log. -+If you are using the -+.BR VariantDir () -+method, -+you may want to specify a subdirectory under your variant directory. -+.I config_h -+specifies a C header file where the results of tests -+will be written, e.g. #define HAVE_STDIO_H, #define HAVE_LIBM, etc. -+The default is to not write a -+.B config.h -+file. -+You can specify the same -+.B config.h -+file in multiple calls to Configure, -+in which case -+.B scons -+will concatenate all results in the specified file. -+Note that SCons -+uses its normal dependency checking -+to decide if it's necessary to rebuild -+the specified -+.I config_h -+file. -+This means that the file is not necessarily re-built each -+time scons is run, -+but is only rebuilt if its contents will have changed -+and some target that depends on the -+.I config_h -+file is being built. -+ -+The optional -+.B clean -+and -+.B help -+arguments can be used to suppress execution of the configuration -+tests when the -+.B -c/--clean -+or -+.B -H/-h/--help -+options are used, respectively. -+The default behavior is always to execute -+configure context tests, -+since the results of the tests may -+affect the list of targets to be cleaned -+or the help text. -+If the configure tests do not affect these, -+then you may add the -+.B clean=False -+or -+.B help=False -+arguments -+(or both) -+to avoid unnecessary test execution. -+ -+.EE -+A created -+.B Configure -+instance has the following associated methods: -+ -+.TP -+.RI SConf.Finish( context ) -+.TP -+.IR sconf .Finish() -+This method should be called after configuration is done. -+It returns the environment as modified -+by the configuration checks performed. -+After this method is called, no further checks can be performed -+with this configuration context. -+However, you can create a new -+.RI Configure -+context to perform additional checks. -+Only one context should be active at a time. -+ -+The following Checks are predefined. -+(This list will likely grow larger as time -+goes by and developers contribute new useful tests.) -+ -+.TP -+.RI SConf.CheckHeader( context ", " header ", [" include_quotes ", " language ]) -+.TP -+.IR sconf .CheckHeader( header ", [" include_quotes ", " language ]) -+Checks if -+.I header -+is usable in the specified language. -+.I header -+may be a list, -+in which case the last item in the list -+is the header file to be checked, -+and the previous list items are -+header files whose -+.B #include -+lines should precede the -+header line being checked for. -+The optional argument -+.I include_quotes -+must be -+a two character string, where the first character denotes the opening -+quote and the second character denotes the closing quote. -+By default, both characters are " (double quote). -+The optional argument -+.I language -+should be either -+.B C -+or -+.B C++ -+and selects the compiler to be used for the check. -+Returns 1 on success and 0 on failure. -+ -+.TP -+.RI SConf.CheckCHeader( context ", " header ", [" include_quotes ]) -+.TP -+.IR sconf .CheckCHeader( header ", [" include_quotes ]) -+This is a wrapper around -+.B SConf.CheckHeader -+which checks if -+.I header -+is usable in the C language. -+.I header -+may be a list, -+in which case the last item in the list -+is the header file to be checked, -+and the previous list items are -+header files whose -+.B #include -+lines should precede the -+header line being checked for. -+The optional argument -+.I include_quotes -+must be -+a two character string, where the first character denotes the opening -+quote and the second character denotes the closing quote (both default -+to \N'34'). -+Returns 1 on success and 0 on failure. -+ -+.TP -+.RI SConf.CheckCXXHeader( context ", " header ", [" include_quotes ]) -+.TP -+.IR sconf .CheckCXXHeader( header ", [" include_quotes ]) -+This is a wrapper around -+.B SConf.CheckHeader -+which checks if -+.I header -+is usable in the C++ language. -+.I header -+may be a list, -+in which case the last item in the list -+is the header file to be checked, -+and the previous list items are -+header files whose -+.B #include -+lines should precede the -+header line being checked for. -+The optional argument -+.I include_quotes -+must be -+a two character string, where the first character denotes the opening -+quote and the second character denotes the closing quote (both default -+to \N'34'). -+Returns 1 on success and 0 on failure. -+ -+.TP -+.RI SConf.CheckFunc( context, ", " function_name ", [" header ", " language ]) -+.TP -+.IR sconf .CheckFunc( function_name ", [" header ", " language ]) -+Checks if the specified -+C or C++ function is available. -+.I function_name -+is the name of the function to check for. -+The optional -+.I header -+argument is a string -+that will be -+placed at the top -+of the test file -+that will be compiled -+to check if the function exists; -+the default is: -+.ES -+#ifdef __cplusplus -+extern "C" -+#endif -+char function_name(); -+.EE -+The optional -+.I language -+argument should be -+.B C -+or -+.B C++ -+and selects the compiler to be used for the check; -+the default is "C". -+ -+.TP -+.RI SConf.CheckLib( context ", [" library ", " symbol ", " header ", " language ", " autoadd=1 ]) -+.TP -+.IR sconf .CheckLib([ library ", " symbol ", " header ", " language ", " autoadd=1 ]) -+Checks if -+.I library -+provides -+.IR symbol . -+If the value of -+.I autoadd -+is 1 and the library provides the specified -+.IR symbol , -+appends the library to the LIBS construction environment variable. -+.I library -+may also be None (the default), -+in which case -+.I symbol -+is checked with the current LIBS variable, -+or a list of library names, -+in which case each library in the list -+will be checked for -+.IR symbol . -+If -+.I symbol -+is not set or is -+.BR None , -+then -+.BR SConf.CheckLib () -+just checks if -+you can link against the specified -+.IR library . -+The optional -+.I language -+argument should be -+.B C -+or -+.B C++ -+and selects the compiler to be used for the check; -+the default is "C". -+The default value for -+.I autoadd -+is 1. -+This method returns 1 on success and 0 on error. -+ -+.TP -+.RI SConf.CheckLibWithHeader( context ", " library ", " header ", " language ", [" call ", " autoadd ]) -+.TP -+.IR sconf .CheckLibWithHeader( library ", " header ", " language ", [" call ", " autoadd ]) -+ -+In contrast to the -+.RI SConf.CheckLib -+call, this call provides a more sophisticated way to check against libraries. -+Again, -+.I library -+specifies the library or a list of libraries to check. -+.I header -+specifies a header to check for. -+.I header -+may be a list, -+in which case the last item in the list -+is the header file to be checked, -+and the previous list items are -+header files whose -+.B #include -+lines should precede the -+header line being checked for. -+.I language -+may be one of 'C','c','CXX','cxx','C++' and 'c++'. -+.I call -+can be any valid expression (with a trailing ';'). -+If -+.I call -+is not set, -+the default simply checks that you -+can link against the specified -+.IR library . -+.I autoadd -+specifies whether to add the library to the environment (only if the check -+succeeds). This method returns 1 on success and 0 on error. -+ -+.TP -+.RI SConf.CheckType( context ", " type_name ", [" includes ", " language ]) -+.TP -+.IR sconf .CheckType( type_name ", [" includes ", " language ]) -+Checks for the existence of a type defined by -+.BR typedef . -+.I type_name -+specifies the typedef name to check for. -+.I includes -+is a string containing one or more -+.B #include -+lines that will be inserted into the program -+that will be run to test for the existence of the type. -+The optional -+.I language -+argument should be -+.B C -+or -+.B C++ -+and selects the compiler to be used for the check; -+the default is "C". -+Example: -+.ES -+sconf.CheckType('foo_type', '#include "my_types.h"', 'C++') -+.EE -+ -+.TP -+.RI Configure.CheckCC( self ) -+Checks whether the C compiler (as defined by the CC construction variable) works -+by trying to compile a small source file. -+ -+By default, SCons only detects if there is a program with the correct name, not -+if it is a functioning compiler. -+ -+This uses the exact same command than the one used by the object builder for C -+source file, so it can be used to detect if a particular compiler flag works or -+not. -+ -+.TP -+.RI Configure.CheckCXX( self ) -+Checks whether the C++ compiler (as defined by the CXX construction variable) -+works by trying to compile a small source file. By default, SCons only detects -+if there is a program with the correct name, not if it is a functioning compiler. -+ -+This uses the exact same command than the one used by the object builder for -+CXX source files, so it can be used to detect if a particular compiler flag -+works or not. -+ -+.TP -+.RI Configure.CheckSHCC( self ) -+Checks whether the C compiler (as defined by the SHCC construction variable) works -+by trying to compile a small source file. By default, SCons only detects if -+there is a program with the correct name, not if it is a functioning compiler. -+ -+This uses the exact same command than the one used by the object builder for C -+source file, so it can be used to detect if a particular compiler flag works or -+not. This does not check whether the object code can be used to build a shared -+library, only that the compilation (not link) succeeds. -+ -+.TP -+.RI Configure.CheckSHCXX( self ) -+Checks whether the C++ compiler (as defined by the SHCXX construction variable) -+works by trying to compile a small source file. By default, SCons only detects -+if there is a program with the correct name, not if it is a functioning compiler. -+ -+This uses the exact same command than the one used by the object builder for -+CXX source files, so it can be used to detect if a particular compiler flag -+works or not. This does not check whether the object code can be used to build -+a shared library, only that the compilation (not link) succeeds. -+ -+.EE -+Example of a typical Configure usage: -+ -+.ES -+env = Environment() -+conf = Configure( env ) -+if not conf.CheckCHeader( 'math.h' ): -+ print 'We really need math.h!' -+ Exit(1) -+if conf.CheckLibWithHeader( 'qt', 'qapp.h', 'c++', -+ 'QApplication qapp(0,0);' ): -+ # do stuff for qt - usage, e.g. -+ conf.env.Append( CPPFLAGS = '-DWITH_QT' ) -+env = conf.Finish() -+.EE -+ -+.TP -+.RI SConf.CheckTypeSize( context ", " type_name ", [" header ", " language ", " expect ]) -+.TP -+.IR sconf .CheckTypeSize( type_name ", [" header ", " language ", " expect ]) -+Checks for the size of a type defined by -+.BR typedef . -+.I type_name -+specifies the typedef name to check for. -+The optional -+.I header -+argument is a string -+that will be -+placed at the top -+of the test file -+that will be compiled -+to check if the function exists; -+the default is empty. -+The optional -+.I language -+argument should be -+.B C -+or -+.B C++ -+and selects the compiler to be used for the check; -+the default is "C". -+The optional -+.I expect -+argument should be an integer. -+If this argument is used, -+the function will only check whether the type -+given in type_name has the expected size (in bytes). -+For example, -+.B "CheckTypeSize('short', expect = 2)" -+will return success only if short is two bytes. -+ -+.ES -+.EE -+ -+.TP -+.RI SConf.CheckDeclaration( context ", " symbol ", [" includes ", " language ]) -+.TP -+.IR sconf .CheckDeclaration( symbol ", [" includes ", " language ]) -+Checks if the specified -+.I symbol -+is declared. -+.I includes -+is a string containing one or more -+.B #include -+lines that will be inserted into the program -+that will be run to test for the existence of the type. -+The optional -+.I language -+argument should be -+.B C -+or -+.B C++ -+and selects the compiler to be used for the check; -+the default is "C". -+ -+.TP -+.RI SConf.Define( context ", " symbol ", [" value ", " comment ]) -+.TP -+.IR sconf .Define( symbol ", [" value ", " comment ]) -+This function does not check for anything, but defines a -+preprocessor symbol that will be added to the configuration header file. -+It is the equivalent of AC_DEFINE, -+and defines the symbol -+.I name -+with the optional -+.B value -+and the optional comment -+.BR comment . -+ -+.IP -+Examples: -+ -+.ES -+env = Environment() -+conf = Configure( env ) -+ -+# Puts the following line in the config header file: -+# #define A_SYMBOL -+conf.Define('A_SYMBOL') -+ -+# Puts the following line in the config header file: -+# #define A_SYMBOL 1 -+conf.Define('A_SYMBOL', 1) -+.EE -+ -+.IP -+Be careful about quoting string values, though: -+ -+.ES -+env = Environment() -+conf = Configure( env ) -+ -+# Puts the following line in the config header file: -+# #define A_SYMBOL YA -+conf.Define('A_SYMBOL', "YA") -+ -+# Puts the following line in the config header file: -+# #define A_SYMBOL "YA" -+conf.Define('A_SYMBOL', '"YA"') -+.EE -+ -+.IP -+For comment: -+ -+.ES -+env = Environment() -+conf = Configure( env ) -+ -+# Puts the following lines in the config header file: -+# /* Set to 1 if you have a symbol */ -+# #define A_SYMBOL 1 -+conf.Define('A_SYMBOL', 1, 'Set to 1 if you have a symbol') -+.EE -+ -+.EE -+You can define your own custom checks. -+in addition to the predefined checks. -+These are passed in a dictionary to the Configure function. -+This dictionary maps the names of the checks -+to user defined Python callables -+(either Python functions or class instances implementing the -+.I __call__ -+method). -+The first argument of the call is always a -+.I CheckContext -+instance followed by the arguments, -+which must be supplied by the user of the check. -+These CheckContext instances define the following methods: -+ -+.TP -+.RI CheckContext.Message( self ", " text ) -+ -+Usually called before the check is started. -+.I text -+will be displayed to the user, e.g. 'Checking for library X...' -+ -+.TP -+.RI CheckContext.Result( self, ", " res ) -+ -+Usually called after the check is done. -+.I res -+can be either an integer or a string. In the former case, 'yes' (res != 0) -+or 'no' (res == 0) is displayed to the user, in the latter case the -+given string is displayed. -+ -+.TP -+.RI CheckContext.TryCompile( self ", " text ", " extension ) -+Checks if a file with the specified -+.I extension -+(e.g. '.c') containing -+.I text -+can be compiled using the environment's -+.B Object -+builder. Returns 1 on success and 0 on failure. -+ -+.TP -+.RI CheckContext.TryLink( self ", " text ", " extension ) -+Checks, if a file with the specified -+.I extension -+(e.g. '.c') containing -+.I text -+can be compiled using the environment's -+.B Program -+builder. Returns 1 on success and 0 on failure. -+ -+.TP -+.RI CheckContext.TryRun( self ", " text ", " extension ) -+Checks, if a file with the specified -+.I extension -+(e.g. '.c') containing -+.I text -+can be compiled using the environment's -+.B Program -+builder. On success, the program is run. If the program -+executes successfully -+(that is, its return status is 0), -+a tuple -+.I (1, outputStr) -+is returned, where -+.I outputStr -+is the standard output of the -+program. -+If the program fails execution -+(its return status is non-zero), -+then (0, '') is returned. -+ -+.TP -+.RI CheckContext.TryAction( self ", " action ", [" text ", " extension ]) -+Checks if the specified -+.I action -+with an optional source file (contents -+.I text -+, extension -+.I extension -+= '' -+) can be executed. -+.I action -+may be anything which can be converted to a -+.B scons -+.RI Action. -+On success, -+.I (1, outputStr) -+is returned, where -+.I outputStr -+is the content of the target file. -+On failure -+.I (0, '') -+is returned. -+ -+.TP -+.RI CheckContext.TryBuild( self ", " builder ", [" text ", " extension ]) -+Low level implementation for testing specific builds; -+the methods above are based on this method. -+Given the Builder instance -+.I builder -+and the optional -+.I text -+of a source file with optional -+.IR extension , -+this method returns 1 on success and 0 on failure. In addition, -+.I self.lastTarget -+is set to the build target node, if the build was successful. -+ -+.EE -+Example for implementing and using custom tests: -+ -+.ES -+def CheckQt(context, qtdir): -+ context.Message( 'Checking for qt ...' ) -+ lastLIBS = context.env['LIBS'] -+ lastLIBPATH = context.env['LIBPATH'] -+ lastCPPPATH= context.env['CPPPATH'] -+ context.env.Append(LIBS = 'qt', LIBPATH = qtdir + '/lib', CPPPATH = qtdir + '/include' ) -+ ret = context.TryLink(""" -+#include -+int main(int argc, char **argv) { -+ QApplication qapp(argc, argv); -+ return 0; -+} -+""") -+ if not ret: -+ context.env.Replace(LIBS = lastLIBS, LIBPATH=lastLIBPATH, CPPPATH=lastCPPPATH) -+ context.Result( ret ) -+ return ret -+ -+env = Environment() -+conf = Configure( env, custom_tests = { 'CheckQt' : CheckQt } ) -+if not conf.CheckQt('/usr/lib/qt'): -+ print 'We really need qt!' -+ Exit(1) -+env = conf.Finish() -+.EE -+ -+.SS Command-Line Construction Variables -+ -+Often when building software, -+some variables must be specified at build time. -+For example, libraries needed for the build may be in non-standard -+locations, or site-specific compiler options may need to be passed to the -+compiler. -+.B scons -+provides a -+.B Variables -+object to support overriding construction variables -+on the command line: -+.ES -+$ scons VARIABLE=foo -+.EE -+The variable values can also be specified in a text-based SConscript file. -+To create a Variables object, call the Variables() function: -+ -+.TP -+.RI Variables([ files "], [" args ]) -+This creates a Variables object that will read construction variables from -+the file or list of filenames specified in -+.IR files . -+If no files are specified, -+or the -+.I files -+argument is -+.BR None , -+then no files will be read. -+The optional argument -+.I args -+is a dictionary of -+values that will override anything read from the specified files; -+it is primarily intended to be passed the -+.B ARGUMENTS -+dictionary that holds variables -+specified on the command line. -+Example: -+ -+.ES -+vars = Variables('custom.py') -+vars = Variables('overrides.py', ARGUMENTS) -+vars = Variables(None, {FOO:'expansion', BAR:7}) -+.EE -+ -+Variables objects have the following methods: -+ -+.TP -+.RI Add( key ", [" help ", " default ", " validator ", " converter ]) -+This adds a customizable construction variable to the Variables object. -+.I key -+is the name of the variable. -+.I help -+is the help text for the variable. -+.I default -+is the default value of the variable; -+if the default value is -+.B None -+and there is no explicit value specified, -+the construction variable will -+.I not -+be added to the construction environment. -+.I validator -+is called to validate the value of the variable, and should take three -+arguments: key, value, and environment. -+The recommended way to handle an invalid value is -+to raise an exception (see example below). -+.I converter -+is called to convert the value before putting it in the environment, and -+should take either a value, or the value and environment, as parameters. -+The -+.I converter -+must return a value, -+which will be converted into a string -+before being validated by the -+.I validator -+(if any) -+and then added to the environment. -+ -+Examples: -+ -+.ES -+vars.Add('CC', 'The C compiler') -+ -+def validate_color(key, val, env): -+ if not val in ['red', 'blue', 'yellow']: -+ raise Exception("Invalid color value '%s'" % val) -+vars.Add('COLOR', validator=valid_color) -+.EE -+ -+.TP -+.RI AddVariables( list ) -+A wrapper script that adds -+multiple customizable construction variables -+to a Variables object. -+.I list -+is a list of tuple or list objects -+that contain the arguments -+for an individual call to the -+.B Add -+method. -+ -+.ES -+opt.AddVariables( -+ ('debug', '', 0), -+ ('CC', 'The C compiler'), -+ ('VALIDATE', 'An option for testing validation', -+ 'notset', validator, None), -+ ) -+.EE -+ -+.TP -+.RI Update( env ", [" args ]) -+This updates a construction environment -+.I env -+with the customized construction variables. -+Any specified variables that are -+.I not -+configured for the Variables object -+will be saved and may be -+retrieved with the -+.BR UnknownVariables () -+method, below. -+ -+Normally this method is not called directly, -+but is called indirectly by passing the Variables object to -+the Environment() function: -+ -+.ES -+env = Environment(variables=vars) -+.EE -+ -+.IP -+The text file(s) that were specified -+when the Variables object was created -+are executed as Python scripts, -+and the values of (global) Python variables set in the file -+are added to the construction environment. -+ -+Example: -+ -+.ES -+CC = 'my_cc' -+.EE -+ -+.TP -+.RI UnknownVariables( ) -+Returns a dictionary containing any -+variables that were specified -+either in the files or the dictionary -+with which the Variables object was initialized, -+but for which the Variables object was -+not configured. -+ -+.ES -+env = Environment(variables=vars) -+for key, value in vars.UnknownVariables(): -+ print "unknown variable: %s=%s" % (key, value) -+.EE -+ -+.TP -+.RI Save( filename ", " env ) -+This saves the currently set variables into a script file named -+.I filename -+that can be used on the next invocation to automatically load the current -+settings. This method combined with the Variables method can be used to -+support caching of variables between runs. -+ -+.ES -+env = Environment() -+vars = Variables(['variables.cache', 'custom.py']) -+vars.Add(...) -+vars.Update(env) -+vars.Save('variables.cache', env) -+.EE -+ -+.TP -+.RI GenerateHelpText( env ", [" sort ]) -+This generates help text documenting the customizable construction -+variables suitable to passing in to the Help() function. -+.I env -+is the construction environment that will be used to get the actual values -+of customizable variables. Calling with -+an optional -+.I sort -+function -+will cause the output to be sorted -+by the specified argument. -+The specific -+.I sort -+function -+should take two arguments -+and return -+-1, 0 or 1 -+(like the standard Python -+.I cmp -+function). -+ -+.ES -+Help(vars.GenerateHelpText(env)) -+Help(vars.GenerateHelpText(env, sort=cmp)) -+.EE -+ -+.TP -+.RI FormatVariableHelpText( env ", " opt ", " help ", " default ", " actual ) -+This method returns a formatted string -+containing the printable help text -+for one option. -+It is normally not called directly, -+but is called by the -+.IR GenerateHelpText () -+method to create the returned help text. -+It may be overridden with your own -+function that takes the arguments specified above -+and returns a string of help text formatted to your liking. -+Note that the -+.IR GenerateHelpText () -+will not put any blank lines or extra -+characters in between the entries, -+so you must add those characters to the returned -+string if you want the entries separated. -+ -+.ES -+def my_format(env, opt, help, default, actual): -+ fmt = "\n%s: default=%s actual=%s (%s)\n" -+ return fmt % (opt, default. actual, help) -+vars.FormatVariableHelpText = my_format -+.EE -+ -+To make it more convenient to work with customizable Variables, -+.B scons -+provides a number of functions -+that make it easy to set up -+various types of Variables: -+ -+.TP -+.RI BoolVariable( key ", " help ", " default ) -+Return a tuple of arguments -+to set up a Boolean option. -+The option will use -+the specified name -+.IR key , -+have a default value of -+.IR default , -+and display the specified -+.I help -+text. -+The option will interpret the values -+.BR y , -+.BR yes , -+.BR t , -+.BR true , -+.BR 1 , -+.B on -+and -+.B all -+as true, -+and the values -+.BR n , -+.BR no , -+.BR f , -+.BR false , -+.BR 0 , -+.B off -+and -+.B none -+as false. -+ -+.TP -+.RI EnumVariable( key ", " help ", " default ", " allowed_values ", [" map ", " ignorecase ]) -+Return a tuple of arguments -+to set up an option -+whose value may be one -+of a specified list of legal enumerated values. -+The option will use -+the specified name -+.IR key , -+have a default value of -+.IR default , -+and display the specified -+.I help -+text. -+The option will only support those -+values in the -+.I allowed_values -+list. -+The optional -+.I map -+argument is a dictionary -+that can be used to convert -+input values into specific legal values -+in the -+.I allowed_values -+list. -+If the value of -+.I ignore_case -+is -+.B 0 -+(the default), -+then the values are case-sensitive. -+If the value of -+.I ignore_case -+is -+.BR 1 , -+then values will be matched -+case-insensitive. -+If the value of -+.I ignore_case -+is -+.BR 1 , -+then values will be matched -+case-insensitive, -+and all input values will be -+converted to lower case. -+ -+.TP -+.RI ListVariable( key ", " help ", " default ", " names ", [", map ]) -+Return a tuple of arguments -+to set up an option -+whose value may be one or more -+of a specified list of legal enumerated values. -+The option will use -+the specified name -+.IR key , -+have a default value of -+.IR default , -+and display the specified -+.I help -+text. -+The option will only support the values -+.BR all , -+.BR none , -+or the values in the -+.I names -+list. -+More than one value may be specified, -+with all values separated by commas. -+The default may be a string of -+comma-separated default values, -+or a list of the default values. -+The optional -+.I map -+argument is a dictionary -+that can be used to convert -+input values into specific legal values -+in the -+.I names -+list. -+ -+.TP -+.RI PackageVariable( key ", " help ", " default ) -+Return a tuple of arguments -+to set up an option -+whose value is a path name -+of a package that may be -+enabled, disabled or -+given an explicit path name. -+The option will use -+the specified name -+.IR key , -+have a default value of -+.IR default , -+and display the specified -+.I help -+text. -+The option will support the values -+.BR yes , -+.BR true , -+.BR on , -+.BR enable -+or -+.BR search , -+in which case the specified -+.I default -+will be used, -+or the option may be set to an -+arbitrary string -+(typically the path name to a package -+that is being enabled). -+The option will also support the values -+.BR no , -+.BR false , -+.BR off -+or -+.BR disable -+to disable use of the specified option. -+ -+.TP -+.RI PathVariable( key ", " help ", " default ", [" validator ]) -+Return a tuple of arguments -+to set up an option -+whose value is expected to be a path name. -+The option will use -+the specified name -+.IR key , -+have a default value of -+.IR default , -+and display the specified -+.I help -+text. -+An additional -+.I validator -+may be specified -+that will be called to -+verify that the specified path -+is acceptable. -+SCons supplies the -+following ready-made validators: -+.BR PathVariable.PathExists -+(the default), -+which verifies that the specified path exists; -+.BR PathVariable.PathIsFile , -+which verifies that the specified path is an existing file; -+.BR PathVariable.PathIsDir , -+which verifies that the specified path is an existing directory; -+.BR PathVariable.PathIsDirCreate , -+which verifies that the specified path is a directory -+and will create the specified directory if the path does not exist; -+and -+.BR PathVariable.PathAccept , -+which simply accepts the specific path name argument without validation, -+and which is suitable if you want your users -+to be able to specify a directory path that will be -+created as part of the build process, for example. -+You may supply your own -+.I validator -+function, -+which must take three arguments -+.RI ( key , -+the name of the variable to be set; -+.IR val , -+the specified value being checked; -+and -+.IR env , -+the construction environment) -+and should raise an exception -+if the specified value is not acceptable. -+ -+.RE -+These functions make it -+convenient to create a number -+of variables with consistent behavior -+in a single call to the -+.B AddVariables -+method: -+ -+.ES -+vars.AddVariables( -+ BoolVariable('warnings', 'compilation with -Wall and similiar', 1), -+ EnumVariable('debug', 'debug output and symbols', 'no' -+ allowed_values=('yes', 'no', 'full'), -+ map={}, ignorecase=0), # case sensitive -+ ListVariable('shared', -+ 'libraries to build as shared libraries', -+ 'all', -+ names = list_of_libs), -+ PackageVariable('x11', -+ 'use X11 installed here (yes = search some places)', -+ 'yes'), -+ PathVariable('qtdir', 'where the root of Qt is installed', qtdir), -+ PathVariable('foopath', 'where the foo library is installed', foopath, -+ PathVariable.PathIsDir), -+ -+) -+.EE -+ -+.SS File and Directory Nodes -+ -+The -+.IR File () -+and -+.IR Dir () -+functions return -+.I File -+and -+.I Dir -+Nodes, respectively. -+python objects, respectively. -+Those objects have several user-visible attributes -+and methods that are often useful: -+ -+.IP path -+The build path -+of the given -+file or directory. -+This path is relative to the top-level directory -+(where the -+.B SConstruct -+file is found). -+The build path is the same as the source path if -+.I variant_dir -+is not being used. -+ -+.IP abspath -+The absolute build path of the given file or directory. -+ -+.IP srcnode() -+The -+.IR srcnode () -+method -+returns another -+.I File -+or -+.I Dir -+object representing the -+.I source -+path of the given -+.I File -+or -+.IR Dir . -+The -+ -+.ES -+# Get the current build dir's path, relative to top. -+Dir('.').path -+# Current dir's absolute path -+Dir('.').abspath -+# Next line is always '.', because it is the top dir's path relative to itself. -+Dir('#.').path -+File('foo.c').srcnode().path # source path of the given source file. -+ -+# Builders also return File objects: -+foo = env.Program('foo.c') -+print "foo will be built in %s"%foo.path -+.EE -+ -+A -+.I Dir -+Node or -+.I File -+Node can also be used to create -+file and subdirectory Nodes relative to the generating Node. -+A -+.I Dir -+Node will place the new Nodes within the directory it represents. -+A -+.I File -+node will place the new Nodes within its parent directory -+(that is, "beside" the file in question). -+If -+.I d -+is a -+.I Dir -+(directory) Node and -+.I f -+is a -+.I File -+(file) Node, -+then these methods are available: -+ -+.TP -+.IR d .Dir( name ) -+Returns a directory Node for a subdirectory of -+.I d -+named -+.IR name . -+ -+.TP -+.IR d .File( name ) -+Returns a file Node for a file within -+.I d -+named -+.IR name . -+ -+.TP -+.IR d .Entry( name ) -+Returns an unresolved Node within -+.I d -+named -+.IR name . -+ -+.TP -+.IR f .Dir( name ) -+Returns a directory named -+.I name -+within the parent directory of -+.IR f . -+ -+.TP -+.IR f .File( name ) -+Returns a file named -+.I name -+within the parent directory of -+.IR f . -+ -+.TP -+.IR f .Entry( name ) -+Returns an unresolved Node named -+.I name -+within the parent directory of -+.IR f . -+ -+.RE -+For example: -+ -+.ES -+# Get a Node for a file within a directory -+incl = Dir('include') -+f = incl.File('header.h') -+ -+# Get a Node for a subdirectory within a directory -+dist = Dir('project-3.2.1) -+src = dist.Dir('src') -+ -+# Get a Node for a file in the same directory -+cfile = File('sample.c') -+hfile = cfile.File('sample.h') -+ -+# Combined example -+docs = Dir('docs') -+html = docs.Dir('html') -+index = html.File('index.html') -+css = index.File('app.css') -+.EE -+ -+.SH EXTENDING SCONS -+.SS Builder Objects -+.B scons -+can be extended to build different types of targets -+by adding new Builder objects -+to a construction environment. -+.IR "In general" , -+you should only need to add a new Builder object -+when you want to build a new type of file or other external target. -+If you just want to invoke a different compiler or other tool -+to build a Program, Object, Library, or any other -+type of output file for which -+.B scons -+already has an existing Builder, -+it is generally much easier to -+use those existing Builders -+in a construction environment -+that sets the appropriate construction variables -+(CC, LINK, etc.). -+ -+Builder objects are created -+using the -+.B Builder -+function. -+The -+.B Builder -+function accepts the following arguments: -+ -+.IP action -+The command line string used to build the target from the source. -+.B action -+can also be: -+a list of strings representing the command -+to be executed and its arguments -+(suitable for enclosing white space in an argument), -+a dictionary -+mapping source file name suffixes to -+any combination of command line strings -+(if the builder should accept multiple source file extensions), -+a Python function; -+an Action object -+(see the next section); -+or a list of any of the above. -+ -+An action function -+takes three arguments: -+.I source -+- a list of source nodes, -+.I target -+- a list of target nodes, -+.I env -+- the construction environment. -+ -+.IP prefix -+The prefix that will be prepended to the target file name. -+This may be specified as a: -+ -+.RS 10 -+.HP 6 -+* -+.IR string , -+ -+.HP 6 -+* -+.I callable object -+- a function or other callable that takes -+two arguments (a construction environment and a list of sources) -+and returns a prefix, -+ -+.HP 6 -+* -+.I dictionary -+- specifies a mapping from a specific source suffix (of the first -+source specified) to a corresponding target prefix. Both the source -+suffix and target prefix specifications may use environment variable -+substitution, and the target prefix (the 'value' entries in the -+dictionary) may also be a callable object. The default target prefix -+may be indicated by a dictionary entry with a key value of None. -+.RE -+.P -+ -+.ES -+b = Builder("build_it < $SOURCE > $TARGET", -+ prefix = "file-") -+ -+def gen_prefix(env, sources): -+ return "file-" + env['PLATFORM'] + '-' -+b = Builder("build_it < $SOURCE > $TARGET", -+ prefix = gen_prefix) -+ -+b = Builder("build_it < $SOURCE > $TARGET", -+ suffix = { None: "file-", -+ "$SRC_SFX_A": gen_prefix }) -+.EE -+ -+.IP suffix -+The suffix that will be appended to the target file name. -+This may be specified in the same manner as the prefix above. -+If the suffix is a string, then -+.B scons -+will append a '.' to the beginning of the suffix if it's not already -+there. The string returned by callable object (or obtained from the -+dictionary) is untouched and must append its own '.' to the beginning -+if one is desired. -+ -+.ES -+b = Builder("build_it < $SOURCE > $TARGET" -+ suffix = "-file") -+ -+def gen_suffix(env, sources): -+ return "." + env['PLATFORM'] + "-file" -+b = Builder("build_it < $SOURCE > $TARGET", -+ suffix = gen_suffix) -+ -+b = Builder("build_it < $SOURCE > $TARGET", -+ suffix = { None: ".sfx1", -+ "$SRC_SFX_A": gen_suffix }) -+.EE -+ -+.IP ensure_suffix -+When set to any true value, causes -+.B scons -+to add the target suffix specified by the -+.I suffix -+keyword to any target strings -+that have a different suffix. -+(The default behavior is to leave untouched -+any target file name that looks like it already has any suffix.) -+ -+.ES -+b1 = Builder("build_it < $SOURCE > $TARGET" -+ suffix = ".out") -+b2 = Builder("build_it < $SOURCE > $TARGET" -+ suffix = ".out", -+ ensure_suffix) -+env = Environment() -+env['BUILDERS']['B1'] = b1 -+env['BUILDERS']['B2'] = b2 -+ -+# Builds "foo.txt" because ensure_suffix is not set. -+env.B1('foo.txt', 'foo.in') -+ -+# Builds "bar.txt.out" because ensure_suffix is set. -+env.B2('bar.txt', 'bar.in') -+.EE -+ -+.IP src_suffix -+The expected source file name suffix. This may be a string or a list -+of strings. -+ -+.IP target_scanner -+A Scanner object that -+will be invoked to find -+implicit dependencies for this target file. -+This keyword argument should be used -+for Scanner objects that find -+implicit dependencies -+based only on the target file -+and the construction environment, -+.I not -+for implicit dependencies based on source files. -+(See the section "Scanner Objects" below, -+for information about creating Scanner objects.) -+ -+.IP source_scanner -+A Scanner object that -+will be invoked to -+find implicit dependencies in -+any source files -+used to build this target file. -+This is where you would -+specify a scanner to -+find things like -+.B #include -+lines in source files. -+The pre-built -+.B DirScanner -+Scanner object may be used to -+indicate that this Builder -+should scan directory trees -+for on-disk changes to files -+that -+.B scons -+does not know about from other Builder or function calls. -+(See the section "Scanner Objects" below, -+for information about creating your own Scanner objects.) -+ -+.IP target_factory -+A factory function that the Builder will use -+to turn any targets specified as strings into SCons Nodes. -+By default, -+SCons assumes that all targets are files. -+Other useful target_factory -+values include -+.BR Dir , -+for when a Builder creates a directory target, -+and -+.BR Entry , -+for when a Builder can create either a file -+or directory target. -+ -+Example: -+ -+.ES -+MakeDirectoryBuilder = Builder(action=my_mkdir, target_factory=Dir) -+env = Environment() -+env.Append(BUILDERS = {'MakeDirectory':MakeDirectoryBuilder}) -+env.MakeDirectory('new_directory', []) -+.EE -+ -+.IP -+Note that the call to the MakeDirectory Builder -+needs to specify an empty source list -+to make the string represent the builder's target; -+without that, it would assume the argument is the source, -+and would try to deduce the target name from it, -+which in the absence of an automatically-added prefix or suffix -+would lead to a matching target and source name -+and a circular dependency. -+ -+.IP source_factory -+A factory function that the Builder will use -+to turn any sources specified as strings into SCons Nodes. -+By default, -+SCons assumes that all source are files. -+Other useful source_factory -+values include -+.BR Dir , -+for when a Builder uses a directory as a source, -+and -+.BR Entry , -+for when a Builder can use files -+or directories (or both) as sources. -+ -+Example: -+ -+.ES -+CollectBuilder = Builder(action=my_mkdir, source_factory=Entry) -+env = Environment() -+env.Append(BUILDERS = {'Collect':CollectBuilder}) -+env.Collect('archive', ['directory_name', 'file_name']) -+.EE -+ -+.IP emitter -+A function or list of functions to manipulate the target and source -+lists before dependencies are established -+and the target(s) are actually built. -+.B emitter -+can also be a string containing a construction variable to expand -+to an emitter function or list of functions, -+or a dictionary mapping source file suffixes -+to emitter functions. -+(Only the suffix of the first source file -+is used to select the actual emitter function -+from an emitter dictionary.) -+ -+An emitter function -+takes three arguments: -+.I source -+- a list of source nodes, -+.I target -+- a list of target nodes, -+.I env -+- the construction environment. -+An emitter must return a tuple containing two lists, -+the list of targets to be built by this builder, -+and the list of sources for this builder. -+ -+Example: -+ -+.ES -+def e(target, source, env): -+ return (target + ['foo.foo'], source + ['foo.src']) -+ -+# Simple association of an emitter function with a Builder. -+b = Builder("my_build < $TARGET > $SOURCE", -+ emitter = e) -+ -+def e2(target, source, env): -+ return (target + ['bar.foo'], source + ['bar.src']) -+ -+# Simple association of a list of emitter functions with a Builder. -+b = Builder("my_build < $TARGET > $SOURCE", -+ emitter = [e, e2]) -+ -+# Calling an emitter function through a construction variable. -+env = Environment(MY_EMITTER = e) -+b = Builder("my_build < $TARGET > $SOURCE", -+ emitter = '$MY_EMITTER') -+ -+# Calling a list of emitter functions through a construction variable. -+env = Environment(EMITTER_LIST = [e, e2]) -+b = Builder("my_build < $TARGET > $SOURCE", -+ emitter = '$EMITTER_LIST') -+ -+# Associating multiple emitters with different file -+# suffixes using a dictionary. -+def e_suf1(target, source, env): -+ return (target + ['another_target_file'], source) -+def e_suf2(target, source, env): -+ return (target, source + ['another_source_file']) -+b = Builder("my_build < $TARGET > $SOURCE", -+ emitter = {'.suf1' : e_suf1, -+ '.suf2' : e_suf2}) -+.EE -+ -+.IP multi -+Specifies whether this builder is allowed to be called multiple times for -+the same target file(s). The default is 0, which means the builder -+can not be called multiple times for the same target file(s). Calling a -+builder multiple times for the same target simply adds additional source -+files to the target; it is not allowed to change the environment associated -+with the target, specify addition environment overrides, or associate a different -+builder with the target. -+ -+.IP env -+A construction environment that can be used -+to fetch source code using this Builder. -+(Note that this environment is -+.I not -+used for normal builds of normal target files, -+which use the environment that was -+used to call the Builder for the target file.) -+ -+.IP generator -+A function that returns a list of actions that will be executed to build -+the target(s) from the source(s). -+The returned action(s) may be -+an Action object, or anything that -+can be converted into an Action object -+(see the next section). -+ -+The generator function -+takes four arguments: -+.I source -+- a list of source nodes, -+.I target -+- a list of target nodes, -+.I env -+- the construction environment, -+.I for_signature -+- a Boolean value that specifies -+whether the generator is being called -+for generating a build signature -+(as opposed to actually executing the command). -+Example: -+ -+.ES -+def g(source, target, env, for_signature): -+ return [["gcc", "-c", "-o"] + target + source] -+ -+b = Builder(generator=g) -+.EE -+ -+.IP -+The -+.I generator -+and -+.I action -+arguments must not both be used for the same Builder. -+ -+.IP src_builder -+Specifies a builder to use when a source file name suffix does not match -+any of the suffixes of the builder. Using this argument produces a -+multi-stage builder. -+ -+.IP single_source -+Specifies that this builder expects exactly one source file per call. Giving -+more than one source file without target files results in implicitely calling -+the builder multiple times (once for each source given). Giving multiple -+source files together with target files results in a UserError exception. -+ -+.RE -+.IP -+The -+.I generator -+and -+.I action -+arguments must not both be used for the same Builder. -+ -+.IP source_ext_match -+When the specified -+.I action -+argument is a dictionary, -+the default behavior when a builder is passed -+multiple source files is to make sure that the -+extensions of all the source files match. -+If it is legal for this builder to be -+called with a list of source files with different extensions, -+this check can be suppressed by setting -+.B source_ext_match -+to -+.B None -+or some other non-true value. -+When -+.B source_ext_match -+is disable, -+.B scons -+will use the suffix of the first specified -+source file to select the appropriate action from the -+.I action -+dictionary. -+ -+In the following example, -+the setting of -+.B source_ext_match -+prevents -+.B scons -+from exiting with an error -+due to the mismatched suffixes of -+.B foo.in -+and -+.BR foo.extra . -+ -+.ES -+b = Builder(action={'.in' : 'build $SOURCES > $TARGET'}, -+ source_ext_match = None) -+ -+env = Environment(BUILDERS = {'MyBuild':b}) -+env.MyBuild('foo.out', ['foo.in', 'foo.extra']) -+.EE -+ -+.IP env -+A construction environment that can be used -+to fetch source code using this Builder. -+(Note that this environment is -+.I not -+used for normal builds of normal target files, -+which use the environment that was -+used to call the Builder for the target file.) -+ -+.ES -+b = Builder(action="build < $SOURCE > $TARGET") -+env = Environment(BUILDERS = {'MyBuild' : b}) -+env.MyBuild('foo.out', 'foo.in', my_arg = 'xyzzy') -+.EE -+ -+.IP chdir -+A directory from which scons -+will execute the -+action(s) specified -+for this Builder. -+If the -+.B chdir -+argument is -+a string or a directory Node, -+scons will change to the specified directory. -+If the -+.B chdir -+is not a string or Node -+and is non-zero, -+then scons will change to the -+target file's directory. -+ -+Note that scons will -+.I not -+automatically modify -+its expansion of -+construction variables like -+.B $TARGET -+and -+.B $SOURCE -+when using the chdir -+keyword argument--that is, -+the expanded file names -+will still be relative to -+the top-level SConstruct directory, -+and consequently incorrect -+relative to the chdir directory. -+Builders created using chdir keyword argument, -+will need to use construction variable -+expansions like -+.B ${TARGET.file} -+and -+.B ${SOURCE.file} -+to use just the filename portion of the -+targets and source. -+ -+.ES -+b = Builder(action="build < ${SOURCE.file} > ${TARGET.file}", -+ chdir=1) -+env = Environment(BUILDERS = {'MyBuild' : b}) -+env.MyBuild('sub/dir/foo.out', 'sub/dir/foo.in') -+.EE -+ -+.B WARNING: -+Python only keeps one current directory -+location for all of the threads. -+This means that use of the -+.B chdir -+argument -+will -+.I not -+work with the SCons -+.B -j -+option, -+because individual worker threads spawned -+by SCons interfere with each other -+when they start changing directory. -+ -+.RE -+Any additional keyword arguments supplied -+when a Builder object is created -+(that is, when the Builder() function is called) -+will be set in the executing construction -+environment when the Builder object is called. -+The canonical example here would be -+to set a construction variable to -+the repository of a source code system. -+ -+Any additional keyword arguments supplied -+when a Builder -+.I object -+is called -+will only be associated with the target -+created by that particular Builder call -+(and any other files built as a -+result of the call). -+ -+These extra keyword arguments are passed to the -+following functions: -+command generator functions, -+function Actions, -+and emitter functions. -+ -+.SS Action Objects -+ -+The -+.BR Builder () -+function will turn its -+.B action -+keyword argument into an appropriate -+internal Action object. -+You can also explicity create Action objects -+using the -+.BR Action () -+global function, -+which can then be passed to the -+.BR Builder () -+function. -+This can be used to configure -+an Action object more flexibly, -+or it may simply be more efficient -+than letting each separate Builder object -+create a separate Action -+when multiple -+Builder objects need to do the same thing. -+ -+The -+.BR Action () -+global function -+returns an appropriate object for the action -+represented by the type of the first argument: -+ -+.IP Action -+If the first argument is already an Action object, -+the object is simply returned. -+ -+.IP String -+If the first argument is a string, -+a command-line Action is returned. -+Note that the command-line string -+may be preceded by an -+.B @ -+(at-sign) -+to suppress printing of the specified command line, -+or by a -+.B \- -+(hyphen) -+to ignore the exit status from the specified command: -+ -+.ES -+Action('$CC -c -o $TARGET $SOURCES') -+ -+# Doesn't print the line being executed. -+Action('@build $TARGET $SOURCES') -+ -+# Ignores return value -+Action('-build $TARGET $SOURCES') -+.EE -+.\" XXX From Gary Ruben, 23 April 2002: -+.\" What would be useful is a discussion of how you execute command -+.\" shell commands ie. what is the process used to spawn the shell, pass -+.\" environment variables to it etc., whether there is one shell per -+.\" environment or one per command etc. It might help to look at the Gnu -+.\" make documentation to see what they think is important to discuss about -+.\" a build system. I'm sure you can do a better job of organising the -+.\" documentation than they have :-) -+ -+.IP List -+If the first argument is a list, -+then a list of Action objects is returned. -+An Action object is created as necessary -+for each element in the list. -+If an element -+.I within -+the list is itself a list, -+the internal list is the -+command and arguments to be executed via -+the command line. -+This allows white space to be enclosed -+in an argument by defining -+a command in a list within a list: -+ -+.ES -+Action([['cc', '-c', '-DWHITE SPACE', '-o', '$TARGET', '$SOURCES']]) -+.EE -+ -+.IP Function -+If the first argument is a Python function, -+a function Action is returned. -+The Python function must take three keyword arguments, -+.B target -+(a Node object representing the target file), -+.B source -+(a Node object representing the source file) -+and -+.B env -+(the construction environment -+used for building the target file). -+The -+.B target -+and -+.B source -+arguments may be lists of Node objects if there is -+more than one target file or source file. -+The actual target and source file name(s) may -+be retrieved from their Node objects -+via the built-in Python str() function: -+ -+.ES -+target_file_name = str(target) -+source_file_names = map(lambda x: str(x), source) -+.EE -+.IP -+The function should return -+.B 0 -+or -+.B None -+to indicate a successful build of the target file(s). -+The function may raise an exception -+or return a non-zero exit status -+to indicate an unsuccessful build. -+ -+.ES -+def build_it(target = None, source = None, env = None): -+ # build the target from the source -+ return 0 -+ -+a = Action(build_it) -+.EE -+ -+If the action argument is not one of the above, -+None is returned. -+.PP -+ -+The second argument is optional and is used to define the output -+which is printed when the Action is actually performed. -+In the absence of this parameter, -+or if it's an empty string, -+a default output depending on the type of the action is used. -+For example, a command-line action will print the executed command. -+The argument must be either a Python function or a string. -+ -+In the first case, -+it's a function that returns a string to be printed -+to describe the action being executed. -+The function may also be specified by the -+.IR strfunction = -+keyword argument. -+Like a function to build a file, -+this function must take three keyword arguments: -+.B target -+(a Node object representing the target file), -+.B source -+(a Node object representing the source file) -+and -+.BR env -+(a construction environment). -+The -+.B target -+and -+.B source -+arguments may be lists of Node objects if there is -+more than one target file or source file. -+ -+In the second case, you provide the string itself. -+The string may also be specified by the -+.IR cmdstr = -+keyword argument. -+The string typically contains variables, notably -+$TARGET(S) and $SOURCE(S), or consists of just a single -+variable, which is optionally defined somewhere else. -+SCons itself heavily uses the latter variant. -+ -+Examples: -+ -+.ES -+def build_it(target, source, env): -+ # build the target from the source -+ return 0 -+ -+def string_it(target, source, env): -+ return "building '%s' from '%s'" % (target[0], source[0]) -+ -+# Use a positional argument. -+f = Action(build_it, string_it) -+s = Action(build_it, "building '$TARGET' from '$SOURCE'") -+ -+# Alternatively, use a keyword argument. -+f = Action(build_it, strfunction=string_it) -+s = Action(build_it, cmdstr="building '$TARGET' from '$SOURCE'") -+ -+# You can provide a configurable variable. -+l = Action(build_it, '$STRINGIT') -+.EE -+ -+The third and succeeding arguments, if present, -+may either be a construction variable or a list of construction variables -+whose values will be included in the signature of the Action -+when deciding whether a target should be rebuilt because the action changed. -+The variables may also be specified by a -+.IR varlist = -+keyword parameter; -+if both are present, they are combined. -+This is necessary whenever you want a target to be rebuilt -+when a specific construction variable changes. -+This is not often needed for a string action, -+as the expanded variables will normally be part of the command line, -+but may be needed if a Python function action uses -+the value of a construction variable when generating the command line. -+ -+.ES -+def build_it(target, source, env): -+ # build the target from the 'XXX' construction variable -+ open(target[0], 'w').write(env['XXX']) -+ return 0 -+ -+# Use positional arguments. -+a = Action(build_it, '$STRINGIT', ['XXX']) -+ -+# Alternatively, use a keyword argument. -+a = Action(build_it, varlist=['XXX']) -+.EE -+ -+The -+.BR Action () -+global function -+can be passed the following -+optional keyword arguments -+to modify the Action object's behavior: -+ -+.IP -+.B chdir -+The -+.B chdir -+keyword argument specifies that -+scons will execute the action -+after changing to the specified directory. -+If the -+.B chdir -+argument is -+a string or a directory Node, -+scons will change to the specified directory. -+If the -+.B chdir -+argument -+is not a string or Node -+and is non-zero, -+then scons will change to the -+target file's directory. -+ -+Note that scons will -+.I not -+automatically modify -+its expansion of -+construction variables like -+.B $TARGET -+and -+.B $SOURCE -+when using the chdir -+keyword argument--that is, -+the expanded file names -+will still be relative to -+the top-level SConstruct directory, -+and consequently incorrect -+relative to the chdir directory. -+Builders created using chdir keyword argument, -+will need to use construction variable -+expansions like -+.B ${TARGET.file} -+and -+.B ${SOURCE.file} -+to use just the filename portion of the -+targets and source. -+ -+.ES -+a = Action("build < ${SOURCE.file} > ${TARGET.file}", -+ chdir=1) -+.EE -+ -+.IP -+.B exitstatfunc -+The -+.BR Action () -+global function -+also takes an -+.B exitstatfunc -+keyword argument -+which specifies a function -+that is passed the exit status -+(or return value) -+from the specified action -+and can return an arbitrary -+or modified value. -+This can be used, for example, -+to specify that an Action object's -+return value should be ignored -+under special conditions -+and SCons should, therefore, -+consider that the action always suceeds: -+ -+.ES -+def always_succeed(s): -+ # Always return 0, which indicates success. -+ return 0 -+a = Action("build < ${SOURCE.file} > ${TARGET.file}", -+ exitstatfunc=always_succeed) -+.EE -+ -+.IP -+.B batch_key -+The -+.B batch_key -+keyword argument can be used -+to specify that the Action can create multiple target files -+by processing multiple independent source files simultaneously. -+(The canonical example is "batch compilation" -+of multiple object files -+by passing multiple source files -+to a single invocation of a compiler -+such as Microsoft's Visual C / C++ compiler.) -+If the -+.B batch_key -+argument is any non-False, non-callable Python value, -+the configured Action object will cause -+.B scons -+to collect all targets built with the Action object -+and configured with the same construction environment -+into single invocations of the Action object's -+command line or function. -+Command lines will typically want to use the -+.BR CHANGED_SOURCES -+construction variable -+(and possibly -+.BR CHANGED_TARGETS -+as well) -+to only pass to the command line those sources that -+have actually changed since their targets were built. -+ -+Example: -+ -+.ES -+a = Action('build $CHANGED_SOURCES', batch_key=True) -+.EE -+ -+The -+.B batch_key -+argument may also be -+a callable function -+that returns a key that -+will be used to identify different -+"batches" of target files to be collected -+for batch building. -+A -+.B batch_key -+function must take the following arguments: -+ -+.IP action -+The action object. -+ -+.IP env -+The construction environment -+configured for the target. -+ -+.IP target -+The list of targets for a particular configured action. -+ -+.IP source -+The list of source for a particular configured action. -+ -+The returned key should typically -+be a tuple of values derived from the arguments, -+using any appropriate logic to decide -+how multiple invocations should be batched. -+For example, a -+.B batch_key -+function may decide to return -+the value of a specific construction -+variable from the -+.B env -+argument -+which will cause -+.B scons -+to batch-build targets -+with matching values of that variable, -+or perhaps return the -+.BR id () -+of the entire construction environment, -+in which case -+.B scons -+will batch-build -+all targets configured with the same construction environment. -+Returning -+.B None -+indicates that -+the particular target should -+.I not -+be part of any batched build, -+but instead will be built -+by a separate invocation of action's -+command or function. -+Example: -+ -+.ES -+def batch_key(action, env, target, source): -+ tdir = target[0].dir -+ if tdir.name == 'special': -+ # Don't batch-build any target -+ # in the special/ subdirectory. -+ return None -+ return (id(action), id(env), tdir) -+a = Action('build $CHANGED_SOURCES', batch_key=batch_key) -+.EE -+ -+.SS Miscellaneous Action Functions -+ -+.B scons -+supplies a number of functions -+that arrange for various common -+file and directory manipulations -+to be performed. -+These are similar in concept to "tasks" in the -+Ant build tool, -+although the implementation is slightly different. -+These functions do not actually -+perform the specified action -+at the time the function is called, -+but instead return an Action object -+that can be executed at the -+appropriate time. -+(In Object-Oriented terminology, -+these are actually -+Action -+.I Factory -+functions -+that return Action objects.) -+ -+In practice, -+there are two natural ways -+that these -+Action Functions -+are intended to be used. -+ -+First, -+if you need -+to perform the action -+at the time the SConscript -+file is being read, -+you can use the -+.B Execute -+global function to do so: -+.ES -+Execute(Touch('file')) -+.EE -+ -+Second, -+you can use these functions -+to supply Actions in a list -+for use by the -+.B Command -+method. -+This can allow you to -+perform more complicated -+sequences of file manipulation -+without relying -+on platform-specific -+external commands: -+that -+.ES -+env = Environment(TMPBUILD = '/tmp/builddir') -+env.Command('foo.out', 'foo.in', -+ [Mkdir('$TMPBUILD'), -+ Copy('$TMPBUILD', '${SOURCE.dir}'), -+ "cd $TMPBUILD && make", -+ Delete('$TMPBUILD')]) -+.EE -+ -+.TP -+.RI Chmod( dest ", " mode ) -+Returns an Action object that -+changes the permissions on the specified -+.I dest -+file or directory to the specified -+.IR mode . -+Examples: -+ -+.ES -+Execute(Chmod('file', 0755)) -+ -+env.Command('foo.out', 'foo.in', -+ [Copy('$TARGET', '$SOURCE'), -+ Chmod('$TARGET', 0755)]) -+.EE -+ -+.TP -+.RI Copy( dest ", " src ) -+Returns an Action object -+that will copy the -+.I src -+source file or directory to the -+.I dest -+destination file or directory. -+Examples: -+ -+.ES -+Execute(Copy('foo.output', 'foo.input')) -+ -+env.Command('bar.out', 'bar.in', -+ Copy('$TARGET', '$SOURCE')) -+.EE -+ -+.TP -+.RI Delete( entry ", [" must_exist ]) -+Returns an Action that -+deletes the specified -+.IR entry , -+which may be a file or a directory tree. -+If a directory is specified, -+the entire directory tree -+will be removed. -+If the -+.I must_exist -+flag is set, -+then a Python error will be thrown -+if the specified entry does not exist; -+the default is -+.BR must_exist=0 , -+that is, the Action will silently do nothing -+if the entry does not exist. -+Examples: -+ -+.ES -+Execute(Delete('/tmp/buildroot')) -+ -+env.Command('foo.out', 'foo.in', -+ [Delete('${TARGET.dir}'), -+ MyBuildAction]) -+ -+Execute(Delete('file_that_must_exist', must_exist=1)) -+.EE -+ -+.TP -+.RI Mkdir( dir ) -+Returns an Action -+that creates the specified -+directory -+.I dir . -+Examples: -+ -+.ES -+Execute(Mkdir('/tmp/outputdir')) -+ -+env.Command('foo.out', 'foo.in', -+ [Mkdir('/tmp/builddir'), -+ Copy('/tmp/builddir/foo.in', '$SOURCE'), -+ "cd /tmp/builddir && make", -+ Copy('$TARGET', '/tmp/builddir/foo.out')]) -+.EE -+ -+.TP -+.RI Move( dest ", " src ) -+Returns an Action -+that moves the specified -+.I src -+file or directory to -+the specified -+.I dest -+file or directory. -+Examples: -+ -+.ES -+Execute(Move('file.destination', 'file.source')) -+ -+env.Command('output_file', 'input_file', -+ [MyBuildAction, -+ Move('$TARGET', 'file_created_by_MyBuildAction')]) -+.EE -+ -+.TP -+.RI Touch( file ) -+Returns an Action -+that updates the modification time -+on the specified -+.IR file . -+Examples: -+ -+.ES -+Execute(Touch('file_to_be_touched')) -+ -+env.Command('marker', 'input_file', -+ [MyBuildAction, -+ Touch('$TARGET')]) -+.EE -+ -+.SS Variable Substitution -+ -+Before executing a command, -+.B scons -+performs construction variable interpolation on the strings that make up -+the command line of builders. -+Variables are introduced by a -+.B $ -+prefix. -+Besides construction variables, scons provides the following -+variables for each command execution: -+ -+.IP CHANGED_SOURCES -+The file names of all sources of the build command -+that have changed since the target was last built. -+ -+.IP CHANGED_TARGETS -+The file names of all targets that would be built -+from sources that have changed since the target was last built. -+ -+.IP SOURCE -+The file name of the source of the build command, -+or the file name of the first source -+if multiple sources are being built. -+ -+.IP SOURCES -+The file names of the sources of the build command. -+ -+.IP TARGET -+The file name of the target being built, -+or the file name of the first target -+if multiple targets are being built. -+ -+.IP TARGETS -+The file names of all targets being built. -+ -+.IP UNCHANGED_SOURCES -+The file names of all sources of the build command -+that have -+.I not -+changed since the target was last built. -+ -+.IP UNCHANGED_TARGETS -+The file names of all targets that would be built -+from sources that have -+.I not -+changed since the target was last built. -+ -+(Note that the above variables are reserved -+and may not be set in a construction environment.) -+ -+.LP -+For example, given the construction variable CC='cc', targets=['foo'], and -+sources=['foo.c', 'bar.c']: -+ -+.ES -+action='$CC -c -o $TARGET $SOURCES' -+.EE -+ -+would produce the command line: -+ -+.ES -+cc -c -o foo foo.c bar.c -+.EE -+ -+Variable names may be surrounded by curly braces ({}) -+to separate the name from the trailing characters. -+Within the curly braces, a variable name may have -+a Python slice subscript appended to select one -+or more items from a list. -+In the previous example, the string: -+ -+.ES -+${SOURCES[1]} -+.EE -+ -+would produce: -+ -+.ES -+bar.c -+.EE -+ -+Additionally, a variable name may -+have the following special -+modifiers appended within the enclosing curly braces -+to modify the interpolated string: -+ -+.IP base -+The base path of the file name, -+including the directory path -+but excluding any suffix. -+ -+.IP dir -+The name of the directory in which the file exists. -+ -+.IP file -+The file name, -+minus any directory portion. -+ -+.IP filebase -+Just the basename of the file, -+minus any suffix -+and minus the directory. -+ -+.IP suffix -+Just the file suffix. -+ -+.IP abspath -+The absolute path name of the file. -+ -+.IP posix -+The POSIX form of the path, -+with directories separated by -+.B / -+(forward slashes) -+not backslashes. -+This is sometimes necessary on Windows systems -+when a path references a file on other (POSIX) systems. -+ -+.IP srcpath -+The directory and file name to the source file linked to this file through -+.BR VariantDir (). -+If this file isn't linked, -+it just returns the directory and filename unchanged. -+ -+.IP srcdir -+The directory containing the source file linked to this file through -+.BR VariantDir (). -+If this file isn't linked, -+it just returns the directory part of the filename. -+ -+.IP rsrcpath -+The directory and file name to the source file linked to this file through -+.BR VariantDir (). -+If the file does not exist locally but exists in a Repository, -+the path in the Repository is returned. -+If this file isn't linked, it just returns the -+directory and filename unchanged. -+ -+.IP rsrcdir -+The Repository directory containing the source file linked to this file through -+.BR VariantDir (). -+If this file isn't linked, -+it just returns the directory part of the filename. -+ -+.LP -+For example, the specified target will -+expand as follows for the corresponding modifiers: -+ -+.ES -+$TARGET => sub/dir/file.x -+${TARGET.base} => sub/dir/file -+${TARGET.dir} => sub/dir -+${TARGET.file} => file.x -+${TARGET.filebase} => file -+${TARGET.suffix} => .x -+${TARGET.abspath} => /top/dir/sub/dir/file.x -+ -+SConscript('src/SConscript', variant_dir='sub/dir') -+$SOURCE => sub/dir/file.x -+${SOURCE.srcpath} => src/file.x -+${SOURCE.srcdir} => src -+ -+Repository('/usr/repository') -+$SOURCE => sub/dir/file.x -+${SOURCE.rsrcpath} => /usr/repository/src/file.x -+${SOURCE.rsrcdir} => /usr/repository/src -+.EE -+ -+Note that curly braces braces may also be used -+to enclose arbitrary Python code to be evaluated. -+(In fact, this is how the above modifiers are substituted, -+they are simply attributes of the Python objects -+that represent TARGET, SOURCES, etc.) -+See the section "Python Code Substitution" below, -+for more thorough examples of -+how this can be used. -+ -+Lastly, a variable name -+may be a callable Python function -+associated with a -+construction variable in the environment. -+The function should -+take four arguments: -+.I target -+- a list of target nodes, -+.I source -+- a list of source nodes, -+.I env -+- the construction environment, -+.I for_signature -+- a Boolean value that specifies -+whether the function is being called -+for generating a build signature. -+SCons will insert whatever -+the called function returns -+into the expanded string: -+ -+.ES -+def foo(target, source, env, for_signature): -+ return "bar" -+ -+# Will expand $BAR to "bar baz" -+env=Environment(FOO=foo, BAR="$FOO baz") -+.EE -+ -+You can use this feature to pass arguments to a -+Python function by creating a callable class -+that stores one or more arguments in an object, -+and then uses them when the -+.B __call__() -+method is called. -+Note that in this case, -+the entire variable expansion must -+be enclosed by curly braces -+so that the arguments will -+be associated with the -+instantiation of the class: -+ -+.ES -+class foo(object): -+ def __init__(self, arg): -+ self.arg = arg -+ -+ def __call__(self, target, source, env, for_signature): -+ return self.arg + " bar" -+ -+# Will expand $BAR to "my argument bar baz" -+env=Environment(FOO=foo, BAR="${FOO('my argument')} baz") -+.EE -+ -+.LP -+The special pseudo-variables -+.B "$(" -+and -+.B "$)" -+may be used to surround parts of a command line -+that may change -+.I without -+causing a rebuild--that is, -+which are not included in the signature -+of target files built with this command. -+All text between -+.B "$(" -+and -+.B "$)" -+will be removed from the command line -+before it is added to file signatures, -+and the -+.B "$(" -+and -+.B "$)" -+will be removed before the command is executed. -+For example, the command line: -+ -+.ES -+echo Last build occurred $( $TODAY $). > $TARGET -+.EE -+ -+.LP -+would execute the command: -+ -+.ES -+echo Last build occurred $TODAY. > $TARGET -+.EE -+ -+.LP -+but the command signature added to any target files would be: -+ -+.ES -+echo Last build occurred . > $TARGET -+.EE -+ -+.SS Python Code Substitution -+ -+Any python code within -+.BR "${" - "}" -+pairs gets evaluated by python 'eval', with the python globals set to -+the current environment's set of construction variables. -+So in the following case: -+.ES -+env['COND'] = 0 -+env.Command('foo.out', 'foo.in', -+ '''echo ${COND==1 and 'FOO' or 'BAR'} > $TARGET''') -+.EE -+the command executed will be either -+.ES -+echo FOO > foo.out -+.EE -+or -+.ES -+echo BAR > foo.out -+.EE -+according to the current value of env['COND'] when the command is -+executed. The evaluation occurs when the target is being -+built, not when the SConscript is being read. So if env['COND'] is changed -+later in the SConscript, the final value will be used. -+ -+Here's a more interesting example. Note that all of COND, FOO, and -+BAR are environment variables, and their values are substituted into -+the final command. FOO is a list, so its elements are interpolated -+separated by spaces. -+ -+.ES -+env=Environment() -+env['COND'] = 0 -+env['FOO'] = ['foo1', 'foo2'] -+env['BAR'] = 'barbar' -+env.Command('foo.out', 'foo.in', -+ 'echo ${COND==1 and FOO or BAR} > $TARGET') -+ -+# Will execute this: -+# echo foo1 foo2 > foo.out -+.EE -+ -+SCons uses the following rules when converting construction variables into -+command lines: -+ -+.IP String -+When the value is a string it is interpreted as a space delimited list of -+command line arguments. -+ -+.IP List -+When the value is a list it is interpreted as a list of command line -+arguments. Each element of the list is converted to a string. -+ -+.IP Other -+Anything that is not a list or string is converted to a string and -+interpreted as a single command line argument. -+ -+.IP Newline -+Newline characters (\\n) delimit lines. The newline parsing is done after -+all other parsing, so it is not possible for arguments (e.g. file names) to -+contain embedded newline characters. This limitation will likely go away in -+a future version of SCons. -+ -+.SS Scanner Objects -+ -+You can use the -+.B Scanner -+function to define -+objects to scan -+new file types for implicit dependencies. -+The -+.B Scanner -+function accepts the following arguments: -+ -+.IP function -+This can be either: -+1) a Python function that will process -+the Node (file) -+and return a list of File Nodes -+representing the implicit -+dependencies (file names) found in the contents; -+or: -+2) a dictionary that maps keys -+(typically the file suffix, but see below for more discussion) -+to other Scanners that should be called. -+ -+If the argument is actually a Python function, -+the function must take three or four arguments: -+ -+ def scanner_function(node, env, path): -+ -+ def scanner_function(node, env, path, arg=None): -+ -+The -+.B node -+argument is the internal -+SCons node representing the file. -+Use -+.B str(node) -+to fetch the name of the file, and -+.B node.get_contents() -+to fetch contents of the file. -+Note that the file is -+.I not -+guaranteed to exist before the scanner is called, -+so the scanner function should check that -+if there's any chance that the scanned file -+might not exist -+(for example, if it's built from other files). -+ -+The -+.B env -+argument is the construction environment for the scan. -+Fetch values from it using the -+.B env.Dictionary() -+method. -+ -+The -+.B path -+argument is a tuple (or list) -+of directories that can be searched -+for files. -+This will usually be the tuple returned by the -+.B path_function -+argument (see below). -+ -+The -+.B arg -+argument is the argument supplied -+when the scanner was created, if any. -+ -+.IP name -+The name of the Scanner. -+This is mainly used -+to identify the Scanner internally. -+ -+.IP argument -+An optional argument that, if specified, -+will be passed to the scanner function -+(described above) -+and the path function -+(specified below). -+ -+.IP skeys -+An optional list that can be used to -+determine which scanner should be used for -+a given Node. -+In the usual case of scanning for file names, -+this argument will be a list of suffixes -+for the different file types that this -+Scanner knows how to scan. -+If the argument is a string, -+then it will be expanded -+into a list by the current environment. -+ -+.IP path_function -+A Python function that takes four or five arguments: -+a construction environment, -+a Node for the directory containing -+the SConscript file in which -+the first target was defined, -+a list of target nodes, -+a list of source nodes, -+and an optional argument supplied -+when the scanner was created. -+The -+.B path_function -+returns a tuple of directories -+that can be searched for files to be returned -+by this Scanner object. -+(Note that the -+.BR FindPathDirs () -+function can be used to return a ready-made -+.B path_function -+for a given construction variable name, -+instead of having to write your own function from scratch.) -+ -+.IP node_class -+The class of Node that should be returned -+by this Scanner object. -+Any strings or other objects returned -+by the scanner function -+that are not of this class -+will be run through the -+.B node_factory -+function. -+ -+.IP node_factory -+A Python function that will take a string -+or other object -+and turn it into the appropriate class of Node -+to be returned by this Scanner object. -+ -+.IP scan_check -+An optional Python function that takes two arguments, -+a Node (file) and a construction environment, -+and returns whether the -+Node should, in fact, -+be scanned for dependencies. -+This check can be used to eliminate unnecessary -+calls to the scanner function when, -+for example, the underlying file -+represented by a Node does not yet exist. -+ -+.IP recursive -+An optional flag that -+specifies whether this scanner should be re-invoked -+on the dependency files returned by the scanner. -+When this flag is not set, -+the Node subsystem will -+only invoke the scanner on the file being scanned, -+and not (for example) also on the files -+specified by the #include lines -+in the file being scanned. -+.I recursive -+may be a callable function, -+in which case it will be called with a list of -+Nodes found and -+should return a list of Nodes -+that should be scanned recursively; -+this can be used to select a specific subset of -+Nodes for additional scanning. -+ -+.RE -+Note that -+.B scons -+has a global -+.B SourceFileScanner -+object that is used by -+the -+.BR Object (), -+.BR SharedObject (), -+and -+.BR StaticObject () -+builders to decide -+which scanner should be used -+for different file extensions. -+You can using the -+.BR SourceFileScanner.add_scanner () -+method to add your own Scanner object -+to the -+.B scons -+infrastructure -+that builds target programs or -+libraries from a list of -+source files of different types: -+ -+.ES -+def xyz_scan(node, env, path): -+ contents = node.get_text_contents() -+ # Scan the contents and return the included files. -+ -+XYZScanner = Scanner(xyz_scan) -+ -+SourceFileScanner.add_scanner('.xyz', XYZScanner) -+ -+env.Program('my_prog', ['file1.c', 'file2.f', 'file3.xyz']) -+.EE -+ -+.SH SYSTEM-SPECIFIC BEHAVIOR -+SCons and its configuration files are very portable, -+due largely to its implementation in Python. -+There are, however, a few portability -+issues waiting to trap the unwary. -+.SS .C file suffix -+SCons handles the upper-case -+.B .C -+file suffix differently, -+depending on the capabilities of -+the underlying system. -+On a case-sensitive system -+such as Linux or UNIX, -+SCons treats a file with a -+.B .C -+suffix as a C++ source file. -+On a case-insensitive system -+such as Windows, -+SCons treats a file with a -+.B .C -+suffix as a C source file. -+.SS .F file suffix -+SCons handles the upper-case -+.B .F -+file suffix differently, -+depending on the capabilities of -+the underlying system. -+On a case-sensitive system -+such as Linux or UNIX, -+SCons treats a file with a -+.B .F -+suffix as a Fortran source file -+that is to be first run through -+the standard C preprocessor. -+On a case-insensitive system -+such as Windows, -+SCons treats a file with a -+.B .F -+suffix as a Fortran source file that should -+.I not -+be run through the C preprocessor. -+.SS Windows: Cygwin Tools and Cygwin Python vs. Windows Pythons -+Cygwin supplies a set of tools and utilities -+that let users work on a -+Windows system using a more POSIX-like environment. -+The Cygwin tools, including Cygwin Python, -+do this, in part, -+by sharing an ability to interpret UNIX-like path names. -+For example, the Cygwin tools -+will internally translate a Cygwin path name -+like /cygdrive/c/mydir -+to an equivalent Windows pathname -+of C:/mydir (equivalent to C:\\mydir). -+ -+Versions of Python -+that are built for native Windows execution, -+such as the python.org and ActiveState versions, -+do not have the Cygwin path name semantics. -+This means that using a native Windows version of Python -+to build compiled programs using Cygwin tools -+(such as gcc, bison, and flex) -+may yield unpredictable results. -+"Mixing and matching" in this way -+can be made to work, -+but it requires careful attention to the use of path names -+in your SConscript files. -+ -+In practice, users can sidestep -+the issue by adopting the following rules: -+When using gcc, -+use the Cygwin-supplied Python interpreter -+to run SCons; -+when using Microsoft Visual C/C++ -+(or some other Windows compiler) -+use the python.org or ActiveState version of Python -+to run SCons. -+.SS Windows: scons.bat file -+On Windows systems, -+SCons is executed via a wrapper -+.B scons.bat -+file. -+This has (at least) two ramifications: -+ -+First, Windows command-line users -+that want to use variable assignment -+on the command line -+may have to put double quotes -+around the assignments: -+ -+.ES -+scons "FOO=BAR" "BAZ=BLEH" -+.EE -+ -+Second, the Cygwin shell does not -+recognize this file as being the same -+as an -+.B scons -+command issued at the command-line prompt. -+You can work around this either by -+executing -+.B scons.bat -+from the Cygwin command line, -+or by creating a wrapper shell -+script named -+.B scons . -+ -+.SS MinGW -+ -+The MinGW bin directory must be in your PATH environment variable or the -+PATH variable under the ENV construction variable for SCons -+to detect and use the MinGW tools. When running under the native Windows -+Python interpreter, SCons will prefer the MinGW tools over the Cygwin -+tools, if they are both installed, regardless of the order of the bin -+directories in the PATH variable. If you have both MSVC and MinGW -+installed and you want to use MinGW instead of MSVC, -+then you must explicitly tell SCons to use MinGW by passing -+ -+.ES -+tools=['mingw'] -+.EE -+ -+to the Environment() function, because SCons will prefer the MSVC tools -+over the MinGW tools. -+ -+.SH EXAMPLES -+ -+To help you get started using SCons, -+this section contains a brief overview of some common tasks. -+ -+.SS Basic Compilation From a Single Source File -+ -+.ES -+env = Environment() -+env.Program(target = 'foo', source = 'foo.c') -+.EE -+ -+Note: Build the file by specifying -+the target as an argument -+("scons foo" or "scons foo.exe"). -+or by specifying a dot ("scons ."). -+ -+.SS Basic Compilation From Multiple Source Files -+ -+.ES -+env = Environment() -+env.Program(target = 'foo', source = Split('f1.c f2.c f3.c')) -+.EE -+ -+.SS Setting a Compilation Flag -+ -+.ES -+env = Environment(CCFLAGS = '-g') -+env.Program(target = 'foo', source = 'foo.c') -+.EE -+ -+.SS Search The Local Directory For .h Files -+ -+Note: You do -+.I not -+need to set CCFLAGS to specify -I options by hand. -+SCons will construct the right -I options from CPPPATH. -+ -+.ES -+env = Environment(CPPPATH = ['.']) -+env.Program(target = 'foo', source = 'foo.c') -+.EE -+ -+.SS Search Multiple Directories For .h Files -+ -+.ES -+env = Environment(CPPPATH = ['include1', 'include2']) -+env.Program(target = 'foo', source = 'foo.c') -+.EE -+ -+.SS Building a Static Library -+ -+.ES -+env = Environment() -+env.StaticLibrary(target = 'foo', source = Split('l1.c l2.c')) -+env.StaticLibrary(target = 'bar', source = ['l3.c', 'l4.c']) -+.EE -+ -+.SS Building a Shared Library -+ -+.ES -+env = Environment() -+env.SharedLibrary(target = 'foo', source = ['l5.c', 'l6.c']) -+env.SharedLibrary(target = 'bar', source = Split('l7.c l8.c')) -+.EE -+ -+.SS Linking a Local Library Into a Program -+ -+.ES -+env = Environment(LIBS = 'mylib', LIBPATH = ['.']) -+env.Library(target = 'mylib', source = Split('l1.c l2.c')) -+env.Program(target = 'prog', source = ['p1.c', 'p2.c']) -+.EE -+ -+.SS Defining Your Own Builder Object -+ -+Notice that when you invoke the Builder, -+you can leave off the target file suffix, -+and SCons will add it automatically. -+ -+.ES -+bld = Builder(action = 'pdftex < $SOURCES > $TARGET' -+ suffix = '.pdf', -+ src_suffix = '.tex') -+env = Environment(BUILDERS = {'PDFBuilder' : bld}) -+env.PDFBuilder(target = 'foo.pdf', source = 'foo.tex') -+ -+# The following creates "bar.pdf" from "bar.tex" -+env.PDFBuilder(target = 'bar', source = 'bar') -+.EE -+ -+Note also that the above initialization -+overwrites the default Builder objects, -+so the Environment created above -+can not be used call Builders like env.Program(), -+env.Object(), env.StaticLibrary(), etc. -+ -+.SS Adding Your Own Builder Object to an Environment -+ -+.ES -+bld = Builder(action = 'pdftex < $SOURCES > $TARGET' -+ suffix = '.pdf', -+ src_suffix = '.tex') -+env = Environment() -+env.Append(BUILDERS = {'PDFBuilder' : bld}) -+env.PDFBuilder(target = 'foo.pdf', source = 'foo.tex') -+env.Program(target = 'bar', source = 'bar.c') -+.EE -+ -+You also can use other Pythonic techniques to add -+to the BUILDERS construction variable, such as: -+ -+.ES -+env = Environment() -+env['BUILDERS]['PDFBuilder'] = bld -+.EE -+ -+.SS Defining Your Own Scanner Object -+ -+The following example shows an extremely simple scanner (the -+.BR kfile_scan () -+function) -+that doesn't use a search path at all -+and simply returns the -+file names present on any -+.B include -+lines in the scanned file. -+This would implicitly assume that all included -+files live in the top-level directory: -+ -+.ES -+import re -+ -+'\" Note: the \\ in the following are for the benefit of nroff/troff, -+'\" not inappropriate doubled escape characters within the r'' raw string. -+include_re = re.compile(r'^include\\s+(\\S+)$', re.M) -+ -+def kfile_scan(node, env, path, arg): -+ contents = node.get_text_contents() -+ includes = include_re.findall(contents) -+ return env.File(includes) -+ -+kscan = Scanner(name = 'kfile', -+ function = kfile_scan, -+ argument = None, -+ skeys = ['.k']) -+scanners = Environment().Dictionary('SCANNERS') -+env = Environment(SCANNERS = scanners + [kscan]) -+ -+env.Command('foo', 'foo.k', 'kprocess < $SOURCES > $TARGET') -+ -+bar_in = File('bar.in') -+env.Command('bar', bar_in, 'kprocess $SOURCES > $TARGET') -+bar_in.target_scanner = kscan -+.EE -+ -+It is important to note that you -+have to return a list of File nodes from the scan function, simple -+strings for the file names won't do. As in the examples we are showing here, -+you can use the -+.BR File() -+function of your current Environment in order to create nodes on the fly from -+a sequence of file names with relative paths. -+ -+Here is a similar but more complete example that searches -+a path of directories -+(specified as the -+.B MYPATH -+construction variable) -+for files that actually exist: -+ -+.ES -+import re -+import os -+include_re = re.compile(r'^include\\s+(\\S+)$', re.M) -+ -+def my_scan(node, env, path, arg): -+ contents = node.get_text_contents() -+ includes = include_re.findall(contents) -+ if includes == []: -+ return [] -+ results = [] -+ for inc in includes: -+ for dir in path: -+ file = str(dir) + os.sep + inc -+ if os.path.exists(file): -+ results.append(file) -+ break -+ return env.File(results) -+ -+scanner = Scanner(name = 'myscanner', -+ function = my_scan, -+ argument = None, -+ skeys = ['.x'], -+ path_function = FindPathDirs('MYPATH') -+ ) -+scanners = Environment().Dictionary('SCANNERS') -+env = Environment(SCANNERS = scanners + [scanner], -+ MYPATH = ['incs']) -+ -+env.Command('foo', 'foo.x', 'xprocess < $SOURCES > $TARGET') -+.EE -+ -+The -+.BR FindPathDirs () -+function used in the previous example returns a function -+(actually a callable Python object) -+that will return a list of directories -+specified in the -+.B $MYPATH -+construction variable. It lets SCons detect the file -+.B incs/foo.inc -+, even if -+.B foo.x -+contains the line -+.B include foo.inc -+only. -+If you need to customize how the search path is derived, -+you would provide your own -+.B path_function -+argument when creating the Scanner object, -+as follows: -+ -+.ES -+# MYPATH is a list of directories to search for files in -+def pf(env, dir, target, source, arg): -+ top_dir = Dir('#').abspath -+ results = [] -+ if 'MYPATH' in env: -+ for p in env['MYPATH']: -+ results.append(top_dir + os.sep + p) -+ return results -+ -+scanner = Scanner(name = 'myscanner', -+ function = my_scan, -+ argument = None, -+ skeys = ['.x'], -+ path_function = pf -+ ) -+.EE -+ -+.SS Creating a Hierarchical Build -+ -+Notice that the file names specified in a subdirectory's -+SConscript -+file are relative to that subdirectory. -+ -+.ES -+SConstruct: -+ -+ env = Environment() -+ env.Program(target = 'foo', source = 'foo.c') -+ -+ SConscript('sub/SConscript') -+ -+sub/SConscript: -+ -+ env = Environment() -+ # Builds sub/foo from sub/foo.c -+ env.Program(target = 'foo', source = 'foo.c') -+ -+ SConscript('dir/SConscript') -+ -+sub/dir/SConscript: -+ -+ env = Environment() -+ # Builds sub/dir/foo from sub/dir/foo.c -+ env.Program(target = 'foo', source = 'foo.c') -+.EE -+ -+.SS Sharing Variables Between SConscript Files -+ -+You must explicitly Export() and Import() variables that -+you want to share between SConscript files. -+ -+.ES -+SConstruct: -+ -+ env = Environment() -+ env.Program(target = 'foo', source = 'foo.c') -+ -+ Export("env") -+ SConscript('subdirectory/SConscript') -+ -+subdirectory/SConscript: -+ -+ Import("env") -+ env.Program(target = 'foo', source = 'foo.c') -+.EE -+ -+.SS Building Multiple Variants From the Same Source -+ -+Use the variant_dir keyword argument to -+the SConscript function to establish -+one or more separate variant build directory trees -+for a given source directory: -+ -+.ES -+SConstruct: -+ -+ cppdefines = ['FOO'] -+ Export("cppdefines") -+ SConscript('src/SConscript', variant_dir='foo') -+ -+ cppdefines = ['BAR'] -+ Export("cppdefines") -+ SConscript('src/SConscript', variant_dir='bar') -+ -+src/SConscript: -+ -+ Import("cppdefines") -+ env = Environment(CPPDEFINES = cppdefines) -+ env.Program(target = 'src', source = 'src.c') -+.EE -+ -+Note the use of the Export() method -+to set the "cppdefines" variable to a different -+value each time we call the SConscript function. -+ -+.SS Hierarchical Build of Two Libraries Linked With a Program -+ -+.ES -+SConstruct: -+ -+ env = Environment(LIBPATH = ['#libA', '#libB']) -+ Export('env') -+ SConscript('libA/SConscript') -+ SConscript('libB/SConscript') -+ SConscript('Main/SConscript') -+ -+libA/SConscript: -+ -+ Import('env') -+ env.Library('a', Split('a1.c a2.c a3.c')) -+ -+libB/SConscript: -+ -+ Import('env') -+ env.Library('b', Split('b1.c b2.c b3.c')) -+ -+Main/SConscript: -+ -+ Import('env') -+ e = env.Copy(LIBS = ['a', 'b']) -+ e.Program('foo', Split('m1.c m2.c m3.c')) -+.EE -+ -+The '#' in the LIBPATH directories specify that they're relative to the -+top-level directory, so they don't turn into "Main/libA" when they're -+used in Main/SConscript. -+ -+Specifying only 'a' and 'b' for the library names -+allows SCons to append the appropriate library -+prefix and suffix for the current platform -+(for example, 'liba.a' on POSIX systems, -+\&'a.lib' on Windows). -+ -+.SS Customizing construction variables from the command line. -+ -+The following would allow the C compiler to be specified on the command -+line or in the file custom.py. -+ -+.ES -+vars = Variables('custom.py') -+vars.Add('CC', 'The C compiler.') -+env = Environment(variables=vars) -+Help(vars.GenerateHelpText(env)) -+.EE -+ -+The user could specify the C compiler on the command line: -+ -+.ES -+scons "CC=my_cc" -+.EE -+ -+or in the custom.py file: -+ -+.ES -+CC = 'my_cc' -+.EE -+ -+or get documentation on the options: -+ -+.ES -+$ scons -h -+ -+CC: The C compiler. -+ default: None -+ actual: cc -+ -+.EE -+ -+.SS Using Microsoft Visual C++ precompiled headers -+ -+Since windows.h includes everything and the kitchen sink, it can take quite -+some time to compile it over and over again for a bunch of object files, so -+Microsoft provides a mechanism to compile a set of headers once and then -+include the previously compiled headers in any object file. This -+technology is called precompiled headers. The general recipe is to create a -+file named "StdAfx.cpp" that includes a single header named "StdAfx.h", and -+then include every header you want to precompile in "StdAfx.h", and finally -+include "StdAfx.h" as the first header in all the source files you are -+compiling to object files. For example: -+ -+StdAfx.h: -+.ES -+#include -+#include -+.EE -+ -+StdAfx.cpp: -+.ES -+#include -+.EE -+ -+Foo.cpp: -+.ES -+#include -+ -+/* do some stuff */ -+.EE -+ -+Bar.cpp: -+.ES -+#include -+ -+/* do some other stuff */ -+.EE -+ -+SConstruct: -+.ES -+env=Environment() -+env['PCHSTOP'] = 'StdAfx.h' -+env['PCH'] = env.PCH('StdAfx.cpp')[0] -+env.Program('MyApp', ['Foo.cpp', 'Bar.cpp']) -+.EE -+ -+For more information see the document for the PCH builder, and the PCH and -+PCHSTOP construction variables. To learn about the details of precompiled -+headers consult the MSDN documention for /Yc, /Yu, and /Yp. -+ -+.SS Using Microsoft Visual C++ external debugging information -+ -+Since including debugging information in programs and shared libraries can -+cause their size to increase significantly, Microsoft provides a mechanism -+for including the debugging information in an external file called a PDB -+file. SCons supports PDB files through the PDB construction -+variable. -+ -+SConstruct: -+.ES -+env=Environment() -+env['PDB'] = 'MyApp.pdb' -+env.Program('MyApp', ['Foo.cpp', 'Bar.cpp']) -+.EE -+ -+For more information see the document for the PDB construction variable. -+ -+.SH ENVIRONMENT -+ -+.IP SCONS_LIB_DIR -+Specifies the directory that contains the SCons Python module directory -+(e.g. /home/aroach/scons-src-0.01/src/engine). -+ -+.IP SCONSFLAGS -+A string of options that will be used by scons in addition to those passed -+on the command line. -+ -+.SH "SEE ALSO" -+.B scons -+User Manual, -+.B scons -+Design Document, -+.B scons -+source code. -+ -+.SH AUTHORS -+Steven Knight -+.br -+Anthony Roach -+ -Index: scons/sconsign.1 -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ scons/sconsign.1 2014-04-26 12:20:51.007589417 +0200 -@@ -0,0 +1,208 @@ -+.\" Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation -+.\" -+.\" 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. -+.\" -+.\" doc/man/sconsign.1 2013/03/03 09:48:35 garyo -+.\" -+.\" ES - Example Start - indents and turns off line fill -+.de ES -+.RS -+.nf -+.. -+.\" EE - Example End - ends indent and turns line fill back on -+.de EE -+.RE -+.fi -+.. -+.TH SCONSIGN 1 "March 2013" -+.SH NAME -+sconsign \- print SCons .sconsign file information -+.SH SYNOPSIS -+.B sconsign -+[ -+.IR options ... -+] -+.IR file -+[ ... ] -+.SH DESCRIPTION -+ -+The -+.B sconsign -+command -+displays the contents of one or more -+.B .sconsign -+files specified by the user. -+ -+By default, -+.B sconsign -+dumps the entire contents of the -+specified file(s). -+Each entry is printed in the following format: -+ -+ file: signature timestamp length -+ implicit_dependency_1: signature timestamp length -+ implicit_dependency_2: signature timestamp length -+ action_signature [action string] -+ -+.B None -+is printed -+in place of any missing timestamp, bsig, or csig -+values for -+any entry -+or any of its dependencies. -+If the entry has no implicit dependencies, -+or no build action, -+the lines are simply omitted. -+ -+By default, -+.B sconsign -+assumes that any -+.I file -+arguments that end with a -+.B .dbm -+suffix contains -+signature entries for -+more than one directory -+(that is, -+was specified by the -+.B SConsignFile () -+function). -+Any -+.I file -+argument that does not end in -+.B .dbm -+is assumed to be a traditional -+.B .sconsign -+file containing the signature entries -+for a single directory. -+An explicit format -+may be specified using the -+.B -f -+or -+.B --file= -+options. -+ -+.SH OPTIONS -+ -+Various options control what information is printed -+and the format: -+ -+.TP -+-a, --act, --action -+Prints the build action information -+for all entries or the specified entries. -+ -+.TP -+-c, --csig -+Prints the content signature (csig) information -+for all entries or the specified entries. -+ -+.TP -+-d DIRECTORY, --dir=DIRECTORY -+When the signatures are being -+read from a -+.B .dbm -+file, or the -+.B -f dbm -+or -+.B --format=dbm -+options are used, -+prints information about -+only the signatures -+for entries in the specified -+.IR DIRECTORY . -+ -+.TP -+-e ENTRY, --entry=ENTRY -+Prints information about only the specified -+.IR ENTRY . -+Multiple -e options may be used, -+in which case information about each -+.I ENTRY -+is printed in the order in which the -+options are specified on the command line. -+ -+.TP -+-f FORMAT, --format=FORMAT -+The file(s) to be printed -+are in the specified -+.IR FORMAT . -+Legal values are -+.B dbm -+(the DBM format used -+when the -+.BR SConsignFile () -+function is used) -+or -+.B sconsign -+(the default format -+used for an individual -+.B .sconsign -+file in each directory). -+ -+.TP -+-h, --help -+Prints a help message and exits. -+ -+.TP -+-i, --implicit -+Prints the list of cached implicit dependencies -+for all entries or the the specified entries. -+ -+.TP -+--raw -+Prints a pretty-printed representation -+of the raw Python dictionary that holds -+build information about individual entry -+(both the entry itself or its implicit dependencies). -+An entry's build action is still printed in its usual format. -+ -+.TP -+-r, --readable -+Prints timestamps in a human-readable string, -+enclosed in single quotes. -+ -+.TP -+-t, --timestamp -+Prints the timestamp information -+for all entries or the specified entries. -+ -+.TP -+-v, --verbose -+Prints labels identifying each field being printed. -+ -+.SH ENVIRONMENT -+ -+.IP SCONS_LIB_DIR -+Specifies the directory that contains the SCons Python module directory -+(e.g. /home/aroach/scons-src-0.01/src/engine). -+on the command line. -+ -+.SH "SEE ALSO" -+.BR scons , -+.B scons -+User Manual, -+.B scons -+Design Document, -+.B scons -+source code. -+ -+.SH AUTHORS -+Steven Knight diff --git a/debian/patches/parallel_build.patch b/debian/patches/parallel_build.patch deleted file mode 100644 index 3af9a90..0000000 --- a/debian/patches/parallel_build.patch +++ /dev/null @@ -1,38 +0,0 @@ -Description: Disable parallel build on sparc machines -Origin: Debian -Bug-Debian: http://bugs.debian.org/632228 -Forwarded: no - -Index: scons/engine/SCons/Job.py -=================================================================== ---- scons.orig/engine/SCons/Job.py 2011-07-02 13:09:20.281651892 +0200 -+++ scons/engine/SCons/Job.py 2011-07-02 13:12:49.925651735 +0200 -@@ -83,7 +83,7 @@ - """ - - self.job = None -- if num > 1: -+ if num > 1 and not self._check_sparc_machine(): - stack_size = explicit_stack_size - if stack_size is None: - stack_size = default_stack_size -@@ -163,6 +163,19 @@ - except AttributeError: - pass - -+ def _check_sparc_machine(self): -+ """ Check whether machine is sparc""" -+ try: -+ from platform import machine -+ except ImportError: -+ pass -+ else: -+ if 'sparc' in machine(): -+ SCons.Warnings.warn(SCons.Warnings.StackSizeWarning, -+ 'Parallel build disabled on sparc, ' -+ 'see Debian bug #632228') -+ return True -+ - class Serial(object): - """This class is used to execute tasks in series, and is more efficient - than Parallel, but is only appropriate for non-parallel builds. Only diff --git a/debian/patches/remove_stale_files.patch b/debian/patches/remove_stale_files.patch deleted file mode 100644 index 1422d91..0000000 --- a/debian/patches/remove_stale_files.patch +++ /dev/null @@ -1,31 +0,0 @@ -Description: Remove stale files created by SCons when building Debian packages -Origin: Debian -Bug-Debian: http://bugs.debian.org/519948 -Forwarded: http://scons.tigris.org/issues/show_bug.cgi?id=1571 - -Index: b/engine/SCons/Script/Main.py -=================================================================== ---- a/engine/SCons/Script/Main.py 2010-01-23 15:11:19.624932557 +0100 -+++ b/engine/SCons/Script/Main.py 2010-01-23 15:11:35.084931903 +0100 -@@ -1087,6 +1087,21 @@ - print 'Found nothing to build' - exit_status = 2 - -+ # Remove temporary files left by SCons -+ if options.clean: -+ if os.environ.has_key('DH_INTERNAL_OPTIONS'): -+ import shutil -+ for path in ('.sconsign.dblite', '.sconf_temp'): -+ try: -+ if os.path.isfile(path): -+ print 'Removing autogenerated file %s' % path -+ os.remove(path) -+ if os.path.isdir(path): -+ print 'Removing autogenerated directory %s' % path -+ shutil.rmtree(path) -+ except OSError: -+ pass -+ - def _build_targets(fs, options, targets, target_top): - - global this_build_status diff --git a/debian/patches/series b/debian/patches/series deleted file mode 100644 index bb71714..0000000 --- a/debian/patches/series +++ /dev/null @@ -1,4 +0,0 @@ -java_ignore_nonexistent_files.patch -remove_stale_files.patch -parallel_build.patch -manpages.patch -- cgit v1.2.3