diff --git a/.gitignore b/.gitignore index 50c4279..19a7b84 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,5 @@ /scons-3.0.0.tar.gz /scons-3.0.1.tar.gz /scons-3.0.4.tar.gz +/scons-3.0.5.tar.gz +/scons-doc-3.0.5.tar.gz diff --git a/scons-man.html b/scons-man.html deleted file mode 100644 index 29fa771..0000000 --- a/scons-man.html +++ /dev/null @@ -1,13961 +0,0 @@ -SCons 3.0.4

SCons 3.0.4

MAN page

Steven Knight and the SCons Development Team

Steven Knight

version 3.0.4

2004 - 2019


Name

scons — a software construction tool

Synopsis

scons [options...] [name=val...] [targets...]

DESCRIPTION

The -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, -scons -searches for a file named -SConstruct, -Sconstruct, -sconstruct, -SConstruct.py -Sconstruct.py -or -sconstruct.py -(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 --f -option.

The -SConstruct -file can specify subsidiary -configuration files using the -SConscript() -function. -By convention, -these subsidiary files are named -SConscript, -although any name may be used. -(Because of this naming convention, -the term "SConscript files" -is sometimes used to refer -generically to all -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 -SConstruct -file, -scons -looks for a directory named -site_scons -in various system directories (see below) and the directory containing the -SConstruct -file; for each of those dirs which exists, -site_scons -is prepended to sys.path, -the file -site_scons/site_init.py, -is evaluated if it exists, -and the directory -site_scons/site_tools -is prepended to the default toolpath if it exists. -See the ---no-site-dir -and ---site-dir -options for more details.

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. -scons, -however, reads and executes all of the SConscript files -before -it begins building any targets. -To make this obvious, -scons -prints the following messages about what it is doing:

-$ scons foo.out
-scons: Reading SConscript files ...
-scons: done reading SConscript files.
-scons: Building targets  ...
-cp foo.in foo.out
-scons: done building targets.
-$
-

The status messages -(everything except the line that reads "cp foo.in foo.out") -may be suppressed using the --Q -option.

scons -does not automatically propagate -the external environment used to execute -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 -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, -scons -will not find them unless -you explicitly set the PATH -to include those locations. -Whenever you create an -scons -construction environment, -you can propagate the value of PATH -from your external environment as follows:

-import os
-env = Environment(ENV = {'PATH' : os.environ['PATH']})
-

Similarly, if the commands use external environment variables -like $PATH, $HOME, $JAVA_HOME, $LANG, $SHELL, $TERM, etc., -these variables can also be explicitly propagated:

-import os
-env = Environment(ENV = {'PATH' : os.environ['PATH'],
-                         'HOME' : os.environ['HOME']})
-

Or you may explicitly propagate the invoking user's -complete external environment:

-import os
-env = Environment(ENV = os.environ)
-

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.

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. -scons -supports the -ability to define new scanners for unknown input file types.

scons -knows how to fetch files automatically from -SCCS or RCS subdirectories -using SCCS, RCS or BitKeeper.

scons -is normally executed in a top-level directory containing a -SConstruct -file, optionally specifying -as command-line arguments -the target file or files to be built.

By default, the command

-scons
-

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 -Default() -function, described below.

Even when -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:

-scons .
-

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):

-scons /
-

or the path name(s) of the volume(s) in which all the targets -should be built (on Windows systems):

-scons C:\ D:\
-

To build only specific targets, -supply them as command-line arguments:

-scons foo bar
-

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 --c -flag removes all files -necessary to build the specified target:

-scons -c .
-

to remove all target files, or:

-scons -c build export
-

to remove target files under build and export. -Additional files or directories to remove can be specified using the -Clean() -function. -Conversely, targets that would normally be removed by the --c -invocation -can be prevented from being removed by using the -NoClean() -function.

A subset of a hierarchical tree may be built by -remaining at the top-level directory (where the -SConstruct -file lives) and specifying the subdirectory as the target to be -built:

-scons src/subdir
-

or by changing directory and invoking scons with the --u -option, which traverses up the directory -hierarchy until it finds the -SConstruct -file, and then builds -targets relatively to the current subdirectory:

-cd src/subdir
-scons -u .
-

scons -supports building multiple targets in parallel via a --j -option that takes, as its argument, the number -of simultaneous tasks that may be spawned:

-scons -j 4
-

builds four targets in parallel, for example.

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 -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 ---cache-force, ---cache-disable, ---cache-readonly, -and ---cache-show -command-line options. The ---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:

-scons debug=1 .
-

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:

-if ARGUMENTS.get('debug', 0):
-    env = Environment(CCFLAGS = '-g')
-else:
-    env = Environment()
-

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.

scons -requires either Python 2.7 or Python 3.5 or higher. -There should be no other dependencies or requirements to run -scons.

By default, -scons -knows how to search for available programming tools -on various systems. -On Windows systems, -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, -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, -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, -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.

OPTIONS

In general, -scons -supports the same command-line options as GNU -make, -and many of those supported by -cons.

-b

Ignored for compatibility with non-GNU versions of -make.

-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 -Clean() -function. -Will not remove any targets specified by the -NoClean() -function.

--cache-debug=file

Print debug information about the -CacheDir() -derived-file caching -to the specified -file. -If -file -is -- -(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 -CacheDir() -directory tree.

--cache-disable, --no-cache

Disable the derived-file caching specified by -CacheDir(). -scons -will neither retrieve files from the cache -nor copy files to the cache.

--cache-force, --cache-populate

When using -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 ---cache-disable -option.

--cache-readonly

Use the cache (if enabled) for reading, but do not not update the -cache with changed files. -

--cache-show

When using -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.

--config=mode

This specifies how the -Configure -call should use or generate the -results of configuration tests. -The option should be specified from -among the following choices:

--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.

--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.

--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.

-C directory, --directory=directory

Change to the specified -directory -before searching for the -SConstruct, -Sconstruct, -sconstruct, -SConstruct.py -Sconstruct.py -or -sconstruct.py -file, or doing anything -else. Multiple --C -options are interpreted -relative to the previous one, and the right-most --C -option wins. (This option is nearly -equivalent to --f directory/SConstruct, -except that it will search for -SConstruct, -Sconstruct, -sconstruct, -SConstruct.py -Sconstruct.py -or -sconstruct.py -in the specified directory.)

-D

Works exactly the same way as the --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.

--debug=type

Debug the build process. -type[,type...] -specifies what type of debugging. Multiple types may be specified, -separated by commas. The following types are valid:

--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 --O -(optimized) option -or when the SCons modules -have been compiled with optimization -(that is, when executing from -*.pyo -files).

--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.

--debug=dtree

A synonym for the newer ---tree=derived -option. -This will be deprecated in some future release -and ultimately removed.

--debug=explain

Print an explanation of precisely why -scons -is deciding to (re-)build any targets. -(Note: this does not print anything -for targets that are -not -rebuilt.)

--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.

--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:

-$ scons --debug=includes foo.o
-
--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.

--debug=memory

Prints how much memory SCons uses -before and after reading the SConscript files -and before and after building targets.

--debug=nomemoizer

A deprecated option preserved for backwards compatibility.

--debug=objects

Prints a list of the various objects -of the various classes used internally by SCons.

--debug=pdb

Re-run SCons under the control of the -pdb -Python debugger.

--debug=prepare

Print a line each time any target (internal or external) -is prepared for building. -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 -scons -is at least considering them or not.

--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:

-$ scons --debug=presub
-Building myprog.o with action(s):
-  $SHCC $SHCFLAGS $SHCCFLAGS $CPPFLAGS $_CPPINCFLAGS -c -o $TARGET $SOURCES
-...
-
--debug=stacktrace

Prints an internal Python stack trace -when encountering an otherwise unexplained error.

--debug=stree

A synonym for the newer ---tree=all,status -option. -This will be deprecated in some future release -and ultimately removed.

--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)

  • The total time spent executing all build commands

  • The elapsed wall-clock time spent executing those build commands

  • The time spent processing each file passed to the SConscript() function

-(When -scons -is executed without the --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 -scons -is executed -with -the --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.) -

--debug=tree

A synonym for the newer ---tree=all -option. -This will be deprecated in some future release -and ultimately removed.

--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 -types -argument can be set to: -all, -to enable all checks explicitly -(the default behavior); -none, -to disable all such checks; -match, -to check that files and directories on disk -match SCons' expected configuration; -rcs, -to check for the existence of an RCS source -for any missing source or include files; -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, ---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).

--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. -ORDER -must be one of -hard-soft-copy -(the default), -soft-hard-copy, -hard-copy, -soft-copy -or -copy. -SCons will attempt to duplicate files using -the mechanisms in the specified order.

--enable-virtualenv

Import virtualenv-related variables to SCons.

-f file, --file=file, --makefile=file, --sconstruct=file

Use -file -as the initial SConscript file. -Multiple --f -options may be specified, -in which case -scons -will read all of the specified files.

-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 --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.

-H, --help-options

Print the standard help message about command-line options and -exit.

-i, --ignore-errors

Ignore all errors from commands executed to rebuild files.

-I directory, --include-dir=directory

Specifies a -directory -to search for -imported Python modules. If several --I -options -are used, the directories are searched in the order specified.

--ignore-virtualenv

Suppress importing virtualenv-related variables to SCons.

--implicit-cache

Cache implicit dependencies. -This causes -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:

scons -will not detect changes to implicit dependency search paths -(e.g. -CPPPATH, LIBPATH) -that would ordinarily -cause different versions of same-named files to be used.

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. -CPPPATH, LIBPATH) -than a current implicit dependency with the same name.

--implicit-deps-changed

Forces SCons to ignore the cached implicit dependencies. This causes the -implicit dependencies to be rescanned and recached. This implies ---implicit-cache.

--implicit-deps-unchanged

Force SCons to ignore changes in the implicit dependencies. -This causes cached implicit dependencies to always be used. -This implies ---implicit-cache.

--interactive

Starts SCons in interactive mode. -The SConscript files are read once and a -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:

build[OPTIONS] [TARGETS] ...

Builds the specified -TARGETS -(and their dependencies) -with the specified -SCons command-line -OPTIONS. -b -and -scons -are synonyms.

The following SCons command-line options affect the -build -command:

---cache-debug=FILE
---cache-disable, --no-cache
---cache-force, --cache-populate
---cache-readonly
---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
-

Any other SCons command-line options that are specified -do not cause errors -but have no effect on the -build -command -(mainly because they affect how the SConscript files are read, -which only happens once at the beginning of interactive mode).

clean[OPTIONS] [TARGETS] ...

Cleans the specified -TARGETS -(and their dependencies) -with the specified options. -c -is a synonym. -This command is itself a synonym for -build --clean

exit

Exits SCons interactive mode. -You can also exit by terminating input -(CTRL+D on UNIX or Linux systems, -CTRL+Z on Windows systems).

help[COMMAND]

Provides a help message about -the commands available in SCons interactive mode. -If -COMMAND -is specified, -h -and -? -are synonyms.

shell[COMMANDLINE]

Executes the specified -COMMANDLINE -in a subshell. -If no -COMMANDLINE -is specified, -executes the interactive command interpreter -specified in the -SHELL -environment variable -(on UNIX and Linux systems) -or the -COMSPEC -environment variable -(on Windows systems). -sh -and -! -are synonyms.

version

Prints SCons version information.

An empty line repeats the last typed command. -Command-line editing can be used if the -readline -module is available.

-$ scons --interactive
-scons: Reading SConscript files ...
-scons: done reading SConscript files.
-scons>>> build -n prog
-scons>>> exit
-
-j N, --jobs=N

Specifies the number of jobs (commands) to run simultaneously. -If there is more than one --j -option, the last one is effective.

-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.

-m

Ignored for compatibility with non-GNU versions of -make.

--max-drift=SECONDS

Set the maximum expected drift in the modification time of files to -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.

--md5-chunksize=KILOBYTES

Set the block size used to compute MD5 signatures to -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.

-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.

--no-site-dir

Prevents the automatic addition of the standard -site_scons -dirs to -sys.path. -Also prevents loading the -site_scons/site_init.py -modules if they exist, and prevents adding their -site_scons/site_tools -dirs to the toolpath.

--profile=file

Run SCons under the Python profiler -and save the results in the specified -file. -The results may be analyzed using the Python -pstats module.

-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.

-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.

--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.

-s, --silent, --quiet

Silent. Do not print commands that are executed to rebuild -target files. -Also suppresses SCons status messages.

-S, --no-keep-going, --stop

Ignored for compatibility with GNU -make.

--site-dir=dir

Uses the named dir as the site dir rather than the default -site_scons -dirs. This dir will get prepended to -sys.path, -the module -dir/site_init.py -will get loaded if it exists, and -dir/site_tools -will get added to the default toolpath.

The default set of -site_scons -dirs used when ---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.

Windows:
-%ALLUSERSPROFILE/Application Data/scons/site_scons
-%USERPROFILE%/Local Settings/Application Data/scons/site_scons
-%APPDATA%/scons/site_scons
-%HOME%/.scons/site_scons
-./site_scons
-
Mac OS X:
-/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
-
Solaris:
-/opt/sfw/scons/site_scons
-/usr/share/scons/site_scons
-$HOME/.scons/site_scons
-./site_scons
-
Linux, HPUX, and other Posix-like systems:
-/usr/share/scons/site_scons
-$HOME/.scons/site_scons
-./site_scons
-
--stack-size=KILOBYTES

Set the size stack used to run threads to -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 -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.

-t, --touch

Ignored for compatibility with GNU -make. -(Touching a file to make it -appear up-to-date is unnecessary when using -scons.)

--taskmastertrace=file

Prints trace information to the specified -file -about how the internal Taskmaster object -evaluates and controls the order in which Nodes are built. -A file name of -- -may be used to specify the standard output.

-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 -options -specified:

--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.

--tree=derived

Restricts the tree output to only derived (target) files, -not source files.

--tree=status

Prints status information for each displayed node.

--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 -[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.

Multiple options may be specified, -separated by commas:

-# 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
-
-u, --up, --search-up

Walks up the directory structure until an -SConstruct , -Sconstruct , -sconstruct , -SConstruct.py -Sconstruct.py -or -sconstruct.py -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.

-U

Works exactly the same way as the --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.

-v, --version

Print the -scons -version, copyright information, -list of authors, and any other relevant information. -Then exit.

-w, --print-directory

Print a message containing the working directory before and -after other processing.

--no-print-directory

Turn off -w, even if it was turned on implicitly.

--warn=type, --warn=no-type

Enable or disable warnings. -type -specifies the type of warnings to be enabled or disabled:

--warn=all, --warn=no-all

Enables or disables all warnings.

--warn=cache-version, --warn=no-cache-version

Enables or disables warnings about the cache directory not using -the latest configuration information -CacheDir(). -These warnings are enabled by default.

--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 -CacheDir(). -These warnings are disabled by default.

--warn=corrupt-sconsign, --warn=no-corrupt-sconsign

Enables or disables warnings about unfamiliar signature data in -.sconsign -files. -These warnings are enabled by default.

--warn=dependency, --warn=no-dependency

Enables or disables warnings about dependencies. -These warnings are disabled by default.

--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 ---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.

--warn=deprecated-copy, --warn=no-deprecated-copy

Enables or disables warnings about use of the deprecated -env.Copy() -method.

--warn=deprecated-source-signatures, --warn=no-deprecated-source-signatures

Enables or disables warnings about use of the deprecated -SourceSignatures() -function or -env.SourceSignatures() -method.

--warn=deprecated-target-signatures, --warn=no-deprecated-target-signatures

Enables or disables warnings about use of the deprecated -TargetSignatures() -function or -env.TargetSignatures() -method.

--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.

--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.

--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.

--warn=link, --warn=no-link

Enables or disables warnings about link steps.

--warn=misleading-keywords, --warn=no-misleading-keywords

Enables or disables warnings about use of the misspelled keywords -targets -and -sources -when calling Builders. -(Note the last -s -characters, the correct spellings are -target -and -source.) -These warnings are enabled by default.

--warn=missing-sconscript, --warn=no-missing-sconscript

Enables or disables warnings about missing SConscript files. -These warnings are enabled by default.

--warn=no-object-count, --warn=no-no-object-count

Enables or disables warnings about the ---debug=object -feature not working when -scons -is run with the python --O -option or from optimized Python (.pyo) modules.

--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 --j -option is used. -These warnings are enabled by default.

--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.

--warn=reserved-variable, --warn=no-reserved-variable

Enables or disables warnings about attempts to set the -reserved construction variable names -CHANGED_SOURCES, -CHANGED_TARGETS, -TARGET, -TARGETS, -SOURCE, -SOURCES, -UNCHANGED_SOURCES -or -UNCHANGED_TARGETS. -These warnings are disabled by default.

--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.

--warn=target_not_build, --warn=no-target_not_built

Enables or disables warnings about a build rule not building the - expected targets. These warnings are not currently enabled by default.

-Y repository, --repository=repository, --srcdir=repository

Search the specified repository for any input and target -files not found in the local directory hierarchy. Multiple --Y -options may be specified, in which case the -repositories are searched in the order specified.

CONFIGURATION FILE REFERENCE

Construction Environments

A construction environment is the basic means by which the SConscript -files communicate build information to -scons. -A new construction environment is created using the -Environment -function:

-env = Environment()
-

Variables, called -construction -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:

-env = Environment(FOO = 'foo')
-env['BAR'] = 'bar'
-

As a convenience, -construction variables may also be set or modified by the -parse_flags -keyword argument, which applies the -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.

-env = Environment(parse_flags = '-Iinclude -DEBUG -lm')
-

This example adds 'include' to -CPPPATH, -'EBUG' to -CPPDEFINES, -and 'm' to -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:

-env = Environment(platform = 'cygwin')
-env = Environment(platform = 'os2')
-env = Environment(platform = 'posix')
-env = Environment(platform = 'win32')
-

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 -win32 -platform adds the -SystemDrive -and -SystemRoot -variables from the user's external environment -to the construction environment's -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 -: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:

-def my_platform(env):
-    env['VAR'] = 'xyzzy'
-
-env = Environment(platform = my_platform)
-

Additionally, a specific set of tools -with which to initialize the environment -may be specified as an optional keyword argument:

-env = Environment(tools = ['msvc', 'lex'])
-

Non-built-in tools may be specified using the toolpath argument:

-env = Environment(tools = ['default', 'foo'], toolpath = ['tools'])
-

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 -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 -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 -Clone() -and -Tool() -methods:

-base = Environment(toolpath=['custom_path'])
-derived = base.Clone(tools=['custom_tool'])
-derived.CustomBuilder()
-

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:

-def my_tool(env):
-    env['XYZZY'] = 'xyzzy'
-
-env = Environment(tools = [my_tool])
-

The individual elements of the tools list -may also themselves be two-element lists of the form -(toolname, kw_dict). -SCons searches for the -toolname -specification file as described above, and -passes -kw_dict, -which must be a dictionary, as keyword arguments to the tool's -generate -function. -The -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.

-# 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'])
-

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.

One feature now present within Scons is the ability to have nested tools. -Tools which can be located within a subdirectory in the toolpath. -With a nested tool name the dot represents a directory seperator

-# namespaced builder
-env = Environment(ENV = os.environ, tools = ['SubDir1.SubDir2.SomeTool'])
-env.SomeTool(targets, sources)
-
-# Search Paths
-# SCons\Tool\SubDir1\SubDir2\SomeTool.py
-# SCons\Tool\SubDir1\SubDir2\SomeTool\__init__.py
-# .\site_scons\site_tools\SubDir1\SubDir2\SomeTool.py
-# .\site_scons\site_tools\SubDir1\SubDir2\SomeTool\__init__.py
-

SCons supports the following tool specifications out of the box:

386asm

-Sets construction variables for the 386ASM assembler -for the Phar Lap ETS embedded operating system. -

Sets: $AS, $ASCOM, $ASFLAGS, $ASPPCOM, $ASPPFLAGS.

Uses: $CC, $CPPFLAGS, $_CPPDEFFLAGS, $_CPPINCFLAGS.

aixc++

-Sets construction variables for the IMB xlc / Visual Age C++ compiler. -

Sets: $CXX, $CXXVERSION, $SHCXX, $SHOBJSUFFIX.

aixcc

-Sets construction variables for the IBM xlc / Visual Age C compiler. -

Sets: $CC, $CCVERSION, $SHCC.

aixf77

-Sets construction variables for the IBM Visual Age f77 Fortran compiler. -

Sets: $F77, $SHF77.

aixlink

-Sets construction variables for the IBM Visual Age linker. -

Sets: $LINKFLAGS, $SHLIBSUFFIX, $SHLINKFLAGS.

applelink

- Sets construction variables for the Apple linker - (similar to the GNU linker). -

Sets: $APPLELINK_COMPATIBILITY_VERSION, $APPLELINK_CURRENT_VERSION, $APPLELINK_NO_COMPATIBILITY_VERSION, $APPLELINK_NO_CURRENT_VERSION, $FRAMEWORKPATHPREFIX, $LDMODULECOM, $LDMODULEFLAGS, $LDMODULEPREFIX, $LDMODULESUFFIX, $LINKCOM, $SHLINKCOM, $SHLINKFLAGS, $_APPLELINK_COMPATIBILITY_VERSION, $_APPLELINK_CURRENT_VERSION, $_FRAMEWORKPATH, $_FRAMEWORKS.

Uses: $FRAMEWORKSFLAGS.

ar

-Sets construction variables for the ar library archiver. -

Sets: $AR, $ARCOM, $ARFLAGS, $LIBPREFIX, $LIBSUFFIX, $RANLIB, $RANLIBCOM, $RANLIBFLAGS.

as

-Sets construction variables for the as assembler. -

Sets: $AS, $ASCOM, $ASFLAGS, $ASPPCOM, $ASPPFLAGS.

Uses: $CC, $CPPFLAGS, $_CPPDEFFLAGS, $_CPPINCFLAGS.

bcc32

-Sets construction variables for the bcc32 compiler. -

Sets: $CC, $CCCOM, $CCFLAGS, $CFILESUFFIX, $CFLAGS, $CPPDEFPREFIX, $CPPDEFSUFFIX, $INCPREFIX, $INCSUFFIX, $SHCC, $SHCCCOM, $SHCCFLAGS, $SHCFLAGS, $SHOBJSUFFIX.

Uses: $_CPPDEFFLAGS, $_CPPINCFLAGS.

cc

-Sets construction variables for generic POSIX C copmilers. -

Sets: $CC, $CCCOM, $CCFLAGS, $CFILESUFFIX, $CFLAGS, $CPPDEFPREFIX, $CPPDEFSUFFIX, $FRAMEWORKPATH, $FRAMEWORKS, $INCPREFIX, $INCSUFFIX, $SHCC, $SHCCCOM, $SHCCFLAGS, $SHCFLAGS, $SHOBJSUFFIX.

Uses: $PLATFORM.

clang

-Set construction variables for the Clang C compiler. -

Sets: $CC, $CCVERSION, $SHCCFLAGS.

clangxx

-Set construction variables for the Clang C++ compiler. -

Sets: $CXX, $CXXVERSION, $SHCXXFLAGS, $SHOBJSUFFIX, $STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME.

cvf

-Sets construction variables for the Compaq Visual Fortran compiler. -

Sets: $FORTRAN, $FORTRANCOM, $FORTRANMODDIR, $FORTRANMODDIRPREFIX, $FORTRANMODDIRSUFFIX, $FORTRANPPCOM, $OBJSUFFIX, $SHFORTRANCOM, $SHFORTRANPPCOM.

Uses: $CPPFLAGS, $FORTRANFLAGS, $SHFORTRANFLAGS, $_CPPDEFFLAGS, $_FORTRANINCFLAGS, $_FORTRANMODFLAG.

cXX

-Sets construction variables for generic POSIX C++ compilers. -

Sets: $CPPDEFPREFIX, $CPPDEFSUFFIX, $CXX, $CXXCOM, $CXXFILESUFFIX, $CXXFLAGS, $INCPREFIX, $INCSUFFIX, $OBJSUFFIX, $SHCXX, $SHCXXCOM, $SHCXXFLAGS, $SHOBJSUFFIX.

Uses: $CXXCOMSTR.

cyglink

-Set construction variables for cygwin linker/loader. -

Sets: $IMPLIBPREFIX, $IMPLIBSUFFIX, $LDMODULEVERSIONFLAGS, $LINKFLAGS, $RPATHPREFIX, $RPATHSUFFIX, $SHLIBPREFIX, $SHLIBSUFFIX, $SHLIBVERSIONFLAGS, $SHLINKCOM, $SHLINKFLAGS, $_LDMODULEVERSIONFLAGS, $_SHLIBVERSIONFLAGS.

default

-Sets variables by calling a default list of Tool modules -for the platform on which SCons is running. -

dmd

-Sets construction variables for D language compiler DMD. -

Sets: $DC, $DCOM, $DDEBUG, $DDEBUGPREFIX, $DDEBUGSUFFIX, $DFILESUFFIX, $DFLAGPREFIX, $DFLAGS, $DFLAGSUFFIX, $DINCPREFIX, $DINCSUFFIX, $DLIB, $DLIBCOM, $DLIBDIRPREFIX, $DLIBDIRSUFFIX, $DLIBFLAGPREFIX, $DLIBFLAGSUFFIX, $DLIBLINKPREFIX, $DLIBLINKSUFFIX, $DLINK, $DLINKCOM, $DLINKFLAGPREFIX, $DLINKFLAGS, $DLINKFLAGSUFFIX, $DPATH, $DRPATHPREFIX, $DRPATHSUFFIX, $DShLibSonameGenerator, $DVERPREFIX, $DVERSIONS, $DVERSUFFIX, $SHDC, $SHDCOM, $SHDLIBVERSION, $SHDLIBVERSIONFLAGS, $SHDLINK, $SHDLINKCOM, $SHDLINKFLAGS.

docbook

This tool tries to make working with Docbook in SCons a little easier. -It provides several toolchains for creating different output formats, -like HTML or PDF. Contained in the package is -a distribution of the Docbook XSL stylesheets as of version 1.76.1. -As long as you don't specify your own stylesheets for customization, -these official versions are picked as default...which should reduce -the inevitable setup hassles for you. -

Implicit dependencies to images and XIncludes are detected automatically -if you meet the HTML requirements. The additional -stylesheet utils/xmldepend.xsl by Paul DuBois is used for this purpose. -

Note, that there is no support for XML catalog resolving offered! This tool calls -the XSLT processors and PDF renderers with the stylesheets you specified, that's it. -The rest lies in your hands and you still have to know what you're doing when -resolving names via a catalog. -

For activating the tool "docbook", you have to add its name to the Environment constructor, -like this -

env = Environment(tools=['docbook'])
-

On its startup, the Docbook tool tries to find a required xsltproc processor, and -a PDF renderer, e.g. fop. So make sure that these are added to your system's environment -PATH and can be called directly, without specifying their full path. -

For the most basic processing of Docbook to HTML, you need to have installed -

  • the Python lxml binding to libxml2, or -

  • the direct Python bindings for libxml2/libxslt, or -

  • a standalone XSLT processor, currently detected are xsltproc, saxon, saxon-xslt -and xalan. -

Rendering to PDF requires you to have one of the applications -fop or xep installed. -

Creating a HTML or PDF document is very simple and straightforward. Say -

env = Environment(tools=['docbook'])
-env.DocbookHtml('manual.html', 'manual.xml')
-env.DocbookPdf('manual.pdf', 'manual.xml')
-

to get both outputs from your XML source manual.xml. As a shortcut, you can -give the stem of the filenames alone, like this: -

env = Environment(tools=['docbook'])
-env.DocbookHtml('manual')
-env.DocbookPdf('manual')
-

and get the same result. Target and source lists are also supported: -

env = Environment(tools=['docbook'])
-env.DocbookHtml(['manual.html','reference.html'], ['manual.xml','reference.xml'])
-

or even -

env = Environment(tools=['docbook'])
-env.DocbookHtml(['manual','reference'])
-

Important

Whenever you leave out the list of sources, you may not specify a file extension! The -Tool uses the given names as file stems, and adds the suffixes for target and source files -accordingly. -

The rules given above are valid for the Builders DocbookHtml, -DocbookPdf, DocbookEpub, DocbookSlidesPdf and DocbookXInclude. For the -DocbookMan transformation you -can specify a target name, but the actual output names are automatically -set from the refname entries in your XML source. -

The Builders DocbookHtmlChunked, DocbookHtmlhelp and -DocbookSlidesHtml are special, in that: -

  1. they create a large set of files, where the exact names and their number depend -on the content of the source file, and -

  2. the main target is always named index.html, i.e. the output name for the -XSL transformation is not picked up by the stylesheets. -

As a result, there is simply no use in specifying a target HTML name. -So the basic syntax for these builders is always: -

env = Environment(tools=['docbook'])
-env.DocbookHtmlhelp('manual')
-

If you want to use a specific XSL file, you can set the -additional xsl parameter to your -Builder call as follows: -

env.DocbookHtml('other.html', 'manual.xml', xsl='html.xsl')
-

Since this may get tedious if you always use the same local naming for your customized XSL files, -e.g. html.xsl for HTML and pdf.xsl for PDF output, a set of -variables for setting the default XSL name is provided. These are: -

DOCBOOK_DEFAULT_XSL_HTML        
-DOCBOOK_DEFAULT_XSL_HTMLCHUNKED        
-DOCBOOK_DEFAULT_XSL_HTMLHELP        
-DOCBOOK_DEFAULT_XSL_PDF        
-DOCBOOK_DEFAULT_XSL_EPUB        
-DOCBOOK_DEFAULT_XSL_MAN        
-DOCBOOK_DEFAULT_XSL_SLIDESPDF        
-DOCBOOK_DEFAULT_XSL_SLIDESHTML        
-

and you can set them when constructing your environment: -

env = Environment(tools=['docbook'],
-                  DOCBOOK_DEFAULT_XSL_HTML='html.xsl',
-                  DOCBOOK_DEFAULT_XSL_PDF='pdf.xsl')
-env.DocbookHtml('manual') # now uses html.xsl
-

Sets: $DOCBOOK_DEFAULT_XSL_EPUB, $DOCBOOK_DEFAULT_XSL_HTML, $DOCBOOK_DEFAULT_XSL_HTMLCHUNKED, $DOCBOOK_DEFAULT_XSL_HTMLHELP, $DOCBOOK_DEFAULT_XSL_MAN, $DOCBOOK_DEFAULT_XSL_PDF, $DOCBOOK_DEFAULT_XSL_SLIDESHTML, $DOCBOOK_DEFAULT_XSL_SLIDESPDF, $DOCBOOK_FOP, $DOCBOOK_FOPCOM, $DOCBOOK_FOPFLAGS, $DOCBOOK_XMLLINT, $DOCBOOK_XMLLINTCOM, $DOCBOOK_XMLLINTFLAGS, $DOCBOOK_XSLTPROC, $DOCBOOK_XSLTPROCCOM, $DOCBOOK_XSLTPROCFLAGS, $DOCBOOK_XSLTPROCPARAMS.

Uses: $DOCBOOK_FOPCOMSTR, $DOCBOOK_XMLLINTCOMSTR, $DOCBOOK_XSLTPROCCOMSTR.

dvi

-Attaches the DVI builder to the -construction environment. -

dvipdf

-Sets construction variables for the dvipdf utility. -

Sets: $DVIPDF, $DVIPDFCOM, $DVIPDFFLAGS.

Uses: $DVIPDFCOMSTR.

dvips

-Sets construction variables for the dvips utility. -

Sets: $DVIPS, $DVIPSFLAGS, $PSCOM, $PSPREFIX, $PSSUFFIX.

Uses: $PSCOMSTR.

f03

-Set construction variables for generic POSIX Fortran 03 compilers. -

Sets: $F03, $F03COM, $F03FLAGS, $F03PPCOM, $SHF03, $SHF03COM, $SHF03FLAGS, $SHF03PPCOM, $_F03INCFLAGS.

Uses: $F03COMSTR, $F03PPCOMSTR, $SHF03COMSTR, $SHF03PPCOMSTR.

f08

-Set construction variables for generic POSIX Fortran 08 compilers. -

Sets: $F08, $F08COM, $F08FLAGS, $F08PPCOM, $SHF08, $SHF08COM, $SHF08FLAGS, $SHF08PPCOM, $_F08INCFLAGS.

Uses: $F08COMSTR, $F08PPCOMSTR, $SHF08COMSTR, $SHF08PPCOMSTR.

f77

-Set construction variables for generic POSIX Fortran 77 compilers. -

Sets: $F77, $F77COM, $F77FILESUFFIXES, $F77FLAGS, $F77PPCOM, $F77PPFILESUFFIXES, $FORTRAN, $FORTRANCOM, $FORTRANFLAGS, $SHF77, $SHF77COM, $SHF77FLAGS, $SHF77PPCOM, $SHFORTRAN, $SHFORTRANCOM, $SHFORTRANFLAGS, $SHFORTRANPPCOM, $_F77INCFLAGS.

Uses: $F77COMSTR, $F77PPCOMSTR, $FORTRANCOMSTR, $FORTRANPPCOMSTR, $SHF77COMSTR, $SHF77PPCOMSTR, $SHFORTRANCOMSTR, $SHFORTRANPPCOMSTR.

f90

-Set construction variables for generic POSIX Fortran 90 compilers. -

Sets: $F90, $F90COM, $F90FLAGS, $F90PPCOM, $SHF90, $SHF90COM, $SHF90FLAGS, $SHF90PPCOM, $_F90INCFLAGS.

Uses: $F90COMSTR, $F90PPCOMSTR, $SHF90COMSTR, $SHF90PPCOMSTR.

f95

-Set construction variables for generic POSIX Fortran 95 compilers. -

Sets: $F95, $F95COM, $F95FLAGS, $F95PPCOM, $SHF95, $SHF95COM, $SHF95FLAGS, $SHF95PPCOM, $_F95INCFLAGS.

Uses: $F95COMSTR, $F95PPCOMSTR, $SHF95COMSTR, $SHF95PPCOMSTR.

fortran

-Set construction variables for generic POSIX Fortran compilers. -

Sets: $FORTRAN, $FORTRANCOM, $FORTRANFLAGS, $SHFORTRAN, $SHFORTRANCOM, $SHFORTRANFLAGS, $SHFORTRANPPCOM.

Uses: $FORTRANCOMSTR, $FORTRANPPCOMSTR, $SHFORTRANCOMSTR, $SHFORTRANPPCOMSTR.

g++

-Set construction variables for the gXX C++ compiler. -

Sets: $CXX, $CXXVERSION, $SHCXXFLAGS, $SHOBJSUFFIX.

g77

-Set construction variables for the g77 Fortran compiler. -Calls the f77 Tool module -to set variables. -

gas

-Sets construction variables for the gas assembler. -Calls the as module. -

Sets: $AS.

gcc

-Set construction variables for the gcc C compiler. -

Sets: $CC, $CCVERSION, $SHCCFLAGS.

gdc

-Sets construction variables for the D language compiler GDC. -

Sets: $DC, $DCOM, $DDEBUG, $DDEBUGPREFIX, $DDEBUGSUFFIX, $DFILESUFFIX, $DFLAGPREFIX, $DFLAGS, $DFLAGSUFFIX, $DINCPREFIX, $DINCSUFFIX, $DLIB, $DLIBCOM, $DLIBDIRPREFIX, $DLIBDIRSUFFIX, $DLIBFLAGPREFIX, $DLIBFLAGSUFFIX, $DLIBLINKPREFIX, $DLIBLINKSUFFIX, $DLINK, $DLINKCOM, $DLINKFLAGPREFIX, $DLINKFLAGS, $DLINKFLAGSUFFIX, $DPATH, $DRPATHPREFIX, $DRPATHSUFFIX, $DShLibSonameGenerator, $DVERPREFIX, $DVERSIONS, $DVERSUFFIX, $SHDC, $SHDCOM, $SHDLIBVERSION, $SHDLIBVERSIONFLAGS, $SHDLINK, $SHDLINKCOM, $SHDLINKFLAGS.

gettext

-This is actually a toolset, which supports internationalization and -localization of software being constructed with SCons. The toolset loads -following tools: -

-

  • - xgettext - to extract internationalized messages from source code to - POT file(s), -

  • - msginit - may be optionally used to initialize PO - files, -

  • - msgmerge - to update PO files, that already contain - translated messages,

  • - msgfmt - to compile textual PO file to binary - installable MO file. -

-

-When you enable gettext, it internally loads all abovementioned tools, -so you're encouraged to see their individual documentation. -

-Each of the above tools provides its own builder(s) which may be used to -perform particular activities related to software internationalization. You -may be however interested in top-level builder -Translate described few paragraphs later. -

-To use gettext tools add 'gettext' tool to your -environment: -

-  env = Environment( tools = ['default', 'gettext'] )
-
gfortran

-Sets construction variables for the GNU F95/F2003 GNU compiler. -

Sets: $F77, $F90, $F95, $FORTRAN, $SHF77, $SHF77FLAGS, $SHF90, $SHF90FLAGS, $SHF95, $SHF95FLAGS, $SHFORTRAN, $SHFORTRANFLAGS.

gnulink

-Set construction variables for GNU linker/loader. -

Sets: $LDMODULEVERSIONFLAGS, $RPATHPREFIX, $RPATHSUFFIX, $SHLIBVERSIONFLAGS, $SHLINKFLAGS, $_LDMODULESONAME, $_SHLIBSONAME.

gs

-This Tool sets the required construction variables for working with -the Ghostscript command. It also registers an appropriate Action -with the PDF Builder (PDF), such that the conversion from -PS/EPS to PDF happens automatically for the TeX/LaTeX toolchain. -Finally, it adds an explicit Ghostscript Builder (Gs) to the -environment. -

Sets: $GS, $GSCOM, $GSFLAGS.

Uses: $GSCOMSTR.

hpc++

-Set construction variables for the compilers aCC on HP/UX systems. -

hpcc

-Set construction variables for the -aCC on HP/UX systems. -Calls the cXX tool for additional variables. -

Sets: $CXX, $CXXVERSION, $SHCXXFLAGS.

hplink

-Sets construction variables for the linker on HP/UX systems. -

Sets: $LINKFLAGS, $SHLIBSUFFIX, $SHLINKFLAGS.

icc

-Sets construction variables for the -icc compiler on OS/2 systems. -

Sets: $CC, $CCCOM, $CFILESUFFIX, $CPPDEFPREFIX, $CPPDEFSUFFIX, $CXXCOM, $CXXFILESUFFIX, $INCPREFIX, $INCSUFFIX.

Uses: $CCFLAGS, $CFLAGS, $CPPFLAGS, $_CPPDEFFLAGS, $_CPPINCFLAGS.

icl

-Sets construction variables for the Intel C/C++ compiler. -Calls the intelc Tool module to set its variables. -

ifl

-Sets construction variables for the Intel Fortran compiler. -

Sets: $FORTRAN, $FORTRANCOM, $FORTRANPPCOM, $SHFORTRANCOM, $SHFORTRANPPCOM.

Uses: $CPPFLAGS, $FORTRANFLAGS, $_CPPDEFFLAGS, $_FORTRANINCFLAGS.

ifort

-Sets construction variables for newer versions -of the Intel Fortran compiler for Linux. -

Sets: $F77, $F90, $F95, $FORTRAN, $SHF77, $SHF77FLAGS, $SHF90, $SHF90FLAGS, $SHF95, $SHF95FLAGS, $SHFORTRAN, $SHFORTRANFLAGS.

ilink

-Sets construction variables for the -ilink linker on OS/2 systems. -

Sets: $LIBDIRPREFIX, $LIBDIRSUFFIX, $LIBLINKPREFIX, $LIBLINKSUFFIX, $LINK, $LINKCOM, $LINKFLAGS.

ilink32

-Sets construction variables for the Borland -ilink32 linker. -

Sets: $LIBDIRPREFIX, $LIBDIRSUFFIX, $LIBLINKPREFIX, $LIBLINKSUFFIX, $LINK, $LINKCOM, $LINKFLAGS.

install

-Sets construction variables for file -and directory installation. -

Sets: $INSTALL, $INSTALLSTR.

intelc

-Sets construction variables for the Intel C/C++ compiler -(Linux and Windows, version 7 and later). -Calls the gcc or msvc -(on Linux and Windows, respectively) -to set underlying variables. -

Sets: $AR, $CC, $CXX, $INTEL_C_COMPILER_VERSION, $LINK.

jar

-Sets construction variables for the jar utility. -

Sets: $JAR, $JARCOM, $JARFLAGS, $JARSUFFIX.

Uses: $JARCOMSTR.

javac

- Sets construction variables for the javac compiler. -

Sets: $JAVABOOTCLASSPATH, $JAVAC, $JAVACCOM, $JAVACFLAGS, $JAVACLASSPATH, $JAVACLASSSUFFIX, $JAVAINCLUDES, $JAVASOURCEPATH, $JAVASUFFIX.

Uses: $JAVACCOMSTR.

javah

-Sets construction variables for the javah tool. -

Sets: $JAVACLASSSUFFIX, $JAVAH, $JAVAHCOM, $JAVAHFLAGS.

Uses: $JAVACLASSPATH, $JAVAHCOMSTR.

latex

-Sets construction variables for the latex utility. -

Sets: $LATEX, $LATEXCOM, $LATEXFLAGS.

Uses: $LATEXCOMSTR.

ldc

-Sets construction variables for the D language compiler LDC2. -

Sets: $DC, $DCOM, $DDEBUG, $DDEBUGPREFIX, $DDEBUGSUFFIX, $DFILESUFFIX, $DFLAGPREFIX, $DFLAGS, $DFLAGSUFFIX, $DINCPREFIX, $DINCSUFFIX, $DLIB, $DLIBCOM, $DLIBDIRPREFIX, $DLIBDIRSUFFIX, $DLIBFLAGPREFIX, $DLIBFLAGSUFFIX, $DLIBLINKPREFIX, $DLIBLINKSUFFIX, $DLINK, $DLINKCOM, $DLINKFLAGPREFIX, $DLINKFLAGS, $DLINKFLAGSUFFIX, $DPATH, $DRPATHPREFIX, $DRPATHSUFFIX, $DShLibSonameGenerator, $DVERPREFIX, $DVERSIONS, $DVERSUFFIX, $SHDC, $SHDCOM, $SHDLIBVERSION, $SHDLIBVERSIONFLAGS, $SHDLINK, $SHDLINKCOM, $SHDLINKFLAGS.

lex

-Sets construction variables for the lex lexical analyser. -

Sets: $LEX, $LEXCOM, $LEXFLAGS.

Uses: $LEXCOMSTR.

link

-Sets construction variables for generic POSIX linkers. -

Sets: $LDMODULE, $LDMODULECOM, $LDMODULEFLAGS, $LDMODULENOVERSIONSYMLINKS, $LDMODULEPREFIX, $LDMODULESUFFIX, $LDMODULEVERSION, $LDMODULEVERSIONFLAGS, $LIBDIRPREFIX, $LIBDIRSUFFIX, $LIBLINKPREFIX, $LIBLINKSUFFIX, $LINK, $LINKCOM, $LINKFLAGS, $SHLIBSUFFIX, $SHLINK, $SHLINKCOM, $SHLINKFLAGS, $__LDMODULEVERSIONFLAGS, $__SHLIBVERSIONFLAGS.

Uses: $LDMODULECOMSTR, $LINKCOMSTR, $SHLINKCOMSTR.

linkloc

-Sets construction variables for the -LinkLoc -linker for the Phar Lap ETS embedded operating system. -

Sets: $LIBDIRPREFIX, $LIBDIRSUFFIX, $LIBLINKPREFIX, $LIBLINKSUFFIX, $LINK, $LINKCOM, $LINKFLAGS, $SHLINK, $SHLINKCOM, $SHLINKFLAGS.

Uses: $LINKCOMSTR, $SHLINKCOMSTR.

m4

-Sets construction variables for the m4 macro processor. -

Sets: $M4, $M4COM, $M4FLAGS.

Uses: $M4COMSTR.

masm

-Sets construction variables for the Microsoft assembler. -

Sets: $AS, $ASCOM, $ASFLAGS, $ASPPCOM, $ASPPFLAGS.

Uses: $ASCOMSTR, $ASPPCOMSTR, $CPPFLAGS, $_CPPDEFFLAGS, $_CPPINCFLAGS.

midl

-Sets construction variables for the Microsoft IDL compiler. -

Sets: $MIDL, $MIDLCOM, $MIDLFLAGS.

Uses: $MIDLCOMSTR.

mingw

-Sets construction variables for MinGW (Minimal Gnu on Windows). -

Sets: $AS, $CC, $CXX, $LDMODULECOM, $LIBPREFIX, $LIBSUFFIX, $OBJSUFFIX, $RC, $RCCOM, $RCFLAGS, $RCINCFLAGS, $RCINCPREFIX, $RCINCSUFFIX, $SHCCFLAGS, $SHCXXFLAGS, $SHLINKCOM, $SHLINKFLAGS, $SHOBJSUFFIX, $WINDOWSDEFPREFIX, $WINDOWSDEFSUFFIX.

Uses: $RCCOMSTR, $SHLINKCOMSTR.

msgfmt

-This scons tool is a part of scons gettext toolset. It provides scons -interface to msgfmt(1) command, which generates binary -message catalog (MO) from a textual translation description -(PO). -

Sets: $MOSUFFIX, $MSGFMT, $MSGFMTCOM, $MSGFMTCOMSTR, $MSGFMTFLAGS, $POSUFFIX.

Uses: $LINGUAS_FILE.

msginit

-This scons tool is a part of scons gettext toolset. It provides -scons interface to msginit(1) program, which creates new -PO file, initializing the meta information with values from -user's environment (or options). -

Sets: $MSGINIT, $MSGINITCOM, $MSGINITCOMSTR, $MSGINITFLAGS, $POAUTOINIT, $POCREATE_ALIAS, $POSUFFIX, $POTSUFFIX, $_MSGINITLOCALE.

Uses: $LINGUAS_FILE, $POAUTOINIT, $POTDOMAIN.

msgmerge

-This scons tool is a part of scons gettext toolset. It provides -scons interface to msgmerge(1) command, which merges two -Uniform style .po files together. -

Sets: $MSGMERGE, $MSGMERGECOM, $MSGMERGECOMSTR, $MSGMERGEFLAGS, $POSUFFIX, $POTSUFFIX, $POUPDATE_ALIAS.

Uses: $LINGUAS_FILE, $POAUTOINIT, $POTDOMAIN.

mslib

-Sets construction variables for the Microsoft -mslib -library archiver. -

Sets: $AR, $ARCOM, $ARFLAGS, $LIBPREFIX, $LIBSUFFIX.

Uses: $ARCOMSTR.

mslink

-Sets construction variables for the Microsoft linker. -

Sets: $LDMODULE, $LDMODULECOM, $LDMODULEFLAGS, $LDMODULEPREFIX, $LDMODULESUFFIX, $LIBDIRPREFIX, $LIBDIRSUFFIX, $LIBLINKPREFIX, $LIBLINKSUFFIX, $LINK, $LINKCOM, $LINKFLAGS, $REGSVR, $REGSVRCOM, $REGSVRFLAGS, $SHLINK, $SHLINKCOM, $SHLINKFLAGS, $WIN32DEFPREFIX, $WIN32DEFSUFFIX, $WIN32EXPPREFIX, $WIN32EXPSUFFIX, $WINDOWSDEFPREFIX, $WINDOWSDEFSUFFIX, $WINDOWSEXPPREFIX, $WINDOWSEXPSUFFIX, $WINDOWSPROGMANIFESTPREFIX, $WINDOWSPROGMANIFESTSUFFIX, $WINDOWSSHLIBMANIFESTPREFIX, $WINDOWSSHLIBMANIFESTSUFFIX, $WINDOWS_INSERT_DEF.

Uses: $LDMODULECOMSTR, $LINKCOMSTR, $REGSVRCOMSTR, $SHLINKCOMSTR.

mssdk

-Sets variables for Microsoft Platform SDK and/or Windows SDK. -Note that unlike most other Tool modules, -mssdk does not set construction variables, -but sets the environment variables -in the environment SCons uses to execute -the Microsoft toolchain: -%INCLUDE%, -%LIB%, -%LIBPATH% and -%PATH%. -

Uses: $MSSDK_DIR, $MSSDK_VERSION, $MSVS_VERSION.

msvc

-Sets construction variables for the Microsoft Visual C/C++ compiler. -

Sets: $BUILDERS, $CC, $CCCOM, $CCFLAGS, $CCPCHFLAGS, $CCPDBFLAGS, $CFILESUFFIX, $CFLAGS, $CPPDEFPREFIX, $CPPDEFSUFFIX, $CXX, $CXXCOM, $CXXFILESUFFIX, $CXXFLAGS, $INCPREFIX, $INCSUFFIX, $OBJPREFIX, $OBJSUFFIX, $PCHCOM, $PCHPDBFLAGS, $RC, $RCCOM, $RCFLAGS, $SHCC, $SHCCCOM, $SHCCFLAGS, $SHCFLAGS, $SHCXX, $SHCXXCOM, $SHCXXFLAGS, $SHOBJPREFIX, $SHOBJSUFFIX.

Uses: $CCCOMSTR, $CXXCOMSTR, $PCH, $PCHSTOP, $PDB, $SHCCCOMSTR, $SHCXXCOMSTR.

msvs

-Sets construction variables for Microsoft Visual Studio.

Sets: $MSVSBUILDCOM, $MSVSCLEANCOM, $MSVSENCODING, $MSVSPROJECTCOM, $MSVSREBUILDCOM, $MSVSSCONS, $MSVSSCONSCOM, $MSVSSCONSCRIPT, $MSVSSCONSFLAGS, $MSVSSOLUTIONCOM.

mwcc

-Sets construction variables for the Metrowerks CodeWarrior compiler. -

Sets: $CC, $CCCOM, $CFILESUFFIX, $CPPDEFPREFIX, $CPPDEFSUFFIX, $CXX, $CXXCOM, $CXXFILESUFFIX, $INCPREFIX, $INCSUFFIX, $MWCW_VERSION, $MWCW_VERSIONS, $SHCC, $SHCCCOM, $SHCCFLAGS, $SHCFLAGS, $SHCXX, $SHCXXCOM, $SHCXXFLAGS.

Uses: $CCCOMSTR, $CXXCOMSTR, $SHCCCOMSTR, $SHCXXCOMSTR.

mwld

-Sets construction variables for the Metrowerks CodeWarrior linker. -

Sets: $AR, $ARCOM, $LIBDIRPREFIX, $LIBDIRSUFFIX, $LIBLINKPREFIX, $LIBLINKSUFFIX, $LINK, $LINKCOM, $SHLINK, $SHLINKCOM, $SHLINKFLAGS.

nasm

-Sets construction variables for the -nasm Netwide Assembler. -

Sets: $AS, $ASCOM, $ASFLAGS, $ASPPCOM, $ASPPFLAGS.

Uses: $ASCOMSTR, $ASPPCOMSTR.

packaging

-A framework for building binary and source packages. -

Packaging

-Sets construction variables for the Package Builder. -

pdf

-Sets construction variables for the Portable Document Format builder. -

Sets: $PDFPREFIX, $PDFSUFFIX.

pdflatex

-Sets construction variables for the pdflatex utility. -

Sets: $LATEXRETRIES, $PDFLATEX, $PDFLATEXCOM, $PDFLATEXFLAGS.

Uses: $PDFLATEXCOMSTR.

pdftex

-Sets construction variables for the pdftex utility. -

Sets: $LATEXRETRIES, $PDFLATEX, $PDFLATEXCOM, $PDFLATEXFLAGS, $PDFTEX, $PDFTEXCOM, $PDFTEXFLAGS.

Uses: $PDFLATEXCOMSTR, $PDFTEXCOMSTR.

qt

-Sets construction variables for building Qt applications. -

Sets: $QTDIR, $QT_AUTOSCAN, $QT_BINPATH, $QT_CPPPATH, $QT_LIB, $QT_LIBPATH, $QT_MOC, $QT_MOCCXXPREFIX, $QT_MOCCXXSUFFIX, $QT_MOCFROMCXXCOM, $QT_MOCFROMCXXFLAGS, $QT_MOCFROMHCOM, $QT_MOCFROMHFLAGS, $QT_MOCHPREFIX, $QT_MOCHSUFFIX, $QT_UIC, $QT_UICCOM, $QT_UICDECLFLAGS, $QT_UICDECLPREFIX, $QT_UICDECLSUFFIX, $QT_UICIMPLFLAGS, $QT_UICIMPLPREFIX, $QT_UICIMPLSUFFIX, $QT_UISUFFIX.

rmic

-Sets construction variables for the rmic utility. -

Sets: $JAVACLASSSUFFIX, $RMIC, $RMICCOM, $RMICFLAGS.

Uses: $RMICCOMSTR.

rpcgen

-Sets construction variables for building with RPCGEN. -

Sets: $RPCGEN, $RPCGENCLIENTFLAGS, $RPCGENFLAGS, $RPCGENHEADERFLAGS, $RPCGENSERVICEFLAGS, $RPCGENXDRFLAGS.

sgiar

-Sets construction variables for the SGI library archiver. -

Sets: $AR, $ARCOMSTR, $ARFLAGS, $LIBPREFIX, $LIBSUFFIX, $SHLINK, $SHLINKFLAGS.

Uses: $ARCOMSTR, $SHLINKCOMSTR.

sgic++

-Sets construction variables for the SGI C++ compiler. -

Sets: $CXX, $CXXFLAGS, $SHCXX, $SHOBJSUFFIX.

sgicc

-Sets construction variables for the SGI C compiler. -

Sets: $CXX, $SHOBJSUFFIX.

sgilink

-Sets construction variables for the SGI linker. -

Sets: $LINK, $RPATHPREFIX, $RPATHSUFFIX, $SHLINKFLAGS.

sunar

-Sets construction variables for the Sun library archiver. -

Sets: $AR, $ARCOM, $ARFLAGS, $LIBPREFIX, $LIBSUFFIX.

Uses: $ARCOMSTR.

sunc++

-Sets construction variables for the Sun C++ compiler. -

Sets: $CXX, $CXXVERSION, $SHCXX, $SHCXXFLAGS, $SHOBJPREFIX, $SHOBJSUFFIX.

suncc

-Sets construction variables for the Sun C compiler. -

Sets: $CXX, $SHCCFLAGS, $SHOBJPREFIX, $SHOBJSUFFIX.

sunf77

-Set construction variables for the Sun f77 Fortran compiler. -

Sets: $F77, $FORTRAN, $SHF77, $SHF77FLAGS, $SHFORTRAN, $SHFORTRANFLAGS.

sunf90

-Set construction variables for the Sun f90 Fortran compiler. -

Sets: $F90, $FORTRAN, $SHF90, $SHF90FLAGS, $SHFORTRAN, $SHFORTRANFLAGS.

sunf95

-Set construction variables for the Sun f95 Fortran compiler. -

Sets: $F95, $FORTRAN, $SHF95, $SHF95FLAGS, $SHFORTRAN, $SHFORTRANFLAGS.

sunlink

-Sets construction variables for the Sun linker. -

Sets: $RPATHPREFIX, $RPATHSUFFIX, $SHLINKFLAGS.

swig

-Sets construction variables for the SWIG interface generator. -

Sets: $SWIG, $SWIGCFILESUFFIX, $SWIGCOM, $SWIGCXXFILESUFFIX, $SWIGDIRECTORSUFFIX, $SWIGFLAGS, $SWIGINCPREFIX, $SWIGINCSUFFIX, $SWIGPATH, $SWIGVERSION, $_SWIGINCFLAGS.

Uses: $SWIGCOMSTR.

tar

-Sets construction variables for the tar archiver. -

Sets: $TAR, $TARCOM, $TARFLAGS, $TARSUFFIX.

Uses: $TARCOMSTR.

tex

-Sets construction variables for the TeX formatter and typesetter. -

Sets: $BIBTEX, $BIBTEXCOM, $BIBTEXFLAGS, $LATEX, $LATEXCOM, $LATEXFLAGS, $MAKEINDEX, $MAKEINDEXCOM, $MAKEINDEXFLAGS, $TEX, $TEXCOM, $TEXFLAGS.

Uses: $BIBTEXCOMSTR, $LATEXCOMSTR, $MAKEINDEXCOMSTR, $TEXCOMSTR.

textfile

-Set construction variables for the Textfile and Substfile builders. -

Sets: $LINESEPARATOR, $SUBSTFILEPREFIX, $SUBSTFILESUFFIX, $TEXTFILEPREFIX, $TEXTFILESUFFIX.

Uses: $SUBST_DICT.

tlib

-Sets construction variables for the Borlan -tib library archiver. -

Sets: $AR, $ARCOM, $ARFLAGS, $LIBPREFIX, $LIBSUFFIX.

Uses: $ARCOMSTR.

xgettext

-This scons tool is a part of scons gettext toolset. It provides -scons interface to xgettext(1) -program, which extracts internationalized messages from source code. The tool -provides POTUpdate builder to make PO -Template files. -

Sets: $POTSUFFIX, $POTUPDATE_ALIAS, $XGETTEXTCOM, $XGETTEXTCOMSTR, $XGETTEXTFLAGS, $XGETTEXTFROM, $XGETTEXTFROMPREFIX, $XGETTEXTFROMSUFFIX, $XGETTEXTPATH, $XGETTEXTPATHPREFIX, $XGETTEXTPATHSUFFIX, $_XGETTEXTDOMAIN, $_XGETTEXTFROMFLAGS, $_XGETTEXTPATHFLAGS.

Uses: $POTDOMAIN.

yacc

-Sets construction variables for the yacc parse generator. -

Sets: $YACC, $YACCCOM, $YACCFLAGS, $YACCHFILESUFFIX, $YACCHXXFILESUFFIX, $YACCVCGFILESUFFIX.

Uses: $YACCCOMSTR.

zip

-Sets construction variables for the zip archiver. -

Sets: $ZIP, $ZIPCOM, $ZIPCOMPRESSION, $ZIPFLAGS, $ZIPSUFFIX.

Uses: $ZIPCOMSTR.

Additionally, there is a "tool" named -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.

Builder Methods

Build rules are specified by calling a construction -environment's builder methods. -The arguments to the builder methods are -target -(a list of targets to be built, -usually file names) -and -source -(a list of sources to be built, -usually file names).

Because long lists of file names -can lead to a lot of quoting, -scons -supplies a -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:

-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())
-

