summaryrefslogtreecommitdiff
path: root/scons.1
diff options
context:
space:
mode:
Diffstat (limited to 'scons.1')
-rw-r--r--scons.115895
1 files changed, 0 insertions, 15895 deletions
diff --git a/scons.1 b/scons.1
index 67f777d..e69de29 100644
--- a/scons.1
+++ b/scons.1
@@ -1,15895 +0,0 @@
-.\" 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
-conjuction 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).
-
-<note>
-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.</para></note>
-
-.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 overriden 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 easilly
-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
-<productname>autotools</productname>, 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). Additionaly, 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).
-
-<note>
-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.</para></note>
-
-
-'\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-.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 <Fmwk/Header.h>.
-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}<basename>${QT_MOCCXXSUFFIX}, by default
-<basename>.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<dir>\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).
-<note>This variable works only together with \fB$XGETTEXTFROM\fP
-</para></note>
-See also &t-link-xgettext; tool and \fBPOTUpdate\fP() builder.
-
-.IP _XGETTEXTPATHFLAGS
-Internal "macro". Generates list of \fB\-f<file>\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 <qapp.h>
-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 explictly 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 <windows.h>
-#include <my_big_header.h>
-.EE
-
-StdAfx.cpp:
-.ES
-#include <StdAfx.h>
-.EE
-
-Foo.cpp:
-.ES
-#include <StdAfx.h>
-
-/* do some stuff */
-.EE
-
-Bar.cpp:
-.ES
-#include <StdAfx.h>
-
-/* 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 <knight@baldmt.com>
-.br
-Anthony Roach <aroach@electriceyeball.com>
-