Target and source file names -that are not absolute path names -(that is, do not begin with -/ -on POSIX systems -or -\fR -on Windows systems, -with or without -an optional drive letter) -are interpreted relative to the directory containing the -SConscript -file being read. -An initial -# -(hash mark) -on a path name means that the rest of the file name -is interpreted relative to -the directory containing -the top-level -SConstruct -file, -even if the -# -is followed by a directory separator character -(slash or backslash).

Examples:

-# 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')
-

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 -scons -will deduce the target file name from -the source file name. -The following examples all build the -executable program -bar -(on POSIX systems) -or -bar.exe -(on Windows systems) -from the bar.c source file:

-env.Program(target = 'bar', source = 'bar.c')
-env.Program('bar', source = 'bar.c')
-env.Program(source = 'bar.c')
-env.Program('bar.c')
-

As a convenience, a -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 -srcdir. -The following example will build the -build/prog -(or -build/prog.exe -on Windows) -program from the files -src/f1.c -and -src/f2.c:

-env.Program('build/prog', ['f1.c', 'f2.c'], srcdir='src')
-

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:

-env.Program('hello', 'hello.c', LIBS=['gl', 'glut'])
-

or generate a shared library with a non-standard suffix:

-env.SharedLibrary('word', 'word.cpp',
-                  SHLIBSUFFIX='.ocx',
-                  LIBSUFFIXES=['.ocx'])
-

(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 -parse_flags -keyword argument in an override:

-env = Program('hello', 'hello.c', parse_flags = '-Iinclude -DEBUG -lm')
-

This example adds 'include' to -CPPPATH, -'EBUG' to -CPPDEFINES, -and 'm' to -LIBS.

Although the builder methods defined by -scons -are, in fact, -methods of a construction environment object, -they may also be called without an explicit environment:

-Program('hello', 'hello.c')
-SharedLibrary('word', 'word.cpp')
-

In this case, -the methods are called internally using a default construction -environment that consists of the tools and values that -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:

-from SCons.Script import *
-

All builder methods return a list-like object -containing Nodes that -represent the target or targets that will be built. -A -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 --D -flag when compiling one specific object file:

-bar_obj_list = env.StaticObject('bar.c', CPPDEFINES='-DBAR')
-env.Program(source = ['foo.c', bar_obj_list, 'main.c'])
-

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:

-foo = Object('foo.c')
-bar = Object('bar.c')
-objects = ['begin.o'] + foo + ['middle.o'] + bar + ['end.o']
-for object in objects:
-    print(str(object))
-

Or you can use the -Flatten() -function supplied by scons -to create a list containing just the Nodes, -which may be more convenient:

-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))
-

Note also that because Builder calls return -a list-like object, not an actual Python list, -you should -not -use the Python -+= -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 -.extend() -method to make sure the list is updated in-place. -Example:

-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'))
-
-

The path name for a Node's file may be used -by passing the Node to the Python-builtin -str() -function:

-bar_obj_list = env.StaticObject('bar.c', CPPDEFINES='-DBAR')
-print("The path to bar_obj is:", str(bar_obj_list[0]))
-

Note again that because the Builder call returns a list, -we have to access the first element in the list -(bar_obj_list[0]) -to get at the Node that actually represents -the object file.

Builder calls support a -chdir -keyword argument that -specifies that the Builder's action(s) -should be executed -after changing directory. -If the -chdir -argument is -a string or a directory Node, -scons will change to the specified directory. -If the -chdir -is not a string or Node -and is non-zero, -then scons will change to the -target file's directory.

-# 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)
-

Note that scons will -not -automatically modify -its expansion of -construction variables like -$TARGET -and -$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 -${TARGET.file} -and -${SOURCE.file} -to use just the filename portion of the -targets and source.

scons -provides the following builder methods:

- CFile() - , - env.CFile() -

-Builds a C source file given a lex (.l) -or yacc (.y) input file. -The suffix specified by the $CFILESUFFIX construction variable -(.c by default) -is automatically added to the target -if it is not already present. -Example: -

-# builds foo.c
-env.CFile(target = 'foo.c', source = 'foo.l')
-# builds bar.c
-env.CFile(target = 'bar', source = 'bar.y')
-
- Command() - , - env.Command() -

-The Command "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 Command function description -for the calling syntax and details. -

- CXXFile() - , - env.CXXFile() -

-Builds a C++ source file given a lex (.ll) -or yacc (.yy) -input file. -The suffix specified by the $CXXFILESUFFIX construction variable -(.cc by default) -is automatically added to the target -if it is not already present. -Example: -

-# builds foo.cc
-env.CXXFile(target = 'foo.cc', source = 'foo.ll')
-# builds bar.cc
-env.CXXFile(target = 'bar', source = 'bar.yy')
-
- DocbookEpub() - , - env.DocbookEpub() -

-A pseudo-Builder, providing a Docbook toolchain for EPUB output. -

env = Environment(tools=['docbook'])
-env.DocbookEpub('manual.epub', 'manual.xml')
-

-or simply -

env = Environment(tools=['docbook'])
-env.DocbookEpub('manual')
-
- DocbookHtml() - , - env.DocbookHtml() -

-A pseudo-Builder, providing a Docbook toolchain for HTML output. -

env = Environment(tools=['docbook'])
-env.DocbookHtml('manual.html', 'manual.xml')
-

-or simply -

env = Environment(tools=['docbook'])
-env.DocbookHtml('manual')
-
- DocbookHtmlChunked() - , - env.DocbookHtmlChunked() -

-A pseudo-Builder, providing a Docbook toolchain for chunked HTML output. -It supports the base.dir parameter. The -chunkfast.xsl file (requires "EXSLT") is used as the -default stylesheet. Basic syntax: -

env = Environment(tools=['docbook'])
-env.DocbookHtmlChunked('manual')
-

-where manual.xml is the input file. -

If you use the root.filename -parameter in your own stylesheets you have to specify the new target name. -This ensures that the dependencies get correct, especially for the cleanup via scons -c: -

env = Environment(tools=['docbook'])
-env.DocbookHtmlChunked('mymanual.html', 'manual', xsl='htmlchunk.xsl')
-

Some basic support for the base.dir is provided. You -can add the base_dir keyword to your Builder -call, and the given prefix gets prepended to all the created filenames: -

env = Environment(tools=['docbook'])
-env.DocbookHtmlChunked('manual', xsl='htmlchunk.xsl', base_dir='output/')
-

Make sure that you don't forget the trailing slash for the base folder, else -your files get renamed only! -

- DocbookHtmlhelp() - , - env.DocbookHtmlhelp() -

-A pseudo-Builder, providing a Docbook toolchain for HTMLHELP output. -Its basic syntax is: -

env = Environment(tools=['docbook'])
-env.DocbookHtmlhelp('manual')
-

-where manual.xml is the input file. -

If you use the root.filename -parameter in your own stylesheets you have to specify the new target name. -This ensures that the dependencies get correct, especially for the cleanup via scons -c: -

env = Environment(tools=['docbook'])
-env.DocbookHtmlhelp('mymanual.html', 'manual', xsl='htmlhelp.xsl')
-

Some basic support for the base.dir parameter -is provided. You can add the base_dir keyword to -your Builder call, and the given prefix gets prepended to all the -created filenames: -

env = Environment(tools=['docbook'])
-env.DocbookHtmlhelp('manual', xsl='htmlhelp.xsl', base_dir='output/')
-

Make sure that you don't forget the trailing slash for the base folder, else -your files get renamed only! -

- DocbookMan() - , - env.DocbookMan() -

-A pseudo-Builder, providing a Docbook toolchain for Man page output. -Its basic syntax is: -

env = Environment(tools=['docbook'])
-env.DocbookMan('manual')
-

-where manual.xml is the input file. Note, that -you can specify a target name, but the actual output names are automatically -set from the refname entries in your XML source. -

- DocbookPdf() - , - env.DocbookPdf() -

-A pseudo-Builder, providing a Docbook toolchain for PDF output. -

env = Environment(tools=['docbook'])
-env.DocbookPdf('manual.pdf', 'manual.xml')
-

-or simply -

env = Environment(tools=['docbook'])
-env.DocbookPdf('manual')
-
- DocbookSlidesHtml() - , - env.DocbookSlidesHtml() -

-A pseudo-Builder, providing a Docbook toolchain for HTML slides output. -

env = Environment(tools=['docbook'])
-env.DocbookSlidesHtml('manual')
-

If you use the titlefoil.html parameter in -your own stylesheets you have to give the new target name. This ensures -that the dependencies get correct, especially for the cleanup via -scons -c: -

env = Environment(tools=['docbook'])
-env.DocbookSlidesHtml('mymanual.html','manual', xsl='slideshtml.xsl')
-

Some basic support for the base.dir parameter -is provided. You -can add the base_dir keyword to your Builder -call, and the given prefix gets prepended to all the created filenames: -

env = Environment(tools=['docbook'])
-env.DocbookSlidesHtml('manual', xsl='slideshtml.xsl', base_dir='output/')
-

Make sure that you don't forget the trailing slash for the base folder, else -your files get renamed only! -

- DocbookSlidesPdf() - , - env.DocbookSlidesPdf() -

-A pseudo-Builder, providing a Docbook toolchain for PDF slides output. -

env = Environment(tools=['docbook'])
-env.DocbookSlidesPdf('manual.pdf', 'manual.xml')
-

-or simply -

env = Environment(tools=['docbook'])
-env.DocbookSlidesPdf('manual')
-
- DocbookXInclude() - , - env.DocbookXInclude() -

-A pseudo-Builder, for resolving XIncludes in a separate processing step. -

env = Environment(tools=['docbook'])
-env.DocbookXInclude('manual_xincluded.xml', 'manual.xml')
-
- DocbookXslt() - , - env.DocbookXslt() -

-A pseudo-Builder, applying a given XSL transformation to the input file. -

env = Environment(tools=['docbook'])
-env.DocbookXslt('manual_transformed.xml', 'manual.xml', xsl='transform.xslt')
-

Note, that this builder requires the xsl parameter -to be set. -

- DVI() - , - env.DVI() -

-Builds a .dvi file -from a .tex, -.ltx or .latex input file. -If the source file suffix is .tex, -scons -will examine the contents of the file; -if the string -\documentclass -or -\documentstyle -is found, the file is assumed to be a LaTeX file and -the target is built by invoking the $LATEXCOM command line; -otherwise, the $TEXCOM command line is used. -If the file is a LaTeX file, -the -DVI -builder method will also examine the contents -of the -.aux -file and invoke the $BIBTEX command line -if the string -bibdata -is found, -start $MAKEINDEX to generate an index if a -.ind -file is found -and will examine the contents -.log -file and re-run the $LATEXCOM command -if the log file says it is necessary. -

-The suffix .dvi -(hard-coded within TeX itself) -is automatically added to the target -if it is not already present. -Examples: -

-# 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')
-
- Gs() - , - env.Gs() -

-A Builder for explicitly calling the gs executable. -Depending on the underlying OS, the different names gs, -gsos2 and gswin32c -are tried. -

env = Environment(tools=['gs'])
-env.Gs('cover.jpg','scons-scons.pdf',
-       GSFLAGS='-dNOPAUSE -dBATCH -sDEVICE=jpeg -dFirstPage=1 -dLastPage=1 -q') 
-       )
-
- Install() - , - 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. -

-env.Install('/usr/local/bin', source = ['foo', 'bar'])
-
- InstallAs() - , - 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. -

-env.InstallAs(target = '/usr/local/bin/foo',
-              source = 'foo_debug')
-env.InstallAs(target = ['../lib/libfoo.a', '../lib/libbar.a'],
-              source = ['libFOO.a', 'libBAR.a'])
-
- InstallVersionedLib() - , - env.InstallVersionedLib() -

-Installs a versioned shared library. The symlinks appropriate to the -architecture will be generated based on symlinks of the source library. -

-env.InstallVersionedLib(target = '/usr/local/bin/foo',
-              source = 'libxyz.1.5.2.so')
-
- Jar() - , - env.Jar() -

-Builds a Java archive (.jar) file -from the specified list of sources. -Any directories in the source list -will be searched for .class files). -Any .java files in the source list -will be compiled to .class files -by calling the Java Builder. -

-If the $JARCHDIR value is set, the -jar -command will change to the specified directory using the --C -option. -If $JARCHDIR is not set explicitly, -SCons will use the top of any subdirectory tree -in which Java .class -were built by the Java Builder. -

-If the contents any of the source files begin with the string -Manifest-Version, -the file is assumed to be a manifest -and is passed to the -jar -command with the -m -option set. -

-env.Jar(target = 'foo.jar', source = 'classes')
-
-env.Jar(target = 'bar.jar',
-        source = ['bar1.java', 'bar2.java'])
-
- Java() - , - env.Java() -

- Builds one or more Java class files. - The sources may be any combination of explicit - .java - files, - or directory trees which will be scanned - for .java files. -

- SCons will parse each source .java file - to find the classes - (including inner classes) - defined within that file, - and from that figure out the - target .class 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 - package - in the first column; - the resulting .class files - will be placed in a directory reflecting - the specified package name. - For example, - the file - Foo.java - defining a single public - Foo - class and - containing a package name of - sub.dir - will generate a corresponding - sub/dir/Foo.class - class file. -

- Examples: -

-                env.Java(target = 'classes', source = 'src')
-                env.Java(target = 'classes', source = ['src1', 'src2'])
-                env.Java(target = 'classes', source = ['File1.java', 'File2.java'])
-            

- 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 - LANG - 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. -

-                env = Environment()
-                env['ENV']['LANG'] = 'en_GB.UTF-8'
-            
- JavaH() - , - 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 .class files, -the names of .java files -to be compiled into .class files -by calling the Java builder method, -or the objects returned from the -Java -builder method. -

-If the construction variable -$JAVACLASSDIR -is set, either in the environment -or in the call to the -JavaH -builder method itself, -then the value of the variable -will be stripped from the -beginning of any .class file names. -

-Examples: -

-# 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')
-
- Library() - , - env.Library() -

-A synonym for the -StaticLibrary -builder method. -

- LoadableModule() - , - env.LoadableModule() -

-On most systems, -this is the same as -SharedLibrary. -On Mac OS X (Darwin) platforms, -this creates a loadable module bundle. -

- M4() - , - env.M4() -

-Builds an output file from an M4 input file. -This uses a default $M4FLAGS value of --E, -which considers all warnings to be fatal -and stops on the first warning -when using the GNU version of m4. -Example: -

-env.M4(target = 'foo.c', source = 'foo.c.m4')
-
- Moc() - , - 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 $QTDIR variable for more information. -Example: -

-env.Moc('foo.h') # generates moc_foo.cc
-env.Moc('foo.cpp') # generates foo.moc
-
- MOFiles() - , - env.MOFiles() -

-This builder belongs to msgfmt tool. The builder compiles -PO files to MO files. -

-Example 1. -Create pl.mo and en.mo by compiling -pl.po and en.po: -

-  # ...
-  env.MOFiles(['pl', 'en'])
-

-Example 2. -Compile files for languages defined in LINGUAS file: -

-  # ...
-  env.MOFiles(LINGUAS_FILE = 1)
-

-Example 3. -Create pl.mo and en.mo by compiling -pl.po and en.po plus files for -languages defined in LINGUAS file: -

-  # ...
-  env.MOFiles(['pl', 'en'], LINGUAS_FILE = 1)
-

-Example 4. -Compile files for languages defined in LINGUAS file -(another version): -

-  # ...
-  env['LINGUAS_FILE'] = 1
-  env.MOFiles()
-
- MSVSProject() - , - 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 $MSVS_VERSION in the Environment constructor). For -Visual Studio 6, it will generate a .dsp file. For Visual -Studio 7 (.NET) and later versions, it will generate a -.vcproj file.

By default, this also -generates a solution file for the specified project, a -.dsw file for Visual Studio 6 or a -.sln file for Visual Studio 7 (.NET). This behavior may -be disabled by specifying auto_build_solution=0 when you -call MSVSProject, in which case you presumably want to build the solution -file(s) by calling the MSVSSolution Builder (see below).

-The MSVSProject builder takes several lists of filenames to be placed into -the project file. These are currently limited to srcs, -incs, localincs, -resources, and misc. These are pretty -self-explanatory, but it should be noted that these lists are added to the -$SOURCES 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: -

target

The name of the target .dsp or - .vcproj file. The correct suffix for the version - of Visual Studio must be used, but the $MSVSPROJECTSUFFIX - construction variable will be defined to the correct value (see - example below).

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 | - (vertical pipe) character: Debug|Xbox. The default - target platform is Win32. Multiple calls to MSVSProject with - different variants are allowed; all variants will be added to the - project file with their appropriate build targets and - sources.

cmdargs

Additional command line arguments for the different - variants. The number of cmdargs entries must match - the number of variant entries, or be empty (not - specified). If you give only one, it will automatically be propagated - to all variants.

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 - buildtarget entries must match the number of - variant entries.

runfile

The name of the file that Visual Studio 7 and later will - run and debug. This appears as the value of the - Output field in the resulting Visual Studio project - file. If this is not specified, the default is the same as the - specified buildtarget value.

Note that because SCons always executes its build -commands from the directory in which the SConstruct file is located, if you -generate a project file in a different directory than the SConstruct -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++ /FC -compiler option to the $CCFLAGS variable so that the compiler will -print the full path name of any files that cause compilation errors.

Example usage:

-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)
-buildtarget = [s for s in dll if str(s).endswith('dll')]
-env.MSVSProject(target = 'Bar' + env['MSVSPROJECTSUFFIX'],
-                srcs = barsrcs,
-                incs = barincs,
-                localincs = barlocalincs,
-                resources = barresources,
-                misc = barmisc,
-                buildtarget = buildtarget,
-                variant = 'Release')
-

Starting with version 2.4 of -SCons it's also possible to specify the optional argument -DebugSettings, which creates files for debugging under -Visual Studio:

DebugSettings

A dictionary of debug settings that get written to the - .vcproj.user or the - .vcxproj.user file, depending on the version - installed. As it is done for cmdargs (see above), you can specify a - DebugSettings dictionary per variant. If you - give only one, it will be propagated to all variants.

Currently, only Visual Studio v9.0 and Visual Studio -version v11 are implemented, for other versions no file is generated. To -generate the user file, you just need to add a -DebugSettings dictionary to the environment with the -right parameters for your MSVS version. If the dictionary is empty, or does -not contain any good value, no file will be generated.

Following -is a more contrived example, involving the setup of a project for variants and -DebugSettings:

# Assuming you store your defaults in a file
-vars = Variables('variables.py')
-msvcver = vars.args.get('vc', '9')
-
-# Check command args to force one Microsoft Visual Studio version
-if msvcver == '9' or msvcver == '11':
-  env = Environment(MSVC_VERSION=msvcver+'.0', MSVC_BATCH=False)
-else:
-  env = Environment()
-    
-AddOption('--userfile', action='store_true', dest='userfile', default=False,
-          help="Create Visual Studio Project user file")
-
-#
-# 1. Configure your Debug Setting dictionary with options you want in the list
-# of allowed options, for instance if you want to create a user file to launch
-# a specific application for testing your dll with Microsoft Visual Studio 2008 (v9):
-#
-V9DebugSettings = {
-    'Command':'c:\\myapp\\using\\thisdll.exe',
-    'WorkingDirectory': 'c:\\myapp\\using\\',
-    'CommandArguments': '-p password',
-#     'Attach':'false',
-#     'DebuggerType':'3',
-#     'Remote':'1',
-#     'RemoteMachine': None,
-#     'RemoteCommand': None,
-#     'HttpUrl': None,
-#     'PDBPath': None,
-#     'SQLDebugging': None,
-#     'Environment': '',
-#     'EnvironmentMerge':'true',
-#     'DebuggerFlavor': None,
-#     'MPIRunCommand': None,
-#     'MPIRunArguments': None,
-#     'MPIRunWorkingDirectory': None,
-#     'ApplicationCommand': None,
-#     'ApplicationArguments': None,
-#     'ShimCommand': None,
-#     'MPIAcceptMode': None,
-#     'MPIAcceptFilter': None,
-}
-
-#
-# 2. Because there are a lot of different options depending on the Microsoft 
-# Visual Studio version, if you use more than one version you have to 
-# define a dictionary per version, for instance if you want to create a user 
-# file to launch a specific application for testing your dll with Microsoft 
-# Visual Studio 2012 (v11):
-#
-V10DebugSettings = {
-    'LocalDebuggerCommand': 'c:\\myapp\\using\\thisdll.exe',
-    'LocalDebuggerWorkingDirectory': 'c:\\myapp\\using\\',
-    'LocalDebuggerCommandArguments': '-p password',
-#     'LocalDebuggerEnvironment': None,
-#     'DebuggerFlavor': 'WindowsLocalDebugger',
-#     'LocalDebuggerAttach': None,
-#     'LocalDebuggerDebuggerType': None,
-#     'LocalDebuggerMergeEnvironment': None,
-#     'LocalDebuggerSQLDebugging': None,
-#     'RemoteDebuggerCommand': None,
-#     'RemoteDebuggerCommandArguments': None,
-#     'RemoteDebuggerWorkingDirectory': None,
-#     'RemoteDebuggerServerName': None,
-#     'RemoteDebuggerConnection': None,
-#     'RemoteDebuggerDebuggerType': None,
-#     'RemoteDebuggerAttach': None,
-#     'RemoteDebuggerSQLDebugging': None,
-#     'DeploymentDirectory': None,
-#     'AdditionalFiles': None,
-#     'RemoteDebuggerDeployDebugCppRuntime': None,
-#     'WebBrowserDebuggerHttpUrl': None,
-#     'WebBrowserDebuggerDebuggerType': None,
-#     'WebServiceDebuggerHttpUrl': None,
-#     'WebServiceDebuggerDebuggerType': None,
-#     'WebServiceDebuggerSQLDebugging': None,
-}
-
-#
-# 3. Select the dictionary you want depending on the version of visual Studio 
-# Files you want to generate.
-#
-if not env.GetOption('userfile'):
-    dbgSettings = None
-elif env.get('MSVC_VERSION', None) == '9.0':
-    dbgSettings = V9DebugSettings
-elif env.get('MSVC_VERSION', None) == '11.0':
-    dbgSettings = V10DebugSettings
-else:    
-    dbgSettings = None
-
-#
-# 4. Add the dictionary to the DebugSettings keyword.
-#
-barsrcs = ['bar.cpp', 'dllmain.cpp', 'stdafx.cpp']
-barincs = ['targetver.h']
-barlocalincs = ['StdAfx.h']
-barresources = ['bar.rc','resource.h']
-barmisc = ['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[0]] * 2,
-                variant = ('Debug|Win32', 'Release|Win32'),
-                cmdargs = 'vc=%s' %  msvcver,
-                DebugSettings = (dbgSettings, {}))
-
- MSVSSolution() - , - 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 $MSVS_VERSION in the -construction environment). For Visual Studio 6, it will generate a -.dsw file. For Visual Studio 7 (.NET), it will generate a -.sln file.

The following values must be -specified:

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 - $MSVSSOLUTIONSUFFIX will be defined to the correct value (see - example below).

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.

projects

A list of project file names, or Project nodes returned by - calls to the 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:

-env.MSVSSolution(target = 'Bar' + env['MSVSSOLUTIONSUFFIX'], projects = ['bar'
-+ env['MSVSPROJECTSUFFIX']], variant = 'Release')
-
- Object() - , - env.Object() -

-A synonym for the -StaticObject -builder method. -

- Package() - , - env.Package() -

-Builds a Binary Package of the given source files. -

-env.Package(source = FindInstalledFiles())
-

-Builds software distribution packages. -Packages consist of files to install and packaging information. -The former may be specified with the source parameter and may be left out, -in which case the FindInstalledFiles function will collect -all files that have an Install or InstallAs Builder attached. -If the target 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 $PACKAGETYPE construction variable. Currently -the following packagers available: -

- * msi - Microsoft Installer - * rpm - RPM Package Manger - * ipkg - Itsy Package Management System - * tarbz2 - bzip2 compressed tar - * targz - gzip compressed tar - * tarxz - xz compressed tar - * zip - zip file - * src_tarbz2 - bzip2 compressed tar source - * src_targz - gzip compressed tar source - * src_tarxz - xz 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. -

-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'
-        )
-
- PCH() - , - env.PCH() -

-Builds a Microsoft Visual C++ precompiled header. -Calling this builder method -returns a list of two targets: the PCH as the first element, and the object -file as the second element. Normally the object file is ignored. -This builder method is only -provided when Microsoft Visual C++ is being used as the compiler. -The PCH builder method is generally used in -conjunction with the PCH construction variable to force object files to use -the precompiled header: -

-env['PCH'] = env.PCH('StdAfx.cpp')[0]
-
- PDF() - , - env.PDF() -

-Builds a .pdf file -from a .dvi input file -(or, by extension, a .tex, -.ltx, -or -.latex input file). -The suffix specified by the $PDFSUFFIX construction variable -(.pdf by default) -is added automatically to the target -if it is not already present. Example: -

-# 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')
-
- POInit() - , - env.POInit() -

-This builder belongs to msginit tool. The builder initializes missing -PO file(s) if $POAUTOINIT is set. If -$POAUTOINIT is not set (default), POInit prints instruction for -user (that is supposed to be a translator), telling how the -PO file should be initialized. In normal projects -you should not use POInit and use POUpdate -instead. POUpdate chooses intelligently between -msgmerge(1) and msginit(1). POInit -always uses msginit(1) and should be regarded as builder for -special purposes or for temporary use (e.g. for quick, one time initialization -of a bunch of PO files) or for tests. -

-Target nodes defined through POInit are not built by default (they're -Ignored from '.' node) but are added to -special Alias ('po-create' by default). -The alias name may be changed through the $POCREATE_ALIAS -construction variable. All PO files defined through -POInit may be easily initialized by scons po-create. -

-Example 1. -Initialize en.po and pl.po from -messages.pot: -

-  # ...
-  env.POInit(['en', 'pl']) # messages.pot --> [en.po, pl.po] 
-

-Example 2. -Initialize en.po and pl.po from -foo.pot: -

-  # ...
-  env.POInit(['en', 'pl'], ['foo']) # foo.pot --> [en.po, pl.po] 
-

-Example 3. -Initialize en.po and pl.po from -foo.pot but using $POTDOMAIN construction -variable: -

-  # ...
-  env.POInit(['en', 'pl'], POTDOMAIN='foo') # foo.pot --> [en.po, pl.po] 
-

-Example 4. -Initialize PO files for languages defined in -LINGUAS file. The files will be initialized from template -messages.pot: -

-  # ...
-  env.POInit(LINGUAS_FILE = 1) # needs 'LINGUAS' file
-

-Example 5. -Initialize en.po and pl.pl -PO files plus files for languages defined in -LINGUAS file. The files will be initialized from template -messages.pot: -

-  # ...
-  env.POInit(['en', 'pl'], LINGUAS_FILE = 1)
-

-Example 6. -You may preconfigure your environment first, and then initialize -PO files: -

-  # ...
-  env['POAUTOINIT'] = 1
-  env['LINGUAS_FILE'] = 1
-  env['POTDOMAIN'] = 'foo'
-  env.POInit()
-

-which has same efect as: -

-  # ...
-  env.POInit(POAUTOINIT = 1, LINGUAS_FILE = 1, POTDOMAIN = 'foo')
-
- PostScript() - , - env.PostScript() -

-Builds a .ps file -from a .dvi input file -(or, by extension, a .tex, -.ltx, -or -.latex input file). -The suffix specified by the $PSSUFFIX construction variable -(.ps by default) -is added automatically to the target -if it is not already present. Example: -

-# 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')
-
- POTUpdate() - , - env.POTUpdate() -

-The builder belongs to xgettext tool. The builder updates target -POT file if exists or creates one if it doesn't. The node is -not built by default (i.e. it is Ignored from -'.'), but only on demand (i.e. when given -POT file is required or when special alias is invoked). This -builder adds its targe node (messages.pot, say) to a -special alias (pot-update by default, see -$POTUPDATE_ALIAS) so you can update/create them easily with -scons pot-update. The file is not written until there is no -real change in internationalized messages (or in comments that enter -POT file). -

-

Note

You may see xgettext(1) being invoked by the -xgettext tool even if there is no real change in internationalized -messages (so the POT file is not being updated). This -happens every time a source file has changed. In such case we invoke -xgettext(1) and compare its output with the content of -POT file to decide whether the file should be updated or -not.

-

-Example 1. -Let's create po/ directory and place following -SConstruct script there: -

-  # SConstruct in 'po/' subdir
-  env = Environment( tools = ['default', 'xgettext'] )
-  env.POTUpdate(['foo'], ['../a.cpp', '../b.cpp'])
-  env.POTUpdate(['bar'], ['../c.cpp', '../d.cpp'])
-

-Then invoke scons few times: -

-  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.
-

-the results shall be as the comments above say. -

-Example 2. -The POTUpdate builder may be used with no target specified, in which -case default target messages.pot will be used. The -default target may also be overridden by setting $POTDOMAIN construction -variable or providing it as an override to POTUpdate builder: -

    
-  # 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
-

-Example 3. -The sources may be specified within separate file, for example -POTFILES.in: -

      
-  # POTFILES.in in 'po/' subdirectory
-  ../a.cpp
-  ../b.cpp
-  # end of file
-

-The name of the file (POTFILES.in) containing the list of -sources is provided via $XGETTEXTFROM: -

      
-  # SConstruct file in 'po/' subdirectory
-  env = Environment( tools = ['default', 'xgettext'] )
-  env.POTUpdate(XGETTEXTFROM = 'POTFILES.in')
-

-Example 4. -You may use $XGETTEXTPATH to define source search path. Assume, for -example, that you have files a.cpp, -b.cpp, po/SConstruct, -po/POTFILES.in. Then your POT-related -files could look as below: -

-  # POTFILES.in in 'po/' subdirectory
-  a.cpp
-  b.cpp
-  # end of file
-
-  # SConstruct file in 'po/' subdirectory
-  env = Environment( tools = ['default', 'xgettext'] )
-  env.POTUpdate(XGETTEXTFROM = 'POTFILES.in', XGETTEXTPATH='../')
-

-Example 5. -Multiple search directories may be defined within a list, i.e. -XGETTEXTPATH = ['dir1', 'dir2', ...]. The order in the list -determines the search order of source files. The path to the first file found -is used. -

-Let's create 0/1/po/SConstruct script: -

-  # SConstruct file in '0/1/po/' subdirectory
-  env = Environment( tools = ['default', 'xgettext'] )
-  env.POTUpdate(XGETTEXTFROM = 'POTFILES.in', XGETTEXTPATH=['../', '../../'])
-

-and 0/1/po/POTFILES.in: -

-  # POTFILES.in in '0/1/po/' subdirectory
-  a.cpp
-  # end of file
-

-Write two *.cpp files, the first one is -0/a.cpp: -

-  /* 0/a.cpp */
-  gettext("Hello from ../../a.cpp")
-

-and the second is 0/1/a.cpp: -

-  /* 0/1/a.cpp */
-  gettext("Hello from ../a.cpp")
-

-then run scons. You'll obtain 0/1/po/messages.pot with the -message "Hello from ../a.cpp". When you reverse order in -$XGETTEXTFOM, i.e. when you write SConscript as -

-  # SConstruct file in '0/1/po/' subdirectory
-  env = Environment( tools = ['default', 'xgettext'] )
-  env.POTUpdate(XGETTEXTFROM = 'POTFILES.in', XGETTEXTPATH=['../../', '../'])
-

-then the messages.pot will contain -msgid "Hello from ../../a.cpp" line and not -msgid "Hello from ../a.cpp". -

- POUpdate() - , - env.POUpdate() -

-The builder belongs to msgmerge tool. The builder updates -PO files with msgmerge(1), or initializes -missing PO files as described in documentation of -msginit tool and POInit builder (see also -$POAUTOINIT). Note, that POUpdate does not add its -targets to po-create alias as POInit -does. -

-Target nodes defined through POUpdate are not built by default -(they're Ignored from '.' node). Instead, -they are added automatically to special Alias -('po-update' by default). The alias name may be changed -through the $POUPDATE_ALIAS construction variable. You can easily -update PO files in your project by scons -po-update. -

-Example 1. -Update en.po and pl.po from -messages.pot template (see also $POTDOMAIN), -assuming that the later one exists or there is rule to build it (see -POTUpdate): -

-  # ...
-  env.POUpdate(['en','pl']) # messages.pot --> [en.po, pl.po]
-

-Example 2. -Update en.po and pl.po from -foo.pot template: -

-  # ...
-  env.POUpdate(['en', 'pl'], ['foo']) # foo.pot -->  [en.po, pl.pl]
-

-Example 3. -Update en.po and pl.po from -foo.pot (another version): -

-  # ...
-  env.POUpdate(['en', 'pl'], POTDOMAIN='foo') # foo.pot -- > [en.po, pl.pl]
-

-Example 4. -Update files for languages defined in LINGUAS file. The -files are updated from messages.pot template: -

-  # ...
-  env.POUpdate(LINGUAS_FILE = 1) # needs 'LINGUAS' file
-

-Example 5. -Same as above, but update from foo.pot template: -

-  # ...
-  env.POUpdate(LINGUAS_FILE = 1, source = ['foo'])
-

-Example 6. -Update en.po and pl.po plus files for -languages defined in LINGUAS file. The files are updated -from messages.pot template: -

-  # produce 'en.po', 'pl.po' + files defined in 'LINGUAS':
-  env.POUpdate(['en', 'pl' ], LINGUAS_FILE = 1) 
-

-Example 7. -Use $POAUTOINIT to automatically initialize PO file -if it doesn't exist: -

-  # ...
-  env.POUpdate(LINGUAS_FILE = 1, POAUTOINIT = 1)
-

-Example 8. -Update PO files for languages defined in -LINGUAS file. The files are updated from -foo.pot template. All necessary settings are -pre-configured via environment. -

-  # ...
-  env['POAUTOINIT'] = 1
-  env['LINGUAS_FILE'] = 1
-  env['POTDOMAIN'] = 'foo'
-  env.POUpdate()
-
- Program() - , - 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 -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 $PROGPREFIX construction variable; nothing by default) -and suffix -(specified by the $PROGSUFFIX construction variable; -by default, .exe on Windows systems, -nothing on POSIX systems) -are automatically added to the target if not already present. -Example: -

-env.Program(target = 'foo', source = ['foo.o', 'bar.c', 'baz.f'])
-
- ProgramAllAtOnce() - , - env.ProgramAllAtOnce() -

- Builds an executable from D sources without first creating individual - objects for each file. -

- D sources can be compiled file-by-file as C and C++ source are, and - D is integrated into the scons Object and Program builders for - this model of build. D codes can though do whole source - meta-programming (some of the testing frameworks do this). For this - it is imperative that all sources are compiled and linked in a single call of - the D compiler. This builder serves that purpose. -

-      env.ProgramAllAtOnce('executable', ['mod_a.d, mod_b.d', 'mod_c.d'])
-    

- This command will compile the modules mod_a, mod_b, and mod_c in a - single compilation process without first creating object files for - the modules. Some of the D compilers will create executable.o others - will not. -

- Builds an executable from D sources without first creating individual - objects for each file. -

- D sources can be compiled file-by-file as C and C++ source are, and - D is integrated into the scons Object and Program builders for - this model of build. D codes can though do whole source - meta-programming (some of the testing frameworks do this). For this - it is imperative that all sources are compiled and linked in a single call of - the D compiler. This builder serves that purpose. -

-      env.ProgramAllAtOnce('executable', ['mod_a.d, mod_b.d', 'mod_c.d'])
-    

- This command will compile the modules mod_a, mod_b, and mod_c in a - single compilation process without first creating object files for - the modules. Some of the D compilers will create executable.o others - will not. -

- Builds an executable from D sources without first creating individual - objects for each file. -

- D sources can be compiled file-by-file as C and C++ source are, and - D is integrated into the scons Object and Program builders for - this model of build. D codes can though do whole source - meta-programming (some of the testing frameworks do this). For this - it is imperative that all sources are compiled and linked in a single call of - the D compiler. This builder serves that purpose. -

-      env.ProgramAllAtOnce('executable', ['mod_a.d, mod_b.d', 'mod_c.d'])
-    

- This command will compile the modules mod_a, mod_b, and mod_c in a - single compilation process without first creating object files for - the modules. Some of the D compilers will create executable.o others - will not. -

- RES() - , - 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 -.res -(or -.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: -

-env.RES('resource.rc')
-
- RMIC() - , - env.RMIC() -

-Builds stub and skeleton class files -for remote objects -from Java .class 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 .class files, -or the objects return from the -Java -builder method. -

-If the construction variable -$JAVACLASSDIR -is set, either in the environment -or in the call to the -RMIC -builder method itself, -then the value of the variable -will be stripped from the -beginning of any .class -file names. -

-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')
-
- RPCGenClient() - , - env.RPCGenClient() -

-Generates an RPC client stub (_clnt.c) file -from a specified RPC (.x) 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. -

-# Builds src/rpcif_clnt.c
-env.RPCGenClient('src/rpcif.x')
-
- RPCGenHeader() - , - env.RPCGenHeader() -

-Generates an RPC header (.h) file -from a specified RPC (.x) 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. -

-# Builds src/rpcif.h
-env.RPCGenHeader('src/rpcif.x')
-
- RPCGenService() - , - env.RPCGenService() -

-Generates an RPC server-skeleton (_svc.c) file -from a specified RPC (.x) 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. -

-# Builds src/rpcif_svc.c
-env.RPCGenClient('src/rpcif.x')
-
- RPCGenXDR() - , - env.RPCGenXDR() -

-Generates an RPC XDR routine (_xdr.c) file -from a specified RPC (.x) 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. -

-# Builds src/rpcif_xdr.c
-env.RPCGenClient('src/rpcif.x')
-
- SharedLibrary() - , - env.SharedLibrary() -

-Builds a shared library -(.so on a POSIX system, -.dll 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 $SHLIBPREFIX construction variable; -by default, lib on POSIX systems, -nothing on Windows systems) -and suffix -(specified by the $SHLIBSUFFIX construction variable; -by default, .dll on Windows systems, -.so on POSIX systems) -are automatically added to the target if not already present. -Example: -

-env.SharedLibrary(target = 'bar', source = ['bar.c', 'foo.o'])
-

-On Windows systems, the -SharedLibrary -builder method will always build an import -(.lib) library -in addition to the shared (.dll) library, -adding a .lib library with the same basename -if there is not already a .lib file explicitly -listed in the targets. -

-On Cygwin systems, the -SharedLibrary -builder method will always build an import -(.dll.a) library -in addition to the shared (.dll) library, -adding a .dll.a library with the same basename -if there is not already a .dll.a file explicitly -listed in the targets. -

-Any object files listed in the -source -must have been built for a shared library -(that is, using the -SharedObject -builder method). -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 LoadableModule builder for the latter. -

-When the $SHLIBVERSION construction variable is defined a versioned -shared library is created. This modifies the $SHLINKFLAGS as required, -adds the version number to the library name, and creates the symlinks that -are needed. -

-env.SharedLibrary(target = 'bar', source = ['bar.c', 'foo.o'], SHLIBVERSION='1.5.2')
-

-On a POSIX system, versions with a single token create exactly one symlink: -libbar.so.6 would have symlinks libbar.so only. -On a POSIX system, versions with two or more -tokens create exactly two symlinks: libbar.so.2.3.1 would have symlinks -libbar.so and libbar.so.2; 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 -register=1 -will cause the .dll to be -registered after it is built using REGSVR32. -The command that is run -("regsvr32" by default) is determined by $REGSVR construction -variable, and the flags passed are determined by $REGSVRFLAGS. By -default, $REGSVRFLAGS includes the /s option, -to prevent dialogs from popping -up and requiring user attention when it is run. If you change -$REGSVRFLAGS, be sure to include the /s option. -For example, -

-env.SharedLibrary(target = 'bar',
-                  source = ['bar.cxx', 'foo.obj'],
-                  register=1)
-

-will register bar.dll as a COM object -when it is done linking it. -

- SharedObject() - , - 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 -StaticObject -builder method. -On some platforms building a shared object requires additional -compiler option -(e.g. -fPIC 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 $SHOBJPREFIX construction variable; -by default, the same as $OBJPREFIX) -and suffix -(specified by the $SHOBJSUFFIX construction variable) -are automatically added to the target if not already present. -Examples: -

-env.SharedObject(target = 'ddd', source = 'ddd.c')
-env.SharedObject(target = 'eee.o', source = 'eee.cpp')
-env.SharedObject(target = 'fff.obj', source = 'fff.for')
-

-Note that the source files will be scanned -according to the suffix mappings in the -SourceFileScanner -object. -See the section "Scanner Objects," -below, for more information. -

- StaticLibrary() - , - 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 $LIBPREFIX construction variable; -by default, lib on POSIX systems, -nothing on Windows systems) -and suffix -(specified by the $LIBSUFFIX construction variable; -by default, .lib on Windows systems, -.a on POSIX systems) -are automatically added to the target if not already present. -Example: -

-env.StaticLibrary(target = 'bar', source = ['bar.c', 'foo.o'])
-

-Any object files listed in the -source -must have been built for a static library -(that is, using the -StaticObject -builder method). -scons -will raise an error if there is any mismatch. -

- StaticObject() - , - 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: -

-  .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
-

-The target object file prefix -(specified by the $OBJPREFIX construction variable; nothing by default) -and suffix -(specified by the $OBJSUFFIX construction variable; -.obj on Windows systems, -.o on POSIX systems) -are automatically added to the target if not already present. -Examples: -

-env.StaticObject(target = 'aaa', source = 'aaa.c')
-env.StaticObject(target = 'bbb.o', source = 'bbb.c++')
-env.StaticObject(target = 'ccc.obj', source = 'ccc.f')
-

-Note that the source files will be scanned -according to the suffix mappings in -SourceFileScanner -object. -See the section "Scanner Objects," -below, for more information. -

- Substfile() - , - env.Substfile() -

-The Substfile builder creates a single text file from another file or set of -files by concatenating them with $LINESEPARATOR and replacing text -using the $SUBST_DICT construction variable. Nested lists of source files -are flattened. See also Textfile. -

-If a single source file is present with an .in suffix, -the suffix is stripped and the remainder is used as the default target name. -

-The prefix and suffix specified by the $SUBSTFILEPREFIX -and $SUBSTFILESUFFIX 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 $SUBST_DICT is present, -it may be either a Python dictionary or a sequence of (key,value) tuples. -If it is a dictionary it 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 unpredictable whether the expansion will occur. -

-Any occurrences of a key in the source -are replaced by the corresponding value, -which may be a Python callable function or a string. -If the value is a callable, it is called with no arguments to get a string. -Strings are subst-expanded -and the result replaces the key. -

-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"
-                          ])
-
-
- Tar() - , - env.Tar() -

-Builds a tar archive of the specified files -and/or directories. -Unlike most builder methods, -the -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 -scons -knows about them from other Builder or function calls. -

-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')
-
- Textfile() - , - env.Textfile() -

-The Textfile builder generates a single text file. -The source strings constitute the lines; -nested lists of sources are flattened. -$LINESEPARATOR is used to separate the strings. -

-If present, the $SUBST_DICT construction variable -is used to modify the strings before they are written; -see the Substfile description for details. -

-The prefix and suffix specified by the $TEXTFILEPREFIX -and $TEXTFILESUFFIX construction variables -(the null string and .txt by default, respectively) -are automatically added to the target if they are not already present. -Examples: -

-# 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)
-
- Translate() - , - env.Translate() -

-This pseudo-builder belongs to gettext toolset. The builder extracts -internationalized messages from source files, updates POT -template (if necessary) and then updates PO translations (if -necessary). If $POAUTOINIT is set, missing PO files -will be automatically created (i.e. without translator person intervention). -The variables $LINGUAS_FILE and $POTDOMAIN are taken into -acount too. All other construction variables used by POTUpdate, and -POUpdate work here too. -

-Example 1. -The simplest way is to specify input files and output languages inline in -a SCons script when invoking Translate -

-# SConscript in 'po/' directory
-env = Environment( tools = ["default", "gettext"] )
-env['POAUTOINIT'] = 1
-env.Translate(['en','pl'], ['../a.cpp','../b.cpp']) 
-

-Example 2. -If you wish, you may also stick to conventional style known from -autotools, i.e. using -POTFILES.in and LINGUAS files -

-# LINGUAS
-en pl 
-#end
-
-# POTFILES.in
-a.cpp
-b.cpp
-# end
-
-# SConscript
-env = Environment( tools = ["default", "gettext"] )
-env['POAUTOINIT'] = 1
-env['XGETTEXTPATH'] = ['../']
-env.Translate(LINGUAS_FILE = 1, XGETTEXTFROM = 'POTFILES.in') 
-

-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 -PO files) and script(s) under variant directories are -responsible for compilation of PO to MO -files to and for installation of MO files. The "gluing -factor" synchronizing these two scripts is then the content of -LINGUAS file. Note, that the updated -POT and PO 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 -po/ directory contains LINGUAS file, -so the source tree looks familiar to translators, and they may work with the -project in their usual way. -

-Example 3. -Let's prepare a development tree as below -

- project/
-  + SConstruct
-  + build/        
-  + src/
-      + po/
-          + SConscript
-          + SConscript.i18n
-          + POTFILES.in
-          + LINGUAS
-

-with build being variant directory. Write the top-level -SConstruct script as follows -

-  # 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')
-

-the src/po/SConscript.i18n as -

-  # src/po/SConscript.i18n
-  Import('env')
-  env.Translate(LINGUAS_FILE=1, XGETTEXTFROM='POTFILES.in', XGETTEXTPATH=['../'])
-

-and the src/po/SConscript -

-  # src/po/SConscript
-  Import('env')
-  env.MOFiles(LINGUAS_FILE = 1)
-

-Such setup produces POT and PO files -under source tree in src/po/ and binary -MO files under variant tree in -build/po/. This way the POT and -PO files are separated from other output files, which must -not be committed back to source repositories (e.g. MO -files). -

-

Note

In above example, the PO files are not updated, -nor created automatically when you issue scons '.' command. -The files must be updated (created) by hand via scons -po-update and then MO files can be compiled by -running scons '.'.

-

- TypeLibrary() - , - env.TypeLibrary() -

-Builds a Windows type library (.tlb) -file from an input IDL file (.idl). -In addition, it will build the associated interface stub and -proxy source files, -naming them according to the base name of the .idl file. -For example, -

-env.TypeLibrary(source="foo.idl")
-

-Will create foo.tlb, -foo.h, -foo_i.c, -foo_p.c -and -foo_data.c -files. -

- Uic() - , - 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 .ui files directly as source -files to the Program, -Library and SharedLibrary 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 $QTDIR variable for more information. -Example: -

-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']
-
- Zip() - , - env.Zip() -

-Builds a zip archive of the specified files -and/or directories. -Unlike most builder methods, -the -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 -scons -knows about them from other Builder or function calls. -

-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')
-

All -targets of builder methods automatically depend on their sources. -An explicit dependency can -be specified using the -Depends -method of a construction environment (see below).

In addition, -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 -.F -(POSIX systems only), -.fpp, -or -.FPP -file extensions, -and assembly language files with -.S -(POSIX systems only), -.spp, -or -.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 -Object(), -StaticObject(), -and -SharedObject() -Builders by adding them -to the -SourceFileScanner -object. -See the section "Scanner Objects" -below, for more information about -defining your own Scanner objects -and using the -SourceFileScanner -object.

Methods and Functions to Do Things

In addition to Builder methods, -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:

-Function(arguments)
-

and if you call something through a construction -environment it looks like:

-env.Function(arguments)
-

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:

-from SCons.Script import *
-

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:

-env = Environment(FOO = 'foo')
-Default('$FOO')
-env.Default('$FOO')
-

In the above example, -the first call to the global -Default() -function will actually add a target named -$FOO -to the list of default targets, -while the second call to the -env.Default() -construction environment method -will expand the value -and add a target named -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 -scons -include:

- Action(action, [cmd/str/fun, [var, ...]] [option=value, ...]) - , - env.Action(action, [cmd/str/fun, [var, ...]] [option=value, ...]) -

-Creates an Action object for -the specified -action. -See the section "Action Objects," -below, for a complete explanation of the arguments and behavior. -

-Note that the -env.Action() -form of the invocation will expand -construction variables in any argument strings, -including the -action -argument, at the time it is called -using the construction variables in the -env -construction environment through which -env.Action() -was called. -The -Action() -form delays all variable expansion -until the Action object is actually used. -

- AddMethod(object, function, [name]) - , - env.AddMethod(function, [name]) -

-When called with the -AddMethod() -form, -adds the specified -function -to the specified -object -as the specified method -name. -When called with the -env.AddMethod() -form, -adds the specified -function -to the construction environment -env -as the specified method -name. -In both cases, if -name -is omitted or -None, -the name of the -specified -function -itself is used for the method name. -

-Examples: -

-# 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')
-
- AddOption(arguments) -

-This function adds a new command-line option to be recognized. -The specified -arguments -are the same as supported by the standard Python -optparse.add_option() -method (with a few additional capabilities noted below); -see the documentation for -optparse -for a thorough discussion of its option-processing capabities. -

-In addition to the arguments and values supported by the -optparse.add_option() -method, -the SCons -AddOption -function allows you to set the -nargs -keyword value to -'?' -(a string with just the question mark) -to indicate that the specified long option(s) take(s) an -optional -argument. -When -nargs = '?' -is passed to the -AddOption -function, the -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 -default= -keyword argument is supplied when calling -AddOption, -the option will have a default value of -None. -

-Once a new command-line option has been added with -AddOption, -the option value may be accessed using -GetOption -or -env.GetOption(). -The value may also be set, using -SetOption -or -env.SetOption(), -if conditions in a -SConscript -require overriding any default value. -Note, however, that a -value specified on the command line will -always -override a value set by any SConscript file. -

-Any specified -help= -strings for the new option(s) -will be displayed by the --H -or --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 -AddOption -will appear below the SCons options themselves, -under a separate -Local Options -heading. -The options will appear in the help text -in the order in which the -AddOption -calls occur. -

-Example: -

-AddOption('--prefix',
-          dest='prefix',
-          nargs=1, type='string',
-          action='store',
-          metavar='DIR',
-          help='installation prefix')
-env = Environment(PREFIX = GetOption('prefix'))
-
- AddPostAction(target, action) - , - env.AddPostAction(target, action) -

-Arranges for the specified -action -to be performed -after the specified -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. -

- AddPreAction(target, action) - , - env.AddPreAction(target, action) -

-Arranges for the specified -action -to be performed -before the specified -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 -.c -file via an intermediate object file: -

-foo = Program('foo.c')
-AddPreAction(foo, 'pre_action')
-

-The specified -pre_action -would be executed before -scons -calls the link command that actually -generates the executable program binary -foo, -not before compiling the -foo.c -file into an object file. -

- Alias(alias, [targets, [action]]) - , - env.Alias(alias, [targets, [action]]) -

-Creates one or more phony targets that -expand to one or more other targets. -An optional -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. -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: -

-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")
-
- AllowSubstExceptions([exception, ...]) -

-Specifies the exceptions that will be allowed -when expanding construction variables. -By default, -any construction variable expansions that generate a -NameError -or -IndexError -exception will expand to a -'' -(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 -AllowSubstExceptions -is called multiple times, -each call completely overwrites the previous list -of allowed exceptions. -

-Example: -

-# 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)
-
- AlwaysBuild(target, ...) - , - env.AlwaysBuild(target, ...) -

-Marks each given -target -so that it is always assumed to be out of date, -and will always be rebuilt if needed. -Note, however, that -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 -always -be built if so specified. -Multiple targets can be passed in to a single call to -AlwaysBuild. -

- 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: -

-env.Append(CCFLAGS = ' -g', FOO = ['foo.yyy'])
-
- env.AppendENVPath(name, newpath, [envname, sep, delete_existing]) -

-This appends new path elements to the given path in the -specified external environment -(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 -os.path.normpath -and -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 -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: -

-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
-
- 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 -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: -

-env.AppendUnique(CCFLAGS = '-g', FOO = ['foo.yyy'])
-
- BuildDir(build_dir, src_dir, [duplicate]) - , - env.BuildDir(build_dir, src_dir, [duplicate]) -

-Deprecated synonyms for -VariantDir -and -env.VariantDir(). -The -build_dir -argument becomes the -variant_dir -argument of -VariantDir -or -env.VariantDir(). -

- Builder(action, [arguments]) - , - env.Builder(action, [arguments]) -

-Creates a Builder object for -the specified -action. -See the section "Builder Objects," -below, for a complete explanation of the arguments and behavior. -

-Note that the -env.Builder() -form of the invocation will expand -construction variables in any arguments strings, -including the -action -argument, -at the time it is called -using the construction variables in the -env -construction environment through which -env.Builder() -was called. -The -Builder -form delays all variable expansion -until after the Builder object is actually called. -

- CacheDir(cache_dir) - , - env.CacheDir(cache_dir) -

-Specifies that -scons -will maintain a cache of derived files in -cache_dir. -The derived files in the cache will be shared -among all the builds using the same -CacheDir -call. -Specifying a -cache_dir -of -None -disables derived file caching. -

-Calling -env.CacheDir() -will only affect targets built -through the specified construction environment. -Calling -CacheDir -sets a global default -that will be used by all targets built -through construction environments -that do -not -have an -env.CacheDir() -specified. -

-When a -CacheDir() -is being used and -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, -scons -will retrieve the file from the cache. -If the derived file is not present in the cache, -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 -CacheDir -may be disabled for any invocation -by using the ---cache-disable -option. -

-If the ---cache-force -option is used, -scons -will place a copy of -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 -CacheDir -is added to a build, -or after using the ---cache-disable -option. -

-When using -CacheDir, -scons -will report, -"Retrieved `file' from cache," -unless the ---cache-show -option is being used. -When the ---cache-show -option is used, -scons -will print the action that -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 -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. -

- Clean(targets, files_or_dirs) - , - 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 --c -command line option. -The specified targets may be a list -or an individual target. -Multiple calls to -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 -Clean -method, or as a list. -Clean -will also accept the return value of any of the construction environment -Builder methods. -Examples: -

-The related -NoClean -function overrides calling -Clean -for the same target, -and any targets passed to both functions will -not -be removed by the --c -option. -

-Examples: -

-Clean('foo', ['bar', 'baz'])
-Clean('dist', env.Program('hello', 'hello.c'))
-Clean(['foo', 'bar'], 'something_else_to_clean')
-

-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. -

-Clean(docdir, os.path.join(docdir, projectname))
-
- 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: -

-env2 = env.Clone()
-env3 = env.Clone(CCFLAGS = '-g')
-

-Additionally, a list of tools and a toolpath may be specified, as in -the Environment constructor: -

-def MyTool(env): env['FOO'] = 'bar'
-env4 = env.Clone(tools = ['msvc', MyTool])
-

-The -parse_flags -keyword argument is also recognized: -

-# create an environment for compiling programs that use wxWidgets
-wx_env = env.Clone(parse_flags = '!wx-config --cflags --cxxflags')
-
- Command(target, source, action, [key=val, ...]) - , - 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 -source_scanner -keyword argument can -be used to specify -a Scanner object -that will be used to scan the sources. -(The global -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 -@ -(at-sign) -to suppress printing the command in question, -or by a -- -(hyphen) -to ignore the exit status of the external command. -

-Examples: -

-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 ])
-

-Note that the -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 -Dir -or -env.Dir() -functions. -

-Examples: -

-env.Command('ddd.list', Dir('ddd'), 'ls -l $SOURCE > $TARGET')
-
-env['DISTDIR'] = 'destination/directory'
-env.Command(env.Dir('$DISTDIR')), None, make_distdir)
-

-(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.) -

- Configure(env, [custom_tests, conf_dir, log_file, config_h]) - , - 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. -

- env.Copy([key=val, ...]) -

-A now-deprecated synonym for -env.Clone(). -

- Decider(function) - , - env.Decider(function) -

-Specifies that all up-to-date decisions for -targets built through this construction environment -will be handled by the specified -function. -The -function -can be one of the following strings -that specify the type of decision function -to be performed: -

-

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 -make -can be used a synonym for -timestamp-newer. -

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 -earlier -timestamp, such as can happen when restoring files from backup archives. -

MD5

-Specifies that a target shall be considered out of date and rebuilt -if the dependency's content has changed since 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. -content -can be used as a synonym for -MD5. -

MD5-timestamp

-Specifies that a target shall be considered out of date and rebuilt -if the dependency's content has changed since 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 -not -rebuilt. -This provides behavior very similar -to the -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 -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. -

-

-Examples: -

-# 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')
-

-In addition to the above already-available functions, -the -function -argument may be an actual Python function -that takes the following three arguments: -

-

dependency

-The Node (file) which -should cause the -target -to be rebuilt -if it has "changed" since the last tme -target -was built. -

target

-The Node (file) being built. -In the normal case, -this is what should get rebuilt -if the -dependency -has "changed." -

prev_ni

-Stored information about the state of the -dependency -the last time the -target -was built. -This can be consulted to match various -file characteristics -such as the timestamp, -size, or content signature. -

-

-The -function -should return a -True -(non-zero) -value if the -dependency -has "changed" since the last time -the -target -was built -(indicating that the target -should -be rebuilt), -and -False -(zero) -otherwise -(indicating that the target should -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: -

-def my_decider(dependency, target, prev_ni):
-    return not os.path.exists(str(target))
-
-env.Decider(my_decider)
-
- Default(targets) - , - env.Default(targets) -

-This specifies a list of default targets, -which will be built by -scons -if no explicit targets are given on the command line. -Multiple calls to -Default -are legal, -and add to the list of default targets. -

-Multiple targets should be specified as -separate arguments to the -Default -method, or as a list. -Default -will also accept the Node returned by any -of a construction environment's -builder methods. -

-Examples: -

-Default('foo', 'bar', 'baz')
-env.Default(['a', 'b', 'c'])
-hello = env.Program('hello', 'hello.c')
-env.Default(hello)
-

-An argument to -Default -of -None -will clear all default targets. -Later calls to -Default -will add to the (now empty) default-target list -like normal. -

-The current list of targets added using the -Default -function or method is available in the -DEFAULT_TARGETS -list; -see below. -

- 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. -

- Depends(target, dependency) - , - env.Depends(target, dependency) -

-Specifies an explicit dependency; -the -target -will be rebuilt -whenever the -dependency -has changed. -Both the specified -target -and -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: -

-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)
-
- 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: -

-dict = env.Dictionary()
-cc_dict = env.Dictionary('CC', 'CCFLAGS', 'CCCOM')
-
- Dir(name, [directory]) - , - env.Dir(name, [directory]) -

-This returns a Directory Node, -an object that represents the specified directory -name. -name -can be a relative or absolute path. -directory -is an optional directory that will be used as the parent directory. -If no -directory -is specified, the current script's directory is used as the parent. -

-If -name -is a list, SCons returns a list of Dir nodes. -Construction variables are expanded in -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. -

- env.Dump([key]) -

-Returns a pretty printable representation of the environment. -key, -if not -None, -should be a string containing the name of the variable of interest. -

-This SConstruct: -

-env=Environment()
-print env.Dump('CCCOM')
-

-will print: -

-'$CC -c -o $TARGET $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS $SOURCES'
-

-While this SConstruct: -

-env=Environment()
-print env.Dump()
-

-will print: -

-{ 'AR': 'ar',
-  'ARCOM': '$AR $ARFLAGS $TARGET $SOURCES\n$RANLIB $RANLIBFLAGS $TARGET',
-  'ARFLAGS': ['r'],
-  'AS': 'as',
-  'ASCOM': '$AS $ASFLAGS -o $TARGET $SOURCES',
-  'ASFLAGS': [],
-  ...
-
- EnsurePythonVersion(major, minor) - , - env.EnsurePythonVersion(major, minor) -

-Ensure that the Python version is at least -major.minor. -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: -

-EnsurePythonVersion(2,2)
-
- EnsureSConsVersion(major, minor, [revision]) - , - env.EnsureSConsVersion(major, minor, [revision]) -

-Ensure that the SCons version is at least -major.minor, -or -major.minor.revision. -if -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: -

-EnsureSConsVersion(0,14)
-
-EnsureSConsVersion(0,96,90)
-
- Environment([key=value, ...]) - , - env.Environment([key=value, ...]) -

-Return a new construction environment -initialized with the specified -key=value -pairs. -

- Execute(action, [strfunction, varlist]) - , - env.Execute(action, [strfunction, varlist]) -

-Executes an Action object. -The specified -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 -scons -will print an error message if the executed -action -fails--that is, -exits with or returns a non-zero value. -scons -will -not, -however, -automatically terminate the build -if the specified -action -fails. -If you want the build to stop in response to a failed -Execute -call, -you must explicitly check for a non-zero return value: -

-Execute(Copy('file.out', 'file.in'))
-
-if Execute("mkdir sub/dir/ectory"):
-    # The mkdir failed, don't try to build.
-    Exit(1)
-
- Exit([value]) - , - env.Exit([value]) -

-This tells -scons -to exit immediately -with the specified -value. -A default exit value of -0 -(zero) -is used if no value is specified. -

- Export(vars) - , - env.Export(vars) -

-This tells -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 -Export -will over-write previous exports that have the same name. -Multiple variable names can be passed to -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: -

-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})
-

-Note that the -SConscript -function supports an -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 -SConscript -function, below. -

- File(name, [directory]) - , - env.File(name, [directory]) -

-This returns a -File Node, -an object that represents the specified file -name. -name -can be a relative or absolute path. -directory -is an optional directory that will be used as the parent directory. -

-If -name -is a list, SCons returns a list of File nodes. -Construction variables are expanded in -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. -

- FindFile(file, dirs) - , - env.FindFile(file, dirs) -

-Search for -file -in the path specified by -dirs. -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: -

-foo = env.FindFile('foo', ['dir1', 'dir2'])
-
- FindInstalledFiles() - , - env.FindInstalledFiles() -

-Returns the list of targets set up by the -Install -or -InstallAs -builders. -

-This function serves as a convenient method to select the contents of -a binary package. -

-Example: -

-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()
-
- FindPathDirs(variable) -

-Returns a function -(actually a callable Python object) -intended to be used as the -path_function -of a Scanner object. -The returned object will look up the specified -variable -in a construction environment -and treat the construction variable's value as a list of -directory paths that should be searched -(like -$CPPPATH, -$LIBPATH, -etc.). -

-Note that use of -FindPathDirs -is generally preferable to -writing your own -path_function -for the following reasons: -1) The returned list will contain all appropriate directories -found in source trees -(when -VariantDir -is used) -or in code repositories -(when -Repository -or the --Y -option are used). -2) scons will identify expansions of -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: -

-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'))
-
- FindSourceFiles(node='"."') - , - 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 -node -which defaults to the '"."'-node. It will then return all leaves of -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: -

-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' )
-

-As you can see build support files (SConstruct in the above example) -will also be returned by this function. -

- Flatten(sequence) - , - 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: -

-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)
-
- GetBuildFailures() -

-Returns a list of exceptions for the -actions that failed while -attempting to build targets. -Each element in the returned list is a -BuildError -object -with the following attributes -that record various aspects -of the build failure: -

-.node -The node that was being built -when the build failure occurred. -

-.status -The numeric exit status -returned by the command or Python function -that failed when trying to build the -specified Node. -

-.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.) -

-.filename -The name of the file or -directory that actually caused the failure. -This may be different from the -.node -attribute. -For example, -if an attempt to build a target named -sub/dir/target -fails because the -sub/dir -directory could not be created, -then the -.node -attribute will be -sub/dir/target -but the -.filename -attribute will be -sub/dir. -

-.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. -

-.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. -

-.command -The actual expanded command that was executed and failed, -after expansion of -$TARGET, -$SOURCE, -and other construction variables. -

-Note that the -GetBuildFailures -function -will always return an empty list -until any build failure has occurred, -which means that -GetBuildFailures -will always return an empty list -while the -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 -atexit.register() -function. -Example: -

-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)
-
- GetBuildPath(file, [...]) - , - env.GetBuildPath(file, [...]) -

-Returns the -scons -path name (or names) for the specified -file -(or files). -The specified -file -or files -may be -scons -Nodes or strings representing path names. -

- GetLaunchDir() - , - env.GetLaunchDir() -

-Returns the absolute path name of the directory from which -scons -was initially invoked. -This can be useful when using the --u, --U -or --D -options, which internally -change to the directory in which the -SConstruct -file is found. -

- GetOption(name) - , - env.GetOption(name) -

-This function provides a way to query the value of -SCons options set on scons command line -(or set using the -SetOption -function). -The options supported are: -

-

cache_debug

-which corresponds to --cache-debug; -

cache_disable

-which corresponds to --cache-disable; -

cache_force

-which corresponds to --cache-force; -

cache_show

-which corresponds to --cache-show; -

clean

-which corresponds to -c, --clean and --remove; -

config

-which corresponds to --config; -

directory

-which corresponds to -C and --directory; -

diskcheck

-which corresponds to --diskcheck -

duplicate

-which corresponds to --duplicate; -

file

-which corresponds to -f, --file, --makefile and --sconstruct; -

help

-which corresponds to -h and --help; -

ignore_errors

-which corresponds to --ignore-errors; -

implicit_cache

-which corresponds to --implicit-cache; -

implicit_deps_changed

-which corresponds to --implicit-deps-changed; -

implicit_deps_unchanged

-which corresponds to --implicit-deps-unchanged; -

interactive

-which corresponds to --interact and --interactive; -

keep_going

-which corresponds to -k and --keep-going; -

max_drift

-which corresponds to --max-drift; -

no_exec

-which corresponds to -n, --no-exec, --just-print, --dry-run and --recon; -

no_site_dir

-which corresponds to --no-site-dir; -

num_jobs

-which corresponds to -j and --jobs; -

profile_file

-which corresponds to --profile; -

question

-which corresponds to -q and --question; -

random

-which corresponds to --random; -

repository

-which corresponds to -Y, --repository and --srcdir; -

silent

-which corresponds to -s, --silent and --quiet; -

site_dir

-which corresponds to --site-dir; -

stack_size

-which corresponds to --stack-size; -

taskmastertrace_file

-which corresponds to --taskmastertrace; and -

warn

-which corresponds to --warn and --warning. -

-

-See the documentation for the -corresponding command line object for information about each specific -option. -

- Glob(pattern, [ondisk, source, strings, exclude]) - , - env.Glob(pattern, [ondisk, source, strings, exclude]) -

-Returns Nodes (or strings) that match the specified -pattern, -relative to the directory of the current -SConscript -file. -The -env.Glob() -form performs string substition on -pattern -and returns whatever matches -the resulting expanded pattern. -

-The specified -pattern -uses Unix shell style metacharacters for matching: -

-  *       matches everything
-  ?       matches any single character
-  [seq]   matches any character in seq
-  [!seq]  matches any char not in seq
-

-If the first character of a filename is a dot, -it must be matched explicitly. -Character matches do -not -span directory separators. -

-The -Glob -knows about -repositories -(see the -Repository -function) -and source directories -(see the -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 -ondisk -argument may be set to -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 -source -argument may be set to -True -(or any equivalent value) -to specify that, -when the local directory is a -VariantDir, -the returned Nodes should be from the -corresponding source directory, -not the local directory. -

-The -strings -argument may be set to -True -(or any equivalent value) -to have the -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 -SConscript -file, -any Node translation will be relative -to the other -SConscript -directory, -not the original -SConscript -directory.) -

-The -exclude -argument may be set to a pattern or a list of patterns -(following the same Unix shell semantics) -which must be filtered out of returned elements. -Elements matching a least one pattern of -this list will be excluded. -

-Examples: -

-Program('foo', Glob('*.c'))
-Zip('/tmp/everything', Glob('.??*') + Glob('*'))
-sources = Glob('*.cpp', exclude=['os_*_specific_*.cpp']) + Glob('os_%s_specific_*.cpp'%currentOS)
-
- Help(text, append=False) - , - env.Help(text, append=False) -

-This specifies help text to be printed if the --h -argument is given to -scons. -If -Help -is called multiple times, the text is appended together in the order that -Help -is called. With append set to False, any -Help -text generated with -AddOption -is clobbered. If append is True, the AddOption help is prepended to the help -string, thus preserving the --h -message. -

- Ignore(target, dependency) - , - 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 -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: -

-env.Ignore('foo', 'foo.c')
-env.Ignore('bar', ['bar1.h', 'bar2.h'])
-env.Ignore('.','foobar.obj')
-env.Ignore('bar','bar/foobar.obj')
-
- Import(vars) - , - env.Import(vars) -

-This tells -scons -to import a list of variables into the current SConscript file. This -will import variables that were exported with -Export -or in the -exports -argument to -SConscript. -Variables exported by -SConscript -have precedence. -Multiple variable names can be passed to -Import -as separate arguments or as a list. The variable "*" can be used -to import all variables. -

-Examples: -

-Import("env")
-Import("env", "variable")
-Import(["env", "variable"])
-Import("*")
-
- Literal(string) - , - env.Literal(string) -

-The specified -string -will be preserved as-is -and not have construction variables expanded. -

- Local(targets) - , - env.Local(targets) -

-The specified -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. -

- env.MergeFlags(arg, [unique]) -

-Merges the specified -arg -values to the construction environment's construction variables. -If the -arg -argument is not a dictionary, -it is converted to one by calling -env.ParseFlags -on the argument -before the values are merged. -Note that -arg -must be a single value, -so multiple strings must -be passed in as a list, -not as separate arguments to -env.MergeFlags. -

-By default, -duplicate values are eliminated; -you can, however, specify -unique=0 -to allow duplicate -values to be added. -When eliminating duplicate values, -any construction variables that end with -the string -PATH -keep the left-most unique value. -All other construction variables keep -the right-most unique value. -

-Examples: -

-# 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'])
-
- NoCache(target, ...) - , - env.NoCache(target, ...) -

-Specifies a list of files which should -not -be cached whenever the -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 -NoCache -method, or as a list. -NoCache -will also accept the return value of any of the construction environment -Builder methods. -

-Calling -NoCache -on directories and other non-File Node types has no effect because -only File Nodes are cached. -

-Examples: -

-NoCache('foo.elf')
-NoCache(env.Program('hello', 'hello.c'))
-
- NoClean(target, ...) - , - env.NoClean(target, ...) -

-Specifies a list of files or directories which should -not -be removed whenever the targets (or their dependencies) -are specified with the --c -command line option. -The specified targets may be a list -or an individual target. -Multiple calls to -NoClean -are legal, -and prevent each specified target -from being removed by calls to the --c -option. -

-Multiple files or directories should be specified -either as separate arguments to the -NoClean -method, or as a list. -NoClean -will also accept the return value of any of the construction environment -Builder methods. -

-Calling -NoClean -for a target overrides calling -Clean -for the same target, -and any targets passed to both functions will -not -be removed by the --c -option. -

-Examples: -

-NoClean('foo.elf')
-NoClean(env.Program('hello', 'hello.c'))
-
- env.ParseConfig(command, [function, unique]) -

-Calls the specified -function -to modify the environment as specified by the output of -command. -The default -function -is -env.MergeFlags, -which expects the output of a typical -*-config -command -(for example, -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 -unique=0 -to allow duplicate -values to be added. -

-Interpreted options -and the construction variables they affect -are as specified for the -env.ParseFlags -method (which this method calls). -See that method's description, below, -for a table of options and construction variables. -

- ParseDepends(filename, [must_exist, only_one]) - , - env.ParseDepends(filename, [must_exist, only_one]) -

-Parses the contents of the specified -filename -as a list of dependencies in the style of -Make -or -mkdep, -and explicitly establishes all of the listed dependencies. -

-By default, -it is not an error -if the specified -filename -does not exist. -The optional -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 -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 -gcc -M -flag, -which should typically only -write dependency information for -one output file into a corresponding -.d -file. -

-The -filename -and all of the files listed therein -will be interpreted relative to -the directory of the -SConscript -file which calls the -ParseDepends -function. -

- 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 -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 -env.MergeFlags -will call this method if its argument is not a dictionary, -so it is usually not necessary to call -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: -

--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
-

-Any other strings not associated with options -are assumed to be the names of libraries -and added to the -$LIBS -construction variable. -

-Examples (all of which produce the same result): -

-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')
-
- Platform(string) -

-The -Platform -form returns a callable object -that can be used to initialize -a construction environment using the -platform keyword of the -Environment -function. -

-Example: -

-env = Environment(platform = Platform('win32'))
-

-The -env.Platform -form applies the callable object for the specified platform -string -to the environment through which the method was called. -

-env.Platform('posix')
-

-Note that the -win32 -platform adds the -SystemDrive -and -SystemRoot -variables from the user's external environment -to the construction environment's -$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 -:pserver:anonymous@cvs.sourceforge.net:/cvsroot/scons) -will work on Windows systems. -

- Precious(target, ...) - , - env.Precious(target, ...) -

-Marks each given -target -as precious so it is not deleted before it is rebuilt. Normally -scons -deletes a target before building it. -Multiple targets can be passed in to a single call to -Precious. -

- 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: -

-env.Prepend(CCFLAGS = '-g ', FOO = ['foo.yyy'])
-
- env.PrependENVPath(name, newpath, [envname, sep, delete_existing]) -

-This appends new path elements to the given path in the -specified external environment -($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 -os.path.normpath -and -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 -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: -

-print 'before:',env['ENV']['INCLUDE']
-include_path = '/foo/bar:/foo'
-env.PrependENVPath('INCLUDE', include_path)
-print 'after:',env['ENV']['INCLUDE']
-

-The above example will print: -

-before: /biz:/foo
-after: /foo/bar:/foo:/biz
-
- 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 -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: -

-env.PrependUnique(CCFLAGS = '-g', FOO = ['foo.yyy'])
-
- Progress(callable, [interval]) - , - Progress(string, [interval, file, overwrite]) - , - 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 -__call__() -method), -the function will be called -once every -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 -*args -and -**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: -

-def my_progress_function(node, *args, **kw):
-    print('Evaluating node %s!' % node)
-Progress(my_progress_function, interval=10)
-

-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 -\r -(a carriage return) -at the end so that the string -will overwrite itself on a display: -

-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)
-

-If the first argument -Progress -is a string, -the string will be displayed -every -interval -evaluated Nodes. -The default is to print the string on standard output; -an alternate output stream -may be specified with the -file= -argument. -The following will print a series of dots -on the error output, -one dot for every 100 evaluated Nodes: -

-import sys
-Progress('.', interval=100, file=sys.stderr)
-

-If the string contains the verbatim substring -$TARGET, -it will be replaced with the Node. -Note that, for performance reasons, this is -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 -\r -(carriage return) to cause each line to overwritten by the next line, -and the -overwrite= -keyword argument to make sure the previously-printed -file name is overwritten with blank spaces: -

-import sys
-Progress('$TARGET\r', overwrite=True)
-

-If the first argument to -Progress -is a list of strings, -then each string in the list will be displayed -in rotating fashion every -interval -evaluated Nodes. -This can be used to implement a "spinner" -on the user's screen as follows: -

-Progress(['-\r', '\\\r', '|\r', '/\r'], interval=5)
-
- Pseudo(target, ...) - , - env.Pseudo(target, ...) -

-This indicates that each given -target -should not be created by the build rule, and if the target is created, -an error will be generated. This is similar to the gnu make .PHONY -target. However, in the vast majority of cases, an -Alias -is more appropriate. - -Multiple targets can be passed in to a single call to -Pseudo. -

- PyPackageDir(modulename) - , - env.PyPackageDir(modulename) -

-This returns a Directory Node similar to Dir. -The python module / package is looked up and if located -the directory is returned for the location. -modulename -Is a named python package / module to -lookup the directory for it's location. -

-If -modulename -is a list, SCons returns a list of Dir nodes. -Construction variables are expanded in -modulename. -

- env.Replace(key=val, [...]) -

-Replaces construction variables in the Environment -with the specified keyword arguments. -

-Example: -

-env.Replace(CCFLAGS = '-g', FOO = 'foo.xxx')
-
- Repository(directory) - , - env.Repository(directory) -

-Specifies that -directory -is a repository to be searched for files. -Multiple calls to -Repository -are legal, -and each one adds to the list of -repositories that will be searched. -

-To -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 -scons, -so that the repository contains the necessary -signature information to allow -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, -scons -will -not -make a copy in the local directory tree. -In order to guarantee that a local copy -will be made, -use the -Local -method. -

- Requires(target, prerequisite) - , - 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, -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: -

-env.Requires('foo', 'file-that-must-be-built-before-foo')
-
- 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 -vars -string arguments. -Multiple strings contaning variable names may be passed to -Return. -Any strings that contain white space -

-The optional -stop= -keyword argument may be set to a false value -to continue processing the rest of the SConscript -file after the -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 -vars -at the point -Return -is called. -

-Examples: -

-# 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')
-
- Scanner(function, [argument, keys, path_function, node_class, node_factory, scan_check, recursive]) - , - env.Scanner(function, [argument, keys, path_function, node_class, node_factory, scan_check, recursive]) -

-Creates a Scanner object for -the specified -function. -See the section "Scanner Objects," -below, for a complete explanation of the arguments and behavior. -

- SConscript(scripts, [exports, variant_dir, duplicate, must_exist]) - , - env.SConscript(scripts, [exports, variant_dir, duplicate, must_exist]) - , - SConscript(dirs=subdirs, [name=script, exports, variant_dir, duplicate, must_exist]) - , - env.SConscript(dirs=subdirs, [name=script, exports, variant_dir, duplicate, must_exist]) -

-This tells -scons -to execute -one or more subsidiary SConscript (configuration) files. -Any variables returned by a called script using -Return -will be returned by the call to -SConscript. -There are two ways to call the -SConscript -function. -

-The first way you can call -SConscript -is to explicitly specify one or more -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 -Split). -Examples: -

-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')
-

-The second way you can call -SConscript -is to specify a list of (sub)directory names -as a -dirs=subdirs -keyword argument. -In this case, -scons -will, by default, -execute a subsidiary configuration file named -SConscript -in each of the specified directories. -You may specify a name other than -SConscript -by supplying an optional -name=script -keyword argument. -The first three examples below have the same effect -as the first three examples above: -

-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')
-

-The optional -exports -argument provides a list of variable names or a dictionary of -named values to export to the -script(s). -These variables are locally exported only to the specified -script(s), -and do not affect the global pool of variables used by the -Export -function. - -The subsidiary -script(s) -must use the -Import -function to import the variables. -Examples: -

-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')
-

-If the optional -variant_dir -argument is present, it causes an effect equivalent to the -VariantDir -method described below. -(If -variant_dir -is not present, the - -duplicate - -argument is ignored.) -The -variant_dir - -argument is interpreted relative to the directory of the calling -SConscript -file. -See the description of the -VariantDir -function below for additional details and restrictions. -

-If -variant_dir -is present, - -the source directory is the directory in which the -SConscript -file resides and the -SConscript -file is evaluated as if it were in the -variant_dir -directory: -

-SConscript('src/SConscript', variant_dir = 'build')
-

-is equivalent to -

-VariantDir('build', 'src')
-SConscript('build/SConscript')
-

-This later paradigm is often used when the sources are -in the same directory as the -SConstruct: -

-SConscript('SConscript', variant_dir = 'build')
-

-is equivalent to -

-VariantDir('build', '.')
-SConscript('build/SConscript')
-

- -

-The optional -must_exist -argument, if true, causes an exception to be raised if a requested -SConscript file is not found. The current default is false, -causing only a warning to be omitted, but this behavior is deprecated. -For scripts which truly intend to be optional, transition to -explicty supplying -must_exist=False to the call. -

-Here are some composite examples: -

-# 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')
-
-# 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)
-
-# 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)
-
-# 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)
-
- SConscriptChdir(value) - , - env.SConscriptChdir(value) -

-By default, -scons -changes its working directory -to the directory in which each -subsidiary SConscript file lives. -This behavior may be disabled -by specifying either: -

-SConscriptChdir(0)
-env.SConscriptChdir(0)
-

-in which case -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: -

-env = Environment()
-SConscriptChdir(0)
-SConscript('foo/SConscript')	# will not chdir to foo
-env.SConscriptChdir(1)
-SConscript('bar/SConscript')	# will chdir to bar
-
- SConsignFile([file, dbm_module]) - , - env.SConsignFile([file, dbm_module]) -

-This tells -scons -to store all file signatures -in the specified database -file. -If the -file -name is omitted, -.sconsign -is used by default. -(The actual file name(s) stored on disk -may have an appropriated suffix appended -by the - dbm_module.) -If -file -is not an absolute path name, -the file is placed in the same directory as the top-level -SConstruct -file. -

-If -file -is -None, -then -scons -will store file signatures -in a separate -.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 -dbm_module -argument can be used to specify -which Python database module -The default is to use a custom -SCons.dblite -module that uses pickled -Python data structures, -and which works on all Python versions. -

-Examples: -

-# 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)
-
- 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: -

-env.SetDefault(FOO = 'foo')
-
-if 'FOO' not in env: env['FOO'] = 'foo'
-
- SetOption(name, value) - , - 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: -

-

clean

-which corresponds to -c, --clean and --remove; -

duplicate

-which corresponds to --duplicate; -

help

-which corresponds to -h and --help; -

implicit_cache

-which corresponds to --implicit-cache; -

max_drift

-which corresponds to --max-drift; -

no_exec

-which corresponds to -n, --no-exec, --just-print, --dry-run and --recon; -

num_jobs

-which corresponds to -j and --jobs; -

random

-which corresponds to --random; and -

silent

-which corresponds to --silent. -

stack_size

-which corresponds to --stack-size. -

-

-See the documentation for the -corresponding command line object for information about each specific -option. -

-Example: -

-SetOption('max_drift', 1)
-
- SideEffect(side_effect, target) - , - env.SideEffect(side_effect, target) -

-Declares -side_effect -as a side effect of building -target. -Both -side_effect -and -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, -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 -side_effect -target is -not -automatically removed -when the -target -is removed by the --c -option. -(Note, however, that the -side_effect -might be removed as part of -cleaning the directory in which it lives.) -If you want to make sure the -side_effect -is cleaned whenever a specific -target -is cleaned, -you must specify this explicitly -with the -Clean -or -env.Clean -function. -

- SourceCode(entries, builder) - , - 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 -builder. -The specified -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, -scons -will search up the directory tree -and use the first -SourceCode -builder it finds. -The specified -builder -may be -None, -in which case -scons -will not use a builder to fetch -source files for the specified -entries, -even if a -SourceCode -builder has been specified -for a directory higher up the tree. -

-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: -

-env.SourceCode('.', None)
-

-Note that if the specified -builder -is one you create by hand, -it must have an associated -construction environment to use -when fetching a source file. -

-scons -provides a set of canned factory -functions that return appropriate -Builders for various popular -source code management systems. -Canonical examples of invocation include: -

-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)
-

- -

- SourceSignatures(type) - , - env.SourceSignatures(type) -

-Note: Although it is not yet officially deprecated, -use of this function is discouraged. -See the -Decider -function for a more flexible and straightforward way -to configure SCons' decision-making. -

-The -SourceSignatures -function tells -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 -MD5 -or -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. -

-MD5 -means -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. -

-timestamp -means -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 -older -than the last time it was used to rebuild the target file.) -

-There is no different between the two behaviors -for Python -Value -node objects. -

-MD5 -signatures take longer to compute, -but are more accurate than -timestamp -signatures. -The default value is -MD5. -

-Note that the default -TargetSignatures -setting (see below) -is to use this -SourceSignatures -setting for any target files that are used -to build other target files. -Consequently, changing the value of -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 -env.SourceSignatures -is used). -

- Split(arg) - , - 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: -

-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
-""")
-
- env.subst(input, [raw, target, source, conv]) -

-Performs construction variable interpolation -on the specified string or sequence argument -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 -$( -and -$) -character sequences will be stripped from the returned string, -The optional -raw -argument may be set to -1 -if you want to preserve white space and -$(-$) -sequences. -The -raw -argument may be set to -2 -if you want to strip -all characters between -any -$( -and -$) -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 -target -and -source -keyword arguments -must be set to lists of -target and source nodes, respectively, -if you want the -$TARGET, -$TARGETS, -$SOURCE -and -$SOURCES -to be available for expansion. -This is usually necessary if you are -calling -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 -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 -Λ -idiom to pass in an unnamed function -that simply returns its unconverted argument. -

-Example: -

-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)
-
- Tag(node, tags) -

-Annotates file or directory Nodes with -information about how the -Package -Builder should package those files or directories. -All tags are optional. -

-Examples: -

-# 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 )
-
- TargetSignatures(type) - , - env.TargetSignatures(type) -

-Note: Although it is not yet officially deprecated, -use of this function is discouraged. -See the -Decider -function for a more flexible and straightforward way -to configure SCons' decision-making. -

-The -TargetSignatures -function tells -scons -how to decide if a target file -(a file that -is -built from any other files) -has changed since the last time it -was used to build some other target file. -Legal values are -"build"; -"content" -(or its synonym -"MD5"); -"timestamp"; -or -"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. -

-"content" -(or its synonym -"MD5") -means -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 -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. -

-"timestamp" -means -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 -older -than the last time it was used to rebuild the target file.) -

-"source" -means -scons -decides that a target file has changed -as specified by the corresponding -SourceSignatures -setting -("MD5" -or -"timestamp"). -This means that -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. -

-"build" -means -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 -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. -

-"build" -signatures are fastest because -"content" -(or -"MD5") -signatures take longer to compute, -but are more accurate than -"timestamp" -signatures, -and can prevent unnecessary "downstream" rebuilds -when a target file is rebuilt to the exact same contents -as the previous build. -The -"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 -"source". -

-Because the default setting is -"source", -using -SourceSignatures -is generally preferable to -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 -TargetSignatures -provides specific control for how built target files -affect their "downstream" dependencies. -

- Tool(string, [toolpath, **kw]) - , - env.Tool(string, [toolpath, **kw]) -

-The -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 -$TOOLS -construction variable. -

-Additional keyword arguments are passed to the tool's -generate() -method. -

-Examples: -

-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
-

-The -env.Tool -form of the function -applies the callable object for the specified tool -string -to the environment through which the method was called. -

-Additional keyword arguments are passed to the tool's -generate() -method. -

-env.Tool('gcc')
-env.Tool('opengl', toolpath = ['build/tools'])
-
- Value(value, [built_value]) - , - 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 -str(value) -changes between SCons runs, any targets depending on -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 -write() -method that can be used to "build" a Value Node -by setting a new value. -The optional -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 -read() -method that will return the built value of the Node. -

-Examples: -

-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))
-
- VariantDir(variant_dir, src_dir, [duplicate]) - , - env.VariantDir(variant_dir, src_dir, [duplicate]) -

-Use the -VariantDir -function to create a copy of your sources in another location: -if a name under -variant_dir -is not found but exists under -src_dir, -the file or directory is copied to -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. -

-VariantDir -can be called multiple times with the same -src_dir -to set up multiple builds with different options -(variants). -The -src_dir -location must be in or underneath the SConstruct file's directory, and -variant_dir -may not be underneath -src_dir. - -

-The default behavior is for -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 ---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 -variant_dir. -

-Duplicating the source tree may be disabled by setting the -duplicate -argument to -0 -(zero). -This will cause -scons -to invoke Builders using the path names of source files in -src_dir -and the path names of derived files within -variant_dir. -This is always more efficient than -duplicate=1, -and is usually safe for most builds -(but see above for cases that may cause problems). -

-Note that -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 -variant_dir, -regardless of the value of -duplicate. -This is how you tell -scons -which variant of a source tree to build: -

-# run src/SConscript in two variant directories
-VariantDir('build/variant1', 'src')
-SConscript('build/variant1/SConscript')
-VariantDir('build/variant2', 'src')
-SConscript('build/variant2/SConscript')
-

-See also the -SConscript -function, described above, -for another way to specify a variant directory -in conjunction with calling a subsidiary SConscript file. -

-Examples: -

-# use names in the build directory, not the source directory
-VariantDir('build', 'src', duplicate=0)
-Program('build/prog', 'build/source.c')
-
-# this builds both the source and docs in a separate subtree
-VariantDir('build', '.', duplicate=0)
-SConscript(dirs=['build/src','build/doc'])
-
-# 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)
-
- WhereIs(program, [path, pathext, reject]) - , - env.WhereIs(program, [path, pathext, reject]) -

-Searches for the specified executable -program, -returning the full path name to the program -if it is found, -and returning None if not. -Searches the specified -path, -the value of the calling environment's PATH -(env['ENV']['PATH']), -or the user's current external PATH -(os.environ['PATH']) -by default. -On Windows systems, searches for executable -programs with any of the file extensions -listed in the specified -pathext, -the calling environment's PATHEXT -(env['ENV']['PATHEXT']) -or the user's current PATHEXT -(os.environ['PATHEXT']) -by default. -Will not select any -path name or names -in the specified -reject -list, if any. -

SConscript Variables

In addition to the global functions and methods, -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:

-from SCons.Script import *
-
ARGLIST

A list -keyword=value -arguments specified on the command line. -Each element in the list is a tuple -containing the -(keyword,value) -of the argument. -The separate -keyword -and -value -elements of the tuple -can be accessed by -subscripting for element -[0] -and -[1] -of the tuple, respectively.

Example:

-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
-
ARGUMENTS

A dictionary of all the -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 -ARGUMENTS -dictionary.

Example:

-if ARGUMENTS.get('debug', 0):
-    env = Environment(CCFLAGS = '-g')
-else:
-    env = Environment()
-
BUILD_TARGETS

A list of the targets which -scons -will actually try to build, -regardless of whether they were specified on -the command line or via the -Default() -function or method. -The elements of this list may be strings -or -nodes, so you should run the list through the Python -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 -Default() -function or method, -the contents of the list may change -on each successive call to -Default(). -See the -DEFAULT_TARGETS -list, below, -for additional information.

Example:

-if 'foo' in BUILD_TARGETS:
-    print("Don't forget to test the `foo' program!")
-if 'special/program' in BUILD_TARGETS:
-    SConscript('special')
-

Note that the -BUILD_TARGETS -list only contains targets expected listed -on the command line or via calls to the -Default() -function or method. -It does -not -contain all dependent targets that will be built as -a result of making the sure the explicitly-specified -targets are up to date.

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:

-if 'foo' in COMMAND_LINE_TARGETS:
-    print("Don't forget to test the `foo' program!")
-if 'special/program' in COMMAND_LINE_TARGETS:
-    SConscript('special')
-
DEFAULT_TARGETS

A list of the target -nodes -that have been specified using the -Default() -function or method. -The elements of the list are nodes, -so you need to run them through the Python -str -function to get at the path name for each Node.

Example:

-print(str(DEFAULT_TARGETS[0]))
-if 'foo' in [str(t) for t in DEFAULT_TARGETS]:
-    print("Don't forget to test the `foo' program!")
-

The contents of the -DEFAULT_TARGETS -list change on on each successive call to the -Default() -function:

-print([str(t) for t in DEFAULT_TARGETS])   # originally []
-Default('foo')
-print([str(t) for t in DEFAULT_TARGETS])   # now a node ['foo']
-Default('bar')
-print([str(t) for t in DEFAULT_TARGETS])   # now a node ['foo', 'bar']
-Default(None)
-print([str(t) for t in DEFAULT_TARGETS])   # back to []
-

Consequently, be sure to use -DEFAULT_TARGETS -only after you've made all of your -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.

Construction Variables

A construction environment has an associated dictionary of -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:

__LDMODULEVERSIONFLAGS

-This construction variable automatically introduces $_LDMODULEVERSIONFLAGS -if $LDMODULEVERSION is set. Othervise it evaluates to an empty string. -

__SHLIBVERSIONFLAGS

-This construction variable automatically introduces $_SHLIBVERSIONFLAGS -if $SHLIBVERSION is set. Othervise it evaluates to an empty string. -

_APPLELINK_COMPATIBILITY_VERSION

- A macro (by default a generator function) used to create the linker flags to specify - apple's linker's -compatibility_version flag. - The default generator uses $APPLELINK_COMPATIBILITY_VERSION - and $APPLELINK_NO_COMPATIBILITY_VERSION and $SHLIBVERSION - to determine the correct flag. -

APPLELINK_COMPATIBILITY_VERSION

- On Mac OS X this is used to set the linker flag: - - -compatibility_version -

- The value is specified as X[.Y[.Z]] where X is between 1 and 65535, Y can be omitted or between 1 and - 255, Z can be omitted or between 1 and 255. This value will be derived from $SHLIBVERSION if - not - specified. The lowest digit will be dropped and replaced by a 0. -

- If the $APPLELINK_NO_COMPATIBILITY_VERSION is set then no -compatibility_version will be - output. -

See MacOS's ld manpage for more details

_APPLELINK_CURRENT_VERSION

- A macro (by default a generator function) used to create the linker flags to specify apple's linker's - -current_version flag. The default generator uses $APPLELINK_CURRENT_VERSION and - $APPLELINK_NO_CURRENT_VERSION and $SHLIBVERSION to determine the correct flag. -

APPLELINK_CURRENT_VERSION

- On Mac OS X this is used to set the linker flag: - - -current_version -

- The value is specified as X[.Y[.Z]] where X is between 1 and 65535, Y can be omitted or between 1 and - 255, Z can be omitted or between 1 and 255. This value will be set to $SHLIBVERSION if not - specified. -

- If the $APPLELINK_NO_CURRENT_VERSION is set then no -current_version will be - output. -

See MacOS's ld manpage for more details

APPLELINK_NO_COMPATIBILITY_VERSION

- Set this to any True (1|True|non-empty string) value to disable adding -compatibility_version flag when - generating versioned shared libraries. -

- This overrides $APPLELINK_COMPATIBILITY_VERSION. -

APPLELINK_NO_CURRENT_VERSION

- Set this to any True (1|True|non-empty string) value to disable adding -current_version flag when - generating versioned shared libraries. -

- This overrides $APPLELINK_CURRENT_VERSION. -

AR

-The static library archiver. -

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 -Architecture: -field in an Ipkg -control file, -and the BuildArch: field -in the RPM .spec file, -as well as forming part of the name of a generated RPM package file. -

ARCOM

-The command line used to generate a static library from object files. -

ARCOMSTR

-The string displayed when an object file -is generated from an assembly-language source file. -If this is not set, then $ARCOM (the command line) is displayed. -

-env = Environment(ARCOMSTR = "Archiving $TARGET")
-
ARFLAGS

-General options passed to the static library archiver. -

AS

-The assembler. -

ASCOM

-The command line used to generate an object file -from an assembly-language source file. -

ASCOMSTR

-The string displayed when an object file -is generated from an assembly-language source file. -If this is not set, then $ASCOM (the command line) is displayed. -

-env = Environment(ASCOMSTR = "Assembling $TARGET")
-
ASFLAGS

-General options passed to the assembler. -

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 $ASFLAGS and $CPPFLAGS construction variables -are included on this command line. -

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 $ASPPCOM (the command line) is displayed. -

-env = Environment(ASPPCOMSTR = "Assembling $TARGET")
-
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 $ASFLAGS. -

BIBTEX

-The bibliography generator for the TeX formatter and typesetter and the -LaTeX structured formatter and typesetter. -

BIBTEXCOM

-The command line used to call the bibliography generator for the -TeX formatter and typesetter and the LaTeX structured formatter and -typesetter. -

BIBTEXCOMSTR

-The string displayed when generating a bibliography -for TeX or LaTeX. -If this is not set, then $BIBTEXCOM (the command line) is displayed. -

-env = Environment(BIBTEXCOMSTR = "Generating bibliography $TARGET")
-
BIBTEXFLAGS

-General options passed to the bibliography generator for the TeX formatter -and typesetter and the LaTeX structured formatter and typesetter. -

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: -

-env = Environment(BUILDERS = {'NewBuilder' : foo})
-

-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: -

-env = Environment()
-env.Append(BUILDERS = {'NewBuilder' : foo})
-

-or this: -

-env = Environment()
-env['BUILDERS']['NewBuilder'] = foo
-
CC

-The C compiler. -

CCCOM

-The command line used to compile a C source file to a (static) object -file. Any options specified in the $CFLAGS, $CCFLAGS and -$CPPFLAGS construction variables are included on this command -line. -

CCCOMSTR

-The string displayed when a C source file -is compiled to a (static) object file. -If this is not set, then $CCCOM (the command line) is displayed. -

-env = Environment(CCCOMSTR = "Compiling static object $TARGET")
-
CCFLAGS

-General options that are passed to the C and C++ compilers. -

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 $PCH construction variable is set. -

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 $PDB construction variable is set. -

-The Visual C++ compiler option that SCons uses by default -to generate PDB information is /Z7. -This works correctly with parallel (-j) 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 /Zi instead may yield improved -link-time performance, -although parallel builds will no longer work. -

-You can generate PDB files with the /Zi -switch by overriding the default $CCPDBFLAGS variable as follows: -

-env['CCPDBFLAGS'] = ['${(PDB and "/Zi /Fd%s" % File(PDB)) or ""}']
-

-An alternative would be to use the /Zi -to put the debugging information in a separate .pdb -file for each object file by overriding -the $CCPDBFLAGS variable as follows: -

-env['CCPDBFLAGS'] = '/Zi /Fd${TARGET}.pdb'
-
CCVERSION

-The version number of the C compiler. -This may or may not be set, -depending on the specific C compiler being used. -

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 -.c -(lower case). -On case-insensitive systems (like Windows), -SCons also treats -.C -(upper case) files -as C files. -

CFLAGS

-General options that are passed to the C compiler (C only; not C++). -

CHANGE_SPECFILE

-A hook for modifying the file that controls the packaging build -(the .spec for RPM, -the control for Ipkg, -the .wxs for MSI). -If set, the function will be called -after the SCons template for the file has been written. -

CHANGED_SOURCES

-A reserved variable name -that may not be set or used in a construction environment. -(See "Variable Substitution," below.) -

CHANGED_TARGETS

-A reserved variable name -that may not be set or used in a construction environment. -(See "Variable Substitution," below.) -

CHANGELOG

-The name of a file containing the change log text -to be included in the package. -This is included as the -%changelog -section of the RPM -.spec file. -

_concat

-A function used to produce variables like $_CPPINCFLAGS. 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. -

-env['_CPPINCFLAGS'] = '$( ${_concat(INCPREFIX, CPPPATH, INCSUFFIX, __env__, RDirs)} $)',
-
CONFIGUREDIR

-The name of the directory in which -Configure context test files are written. -The default is -.sconf_temp -in the top-level directory -containing the -SConstruct -file. -

CONFIGURELOG

-The name of the Configure context log file. -The default is -config.log -in the top-level directory -containing the -SConstruct -file. -

_CPPDEFFLAGS

-An automatically-generated construction variable -containing the C preprocessor command-line options -to define values. -The value of $_CPPDEFFLAGS is created -by respectively prepending and appending -$CPPDEFPREFIX and $CPPDEFSUFFIX -to the beginning and end -of each definition in $CPPDEFINES. -

CPPDEFINES

-A platform independent specification of C preprocessor definitions. -The definitions will be added to command lines -through the automatically-generated -$_CPPDEFFLAGS construction variable (see above), -which is constructed according to -the type of value of $CPPDEFINES: -

-If $CPPDEFINES is a string, -the values of the -$CPPDEFPREFIX and $CPPDEFSUFFIX -construction variables -will be respectively prepended and appended to the beginning and end -of each definition in $CPPDEFINES. -

-# Will add -Dxyz to POSIX compiler command lines,
-# and /Dxyz to Microsoft Visual C++ command lines.
-env = Environment(CPPDEFINES='xyz')
-

-If $CPPDEFINES is a list, -the values of the -$CPPDEFPREFIX and $CPPDEFSUFFIX -construction variables -will be respectively prepended and 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: -

-# 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'])
-

-If $CPPDEFINES is a dictionary, -the values of the -$CPPDEFPREFIX and $CPPDEFSUFFIX -construction variables -will be respectively prepended and 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 -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 -scons -is run. -

-# 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})
-
CPPDEFPREFIX

-The prefix used to specify preprocessor definitions -on the C compiler command line. -This will be prepended to the beginning of each definition -in the $CPPDEFINES construction variable -when the $_CPPDEFFLAGS variable is automatically generated. -

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 $CPPDEFINES construction variable -when the $_CPPDEFFLAGS variable is automatically generated. -

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 $CCCOM, -$SHCCCOM, -$CXXCOM and -$SHCXXCOM command lines, -but also the $FORTRANPPCOM, -$SHFORTRANPPCOM, -$F77PPCOM and -$SHF77PPCOM command lines -used to compile a Fortran source file, -and the $ASPPCOM command line -used to assemble an assembly language source file, -after first running each file through the C preprocessor. -Note that this variable does -not -contain --I -(or similar) include search path options -that scons generates automatically from $CPPPATH. -See $_CPPINCFLAGS, below, -for the variable that expands to those options. -

_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 $_CPPINCFLAGS is created -by respectively prepending and appending $INCPREFIX and $INCSUFFIX -to the beginning and end -of each directory in $CPPPATH. -

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 -scons -to look-up a directory relative to the root of the source tree use #: -

-env = Environment(CPPPATH='#/include')
-

-The directory look-up can also be forced using the -Dir() -function: -

-include = Dir('include')
-env = Environment(CPPPATH=include)
-

-The directory list will be added to command lines -through the automatically-generated -$_CPPINCFLAGS -construction variable, -which is constructed by -respectively prepending and appending the value of the -$INCPREFIX and $INCSUFFIX -construction variables -to the beginning and end -of each directory in $CPPPATH. -Any command lines you define that need -the CPPPATH directory list should -include $_CPPINCFLAGS: -

-env = Environment(CCCOM="my_compiler $_CPPINCFLAGS -c -o $TARGET $SOURCE")
-
CPPSUFFIXES

-The list of suffixes of files that will be scanned -for C preprocessor implicit dependencies -(#include lines). -The default list is: -

-[".c", ".C", ".cxx", ".cpp", ".c++", ".cc",
- ".h", ".H", ".hxx", ".hpp", ".hh",
- ".F", ".fpp", ".FPP",
- ".m", ".mm",
- ".S", ".spp", ".SPP"]
-
CXX

-The C++ compiler. -

CXXCOM

-The command line used to compile a C++ source file to an object file. -Any options specified in the $CXXFLAGS and -$CPPFLAGS construction variables -are included on this command line. -

CXXCOMSTR

-The string displayed when a C++ source file -is compiled to a (static) object file. -If this is not set, then $CXXCOM (the command line) is displayed. -

-env = Environment(CXXCOMSTR = "Compiling static object $TARGET")
-
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 -.cc. -SCons also treats files with the suffixes -.cpp, -.cxx, -.c++, -and -.C++ -as C++ files, -and files with -.mm -suffixes as Objective C++ files. -On case-sensitive systems (Linux, UNIX, and other POSIX-alikes), -SCons also treats -.C -(upper case) files -as C++ files. -

CXXFLAGS

-General options that are passed to the C++ compiler. -By default, this includes the value of $CCFLAGS, -so that setting $CCFLAGS affects both C and C++ compilation. -If you want to add C++-specific flags, -you must set or override the value of $CXXFLAGS. -

CXXVERSION

-The version number of the C++ compiler. -This may or may not be set, -depending on the specific C++ compiler being used. -

DC

-The D compiler to use. -

-The D compiler to use. -

-The D compiler to use. -

DCOM

- The command line used to compile a D file to an object file. - Any options specified in the $DFLAGS construction variable - is included on this command line. -

- The command line used to compile a D file to an object file. - Any options specified in the $DFLAGS construction variable - is included on this command line. -

- The command line used to compile a D file to an object file. - Any options specified in the $DFLAGS construction variable - is included on this command line. -

DDEBUG

- List of debug tags to enable when compiling. -

- List of debug tags to enable when compiling. -

- List of debug tags to enable when compiling. -

DDEBUGPREFIX

- DDEBUGPREFIX. -

- DDEBUGPREFIX. -

- DDEBUGPREFIX. -

DDEBUGSUFFIX

- DDEBUGSUFFIX. -

- DDEBUGSUFFIX. -

- DDEBUGSUFFIX. -

DESCRIPTION

-A long description of the project being packaged. -This is included in the relevant section -of the file that controls the packaging build. -

DESCRIPTION_lang

-A language-specific long description for -the specified lang. -This is used to populate a -%description -l -section of an RPM -.spec file. -

DFILESUFFIX

- DFILESUFFIX. -

- DFILESUFFIX. -

- DFILESUFFIX. -

DFLAGPREFIX

- DFLAGPREFIX. -

- DFLAGPREFIX. -

- DFLAGPREFIX. -

DFLAGS

- General options that are passed to the D compiler. -

- General options that are passed to the D compiler. -

- General options that are passed to the D compiler. -

DFLAGSUFFIX

- DFLAGSUFFIX. -

- DFLAGSUFFIX. -

- DFLAGSUFFIX. -

DINCPREFIX

- DINCPREFIX. -

- DINCPREFIX. -

- DINCPREFIX. -

DINCSUFFIX

- DLIBFLAGSUFFIX. -

- DLIBFLAGSUFFIX. -

- DLIBFLAGSUFFIX. -

Dir

-A function that converts a string -into a Dir instance relative to the target being built. -

-A function that converts a string -into a Dir instance relative to the target being built. -

Dirs

-A function that converts a list of strings -into a list of Dir instances relative to the target being built. -

DLIB

- Name of the lib tool to use for D codes. -

- Name of the lib tool to use for D codes. -

- Name of the lib tool to use for D codes. -

DLIBCOM

- The command line to use when creating libraries. -

- The command line to use when creating libraries. -

- The command line to use when creating libraries. -

DLIBDIRPREFIX

- DLIBLINKPREFIX. -

- DLIBLINKPREFIX. -

- DLIBLINKPREFIX. -

DLIBDIRSUFFIX

- DLIBLINKSUFFIX. -

- DLIBLINKSUFFIX. -

- DLIBLINKSUFFIX. -

DLIBFLAGPREFIX

- DLIBFLAGPREFIX. -

- DLIBFLAGPREFIX. -

- DLIBFLAGPREFIX. -

DLIBFLAGSUFFIX

- DLIBFLAGSUFFIX. -

- DLIBFLAGSUFFIX. -

- DLIBFLAGSUFFIX. -

DLIBLINKPREFIX

- DLIBLINKPREFIX. -

- DLIBLINKPREFIX. -

- DLIBLINKPREFIX. -

DLIBLINKSUFFIX

- DLIBLINKSUFFIX. -

- DLIBLINKSUFFIX. -

- DLIBLINKSUFFIX. -

DLINK

- Name of the linker to use for linking systems including D sources. -

- Name of the linker to use for linking systems including D sources. -

- Name of the linker to use for linking systems including D sources. -

DLINKCOM

- The command line to use when linking systems including D sources. -

- The command line to use when linking systems including D sources. -

- The command line to use when linking systems including D sources. -

DLINKFLAGPREFIX

- DLINKFLAGPREFIX. -

- DLINKFLAGPREFIX. -

- DLINKFLAGPREFIX. -

DLINKFLAGS

-List of linker flags. -

-List of linker flags. -

-List of linker flags. -

DLINKFLAGSUFFIX

- DLINKFLAGSUFFIX. -

- DLINKFLAGSUFFIX. -

- DLINKFLAGSUFFIX. -

DOCBOOK_DEFAULT_XSL_EPUB

-The default XSLT file for the DocbookEpub builder within the -current environment, if no other XSLT gets specified via keyword. -

DOCBOOK_DEFAULT_XSL_HTML

-The default XSLT file for the DocbookHtml builder within the -current environment, if no other XSLT gets specified via keyword. -

DOCBOOK_DEFAULT_XSL_HTMLCHUNKED

-The default XSLT file for the DocbookHtmlChunked builder within the -current environment, if no other XSLT gets specified via keyword. -

DOCBOOK_DEFAULT_XSL_HTMLHELP

-The default XSLT file for the DocbookHtmlhelp builder within the -current environment, if no other XSLT gets specified via keyword. -

DOCBOOK_DEFAULT_XSL_MAN

-The default XSLT file for the DocbookMan builder within the -current environment, if no other XSLT gets specified via keyword. -

DOCBOOK_DEFAULT_XSL_PDF

-The default XSLT file for the DocbookPdf builder within the -current environment, if no other XSLT gets specified via keyword. -

DOCBOOK_DEFAULT_XSL_SLIDESHTML

-The default XSLT file for the DocbookSlidesHtml builder within the -current environment, if no other XSLT gets specified via keyword. -

DOCBOOK_DEFAULT_XSL_SLIDESPDF

-The default XSLT file for the DocbookSlidesPdf builder within the -current environment, if no other XSLT gets specified via keyword. -

DOCBOOK_FOP

-The path to the PDF renderer fop or xep, -if one of them is installed (fop gets checked first). -

DOCBOOK_FOPCOM

-The full command-line for the -PDF renderer fop or xep. -

DOCBOOK_FOPCOMSTR

-The string displayed when a renderer like fop or -xep is used to create PDF output from an XML file. -

DOCBOOK_FOPFLAGS

-Additonal command-line flags for the -PDF renderer fop or xep. -

DOCBOOK_XMLLINT

-The path to the external executable xmllint, if it's installed. -Note, that this is only used as last fallback for resolving -XIncludes, if no libxml2 or lxml Python binding can be imported -in the current system. -

DOCBOOK_XMLLINTCOM

-The full command-line for the external executable -xmllint. -

DOCBOOK_XMLLINTCOMSTR

-The string displayed when xmllint is used to resolve -XIncludes for a given XML file. -

DOCBOOK_XMLLINTFLAGS

-Additonal command-line flags for the external executable -xmllint. -

DOCBOOK_XSLTPROC

-The path to the external executable xsltproc -(or saxon, xalan), if one of them -is installed. -Note, that this is only used as last fallback for XSL transformations, if -no libxml2 or lxml Python binding can be imported in the current system. -

DOCBOOK_XSLTPROCCOM

-The full command-line for the external executable -xsltproc (or saxon, -xalan). -

DOCBOOK_XSLTPROCCOMSTR

-The string displayed when xsltproc is used to transform -an XML file via a given XSLT stylesheet. -

DOCBOOK_XSLTPROCFLAGS

-Additonal command-line flags for the external executable -xsltproc (or saxon, -xalan). -

DOCBOOK_XSLTPROCPARAMS

-Additonal parameters that are not intended for the XSLT processor executable, but -the XSL processing itself. By default, they get appended at the end of the command line -for saxon and saxon-xslt, respectively. -

DPATH

- List of paths to search for import modules. -

- List of paths to search for import modules. -

- List of paths to search for import modules. -

DRPATHPREFIX

- DRPATHPREFIX. -

DRPATHSUFFIX

- DRPATHSUFFIX. -

DShLibSonameGenerator

- DShLibSonameGenerator. -

DSUFFIXES

-The list of suffixes of files that will be scanned -for imported D package files. -The default list is: -

-['.d']
-
DVERPREFIX

- DVERPREFIX. -

- DVERPREFIX. -

- DVERPREFIX. -

DVERSIONS

- List of version tags to enable when compiling. -

- List of version tags to enable when compiling. -

- List of version tags to enable when compiling. -

DVERSUFFIX

- DVERSUFFIX. -

- DVERSUFFIX. -

- DVERSUFFIX. -

DVIPDF

-The TeX DVI file to PDF file converter. -

DVIPDFCOM

-The command line used to convert TeX DVI files into a PDF file. -

DVIPDFCOMSTR

-The string displayed when a TeX DVI file -is converted into a PDF file. -If this is not set, then $DVIPDFCOM (the command line) is displayed. -

DVIPDFFLAGS

-General options passed to the TeX DVI file to PDF file converter. -

DVIPS

-The TeX DVI file to PostScript converter. -

DVIPSFLAGS

-General options passed to the TeX DVI file to PostScript converter. -

ENV

-A dictionary of environment variables -to use when invoking commands. When -$ENV 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, -scons -does -not -propagate the environment in force when you -execute -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 -scons -is invoked. -

-If you want to propagate your -environment variables -to the commands executed -to build target files, -you must do so explicitly: -

-import os
-env = Environment(ENV = os.environ)
-

-Note that you can choose only to propagate -certain environment variables. -A common example is -the system -PATH -environment variable, -so that -scons -uses the same utilities -as the invoking shell (or other process): -

-import os
-env = Environment(ENV = {'PATH' : os.environ['PATH']})
-
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. -

F03

-The Fortran 03 compiler. -You should normally set the $FORTRAN variable, -which specifies the default Fortran compiler -for all Fortran versions. -You only need to set $F03 if you need to use a specific compiler -or compiler version for Fortran 03 files. -

F03COM

-The command line used to compile a Fortran 03 source file to an object file. -You only need to set $F03COM if you need to use a specific -command line for Fortran 03 files. -You should normally set the $FORTRANCOM variable, -which specifies the default command line -for all Fortran versions. -

F03COMSTR

-The string displayed when a Fortran 03 source file -is compiled to an object file. -If this is not set, then $F03COM or $FORTRANCOM -(the command line) is displayed. -

F03FILESUFFIXES

-The list of file extensions for which the F03 dialect will be used. By -default, this is ['.f03'] -

F03FLAGS

-General user-specified options that are passed to the Fortran 03 compiler. -Note that this variable does -not -contain --I -(or similar) include search path options -that scons generates automatically from $F03PATH. -See -$_F03INCFLAGS -below, -for the variable that expands to those options. -You only need to set $F03FLAGS if you need to define specific -user options for Fortran 03 files. -You should normally set the $FORTRANFLAGS variable, -which specifies the user-specified options -passed to the default Fortran compiler -for all Fortran versions. -

_F03INCFLAGS

-An automatically-generated construction variable -containing the Fortran 03 compiler command-line options -for specifying directories to be searched for include files. -The value of $_F03INCFLAGS is created -by appending $INCPREFIX and $INCSUFFIX -to the beginning and end -of each directory in $F03PATH. -

F03PATH

-The list of directories that the Fortran 03 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 $F03FLAGS because the result will be non-portable -and the directories will not be searched by the dependency scanner. Note: -directory names in $F03PATH will be looked-up relative to the SConscript -directory when they are used in a command. To force -scons -to look-up a directory relative to the root of the source tree use #: -You only need to set $F03PATH if you need to define a specific -include path for Fortran 03 files. -You should normally set the $FORTRANPATH variable, -which specifies the include path -for the default Fortran compiler -for all Fortran versions. -

-env = Environment(F03PATH='#/include')
-

-The directory look-up can also be forced using the -Dir() -function: -

-include = Dir('include')
-env = Environment(F03PATH=include)
-

-The directory list will be added to command lines -through the automatically-generated -$_F03INCFLAGS -construction variable, -which is constructed by -appending the values of the -$INCPREFIX and $INCSUFFIX -construction variables -to the beginning and end -of each directory in $F03PATH. -Any command lines you define that need -the F03PATH directory list should -include $_F03INCFLAGS: -

-env = Environment(F03COM="my_compiler $_F03INCFLAGS -c -o $TARGET $SOURCE")
-
F03PPCOM

-The command line used to compile a Fortran 03 source file to an object file -after first running the file through the C preprocessor. -Any options specified in the $F03FLAGS and $CPPFLAGS construction variables -are included on this command line. -You only need to set $F03PPCOM if you need to use a specific -C-preprocessor command line for Fortran 03 files. -You should normally set the $FORTRANPPCOM variable, -which specifies the default C-preprocessor command line -for all Fortran versions. -

F03PPCOMSTR

-The string displayed when a Fortran 03 source file -is compiled to an object file -after first running the file through the C preprocessor. -If this is not set, then $F03PPCOM or $FORTRANPPCOM -(the command line) is displayed. -

F03PPFILESUFFIXES

-The list of file extensions for which the compilation + preprocessor pass for -F03 dialect will be used. By default, this is empty -

F08

-The Fortran 08 compiler. -You should normally set the $FORTRAN variable, -which specifies the default Fortran compiler -for all Fortran versions. -You only need to set $F08 if you need to use a specific compiler -or compiler version for Fortran 08 files. -

F08COM

-The command line used to compile a Fortran 08 source file to an object file. -You only need to set $F08COM if you need to use a specific -command line for Fortran 08 files. -You should normally set the $FORTRANCOM variable, -which specifies the default command line -for all Fortran versions. -

F08COMSTR

-The string displayed when a Fortran 08 source file -is compiled to an object file. -If this is not set, then $F08COM or $FORTRANCOM -(the command line) is displayed. -

F08FILESUFFIXES

-The list of file extensions for which the F08 dialect will be used. By -default, this is ['.f08'] -

F08FLAGS

-General user-specified options that are passed to the Fortran 08 compiler. -Note that this variable does -not -contain --I -(or similar) include search path options -that scons generates automatically from $F08PATH. -See -$_F08INCFLAGS -below, -for the variable that expands to those options. -You only need to set $F08FLAGS if you need to define specific -user options for Fortran 08 files. -You should normally set the $FORTRANFLAGS variable, -which specifies the user-specified options -passed to the default Fortran compiler -for all Fortran versions. -

_F08INCFLAGS

-An automatically-generated construction variable -containing the Fortran 08 compiler command-line options -for specifying directories to be searched for include files. -The value of $_F08INCFLAGS is created -by appending $INCPREFIX and $INCSUFFIX -to the beginning and end -of each directory in $F08PATH. -

F08PATH

-The list of directories that the Fortran 08 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 $F08FLAGS because the result will be non-portable -and the directories will not be searched by the dependency scanner. Note: -directory names in $F08PATH will be looked-up relative to the SConscript -directory when they are used in a command. To force -scons -to look-up a directory relative to the root of the source tree use #: -You only need to set $F08PATH if you need to define a specific -include path for Fortran 08 files. -You should normally set the $FORTRANPATH variable, -which specifies the include path -for the default Fortran compiler -for all Fortran versions. -

-env = Environment(F08PATH='#/include')
-

-The directory look-up can also be forced using the -Dir() -function: -

-include = Dir('include')
-env = Environment(F08PATH=include)
-

-The directory list will be added to command lines -through the automatically-generated -$_F08INCFLAGS -construction variable, -which is constructed by -appending the values of the -$INCPREFIX and $INCSUFFIX -construction variables -to the beginning and end -of each directory in $F08PATH. -Any command lines you define that need -the F08PATH directory list should -include $_F08INCFLAGS: -

-env = Environment(F08COM="my_compiler $_F08INCFLAGS -c -o $TARGET $SOURCE")
-
F08PPCOM

-The command line used to compile a Fortran 08 source file to an object file -after first running the file through the C preprocessor. -Any options specified in the $F08FLAGS and $CPPFLAGS construction variables -are included on this command line. -You only need to set $F08PPCOM if you need to use a specific -C-preprocessor command line for Fortran 08 files. -You should normally set the $FORTRANPPCOM variable, -which specifies the default C-preprocessor command line -for all Fortran versions. -

F08PPCOMSTR

-The string displayed when a Fortran 08 source file -is compiled to an object file -after first running the file through the C preprocessor. -If this is not set, then $F08PPCOM or $FORTRANPPCOM -(the command line) is displayed. -

F08PPFILESUFFIXES

-The list of file extensions for which the compilation + preprocessor pass for -F08 dialect will be used. By default, this is empty -

F77

-The Fortran 77 compiler. -You should normally set the $FORTRAN variable, -which specifies the default Fortran compiler -for all Fortran versions. -You only need to set $F77 if you need to use a specific compiler -or compiler version for Fortran 77 files. -

F77COM

-The command line used to compile a Fortran 77 source file to an object file. -You only need to set $F77COM if you need to use a specific -command line for Fortran 77 files. -You should normally set the $FORTRANCOM variable, -which specifies the default command line -for all Fortran versions. -

F77COMSTR

-The string displayed when a Fortran 77 source file -is compiled to an object file. -If this is not set, then $F77COM or $FORTRANCOM -(the command line) is displayed. -

F77FILESUFFIXES

-The list of file extensions for which the F77 dialect will be used. By -default, this is ['.f77'] -

F77FLAGS

-General user-specified options that are passed to the Fortran 77 compiler. -Note that this variable does -not -contain --I -(or similar) include search path options -that scons generates automatically from $F77PATH. -See -$_F77INCFLAGS -below, -for the variable that expands to those options. -You only need to set $F77FLAGS if you need to define specific -user options for Fortran 77 files. -You should normally set the $FORTRANFLAGS variable, -which specifies the user-specified options -passed to the default Fortran compiler -for all Fortran versions. -

_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 $_F77INCFLAGS is created -by appending $INCPREFIX and $INCSUFFIX -to the beginning and end -of each directory in $F77PATH. -

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 $F77FLAGS because the result will be non-portable -and the directories will not be searched by the dependency scanner. Note: -directory names in $F77PATH will be looked-up relative to the SConscript -directory when they are used in a command. To force -scons -to look-up a directory relative to the root of the source tree use #: -You only need to set $F77PATH if you need to define a specific -include path for Fortran 77 files. -You should normally set the $FORTRANPATH variable, -which specifies the include path -for the default Fortran compiler -for all Fortran versions. -

-env = Environment(F77PATH='#/include')
-

-The directory look-up can also be forced using the -Dir() -function: -

-include = Dir('include')
-env = Environment(F77PATH=include)
-

-The directory list will be added to command lines -through the automatically-generated -$_F77INCFLAGS -construction variable, -which is constructed by -appending the values of the -$INCPREFIX and $INCSUFFIX -construction variables -to the beginning and end -of each directory in $F77PATH. -Any command lines you define that need -the F77PATH directory list should -include $_F77INCFLAGS: -

-env = Environment(F77COM="my_compiler $_F77INCFLAGS -c -o $TARGET $SOURCE")
-
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 $F77FLAGS and $CPPFLAGS construction variables -are included on this command line. -You only need to set $F77PPCOM if you need to use a specific -C-preprocessor command line for Fortran 77 files. -You should normally set the $FORTRANPPCOM variable, -which specifies the default C-preprocessor command line -for all Fortran versions. -

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 $F77PPCOM or $FORTRANPPCOM -(the command line) is displayed. -

F77PPFILESUFFIXES

-The list of file extensions for which the compilation + preprocessor pass for -F77 dialect will be used. By default, this is empty -

F90

-The Fortran 90 compiler. -You should normally set the $FORTRAN variable, -which specifies the default Fortran compiler -for all Fortran versions. -You only need to set $F90 if you need to use a specific compiler -or compiler version for Fortran 90 files. -

F90COM

-The command line used to compile a Fortran 90 source file to an object file. -You only need to set $F90COM if you need to use a specific -command line for Fortran 90 files. -You should normally set the $FORTRANCOM variable, -which specifies the default command line -for all Fortran versions. -

F90COMSTR

-The string displayed when a Fortran 90 source file -is compiled to an object file. -If this is not set, then $F90COM or $FORTRANCOM -(the command line) is displayed. -

F90FILESUFFIXES

-The list of file extensions for which the F90 dialect will be used. By -default, this is ['.f90'] -

F90FLAGS

-General user-specified options that are passed to the Fortran 90 compiler. -Note that this variable does -not -contain --I -(or similar) include search path options -that scons generates automatically from $F90PATH. -See -$_F90INCFLAGS -below, -for the variable that expands to those options. -You only need to set $F90FLAGS if you need to define specific -user options for Fortran 90 files. -You should normally set the $FORTRANFLAGS variable, -which specifies the user-specified options -passed to the default Fortran compiler -for all Fortran versions. -

_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 $_F90INCFLAGS is created -by appending $INCPREFIX and $INCSUFFIX -to the beginning and end -of each directory in $F90PATH. -

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 $F90FLAGS because the result will be non-portable -and the directories will not be searched by the dependency scanner. Note: -directory names in $F90PATH will be looked-up relative to the SConscript -directory when they are used in a command. To force -scons -to look-up a directory relative to the root of the source tree use #: -You only need to set $F90PATH if you need to define a specific -include path for Fortran 90 files. -You should normally set the $FORTRANPATH variable, -which specifies the include path -for the default Fortran compiler -for all Fortran versions. -

-env = Environment(F90PATH='#/include')
-

-The directory look-up can also be forced using the -Dir() -function: -

-include = Dir('include')
-env = Environment(F90PATH=include)
-

-The directory list will be added to command lines -through the automatically-generated -$_F90INCFLAGS -construction variable, -which is constructed by -appending the values of the -$INCPREFIX and $INCSUFFIX -construction variables -to the beginning and end -of each directory in $F90PATH. -Any command lines you define that need -the F90PATH directory list should -include $_F90INCFLAGS: -

-env = Environment(F90COM="my_compiler $_F90INCFLAGS -c -o $TARGET $SOURCE")
-
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 $F90FLAGS and $CPPFLAGS construction variables -are included on this command line. -You only need to set $F90PPCOM if you need to use a specific -C-preprocessor command line for Fortran 90 files. -You should normally set the $FORTRANPPCOM variable, -which specifies the default C-preprocessor command line -for all Fortran versions. -

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 $F90PPCOM or $FORTRANPPCOM -(the command line) is displayed. -

F90PPFILESUFFIXES

-The list of file extensions for which the compilation + preprocessor pass for -F90 dialect will be used. By default, this is empty -

F95

-The Fortran 95 compiler. -You should normally set the $FORTRAN variable, -which specifies the default Fortran compiler -for all Fortran versions. -You only need to set $F95 if you need to use a specific compiler -or compiler version for Fortran 95 files. -

F95COM

-The command line used to compile a Fortran 95 source file to an object file. -You only need to set $F95COM if you need to use a specific -command line for Fortran 95 files. -You should normally set the $FORTRANCOM variable, -which specifies the default command line -for all Fortran versions. -

F95COMSTR

-The string displayed when a Fortran 95 source file -is compiled to an object file. -If this is not set, then $F95COM or $FORTRANCOM -(the command line) is displayed. -

F95FILESUFFIXES

-The list of file extensions for which the F95 dialect will be used. By -default, this is ['.f95'] -

F95FLAGS

-General user-specified options that are passed to the Fortran 95 compiler. -Note that this variable does -not -contain --I -(or similar) include search path options -that scons generates automatically from $F95PATH. -See -$_F95INCFLAGS -below, -for the variable that expands to those options. -You only need to set $F95FLAGS if you need to define specific -user options for Fortran 95 files. -You should normally set the $FORTRANFLAGS variable, -which specifies the user-specified options -passed to the default Fortran compiler -for all Fortran versions. -

_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 $_F95INCFLAGS is created -by appending $INCPREFIX and $INCSUFFIX -to the beginning and end -of each directory in $F95PATH. -

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 $F95FLAGS because the result will be non-portable -and the directories will not be searched by the dependency scanner. Note: -directory names in $F95PATH will be looked-up relative to the SConscript -directory when they are used in a command. To force -scons -to look-up a directory relative to the root of the source tree use #: -You only need to set $F95PATH if you need to define a specific -include path for Fortran 95 files. -You should normally set the $FORTRANPATH variable, -which specifies the include path -for the default Fortran compiler -for all Fortran versions. -

-env = Environment(F95PATH='#/include')
-

-The directory look-up can also be forced using the -Dir() -function: -

-include = Dir('include')
-env = Environment(F95PATH=include)
-

-The directory list will be added to command lines -through the automatically-generated -$_F95INCFLAGS -construction variable, -which is constructed by -appending the values of the -$INCPREFIX and $INCSUFFIX -construction variables -to the beginning and end -of each directory in $F95PATH. -Any command lines you define that need -the F95PATH directory list should -include $_F95INCFLAGS: -

-env = Environment(F95COM="my_compiler $_F95INCFLAGS -c -o $TARGET $SOURCE")
-
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 $F95FLAGS and $CPPFLAGS construction variables -are included on this command line. -You only need to set $F95PPCOM if you need to use a specific -C-preprocessor command line for Fortran 95 files. -You should normally set the $FORTRANPPCOM variable, -which specifies the default C-preprocessor command line -for all Fortran versions. -

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 $F95PPCOM or $FORTRANPPCOM -(the command line) is displayed. -

F95PPFILESUFFIXES

-The list of file extensions for which the compilation + preprocessor pass for -F95 dialect will be used. By default, this is empty -

File

-A function that converts a string into a File instance relative to the -target being built. -

-A function that converts a string into a File instance relative to the -target being built. -

FORTRAN

-The default Fortran compiler -for all versions of Fortran. -

FORTRANCOM

-The command line used to compile a Fortran source file to an object file. -By default, any options specified -in the $FORTRANFLAGS, -$CPPFLAGS, -$_CPPDEFFLAGS, -$_FORTRANMODFLAG, and -$_FORTRANINCFLAGS construction variables -are included on this command line. -

FORTRANCOMSTR

-The string displayed when a Fortran source file -is compiled to an object file. -If this is not set, then $FORTRANCOM -(the command line) is displayed. -

FORTRANFILESUFFIXES

-The list of file extensions for which the FORTRAN dialect will be used. By -default, this is ['.f', '.for', '.ftn'] -

FORTRANFLAGS

-General user-specified options that are passed to the Fortran compiler. -Note that this variable does -not -contain --I -(or similar) include or module search path options -that scons generates automatically from $FORTRANPATH. -See -$_FORTRANINCFLAGS and $_FORTRANMODFLAG, -below, -for the variables that expand those options. -

_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 $_FORTRANINCFLAGS is created -by respectively prepending and appending -$INCPREFIX and $INCSUFFIX -to the beginning and end -of each directory in $FORTRANPATH. -

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. -

FORTRANMODDIRPREFIX

-The prefix used to specify a module directory on the Fortran compiler command -line. -This will be prepended to the beginning of the directory -in the $FORTRANMODDIR construction variables -when the $_FORTRANMODFLAG variables is automatically generated. -

FORTRANMODDIRSUFFIX

-The suffix used to specify a module directory on the Fortran compiler command -line. -This will be appended to the end of the directory -in the $FORTRANMODDIR construction variables -when the $_FORTRANMODFLAG variables is automatically generated. -

_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 $_FORTRANMODFLAG is created -by respectively prepending and appending -$FORTRANMODDIRPREFIX and $FORTRANMODDIRSUFFIX -to the beginning and end of the directory in $FORTRANMODDIR. -

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 -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. -

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 -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. -

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 -scons -to look-up a directory relative to the root of the source tree use #: -

-env = Environment(FORTRANPATH='#/include')
-

-The directory look-up can also be forced using the -Dir() -function: -

-include = Dir('include')
-env = Environment(FORTRANPATH=include)
-

-The directory list will be added to command lines -through the automatically-generated -$_FORTRANINCFLAGS -construction variable, -which is constructed by -respectively prepending and appending the values of the -$INCPREFIX and $INCSUFFIX -construction variables -to the beginning and end -of each directory in $FORTRANPATH. -Any command lines you define that need -the FORTRANPATH directory list should -include $_FORTRANINCFLAGS: -

-env = Environment(FORTRANCOM="my_compiler $_FORTRANINCFLAGS -c -o $TARGET $SOURCE")
-
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 $FORTRANFLAGS, -$CPPFLAGS, -$_CPPDEFFLAGS, -$_FORTRANMODFLAG, and -$_FORTRANINCFLAGS -construction variables are included on this command line. -

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 $FORTRANPPCOM -(the command line) is displayed. -

FORTRANPPFILESUFFIXES

-The list of file extensions for which the compilation + preprocessor pass for -FORTRAN dialect will be used. By default, this is ['.fpp', '.FPP'] -

FORTRANSUFFIXES

-The list of suffixes of files that will be scanned -for Fortran implicit dependencies -(INCLUDE lines and USE statements). -The default list is: -

-[".f", ".F", ".for", ".FOR", ".ftn", ".FTN", ".fpp", ".FPP",
-".f77", ".F77", ".f90", ".F90", ".f95", ".F95"]
-
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 - $FRAMEWORKS). - For example: -

-                env.AppendUnique(FRAMEWORKPATH='#myframeworkdir')
-            

- will add -

-                ... -Fmyframeworkdir
-            

- to the compiler and linker command lines. -

_FRAMEWORKPATH

- On Mac OS X with gcc, an automatically-generated construction variable - containing the linker command-line options corresponding to - $FRAMEWORKPATH. -

FRAMEWORKPATHPREFIX

- On Mac OS X with gcc, the prefix to be used for the FRAMEWORKPATH entries. - (see $FRAMEWORKPATH). - The default value is - -F. -

FRAMEWORKPREFIX

- On Mac OS X with gcc, - the prefix to be used for linking in frameworks - (see $FRAMEWORKS). - The default value is - -framework. -

_FRAMEWORKS

- On Mac OS X with gcc, - an automatically-generated construction variable - containing the linker command-line options - for linking with FRAMEWORKS. -

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: -

-                env.AppendUnique(FRAMEWORKS=Split('System Cocoa SystemConfiguration'))
-            
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 $FRAMEWORKPATH, $FRAMEWORKPATHPREFIX, - $FRAMEWORKPREFIX and $FRAMEWORKS variables - described above.) -

GS

-The Ghostscript program used, e.g. to convert PostScript to PDF files. -

GSCOM

-The full Ghostscript command line used for the conversion process. Its default -value is $GS $GSFLAGS -sOutputFile=$TARGET $SOURCES. -

GSCOMSTR

-The string displayed when -Ghostscript is called for the conversion process. -If this is not set (the default), then $GSCOM (the command line) is displayed. -

GSFLAGS

-General options passed to the Ghostscript program, -when converting PostScript to PDF files for example. Its default value -is -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -

HOST_ARCH

- The name of the host hardware architecture 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. -

-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 $TARGET_ARCH. -

-This is currently only used on Windows, but in the future it will be -used on other OSes as well. -

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. -

IDLSUFFIXES

-The list of suffixes of files that will be scanned -for IDL implicit dependencies -(#include or import lines). -The default list is: -

-[".idl", ".IDL"]
-
IMPLIBNOVERSIONSYMLINKS

-Used to override $SHLIBNOVERSIONSYMLINKS/$LDMODULENOVERSIONSYMLINKS when -creating versioned import library for a shared library/loadable module. If not defined, -then $SHLIBNOVERSIONSYMLINKS/$LDMODULENOVERSIONSYMLINKS is used to determine -whether to disable symlink generation or not. -

IMPLIBPREFIX

-The prefix used for import library names. For example, cygwin uses import -libraries (libfoo.dll.a) in pair with dynamic libraries -(cygfoo.dll). The cyglink linker sets -$IMPLIBPREFIX to 'lib' and $SHLIBPREFIX -to 'cyg'. -

IMPLIBSUFFIX

-The suffix used for import library names. For example, cygwin uses import -libraries (libfoo.dll.a) in pair with dynamic libraries -(cygfoo.dll). The cyglink linker sets -$IMPLIBSUFFIX to '.dll.a' and $SHLIBSUFFIX -to '.dll'. -

IMPLIBVERSION

-Used to override $SHLIBVERSION/$LDMODULEVERSION when -generating versioned import library for a shared library/loadable module. If -undefined, the $SHLIBVERSION/$LDMODULEVERSION is used to -determine the version of versioned import library. -

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 -PATH -variable in the -ENV -environment used to execute the command. -

-If the construction variable -$IMPLICIT_COMMAND_DEPENDENCIES -is set to a false value -(None, -False, -0, -etc.), -then the implicit dependency will -not be added to the targets -built with that construction environment. -

-env = Environment(IMPLICIT_COMMAND_DEPENDENCIES = 0)
-
INCPREFIX

-The prefix used to specify an include directory on the C compiler command -line. -This will be prepended to the beginning of each directory -in the $CPPPATH and $FORTRANPATH construction variables -when the $_CPPINCFLAGS and $_FORTRANINCFLAGS -variables are automatically generated. -

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 $CPPPATH and $FORTRANPATH construction variables -when the $_CPPINCFLAGS and $_FORTRANINCFLAGS -variables are automatically generated. -

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: -

-def install(dest, source, env):
-

-dest -is the path name of the destination file. -source -is the path name of the source file. -env -is the construction environment -(a dictionary of construction values) -in force for this file installation. -

INSTALLSTR

-The string displayed when a file is -installed into a destination file name. -The default is: -

-Install file: "$SOURCE" as "$TARGET"
-
INTEL_C_COMPILER_VERSION

-Set by the "intelc" Tool -to the major version number of the Intel C compiler -selected for use. -

JAR

-The Java archive tool. -

-The Java archive tool. -

JARCHDIR

-The directory to which the Java archive tool should change -(using the --C -option). -

-The directory to which the Java archive tool should change -(using the --C -option). -

JARCOM

-The command line used to call the Java archive tool. -

-The command line used to call the Java archive tool. -

JARCOMSTR

-The string displayed when the Java archive tool -is called -If this is not set, then $JARCOM (the command line) is displayed. -

-env = Environment(JARCOMSTR = "JARchiving $SOURCES into $TARGET")
-

-The string displayed when the Java archive tool -is called -If this is not set, then $JARCOM (the command line) is displayed. -

-env = Environment(JARCOMSTR = "JARchiving $SOURCES into $TARGET")
-
JARFLAGS

-General options passed to the Java archive tool. -By default this is set to -cf -to create the necessary -jar -file. -

-General options passed to the Java archive tool. -By default this is set to -cf -to create the necessary -jar -file. -

JARSUFFIX

-The suffix for Java archives: -.jar -by default. -

-The suffix for Java archives: -.jar -by default. -

JAVABOOTCLASSPATH

- Specifies the list of directories that - will be added to the - javac command line - via the -bootclasspath option. - The individual directory names will be - separated by the operating system's path separate character - (: on UNIX/Linux/POSIX, - ; - on Windows). -

JAVAC

- The Java compiler. -

JAVACCOM

- The command line used to compile a directory tree containing - Java source files to - corresponding Java class files. - Any options specified in the $JAVACFLAGS construction variable - are included on this command line. -

JAVACCOMSTR

- The string displayed when compiling - a directory tree of Java source files to - corresponding Java class files. - If this is not set, then $JAVACCOM (the command line) is displayed. -

-                env = Environment(JAVACCOMSTR = "Compiling class files $TARGETS from $SOURCES")
-            
JAVACFLAGS

- General options that are passed to the Java compiler. -

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 - JavaH - builder. -

JAVACLASSPATH

- Specifies the list of directories that - will be searched for Java - .class - file. - The directories in this list will be added to the - javac and javah command lines - via the -classpath option. - The individual directory names will be - separated by the operating system's path separate character - (: on UNIX/Linux/POSIX, - ; - on Windows). -

- Note that this currently just adds the specified - directory via the -classpath option. - SCons does not currently search the - $JAVACLASSPATH directories for dependency - .class - files. -

JAVACLASSSUFFIX

- The suffix for Java class files; - .class - by default. -

JAVAH

-The Java generator for C header and stub files. -

JAVAHCOM

-The command line used to generate C header and stub files -from Java classes. -Any options specified in the $JAVAHFLAGS construction variable -are included on this command line. -

JAVAHCOMSTR

-The string displayed when C header and stub files -are generated from Java classes. -If this is not set, then $JAVAHCOM (the command line) is displayed. -

-env = Environment(JAVAHCOMSTR = "Generating header/stub file(s) $TARGETS from $SOURCES")
-
JAVAHFLAGS

-General options passed to the C header and stub file generator -for Java classes. -

JAVAINCLUDES

- Include path for Java header files (such as jni.h) -

JAVASOURCEPATH

- Specifies the list of directories that - will be searched for input - .java - file. - The directories in this list will be added to the - javac command line - via the -sourcepath option. - The individual directory names will be - separated by the operating system's path separate character - (: on UNIX/Linux/POSIX, - ; - on Windows). -

- Note that this currently just adds the specified - directory via the -sourcepath option. - SCons does not currently search the - $JAVASOURCEPATH directories for dependency - .java - files. -

JAVASUFFIX

- The suffix for Java files; - .java - by default. -

JAVAVERSION

- Specifies the Java version being used by the Java builder. - This is not 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 1.4. -

- 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 $JAVAVERSION to - 1.5 - (or 1.6, as appropriate) - can make SCons realize that a Java 1.5 or 1.6 - build is actually up to date. -

LATEX

-The LaTeX structured formatter and typesetter. -

LATEXCOM

-The command line used to call the LaTeX structured formatter and typesetter. -

LATEXCOMSTR

-The string displayed when calling -the LaTeX structured formatter and typesetter. -If this is not set, then $LATEXCOM (the command line) is displayed. -

-env = Environment(LATEXCOMSTR = "Building $TARGET from LaTeX input $SOURCES")
-
LATEXFLAGS

-General options passed to the LaTeX structured formatter and typesetter. -

LATEXRETRIES

-The maximum number of times that LaTeX -will be re-run if the -.log -generated by the $LATEXCOM command -indicates that there are undefined references. -The default is to try to resolve undefined references -by re-running LaTeX up to three times. -

LATEXSUFFIXES

-The list of suffixes of files that will be scanned -for LaTeX implicit dependencies -(\include or \import files). -The default list is: -

-[".tex", ".ltx", ".latex"]
-
LDMODULE

-The linker for building loadable modules. -By default, this is the same as $SHLINK. -

LDMODULECOM

-The command line for building loadable modules. -On Mac OS X, this uses the $LDMODULE, -$LDMODULEFLAGS and -$FRAMEWORKSFLAGS variables. -On other systems, this is the same as $SHLINK. -

LDMODULECOMSTR

-The string displayed when building loadable modules. -If this is not set, then $LDMODULECOM (the command line) is displayed. -

LDMODULEFLAGS

-General user options passed to the linker for building loadable modules. -

LDMODULENOVERSIONSYMLINKS

-Instructs the LoadableModule builder to not automatically create symlinks -for versioned modules. Defaults to $SHLIBNOVERSIONSYMLINKS -

LDMODULEPREFIX

-The prefix used for loadable module file names. -On Mac OS X, this is null; -on other systems, this is -the same as $SHLIBPREFIX. -

_LDMODULESONAME

-A macro that automatically generates loadable module's SONAME based on $TARGET, -$LDMODULEVERSION and $LDMODULESUFFIX. Used by LoadableModule builder -when the linker tool supports SONAME (e.g. gnulink). -

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. -

LDMODULEVERSION

-When this construction variable is defined, a versioned loadable module -is created by LoadableModule builder. This activates the -$_LDMODULEVERSIONFLAGS and thus modifies the $LDMODULECOM as -required, adds the version number to the library name, and creates the symlinks -that are needed. $LDMODULEVERSION versions should exist in the same -format as $SHLIBVERSION. -

LDMODULEVERSIONFLAGS

-Extra flags added to $LDMODULECOM when building versioned -LoadableModule. These flags are only used when $LDMODULEVERSION is -set. -

_LDMODULEVERSIONFLAGS

-This macro automatically introduces extra flags to $LDMODULECOM when -building versioned LoadableModule (that is when -$LDMODULEVERSION is set). _LDMODULEVERSIONFLAGS -usually adds $SHLIBVERSIONFLAGS and some extra dynamically generated -options (such as -Wl,-soname=$_LDMODULESONAME). It is unused -by plain (unversioned) loadable modules. -

LEX

-The lexical analyzer generator. -

LEXCOM

-The command line used to call the lexical analyzer generator -to generate a source file. -

LEXCOMSTR

-The string displayed when generating a source file -using the lexical analyzer generator. -If this is not set, then $LEXCOM (the command line) is displayed. -

-env = Environment(LEXCOMSTR = "Lex'ing $TARGET from $SOURCES")
-
LEXFLAGS

-General options passed to the lexical analyzer generator. -

_LIBDIRFLAGS

-An automatically-generated construction variable -containing the linker command-line options -for specifying directories to be searched for library. -The value of $_LIBDIRFLAGS is created -by respectively prepending and appending $LIBDIRPREFIX and $LIBDIRSUFFIX -to the beginning and end -of each directory in $LIBPATH. -

LIBDIRPREFIX

-The prefix used to specify a library directory on the linker command line. -This will be prepended to the beginning of each directory -in the $LIBPATH construction variable -when the $_LIBDIRFLAGS variable is automatically generated. -

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 $LIBPATH construction variable -when the $_LIBDIRFLAGS variable is automatically generated. -

LIBEMITTER

-TODO -

_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 $_LIBFLAGS is created -by respectively prepending and appending $LIBLINKPREFIX and $LIBLINKSUFFIX -to the beginning and end -of each filename in $LIBS. -

LIBLINKPREFIX

-The prefix used to specify a library to link on the linker command line. -This will be prepended to the beginning of each library -in the $LIBS construction variable -when the $_LIBFLAGS variable is automatically generated. -

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 $LIBS construction variable -when the $_LIBFLAGS variable is automatically generated. -

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 $LINKFLAGS or $SHLINKFLAGS -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 -scons -to look-up a directory relative to the root of the source tree use #: -

-env = Environment(LIBPATH='#/libs')
-

-The directory look-up can also be forced using the -Dir() -function: -

-libs = Dir('libs')
-env = Environment(LIBPATH=libs)
-

-The directory list will be added to command lines -through the automatically-generated -$_LIBDIRFLAGS -construction variable, -which is constructed by -respectively prepending and appending the values of the -$LIBDIRPREFIX and $LIBDIRSUFFIX -construction variables -to the beginning and end -of each directory in $LIBPATH. -Any command lines you define that need -the LIBPATH directory list should -include $_LIBDIRFLAGS: -

-env = Environment(LINKCOM="my_linker $_LIBDIRFLAGS $_LIBFLAGS -o $TARGET $SOURCE")
-
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. -

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 $LIBSUFFIXES list. -

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 -$_LIBFLAGS -construction variable, -which is constructed by -respectively prepending and appending the values of the -$LIBLINKPREFIX and $LIBLINKSUFFIX -construction variables -to the beginning and end -of each filename in $LIBS. -Any command lines you define that need -the LIBS library list should -include $_LIBFLAGS: -

-env = Environment(LINKCOM="my_linker $_LIBDIRFLAGS $_LIBFLAGS -o $TARGET $SOURCE")
-

-If you add a -File -object to the -$LIBS -list, the name of that file will be added to -$_LIBFLAGS, -and thus the link line, as is, without -$LIBLINKPREFIX -or -$LIBLINKSUFFIX. -For example: -

-env.Append(LIBS=File('/tmp/mylib.so'))
-

-In all cases, scons will add dependencies from the executable program to -all the libraries in this list. -

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. -

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 $LIBPREFIXES list, -the base library name, -and these suffixes. -

LICENSE

-The abbreviated name, preferably the SPDX code, of the license under which -this project is released (GPL-3.0, LGPL-2.1, BSD-2-Clause etc.). -See http://www.opensource.org/licenses/alphabetical -for a list of license names and SPDX codes. -

LINESEPARATOR

-The separator used by the Substfile and Textfile builders. -This value is used between sources when constructing the target. -It defaults to the current system line separator. -

LINGUAS_FILE

-The $LINGUAS_FILE defines file(s) containing list of additional linguas -to be processed by POInit, POUpdate or MOFiles -builders. It also affects Translate builder. If the variable contains -a string, it defines name of the list file. The $LINGUAS_FILE may be a -list of file names as well. If $LINGUAS_FILE is set to -True (or non-zero numeric value), the list will be read from -default file named -LINGUAS. -

LINK

-The linker. -

LINKCOM

-The command line used to link object files into an executable. -

LINKCOMSTR

-The string displayed when object files -are linked into an executable. -If this is not set, then $LINKCOM (the command line) is displayed. -

-env = Environment(LINKCOMSTR = "Linking $TARGET")
-
LINKFLAGS

-General user options passed to the linker. -Note that this variable should -not -contain --l -(or similar) options for linking with the libraries listed in $LIBS, -nor --L -(or similar) library search path options -that scons generates automatically from $LIBPATH. -See -$_LIBFLAGS -above, -for the variable that expands to library-link options, -and -$_LIBDIRFLAGS -above, -for the variable that expands to library search path options. -

M4

-The M4 macro preprocessor. -

M4COM

-The command line used to pass files through the M4 macro preprocessor. -

M4COMSTR

-The string displayed when -a file is passed through the M4 macro preprocessor. -If this is not set, then $M4COM (the command line) is displayed. -

M4FLAGS

-General options passed to the M4 macro preprocessor. -

MAKEINDEX

-The makeindex generator for the TeX formatter and typesetter and the -LaTeX structured formatter and typesetter. -

MAKEINDEXCOM

-The command line used to call the makeindex generator for the -TeX formatter and typesetter and the LaTeX structured formatter and -typesetter. -

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 $MAKEINDEXCOM (the command line) is displayed. -

MAKEINDEXFLAGS

-General options passed to the makeindex generator for the TeX formatter -and typesetter and the LaTeX structured formatter and typesetter. -

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. -

MIDL

-The Microsoft IDL compiler. -

MIDLCOM

-The command line used to pass files to the Microsoft IDL compiler. -

MIDLCOMSTR

-The string displayed when -the Microsoft IDL copmiler is called. -If this is not set, then $MIDLCOM (the command line) is displayed. -

MIDLFLAGS

-General options passed to the Microsoft IDL compiler. -

MOSUFFIX

-Suffix used for MO files (default: '.mo'). -See msgfmt tool and MOFiles builder. -

MSGFMT

-Absolute path to msgfmt(1) binary, found by -Detect(). -See msgfmt tool and MOFiles builder. -

MSGFMTCOM

-Complete command line to run msgfmt(1) program. -See msgfmt tool and MOFiles builder. -

MSGFMTCOMSTR

-String to display when msgfmt(1) is invoked -(default: '', which means ``print $MSGFMTCOM''). -See msgfmt tool and MOFiles builder. -

MSGFMTFLAGS

-Additional flags to msgfmt(1). -See msgfmt tool and MOFiles builder. -

MSGINIT

-Path to msginit(1) program (found via -Detect()). -See msginit tool and POInit builder. -

MSGINITCOM

-Complete command line to run msginit(1) program. -See msginit tool and POInit builder. -

MSGINITCOMSTR

-String to display when msginit(1) is invoked -(default: '', which means ``print $MSGINITCOM''). -See msginit tool and POInit builder. -

MSGINITFLAGS

-List of additional flags to msginit(1) (default: -[]). -See msginit tool and POInit builder. -

_MSGINITLOCALE

-Internal ``macro''. Computes locale (language) name based on target filename -(default: '${TARGET.filebase}' ). -

-See msginit tool and POInit builder. -

MSGMERGE

-Absolute path to msgmerge(1) binary as found by -Detect(). -See msgmerge tool and POUpdate builder. -

MSGMERGECOM

-Complete command line to run msgmerge(1) command. -See msgmerge tool and POUpdate builder. -

MSGMERGECOMSTR

-String to be displayed when msgmerge(1) is invoked -(default: '', which means ``print $MSGMERGECOM''). -See msgmerge tool and POUpdate builder. -

MSGMERGEFLAGS

-Additional flags to msgmerge(1) command. -See msgmerge tool and POUpdate builder. -

MSSDK_DIR

-The directory containing the Microsoft SDK -(either Platform SDK or Windows SDK) -to be used for compilation. -

MSSDK_VERSION

-The version string of the Microsoft SDK -(either Platform SDK or Windows SDK) -to be used for compilation. -Supported versions include -6.1, -6.0A, -6.0, -2003R2 -and -2003R1. -

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 $CHANGED_SOURCES construction variable). -Any compilations where the object (target) file base name -(minus the .obj) -does not match the source file base name -will be compiled separately. -

MSVC_USE_SCRIPT

-Use a batch script to set up Microsoft Visual Studio compiler -

-$MSVC_USE_SCRIPT overrides $MSVC_VERSION and $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. -

MSVC_UWP_APP

-Build libraries for a Universal Windows Platform (UWP) Application. -

-If $MSVC_UWP_APP is set, the Visual Studio environment will be set up to point -to the Windows Store compatible libraries and Visual Studio runtimes. In doing so, -any libraries that are built will be able to be used in a UWP App and published -to the Windows Store. -This flag will only have an effect with Visual Studio 2015+. -This variable must be passed as an argument to the Environment() -constructor; setting it later has no effect. -

-Valid values are '1' or '0' -

MSVC_VERSION

-Sets the preferred version of Microsoft Visual C/C++ to use. -

-If $MSVC_VERSION 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. -

-Valid values for Windows are -14.1, -14.0, -14.0Exp, -12.0, -12.0Exp, -11.0, -11.0Exp, -10.0, -10.0Exp, -9.0, -9.0Exp, -8.0, -8.0Exp, -7.1, -7.0, -and 6.0. -Versions ending in Exp refer to "Express" or -"Express for Desktop" editions. -

MSVS

-When the Microsoft Visual Studio tools are initialized, they set up this -dictionary with the following keys:

VERSION

the version of MSVS being used (can be set via - $MSVS_VERSION)

VERSIONS

the available versions of MSVS installed

VCINSTALLDIR

installed directory of Visual C++

VSINSTALLDIR

installed directory of Visual Studio

FRAMEWORKDIR

installed directory of the .NET framework

FRAMEWORKVERSIONS

list of installed versions of the .NET framework, sorted - latest to oldest.

FRAMEWORKVERSION

latest installed version of the .NET - framework

FRAMEWORKSDKDIR

installed location of the .NET SDK.

PLATFORMSDKDIR

installed location of the Platform SDK.

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.

MSVS_ARCH

Sets -the architecture for which the generated project(s) should build.

The default value is x86. amd64 is -also supported by SCons for some Visual Studio versions. Trying to set -$MSVS_ARCH to an architecture that's not supported for a given Visual -Studio version will generate an error.

MSVS_PROJECT_GUID

The string placed in a generated -Microsoft Visual Studio project file as the value of the -ProjectGUID attribute. There is no default value. If not -defined, a new GUID is generated.

MSVS_SCC_AUX_PATH

The path name placed in a generated -Microsoft Visual Studio project file as the value of the -SccAuxPath attribute if the -MSVS_SCC_PROVIDER construction variable is also set. There is -no default value.

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 -SccLocalPath attribute of the project file and as the -values of the -SccProjectFilePathRelativizedFromConnection[i] (where [i] -ranges from 0 to the number of projects in the solution) attributes of the -GlobalSection(SourceCodeControl) section of the Microsoft -Visual Studio solution file. Similarly the relative solution file path is -placed as the values of the SccLocalPath[i] (where [i] -ranges from 0 to the number of projects in the solution) attributes of the -GlobalSection(SourceCodeControl) section of the Microsoft -Visual Studio solution file. This is used only if the -MSVS_SCC_PROVIDER construction variable is also set. The -default value is the current working directory.

MSVS_SCC_PROJECT_NAME

The project name placed in -a generated Microsoft Visual Studio project file as the value of the -SccProjectName attribute if the -MSVS_SCC_PROVIDER construction variable is also set. In this -case the string is also placed in the SccProjectName0 -attribute of the GlobalSection(SourceCodeControl) section -of the Microsoft Visual Studio solution file. There is no default value. -

MSVS_SCC_PROVIDER

The -string placed in a generated Microsoft Visual Studio project file as the value -of the SccProvider attribute. The string is also placed in -the SccProvider0 attribute of the -GlobalSection(SourceCodeControl) section of the Microsoft -Visual Studio solution file. There is no default value.

MSVS_VERSION

Sets the preferred version -of Microsoft Visual Studio to use.

If $MSVS_VERSION 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 -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 $MSVC_VERSION instead. If $MSVS_VERSION is -set and $MSVC_VERSION is not, $MSVC_VERSION will be set automatically -to $MSVS_VERSION. If both are set to different values, scons will raise an -error.

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.

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.

MSVSENCODING

The encoding string placed in a -generated Microsoft Visual Studio project file. The default is encoding -Windows-1252.

MSVSPROJECTCOM

The action used to generate Microsoft -Visual Studio project files.

MSVSPROJECTSUFFIX

The suffix used for Microsoft Visual -Studio project (DSP) files. The default value is .vcproj -when using Visual Studio version 7.x (.NET) or later version, and -.dsp when using earlier versions of Visual Studio. -

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.

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. -

MSVSSCONSCOM

The default -SCons command used in generated Microsoft Visual Studio project files.

MSVSSCONSCRIPT

The sconscript -file (that is, SConstruct or SConscript file) that will be invoked by -Visual Studio project files (through the $MSVSSCONSCOM variable). The -default is the same sconscript file that contains the call to MSVSProject -to build the project file.

MSVSSCONSFLAGS

The -SCons flags used in generated Microsoft Visual Studio project files.

MSVSSOLUTIONCOM

The action used to generate Microsoft -Visual Studio solution files.

MSVSSOLUTIONSUFFIX

The suffix used for Microsoft -Visual Studio solution (DSW) files. The default value is -.sln when using Visual Studio version 7.x (.NET), and -.dsw when using earlier versions of Visual Studio. -

MT

-The program used on Windows systems to embed manifests into DLLs and EXEs. -See also $WINDOWS_EMBED_MANIFEST. -

MTEXECOM

-The Windows command line used to embed manifests into executables. -See also $MTSHLIBCOM. -

MTFLAGS

-Flags passed to the $MT manifest embedding program (Windows only). -

MTSHLIBCOM

-The Windows command line used to embed manifests into shared libraries (DLLs). -See also $MTEXECOM. -

MWCW_VERSION

-The version number of the MetroWerks CodeWarrior C compiler -to be used. -

MWCW_VERSIONS

-A list of installed versions of the MetroWerks CodeWarrior C compiler -on this system. -

NAME

-Specfies the name of the project to package. -

no_import_lib

-When set to non-zero, -suppresses creation of a corresponding Windows static import lib by the -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. -

OBJPREFIX

-The prefix used for (static) object file names. -

OBJSUFFIX

-The suffix used for (static) object file names. -

PACKAGEROOT

-Specifies the directory where all files in resulting archive will be -placed if applicable. The default value is "$NAME-$VERSION". -

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. -

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. -

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: -

-env['PCH'] = 'StdAfx.pch'
-
PCHCOM

-The command line used by the -PCH -builder to generated a precompiled header. -

PCHCOMSTR

-The string displayed when generating a precompiled header. -If this is not set, then $PCHCOM (the command line) is displayed. -

PCHPDBFLAGS

-A construction variable that, when expanded, -adds the /yD flag to the command line -only if the $PDB construction variable is set. -

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: -

-env['PCHSTOP'] = 'StdAfx.h'
-
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: -

-env['PDB'] = 'hello.pdb'
-

-The Visual C++ compiler switch that SCons uses by default -to generate PDB information is /Z7. -This works correctly with parallel (-j) 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 /Zi instead may yield improved -link-time performance, -although parallel builds will no longer work. -You can generate PDB files with the /Zi -switch by overriding the default $CCPDBFLAGS variable; -see the entry for that variable for specific examples. -

PDFCOM

-A deprecated synonym for $DVIPDFCOM. -

PDFLATEX

-The pdflatex utility. -

PDFLATEXCOM

-The command line used to call the pdflatex utility. -

PDFLATEXCOMSTR

-The string displayed when calling the pdflatex utility. -If this is not set, then $PDFLATEXCOM (the command line) is displayed. -

-env = Environment(PDFLATEX;COMSTR = "Building $TARGET from LaTeX input $SOURCES")
-
PDFLATEXFLAGS

-General options passed to the pdflatex utility. -

PDFPREFIX

-The prefix used for PDF file names. -

PDFSUFFIX

-The suffix used for PDF file names. -

PDFTEX

-The pdftex utility. -

PDFTEXCOM

-The command line used to call the pdftex utility. -

PDFTEXCOMSTR

-The string displayed when calling the pdftex utility. -If this is not set, then $PDFTEXCOM (the command line) is displayed. -

-env = Environment(PDFTEXCOMSTR = "Building $TARGET from TeX input $SOURCES")
-
PDFTEXFLAGS

-General options passed to the pdftex utility. -

PKGCHK

-On Solaris systems, -the package-checking program that will -be used (along with $PKGINFO) -to look for installed versions of -the Sun PRO C++ compiler. -The default is -/usr/sbin/pgkchk. -

PKGINFO

-On Solaris systems, -the package information program that will -be used (along with $PKGCHK) -to look for installed versions of -the Sun PRO C++ compiler. -The default is -pkginfo. -

PLATFORM

-The name of the platform used to create the Environment. If no platform is -specified when the Environment is created, -scons -autodetects the platform. -

-env = Environment(tools = [])
-if env['PLATFORM'] == 'cygwin':
-    Tool('mingw')(env)
-else:
-    Tool('msvc')(env)
-
POAUTOINIT

-The $POAUTOINIT variable, if set to True (on non-zero -numeric value), let the msginit tool to automatically initialize -missing PO files with -msginit(1). This applies to both, -POInit and POUpdate builders (and others that use any of -them). -

POCREATE_ALIAS

-Common alias for all PO files created with POInit -builder (default: 'po-create'). -See msginit tool and POInit builder. -

POSUFFIX

-Suffix used for PO files (default: '.po') -See msginit tool and POInit builder. -

POTDOMAIN

-The $POTDOMAIN defines default domain, used to generate -POT filename as $POTDOMAIN.pot when -no POT file name is provided by the user. This applies to -POTUpdate, POInit and POUpdate builders (and -builders, that use them, e.g. Translate). Normally (if $POTDOMAIN is -not defined), the builders use messages.pot as default -POT file name. -

POTSUFFIX

-Suffix used for PO Template files (default: '.pot'). -See xgettext tool and POTUpdate builder. -

POTUPDATE_ALIAS

-Name of the common phony target for all PO Templates created with -POUpdate (default: 'pot-update'). -See xgettext tool and POTUpdate builder. -

POUPDATE_ALIAS

-Common alias for all PO files being defined with -POUpdate builder (default: 'po-update'). -See msgmerge tool and POUpdate builder. -

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 --q -or --s -options or their equivalents). -The function should take four arguments: -s, -the command being executed (a string), -target, -the target being built (file node, list, or string name(s)), -source, -the source(s) used (file node, list, or string name(s)), and -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: -

-def print_cmd_line(s, target, source, env):
-  sys.stdout.write(s + "\n")
-

-Here's an example of a more interesting function: -

-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')
-

-This just prints "Building targetname from sourcename..." instead -of the actual commands. -Such a function could also log the actual commands to a log file, -for example. -

PROGEMITTER

-TODO -

PROGPREFIX

-The prefix used for executable file names. -

PROGSUFFIX

-The suffix used for executable file names. -

PSCOM

-The command line used to convert TeX DVI files into a PostScript file. -

PSCOMSTR

-The string displayed when a TeX DVI file -is converted into a PostScript file. -If this is not set, then $PSCOM (the command line) is displayed. -

PSPREFIX

-The prefix used for PostScript file names. -

PSSUFFIX

-The prefix used for PostScript file names. -

QT_AUTOSCAN

-Turn off scanning for mocable files. Use the Moc Builder to explicitly -specify files to run moc on. -

QT_BINPATH

-The path where the qt binaries are installed. -The default value is '$QTDIR/bin'. -

QT_CPPPATH

-The path where the qt header files are installed. -The default value is '$QTDIR/include'. -Note: If you set this variable to None, -the tool won't change the $CPPPATH -construction variable. -

QT_DEBUG

-Prints lots of debugging information while scanning for moc files. -

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 $LIBS variable. -

QT_LIBPATH

-The path where the qt libraries are installed. -The default value is '$QTDIR/lib'. -Note: If you set this variable to None, -the tool won't change the $LIBPATH -construction variable. -

QT_MOC

-Default value is '$QT_BINPATH/moc'. -

QT_MOCCXXPREFIX

-Default value is ''. Prefix for moc output files, when source is a cxx file. -

QT_MOCCXXSUFFIX

-Default value is '.moc'. Suffix for moc output files, when source is a cxx -file. -

QT_MOCFROMCXXCOM

-Command to generate a moc file from a cpp file. -

QT_MOCFROMCXXCOMSTR

-The string displayed when generating a moc file from a cpp file. -If this is not set, then $QT_MOCFROMCXXCOM (the command line) is displayed. -

QT_MOCFROMCXXFLAGS

-Default value is '-i'. These flags are passed to moc, when moccing a -C++ file. -

QT_MOCFROMHCOM

-Command to generate a moc file from a header. -

QT_MOCFROMHCOMSTR

-The string displayed when generating a moc file from a cpp file. -If this is not set, then $QT_MOCFROMHCOM (the command line) is displayed. -

QT_MOCFROMHFLAGS

-Default value is ''. These flags are passed to moc, when moccing a header -file. -

QT_MOCHPREFIX

-Default value is 'moc_'. Prefix for moc output files, when source is a header. -

QT_MOCHSUFFIX

-Default value is '$CXXFILESUFFIX'. Suffix for moc output files, when source is -a header. -

QT_UIC

-Default value is '$QT_BINPATH/uic'. -

QT_UICCOM

-Command to generate header files from .ui files. -

QT_UICCOMSTR

-The string displayed when generating header files from .ui files. -If this is not set, then $QT_UICCOM (the command line) is displayed. -

QT_UICDECLFLAGS

-Default value is ''. These flags are passed to uic, when creating a a h -file from a .ui file. -

QT_UICDECLPREFIX

-Default value is ''. Prefix for uic generated header files. -

QT_UICDECLSUFFIX

-Default value is '.h'. Suffix for uic generated header files. -

QT_UICIMPLFLAGS

-Default value is ''. These flags are passed to uic, when creating a cxx -file from a .ui file. -

QT_UICIMPLPREFIX

-Default value is 'uic_'. Prefix for uic generated implementation files. -

QT_UICIMPLSUFFIX

-Default value is '$CXXFILESUFFIX'. Suffix for uic generated implementation -files. -

QT_UISUFFIX

-Default value is '.ui'. Suffix of designer input files. -

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 $CPPPATH, -$LIBPATH and -$LIBS may be modified -and the variables -$PROGEMITTER, $SHLIBEMITTER and $LIBEMITTER -are modified. Because the build-performance is affected when using this tool, -you have to explicitly specify it at Environment creation: -

-Environment(tools=['default','qt'])
-

-The qt tool supports the following operations: -

-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 -Moc() -builder method. -

-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 -Moc -builder method. -

-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 -Uic -builder method. -

RANLIB

-The archive indexer. -

RANLIBCOM

-The command line used to index a static library archive. -

RANLIBCOMSTR

-The string displayed when a static library archive is indexed. -If this is not set, then $RANLIBCOM (the command line) is displayed. -

-env = Environment(RANLIBCOMSTR = "Indexing $TARGET")
-
RANLIBFLAGS

-General options passed to the archive indexer. -

RC

-The resource compiler used to build -a Microsoft Visual C++ resource file. -

RCCOM

-The command line used to build -a Microsoft Visual C++ resource file. -

RCCOMSTR

-The string displayed when invoking the resource compiler -to build a Microsoft Visual C++ resource file. -If this is not set, then $RCCOM (the command line) is displayed. -

RCFLAGS

-The flags passed to the resource compiler by the RES builder. -

RCINCFLAGS

-An automatically-generated construction variable -containing the command-line options -for specifying directories to be searched -by the resource compiler. -The value of $RCINCFLAGS is created -by respectively prepending and appending -$RCINCPREFIX and $RCINCSUFFIX -to the beginning and end -of each directory in $CPPPATH. -

RCINCPREFIX

-The prefix (flag) used to specify an include directory -on the resource compiler command line. -This will be prepended to the beginning of each directory -in the $CPPPATH construction variable -when the $RCINCFLAGS variable is expanded. -

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 $CPPPATH construction variable -when the $RCINCFLAGS variable is expanded. -

RDirs

-A function that converts a string into a list of Dir instances by -searching the repositories. -

REGSVR

-The program used on Windows systems -to register a newly-built DLL library -whenever the SharedLibrary builder -is passed a keyword argument of register=1. -

REGSVRCOM

-The command line used on Windows systems -to register a newly-built DLL library -whenever the SharedLibrary builder -is passed a keyword argument of register=1. -

REGSVRCOMSTR

-The string displayed when registering a newly-built DLL file. -If this is not set, then $REGSVRCOM (the command line) is displayed. -

REGSVRFLAGS

-Flags passed to the DLL registration program -on Windows systems when a newly-built DLL library is registered. -By default, -this includes the /s -that prevents dialog boxes from popping up -and requiring user attention. -

RMIC

-The Java RMI stub compiler. -

RMICCOM

-The command line used to compile stub -and skeleton class files -from Java classes that contain RMI implementations. -Any options specified in the $RMICFLAGS construction variable -are included on this command line. -

RMICCOMSTR

-The string displayed when compiling -stub and skeleton class files -from Java classes that contain RMI implementations. -If this is not set, then $RMICCOM (the command line) is displayed. -

-env = Environment(RMICCOMSTR = "Generating stub/skeleton class files $TARGETS from $SOURCES")
-
RMICFLAGS

-General options passed to the Java RMI stub compiler. -

_RPATH

-An automatically-generated construction variable -containing the rpath flags to be used when linking -a program with shared libraries. -The value of $_RPATH is created -by respectively prepending $RPATHPREFIX and appending $RPATHSUFFIX -to the beginning and end -of each directory in $RPATH. -

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 -scons -in any way: if you want an absolute -path, you must make it absolute yourself. -

RPATHPREFIX

-The prefix used to specify a directory to be searched for -shared libraries when running programs. -This will be prepended to the beginning of each directory -in the $RPATH construction variable -when the $_RPATH variable is automatically generated. -

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 $RPATH construction variable -when the $_RPATH variable is automatically generated. -

RPCGEN

-The RPC protocol compiler. -

RPCGENCLIENTFLAGS

-Options passed to the RPC protocol compiler -when generating client side stubs. -These are in addition to any flags specified in the -$RPCGENFLAGS -construction variable. -

RPCGENFLAGS

-General options passed to the RPC protocol compiler. -

RPCGENHEADERFLAGS

-Options passed to the RPC protocol compiler -when generating a header file. -These are in addition to any flags specified in the -$RPCGENFLAGS -construction variable. -

RPCGENSERVICEFLAGS

-Options passed to the RPC protocol compiler -when generating server side stubs. -These are in addition to any flags specified in the -$RPCGENFLAGS -construction variable. -

RPCGENXDRFLAGS

-Options passed to the RPC protocol compiler -when generating XDR routines. -These are in addition to any flags specified in the -$RPCGENFLAGS -construction variable. -

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. -

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 $MSVSSCONS command line executed from Microsoft -Visual Studio project files.

SHCC

-The C compiler used for generating shared-library objects. -

SHCCCOM

-The command line used to compile a C source file -to a shared-library object file. -Any options specified in the $SHCFLAGS, -$SHCCFLAGS and -$CPPFLAGS construction variables -are included on this command line. -

SHCCCOMSTR

-The string displayed when a C source file -is compiled to a shared object file. -If this is not set, then $SHCCCOM (the command line) is displayed. -

-env = Environment(SHCCCOMSTR = "Compiling shared object $TARGET")
-
SHCCFLAGS

-Options that are passed to the C and C++ compilers -to generate shared-library objects. -

SHCFLAGS

-Options that are passed to the C compiler (only; not C++) -to generate shared-library objects. -

SHCXX

-The C++ compiler used for generating shared-library objects. -

SHCXXCOM

-The command line used to compile a C++ source file -to a shared-library object file. -Any options specified in the $SHCXXFLAGS and -$CPPFLAGS construction variables -are included on this command line. -

SHCXXCOMSTR

-The string displayed when a C++ source file -is compiled to a shared object file. -If this is not set, then $SHCXXCOM (the command line) is displayed. -

-env = Environment(SHCXXCOMSTR = "Compiling shared object $TARGET")
-
SHCXXFLAGS

-Options that are passed to the C++ compiler -to generate shared-library objects. -

SHDC

- The name of the compiler to use when compiling D source - destined to be in a shared objects. -

- The name of the compiler to use when compiling D source - destined to be in a shared objects. -

- The name of the compiler to use when compiling D source - destined to be in a shared objects. -

SHDCOM

- The command line to use when compiling code to be part of shared objects. -

- The command line to use when compiling code to be part of shared objects. -

- The command line to use when compiling code to be part of shared objects. -

SHDLIBVERSION

- SHDLIBVERSION. -

SHDLIBVERSIONFLAGS

- SHDLIBVERSIONFLAGS. -

SHDLINK

- The linker to use when creating shared objects for code bases - include D sources. -

- The linker to use when creating shared objects for code bases - include D sources. -

- The linker to use when creating shared objects for code bases - include D sources. -

SHDLINKCOM

- The command line to use when generating shared objects. -

- The command line to use when generating shared objects. -

- The command line to use when generating shared objects. -

SHDLINKFLAGS

- The list of flags to use when generating a shared object. -

- The list of flags to use when generating a shared object. -

- The list of flags to use when generating a shared object. -

SHELL

-A string naming the shell program that will be passed to the -$SPAWN -function. -See the -$SPAWN -construction variable for more information. -

SHF03

-The Fortran 03 compiler used for generating shared-library objects. -You should normally set the $SHFORTRAN variable, -which specifies the default Fortran compiler -for all Fortran versions. -You only need to set $SHF03 if you need to use a specific compiler -or compiler version for Fortran 03 files. -

SHF03COM

-The command line used to compile a Fortran 03 source file -to a shared-library object file. -You only need to set $SHF03COM if you need to use a specific -command line for Fortran 03 files. -You should normally set the $SHFORTRANCOM variable, -which specifies the default command line -for all Fortran versions. -

SHF03COMSTR

-The string displayed when a Fortran 03 source file -is compiled to a shared-library object file. -If this is not set, then $SHF03COM or $SHFORTRANCOM -(the command line) is displayed. -

SHF03FLAGS

-Options that are passed to the Fortran 03 compiler -to generated shared-library objects. -You only need to set $SHF03FLAGS if you need to define specific -user options for Fortran 03 files. -You should normally set the $SHFORTRANFLAGS variable, -which specifies the user-specified options -passed to the default Fortran compiler -for all Fortran versions. -

SHF03PPCOM

-The command line used to compile a Fortran 03 source file to a -shared-library object file -after first running the file through the C preprocessor. -Any options specified in the $SHF03FLAGS and $CPPFLAGS construction variables -are included on this command line. -You only need to set $SHF03PPCOM if you need to use a specific -C-preprocessor command line for Fortran 03 files. -You should normally set the $SHFORTRANPPCOM variable, -which specifies the default C-preprocessor command line -for all Fortran versions. -

SHF03PPCOMSTR

-The string displayed when a Fortran 03 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 $SHF03PPCOM or $SHFORTRANPPCOM -(the command line) is displayed. -

SHF08

-The Fortran 08 compiler used for generating shared-library objects. -You should normally set the $SHFORTRAN variable, -which specifies the default Fortran compiler -for all Fortran versions. -You only need to set $SHF08 if you need to use a specific compiler -or compiler version for Fortran 08 files. -

SHF08COM

-The command line used to compile a Fortran 08 source file -to a shared-library object file. -You only need to set $SHF08COM if you need to use a specific -command line for Fortran 08 files. -You should normally set the $SHFORTRANCOM variable, -which specifies the default command line -for all Fortran versions. -

SHF08COMSTR

-The string displayed when a Fortran 08 source file -is compiled to a shared-library object file. -If this is not set, then $SHF08COM or $SHFORTRANCOM -(the command line) is displayed. -

SHF08FLAGS

-Options that are passed to the Fortran 08 compiler -to generated shared-library objects. -You only need to set $SHF08FLAGS if you need to define specific -user options for Fortran 08 files. -You should normally set the $SHFORTRANFLAGS variable, -which specifies the user-specified options -passed to the default Fortran compiler -for all Fortran versions. -

SHF08PPCOM

-The command line used to compile a Fortran 08 source file to a -shared-library object file -after first running the file through the C preprocessor. -Any options specified in the $SHF08FLAGS and $CPPFLAGS construction variables -are included on this command line. -You only need to set $SHF08PPCOM if you need to use a specific -C-preprocessor command line for Fortran 08 files. -You should normally set the $SHFORTRANPPCOM variable, -which specifies the default C-preprocessor command line -for all Fortran versions. -

SHF08PPCOMSTR

-The string displayed when a Fortran 08 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 $SHF08PPCOM or $SHFORTRANPPCOM -(the command line) is displayed. -

SHF77

-The Fortran 77 compiler used for generating shared-library objects. -You should normally set the $SHFORTRAN variable, -which specifies the default Fortran compiler -for all Fortran versions. -You only need to set $SHF77 if you need to use a specific compiler -or compiler version for Fortran 77 files. -

SHF77COM

-The command line used to compile a Fortran 77 source file -to a shared-library object file. -You only need to set $SHF77COM if you need to use a specific -command line for Fortran 77 files. -You should normally set the $SHFORTRANCOM variable, -which specifies the default command line -for all Fortran versions. -

SHF77COMSTR

-The string displayed when a Fortran 77 source file -is compiled to a shared-library object file. -If this is not set, then $SHF77COM or $SHFORTRANCOM -(the command line) is displayed. -

SHF77FLAGS

-Options that are passed to the Fortran 77 compiler -to generated shared-library objects. -You only need to set $SHF77FLAGS if you need to define specific -user options for Fortran 77 files. -You should normally set the $SHFORTRANFLAGS variable, -which specifies the user-specified options -passed to the default Fortran compiler -for all Fortran versions. -

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 $SHF77FLAGS and $CPPFLAGS construction variables -are included on this command line. -You only need to set $SHF77PPCOM if you need to use a specific -C-preprocessor command line for Fortran 77 files. -You should normally set the $SHFORTRANPPCOM variable, -which specifies the default C-preprocessor command line -for all Fortran versions. -

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 $SHF77PPCOM or $SHFORTRANPPCOM -(the command line) is displayed. -

SHF90

-The Fortran 90 compiler used for generating shared-library objects. -You should normally set the $SHFORTRAN variable, -which specifies the default Fortran compiler -for all Fortran versions. -You only need to set $SHF90 if you need to use a specific compiler -or compiler version for Fortran 90 files. -

SHF90COM

-The command line used to compile a Fortran 90 source file -to a shared-library object file. -You only need to set $SHF90COM if you need to use a specific -command line for Fortran 90 files. -You should normally set the $SHFORTRANCOM variable, -which specifies the default command line -for all Fortran versions. -

SHF90COMSTR

-The string displayed when a Fortran 90 source file -is compiled to a shared-library object file. -If this is not set, then $SHF90COM or $SHFORTRANCOM -(the command line) is displayed. -

SHF90FLAGS

-Options that are passed to the Fortran 90 compiler -to generated shared-library objects. -You only need to set $SHF90FLAGS if you need to define specific -user options for Fortran 90 files. -You should normally set the $SHFORTRANFLAGS variable, -which specifies the user-specified options -passed to the default Fortran compiler -for all Fortran versions. -

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 $SHF90FLAGS and $CPPFLAGS construction variables -are included on this command line. -You only need to set $SHF90PPCOM if you need to use a specific -C-preprocessor command line for Fortran 90 files. -You should normally set the $SHFORTRANPPCOM variable, -which specifies the default C-preprocessor command line -for all Fortran versions. -

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 $SHF90PPCOM or $SHFORTRANPPCOM -(the command line) is displayed. -

SHF95

-The Fortran 95 compiler used for generating shared-library objects. -You should normally set the $SHFORTRAN variable, -which specifies the default Fortran compiler -for all Fortran versions. -You only need to set $SHF95 if you need to use a specific compiler -or compiler version for Fortran 95 files. -

SHF95COM

-The command line used to compile a Fortran 95 source file -to a shared-library object file. -You only need to set $SHF95COM if you need to use a specific -command line for Fortran 95 files. -You should normally set the $SHFORTRANCOM variable, -which specifies the default command line -for all Fortran versions. -

SHF95COMSTR

-The string displayed when a Fortran 95 source file -is compiled to a shared-library object file. -If this is not set, then $SHF95COM or $SHFORTRANCOM -(the command line) is displayed. -

SHF95FLAGS

-Options that are passed to the Fortran 95 compiler -to generated shared-library objects. -You only need to set $SHF95FLAGS if you need to define specific -user options for Fortran 95 files. -You should normally set the $SHFORTRANFLAGS variable, -which specifies the user-specified options -passed to the default Fortran compiler -for all Fortran versions. -

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 $SHF95FLAGS and $CPPFLAGS construction variables -are included on this command line. -You only need to set $SHF95PPCOM if you need to use a specific -C-preprocessor command line for Fortran 95 files. -You should normally set the $SHFORTRANPPCOM variable, -which specifies the default C-preprocessor command line -for all Fortran versions. -

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 $SHF95PPCOM or $SHFORTRANPPCOM -(the command line) is displayed. -

SHFORTRAN

-The default Fortran compiler used for generating shared-library objects. -

SHFORTRANCOM

-The command line used to compile a Fortran source file -to a shared-library object file. -

SHFORTRANCOMSTR

-The string displayed when a Fortran source file -is compiled to a shared-library object file. -If this is not set, then $SHFORTRANCOM -(the command line) is displayed. -

SHFORTRANFLAGS

-Options that are passed to the Fortran compiler -to generate shared-library objects. -

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 $SHFORTRANFLAGS and -$CPPFLAGS construction variables -are included on this command line. -

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 $SHFORTRANPPCOM -(the command line) is displayed. -

SHLIBEMITTER

-TODO -

SHLIBNOVERSIONSYMLINKS

-Instructs the SharedLibrary builder to not create symlinks for versioned -shared libraries. -

SHLIBPREFIX

-The prefix used for shared library file names. -

_SHLIBSONAME

-A macro that automatically generates shared library's SONAME based on $TARGET, -$SHLIBVERSION and $SHLIBSUFFIX. Used by SharedLibrary builder when -the linker tool supports SONAME (e.g. gnulink). -

SHLIBSUFFIX

-The suffix used for shared library file names. -

SHLIBVERSION

-When this construction variable is defined, a versioned shared library -is created by SharedLibrary builder. This activates the -$_SHLIBVERSIONFLAGS and thus modifies the $SHLINKCOM as -required, adds the version number to the library name, and creates the symlinks -that are needed. $SHLIBVERSION versions should exist as alpha-numeric, -decimal-delimited values as defined by the regular expression "\w+[\.\w+]*". -Example $SHLIBVERSION values include '1', '1.2.3', and '1.2.gitaa412c8b'. -

_SHLIBVERSIONFLAGS

-This macro automatically introduces extra flags to $SHLINKCOM when -building versioned SharedLibrary (that is when $SHLIBVERSION -is set). _SHLIBVERSIONFLAGS usually adds $SHLIBVERSIONFLAGS -and some extra dynamically generated options (such as --Wl,-soname=$_SHLIBSONAME. It is unused by "plain" -(unversioned) shared libraries. -

SHLIBVERSIONFLAGS

-Extra flags added to $SHLINKCOM when building versioned -SharedLibrary. These flags are only used when $SHLIBVERSION is -set. -

SHLINK

-The linker for programs that use shared libraries. -

SHLINKCOM

-The command line used to link programs using shared libraries. -

SHLINKCOMSTR

-The string displayed when programs using shared libraries are linked. -If this is not set, then $SHLINKCOM (the command line) is displayed. -

-env = Environment(SHLINKCOMSTR = "Linking shared $TARGET")
-
SHLINKFLAGS

-General user options passed to the linker for programs using shared libraries. -Note that this variable should -not -contain --l -(or similar) options for linking with the libraries listed in $LIBS, -nor --L -(or similar) include search path options -that scons generates automatically from $LIBPATH. -See -$_LIBFLAGS -above, -for the variable that expands to library-link options, -and -$_LIBDIRFLAGS -above, -for the variable that expands to library search path options. -

SHOBJPREFIX

-The prefix used for shared object file names. -

SHOBJSUFFIX

-The suffix used for shared object file names. -

SONAME

-Variable used to hard-code SONAME for versioned shared library/loadable module. -

-env.SharedLibrary('test', 'test.c', SHLIBVERSION='0.1.2', SONAME='libtest.so.2')
-

-The variable is used, for example, by gnulink linker tool. -

SOURCE

-A reserved variable name -that may not be set or used in a construction environment. -(See "Variable Substitution," below.) -

SOURCE_URL

-The URL -(web address) -of the location from which the project was retrieved. -This is used to fill in the -Source: -field in the controlling information for Ipkg and RPM packages. -

SOURCES

-A reserved variable name -that may not be set or used in a construction environment. -(See "Variable Substitution," below.) -

SPAWN

-A command interpreter function that will be called to execute command line -strings. The function must expect the following arguments: -

-def spawn(shell, escape, cmd, args, env):
-

-sh -is a string naming the shell program to use. -escape -is a function that can be called to escape shell special characters in -the command line. -cmd -is the path to the command to be executed. -args -is the arguments to the command. -env -is a dictionary of the environment variables -in which the command should be executed. -

STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME

- When this variable is true, static objects and shared objects are assumed to be the same; that is, SCons does not check for linking static objects into a shared library. -

SUBST_DICT

-The dictionary used by the Substfile or Textfile 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. -

SUBSTFILEPREFIX

-The prefix used for Substfile file names, -the null string by default. -

SUBSTFILESUFFIX

-The suffix used for Substfile file names, -the null string by default. -

SUMMARY

-A short summary of what the project is about. -This is used to fill in the -Summary: -field in the controlling information for Ipkg and RPM packages, -and as the -Description: -field in MSI packages. -

SWIG

-The scripting language wrapper and interface generator. -

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 -_wrap$CFILESUFFIX. -By default, this value is used whenever the --c++ -option is -not -specified as part of the -$SWIGFLAGS -construction variable. -

SWIGCOM

-The command line used to call -the scripting language wrapper and interface generator. -

SWIGCOMSTR

-The string displayed when calling -the scripting language wrapper and interface generator. -If this is not set, then $SWIGCOM (the command line) is displayed. -

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 -_wrap$CFILESUFFIX. -By default, this value is used whenever the --c++ -option is specified as part of the -$SWIGFLAGS -construction variable. -

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 -_wrap.h. -

SWIGFLAGS

-General options passed to -the scripting language wrapper and interface generator. -This is where you should set --python, --perl5, --tcl, -or whatever other options you want to specify to SWIG. -If you set the --c++ -option in this variable, -scons -will, by default, -generate a C++ intermediate source file -with the extension that is specified as the -$CXXFILESUFFIX -variable. -

_SWIGINCFLAGS

-An automatically-generated construction variable -containing the SWIG command-line options -for specifying directories to be searched for included files. -The value of $_SWIGINCFLAGS is created -by respectively prepending and appending -$SWIGINCPREFIX and $SWIGINCSUFFIX -to the beginning and end -of each directory in $SWIGPATH. -

SWIGINCPREFIX

-The prefix used to specify an include directory on the SWIG command line. -This will be prepended to the beginning of each directory -in the $SWIGPATH construction variable -when the $_SWIGINCFLAGS variable is automatically generated. -

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 $SWIGPATH construction variable -when the $_SWIGINCFLAGS variable is automatically generated. -

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 -swig -outdir option on the command line. -

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 value is an empty list. -

-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 -scons -to look-up a directory relative to the root of the source tree use #: -

-env = Environment(SWIGPATH='#/include')
-

-The directory look-up can also be forced using the -Dir() -function: -

-include = Dir('include')
-env = Environment(SWIGPATH=include)
-

-The directory list will be added to command lines -through the automatically-generated -$_SWIGINCFLAGS -construction variable, -which is constructed by -respectively prepending and appending the values of the -$SWIGINCPREFIX and $SWIGINCSUFFIX -construction variables -to the beginning and end -of each directory in $SWIGPATH. -Any command lines you define that need -the SWIGPATH directory list should -include $_SWIGINCFLAGS: -

-env = Environment(SWIGCOM="my_swig -o $TARGET $_SWIGINCFLAGS $SOURCES")
-
SWIGVERSION

-The version number of the SWIG tool. -

TAR

-The tar archiver. -

TARCOM

-The command line used to call the tar archiver. -

TARCOMSTR

-The string displayed when archiving files -using the tar archiver. -If this is not set, then $TARCOM (the command line) is displayed. -

-env = Environment(TARCOMSTR = "Archiving $TARGET")
-
TARFLAGS

-General options passed to the tar archiver. -

TARGET

-A reserved variable name -that may not be set or used in a construction environment. -(See "Variable Substitution," below.) -

TARGET_ARCH

- The name of the target hardware architecture for the compiled objects - created by this Environment. - This defaults to the value of HOST_ARCH, and the user can override it. - Currently only set for Win32. -

-Sets the target architecture for Visual Studio compiler (i.e. the arch -of the binaries generated by the compiler). If not set, default to -$HOST_ARCH, 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. -If this is set and MSVC_VERSION is not set, this will search for -all installed MSVC's that support the TARGET_ARCH, selecting the -latest version for use. -

-Valid values for Windows are -x86, -arm, -i386 -(for 32 bits); -amd64, -arm64, -emt64, -x86_64 -(for 64 bits); -and ia64 (Itanium). - -For example, if you want to compile 64-bit binaries, you would set -TARGET_ARCH='x86_64' in your SCons environment. -

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. -

TARGETS

-A reserved variable name -that may not be set or used in a construction environment. -(See "Variable Substitution," below.) -

TARSUFFIX

-The suffix used for tar file names. -

TEMPFILEPREFIX

-The prefix for a temporary file used -to store lines lines longer than $MAXLINELENGTH -as operations which call out to a shell will fail -if the line is too long, which particularly -impacts linking. -The default is '@', which works for the Microsoft -and GNU toolchains on Windows. -Set this appropriately for other toolchains, -for example '-@' for the diab compiler -or '-via' for ARM toolchain. -

TEMPFILESUFFIX

-The suffix used for the temporary file name -used for long command lines. The name should -include the dot ('.') if one is wanted as -it will not be added automatically. -The default is '.lnk'. -

TEX

-The TeX formatter and typesetter. -

TEXCOM

-The command line used to call the TeX formatter and typesetter. -

TEXCOMSTR

-The string displayed when calling -the TeX formatter and typesetter. -If this is not set, then $TEXCOM (the command line) is displayed. -

-env = Environment(TEXCOMSTR = "Building $TARGET from TeX input $SOURCES")
-
TEXFLAGS

-General options passed to the TeX formatter and typesetter. -

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. -

TEXTFILEPREFIX

-The prefix used for Textfile file names, -the null string by default. -

TEXTFILESUFFIX

-The suffix used for Textfile file names; -.txt by default. -

TOOLS

-A list of the names of the Tool specifications -that are part of this construction environment. -

UNCHANGED_SOURCES

-A reserved variable name -that may not be set or used in a construction environment. -(See "Variable Substitution," below.) -

UNCHANGED_TARGETS

-A reserved variable name -that may not be set or used in a construction environment. -(See "Variable Substitution," below.) -

VENDOR

-The person or organization who supply the packaged software. -This is used to fill in the -Vendor: -field in the controlling information for RPM packages, -and the -Manufacturer: -field in the controlling information for MSI packages. -

VERSION

-The version of the project, specified as a string. -

WIN32_INSERT_DEF

-A deprecated synonym for $WINDOWS_INSERT_DEF. -

WIN32DEFPREFIX

-A deprecated synonym for $WINDOWSDEFPREFIX. -

WIN32DEFSUFFIX

-A deprecated synonym for $WINDOWSDEFSUFFIX. -

WIN32EXPPREFIX

-A deprecated synonym for $WINDOWSEXPSUFFIX. -

WIN32EXPSUFFIX

-A deprecated synonym for $WINDOWSEXPSUFFIX. -

WINDOWS_EMBED_MANIFEST

-Set this variable to True or 1 to embed the compiler-generated manifest -(normally ${TARGET}.manifest) -into all Windows exes and DLLs built with this environment, -as a resource during their link step. -This is done using $MT and $MTEXECOM and $MTSHLIBCOM. -

WINDOWS_INSERT_DEF

-When this is set to true, -a library build of a Windows shared library -(.dll file) -will also build a corresponding .def file -at the same time, -if a .def file -is not already listed as a build target. -The default is 0 (do not build a .def file). -

WINDOWS_INSERT_MANIFEST

-When this is set to true, -scons -will be aware of the -.manifest -files generated by Microsoft Visua C/C++ 8. -

WINDOWSDEFPREFIX

-The prefix used for Windows .def file names. -

WINDOWSDEFSUFFIX

-The suffix used for Windows .def file names. -

WINDOWSEXPPREFIX

-The prefix used for Windows .exp file names. -

WINDOWSEXPSUFFIX

-The suffix used for Windows .exp file names. -

WINDOWSPROGMANIFESTPREFIX

-The prefix used for executable program .manifest files -generated by Microsoft Visual C/C++. -

WINDOWSPROGMANIFESTSUFFIX

-The suffix used for executable program .manifest files -generated by Microsoft Visual C/C++. -

WINDOWSSHLIBMANIFESTPREFIX

-The prefix used for shared library .manifest files -generated by Microsoft Visual C/C++. -

WINDOWSSHLIBMANIFESTSUFFIX

-The suffix used for shared library .manifest files -generated by Microsoft Visual C/C++. -

X_IPK_DEPENDS

-This is used to fill in the -Depends: -field in the controlling information for Ipkg packages. -

X_IPK_DESCRIPTION

-This is used to fill in the -Description: -field in the controlling information for Ipkg packages. -The default value is -$SUMMARY\n$DESCRIPTION -

X_IPK_MAINTAINER

-This is used to fill in the -Maintainer: -field in the controlling information for Ipkg packages. -

X_IPK_PRIORITY

-This is used to fill in the -Priority: -field in the controlling information for Ipkg packages. -

X_IPK_SECTION

-This is used to fill in the -Section: -field in the controlling information for Ipkg packages. -

X_MSI_LANGUAGE

-This is used to fill in the -Language: -attribute in the controlling information for MSI packages. -

X_MSI_LICENSE_TEXT

-The text of the software license in RTF format. -Carriage return characters will be -replaced with the RTF equivalent \\par. -

X_MSI_UPGRADE_CODE

-TODO -

X_RPM_AUTOREQPROV

-This is used to fill in the -AutoReqProv: -field in the RPM -.spec file. -

X_RPM_BUILD

-internal, but overridable -

X_RPM_BUILDREQUIRES

-This is used to fill in the -BuildRequires: -field in the RPM -.spec file. -Note this should only be used on a host managed by rpm as the dependencies will not be resolvable at build time otherwise. -

X_RPM_BUILDROOT

-internal, but overridable -

X_RPM_CLEAN

-internal, but overridable -

X_RPM_CONFLICTS

-This is used to fill in the -Conflicts: -field in the RPM -.spec file. -

X_RPM_DEFATTR

-This value is used as the default attributes -for the files in the RPM package. -The default value is -(-,root,root). -

X_RPM_DISTRIBUTION

-This is used to fill in the -Distribution: -field in the RPM -.spec file. -

X_RPM_EPOCH

-This is used to fill in the -Epoch: -field in the RPM -.spec file. -

X_RPM_EXCLUDEARCH

-This is used to fill in the -ExcludeArch: -field in the RPM -.spec file. -

X_RPM_EXLUSIVEARCH

-This is used to fill in the -ExclusiveArch: -field in the RPM -.spec file. -

X_RPM_EXTRADEFS

-A list used to supply extra defintions or flags -to be added to the RPM .spec file. -Each item is added as-is with a carriage return appended. -This is useful if some specific RPM feature not otherwise -anticipated by SCons needs to be turned on or off. -Note if this variable is omitted, SCons will by -default supply the value -'%global debug_package %{nil}' -to disable debug package generation. -To enable debug package generation, include this -variable set either to None, or to a custom -list that does not include the default line. -Added in version 3.1. -

-env.Package(
-    NAME             = 'foo',
-...
-    X_RPM_EXTRADEFS = [
-        '%define _unpackaged_files_terminate_build 0'
-        '%define _missing_doc_files_terminate_build 0'
-    ],
-... )
-
X_RPM_GROUP

-This is used to fill in the -Group: -field in the RPM -.spec file. -

X_RPM_GROUP_lang

-This is used to fill in the -Group(lang): -field in the RPM -.spec file. -Note that -lang -is not literal -and should be replaced by -the appropriate language code. -

X_RPM_ICON

-This is used to fill in the -Icon: -field in the RPM -.spec file. -

X_RPM_INSTALL

-internal, but overridable -

X_RPM_PACKAGER

-This is used to fill in the -Packager: -field in the RPM -.spec file. -

X_RPM_POSTINSTALL

-This is used to fill in the -%post: -section in the RPM -.spec file. -

X_RPM_POSTUNINSTALL

-This is used to fill in the -%postun: -section in the RPM -.spec file. -

X_RPM_PREFIX

-This is used to fill in the -Prefix: -field in the RPM -.spec file. -

X_RPM_PREINSTALL

-This is used to fill in the -%pre: -section in the RPM -.spec file. -

X_RPM_PREP

-internal, but overridable -

X_RPM_PREUNINSTALL

-This is used to fill in the -%preun: -section in the RPM -.spec file. -

X_RPM_PROVIDES

-This is used to fill in the -Provides: -field in the RPM -.spec file. -

X_RPM_REQUIRES

-This is used to fill in the -Requires: -field in the RPM -.spec file. -

X_RPM_SERIAL

-This is used to fill in the -Serial: -field in the RPM -.spec file. -

X_RPM_URL

-This is used to fill in the -Url: -field in the RPM -.spec file. -

XGETTEXT

-Path to xgettext(1) program (found via -Detect()). -See xgettext tool and POTUpdate builder. -

XGETTEXTCOM

-Complete xgettext command line. -See xgettext tool and POTUpdate builder. -

XGETTEXTCOMSTR

-A string that is shown when xgettext(1) command is invoked -(default: '', which means "print $XGETTEXTCOM"). -See xgettext tool and POTUpdate builder. -

_XGETTEXTDOMAIN

-Internal "macro". Generates xgettext domain name -form source and target (default: '${TARGET.filebase}'). -

XGETTEXTFLAGS

-Additional flags to xgettext(1). -See xgettext tool and POTUpdate builder. -

XGETTEXTFROM

-Name of file containing list of xgettext(1)'s source -files. Autotools' users know this as POTFILES.in so they -will in most cases set XGETTEXTFROM="POTFILES.in" here. -The $XGETTEXTFROM files have same syntax and semantics as the well known -GNU POTFILES.in. -See xgettext tool and POTUpdate builder. -

_XGETTEXTFROMFLAGS

-Internal "macro". Genrates list of -D<dir> flags -from the $XGETTEXTPATH list. -

XGETTEXTFROMPREFIX

-This flag is used to add single $XGETTEXTFROM file to -xgettext(1)'s commandline (default: -'-f'). -

XGETTEXTFROMSUFFIX

-(default: '') -

XGETTEXTPATH

-List of directories, there xgettext(1) will look for -source files (default: []). -

Note

-This variable works only together with $XGETTEXTFROM -

-See also xgettext tool and POTUpdate builder. -

_XGETTEXTPATHFLAGS

-Internal "macro". Generates list of -f<file> flags -from $XGETTEXTFROM. -

XGETTEXTPATHPREFIX

-This flag is used to add single search path to -xgettext(1)'s commandline (default: -'-D'). -

XGETTEXTPATHSUFFIX

-(default: '') -

YACC

-The parser generator. -

YACCCOM

-The command line used to call the parser generator -to generate a source file. -

YACCCOMSTR

-The string displayed when generating a source file -using the parser generator. -If this is not set, then $YACCCOM (the command line) is displayed. -

-env = Environment(YACCCOMSTR = "Yacc'ing $TARGET from $SOURCES")
-
YACCFLAGS

-General options passed to the parser generator. -If $YACCFLAGS contains a -d 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) -

YACCHFILESUFFIX

-The suffix of the C -header file generated by the parser generator -when the --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 -.h. -

YACCHXXFILESUFFIX

-The suffix of the C++ -header file generated by the parser generator -when the --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 -.hpp, -except on Mac OS X, -where the default is -${TARGET.suffix}.h. -because the default bison parser generator just -appends .h -to the name of the generated C++ file. -

YACCVCGFILESUFFIX

-The suffix of the file -containing the VCG grammar automaton definition -when the ---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 -.vcg. -

ZIP

-The zip compression and file packaging utility. -

ZIPCOM

-The command line used to call the zip utility, -or the internal Python function used to create a -zip archive. -

ZIPCOMPRESSION

-The -compression -flag -from the Python -zipfile -module used by the internal Python function -to control whether the zip archive -is compressed or not. -The default value is -zipfile.ZIP_DEFLATED, -which creates a compressed zip archive. -This value has no effect if the -zipfile -module is unavailable. -

ZIPCOMSTR

-The string displayed when archiving files -using the zip utility. -If this is not set, then $ZIPCOM -(the command line or internal Python function) is displayed. -

-env = Environment(ZIPCOMSTR = "Zipping $TARGET")
-
ZIPFLAGS

-General options passed to the zip utility. -

ZIPROOT

-An optional zip root directory (default empty). The filenames stored -in the zip file will be relative to this directory, if given. -Otherwise the filenames are relative to the current directory of the -command. -For instance: -

-env = Environment()
-env.Zip('foo.zip', 'subdir1/subdir2/file1', ZIPROOT='subdir1')
-

-will produce a zip file foo.zip -containing a file with the name -subdir2/file1 rather than -subdir1/subdir2/file1. -

ZIPSUFFIX

-The suffix used for zip file names. -

Construction variables can be retrieved and set using the -Dictionary -method of the construction environment:

-dict = env.Dictionary()
-dict["CC"] = "cc"
-

or using the [] operator:

-env["CC"] = "cc"
-

Construction variables can also be passed to the construction environment -constructor:

-env = Environment(CC="cc")
-

or when copying a construction environment using the -Clone -method:

-env2 = env.Clone(CC="cl.exe")
-

Configure Contexts

scons -supports -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, -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 ---config -command line option.

The following methods can be used to perform checks:

Configure(env, [custom_tests, conf_dir, log_file, config_h, clean, help]), env.Configure([custom_tests, conf_dir, log_file, config_h, clean, help])

This creates a configure context, which can be used to perform checks. -env -specifies the environment for building the tests. -This environment may be modified when performing checks. -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. -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. -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 -VariantDir() -method, -you may want to specify a subdirectory under your variant directory. -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 -config.h -file. -You can specify the same -config.h -file in multiple calls to Configure, -in which case -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 -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 -config_h -file is being built.

The optional -clean -and -help -arguments can be used to suppress execution of the configuration -tests when the --c/--clean -or --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 -clean=False -or -help=False -arguments -(or both) -to avoid unnecessary test execution.

A created -Configure -instance has the following associated methods:

SConf.Finish(context), 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 -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.)

SConf.CheckHeader(context, header, [include_quotes, language]), sconf.CheckHeader(header, [include_quotes, language])

Checks if -header -is usable in the specified language. -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 -#include -lines should precede the -header line being checked for. -The optional argument -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 -language -should be either -C -or -C++ -and selects the compiler to be used for the check. -Returns 1 on success and 0 on failure.

SConf.CheckCHeader(context, header, [include_quotes]), sconf.CheckCHeader(header, [include_quotes])

This is a wrapper around -SConf.CheckHeader -which checks if -header -is usable in the C language. -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 -#include -lines should precede the -header line being checked for. -The optional argument -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.

SConf.CheckCXXHeader(context, header, [include_quotes]), sconf.CheckCXXHeader(header, [include_quotes])

This is a wrapper around -SConf.CheckHeader -which checks if -header -is usable in the C++ language. -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 -#include -lines should precede the -header line being checked for. -The optional argument -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.

SConf.CheckFunc(context,, function_name, [header, language]), sconf.CheckFunc(function_name, [header, language])

Checks if the specified -C or C++ function is available. -function_name -is the name of the function to check for. -The optional -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:

-#ifdef __cplusplus
-extern "C"
-#endif
-char function_name();
-

The optional -language -argument should be -C -or -C++ -and selects the compiler to be used for the check; -the default is "C".

SConf.CheckLib(context, [library, symbol, header, language, autoadd=1]), sconf.CheckLib([library, symbol, header, language, autoadd=1])

Checks if -library -provides -symbol. -If the value of -autoadd -is 1 and the library provides the specified -symbol, -appends the library to the LIBS construction environment variable. -library -may also be None (the default), -in which case -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 -symbol. -If -symbol -is not set or is -None, -then -SConf.CheckLib() -just checks if -you can link against the specified -library. -The optional -language -argument should be -C -or -C++ -and selects the compiler to be used for the check; -the default is "C". -The default value for -autoadd -is 1. -This method returns 1 on success and 0 on error.

SConf.CheckLibWithHeader(context, library, header, language, [call, autoadd]), sconf.CheckLibWithHeader(library, header, language, [call, autoadd])

In contrast to the -SConf.CheckLib -call, this call provides a more sophisticated way to check against libraries. -Again, -library -specifies the library or a list of libraries to check. -header -specifies a header to check for. -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 -#include -lines should precede the -header line being checked for. -language -may be one of 'C','c','CXX','cxx','C++' and 'c++'. -call -can be any valid expression (with a trailing ';'). -If -call -is not set, -the default simply checks that you -can link against the specified -library. -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.

SConf.CheckType(context, type_name, [includes, language]), sconf.CheckType(type_name, [includes, language])

Checks for the existence of a type defined by -typedef. -type_name -specifies the typedef name to check for. -includes -is a string containing one or more -#include -lines that will be inserted into the program -that will be run to test for the existence of the type. -The optional -language -argument should be -C -or -C++ -and selects the compiler to be used for the check; -the default is "C". -Example:

-sconf.CheckType('foo_type', '#include "my_types.h"', 'C++')
-
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.

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.

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.

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.

Example of a typical Configure usage:

-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()
-
SConf.CheckTypeSize(context, type_name, [header, language, expect]), sconf.CheckTypeSize(type_name, [header, language, expect])

Checks for the size of a type defined by -typedef. -type_name -specifies the typedef name to check for. -The optional -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 -language -argument should be -C -or -C++ -and selects the compiler to be used for the check; -the default is "C". -The optional -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, -CheckTypeSize('short', expect = 2) -will return success only if short is two bytes.

-
SConf.CheckDeclaration(context, symbol, [includes, language]), sconf.CheckDeclaration(symbol, [includes, language])

Checks if the specified -symbol -is declared. -includes -is a string containing one or more -#include -lines that will be inserted into the program -that will be run to test for the existence of the type. -The optional -language -argument should be -C -or -C++ -and selects the compiler to be used for the check; -the default is "C".

SConf.Define(context, symbol, [value, comment]), 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 -name -with the optional -value -and the optional comment -comment.

Examples:

-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)
-

Be careful about quoting string values, though:

-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"')
-

For comment:

-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')
-

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 -__call__ -method). -The first argument of the call is always a -CheckContext -instance followed by the arguments, -which must be supplied by the user of the check. -These CheckContext instances define the following methods:

CheckContext.Message(self, text)

Usually called before the check is started. -text -will be displayed to the user, e.g. 'Checking for library X...'

CheckContext.Result(self,, res)

Usually called after the check is done. -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.

CheckContext.TryCompile(self, text, extension)

Checks if a file with the specified -extension -(e.g. '.c') containing -text -can be compiled using the environment's -Object -builder. Returns 1 on success and 0 on failure.

CheckContext.TryLink(self, text, extension)

Checks, if a file with the specified -extension -(e.g. '.c') containing -text -can be compiled using the environment's -Program -builder. Returns 1 on success and 0 on failure.

CheckContext.TryRun(self, text, extension)

Checks, if a file with the specified -extension -(e.g. '.c') containing -text -can be compiled using the environment's -Program -builder. On success, the program is run. If the program -executes successfully -(that is, its return status is 0), -a tuple -(1, outputStr) -is returned, where -outputStr -is the standard output of the -program. -If the program fails execution -(its return status is non-zero), -then (0, '') is returned.

CheckContext.TryAction(self, action, [text, extension])

Checks if the specified -action -with an optional source file (contents -text -, extension -extension -= '' -) can be executed. -action -may be anything which can be converted to a -scons -Action. -On success, -(1, outputStr) -is returned, where -outputStr -is the content of the target file. -On failure -(0, '') -is returned.

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 -builder -and the optional -text -of a source file with optional -extension, -this method returns 1 on success and 0 on failure. In addition, -self.lastTarget -is set to the build target node, if the build was successful.

Example for implementing and using custom tests:

-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()
-

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. -scons -provides a -Variables -object to support overriding construction variables -on the command line:

-$ scons VARIABLE=foo
-

The variable values can also be specified in a text-based SConscript file. -To create a Variables object, call the Variables() function:

Variables([files], [args])

This creates a Variables object that will read construction variables from -the file or list of filenames specified in -files. -If no files are specified, -or the -files -argument is -None, -then no files will be read. -The optional argument -args -is a dictionary of -values that will override anything read from the specified files; -it is primarily intended to be passed the -ARGUMENTS -dictionary that holds variables -specified on the command line. -Example:

-vars = Variables('custom.py')
-vars = Variables('overrides.py', ARGUMENTS)
-vars = Variables(None, {FOO:'expansion', BAR:7})
-

Variables objects have the following methods:

Add(key, [help, default, validator, converter])

This adds a customizable construction variable to the Variables object. -key -is the name of the variable. -help -is the help text for the variable. -default -is the default value of the variable; -if the default value is -None -and there is no explicit value specified, -the construction variable will -not -be added to the construction environment. -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). -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 -converter -must return a value, -which will be converted into a string -before being validated by the -validator -(if any) -and then added to the environment.

Examples:

-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)
-
AddVariables(list)

A wrapper script that adds -multiple customizable construction variables -to a Variables object. -list -is a list of tuple or list objects -that contain the arguments -for an individual call to the -Add -method.

-opt.AddVariables(
-       ('debug', '', 0),
-       ('CC', 'The C compiler'),
-       ('VALIDATE', 'An option for testing validation',
-        'notset', validator, None),
-    )
-
Update(env, [args])

This updates a construction environment -env -with the customized construction variables. -Any specified variables that are -not -configured for the Variables object -will be saved and may be -retrieved with the -UnknownVariables() -method, below.

Normally this method is not called directly, -but is called indirectly by passing the Variables object to -the Environment() function:

-env = Environment(variables=vars)
-

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:

-CC = 'my_cc'
-
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.

-env = Environment(variables=vars)
-for key, value in vars.UnknownVariables():
-    print("unknown variable:  %s=%s" % (key, value))
-
Save(filename, env)

This saves the currently set variables into a script file named -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.

-env = Environment()
-vars = Variables(['variables.cache', 'custom.py'])
-vars.Add(...)
-vars.Update(env)
-vars.Save('variables.cache', env)
-
GenerateHelpText(env, [sort])

This generates help text documenting the customizable construction -variables suitable to passing in to the Help() function. -env -is the construction environment that will be used to get the actual values -of customizable variables. Calling with -an optional -sort -function -will cause the output to be sorted -by the specified argument. -The specific -sort -function -should take two arguments -and return --1, 0 or 1 -(like the standard Python -cmp -function). - -Optionally a Boolean value of True for sort will cause a standard alphabetical sort to be performed

-Help(vars.GenerateHelpText(env))
-Help(vars.GenerateHelpText(env, sort=cmp))
-
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 -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 -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.

-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
-

To make it more convenient to work with customizable Variables, -scons -provides a number of functions -that make it easy to set up -various types of Variables:

BoolVariable(key, help, default)

Return a tuple of arguments -to set up a Boolean option. -The option will use -the specified name -key, -have a default value of -default, -and display the specified -help -text. -The option will interpret the values -y, -yes, -t, -true, -1, -on -and -all -as true, -and the values -n, -no, -f, -false, -0, -off -and -none -as false.

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 -key, -have a default value of -default, -and display the specified -help -text. -The option will only support those -values in the -allowed_values -list. -The optional -map -argument is a dictionary -that can be used to convert -input values into specific legal values -in the -allowed_values -list. -If the value of -ignore_case -is -0 -(the default), -then the values are case-sensitive. -If the value of -ignore_case -is -1, -then values will be matched -case-insensitive. -If the value of -ignore_case -is -2, -then values will be matched -case-insensitive, -and all input values will be -converted to lower case.

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 -key, -have a default value of -default, -and display the specified -help -text. -The option will only support the values -all, -none, -or the values in the -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 -map -argument is a dictionary -that can be used to convert -input values into specific legal values -in the -names -list.

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 -key, -have a default value of -default, -and display the specified -help -text. -The option will support the values -yes, -true, -on, -enable -or -search, -in which case the specified -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 -no, -false, -off -or -disable -to disable use of the specified option.

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 -key, -have a default value of -default, -and display the specified -help -text. -An additional -validator -may be specified -that will be called to -verify that the specified path -is acceptable. -SCons supplies the -following ready-made validators: -PathVariable.PathExists -(the default), -which verifies that the specified path exists; -PathVariable.PathIsFile, -which verifies that the specified path is an existing file; -PathVariable.PathIsDir, -which verifies that the specified path is an existing directory; -PathVariable.PathIsDirCreate, -which verifies that the specified path is a directory -and will create the specified directory if the path does not exist; -and -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 -validator -function, -which must take three arguments -(key, -the name of the variable to be set; -val, -the specified value being checked; -and -env, -the construction environment) -and should raise an exception -if the specified value is not acceptable.

These functions make it -convenient to create a number -of variables with consistent behavior -in a single call to the -AddVariables -method:

-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),
-
-)
-

File and Directory Nodes

The -File() -and -Dir() -functions return -File -and -Dir -Nodes, respectively. -python objects, respectively. -Those objects have several user-visible attributes -and methods that are often useful:

path

The build path -of the given -file or directory. -This path is relative to the top-level directory -(where the -SConstruct -file is found). -The build path is the same as the source path if -variant_dir -is not being used.

abspath

The absolute build path of the given file or directory.

srcnode()

The -srcnode() -method -returns another -File -or -Dir -object representing the -source -path of the given -File -or -Dir. -The

-# 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)
-

A -Dir -Node or -File -Node can also be used to create -file and subdirectory Nodes relative to the generating Node. -A -Dir -Node will place the new Nodes within the directory it represents. -A -File -node will place the new Nodes within its parent directory -(that is, "beside" the file in question). -If -d -is a -Dir -(directory) Node and -f -is a -File -(file) Node, -then these methods are available:

d.Dir(name)

Returns a directory Node for a subdirectory of -d -named -name.

d.File(name)

Returns a file Node for a file within -d -named -name.

d.Entry(name)

Returns an unresolved Node within -d -named -name.

f.Dir(name)

Returns a directory named -name -within the parent directory of -f.

f.File(name)

Returns a file named -name -within the parent directory of -f.

f.Entry(name)

Returns an unresolved Node named -name -within the parent directory of -f.

For example:

-# 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')
-

EXTENDING SCONS

Builder Objects

scons -can be extended to build different types of targets -by adding new Builder objects -to a construction environment. -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 -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 -Builder -function. -The -Builder -function accepts the following arguments:

action

The command line string used to build the target from the source. -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: -source -- a list of source nodes, -target -- a list of target nodes, -env -- the construction environment.

prefix

The prefix that will be prepended to the target file name. -This may be specified as a:

* -string,

* -callable object -- a function or other callable that takes -two arguments (a construction environment and a list of sources) -and returns a prefix,

* -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. -

-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 })
-
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 -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.

-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 })
-
ensure_suffix

When set to any true value, causes -scons -to add the target suffix specified by the -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.)

-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')
-
src_suffix

The expected source file name suffix. This may be a string or a list -of strings.

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, -not -for implicit dependencies based on source files. -(See the section "Scanner Objects" below, -for information about creating Scanner objects.)

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 -#include -lines in source files. -The pre-built -DirScanner -Scanner object may be used to -indicate that this Builder -should scan directory trees -for on-disk changes to files -that -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.)

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 -Dir, -for when a Builder creates a directory target, -and -Entry, -for when a Builder can create either a file -or directory target.

Example:

-MakeDirectoryBuilder = Builder(action=my_mkdir, target_factory=Dir)
-env = Environment()
-env.Append(BUILDERS = {'MakeDirectory':MakeDirectoryBuilder})
-env.MakeDirectory('new_directory', [])
-

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.

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 -Dir, -for when a Builder uses a directory as a source, -and -Entry, -for when a Builder can use files -or directories (or both) as sources.

Example:

-CollectBuilder = Builder(action=my_mkdir, source_factory=Entry)
-env = Environment()
-env.Append(BUILDERS = {'Collect':CollectBuilder})
-env.Collect('archive', ['directory_name', 'file_name'])
-
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. -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: -source -- a list of source nodes, -target -- a list of target nodes, -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:

-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})
-
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.

env

A construction environment that can be used -to fetch source code using this Builder. -(Note that this environment is -not -used for normal builds of normal target files, -which use the environment that was -used to call the Builder for the target file.)

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: -source -- a list of source nodes, -target -- a list of target nodes, -env -- the construction environment, -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:

-def g(source, target, env, for_signature):
-    return [["gcc", "-c", "-o"] + target + source]
-
-b = Builder(generator=g)
-

The -generator -and -action -arguments must not both be used for the same Builder.

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.

single_source

Specifies that this builder expects exactly one source file per call. Giving -more than one source file without target files results in implicitly calling -the builder multiple times (once for each source given). Giving multiple -source files together with target files results in a UserError exception.

The -generator -and -action -arguments must not both be used for the same Builder.

source_ext_match

When the specified -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 -source_ext_match -to -None -or some other non-true value. -When -source_ext_match -is disable, -scons -will use the suffix of the first specified -source file to select the appropriate action from the -action -dictionary.

In the following example, -the setting of -source_ext_match -prevents -scons -from exiting with an error -due to the mismatched suffixes of -foo.in -and -foo.extra.

-b = Builder(action={'.in' : 'build $SOURCES > $TARGET'},
-            source_ext_match = None)
-
-env = Environment(BUILDERS = {'MyBuild':b})
-env.MyBuild('foo.out', ['foo.in', 'foo.extra'])
-
env

A construction environment that can be used -to fetch source code using this Builder. -(Note that this environment is -not -used for normal builds of normal target files, -which use the environment that was -used to call the Builder for the target file.)

-b = Builder(action="build < $SOURCE > $TARGET")
-env = Environment(BUILDERS = {'MyBuild' : b})
-env.MyBuild('foo.out', 'foo.in', my_arg = 'xyzzy')
-
chdir

A directory from which scons -will execute the -action(s) specified -for this Builder. -If the -chdir -argument is -a string or a directory Node, -scons will change to the specified directory. -If the -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 -not -automatically modify -its expansion of -construction variables like -$TARGET -and -$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 -${TARGET.file} -and -${SOURCE.file} -to use just the filename portion of the -targets and source.

-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')
-

WARNING: -Python only keeps one current directory -location for all of the threads. -This means that use of the -chdir -argument -will -not -work with the SCons --j -option, -because individual worker threads spawned -by SCons interfere with each other -when they start changing directory.

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 -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.

Action Objects

The -Builder() -function will turn its -action -keyword argument into an appropriate -internal Action object. -You can also explicitly create Action objects -using the -Action() -global function, -which can then be passed to the -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 -Action() -global function -returns an appropriate object for the action -represented by the type of the first argument:

Action

If the first argument is already an Action object, -the object is simply returned.

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 -@ -(at-sign) -to suppress printing of the specified command line, -or by a -- -(hyphen) -to ignore the exit status from the specified command:

-Action('$CC -c -o $TARGET $SOURCES')
-
-# Doesn't print the line being executed.
-Action('@build $TARGET $SOURCES')
-
-# Ignores return value
-Action('-build $TARGET $SOURCES')
-
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 -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:

-Action([['cc', '-c', '-DWHITE SPACE', '-o', '$TARGET', '$SOURCES']])
-
Function

If the first argument is a Python function, -a function Action is returned. -The Python function must take three keyword arguments, -target -(a Node object representing the target file), -source -(a Node object representing the source file) -and -env -(the construction environment -used for building the target file). -The -target -and -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:

-target_file_name = str(target)
-source_file_names = [str(x) for x in source]
-

The function should return -0 -or -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.

-def build_it(target = None, source = None, env = None):
-    # build the target from the source
-    return 0
-
-a = Action(build_it)
-

If the action argument is not one of the above, -None is returned.

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 -strfunction= -keyword argument. -Like a function to build a file, -this function must take three keyword arguments: -target -(a Node object representing the target file), -source -(a Node object representing the source file) -and -env -(a construction environment). -The -target -and -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 -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:

-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')
-

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 -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.

-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'])
-

The -Action() -global function -can be passed the following -optional keyword arguments -to modify the Action object's behavior:

chdir -The -chdir -keyword argument specifies that -scons will execute the action -after changing to the specified directory. -If the -chdir -argument is -a string or a directory Node, -scons will change to the specified directory. -If the -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 -not -automatically modify -its expansion of -construction variables like -$TARGET -and -$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 -${TARGET.file} -and -${SOURCE.file} -to use just the filename portion of the -targets and source.

-a = Action("build < ${SOURCE.file} > ${TARGET.file}",
-           chdir=1)
-

exitstatfunc -The -Action() -global function -also takes an -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:

-def always_succeed(s):
-    # Always return 0, which indicates success.
-    return 0
-a = Action("build < ${SOURCE.file} > ${TARGET.file}",
-           exitstatfunc=always_succeed)
-

batch_key -The -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 -batch_key -argument is any non-False, non-callable Python value, -the configured Action object will cause -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 -CHANGED_SOURCES -construction variable -(and possibly -CHANGED_TARGETS -as well) -to only pass to the command line those sources that -have actually changed since their targets were built.

Example:

-a = Action('build $CHANGED_SOURCES', batch_key=True)
-

The -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 -batch_key -function must take the following arguments:

action

The action object.

env

The construction environment -configured for the target.

target

The list of targets for a particular configured action.

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 -batch_key -function may decide to return -the value of a specific construction -variable from the -env -argument -which will cause -scons -to batch-build targets -with matching values of that variable, -or perhaps return the -id() -of the entire construction environment, -in which case -scons -will batch-build -all targets configured with the same construction environment. -Returning -None -indicates that -the particular target should -not -be part of any batched build, -but instead will be built -by a separate invocation of action's -command or function. -Example:

-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)
-

Miscellaneous Action Functions

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 -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 -Execute -global function to do so:

-Execute(Touch('file'))
-

Second, -you can use these functions -to supply Actions in a list -for use by the -Command -method. -This can allow you to -perform more complicated -sequences of file manipulation -without relying -on platform-specific -external commands: -that

-env = Environment(TMPBUILD = '/tmp/builddir')
-env.Command('foo.out', 'foo.in',
-            [Mkdir('$TMPBUILD'),
-             Copy('$TMPBUILD', '${SOURCE.dir}'),
-             "cd $TMPBUILD && make",
-             Delete('$TMPBUILD')])
-
Chmod(dest, mode)

Returns an Action object that -changes the permissions on the specified -dest -file or directory to the specified -mode -which can be octal or string, similar to the bash command. -Examples:

-Execute(Chmod('file', 0755))
-
-env.Command('foo.out', 'foo.in',
-            [Copy('$TARGET', '$SOURCE'),
-             Chmod('$TARGET', 0755)])
-
-Execute(Chmod('file', "ugo+w"))
-
-env.Command('foo.out', 'foo.in',
-            [Copy('$TARGET', '$SOURCE'),
-             Chmod('$TARGET', "ugo+w")])
-
Copy(dest, src)

Returns an Action object -that will copy the -src -source file or directory to the -dest -destination file or directory. -Examples:

-Execute(Copy('foo.output', 'foo.input'))
-
-env.Command('bar.out', 'bar.in',
-            Copy('$TARGET', '$SOURCE'))
-
Delete(entry, [must_exist])

Returns an Action that -deletes the specified -entry, -which may be a file or a directory tree. -If a directory is specified, -the entire directory tree -will be removed. -If the -must_exist -flag is set, -then a Python error will be thrown -if the specified entry does not exist; -the default is -must_exist=0, -that is, the Action will silently do nothing -if the entry does not exist. -Examples:

-Execute(Delete('/tmp/buildroot'))
-
-env.Command('foo.out', 'foo.in',
-            [Delete('${TARGET.dir}'),
-             MyBuildAction])
-
-Execute(Delete('file_that_must_exist', must_exist=1))
-
Mkdir(dir)

Returns an Action -that creates the specified -directory -dir . -Examples:

-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')])
-
Move(dest, src)

Returns an Action -that moves the specified -src -file or directory to -the specified -dest -file or directory. -Examples:

-Execute(Move('file.destination', 'file.source'))
-
-env.Command('output_file', 'input_file',
-            [MyBuildAction,
-             Move('$TARGET', 'file_created_by_MyBuildAction')])
-
Touch(file)

Returns an Action -that updates the modification time -on the specified -file. -Examples:

-Execute(Touch('file_to_be_touched'))
-
-env.Command('marker', 'input_file',
-            [MyBuildAction,
-             Touch('$TARGET')])
-

Variable Substitution

Before executing a command, -scons -performs construction variable interpolation on the strings that make up -the command line of builders. -Variables are introduced by a -$ -prefix. -Besides construction variables, scons provides the following -variables for each command execution:

CHANGED_SOURCES

The file names of all sources of the build command -that have changed since the target was last built.

CHANGED_TARGETS

The file names of all targets that would be built -from sources that have changed since the target was last built.

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.

SOURCES

The file names of the sources of the build command.

TARGET

The file name of the target being built, -or the file name of the first target -if multiple targets are being built.

TARGETS

The file names of all targets being built.

UNCHANGED_SOURCES

The file names of all sources of the build command -that have -not -changed since the target was last built.

UNCHANGED_TARGETS

The file names of all targets that would be built -from sources that have -not -changed since the target was last built.

(Note that the above variables are reserved -and may not be set in a construction environment.)

For example, given the construction variable CC='cc', targets=['foo'], and -sources=['foo.c', 'bar.c']:

-action='$CC -c -o $TARGET $SOURCES'
-

would produce the command line:

-cc -c -o foo foo.c bar.c
-

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:

-${SOURCES[1]}
-

would produce:

-bar.c
-

Additionally, a variable name may -have the following special -modifiers appended within the enclosing curly braces -to modify the interpolated string:

base

The base path of the file name, -including the directory path -but excluding any suffix.

dir

The name of the directory in which the file exists.

file

The file name, -minus any directory portion.

filebase

Just the basename of the file, -minus any suffix -and minus the directory.

suffix

Just the file suffix.

abspath

The absolute path name of the file.

posix

The POSIX form of the path, -with directories separated by -/ -(forward slashes) -not backslashes. -This is sometimes necessary on Windows systems -when a path references a file on other (POSIX) systems.

srcpath

The directory and file name to the source file linked to this file through -VariantDir(). -If this file isn't linked, -it just returns the directory and filename unchanged.

srcdir

The directory containing the source file linked to this file through -VariantDir(). -If this file isn't linked, -it just returns the directory part of the filename.

rsrcpath

The directory and file name to the source file linked to this file through -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.

rsrcdir

The Repository directory containing the source file linked to this file through -VariantDir(). -If this file isn't linked, -it just returns the directory part of the filename.

For example, the specified target will -expand as follows for the corresponding modifiers:

-$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
-

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: -target -- a list of target nodes, -source -- a list of source nodes, -env -- the construction environment, -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:

-def foo(target, source, env, for_signature):
-    return "bar"
-
-# Will expand $BAR to "bar baz"
-env=Environment(FOO=foo, BAR="$FOO baz")
-

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 -__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:

-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")
-

The special pseudo-variables -$( -and -$) -may be used to surround parts of a command line -that may change -without -causing a rebuild--that is, -which are not included in the signature -of target files built with this command. -All text between -$( -and -$) -will be removed from the command line -before it is added to file signatures, -and the -$( -and -$) -will be removed before the command is executed. -For example, the command line:

-echo Last build occurred $( $TODAY $). > $TARGET
-

would execute the command:

-echo Last build occurred $TODAY. > $TARGET
-

but the command signature added to any target files would be:

-echo Last build occurred  . > $TARGET
-

Python Code Substitution

Any python code within -${-} -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:

-env['COND'] = 0
-env.Command('foo.out', 'foo.in',
-    '''echo ${COND==1 and 'FOO' or 'BAR'} > $TARGET''')
-

the command executed will be either

-echo FOO > foo.out
-

or

-echo BAR > foo.out
-

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.

-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
-

SCons uses the following rules when converting construction variables into -command lines:

String

When the value is a string it is interpreted as a space delimited list of -command line arguments.

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.

Other

Anything that is not a list or string is converted to a string and -interpreted as a single command line argument.

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.

Scanner Objects

You can use the -Scanner -function to define -objects to scan -new file types for implicit dependencies. -The -Scanner -function accepts the following arguments:

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 -node -argument is the internal -SCons node representing the file. -Use -str(node) -to fetch the name of the file, and -node.get_contents() -to fetch contents of the file. -Note that the file is -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 -env -argument is the construction environment for the scan. -Fetch values from it using the -env.Dictionary() -method.

The -path -argument is a tuple (or list) -of directories that can be searched -for files. -This will usually be the tuple returned by the -path_function -argument (see below).

The -arg -argument is the argument supplied -when the scanner was created, if any.

name

The name of the Scanner. -This is mainly used -to identify the Scanner internally.

argument

An optional argument that, if specified, -will be passed to the scanner function -(described above) -and the path function -(specified below).

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.

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 -path_function -returns a tuple of directories -that can be searched for files to be returned -by this Scanner object. -(Note that the -FindPathDirs() -function can be used to return a ready-made -path_function -for a given construction variable name, -instead of having to write your own function from scratch.)

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 -node_factory -function.

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.

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.

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. -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.

Note that -scons -has a global -SourceFileScanner -object that is used by -the -Object(), -SharedObject(), -and -StaticObject() -builders to decide -which scanner should be used -for different file extensions. -You can using the -SourceFileScanner.add_scanner() -method to add your own Scanner object -to the -scons -infrastructure -that builds target programs or -libraries from a list of -source files of different types:

-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'])
-

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.

.C file suffix

SCons handles the upper-case -.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 -.C -suffix as a C++ source file. -On a case-insensitive system -such as Windows, -SCons treats a file with a -.C -suffix as a C source file.

.F file suffix

SCons handles the upper-case -.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 -.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 -.F -suffix as a Fortran source file that should -not -be run through the C preprocessor.

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.

Windows: scons.bat file

On Windows systems, -SCons is executed via a wrapper -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:

-scons "FOO=BAR" "BAZ=BLEH"
-

Second, the Cygwin shell does not -recognize this file as being the same -as an -scons -command issued at the command-line prompt. -You can work around this either by -executing -scons.bat -from the Cygwin command line, -or by creating a wrapper shell -script named -scons .

MinGW

The MinGW bin directory must be in your PATH environment variable or the -PATH variable under the ENV construction variable for SCons -to detect and use the MinGW tools. When running under the native Windows -Python interpreter, SCons will prefer the MinGW tools over the Cygwin -tools, if they are both installed, regardless of the order of the bin -directories in the PATH variable. If you have both MSVC and MinGW -installed and you want to use MinGW instead of MSVC, -then you must explicitly tell SCons to use MinGW by passing

-tools=['mingw']
-

to the Environment() function, because SCons will prefer the MSVC tools -over the MinGW tools.

EXAMPLES

To help you get started using SCons, -this section contains a brief overview of some common tasks.

Basic Compilation From a Single Source File

-env = Environment()
-env.Program(target = 'foo', source = 'foo.c')
-

Note: Build the file by specifying -the target as an argument -("scons foo" or "scons foo.exe"). -or by specifying a dot ("scons .").

Basic Compilation From Multiple Source Files

-env = Environment()
-env.Program(target = 'foo', source = Split('f1.c f2.c f3.c'))
-

Setting a Compilation Flag

-env = Environment(CCFLAGS = '-g')
-env.Program(target = 'foo', source = 'foo.c')
-

Search The Local Directory For .h Files

Note: You do -not -need to set CCFLAGS to specify -I options by hand. -SCons will construct the right -I options from CPPPATH.

-env = Environment(CPPPATH = ['.'])
-env.Program(target = 'foo', source = 'foo.c')
-

Search Multiple Directories For .h Files

-env = Environment(CPPPATH = ['include1', 'include2'])
-env.Program(target = 'foo', source = 'foo.c')
-

Building a Static Library

-env = Environment()
-env.StaticLibrary(target = 'foo', source = Split('l1.c l2.c'))
-env.StaticLibrary(target = 'bar', source = ['l3.c', 'l4.c'])
-

Building a Shared Library

-env = Environment()
-env.SharedLibrary(target = 'foo', source = ['l5.c', 'l6.c'])
-env.SharedLibrary(target = 'bar', source = Split('l7.c l8.c'))
-

Linking a Local Library Into a Program

-env = Environment(LIBS = 'mylib', LIBPATH = ['.'])
-env.Library(target = 'mylib', source = Split('l1.c l2.c'))
-env.Program(target = 'prog', source = ['p1.c', 'p2.c'])
-

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.

-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')
-

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.

Adding Your Own Builder Object to an Environment

-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')
-

You also can use other Pythonic techniques to add -to the BUILDERS construction variable, such as:

-env = Environment()
-env['BUILDERS]['PDFBuilder'] = bld
-

Defining Your Own Scanner Object

The following example shows an extremely simple scanner (the -kfile_scan() -function) -that doesn't use a search path at all -and simply returns the -file names present on any -include -lines in the scanned file. -This would implicitly assume that all included -files live in the top-level directory:

-import re
-
-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
-

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 -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 -MYPATH -construction variable) -for files that actually exist:

-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')
-

The -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 -$MYPATH -construction variable. It lets SCons detect the file -incs/foo.inc -, even if -foo.x -contains the line -include foo.inc -only. -If you need to customize how the search path is derived, -you would provide your own -path_function -argument when creating the Scanner object, -as follows:

-# 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
-                 )
-

Creating a Hierarchical Build

Notice that the file names specified in a subdirectory's -SConscript -file are relative to that subdirectory.

-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')
-

Sharing Variables Between SConscript Files

You must explicitly Export() and Import() variables that -you want to share between SConscript files.

-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')
-

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:

-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')
-

Note the use of the Export() method -to set the "cppdefines" variable to a different -value each time we call the SConscript function.

Hierarchical Build of Two Libraries Linked With a Program

-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'))
-

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).

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.

-vars = Variables('custom.py')
-vars.Add('CC', 'The C compiler.')
-env = Environment(variables=vars)
-Help(vars.GenerateHelpText(env))
-

The user could specify the C compiler on the command line:

-scons "CC=my_cc"
-

or in the custom.py file:

-CC = 'my_cc'
-

or get documentation on the options:

-$ scons -h
-
-CC: The C compiler.
-    default: None
-    actual: cc
-
-

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:

-#include <windows.h>
-#include <my_big_header.h>
-

StdAfx.cpp:

-#include <StdAfx.h>
-

Foo.cpp:

-#include <StdAfx.h>
-
-/* do some stuff */
-

Bar.cpp:

-#include <StdAfx.h>
-
-/* do some other stuff */
-

SConstruct:

-env=Environment()
-env['PCHSTOP'] = 'StdAfx.h'
-env['PCH'] = env.PCH('StdAfx.cpp')[0]
-env.Program('MyApp', ['Foo.cpp', 'Bar.cpp'])
-

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 documentation for /Yc, /Yu, and /Yp.

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:

-env=Environment()
-env['PDB'] = 'MyApp.pdb'
-env.Program('MyApp', ['Foo.cpp', 'Bar.cpp'])
-

For more information see the document for the PDB construction variable.

ENVIRONMENT

SCONS_LIB_DIR

Specifies the directory that contains the SCons Python module directory -(e.g. /home/aroach/scons-src-0.01/src/engine).

SCONSFLAGS

A string of options that will be used by scons in addition to those passed -on the command line.

SEE ALSO

scons -User Manual, -scons -Design Document, -scons -source code.

AUTHORS

Originally: Steven Knight <knight@baldmt.com> and Anthony Roach <aroach@electriceyeball.com> -Since 2010: The SCons Development Team <scons-dev@scons.org> -

diff --git a/scons.spec b/scons.spec index 0e3351d..b490d23 100644 --- a/scons.spec +++ b/scons.spec @@ -24,13 +24,13 @@ %endif Name: scons -Version: 3.0.4 -Release: 4%{?dist} +Version: 3.0.5 +Release: 1%{?dist} Summary: An Open Source software construction tool License: MIT URL: http://www.scons.org -Source0: http://prdownloads.sourceforge.net/scons/scons-%{version}.tar.gz -Source1: https://scons.org/doc/production/HTML/scons-man.html +Source0: https://github.com/SCons/scons/archive/%{version}/scons-%{version}.tar.gz +Source1: https://scons.org/doc/production/scons-doc-%{version}.tar.gz BuildArch: noarch %description @@ -129,7 +129,10 @@ defined Builder and/or Scanner objects. %endif %prep -%setup -qc +%setup -qc -a 1 + +# Remove unused doc directories +rm -rf PDF PS EPUB TEXT # Convert to UTF-8 for file in %{name}-%{version}/src/*.txt; do @@ -138,8 +141,6 @@ for file in %{name}-%{version}/src/*.txt; do mv $file.new $file done -cp -p %{SOURCE1} ./ - %if 0%{?with_python3} cp -a %{name}-%{version} %{name}-%{version}-py3 %endif @@ -323,10 +324,13 @@ popd %endif %files doc -%doc scons-man.html +%doc HTML %license %{name}-%{version}/src/LICENSE.txt %changelog +* Wed Mar 27 2019 Antonio Trande - 3.0.5-1 +- Release 3.0.5 + * Thu Mar 14 2019 Antonio Trande - 3.0.4-4 - Fix Provides of scons-python3 diff --git a/sources b/sources index 720b9b7..16ca892 100644 --- a/sources +++ b/sources @@ -1 +1,2 @@ -SHA512 (scons-3.0.4.tar.gz) = d57924f0e7713ec2e5d7159fbf0078947aa5ce49f7cdf7a4ea47c19efbce7ec335a5e5448e200240be1095655c5c25f1466285f0bed5bdadeb2673845b23c4f5 +SHA512 (scons-3.0.5.tar.gz) = afd4e3d5a76c009f7a3f55934c2d479c611df5713fdaf60aaa9860fc685f95a314bbe54df92fcbca3570dc9a5b244dcf08bf63ce0cef837c3767a37628abae02 +SHA512 (scons-doc-3.0.5.tar.gz) = 964543fb016105cbb2e5f2e654584b960db609da9262ff2d50ea97a7b83e377984a09206b9d302a7a45c639592ed2de88a788b7ce3029dd0c5539d90c917b09d