diff options
Diffstat (limited to 'doc')
31 files changed, 1115 insertions, 1543 deletions
diff --git a/doc/generated/builders.gen b/doc/generated/builders.gen index 7c62558..59d2dca 100644 --- a/doc/generated/builders.gen +++ b/doc/generated/builders.gen @@ -48,11 +48,15 @@ env.CFile(target = 'bar', source = 'bar.y') </term> <listitem> <para xmlns="http://www.scons.org/dbxsd/v1.0"> -The <function xmlns="http://www.scons.org/dbxsd/v1.0">Command</function> "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 <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="f-Command"><function>Command</function></link> function description +The <function xmlns="http://www.scons.org/dbxsd/v1.0">Command</function> "Builder" is actually +a function that looks like a Builder, +but takes a required third argument, which is the +action to take to construct the target +from the source, used for "one-off" builds +where a full builder is not needed. +Thus it does not follow the builder +calling rules described at the start of this section. +See instead the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="f-Command"><function>Command</function></link> function description for the calling syntax and details. </para> </listitem> @@ -465,6 +469,22 @@ a builder. <example_commands xmlns="http://www.scons.org/dbxsd/v1.0"> env.Install('/usr/local/bin', source = ['foo', 'bar']) </example_commands> + +<para xmlns="http://www.scons.org/dbxsd/v1.0"> +If the <option>--install-sandbox</option> command line +option is given, the target directory will be prefixed +by the directory path specified. +This is useful to test installs without installing to +a "live" location in the system. +</para> + +<para xmlns="http://www.scons.org/dbxsd/v1.0"> +See also <function xmlns="http://www.scons.org/dbxsd/v1.0">FindInstalledFiles</function>. +For more thoughts on installation, see the User Guide +(particularly the section on Command-Line Targets +and the chapters on Installing Files and on Alias Targets). +</para> + </listitem> </varlistentry> <varlistentry id="b-InstallAs"> @@ -1841,72 +1861,28 @@ env.Program(target = 'foo', source = ['foo.o', 'bar.c', 'baz.f']) <function>env.ProgramAllAtOnce()</function> </term> <listitem> - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - Builds an executable from D sources without first creating individual - objects for each file. - </para> - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - D sources can be compiled file-by-file as C and C++ source are, and - D is integrated into the <filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename> 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. - </para> - <example_commands xmlns="http://www.scons.org/dbxsd/v1.0"> - env.ProgramAllAtOnce('executable', ['mod_a.d, mod_b.d', 'mod_c.d']) - </example_commands> - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - 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. - </para> - - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - Builds an executable from D sources without first creating individual - objects for each file. - </para> - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - D sources can be compiled file-by-file as C and C++ source are, and - D is integrated into the <filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename> 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. - </para> - <example_commands xmlns="http://www.scons.org/dbxsd/v1.0"> - env.ProgramAllAtOnce('executable', ['mod_a.d, mod_b.d', 'mod_c.d']) - </example_commands> - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - 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. - </para> - - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - Builds an executable from D sources without first creating individual - objects for each file. - </para> - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - D sources can be compiled file-by-file as C and C++ source are, and - D is integrated into the <filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename> 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. - </para> - <example_commands xmlns="http://www.scons.org/dbxsd/v1.0"> - env.ProgramAllAtOnce('executable', ['mod_a.d, mod_b.d', 'mod_c.d']) - </example_commands> - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - 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. - </para> - </listitem> + <para xmlns="http://www.scons.org/dbxsd/v1.0"> + Builds an executable from D sources without first creating individual + objects for each file. + </para> + <para xmlns="http://www.scons.org/dbxsd/v1.0"> + D sources can be compiled file-by-file as C and C++ source are, and + D is integrated into the <filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename> 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 to the D compiler. This builder serves that purpose. + </para> + <example_commands xmlns="http://www.scons.org/dbxsd/v1.0"> + env.ProgramAllAtOnce('executable', ['mod_a.d, mod_b.d', 'mod_c.d']) + </example_commands> + <para xmlns="http://www.scons.org/dbxsd/v1.0"> + 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. + </para> +</listitem> </varlistentry> <varlistentry id="b-RES"> <term> diff --git a/doc/generated/examples/caching_ex-random_1.xml b/doc/generated/examples/caching_ex-random_1.xml index 58ff6ae..1c99727 100644 --- a/doc/generated/examples/caching_ex-random_1.xml +++ b/doc/generated/examples/caching_ex-random_1.xml @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="UTF-8"?> <screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput> cc -o f3.o -c f3.c +cc -o f4.o -c f4.c +cc -o f1.o -c f1.c cc -o f2.o -c f2.c cc -o f5.o -c f5.c -cc -o f1.o -c f1.c -cc -o f4.o -c f4.c cc -o prog f1.o f2.o f3.o f4.o f5.o </screen> diff --git a/doc/generated/examples/troubleshoot_Dump_1.xml b/doc/generated/examples/troubleshoot_Dump_1.xml index 99d1399..1f6f250 100644 --- a/doc/generated/examples/troubleshoot_Dump_1.xml +++ b/doc/generated/examples/troubleshoot_Dump_1.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons</userinput> scons: Reading SConscript files ... -{ 'BUILDERS': {'_InternalInstall': <function InstallBuilderWrapper at 0x700000&gt;, '_InternalInstallVersionedLib': <function InstallVersionedBuilderWrapper at 0x700000&gt;, '_InternalInstallAs': <function InstallAsBuilderWrapper at 0x700000&gt;}, +{ 'BUILDERS': {'_InternalInstall': <function InstallBuilderWrapper at 0x700000>, '_InternalInstallVersionedLib': <function InstallVersionedBuilderWrapper at 0x700000>, '_InternalInstallAs': <function InstallAsBuilderWrapper at 0x700000>}, 'CONFIGUREDIR': '#/.sconf_temp', 'CONFIGURELOG': '#/config.log', 'CPPSUFFIXES': [ '.c', @@ -25,16 +25,16 @@ scons: Reading SConscript files ... '.SPP', '.sx'], 'DSUFFIXES': ['.d'], - 'Dir': <SCons.Defaults.Variable_Method_Caller object at 0x700000&gt;, - 'Dirs': <SCons.Defaults.Variable_Method_Caller object at 0x700000&gt;, + 'Dir': <SCons.Defaults.Variable_Method_Caller object at 0x700000>, + 'Dirs': <SCons.Defaults.Variable_Method_Caller object at 0x700000>, 'ENV': { 'PATH': '/usr/local/bin:/opt/bin:/bin:/usr/bin'}, - 'ESCAPE': <function escape at 0x700000&gt;, - 'File': <SCons.Defaults.Variable_Method_Caller object at 0x700000&gt;, + 'ESCAPE': <function escape at 0x700000>, + 'File': <SCons.Defaults.Variable_Method_Caller object at 0x700000>, 'HOST_ARCH': None, 'HOST_OS': None, 'IDLSUFFIXES': ['.idl', '.IDL'], - 'INSTALL': <function copyFunc at 0x700000&gt;, - 'INSTALLVERSIONEDLIB': <function copyFuncVersionedLib at 0x700000&gt;, + 'INSTALL': <function copyFunc at 0x700000>, + 'INSTALLVERSIONEDLIB': <function copyFuncVersionedLib at 0x700000>, 'LIBPREFIX': 'lib', 'LIBPREFIXES': ['$LIBPREFIX'], 'LIBSUFFIX': '.a', @@ -45,18 +45,19 @@ scons: Reading SConscript files ... 'PLATFORM': 'posix', 'PROGPREFIX': '', 'PROGSUFFIX': '', - 'PSPAWN': <function piped_env_spawn at 0x700000&gt;, - 'RDirs': <SCons.Defaults.Variable_Method_Caller object at 0x700000&gt;, - 'SCANNERS': [<SCons.Scanner.Base object at 0x700000&gt;], + 'PSPAWN': <function piped_env_spawn at 0x700000>, + 'RDirs': <SCons.Defaults.Variable_Method_Caller object at 0x700000>, + 'SCANNERS': [<SCons.Scanner.Base object at 0x700000>], 'SHELL': 'sh', 'SHLIBPREFIX': '$LIBPREFIX', 'SHLIBSUFFIX': '.so', 'SHOBJPREFIX': '$OBJPREFIX', 'SHOBJSUFFIX': '$OBJSUFFIX', - 'SPAWN': <function subprocess_spawn at 0x700000&gt;, + 'SPAWN': <function subprocess_spawn at 0x700000>, 'TARGET_ARCH': None, 'TARGET_OS': None, 'TEMPFILE': <class 'SCons.Platform.TempFileMunge'>, + 'TEMPFILEARGJOIN': ' ', 'TEMPFILEPREFIX': '@', 'TOOLS': ['install', 'install'], '_CPPDEFFLAGS': '${_defines(CPPDEFPREFIX, CPPDEFINES, CPPDEFSUFFIX, __env__)}', @@ -68,10 +69,10 @@ scons: Reading SConscript files ... '__LDMODULEVERSIONFLAGS': '${__libversionflags(__env__,"LDMODULEVERSION","_LDMODULEVERSIONFLAGS")}', '__RPATH': '$_RPATH', '__SHLIBVERSIONFLAGS': '${__libversionflags(__env__,"SHLIBVERSION","_SHLIBVERSIONFLAGS")}', - '__libversionflags': <function __libversionflags at 0x700000&gt;, - '_concat': <function _concat at 0x700000&gt;, - '_defines': <function _defines at 0x700000&gt;, - '_stripixes': <function _stripixes at 0x700000&gt;} + '__libversionflags': <function __libversionflags at 0x700000>, + '_concat': <function _concat at 0x700000>, + '_defines': <function _defines at 0x700000>, + '_stripixes': <function _stripixes at 0x700000>} scons: done reading SConscript files. scons: Building targets ... scons: `.' is up to date. diff --git a/doc/generated/examples/troubleshoot_Dump_2.xml b/doc/generated/examples/troubleshoot_Dump_2.xml index e8e0960..4b8aa0b 100644 --- a/doc/generated/examples/troubleshoot_Dump_2.xml +++ b/doc/generated/examples/troubleshoot_Dump_2.xml @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="UTF-8"?> <screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">C:\><userinput>scons</userinput> scons: Reading SConscript files ... -{ 'BUILDERS': {'_InternalInstallVersionedLib': <function InstallVersionedBuilderWrapper at 0x700000&gt;, '_InternalInstall': <function InstallBuilderWrapper at 0x700000&gt;, 'Object': <SCons.Builder.CompositeBuilder object at 0x700000&gt;, 'PCH': <SCons.Builder.BuilderBase object at 0x700000&gt;, 'RES': <SCons.Builder.BuilderBase object at 0x700000&gt;, 'SharedObject': <SCons.Builder.CompositeBuilder object at 0x700000&gt;, 'StaticObject': <SCons.Builder.CompositeBuilder object at 0x700000&gt;, '_InternalInstallAs': <function InstallAsBuilderWrapper at 0x700000&gt;}, +{ 'BUILDERS': {'_InternalInstallVersionedLib': <function InstallVersionedBuilderWrapper at 0x700000>, '_InternalInstall': <function InstallBuilderWrapper at 0x700000>, 'Object': <SCons.Builder.CompositeBuilder object at 0x700000>, 'PCH': <SCons.Builder.BuilderBase object at 0x700000>, 'RES': <SCons.Builder.BuilderBase object at 0x700000>, 'SharedObject': <SCons.Builder.CompositeBuilder object at 0x700000>, 'StaticObject': <SCons.Builder.CompositeBuilder object at 0x700000>, '_InternalInstallAs': <function InstallAsBuilderWrapper at 0x700000>}, 'CC': 'cl', - 'CCCOM': <SCons.Action.FunctionAction object at 0x700000&gt;, + 'CCCOM': <SCons.Action.FunctionAction object at 0x700000>, 'CCFLAGS': ['/nologo'], 'CCPCHFLAGS': ['${(PCH and "/Yu%s \\"/Fp%s\\""%(PCHSTOP or "",File(PCH))) or ""}'], 'CCPDBFLAGS': ['${(PDB and "/Z7") or ""}'], @@ -38,20 +38,20 @@ scons: Reading SConscript files ... 'CXXFILESUFFIX': '.cc', 'CXXFLAGS': ['$(', '/TP', '$)'], 'DSUFFIXES': ['.d'], - 'Dir': <SCons.Defaults.Variable_Method_Caller object at 0x700000&gt;, - 'Dirs': <SCons.Defaults.Variable_Method_Caller object at 0x700000&gt;, + 'Dir': <SCons.Defaults.Variable_Method_Caller object at 0x700000>, + 'Dirs': <SCons.Defaults.Variable_Method_Caller object at 0x700000>, 'ENV': { 'PATH': 'C:\\WINDOWS\\System32', 'PATHEXT': '.COM;.EXE;.BAT;.CMD', 'SystemRoot': 'C:\\WINDOWS'}, - 'ESCAPE': <function escape at 0x700000&gt;, - 'File': <SCons.Defaults.Variable_Method_Caller object at 0x700000&gt;, + 'ESCAPE': <function escape at 0x700000>, + 'File': <SCons.Defaults.Variable_Method_Caller object at 0x700000>, 'HOST_ARCH': '', 'HOST_OS': 'win32', 'IDLSUFFIXES': ['.idl', '.IDL'], 'INCPREFIX': '/I', 'INCSUFFIX': '', - 'INSTALL': <function copyFunc at 0x700000&gt;, - 'INSTALLVERSIONEDLIB': <function copyFuncVersionedLib at 0x700000&gt;, + 'INSTALL': <function copyFunc at 0x700000>, + 'INSTALLVERSIONEDLIB': <function copyFuncVersionedLib at 0x700000>, 'LEXUNISTD': ['--nounistd'], 'LIBPREFIX': '', 'LIBPREFIXES': ['$LIBPREFIX'], @@ -66,15 +66,15 @@ scons: Reading SConscript files ... 'PLATFORM': 'win32', 'PROGPREFIX': '', 'PROGSUFFIX': '.exe', - 'PSPAWN': <function piped_spawn at 0x700000&gt;, + 'PSPAWN': <function piped_spawn at 0x700000>, 'RC': 'rc', - 'RCCOM': <SCons.Action.FunctionAction object at 0x700000&gt;, + 'RCCOM': <SCons.Action.FunctionAction object at 0x700000>, 'RCFLAGS': ['/nologo'], 'RCSUFFIXES': ['.rc', '.rc2'], - 'RDirs': <SCons.Defaults.Variable_Method_Caller object at 0x700000&gt;, - 'SCANNERS': [<SCons.Scanner.Base object at 0x700000&gt;], + 'RDirs': <SCons.Defaults.Variable_Method_Caller object at 0x700000>, + 'SCANNERS': [<SCons.Scanner.Base object at 0x700000>], 'SHCC': '$CC', - 'SHCCCOM': <SCons.Action.FunctionAction object at 0x700000&gt;, + 'SHCCCOM': <SCons.Action.FunctionAction object at 0x700000>, 'SHCCFLAGS': ['$CCFLAGS'], 'SHCFLAGS': ['$CFLAGS'], 'SHCXX': '$CXX', @@ -85,11 +85,12 @@ scons: Reading SConscript files ... 'SHLIBSUFFIX': '.dll', 'SHOBJPREFIX': '$OBJPREFIX', 'SHOBJSUFFIX': '$OBJSUFFIX', - 'SPAWN': <function spawn at 0x700000&gt;, + 'SPAWN': <function spawn at 0x700000>, 'STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME': 1, 'TARGET_ARCH': None, 'TARGET_OS': None, 'TEMPFILE': <class 'SCons.Platform.TempFileMunge'>, + 'TEMPFILEARGJOIN': '\n', 'TEMPFILEPREFIX': '@', 'TOOLS': ['msvc', 'install', 'install'], '_CCCOMCOM': '$CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS $CCPCHFLAGS $CCPDBFLAGS', @@ -97,14 +98,14 @@ scons: Reading SConscript files ... '_CPPINCFLAGS': '$( ${_concat(INCPREFIX, CPPPATH, INCSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)', '_LIBDIRFLAGS': '$( ${_concat(LIBDIRPREFIX, LIBPATH, LIBDIRSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)', '_LIBFLAGS': '${_concat(LIBLINKPREFIX, LIBS, LIBLINKSUFFIX, __env__)}', - '_MSVC_OUTPUT_FLAG': <function msvc_output_flag at 0x700000&gt;, + '_MSVC_OUTPUT_FLAG': <function msvc_output_flag at 0x700000>, '__DSHLIBVERSIONFLAGS': '${__libversionflags(__env__,"DSHLIBVERSION","_DSHLIBVERSIONFLAGS")}', '__LDMODULEVERSIONFLAGS': '${__libversionflags(__env__,"LDMODULEVERSION","_LDMODULEVERSIONFLAGS")}', '__SHLIBVERSIONFLAGS': '${__libversionflags(__env__,"SHLIBVERSION","_SHLIBVERSIONFLAGS")}', - '__libversionflags': <function __libversionflags at 0x700000&gt;, - '_concat': <function _concat at 0x700000&gt;, - '_defines': <function _defines at 0x700000&gt;, - '_stripixes': <function _stripixes at 0x700000&gt;} + '__libversionflags': <function __libversionflags at 0x700000>, + '_concat': <function _concat at 0x700000>, + '_defines': <function _defines at 0x700000>, + '_stripixes': <function _stripixes at 0x700000>} scons: done reading SConscript files. scons: Building targets ... scons: `.' is up to date. diff --git a/doc/generated/examples/troubleshoot_explain1_3.xml b/doc/generated/examples/troubleshoot_explain1_3.xml index 04b09fd..ebc13f8 100644 --- a/doc/generated/examples/troubleshoot_explain1_3.xml +++ b/doc/generated/examples/troubleshoot_explain1_3.xml @@ -3,5 +3,5 @@ cp file.in file.oout scons: warning: Cannot find target file.out after building -File "/home/bdeegan/devel/scons/git/as_scons/bootstrap/src/script/scons.py", line 204, in <module> +File "/home/bdeegan/devel/scons/git/as_scons/src/script/scons.py", line 204, in <module> </screen> diff --git a/doc/generated/examples/troubleshoot_stacktrace_2.xml b/doc/generated/examples/troubleshoot_stacktrace_2.xml index 76cfc1a..70a429d 100644 --- a/doc/generated/examples/troubleshoot_stacktrace_2.xml +++ b/doc/generated/examples/troubleshoot_stacktrace_2.xml @@ -4,10 +4,10 @@ scons: *** [prog.o] Source `prog.c' not found, needed by target `prog.o'. scons: internal stack trace: File "bootstrap/src/engine/SCons/Job.py", line 199, in start task.prepare() - File "bootstrap/src/engine/SCons/Script/Main.py", line 177, in prepare + File "bootstrap/src/engine/SCons/Script/Main.py", line 191, in prepare return SCons.Taskmaster.OutOfDateTask.prepare(self) File "bootstrap/src/engine/SCons/Taskmaster.py", line 198, in prepare executor.prepare() - File "bootstrap/src/engine/SCons/Executor.py", line 430, in prepare + File "bootstrap/src/engine/SCons/Executor.py", line 431, in prepare raise SCons.Errors.StopError(msg % (s, self.batches[0].targets[0])) </screen> diff --git a/doc/generated/functions.gen b/doc/generated/functions.gen index 5e8bebb..d71387e 100644 --- a/doc/generated/functions.gen +++ b/doc/generated/functions.gen @@ -25,8 +25,8 @@ Creates an Action object for the specified <varname>action</varname>. -See the section "Action Objects," -below, for a complete explanation of the arguments and behavior. +See the manpage section "Action Objects" +for a complete explanation of the arguments and behavior. </para> <para xmlns="http://www.scons.org/dbxsd/v1.0"> @@ -121,11 +121,11 @@ env.other_method_name('another arg') This function adds a new command-line option to be recognized. The specified <varname>arguments</varname> -are the same as supported by the standard Python -<function>optparse.add_option</function>() -method (with a few additional capabilities noted below); +are the same as supported by the <function>add_option</function> +method in the standard Python library module <emphasis>optparse</emphasis>, +with a few additional capabilities noted below; see the documentation for -<literal>optparse</literal> +<emphasis>optparse</emphasis> for a thorough discussion of its option-processing capabities. </para> @@ -166,23 +166,36 @@ the option will have a default value of </para> <para xmlns="http://www.scons.org/dbxsd/v1.0"> +Unlike regular <emphasis>optparse</emphasis>, option names +added via <function>AddOption</function> must be matched +exactly, the automatic matching of abbreviations on the +command line for long options is not supported. +To allow specific abbreviations, +include them in the <function xmlns="http://www.scons.org/dbxsd/v1.0">AddOption</function> call. +</para> + +<para xmlns="http://www.scons.org/dbxsd/v1.0"> Once a new command-line option has been added with <function xmlns="http://www.scons.org/dbxsd/v1.0">AddOption</function>, the option value may be accessed using <function xmlns="http://www.scons.org/dbxsd/v1.0">GetOption</function> or <function>env.GetOption</function>(). +<!-- The value may also be set, using -<function xmlns="http://www.scons.org/dbxsd/v1.0">SetOption</function> +&f-SetOption; or <function>env.SetOption</function>(), if conditions in a -<filename xmlns="http://www.scons.org/dbxsd/v1.0">SConscript</filename> +&SConscript; require overriding any default value. Note, however, that a value specified on the command line will <emphasis>always</emphasis> override a value set by any SConscript file. +--> +<function xmlns="http://www.scons.org/dbxsd/v1.0">SetOption</function> is not currently supported for +options added with <function xmlns="http://www.scons.org/dbxsd/v1.0">AddOption</function>. </para> <para xmlns="http://www.scons.org/dbxsd/v1.0"> @@ -221,6 +234,22 @@ AddOption('--prefix', help='installation prefix') env = Environment(PREFIX = GetOption('prefix')) </example_commands> + +<note xmlns="http://www.scons.org/dbxsd/v1.0"> +<para> +While <function xmlns="http://www.scons.org/dbxsd/v1.0">AddOption</function> behaves like +<function>add_option</function>, +from the <emphasis>optparse</emphasis> module, +the behavior of options added by <function xmlns="http://www.scons.org/dbxsd/v1.0">AddOption</function> +which take arguments is underfined in +<command>scons</command> if whitespace +(rather than an <literal>=</literal> sign) is used as +the separator on the command line when +the option is invoked. +Such usage should be avoided. +</para> +</note> + </listitem> </varlistentry> <varlistentry id="f-AddPostAction"> @@ -241,7 +270,8 @@ has been built. The specified action(s) may be an Action object, or anything that can be converted into an Action object -(see below). +See the manpage section "Action Objects" +for a complete explanation. </para> <para xmlns="http://www.scons.org/dbxsd/v1.0"> @@ -270,7 +300,8 @@ is built. The specified action(s) may be an Action object, or anything that can be converted into an Action object -(see below). +See the manpage section "Action Objects" +for a complete explanation. </para> <para xmlns="http://www.scons.org/dbxsd/v1.0"> @@ -444,7 +475,7 @@ 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.) +(See also the <function xmlns="http://www.scons.org/dbxsd/v1.0">Prepend</function> method). </para> <para xmlns="http://www.scons.org/dbxsd/v1.0"> @@ -532,30 +563,6 @@ env.AppendUnique(CCFLAGS = '-g', FOO = ['foo.yyy']) </example_commands> </listitem> </varlistentry> - <varlistentry id="f-BuildDir"> - <term> - <literal>BuildDir(build_dir, src_dir, [duplicate])</literal> - </term> - <term> - <literal>env.BuildDir(build_dir, src_dir, [duplicate])</literal> - </term> - <listitem> -<para xmlns="http://www.scons.org/dbxsd/v1.0"> -Deprecated synonyms for -<function xmlns="http://www.scons.org/dbxsd/v1.0">VariantDir</function> -and -<function>env.VariantDir</function>(). -The -<varname>build_dir</varname> -argument becomes the -<varname>variant_dir</varname> -argument of -<function xmlns="http://www.scons.org/dbxsd/v1.0">VariantDir</function> -or -<function>env.VariantDir</function>(). -</para> -</listitem> - </varlistentry> <varlistentry id="f-Builder"> <term> <literal>Builder(action, [arguments])</literal> @@ -568,8 +575,8 @@ or Creates a Builder object for the specified <varname>action</varname>. -See the section "Builder Objects," -below, for a complete explanation of the arguments and behavior. +See the manpage section "Builder Objects" +for a complete explanation of the arguments and behavior. </para> <para xmlns="http://www.scons.org/dbxsd/v1.0"> @@ -849,19 +856,29 @@ for a single special-case build. </para> <para xmlns="http://www.scons.org/dbxsd/v1.0"> -As a special case, the -<varname>source_scanner</varname> -keyword argument can +<function xmlns="http://www.scons.org/dbxsd/v1.0">Command</function> builder accepts +<varname>source_scanner</varname>, +<varname>target_scanner</varname>, +<varname>source_factory</varname>, and +<varname>target_factory</varname> +keyword arguments. The *_scanner args can be used to specify a Scanner object -that will be used to scan the sources. -(The global +that will be used to apply a custom +scanner for a source or target. +For example, the global <literal>DirScanner</literal> 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.) +already specified in other Builder of function calls. +The *_factory args take a factory function that the +Command will use to turn any sources or targets +specified as strings into SCons Nodes. +See the sections "Builder Objects" +below, for more information about how these +args work in a Builder. </para> <para xmlns="http://www.scons.org/dbxsd/v1.0"> @@ -873,7 +890,7 @@ 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, +see the manpage section "Action Objects" for more complete information. Also note that a string specifying an external command may be preceded by an @@ -897,7 +914,7 @@ env.Command('foo.out', 'foo.in', env.Command('bar.out', 'bar.in', ["rm -f $TARGET", "$BAR_BUILD < $SOURCES > $TARGET"], - ENV = {'PATH' : '/usr/local/bin/'}) + ENV={'PATH': '/usr/local/bin/'}) def rename(env, target, source): import os @@ -905,7 +922,7 @@ def rename(env, target, source): env.Command('baz.out', 'baz.in', ["$BAZ_BUILD < $SOURCES > .tmp", - rename ]) + rename]) </example_commands> <para xmlns="http://www.scons.org/dbxsd/v1.0"> @@ -914,14 +931,14 @@ Note that the 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. +identifies what type of entries they are. If necessary, you can explicitly specify that targets or source nodes should -be treated as directoriese +be treated as directories by using the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="f-Dir"><function>Dir</function></link> or -<function>env.Dir</function>() +<function>env.Dir</function> functions. </para> @@ -937,9 +954,9 @@ env.Command(env.Dir('$DISTDIR')), None, make_distdir) </example_commands> <para xmlns="http://www.scons.org/dbxsd/v1.0"> -(Also note that SCons will usually +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.) +so you normally don't need to create directories by hand. </para> </listitem> </varlistentry> @@ -954,8 +971,8 @@ so you normally don't need to create directories by hand.) <para xmlns="http://www.scons.org/dbxsd/v1.0"> 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. +See the manpage section "Configure Contexts" +for a complete explanation of the arguments and behavior. </para> </listitem> </varlistentry> @@ -1262,15 +1279,21 @@ see below. </varlistentry> <varlistentry id="f-DefaultEnvironment"> <term> - <literal>DefaultEnvironment([args])</literal> + <literal>DefaultEnvironment([**kwargs])</literal> </term> <listitem> <para xmlns="http://www.scons.org/dbxsd/v1.0"> -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 +Creates and returns the default <literal xmlns="http://www.scons.org/dbxsd/v1.0">construction environment</literal> object. +The default <literal xmlns="http://www.scons.org/dbxsd/v1.0">construction environment</literal> is used internally by SCons +in order to execute many of the global functions in this list +(i.e. those not called as methods of a specific +<literal xmlns="http://www.scons.org/dbxsd/v1.0">construction environment</literal>), and to fetch source files transparently from source code management systems. +The default environment is a singleton, so the keyword +arguments affect it only on the first call, on subsequent +calls the already-constructed object is returned. +The default environment can be modified in the same way +as any <literal xmlns="http://www.scons.org/dbxsd/v1.0">construction environment</literal>. </para> </listitem> </varlistentry> @@ -1333,11 +1356,11 @@ env.Depends(bar, installed_lib) <listitem> <para xmlns="http://www.scons.org/dbxsd/v1.0"> 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. +containing the <literal xmlns="http://www.scons.org/dbxsd/v1.0">construction variables</literal> in the <literal xmlns="http://www.scons.org/dbxsd/v1.0">construction environment</literal>. +If there are any arguments specified, +the values of the specified <literal xmlns="http://www.scons.org/dbxsd/v1.0">construction variables</literal> +are returned as a string (if one +argument) or as a list of strings. </para> <para xmlns="http://www.scons.org/dbxsd/v1.0"> @@ -1345,8 +1368,8 @@ Example: </para> <example_commands xmlns="http://www.scons.org/dbxsd/v1.0"> -dict = env.Dictionary() -cc_dict = env.Dictionary('CC', 'CCFLAGS', 'CCCOM') +cvars = env.Dictionary() +cc_values = env.Dictionary('CC', 'CCFLAGS', 'CCCOM') </example_commands> </listitem> </varlistentry> @@ -1385,7 +1408,8 @@ 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. +see manpage section "File and Directory Nodes" +for more information. </para> </listitem> </varlistentry> @@ -1408,7 +1432,7 @@ This SConstruct: <example_commands xmlns="http://www.scons.org/dbxsd/v1.0"> env=Environment() -print env.Dump('CCCOM') +print(env.Dump('CCCOM')) </example_commands> <para xmlns="http://www.scons.org/dbxsd/v1.0"> @@ -1425,7 +1449,7 @@ While this SConstruct: <example_commands xmlns="http://www.scons.org/dbxsd/v1.0"> env=Environment() -print env.Dump() +print(env.Dump()) </example_commands> <para xmlns="http://www.scons.org/dbxsd/v1.0"> @@ -1528,8 +1552,8 @@ Executes an Action object. The specified <varname>action</varname> may be an Action object -(see the section "Action Objects," -below, for a complete explanation of the arguments and behavior), +(see manpage section "Action Objects" +for a complete explanation of the arguments and behavior), or it may be a command-line string, list of commands, or executable Python function, @@ -1686,7 +1710,8 @@ 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. +see manpage section "File and Directory Nodes" +for more information. </para> </listitem> </varlistentry> @@ -2836,7 +2861,7 @@ and the construction variables they affect are as specified for the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="f-ParseFlags"><function>env.ParseFlags</function></link> method (which this method calls). -See that method's description, below, +See that method's description for a table of options and construction variables. </para> </listitem> @@ -2948,30 +2973,34 @@ and added to the following construction variables: </para> <example_commands xmlns="http://www.scons.org/dbxsd/v1.0"> --arch CCFLAGS, LINKFLAGS --D CPPDEFINES --framework FRAMEWORKS --frameworkdir= FRAMEWORKPATH --include CCFLAGS --isysroot CCFLAGS, LINKFLAGS --isystem CCFLAGS --iquote CCFLAGS --idirafter CCFLAGS --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 +-arch CCFLAGS, LINKFLAGS +-D CPPDEFINES +-framework FRAMEWORKS +-frameworkdir= FRAMEWORKPATH +-fmerge-all-constants CCFLAGS, LINKFLAGS +-fopenmp CCFLAGS, LINKFLAGS +-include CCFLAGS +-imacros CCFLAGS +-isysroot CCFLAGS, LINKFLAGS +-isystem CCFLAGS +-iquote CCFLAGS +-idirafter CCFLAGS +-I CPPPATH +-l LIBS +-L LIBPATH +-mno-cygwin CCFLAGS, LINKFLAGS +-mwindows LINKFLAGS +-openmp CCFLAGS, 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 </example_commands> <para xmlns="http://www.scons.org/dbxsd/v1.0"> @@ -3536,8 +3565,8 @@ Return('val1 val2') Creates a Scanner object for the specified <varname>function</varname>. -See the section "Scanner Objects," -below, for a complete explanation of the arguments and behavior. +See manpage section "Scanner Objects" +for a complete explanation of the arguments and behavior. </para> </listitem> </varlistentry> @@ -4226,107 +4255,6 @@ env.SourceCode('no_source.c', None) </para> </listitem> </varlistentry> - <varlistentry id="f-SourceSignatures"> - <term> - <literal>SourceSignatures(type)</literal> - </term> - <term> - <literal>env.SourceSignatures(type)</literal> - </term> - <listitem> -<para xmlns="http://www.scons.org/dbxsd/v1.0"> -Note: Although it is not yet officially deprecated, -use of this function is discouraged. -See the -<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="f-Decider"><function>Decider</function></link> -function for a more flexible and straightforward way -to configure SCons' decision-making. -</para> - -<para xmlns="http://www.scons.org/dbxsd/v1.0"> -The -<function xmlns="http://www.scons.org/dbxsd/v1.0">SourceSignatures</function> -function tells -<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename> -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 -<literal>MD5</literal> -or -<literal>timestamp</literal>. -</para> - -<para xmlns="http://www.scons.org/dbxsd/v1.0"> -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. -</para> - -<para xmlns="http://www.scons.org/dbxsd/v1.0"> -<literal>MD5</literal> -means -<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename> -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. -</para> - -<para xmlns="http://www.scons.org/dbxsd/v1.0"> -<literal>timestamp</literal> -means -<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename> -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 -<emphasis>older</emphasis> -than the last time it was used to rebuild the target file.) -</para> - -<para xmlns="http://www.scons.org/dbxsd/v1.0"> -There is no different between the two behaviors -for Python -<function xmlns="http://www.scons.org/dbxsd/v1.0">Value</function> -node objects. -</para> - -<para xmlns="http://www.scons.org/dbxsd/v1.0"> -<literal>MD5</literal> -signatures take longer to compute, -but are more accurate than -<literal>timestamp</literal> -signatures. -The default value is -<literal>MD5</literal>. -</para> - -<para xmlns="http://www.scons.org/dbxsd/v1.0"> -Note that the default -<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="f-TargetSignatures"><function>TargetSignatures</function></link> -setting (see below) -is to use this -<function xmlns="http://www.scons.org/dbxsd/v1.0">SourceSignatures</function> -setting for any target files that are used -to build other target files. -Consequently, changing the value of -<function xmlns="http://www.scons.org/dbxsd/v1.0">SourceSignatures</function> -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 -<function xmlns="http://www.scons.org/dbxsd/v1.0">env.SourceSignatures</function> -is used). -</para> -</listitem> - </varlistentry> <varlistentry id="f-Split"> <term> <literal>Split(arg)</literal> @@ -4459,7 +4387,7 @@ Example: </para> <example_commands xmlns="http://www.scons.org/dbxsd/v1.0"> -print env.subst("The C compiler is: $CC") +print(env.subst("The C compiler is: $CC")) def compile(target, source, env): sourceDir = env.subst("${SOURCE.srcdir}", @@ -4489,170 +4417,15 @@ Examples: </para> <example_commands xmlns="http://www.scons.org/dbxsd/v1.0"> -# makes sure the built library will be installed with 0644 file +# makes sure the built library will be installed with 0o644 file # access mode -Tag( Library( 'lib.c' ), UNIX_ATTR="0644" ) +Tag( Library( 'lib.c' ), UNIX_ATTR="0o644" ) # marks file2.txt to be a documentation file Tag( 'file2.txt', DOC ) </example_commands> </listitem> </varlistentry> - <varlistentry id="f-TargetSignatures"> - <term> - <literal>TargetSignatures(type)</literal> - </term> - <term> - <literal>env.TargetSignatures(type)</literal> - </term> - <listitem> -<para xmlns="http://www.scons.org/dbxsd/v1.0"> -Note: Although it is not yet officially deprecated, -use of this function is discouraged. -See the -<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="f-Decider"><function>Decider</function></link> -function for a more flexible and straightforward way -to configure SCons' decision-making. -</para> - -<para xmlns="http://www.scons.org/dbxsd/v1.0"> -The -<function xmlns="http://www.scons.org/dbxsd/v1.0">TargetSignatures</function> -function tells -<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename> -how to decide if a target file -(a file that -<emphasis>is</emphasis> -built from any other files) -has changed since the last time it -was used to build some other target file. -Legal values are -<literal>"build"</literal>; -<literal>"content"</literal> -(or its synonym -<literal>"MD5"</literal>); -<literal>"timestamp"</literal>; -or -<literal>"source"</literal>. -</para> - -<para xmlns="http://www.scons.org/dbxsd/v1.0"> -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. -</para> - -<para xmlns="http://www.scons.org/dbxsd/v1.0"> -<literal>"content"</literal> -(or its synonym -<literal>"MD5"</literal>) -means -<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename> -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 -<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename> -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. -</para> - -<para xmlns="http://www.scons.org/dbxsd/v1.0"> -<literal>"timestamp"</literal> -means -<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename> -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 -<emphasis>older</emphasis> -than the last time it was used to rebuild the target file.) -</para> - -<para xmlns="http://www.scons.org/dbxsd/v1.0"> -<literal>"source"</literal> -means -<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename> -decides that a target file has changed -as specified by the corresponding -<function xmlns="http://www.scons.org/dbxsd/v1.0">SourceSignatures</function> -setting -(<literal>"MD5"</literal> -or -<literal>"timestamp"</literal>). -This means that -<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename> -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. -</para> - -<para xmlns="http://www.scons.org/dbxsd/v1.0"> -<literal>"build"</literal> -means -<filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename> -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 -<function xmlns="http://www.scons.org/dbxsd/v1.0">SourceSignatures</function> -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. -</para> - -<para xmlns="http://www.scons.org/dbxsd/v1.0"> -<literal>"build"</literal> -signatures are fastest because -<literal>"content"</literal> -(or -<literal>"MD5"</literal>) -signatures take longer to compute, -but are more accurate than -<literal>"timestamp"</literal> -signatures, -and can prevent unnecessary "downstream" rebuilds -when a target file is rebuilt to the exact same contents -as the previous build. -The -<literal>"source"</literal> -setting provides the most consistent behavior -when other target files may be rebuilt from -both source and target input files. -The default value is -<literal>"source"</literal>. -</para> - -<para xmlns="http://www.scons.org/dbxsd/v1.0"> -Because the default setting is -<literal>"source"</literal>, -using -<function xmlns="http://www.scons.org/dbxsd/v1.0">SourceSignatures</function> -is generally preferable to -<function xmlns="http://www.scons.org/dbxsd/v1.0">TargetSignatures</function>, -so that the up-to-date decision -will be consistent for all files -(or all files built with a specific construction environment). -Use of -<function xmlns="http://www.scons.org/dbxsd/v1.0">TargetSignatures</function> -provides specific control for how built target files -affect their "downstream" dependencies. -</para> -</listitem> - </varlistentry> <varlistentry id="f-Tool"> <term> <literal>Tool(string, [toolpath, **kw])</literal> @@ -4946,30 +4719,51 @@ SConscript(dirs='doc', variant_dir='build/doc', duplicate=0) Searches for the specified executable <varname>program</varname>, returning the full path name to the program -if it is found, -and returning None if not. -Searches the specified -<varname>path</varname>, -the value of the calling environment's PATH -(<literal>env['ENV']['PATH']</literal>), -or the user's current external PATH -(<literal>os.environ['PATH']</literal>) -by default. +if it is found, else <literal>None</literal>. +Searches the value of the +<varname>path</varname> keyword argument, +or if <literal>None</literal> (the default) +the value of the calling environment's <envar>PATH</envar> +(<literal>env['ENV']['PATH']</literal>). +If <varname>path</varname> is <literal>None</literal> and +the <literal>env['ENV']['PATH']</literal> key does not exist, +the user's current external <envar>PATH</envar> +(<literal>os.environ['PATH']</literal>) is used as fallback. +</para> +<para xmlns="http://www.scons.org/dbxsd/v1.0"> On Windows systems, searches for executable -programs with any of the file extensions -listed in the specified -<varname>pathext</varname>, -the calling environment's PATHEXT -(<literal>env['ENV']['PATHEXT']</literal>) -or the user's current PATHEXT +programs with any of the file extensions listed in the +<varname>pathext</varname> keyword argument, +or if <literal>None</literal> (the default) +the calling environment's <envar>PATHEXT</envar> +(<literal>env['ENV']['PATHEXT']</literal>). +The user's current external <envar>PATHEXT</envar> (<literal>os.environ['PATHEXT']</literal>) -by default. +is used as a fallback if <varname>pathext</varname> is +<literal>None</literal> +and the key <literal>env['ENV']['PATHEXT']</literal> +does not exist. +</para> +<para xmlns="http://www.scons.org/dbxsd/v1.0"> Will not select any path name or names in the specified <varname>reject</varname> list, if any. </para> +<note xmlns="http://www.scons.org/dbxsd/v1.0"> +<para> +If you would prefer to search +the user's current external <envar>PATH</envar> +(<literal>os.environ['PATH']</literal>) +by default, +consider using the function <literal>SCons.Util.WhereIs</literal> instead. +Note that <literal>SCons.Util.WhereIs</literal> +does not expand environment variables automatically +(no implicit <literal>env.subst</literal> for its arguments). +</para> +</note> + </listitem> </varlistentry> </variablelist> diff --git a/doc/generated/functions.mod b/doc/generated/functions.mod index e460aaf..3d49229 100644 --- a/doc/generated/functions.mod +++ b/doc/generated/functions.mod @@ -19,7 +19,6 @@ THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT. <!ENTITY f-Append "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Append</function>"> <!ENTITY f-AppendENVPath "<function xmlns='http://www.scons.org/dbxsd/v1.0'>AppendENVPath</function>"> <!ENTITY f-AppendUnique "<function xmlns='http://www.scons.org/dbxsd/v1.0'>AppendUnique</function>"> -<!ENTITY f-BuildDir "<function xmlns='http://www.scons.org/dbxsd/v1.0'>BuildDir</function>"> <!ENTITY f-Builder "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Builder</function>"> <!ENTITY f-CacheDir "<function xmlns='http://www.scons.org/dbxsd/v1.0'>CacheDir</function>"> <!ENTITY f-Clean "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Clean</function>"> @@ -82,11 +81,9 @@ THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT. <!ENTITY f-SetOption "<function xmlns='http://www.scons.org/dbxsd/v1.0'>SetOption</function>"> <!ENTITY f-SideEffect "<function xmlns='http://www.scons.org/dbxsd/v1.0'>SideEffect</function>"> <!ENTITY f-SourceCode "<function xmlns='http://www.scons.org/dbxsd/v1.0'>SourceCode</function>"> -<!ENTITY f-SourceSignatures "<function xmlns='http://www.scons.org/dbxsd/v1.0'>SourceSignatures</function>"> <!ENTITY f-Split "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Split</function>"> <!ENTITY f-subst "<function xmlns='http://www.scons.org/dbxsd/v1.0'>subst</function>"> <!ENTITY f-Tag "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Tag</function>"> -<!ENTITY f-TargetSignatures "<function xmlns='http://www.scons.org/dbxsd/v1.0'>TargetSignatures</function>"> <!ENTITY f-Tool "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Tool</function>"> <!ENTITY f-Value "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Value</function>"> <!ENTITY f-VariantDir "<function xmlns='http://www.scons.org/dbxsd/v1.0'>VariantDir</function>"> @@ -103,7 +100,6 @@ THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT. <!ENTITY f-env-Append "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Append</function>"> <!ENTITY f-env-AppendENVPath "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.AppendENVPath</function>"> <!ENTITY f-env-AppendUnique "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.AppendUnique</function>"> -<!ENTITY f-env-BuildDir "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.BuildDir</function>"> <!ENTITY f-env-Builder "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Builder</function>"> <!ENTITY f-env-CacheDir "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.CacheDir</function>"> <!ENTITY f-env-Clean "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Clean</function>"> @@ -166,11 +162,9 @@ THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT. <!ENTITY f-env-SetOption "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.SetOption</function>"> <!ENTITY f-env-SideEffect "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.SideEffect</function>"> <!ENTITY f-env-SourceCode "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.SourceCode</function>"> -<!ENTITY f-env-SourceSignatures "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.SourceSignatures</function>"> <!ENTITY f-env-Split "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Split</function>"> <!ENTITY f-env-subst "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.subst</function>"> <!ENTITY f-env-Tag "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Tag</function>"> -<!ENTITY f-env-TargetSignatures "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.TargetSignatures</function>"> <!ENTITY f-env-Tool "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Tool</function>"> <!ENTITY f-env-Value "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.Value</function>"> <!ENTITY f-env-VariantDir "<function xmlns='http://www.scons.org/dbxsd/v1.0'>env.VariantDir</function>"> @@ -197,7 +191,6 @@ THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT. <!ENTITY f-link-Append "<link linkend='f-Append' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Append</function></link>"> <!ENTITY f-link-AppendENVPath "<link linkend='f-AppendENVPath' xmlns='http://www.scons.org/dbxsd/v1.0'><function>AppendENVPath</function></link>"> <!ENTITY f-link-AppendUnique "<link linkend='f-AppendUnique' xmlns='http://www.scons.org/dbxsd/v1.0'><function>AppendUnique</function></link>"> -<!ENTITY f-link-BuildDir "<link linkend='f-BuildDir' xmlns='http://www.scons.org/dbxsd/v1.0'><function>BuildDir</function></link>"> <!ENTITY f-link-Builder "<link linkend='f-Builder' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Builder</function></link>"> <!ENTITY f-link-CacheDir "<link linkend='f-CacheDir' xmlns='http://www.scons.org/dbxsd/v1.0'><function>CacheDir</function></link>"> <!ENTITY f-link-Clean "<link linkend='f-Clean' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Clean</function></link>"> @@ -260,11 +253,9 @@ THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT. <!ENTITY f-link-SetOption "<link linkend='f-SetOption' xmlns='http://www.scons.org/dbxsd/v1.0'><function>SetOption</function></link>"> <!ENTITY f-link-SideEffect "<link linkend='f-SideEffect' xmlns='http://www.scons.org/dbxsd/v1.0'><function>SideEffect</function></link>"> <!ENTITY f-link-SourceCode "<link linkend='f-SourceCode' xmlns='http://www.scons.org/dbxsd/v1.0'><function>SourceCode</function></link>"> -<!ENTITY f-link-SourceSignatures "<link linkend='f-SourceSignatures' xmlns='http://www.scons.org/dbxsd/v1.0'><function>SourceSignatures</function></link>"> <!ENTITY f-link-Split "<link linkend='f-Split' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Split</function></link>"> <!ENTITY f-link-subst "<link linkend='f-subst' xmlns='http://www.scons.org/dbxsd/v1.0'><function>subst</function></link>"> <!ENTITY f-link-Tag "<link linkend='f-Tag' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Tag</function></link>"> -<!ENTITY f-link-TargetSignatures "<link linkend='f-TargetSignatures' xmlns='http://www.scons.org/dbxsd/v1.0'><function>TargetSignatures</function></link>"> <!ENTITY f-link-Tool "<link linkend='f-Tool' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Tool</function></link>"> <!ENTITY f-link-Value "<link linkend='f-Value' xmlns='http://www.scons.org/dbxsd/v1.0'><function>Value</function></link>"> <!ENTITY f-link-VariantDir "<link linkend='f-VariantDir' xmlns='http://www.scons.org/dbxsd/v1.0'><function>VariantDir</function></link>"> @@ -281,7 +272,6 @@ THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT. <!ENTITY f-link-env-Append "<link linkend='f-Append' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Append</function></link>"> <!ENTITY f-link-env-AppendENVPath "<link linkend='f-AppendENVPath' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.AppendENVPath</function></link>"> <!ENTITY f-link-env-AppendUnique "<link linkend='f-AppendUnique' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.AppendUnique</function></link>"> -<!ENTITY f-link-env-BuildDir "<link linkend='f-BuildDir' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.BuildDir</function></link>"> <!ENTITY f-link-env-Builder "<link linkend='f-Builder' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Builder</function></link>"> <!ENTITY f-link-env-CacheDir "<link linkend='f-CacheDir' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.CacheDir</function></link>"> <!ENTITY f-link-env-Clean "<link linkend='f-Clean' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Clean</function></link>"> @@ -344,11 +334,9 @@ THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT. <!ENTITY f-link-env-SetOption "<link linkend='f-SetOption' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.SetOption</function></link>"> <!ENTITY f-link-env-SideEffect "<link linkend='f-SideEffect' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.SideEffect</function></link>"> <!ENTITY f-link-env-SourceCode "<link linkend='f-SourceCode' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.SourceCode</function></link>"> -<!ENTITY f-link-env-SourceSignatures "<link linkend='f-SourceSignatures' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.SourceSignatures</function></link>"> <!ENTITY f-link-env-Split "<link linkend='f-Split' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Split</function></link>"> <!ENTITY f-link-env-subst "<link linkend='f-subst' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.subst</function></link>"> <!ENTITY f-link-env-Tag "<link linkend='f-Tag' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Tag</function></link>"> -<!ENTITY f-link-env-TargetSignatures "<link linkend='f-TargetSignatures' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.TargetSignatures</function></link>"> <!ENTITY f-link-env-Tool "<link linkend='f-Tool' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Tool</function></link>"> <!ENTITY f-link-env-Value "<link linkend='f-Value' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.Value</function></link>"> <!ENTITY f-link-env-VariantDir "<link linkend='f-VariantDir' xmlns='http://www.scons.org/dbxsd/v1.0'><function>env.VariantDir</function></link>"> diff --git a/doc/generated/tools.gen b/doc/generated/tools.gen index be717e3..0d30f6f 100644 --- a/doc/generated/tools.gen +++ b/doc/generated/tools.gen @@ -91,7 +91,7 @@ Sets construction variables for the bcc32 compiler. <term>cc</term> <listitem> <para xmlns="http://www.scons.org/dbxsd/v1.0"> -Sets construction variables for generic POSIX C copmilers. +Sets construction variables for generic POSIX C compilers. </para> <para>Sets: &cv-link-CC;, &cv-link-CCCOM;, &cv-link-CCFLAGS;, &cv-link-CFILESUFFIX;, &cv-link-CFLAGS;, &cv-link-CPPDEFPREFIX;, &cv-link-CPPDEFSUFFIX;, &cv-link-FRAMEWORKPATH;, &cv-link-FRAMEWORKS;, &cv-link-INCPREFIX;, &cv-link-INCSUFFIX;, &cv-link-SHCC;, &cv-link-SHCCCOM;, &cv-link-SHCCFLAGS;, &cv-link-SHCFLAGS;, &cv-link-SHOBJSUFFIX;.</para><para>Uses: &cv-link-PLATFORM;.</para></listitem> </varlistentry> @@ -139,9 +139,91 @@ Set construction variables for cygwin linker/loader. <term>default</term> <listitem> <para xmlns="http://www.scons.org/dbxsd/v1.0"> -Sets variables by calling a default list of Tool modules -for the platform on which SCons is running. +Sets <literal xmlns="http://www.scons.org/dbxsd/v1.0">construction variables</literal> for a default list of Tool modules. +Use <emphasis role="bold">default</emphasis> +in the tools list to retain the original defaults, +since the <parameter>tools</parameter> parameter +is treated as a literal statement of the tools +to be made available in that <literal xmlns="http://www.scons.org/dbxsd/v1.0">construction environment</literal>, not an addition. </para> + +<para xmlns="http://www.scons.org/dbxsd/v1.0"> +The list of tools selected by default is not static, +but is dependent both on +the platform and on the software installed on the platform. +Some tools will not initialize if an underlying command is +not found, and some tools are selected from a list of choices +on a first-found basis. The finished tool list can be +examined by inspecting the <envar>TOOLS</envar> <literal xmlns="http://www.scons.org/dbxsd/v1.0">construction variable</literal> +in the <literal xmlns="http://www.scons.org/dbxsd/v1.0">construction environment</literal>. +</para> + +<para xmlns="http://www.scons.org/dbxsd/v1.0"> +On all platforms, all tools from the following list +are selected whose respective conditions are met: +filesystem, wix, lex, yacc, rpcgen, swig, +jar, javac, javah, rmic, dvipdf, dvips, gs, +tex, latex, pdflatex, pdftex, tar, zip, textfile. +</para> + +<para xmlns="http://www.scons.org/dbxsd/v1.0"> +On Linux systems, the default tools list selects +(first-found): a C compiler from +gcc, intelc, icc, cc; +a C++ compiler from +g++, intelc, icc, cxx; +an assembler from +gas, nasm, masm; +a linker from +gnulink, ilink; +a Fortran compiler from +gfortran, g77, ifort, ifl, f95, f90, f77; +and a static archiver 'ar'. +It also selects all found from the list +m4, rpm. +</para> + +<para xmlns="http://www.scons.org/dbxsd/v1.0"> +On Windows systems, the default tools list selects +(first-found): a C compiler from +msvc, mingw, gcc, intelc, icl, icc, cc, bcc32; +a C++ compiler from +msvc, intelc, icc, g++, cxx, bcc32; +an assembler from +masm, nasm, gas, 386asm; +a linker from +mslink, gnulink, ilink, linkloc, ilink32; +a Fortran compiler from +gfortran, g77, ifl, cvf, f95, f90, fortran; +and a static archiver from +mslib, ar, tlib; +It also selects all found from the list +msvs, midl. +</para> + +<para xmlns="http://www.scons.org/dbxsd/v1.0"> +On MacOS systems, the default tools list selects +(first-found): a C compiler from +gcc, cc; +a C++ compiler from +g++, cxx; +an assembler 'as'; +a linker from +applelink, gnulink; +a Fortran compiler from +gfortran, f95, f90, g77; +and a static archiver ar. +It also selects all found from the list +m4, rpm. +</para> + +<para xmlns="http://www.scons.org/dbxsd/v1.0"> +Default lists for other platforms can be found by +examining the <filename xmlns="http://www.scons.org/dbxsd/v1.0">scons</filename> +source code (see +<filename>SCons/Tool/__init__.py</filename>). +</para> + </listitem> </varlistentry> <varlistentry id="t-dmd"> @@ -627,7 +709,9 @@ Sets construction variables for the <application xmlns="http://www.scons.org/dbx <term>link</term> <listitem> <para xmlns="http://www.scons.org/dbxsd/v1.0"> -Sets construction variables for generic POSIX linkers. +Sets construction variables for generic POSIX linkers. This is +a "smart" linker tool which selects a compiler to complete the linking +based on the types of source files. </para> <para>Sets: &cv-link-LDMODULE;, &cv-link-LDMODULECOM;, &cv-link-LDMODULEFLAGS;, &cv-link-LDMODULENOVERSIONSYMLINKS;, &cv-link-LDMODULEPREFIX;, &cv-link-LDMODULESUFFIX;, &cv-link-LDMODULEVERSION;, &cv-link-LDMODULEVERSIONFLAGS;, &cv-link-LIBDIRPREFIX;, &cv-link-LIBDIRSUFFIX;, &cv-link-LIBLINKPREFIX;, &cv-link-LIBLINKSUFFIX;, &cv-link-LINK;, &cv-link-LINKCOM;, &cv-link-LINKFLAGS;, &cv-link-SHLIBSUFFIX;, &cv-link-SHLINK;, &cv-link-SHLINKCOM;, &cv-link-SHLINKFLAGS;, &cv-link-__LDMODULEVERSIONFLAGS;, &cv-link-__SHLIBVERSIONFLAGS;.</para><para>Uses: &cv-link-LDMODULECOMSTR;, &cv-link-LINKCOMSTR;, &cv-link-SHLINKCOMSTR;.</para></listitem> </varlistentry> @@ -779,19 +863,19 @@ Sets construction variables for the </para> <para>Sets: &cv-link-AS;, &cv-link-ASCOM;, &cv-link-ASFLAGS;, &cv-link-ASPPCOM;, &cv-link-ASPPFLAGS;.</para><para>Uses: &cv-link-ASCOMSTR;, &cv-link-ASPPCOMSTR;.</para></listitem> </varlistentry> - <varlistentry id="t-packaging"> - <term>packaging</term> + <varlistentry id="t-Packaging"> + <term>Packaging</term> <listitem> <para xmlns="http://www.scons.org/dbxsd/v1.0"> -A framework for building binary and source packages. +Sets construction variables for the <function xmlns="http://www.scons.org/dbxsd/v1.0">Package</function> Builder. </para> </listitem> </varlistentry> - <varlistentry id="t-Packaging"> - <term>Packaging</term> + <varlistentry id="t-packaging"> + <term>packaging</term> <listitem> <para xmlns="http://www.scons.org/dbxsd/v1.0"> -Sets construction variables for the <function xmlns="http://www.scons.org/dbxsd/v1.0">Package</function> Builder. +A framework for building binary and source packages. </para> </listitem> </varlistentry> diff --git a/doc/generated/tools.mod b/doc/generated/tools.mod index f9bc1d7..1209d74 100644 --- a/doc/generated/tools.mod +++ b/doc/generated/tools.mod @@ -78,8 +78,8 @@ THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT. <!ENTITY t-mwcc "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>mwcc</literal>"> <!ENTITY t-mwld "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>mwld</literal>"> <!ENTITY t-nasm "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>nasm</literal>"> -<!ENTITY t-packaging "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>packaging</literal>"> <!ENTITY t-Packaging "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>Packaging</literal>"> +<!ENTITY t-packaging "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>packaging</literal>"> <!ENTITY t-pdf "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>pdf</literal>"> <!ENTITY t-pdflatex "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>pdflatex</literal>"> <!ENTITY t-pdftex "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>pdftex</literal>"> @@ -186,8 +186,8 @@ THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT. <!ENTITY t-link-mwcc "<link linkend='t-mwcc' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>mwcc</literal></link>"> <!ENTITY t-link-mwld "<link linkend='t-mwld' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>mwld</literal></link>"> <!ENTITY t-link-nasm "<link linkend='t-nasm' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>nasm</literal></link>"> -<!ENTITY t-link-packaging "<link linkend='t-packaging' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>packaging</literal></link>"> <!ENTITY t-link-Packaging "<link linkend='t-Packaging' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>Packaging</literal></link>"> +<!ENTITY t-link-packaging "<link linkend='t-packaging' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>packaging</literal></link>"> <!ENTITY t-link-pdf "<link linkend='t-pdf' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>pdf</literal></link>"> <!ENTITY t-link-pdflatex "<link linkend='t-pdflatex' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>pdflatex</literal></link>"> <!ENTITY t-link-pdftex "<link linkend='t-pdftex' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>pdftex</literal></link>"> diff --git a/doc/generated/variables.gen b/doc/generated/variables.gen index 28dfc59..9050832 100644 --- a/doc/generated/variables.gen +++ b/doc/generated/variables.gen @@ -488,7 +488,8 @@ after the SCons template for the file has been written. <para xmlns="http://www.scons.org/dbxsd/v1.0"> A reserved variable name that may not be set or used in a construction environment. -(See "Variable Substitution," below.) +(See the manpage section "Variable Substitution" +for more information). </para> </listitem> </varlistentry> @@ -498,7 +499,8 @@ that may not be set or used in a construction environment. <para xmlns="http://www.scons.org/dbxsd/v1.0"> A reserved variable name that may not be set or used in a construction environment. -(See "Variable Substitution," below.) +(See the manpage section "Variable Substitution" +for more information). </para> </listitem> </varlistentry> @@ -874,35 +876,15 @@ depending on the specific C++ compiler being used. <para xmlns="http://www.scons.org/dbxsd/v1.0"> The D compiler to use. </para> - -<para xmlns="http://www.scons.org/dbxsd/v1.0"> -The D compiler to use. -</para> - -<para xmlns="http://www.scons.org/dbxsd/v1.0"> -The D compiler to use. -</para> </listitem> </varlistentry> <varlistentry id="cv-DCOM"> <term>DCOM</term> <listitem> <para xmlns="http://www.scons.org/dbxsd/v1.0"> - The command line used to compile a D file to an object file. - Any options specified in the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-DFLAGS"><envar>$DFLAGS</envar></link> construction variable - is included on this command line. -</para> - -<para xmlns="http://www.scons.org/dbxsd/v1.0"> - The command line used to compile a D file to an object file. - Any options specified in the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-DFLAGS"><envar>$DFLAGS</envar></link> construction variable - is included on this command line. -</para> - -<para xmlns="http://www.scons.org/dbxsd/v1.0"> - The command line used to compile a D file to an object file. - Any options specified in the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-DFLAGS"><envar>$DFLAGS</envar></link> 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 <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-DFLAGS"><envar>$DFLAGS</envar></link> construction variable +is included on this command line. </para> </listitem> </varlistentry> @@ -910,49 +892,25 @@ The D compiler to use. <term>DDEBUG</term> <listitem> <para xmlns="http://www.scons.org/dbxsd/v1.0"> - List of debug tags to enable when compiling. -</para> - -<para xmlns="http://www.scons.org/dbxsd/v1.0"> - List of debug tags to enable when compiling. -</para> - -<para xmlns="http://www.scons.org/dbxsd/v1.0"> - List of debug tags to enable when compiling. +List of debug tags to enable when compiling. </para> </listitem> </varlistentry> <varlistentry id="cv-DDEBUGPREFIX"> <term>DDEBUGPREFIX</term> <listitem> - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DDEBUGPREFIX. - </para> - - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DDEBUGPREFIX. - </para> - - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DDEBUGPREFIX. - </para> - </listitem> +<para xmlns="http://www.scons.org/dbxsd/v1.0"> +DDEBUGPREFIX. +</para> +</listitem> </varlistentry> <varlistentry id="cv-DDEBUGSUFFIX"> <term>DDEBUGSUFFIX</term> <listitem> - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DDEBUGSUFFIX. - </para> - - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DDEBUGSUFFIX. - </para> - - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DDEBUGSUFFIX. - </para> - </listitem> +<para xmlns="http://www.scons.org/dbxsd/v1.0"> +DDEBUGSUFFIX. +</para> +</listitem> </varlistentry> <varlistentry id="cv-DESCRIPTION"> <term>DESCRIPTION</term> @@ -980,98 +938,50 @@ section of an RPM <varlistentry id="cv-DFILESUFFIX"> <term>DFILESUFFIX</term> <listitem> - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DFILESUFFIX. - </para> - - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DFILESUFFIX. - </para> - - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DFILESUFFIX. - </para> - </listitem> +<para xmlns="http://www.scons.org/dbxsd/v1.0"> +DFILESUFFIX. +</para> +</listitem> </varlistentry> <varlistentry id="cv-DFLAGPREFIX"> <term>DFLAGPREFIX</term> <listitem> - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DFLAGPREFIX. - </para> - - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DFLAGPREFIX. - </para> - - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DFLAGPREFIX. - </para> - </listitem> +<para xmlns="http://www.scons.org/dbxsd/v1.0"> +DFLAGPREFIX. +</para> +</listitem> </varlistentry> <varlistentry id="cv-DFLAGS"> <term>DFLAGS</term> <listitem> <para xmlns="http://www.scons.org/dbxsd/v1.0"> - General options that are passed to the D compiler. -</para> - -<para xmlns="http://www.scons.org/dbxsd/v1.0"> - General options that are passed to the D compiler. -</para> - -<para xmlns="http://www.scons.org/dbxsd/v1.0"> - General options that are passed to the D compiler. +General options that are passed to the D compiler. </para> </listitem> </varlistentry> <varlistentry id="cv-DFLAGSUFFIX"> <term>DFLAGSUFFIX</term> <listitem> - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DFLAGSUFFIX. - </para> - - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DFLAGSUFFIX. - </para> - - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DFLAGSUFFIX. - </para> - </listitem> +<para xmlns="http://www.scons.org/dbxsd/v1.0"> +DFLAGSUFFIX. +</para> +</listitem> </varlistentry> <varlistentry id="cv-DINCPREFIX"> <term>DINCPREFIX</term> <listitem> - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DINCPREFIX. - </para> - - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DINCPREFIX. - </para> - - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DINCPREFIX. - </para> - </listitem> +<para xmlns="http://www.scons.org/dbxsd/v1.0"> +DINCPREFIX. +</para> +</listitem> </varlistentry> <varlistentry id="cv-DINCSUFFIX"> <term>DINCSUFFIX</term> <listitem> - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DLIBFLAGSUFFIX. - </para> - - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DLIBFLAGSUFFIX. - </para> - - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DLIBFLAGSUFFIX. - </para> - </listitem> +<para xmlns="http://www.scons.org/dbxsd/v1.0"> +DLIBFLAGSUFFIX. +</para> +</listitem> </varlistentry> <varlistentry id="cv-Dir"> <term>Dir</term> @@ -1100,15 +1010,7 @@ into a list of Dir instances relative to the target being built. <term>DLIB</term> <listitem> <para xmlns="http://www.scons.org/dbxsd/v1.0"> - Name of the lib tool to use for D codes. -</para> - -<para xmlns="http://www.scons.org/dbxsd/v1.0"> - Name of the lib tool to use for D codes. -</para> - -<para xmlns="http://www.scons.org/dbxsd/v1.0"> - Name of the lib tool to use for D codes. +Name of the lib tool to use for D codes. </para> </listitem> </varlistentry> @@ -1116,127 +1018,63 @@ into a list of Dir instances relative to the target being built. <term>DLIBCOM</term> <listitem> <para xmlns="http://www.scons.org/dbxsd/v1.0"> - The command line to use when creating libraries. -</para> - -<para xmlns="http://www.scons.org/dbxsd/v1.0"> - The command line to use when creating libraries. -</para> - -<para xmlns="http://www.scons.org/dbxsd/v1.0"> - The command line to use when creating libraries. +The command line to use when creating libraries. </para> </listitem> </varlistentry> <varlistentry id="cv-DLIBDIRPREFIX"> <term>DLIBDIRPREFIX</term> <listitem> - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DLIBLINKPREFIX. - </para> - - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DLIBLINKPREFIX. - </para> - - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DLIBLINKPREFIX. - </para> - </listitem> +<para xmlns="http://www.scons.org/dbxsd/v1.0"> +DLIBLINKPREFIX. +</para> +</listitem> </varlistentry> <varlistentry id="cv-DLIBDIRSUFFIX"> <term>DLIBDIRSUFFIX</term> <listitem> - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DLIBLINKSUFFIX. - </para> - - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DLIBLINKSUFFIX. - </para> - - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DLIBLINKSUFFIX. - </para> - </listitem> +<para xmlns="http://www.scons.org/dbxsd/v1.0"> +DLIBLINKSUFFIX. +</para> +</listitem> </varlistentry> <varlistentry id="cv-DLIBFLAGPREFIX"> <term>DLIBFLAGPREFIX</term> <listitem> - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DLIBFLAGPREFIX. - </para> - - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DLIBFLAGPREFIX. - </para> - - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DLIBFLAGPREFIX. - </para> - </listitem> +<para xmlns="http://www.scons.org/dbxsd/v1.0"> +DLIBFLAGPREFIX. +</para> +</listitem> </varlistentry> <varlistentry id="cv-DLIBFLAGSUFFIX"> <term>DLIBFLAGSUFFIX</term> <listitem> - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DLIBFLAGSUFFIX. - </para> - - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DLIBFLAGSUFFIX. - </para> - - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DLIBFLAGSUFFIX. - </para> - </listitem> +<para xmlns="http://www.scons.org/dbxsd/v1.0"> +DLIBFLAGSUFFIX. +</para> +</listitem> </varlistentry> <varlistentry id="cv-DLIBLINKPREFIX"> <term>DLIBLINKPREFIX</term> <listitem> - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DLIBLINKPREFIX. - </para> - - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DLIBLINKPREFIX. - </para> - - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DLIBLINKPREFIX. - </para> - </listitem> +<para xmlns="http://www.scons.org/dbxsd/v1.0"> +DLIBLINKPREFIX. +</para> +</listitem> </varlistentry> <varlistentry id="cv-DLIBLINKSUFFIX"> <term>DLIBLINKSUFFIX</term> <listitem> - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DLIBLINKSUFFIX. - </para> - - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DLIBLINKSUFFIX. - </para> - - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DLIBLINKSUFFIX. - </para> - </listitem> +<para xmlns="http://www.scons.org/dbxsd/v1.0"> +DLIBLINKSUFFIX. +</para> +</listitem> </varlistentry> <varlistentry id="cv-DLINK"> <term>DLINK</term> <listitem> <para xmlns="http://www.scons.org/dbxsd/v1.0"> - Name of the linker to use for linking systems including D sources. -</para> - -<para xmlns="http://www.scons.org/dbxsd/v1.0"> - Name of the linker to use for linking systems including D sources. -</para> - -<para xmlns="http://www.scons.org/dbxsd/v1.0"> - Name of the linker to use for linking systems including D sources. +Name of the linker to use for linking systems including D sources. </para> </listitem> </varlistentry> @@ -1244,33 +1082,17 @@ into a list of Dir instances relative to the target being built. <term>DLINKCOM</term> <listitem> <para xmlns="http://www.scons.org/dbxsd/v1.0"> - The command line to use when linking systems including D sources. -</para> - -<para xmlns="http://www.scons.org/dbxsd/v1.0"> - The command line to use when linking systems including D sources. -</para> - -<para xmlns="http://www.scons.org/dbxsd/v1.0"> - The command line to use when linking systems including D sources. +The command line to use when linking systems including D sources. </para> </listitem> </varlistentry> <varlistentry id="cv-DLINKFLAGPREFIX"> <term>DLINKFLAGPREFIX</term> <listitem> - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DLINKFLAGPREFIX. - </para> - - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DLINKFLAGPREFIX. - </para> - - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DLINKFLAGPREFIX. - </para> - </listitem> +<para xmlns="http://www.scons.org/dbxsd/v1.0"> +DLINKFLAGPREFIX. +</para> +</listitem> </varlistentry> <varlistentry id="cv-DLINKFLAGS"> <term>DLINKFLAGS</term> @@ -1278,31 +1100,15 @@ into a list of Dir instances relative to the target being built. <para xmlns="http://www.scons.org/dbxsd/v1.0"> List of linker flags. </para> - -<para xmlns="http://www.scons.org/dbxsd/v1.0"> -List of linker flags. -</para> - -<para xmlns="http://www.scons.org/dbxsd/v1.0"> -List of linker flags. -</para> </listitem> </varlistentry> <varlistentry id="cv-DLINKFLAGSUFFIX"> <term>DLINKFLAGSUFFIX</term> <listitem> - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DLINKFLAGSUFFIX. - </para> - - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DLINKFLAGSUFFIX. - </para> - - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DLINKFLAGSUFFIX. - </para> - </listitem> +<para xmlns="http://www.scons.org/dbxsd/v1.0"> +DLINKFLAGSUFFIX. +</para> +</listitem> </varlistentry> <varlistentry id="cv-DOCBOOK_DEFAULT_XSL_EPUB"> <term>DOCBOOK_DEFAULT_XSL_EPUB</term> @@ -1507,39 +1313,31 @@ for <literal>saxon</literal> and <literal>saxon-xslt</literal>, respectively. <para xmlns="http://www.scons.org/dbxsd/v1.0"> List of paths to search for import modules. </para> - -<para xmlns="http://www.scons.org/dbxsd/v1.0"> - List of paths to search for import modules. -</para> - -<para xmlns="http://www.scons.org/dbxsd/v1.0"> - List of paths to search for import modules. -</para> </listitem> </varlistentry> <varlistentry id="cv-DRPATHPREFIX"> <term>DRPATHPREFIX</term> <listitem> - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DRPATHPREFIX. - </para> - </listitem> +<para xmlns="http://www.scons.org/dbxsd/v1.0"> +DRPATHPREFIX. +</para> +</listitem> </varlistentry> <varlistentry id="cv-DRPATHSUFFIX"> <term>DRPATHSUFFIX</term> <listitem> - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DRPATHSUFFIX. - </para> - </listitem> +<para xmlns="http://www.scons.org/dbxsd/v1.0"> +DRPATHSUFFIX. +</para> +</listitem> </varlistentry> <varlistentry id="cv-DShLibSonameGenerator"> <term>DShLibSonameGenerator</term> <listitem> - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DShLibSonameGenerator. - </para> - </listitem> +<para xmlns="http://www.scons.org/dbxsd/v1.0"> +DShLibSonameGenerator. +</para> +</listitem> </varlistentry> <varlistentry id="cv-DSUFFIXES"> <term>DSUFFIXES</term> @@ -1558,50 +1356,26 @@ The default list is: <varlistentry id="cv-DVERPREFIX"> <term>DVERPREFIX</term> <listitem> - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DVERPREFIX. - </para> - - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DVERPREFIX. - </para> - - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DVERPREFIX. - </para> - </listitem> +<para xmlns="http://www.scons.org/dbxsd/v1.0"> +DVERPREFIX. +</para> +</listitem> </varlistentry> <varlistentry id="cv-DVERSIONS"> <term>DVERSIONS</term> <listitem> <para xmlns="http://www.scons.org/dbxsd/v1.0"> - List of version tags to enable when compiling. -</para> - -<para xmlns="http://www.scons.org/dbxsd/v1.0"> - List of version tags to enable when compiling. -</para> - -<para xmlns="http://www.scons.org/dbxsd/v1.0"> - List of version tags to enable when compiling. +List of version tags to enable when compiling. </para> </listitem> </varlistentry> <varlistentry id="cv-DVERSUFFIX"> <term>DVERSUFFIX</term> <listitem> - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DVERSUFFIX. - </para> - - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DVERSUFFIX. - </para> - - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - DVERSUFFIX. - </para> - </listitem> +<para xmlns="http://www.scons.org/dbxsd/v1.0"> +DVERSUFFIX. +</para> +</listitem> </varlistentry> <varlistentry id="cv-DVIPDF"> <term>DVIPDF</term> @@ -3128,7 +2902,7 @@ to <literal>'.dll'</literal>. Used to override <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHLIBVERSION"><envar>$SHLIBVERSION</envar></link>/<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-LDMODULEVERSION"><envar>$LDMODULEVERSION</envar></link> when generating versioned import library for a shared library/loadable module. If undefined, the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHLIBVERSION"><envar>$SHLIBVERSION</envar></link>/<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-LDMODULEVERSION"><envar>$LDMODULEVERSION</envar></link> is used to -determine the version of versioned import library. +determine the version of versioned import library. </para> </listitem> </varlistentry> @@ -3674,6 +3448,17 @@ If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend=" </para> </listitem> </varlistentry> + <varlistentry id="cv-LDMODULEEMITTER"> + <term>LDMODULEEMITTER</term> + <listitem> +<para xmlns="http://www.scons.org/dbxsd/v1.0"> +Contains the emitter specification for the +<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-LoadableModule"><function>LoadableModule</function></link> builder. +The manpage section "Builder Objects" contains +general information on specifying emitters. +</para> +</listitem> + </varlistentry> <varlistentry id="cv-LDMODULEFLAGS"> <term>LDMODULEFLAGS</term> <listitem> @@ -3846,7 +3631,10 @@ when the <envar xmlns="http://www.scons.org/dbxsd/v1.0">$_LIBDIRFLAGS</envar> va <term>LIBEMITTER</term> <listitem> <para xmlns="http://www.scons.org/dbxsd/v1.0"> -TODO +Contains the emitter specification for the +<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-StaticLibrary"><function>StaticLibrary</function></link> builder. +The manpage section "Builder Objects" contains +general information on specifying emitters. </para> </listitem> </varlistentry> @@ -4239,7 +4027,7 @@ The command line used to pass files to the Microsoft IDL compiler. <listitem> <para xmlns="http://www.scons.org/dbxsd/v1.0"> The string displayed when -the Microsoft IDL copmiler is called. +the Microsoft IDL compiler is called. If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-MIDLCOM"><envar>$MIDLCOM</envar></link> (the command line) is displayed. </para> </listitem> @@ -5336,7 +5124,10 @@ for example. <term>PROGEMITTER</term> <listitem> <para xmlns="http://www.scons.org/dbxsd/v1.0"> -TODO +Contains the emitter specification for the +<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-Program"><function>Program</function></link> builder. +The manpage section "Builder Objects" contains +general information on specifying emitters. </para> </listitem> </varlistentry> @@ -6031,9 +5822,9 @@ 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. +See the manpage sections "Builder Objects" +and "Scanner Objects" +for more information. </para> </listitem> </varlistentry> @@ -6149,18 +5940,8 @@ to generate shared-library objects. <term>SHDC</term> <listitem> <para xmlns="http://www.scons.org/dbxsd/v1.0"> - The name of the compiler to use when compiling D source - destined to be in a shared objects. -</para> - -<para xmlns="http://www.scons.org/dbxsd/v1.0"> - The name of the compiler to use when compiling D source - destined to be in a shared objects. -</para> - -<para xmlns="http://www.scons.org/dbxsd/v1.0"> - 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. </para> </listitem> </varlistentry> @@ -6168,50 +5949,32 @@ to generate shared-library objects. <term>SHDCOM</term> <listitem> <para xmlns="http://www.scons.org/dbxsd/v1.0"> - The command line to use when compiling code to be part of shared objects. -</para> - -<para xmlns="http://www.scons.org/dbxsd/v1.0"> - The command line to use when compiling code to be part of shared objects. -</para> - -<para xmlns="http://www.scons.org/dbxsd/v1.0"> - 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. </para> </listitem> </varlistentry> <varlistentry id="cv-SHDLIBVERSION"> <term>SHDLIBVERSION</term> <listitem> - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - SHDLIBVERSION. - </para> - </listitem> +<para xmlns="http://www.scons.org/dbxsd/v1.0"> +SHDLIBVERSION. +</para> +</listitem> </varlistentry> <varlistentry id="cv-SHDLIBVERSIONFLAGS"> <term>SHDLIBVERSIONFLAGS</term> <listitem> - <para xmlns="http://www.scons.org/dbxsd/v1.0"> - SHDLIBVERSIONFLAGS. - </para> - </listitem> +<para xmlns="http://www.scons.org/dbxsd/v1.0"> +SHDLIBVERSIONFLAGS. +</para> +</listitem> </varlistentry> <varlistentry id="cv-SHDLINK"> <term>SHDLINK</term> <listitem> <para xmlns="http://www.scons.org/dbxsd/v1.0"> - The linker to use when creating shared objects for code bases - include D sources. -</para> - -<para xmlns="http://www.scons.org/dbxsd/v1.0"> - The linker to use when creating shared objects for code bases - include D sources. -</para> - -<para xmlns="http://www.scons.org/dbxsd/v1.0"> - 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. </para> </listitem> </varlistentry> @@ -6219,15 +5982,7 @@ to generate shared-library objects. <term>SHDLINKCOM</term> <listitem> <para xmlns="http://www.scons.org/dbxsd/v1.0"> - The command line to use when generating shared objects. -</para> - -<para xmlns="http://www.scons.org/dbxsd/v1.0"> - The command line to use when generating shared objects. -</para> - -<para xmlns="http://www.scons.org/dbxsd/v1.0"> - The command line to use when generating shared objects. +The command line to use when generating shared objects. </para> </listitem> </varlistentry> @@ -6235,15 +5990,7 @@ to generate shared-library objects. <term>SHDLINKFLAGS</term> <listitem> <para xmlns="http://www.scons.org/dbxsd/v1.0"> - The list of flags to use when generating a shared object. -</para> - -<para xmlns="http://www.scons.org/dbxsd/v1.0"> - The list of flags to use when generating a shared object. -</para> - -<para xmlns="http://www.scons.org/dbxsd/v1.0"> - The list of flags to use when generating a shared object. +The list of flags to use when generating a shared object. </para> </listitem> </varlistentry> @@ -6737,7 +6484,10 @@ If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend=" <term>SHLIBEMITTER</term> <listitem> <para xmlns="http://www.scons.org/dbxsd/v1.0"> -TODO +Contains the emitter specification for the +<link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-SharedLibrary"><function>SharedLibrary</function></link> builder. +The manpage section "Builder Objects" contains +general information on specifying emitters. </para> </listitem> </varlistentry> @@ -6781,7 +6531,7 @@ The suffix used for shared library file names. <listitem> <para xmlns="http://www.scons.org/dbxsd/v1.0"> When this construction variable is defined, a versioned shared library -is created by <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-SharedLibrary"><function>SharedLibrary</function></link> builder. This activates the +is created by the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="b-SharedLibrary"><function>SharedLibrary</function></link> builder. This activates the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-_SHLIBVERSIONFLAGS"><envar>$_SHLIBVERSIONFLAGS</envar></link> and thus modifies the <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHLINKCOM"><envar>$SHLINKCOM</envar></link> as required, adds the version number to the library name, and creates the symlinks that are needed. <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-SHLIBVERSION"><envar>$SHLIBVERSION</envar></link> versions should exist as alpha-numeric, @@ -6901,7 +6651,8 @@ The variable is used, for example, by <link xmlns="http://www.scons.org/dbxsd/v1 <para xmlns="http://www.scons.org/dbxsd/v1.0"> A reserved variable name that may not be set or used in a construction environment. -(See "Variable Substitution," below.) +(See the manpage section "Variable Substitution" +for more information). </para> </listitem> </varlistentry> @@ -6924,7 +6675,8 @@ field in the controlling information for Ipkg and RPM packages. <para xmlns="http://www.scons.org/dbxsd/v1.0"> A reserved variable name that may not be set or used in a construction environment. -(See "Variable Substitution," below.) +(See the manpage section "Variable Substitution" +for more information). </para> </listitem> </varlistentry> @@ -7268,7 +7020,8 @@ General options passed to the tar archiver. <para xmlns="http://www.scons.org/dbxsd/v1.0"> A reserved variable name that may not be set or used in a construction environment. -(See "Variable Substitution," below.) +(See the manpage section "Variable Substitution" +for more information). </para> </listitem> </varlistentry> @@ -7332,7 +7085,8 @@ For example, if you want to compile 64-bit binaries, you would set <para xmlns="http://www.scons.org/dbxsd/v1.0"> A reserved variable name that may not be set or used in a construction environment. -(See "Variable Substitution," below.) +(See the manpage section "Variable Substitution" +for more information). </para> </listitem> </varlistentry> @@ -7465,7 +7219,8 @@ that are part of this construction environment. <para xmlns="http://www.scons.org/dbxsd/v1.0"> A reserved variable name that may not be set or used in a construction environment. -(See "Variable Substitution," below.) +(See the manpage section "Variable Substitution" +for more information). </para> </listitem> </varlistentry> @@ -7475,7 +7230,8 @@ that may not be set or used in a construction environment. <para xmlns="http://www.scons.org/dbxsd/v1.0"> A reserved variable name that may not be set or used in a construction environment. -(See "Variable Substitution," below.) +(See the manpage section "Variable Substitution" +for more information). </para> </listitem> </varlistentry> diff --git a/doc/generated/variables.mod b/doc/generated/variables.mod index 47576f4..ba92aa9 100644 --- a/doc/generated/variables.mod +++ b/doc/generated/variables.mod @@ -251,6 +251,7 @@ THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT. <!ENTITY cv-LDMODULE "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$LDMODULE</envar>"> <!ENTITY cv-LDMODULECOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$LDMODULECOM</envar>"> <!ENTITY cv-LDMODULECOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$LDMODULECOMSTR</envar>"> +<!ENTITY cv-LDMODULEEMITTER "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$LDMODULEEMITTER</envar>"> <!ENTITY cv-LDMODULEFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$LDMODULEFLAGS</envar>"> <!ENTITY cv-LDMODULENOVERSIONSYMLINKS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$LDMODULENOVERSIONSYMLINKS</envar>"> <!ENTITY cv-LDMODULEPREFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$LDMODULEPREFIX</envar>"> @@ -891,6 +892,7 @@ THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT. <!ENTITY cv-link-LDMODULE "<link linkend='cv-LDMODULE' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$LDMODULE</envar></link>"> <!ENTITY cv-link-LDMODULECOM "<link linkend='cv-LDMODULECOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$LDMODULECOM</envar></link>"> <!ENTITY cv-link-LDMODULECOMSTR "<link linkend='cv-LDMODULECOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$LDMODULECOMSTR</envar></link>"> +<!ENTITY cv-link-LDMODULEEMITTER "<link linkend='cv-LDMODULEEMITTER' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$LDMODULEEMITTER</envar></link>"> <!ENTITY cv-link-LDMODULEFLAGS "<link linkend='cv-LDMODULEFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$LDMODULEFLAGS</envar></link>"> <!ENTITY cv-link-LDMODULENOVERSIONSYMLINKS "<link linkend='cv-LDMODULENOVERSIONSYMLINKS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$LDMODULENOVERSIONSYMLINKS</envar></link>"> <!ENTITY cv-link-LDMODULEPREFIX "<link linkend='cv-LDMODULEPREFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$LDMODULEPREFIX</envar></link>"> diff --git a/doc/man/scons-time.xml b/doc/man/scons-time.xml index 7251c9f..b973dba 100644 --- a/doc/man/scons-time.xml +++ b/doc/man/scons-time.xml @@ -32,8 +32,8 @@ <refmeta> <refentrytitle>SCONS-TIME</refentrytitle> <manvolnum>1</manvolnum> -<refmiscinfo class='source'>SCons 3.1.0</refmiscinfo> -<refmiscinfo class='manual'>SCons 3.1.0</refmiscinfo> +<refmiscinfo class='source'>SCons 3.1.2</refmiscinfo> +<refmiscinfo class='manual'>SCons 3.1.2</refmiscinfo> </refmeta> <refnamediv id='name'> <refname>scons-time</refname> @@ -53,7 +53,6 @@ <refsect1 id='generating_timing_information'><title>Generating Timing Information</title> <para><emphasis role="bold">scons-time run</emphasis> [<option>-hnqv</option>] -[<option>--aegis=</option><replaceable>PROJECT</replaceable>] [<option>-f </option><emphasis>FILE</emphasis>] [<option>--number=</option><replaceable>NUMBER</replaceable>] [<option>--outdir=</option><replaceable>OUTDIR</replaceable>] @@ -644,7 +643,6 @@ files.</para> <refsect2 id='the_run_subcommand'><title>The run Subcommand</title> <para><emphasis role="bold">scons-time run</emphasis> [<option>-hnqv</option>] -[<option>--aegis=</option><replaceable>PROJECT</replaceable>] [<option>-f </option><emphasis>FILE</emphasis>] [<option>--number=</option><replaceable>NUMBER</replaceable>] [<option>--outdir=</option><replaceable>OUTDIR</replaceable>] @@ -728,31 +726,6 @@ this should be an up-to-date, "do nothing" rebuild.</para> subcommand supports the following options:</para> <variablelist> <varlistentry> - <term>--aegis=PROJECT</term> - <listitem> -<para>Specifies the Aegis -<emphasis>PROJECT</emphasis> -from which the -version(s) of -<emphasis role="bold">scons</emphasis> -being timed will be extracted. -When -<option>--aegis</option> -is specified, the -<option>--number=</option><replaceable>NUMBER</replaceable> -option specifies delta numbers -that will be tested. -Output from each invocation run will be placed in file -names that match the Aegis delta numbers. -If the -<option>--number=</option> -option is not specified, -then the default behavior is to time the -tip of the specified -<emphasis>PROJECT</emphasis>.</para> - </listitem> - </varlistentry> - <varlistentry> <term>-f FILE, --file=FILE</term> <listitem> <para>Reads configuration information from the specified @@ -799,14 +772,6 @@ the log files and profile outputs generated by this run.</para> </variablelist> <para>When used in conjunction with the -<option>--aegis=</option><replaceable>PROJECT</replaceable> -option, -<emphasis>NUMBER</emphasis> -specifies one or more comma-separated Aegis delta numbers -that will be retrieved automatically from the specified Aegis -<emphasis>PROJECT</emphasis>.</para> - -<para>When used in conjunction with the <option>--svn=</option><replaceable>URL</replaceable> option, <emphasis>NUMBER</emphasis> @@ -1057,24 +1022,6 @@ the necessary information for producing (and reporting) consistent timing runs for a given configuration.</para> <variablelist> <varlistentry> - <term><emphasis role="bold">aegis</emphasis></term> - <listitem> -<para>The Aegis executable for extracting deltas. -The default is simply -<emphasis role="bold">aegis</emphasis>.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><emphasis role="bold">aegis_project</emphasis></term> - <listitem> -<para>The Aegis project from which deltas should be extracted. -The default is whatever is specified -with the -<option>--aegis=</option> -command-line option.</para> - </listitem> - </varlistentry> - <varlistentry> <term><emphasis role="bold">archive_list</emphasis></term> <listitem> <para>A list of archives (files or directories) diff --git a/doc/man/scons.xml b/doc/man/scons.xml index dd9fbdd..20e9d84 100644 --- a/doc/man/scons.xml +++ b/doc/man/scons.xml @@ -75,8 +75,8 @@ <refmeta> <refentrytitle>SCONS</refentrytitle> <manvolnum>1</manvolnum> -<refmiscinfo class='source'>SCons 3.1.0</refmiscinfo> -<refmiscinfo class='manual'>SCons 3.1.0</refmiscinfo> +<refmiscinfo class='source'>SCons 3.1.2</refmiscinfo> +<refmiscinfo class='manual'>SCons 3.1.2</refmiscinfo> </refmeta> <refnamediv id='name'> <refname>scons</refname> @@ -209,12 +209,12 @@ that you want to use to build your target files are not in standard system locations, <command>scons</command> will not find them unless -you explicitly set the PATH +you explicitly set the <envar>PATH</envar> to include those locations. Whenever you create an <command>scons</command> construction environment, -you can propagate the value of PATH +you can propagate the value of <envar>PATH</envar> from your external environment as follows:</para> <literallayout class="monospaced"> @@ -223,13 +223,20 @@ env = Environment(ENV = {'PATH' : os.environ['PATH']}) </literallayout> <para>Similarly, if the commands use external environment variables -like $PATH, $HOME, $JAVA_HOME, $LANG, $SHELL, $TERM, etc., +like +<envar>PATH</envar>, +<envar>HOME</envar>, +<envar>JAVA_HOME</envar>, +<envar>LANG</envar>, +<envar>SHELL</envar>, +<envar>TERM</envar>, +etc., these variables can also be explicitly propagated:</para> <literallayout class="monospaced"> import os -env = Environment(ENV = {'PATH' : os.environ['PATH'], - 'HOME' : os.environ['HOME']}) +env = Environment(ENV = {'PATH': os.environ['PATH'], + 'HOME': os.environ['HOME']}) </literallayout> <para>Or you may explicitly propagate the invoking user's @@ -679,19 +686,32 @@ 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.</para> - </listitem> </varlistentry> + <varlistentry> - <term>--debug=<emphasis>type</emphasis></term> + <term>--debug=<replaceable>type</replaceable>[<replaceable>,type</replaceable>...]</term> <listitem> <para>Debug the build process. -<emphasis>type[,type...]</emphasis> -specifies what type of debugging. Multiple types may be specified, -separated by commas. The following types are valid:</para> +<emphasis>type</emphasis> +specifies the kind of debugging info to emit. +Multiple types may be specified, separated by commas. +The following entries show the recognized types:</para> + </listitem> + </varlistentry> + <varlistentry> + <term>--debug=action-timestamps</term> + <listitem> +<para>Prints additional time profiling information. For +each command, shows the absolute start and end times. +This may be useful in debugging parallel builds. +Implies the <option>--debug=time</option> option. +</para> +<para>Since &scons; 3.1.</para> </listitem> </varlistentry> + <varlistentry> <term>--debug=count</term> <listitem> @@ -720,17 +740,6 @@ files, as well as unlinking old targets before building them.</para> </listitem> </varlistentry> <varlistentry> - <term>--debug=dtree</term> - <listitem> -<para>A synonym for the newer -<option>--tree=derived</option> -option. -This will be deprecated in some future release -and ultimately removed.</para> - - </listitem> - </varlistentry> - <varlistentry> <term>--debug=explain</term> <listitem> <para>Print an explanation of precisely why @@ -786,13 +795,6 @@ and before and after building targets.</para> </listitem> </varlistentry> <varlistentry> - <term>--debug=nomemoizer</term> - <listitem> -<para>A deprecated option preserved for backwards compatibility.</para> - - </listitem> - </varlistentry> - <varlistentry> <term>--debug=objects</term> <listitem> <para>Prints a list of the various objects @@ -849,17 +851,6 @@ when encountering an otherwise unexplained error.</para> </listitem> </varlistentry> <varlistentry> - <term>--debug=stree</term> - <listitem> -<para>A synonym for the newer -<option>--tree=all,status</option> -option. -This will be deprecated in some future release -and ultimately removed.</para> - - </listitem> - </varlistentry> - <varlistentry> <term>--debug=time</term> <listitem> <para>Prints various time profiling information:</para> @@ -912,20 +903,9 @@ since multiple build commands and intervening SCons processing should take place in parallel.) </para> - </listitem> </varlistentry> - <varlistentry> - <term>--debug=tree</term> - <listitem> -<para>A synonym for the newer -<option>--tree=all</option> -option. -This will be deprecated in some future release -and ultimately removed.</para> - </listitem> - </varlistentry> <varlistentry> <term>--diskcheck=<emphasis>types</emphasis></term> <listitem> @@ -1113,6 +1093,18 @@ This implies </listitem> </varlistentry> + + <varlistentry> + <term>--install-sandbox=<replaceable>path</replaceable></term> + <listitem> +<para> +When using the &Install; functions, prepend <replaceable>path</replaceable> +to the installation paths such that all installed files will be placed +underneath <replaceable>path</replaceable>. +</para> + </listitem> + </varlistentry> + <varlistentry> <term>--interactive</term> <listitem> @@ -1803,41 +1795,6 @@ Warnings for some specific deprecated features may be enabled or disabled individually; see below.</para> - <blockquote> - <variablelist> - <varlistentry> - <term>--warn=deprecated-copy, --warn=no-deprecated-copy</term> - <listitem> -<para>Enables or disables warnings about use of the deprecated -<emphasis role="bold">env.Copy()</emphasis> -method.</para> - - </listitem> - </varlistentry> - <varlistentry> - <term>--warn=deprecated-source-signatures, --warn=no-deprecated-source-signatures</term> - <listitem> -<para>Enables or disables warnings about use of the deprecated -<emphasis role="bold">SourceSignatures()</emphasis> -function or -<emphasis role="bold">env.SourceSignatures()</emphasis> -method.</para> - - </listitem> - </varlistentry> - <varlistentry> - <term>--warn=deprecated-target-signatures, --warn=no-deprecated-target-signatures</term> - <listitem> -<para>Enables or disables warnings about use of the deprecated -<emphasis role="bold">TargetSignatures()</emphasis> -function or -<emphasis role="bold">env.TargetSignatures()</emphasis> -method.</para> - </listitem> - </varlistentry> - </variablelist> - </blockquote> - </listitem> </varlistentry> <varlistentry> @@ -1914,7 +1871,7 @@ These warnings are enabled by default.</para> <option>--debug=object</option> feature not working when <command>scons</command> -is run with the python +is run with the Python <option>-O</option> option or from optimized Python (.pyo) modules.</para> @@ -2041,7 +1998,7 @@ env['BAR'] = 'bar' <para>As a convenience, construction variables may also be set or modified by the -<emphasis>parse_flags</emphasis> +<emphasis role="bold">parse_flags</emphasis> keyword argument, which applies the &f-link-env-MergeFlags; method (described below) to the argument value @@ -2112,36 +2069,59 @@ env = Environment(platform = my_platform) <para>Additionally, a specific set of tools with which to initialize the environment -may be specified as an optional keyword argument:</para> +may be specified using the optional keyword argument +<parameter>tools</parameter>:</para> <literallayout class="monospaced"> -env = Environment(tools = ['msvc', 'lex']) +env = Environment(tools=['msvc', 'lex']) </literallayout> -<para>Non-built-in tools may be specified using the toolpath argument:</para> +<para> +The <parameter>tools</parameter> argument overrides +the tool list, it does not add to it, so be +sure to include all the tools you need. +For example if you are building a c/c++ program +you must add a tool for both compiler and linker, +as in <literal>tools=['clang', 'link']</literal>. +The tool name <literal>'default'</literal> can +be used to retain the default list. +</para> + +<para>Non-built-in tools may be specified using the +optional <parameter>toolpath</parameter> keyword argument:</para> <literallayout class="monospaced"> -env = Environment(tools = ['default', 'foo'], toolpath = ['tools']) +env = Environment(tools=['default', 'foo'], toolpath=['tools']) </literallayout> -<para>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). +<para> +This looks for a tool specification in <filename>tools/foo.py</filename> +as well as using the ordinary default tools for the platform. +</para> + +<para> +A tool specification must include two functions: +<function>generate(env, **kw)</function> +and <function>exists(env)</function>. The -<function>generate()</function> +<function>generate</function> function -modifies the passed-in environment +modifies the environment referenced by <parameter>env</parameter> to set up variables so that the tool can be executed; it may use any keyword arguments -that the user supplies (see below) +that the user supplies in <parameter>kw</parameter> (see below) to vary its initialization. The -<function>exists()</function> +<function>exists</function> function should return a true value if the tool is available. +</para> + +<para> Tools in the toolpath are used before -any of the built-in ones. For example, adding gcc.py to the toolpath +any of the built-in ones. For example, adding +<filename>gcc.py</filename> to the toolpath would override the built-in gcc tool. Also note that the toolpath is stored in the environment for use @@ -2149,7 +2129,8 @@ by later calls to <emphasis role="bold">Clone</emphasis>() and <emphasis role="bold">Tool</emphasis>() -methods:</para> +methods: +</para> <literallayout class="monospaced"> base = Environment(toolpath=['custom_path']) @@ -2192,11 +2173,12 @@ or otherwise changing its initialization.</para> 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 + return True # in SConstruct: -env = Environment(tools = ['default', ('my_tool', {'arg1': 'abc'})], +env = Environment(tools=['default', ('my_tool', {'arg1': 'abc'})], toolpath=['tools']) </programlisting> @@ -2215,7 +2197,7 @@ With a nested tool name the dot represents a directory seperator</para> <programlisting> # namespaced builder -env = Environment(ENV = os.environ, tools = ['SubDir1.SubDir2.SomeTool']) +env = Environment(ENV=os.environ, tools=['SubDir1.SubDir2.SomeTool']) env.SomeTool(targets, sources) # Search Paths @@ -2257,90 +2239,108 @@ env.SomeTool(targets, sources) <!-- '\" END GENERATED TOOL DESCRIPTIONS --> <!-- '\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" --> -<para>Additionally, there is a "tool" named -<emphasis role="bold">default</emphasis> -which configures the -environment with a default set of tools for the current platform.</para> - -<para>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.</para> - </refsect2> <refsect2 id='builder_methods'><title>Builder Methods</title> -<para>Build rules are specified by calling a construction -environment's builder methods. -The arguments to the builder methods are -<emphasis role="bold">target</emphasis> -(a list of targets to be built, -usually file names) +<para>You tell <command>scons</command> what to build +by calling Builders, functions which know to take a +particular action when given files of a particular type +to produce a particular result type. <command>scons</command> +defines a number of builders, and you can also write your own. +Builders are attached to a &consenv; as methods, +and the available builder methods are listed as +key-value pairs in the +<envar>BUILDERS</envar> attribute of the &consenv;. +The available builders can be displayed like this +for debugging purposes: +</para> + +<literallayout class="monospaced"> +print("Builders:", list(env['BUILDERS'])) +</literallayout> + +<para> +Builder methods always take two arguments: +<replaceable>target</replaceable> +(a target or a list of targets to be built) and -<emphasis role="bold">source</emphasis> -(a list of sources to be built, -usually file names).</para> +<replaceable>source</replaceable> +(a source or list of sources to be used as input +when building), +although in some circumstances, +the target argument can actually be omitted (see below). +Builder methods also take a variety of +keyword arguments, described below. +</para> <para>Because long lists of file names can lead to a lot of quoting, <command>scons</command> -supplies a -<emphasis role="bold">Split()</emphasis> +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.)</para> +(These are similar to the Python string <function>split</function> +method, but work even if the input isn't a string.)</para> -<para>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:</para> +<para> +The target and source arguments to a builder method +can be specified either as positional arguments, +in which case the target comes first, or as +keyword arguments, using <parameter>target=</parameter> +and <parameter>source=</parameter>. +The following are equivalent examples of calling the +&Program; builder method: +</para> <literallayout class="monospaced"> 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()) +env.Program(source=['bar.c', 'foo.c'], target='bar') +env.Program(target='bar', source=Split('bar.c foo.c')) +env.Program(target='bar', source=env.Split('bar.c foo.c')) +env.Program('bar', source='bar.c foo.c'.split()) </literallayout> -<para>Target and source file names -that are not absolute path names -(that is, do not begin with -<emphasis role="bold">/</emphasis> -on POSIX systems -or -<emphasis role="bold">\</emphasis> -on Windows systems, -with or without -an optional drive letter) -are interpreted relative to the directory containing the -<emphasis role="bold">SConscript</emphasis> -file being read. -An initial -<emphasis role="bold">#</emphasis> -(hash mark) -on a path name means that the rest of the file name -is interpreted relative to -the directory containing -the top-level -<emphasis role="bold">SConstruct</emphasis> -file, -even if the -<emphasis role="bold">#</emphasis> -is followed by a directory separator character -(slash or backslash).</para> +<para> +Python follows the POSIX pathname convention for path +strings: if a string begins with the operating system pathname separator +(on Windows both the slash and backslash separator work, +and any leading drive specifier is ignored for +the determination) it is considered an absolute path, +otherwise it is a relative path. +If the path string contains no separator characters, +it is searched for as a file in the current directory. If it +contains separator characters, the search follows down +from the starting point, which is the top of the directory tree for +an absolute path and the current directory for a relative path. +</para> +<para> +<command>scons</command> recognizes a third way to specify +path strings: if the string begins with +the <emphasis role="bold">#</emphasis> character it is +top-relative - it works like a relative path but the +search follows down from the directory containing the top-level +<emphasis role="bold">SConstruct</emphasis> rather than +from the current directory (the # is allowed +to be followed by a pathname separator, which is ignored if +found in that position). +Top-relative paths only work in places where &scons; will +interpret the path (see some examples below). To be +used in other contexts the string will need to be converted +to a relative or absolute path first. +</para> + +<para> +Target and source pathnames can be absolute, relative, or +top-relative. Relative pathnames are searched considering the +directory of the <emphasis role="bold">SConscript</emphasis> +file currently being processed as the "current directory". +</para> <para>Examples:</para> @@ -2382,12 +2382,12 @@ executable program or <emphasis role="bold">bar.exe</emphasis> (on Windows systems) -from the bar.c source file:</para> +from the <filename>bar.c</filename> source file:</para> <literallayout class="monospaced"> -env.Program(target = 'bar', source = 'bar.c') -env.Program('bar', source = 'bar.c') -env.Program(source = 'bar.c') +env.Program(target='bar', source='bar.c') +env.Program('bar', source='bar.c') +env.Program(source='bar.c') env.Program('bar.c') </literallayout> @@ -2397,28 +2397,31 @@ keyword argument may be specified when calling a Builder. When specified, all source file strings that are not absolute paths +or top-relative paths will be interpreted relative to the specified <emphasis role="bold">srcdir</emphasis>. The following example will build the -<emphasis role="bold">build/prog</emphasis> +<filename>build/prog</filename> (or -<emphasis role="bold">build/prog.exe</emphasis> +<filename>build/prog.exe</filename> on Windows) program from the files -<emphasis role="bold">src/f1.c</emphasis> +<filename>src/f1.c</filename> and -<emphasis role="bold">src/f2.c</emphasis>:</para> +<filename>src/f2.c</filename>: +</para> <literallayout class="monospaced"> env.Program('build/prog', ['f1.c', 'f2.c'], srcdir='src') </literallayout> -<para>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:</para> +<para>It is possible to <emphasis>override</emphasis> (replace or add) +construction variables when calling a +builder method by passing them as keyword arguments. +These overrides +will only be in effect when building that target, and will not +affect other parts of the build. For example, if you want to specify +some libraries needed by just one program:</para> <literallayout class="monospaced"> env.Program('hello', 'hello.c', LIBS=['gl', 'glut']) @@ -2438,7 +2441,7 @@ for dependencies on the non-standard library names; see the descriptions of these variables, below, for more information.)</para> <para>It is also possible to use the -<emphasis>parse_flags</emphasis> +<emphasis role="bold">parse_flags</emphasis> keyword argument in an override, to merge command-line style arguments into the appropriate construction variables @@ -2483,8 +2486,7 @@ from SCons.Script import * </literallayout> <para>All builder methods return a list-like object -containing Nodes that -represent the target or targets that will be built. +containing Nodes that will be built. A <emphasis>Node</emphasis> is an internal SCons object @@ -2496,9 +2498,8 @@ 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 -<option>-D</option> -flag when compiling one specific object file:</para> +to add a specific preprocessor define +when compiling one specific object file:</para> <literallayout class="monospaced"> bar_obj_list = env.StaticObject('bar.c', CPPDEFINES='-DBAR') @@ -2509,14 +2510,14 @@ env.Program(source = ['foo.c', bar_obj_list, 'main.c']) makes for a more portable build by avoiding having to specify a platform-specific object suffix -when calling the Program() builder method.</para> +when calling the &Program; builder method.</para> -<para>Note that Builder calls will automatically "flatten" +<para>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 +so it's all right to have the <literal>bar_obj_list</literal> +returned by the &StaticObject; call in the middle of the source file list. -If you need to manipulate a list of lists returned by Builders +If you need to manipulate a list of lists returned by builders directly using Python, you can either build the list by hand:</para> @@ -2528,8 +2529,7 @@ for object in objects: print(str(object)) </literallayout> -<para>Or you can use the -<emphasis role="bold">Flatten</emphasis>() +<para>Or you can use the &Flatten; function supplied by scons to create a list containing just the Nodes, which may be more convenient:</para> @@ -2542,23 +2542,23 @@ for object in objects: print(str(object)) </literallayout> -<para>Note also that because Builder calls return +<para>Note also that because builder calls return a list-like object, not an actual Python list, you should <emphasis>not</emphasis> -use the Python -<emphasis role="bold">+=</emphasis> -operator to append Builder results to a Python list. +use the Python add +operator (<literal>+</literal> or <literal>+=</literal>) +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. +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 -<markup>.extend()</markup> +Instead, use the Python list +<function>extend</function> method to make sure the list is updated in-place. Example:</para> @@ -2571,14 +2571,14 @@ object_files = [] # # It will not update the object_files list in place. # -# Instead, use the .extend() method: +# Instead, use the list extend method: object_files.extend(Object('bar.c')) </literallayout> <para>The path name for a Node's file may be used -by passing the Node to the Python-builtin -<function>str()</function> +by passing the Node to Python's builtin +<function>str</function> function:</para> <literallayout class="monospaced"> @@ -2588,7 +2588,7 @@ print("The path to bar_obj is:", str(bar_obj_list[0])) <para>Note again that because the Builder call returns a list, we have to access the first element in the list -<emphasis role="bold">(bar_obj_list[0])</emphasis> +(<literal>(bar_obj_list[0])</literal>) to get at the Node that actually represents the object file.</para> @@ -2651,7 +2651,12 @@ to use just the filename portion of the targets and source.</para> <para><command>scons</command> -provides the following builder methods:</para> +predefined the following builder methods. +Depending on the setup of a particular +&consenv; and on the type and software +installation status of the underlying system, +not all builders may be available to that +&consenv;.</para> <!-- '\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" --> <!-- '\" BEGIN GENERATED BUILDER DESCRIPTIONS --> @@ -3119,11 +3124,12 @@ defined construction variables:</para> method of the construction environment:</para> <literallayout class="monospaced"> -dict = env.Dictionary() -dict["CC"] = "cc" +cvars = env.Dictionary() +cvars["CC"] = "cc" </literallayout> -<para>or using the [] operator:</para> +<para>or using the key lookup operator <literal>[]</literal> +directly on the construction environment:</para> <literallayout class="monospaced"> env["CC"] = "cc" @@ -4387,7 +4393,7 @@ functions return and <emphasis>Dir</emphasis> Nodes, respectively. -python objects, respectively. +Python objects, respectively. Those objects have several user-visible attributes and methods that are often useful:</para> @@ -4544,7 +4550,7 @@ incl = Dir('include') f = incl.File('header.h') # Get a Node for a subdirectory within a directory -dist = Dir('project-3.2.1) +dist = Dir('project-3.2.1') src = dist.Dir('src') # Get a Node for a file in the same directory @@ -4919,7 +4925,8 @@ 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 +with the target, specify additional environment overrides, +or associate a different builder with the target.</para> </listitem> @@ -5404,17 +5411,15 @@ a = Action(build_it, varlist=['XXX']) </programlisting> <para>The -<emphasis role="bold">Action</emphasis>() +&Action; global function can be passed the following optional keyword arguments to modify the Action object's behavior:</para> - -<para><emphasis role="bold">chdir</emphasis> -The -<emphasis role="bold">chdir</emphasis> -keyword argument specifies that +<para> +<replaceable>chdir</replaceable> +specifies that scons will execute the action after changing to the specified directory. If the @@ -5459,15 +5464,9 @@ a = Action("build < ${SOURCE.file} > ${TARGET.file}", chdir=1) </literallayout> - -<para><emphasis role="bold">exitstatfunc</emphasis> -The -<emphasis role="bold">Action</emphasis>() -global function -also takes an -<emphasis role="bold">exitstatfunc</emphasis> -keyword argument -which specifies a function +<para> +<replaceable>exitstatfunc</replaceable> +specifies a function that is passed the exit status (or return value) from the specified action @@ -5489,11 +5488,9 @@ a = Action("build < ${SOURCE.file} > ${TARGET.file}", </programlisting> -<para><emphasis role="bold">batch_key</emphasis> -The -<emphasis role="bold">batch_key</emphasis> -keyword argument can be used -to specify that the Action can create multiple target files +<para> +<replaceable>batch_key</replaceable> +specifies 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 @@ -5502,7 +5499,7 @@ to a single invocation of a compiler such as Microsoft's Visual C / C++ compiler.) If the <emphasis role="bold">batch_key</emphasis> -argument is any non-False, non-callable Python value, +argument evaluates True and is not a callable object, the configured Action object will cause <command>scons</command> to collect all targets built with the Action object @@ -5534,7 +5531,7 @@ will be used to identify different for batch building. A <emphasis role="bold">batch_key</emphasis> -function must take the following arguments:</para> +function must accept the following arguments:</para> <variablelist> <varlistentry> @@ -5666,7 +5663,7 @@ sequences of file manipulation without relying on platform-specific external commands: -that</para> +</para> <literallayout class="monospaced"> env = Environment(TMPBUILD = '/tmp/builddir') env.Command('foo.out', 'foo.in', @@ -5689,11 +5686,11 @@ which can be octal or string, similar to the bash command. Examples:</para> <literallayout class="monospaced"> -Execute(Chmod('file', 0755)) +Execute(Chmod('file', 0o755)) env.Command('foo.out', 'foo.in', [Copy('$TARGET', '$SOURCE'), - Chmod('$TARGET', 0755)]) + Chmod('$TARGET', 0o755)]) Execute(Chmod('file', "ugo+w")) @@ -5826,13 +5823,13 @@ env.Command('marker', 'input_file', <para>Before executing a command, <command>scons</command> -performs construction variable interpolation on the strings that make up -the command line of builders. -Variables are introduced by a -<emphasis role="bold">$</emphasis> +performs construction variable interpolation on the string that makes up +the command line of the builder. +Variables are introduced in such strings by a +<literal>$</literal> prefix. -Besides construction variables, scons provides the following -variables for each command execution:</para> +Besides regular construction variables, scons provides the following +special variables for each command execution:</para> <variablelist> <varlistentry> @@ -5901,15 +5898,19 @@ from sources that have <emphasis>not</emphasis> changed since the target was last built.</para> -<para>(Note that the above variables are reserved -and may not be set in a construction environment.)</para> - </listitem> </varlistentry> </variablelist> -<para>For example, given the construction variable CC='cc', targets=['foo'], and -sources=['foo.c', 'bar.c']:</para> +<para>Note that the above variables are reserved +and may not be set in a construction environment.</para> + +<para>For example, given the construction variables +<literal>CC='cc'</literal>, +<literal>targets=['foo']</literal> +and +<literal>sources=['foo.c', 'bar.c']</literal>: +</para> <literallayout class="monospaced"> action='$CC -c -o $TARGET $SOURCES' @@ -5921,8 +5922,10 @@ action='$CC -c -o $TARGET $SOURCES' cc -c -o foo foo.c bar.c </literallayout> -<para>Variable names may be surrounded by curly braces ({}) -to separate the name from the trailing characters. +<para>Variable names may be surrounded by curly braces +<emphasis role="bold">{ }</emphasis> +to separate the name from surrounding characters which +are not part of the name. Within the curly braces, a variable name may have a Python slice subscript appended to select one or more items from a list. @@ -6085,20 +6088,42 @@ may be a callable Python function associated with a construction variable in the environment. The function should -take four arguments: -<emphasis>target</emphasis> -- a list of target nodes, -<emphasis>source</emphasis> -- a list of source nodes, -<emphasis>env</emphasis> -- the construction environment, -<emphasis>for_signature</emphasis> -- a Boolean value that specifies +accept four arguments: +</para> +<variablelist> + <varlistentry> + <term><replaceable>target</replaceable></term> + <listitem> +<para>a list of target nodes</para> + </listitem> + </varlistentry> + <varlistentry> + <term><replaceable>source</replaceable></term> + <listitem> +<para>a list of source nodes</para> + </listitem> + </varlistentry> + <varlistentry> + <term><replaceable>env</replaceable></term> + <listitem> +<para>the construction environment</para> + </listitem> + </varlistentry> + <varlistentry> + <term><replaceable>for_signature</replaceable></term> + <listitem> +<para>a Boolean value that specifies whether the function is being called -for generating a build signature. +for generating a build signature. </para> + </listitem> + </varlistentry> +</variablelist> + +<para> SCons will insert whatever the called function returns -into the expanded string:</para> +into the expanded string: +</para> <programlisting> def foo(target, source, env, for_signature): @@ -6179,9 +6204,12 @@ echo Last build occurred . > $TARGET <refsect2 id='python_code_substitution'><title>Python Code Substitution</title> -<para>Any python code within -<emphasis role="bold">${</emphasis>-<emphasis role="bold">}</emphasis> -pairs gets evaluated by python 'eval', with the python globals set to +<para> +Any Python code within curly braces +<emphasis role="bold">{ }</emphasis> +and introduced by the variable prefix <emphasis role="bold">$</emphasis> +gets evaluated by the Python <function>eval</function> statement, +with the Python globals set to the current environment's set of construction variables. So in the following case:</para> <literallayout class="monospaced"> @@ -6197,14 +6225,20 @@ echo FOO > foo.out <literallayout class="monospaced"> echo BAR > foo.out </literallayout> -<para>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 +<para>according to the current value of <literal>env['COND']</literal> +when the command is executed. +The evaluation takes place when the target is being +built, not when the SConscript is being read. So if +<literal>env['COND']</literal> is changed later in the SConscript, the final value will be used.</para> -<para>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 +<para>Here's a more interesting example. Note that all of +<envar>COND</envar>, +<envar>FOO</envar>, +and +<envar>BAR</envar> are construction variables, +and their values are substituted into the final command. +<envar>FOO</envar> is a list, so its elements are interpolated separated by spaces.</para> <literallayout class="monospaced"> @@ -6315,7 +6349,8 @@ might not exist argument is the construction environment for the scan. Fetch values from it using the <emphasis role="bold">env.Dictionary()</emphasis> -method.</para> +method or using the key lookup operator +directly on the construction environment.</para> <para>The <emphasis role="bold">path</emphasis> @@ -6551,9 +6586,10 @@ 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 +like <filename>/cygdrive/c/mydir</filename> to an equivalent Windows pathname -of C:/mydir (equivalent to C:\mydir).</para> +of <filename>C:/mydir</filename> (equivalent to <filename>C:\mydir</filename>). +</para> <para>Versions of Python that are built for native Windows execution, @@ -6561,7 +6597,8 @@ 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) +(such as <command>gcc</command>, <command>bison</command>, +and <command>flex</command>) may yield unpredictable results. "Mixing and matching" in this way can be made to work, @@ -6771,7 +6808,7 @@ env['BUILDERS]['PDFBuilder'] = bld <refsect2 id='defining_your_own_scanner_object'><title>Defining Your Own Scanner Object</title> -<para>The following example shows an extremely simple scanner (the +<para>The following example shows adding an extremely simple scanner (the <emphasis role="bold">kfile_scan</emphasis>() function) that doesn't use a search path at all @@ -6796,8 +6833,10 @@ kscan = Scanner(name = 'kfile', function = kfile_scan, argument = None, skeys = ['.k']) -scanners = Environment().Dictionary('SCANNERS') -env = Environment(SCANNERS = scanners + [kscan]) + +scanners = DefaultEnvironment()['SCANNERS'] +scanners.append(kscan) +env = Environment(SCANNERS=scanners) env.Command('foo', 'foo.k', 'kprocess < $SOURCES > $TARGET') @@ -6814,7 +6853,8 @@ you can use the function of your current Environment in order to create nodes on the fly from a sequence of file names with relative paths.</para> -<para>Here is a similar but more complete example that searches +<para>Here is a similar but more complete example that adds +a scanner which searches a path of directories (specified as the <emphasis role="bold">MYPATH</emphasis> @@ -6840,15 +6880,16 @@ def my_scan(node, env, path, arg): break return env.File(results) -scanner = Scanner(name = 'myscanner', - function = my_scan, - argument = None, - skeys = ['.x'], - path_function = FindPathDirs('MYPATH') +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']) + +scanners = DefaultEnvironment()['SCANNERS'] +scanners.append(scanner) +env = Environment(SCANNERS=scanners, MYPATH=['incs']) env.Command('foo', 'foo.x', 'xprocess < $SOURCES > $TARGET') </programlisting> @@ -6861,8 +6902,8 @@ that will return a list of directories specified in the <emphasis role="bold">$MYPATH</emphasis> construction variable. It lets SCons detect the file -<emphasis role="bold">incs/foo.inc</emphasis> -, even if +<emphasis role="bold">incs/foo.inc</emphasis>, +even if <emphasis role="bold">foo.x</emphasis> contains the line <emphasis role="bold">include foo.inc</emphasis> @@ -6883,17 +6924,18 @@ def pf(env, dir, target, source, arg): results.append(top_dir + os.sep + p) return results -scanner = Scanner(name = 'myscanner', - function = my_scan, - argument = None, - skeys = ['.x'], - path_function = pf +scanner = Scanner(name='myscanner', + function=my_scan, + argument=None, + skeys=['.x'], + path_function=pf ) </programlisting> </refsect2> -<refsect2 id='creating_a_hierarchical_build'><title>Creating a Hierarchical Build</title> +<refsect2 id='creating_a_hierarchical_build'> +<title>Creating a Hierarchical Build</title> <para>Notice that the file names specified in a subdirectory's SConscript @@ -6982,7 +7024,7 @@ value each time we call the SConscript function.</para> <programlisting> SConstruct: - env = Environment(LIBPATH = ['#libA', '#libB']) + env = Environment(LIBPATH=['#libA', '#libB']) Export('env') SConscript('libA/SConscript') SConscript('libB/SConscript') @@ -7001,7 +7043,7 @@ libB/SConscript: Main/SConscript: Import('env') - e = env.Copy(LIBS = ['a', 'b']) + e = env.Clone(LIBS=['a', 'b']) e.Program('foo', Split('m1.c m2.c m3.c')) </programlisting> @@ -7126,22 +7168,62 @@ env.Program('MyApp', ['Foo.cpp', 'Bar.cpp']) </refsect1> <refsect1 id='environment'><title>ENVIRONMENT</title> + +<para>In general, &scons; is not controlled by environment +variables set in the shell used to invoke it, leaving it +up to the SConscript file author to import those if desired. +However the following variables are imported by +&scons; itself if set: +</para> + <variablelist> <varlistentry> - <term>SCONS_LIB_DIR</term> - <listitem> -<para>Specifies the directory that contains the SCons Python module directory -(e.g. /home/aroach/scons-src-0.01/src/engine).</para> + <term>SCONS_LIB_DIR</term> + <listitem> +<para>Specifies the directory that contains the &scons; +Python module directory (for example, +<filename>/home/aroach/scons-src-0.01/src/engine</filename>).</para> + </listitem> + </varlistentry> - </listitem> + <varlistentry> + <term>SCONSFLAGS</term> + <listitem> +<para>A string of options that will be used by &scons; +in addition to those passed on the command line.</para> + </listitem> </varlistentry> + <varlistentry> - <term>SCONSFLAGS</term> - <listitem> -<para>A string of options that will be used by scons in addition to those passed -on the command line.</para> + <term>SCONS_CACHE_MSVC_CONFIG</term> + <listitem> +<para>(Windows only). If set, save the shell environment variables +generated when setting up the Microsoft Visual C++ compiler +(and/or Build Tools) to a file to give these settings, +which are expensive to generate, persistence +across &scons; invocations. +Use of this option is primarily intended to aid performance +in tightly controlled Continuous Integration setups.</para> + +<para>If set to a True-like value (<literal>"1"</literal>, +<literal>"true"</literal> or +<literal>"True"</literal>) will cache to a file named +<filename>.scons_msvc_cache</filename> in the user's home directory. +If set to a pathname, will use that pathname for the cache.</para> + +<para>Note: use this cache with caution as it +might be somewhat fragile: while each major toolset version +(e.g. Visual Studio 2017 vs 2019) and architecture pair will get separate +cache entries, if toolset updates cause a change +to settings within a given release series, &scons; will not +detect the change and will reuse old settings. +Remove the cache file in case of problems with this. +&scons; will ignore failures reading or writing the file +and will silently revert to non-cached behavior in such cases.</para> + +<para>Since &scons; 3.1.</para> - </listitem> + </listitem> </varlistentry> </variablelist> </refsect1> @@ -7157,8 +7239,9 @@ source code.</para> </refsect1> <refsect1 id='authors'><title>AUTHORS</title> -<para>Originally: Steven Knight <knight@baldmt.com> and Anthony Roach <aroach@electriceyeball.com> -Since 2010: The SCons Development Team <scons-dev@scons.org> +<para>Originally: Steven Knight <email>knight@baldmt.com</email> +and Anthony Roach <email>aroach@electriceyeball.com</email>. +Since 2010: The SCons Development Team <email>scons-dev@scons.org</email>. </para> </refsect1> </refentry> diff --git a/doc/man/sconsign.xml b/doc/man/sconsign.xml index f70bb62..a1308ea 100644 --- a/doc/man/sconsign.xml +++ b/doc/man/sconsign.xml @@ -32,8 +32,8 @@ <refmeta> <refentrytitle>SCONSIGN</refentrytitle> <manvolnum>1</manvolnum> -<refmiscinfo class='source'>SCons 3.1.0</refmiscinfo> -<refmiscinfo class='manual'>SCons 3.1.0</refmiscinfo> +<refmiscinfo class='source'>SCons 3.1.2</refmiscinfo> +<refmiscinfo class='manual'>SCons 3.1.2</refmiscinfo> </refmeta> <refnamediv id='name'> <refname>sconsign</refname> diff --git a/doc/scons.mod b/doc/scons.mod index cf46e3b..7a48f5f 100644 --- a/doc/scons.mod +++ b/doc/scons.mod @@ -212,6 +212,7 @@ <!ENTITY Import "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Import</function>"> <!ENTITY Install "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Install</function>"> <!ENTITY InstallAs "<function xmlns='http://www.scons.org/dbxsd/v1.0'>InstallAs</function>"> +<!ENTITY InstallVersionedLib "<function xmlns='http://www.scons.org/dbxsd/v1.0'>InstallVersionedLib</function>"> <!ENTITY Link "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Link</function>"> <!ENTITY ListOption "<function xmlns='http://www.scons.org/dbxsd/v1.0'>ListOption</function>"> <!ENTITY ListVariable "<function xmlns='http://www.scons.org/dbxsd/v1.0'>ListVariable</function>"> @@ -259,11 +260,8 @@ <!ENTITY SetDefault "<function xmlns='http://www.scons.org/dbxsd/v1.0'>SetDefault</function>"> <!ENTITY SetOption "<function xmlns='http://www.scons.org/dbxsd/v1.0'>SetOption</function>"> <!ENTITY SideEffect "<function xmlns='http://www.scons.org/dbxsd/v1.0'>SideEffect</function>"> -<!ENTITY SourceSignature "<function xmlns='http://www.scons.org/dbxsd/v1.0'>SourceSignature</function>"> -<!ENTITY SourceSignatures "<function xmlns='http://www.scons.org/dbxsd/v1.0'>SourceSignatures</function>"> <!ENTITY Split "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Split</function>"> <!ENTITY Tag "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Tag</function>"> -<!ENTITY TargetSignatures "<function xmlns='http://www.scons.org/dbxsd/v1.0'>TargetSignatures</function>"> <!ENTITY Task "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Task</function>"> <!ENTITY Touch "<function xmlns='http://www.scons.org/dbxsd/v1.0'>Touch</function>"> <!ENTITY UnknownOptions "<function xmlns='http://www.scons.org/dbxsd/v1.0'>UnknownOptions</function>"> diff --git a/doc/user/README b/doc/user/README index 5433ea2..a66d20b 100644 --- a/doc/user/README +++ b/doc/user/README @@ -12,7 +12,7 @@ Writing examples: here's a simple template. <scons_example name="Foo"> <file name="SConstruct"> env = Environment() - print env.Dump("CC") + print(env.Dump("CC")) </file> </scons_example> diff --git a/doc/user/builders-writing.xml b/doc/user/builders-writing.xml index c36d468..a408479 100644 --- a/doc/user/builders-writing.xml +++ b/doc/user/builders-writing.xml @@ -196,7 +196,7 @@ env.Foo('file.foo', 'file.input') <file name="file.input"> file.input </file> - <file name="foobuild" chmod="0755"> + <file name="foobuild" chmod="0o755"> cat </file> </scons_example> @@ -309,7 +309,7 @@ file.input <file name="hello.c"> hello.c </file> - <file name="foobuild" chmod="0755"> + <file name="foobuild" chmod="0o755"> cat </file> </scons_example> @@ -389,7 +389,7 @@ file1.input <file name="file2.input"> file2.input </file> - <file name="foobuild" chmod="0755"> + <file name="foobuild" chmod="0o755"> cat </file> </scons_example> @@ -453,7 +453,7 @@ def build_function(target, source, env): A list of Node objects representing the target or targets to be - built by this builder function. + built by this function. The file names of these target(s) may be extracted using the Python &str; function. @@ -469,7 +469,7 @@ def build_function(target, source, env): A list of Node objects representing the sources to be - used by this builder function to build the targets. + used by this function to build the targets. The file names of these source(s) may be extracted using the Python &str; function. @@ -484,7 +484,7 @@ def build_function(target, source, env): <para> The &consenv; used for building the target(s). - The builder function may use any of the + The function may use any of the environment's construction variables in any way to affect how it builds the targets. @@ -496,13 +496,14 @@ def build_function(target, source, env): <para> - The builder function must - return a <literal>0</literal> or <literal>None</literal> value - if the target(s) are built successfully. - The builder function - may raise an exception - or return any non-zero value - to indicate that the build is unsuccessful. + The function will be constructed as a SCons FunctionAction and + must return a <literal>0</literal> or <literal>None</literal> + value if the target(s) are built successfully. The function may + raise an exception or return any non-zero value to indicate that + the build is unsuccessful. + + For more information on Actions see the Action Objects section of + the man page. </para> @@ -681,7 +682,7 @@ env.Foo('file') <file name="file.input"> file.input </file> - <file name="foobuild" chmod="0755"> + <file name="foobuild" chmod="0o755"> cat </file> </scons_example> @@ -765,7 +766,7 @@ file.input <file name="new_source"> new_source </file> - <file name="foobuild" chmod="0755"> + <file name="foobuild" chmod="0o755"> cat </file> </scons_example> @@ -839,7 +840,7 @@ modify1.input <file name="modify2.in"> modify2.input </file> - <file name="my_command" chmod="0755"> + <file name="my_command" chmod="0o755"> cat </file> diff --git a/doc/user/command-line.xml b/doc/user/command-line.xml index bb1d32b..e14ed07 100644 --- a/doc/user/command-line.xml +++ b/doc/user/command-line.xml @@ -2,7 +2,7 @@ <!DOCTYPE sconsdoc [ <!ENTITY % scons SYSTEM "../scons.mod"> %scons; - + <!ENTITY % builders-mod SYSTEM "../generated/builders.mod"> %builders-mod; <!ENTITY % functions-mod SYSTEM "../generated/functions.mod"> @@ -89,7 +89,7 @@ all of the command-line variable settings, the ability to apply command-line variable settings to construction environments, - and functions for configuring + and functions for configuring specific types of variables (Boolean values, path names, etc.) with automatic validation of the user's specified values. @@ -599,24 +599,30 @@ foo.in &SCons; also allows you to define your own command-line options with the &AddOption; function. The &AddOption; function takes the same arguments - as the <function>optparse.add_option</function> function - from the standard Python library. + as the <function>add_option</function> method + from the standard Python library module <emphasis>optparse</emphasis>. <footnote> <para> The &AddOption; function is, in fact, implemented using a subclass - of the <classname>optparse.OptionParser</classname>. + of <classname>optparse.OptionParser</classname>. </para> </footnote> + </para> + + <para> Once you have added a custom command-line option with the &AddOption; function, the value of the option (if any) is immediately available using the standard &GetOption; function. + <!-- (The value can also be set using &SetOption;, although that's not very useful in practice because a default value can be specified in directly in the &AddOption; call.) - + --> + &SetOption; is not currently supported for + options added with &AddOption;. </para> <para> @@ -678,6 +684,47 @@ foo.in <scons_output_command>scons -Q -n --prefix=/tmp/install</scons_output_command> </scons_output> + <note> + <para> + Option-arguments separated from long options by whitespace, + rather than by an <literal>=</literal>, cannot be correctly + resolved by <command>scons</command>. + While <literal>--input=ARG</literal> + is clearly opt followed by arg, for <literal>--input ARG</literal> + it is not possible to tell without instructions whether + <parameter>ARG</parameter> is an argument belonging to the + <parameter>input</parameter> option or a positional argument. + <command>scons</command> treats positional arguments as either + command-line build options or command-line targets + which are made available for use in an &SConscript; + (see the immediately following sections for details). + Thus, they must be collected before &SConscript; processing + takes place. Since &AddOption; calls, which provide + the processing instructions to resolve any ambiguity, + happen in an &SConscript;, + <command>scons</command> does not know in time + for options added this way, and unexpected things will happen, + such as option-arguments assigned as targets and/or exceptions + due to missing option-arguments. + </para> + <para> + As a result, this usage style should be avoided when invoking + <command>scons</command>. For single-argument + options, use the <literal>--input=ARG</literal> form on the + command line. For multiple-argument options + (<parameter>nargs</parameter> greater than one), + set <parameter>nargs</parameter> to one in + &AddOption; calls and either: combine the option-arguments into one word + with a separator, and parse the result in your own code + (see the built-in <parameter>--debug</parameter> option, which + allows specifying multiple arguments as a single comma-separated + word, for an example of such usage); or allow the option to + be specified multiple times by setting + <literal>action='append'</literal>. Both methods can be + supported at the same time. + </para> + </note> + </section> </section> @@ -1132,12 +1179,12 @@ vars = Variables('custom.py', ARGUMENTS) </screen> <para> - + where values in the option file &custom_py; get overwritten by the ones specified on the command line. </para> - + </section> <section> diff --git a/doc/user/depends.xml b/doc/user/depends.xml index bb0a142..96a8685 100644 --- a/doc/user/depends.xml +++ b/doc/user/depends.xml @@ -764,185 +764,8 @@ int main() { printf("Hello, world!\n"); } encounter them in older &SConscript; files. </para> - - <section> - <title>The &SourceSignatures; Function</title> - - <para> - - The &SourceSignatures; function is fairly straightforward, - and supports two different argument values - to configure whether source file changes should be decided - using MD5 signatures: - - </para> - - <sconstruct> -Program('hello.c') -SourceSignatures('MD5') - </sconstruct> - - <para> - - Or using time stamps: - - </para> - - <sconstruct> -Program('hello.c') -SourceSignatures('timestamp') - </sconstruct> - - <para> - - These are roughly equivalent to specifying - <function>Decider('MD5')</function> - or - <function>Decider('timestamp-match')</function>, - respectively, - although it only affects how SCons makes - decisions about dependencies on - <emphasis>source</emphasis> files--that is, - files that are not built from any other files. - - </para> - - </section> - - <section> - <title>The &TargetSignatures; Function</title> - - <para> - - The &TargetSignatures; function - specifies how &SCons; decides - when a target file has changed - <emphasis>when it is used as a - dependency of (input to) another target</emphasis>--that is, - the &TargetSignatures; function configures - how the signatures of "intermediate" target files - are used when deciding if a "downstream" target file - must be rebuilt. - <footnote><para> - This easily-overlooked distinction between - how &SCons; decides if the target itself must be rebuilt - and how the target is then used to decide if a different - target must be rebuilt is one of the confusing - things that has led to the &TargetSignatures; - and &SourceSignatures; functions being - replaced by the simpler &Decider; function. - </para></footnote> - - </para> - - <para> - - The &TargetSignatures; function supports the same - <literal>'MD5'</literal> and <literal>'timestamp'</literal> - argument values that are supported by the &SourceSignatures;, - with the same meanings, but applied to target files. - That is, in the example: - - </para> - - <sconstruct> -Program('hello.c') -TargetSignatures('MD5') - </sconstruct> - - <para> - - The MD5 checksum of the &hello_o; target file - will be used to decide if it has changed since the last - time the "downstream" &hello; target file was built. - And in the example: - - </para> - - <sconstruct> -Program('hello.c') -TargetSignatures('timestamp') - </sconstruct> - - <para> - - The modification time of the &hello_o; target file - will be used to decide if it has changed since the last - time the "downstream" &hello; target file was built. - - </para> - - <para> - - The &TargetSignatures; function supports - two additional argument values: - <literal>'source'</literal> and <literal>'build'</literal>. - The <literal>'source'</literal> argument - specifies that decisions involving - whether target files have changed - since a previous build - should use the same behavior - for the decisions configured for source files - (using the &SourceSignatures; function). - So in the example: - - </para> - - <sconstruct> -Program('hello.c') -TargetSignatures('source') -SourceSignatures('timestamp') - </sconstruct> - - <para> - - All files, both targets and sources, - will use modification times - when deciding if an input file - has changed since the last - time a target was built. - - </para> - - <para> - - Lastly, the <literal>'build'</literal> argument - specifies that &SCons; should examine - the build status of a target file - and always rebuild a "downstream" target - if the target file was itself rebuilt, - without re-examining the contents or timestamp - of the newly-built target file. - If the target file was not rebuilt during - this &scons; invocation, - then the target file will be examined - the same way as configured by - the &SourceSignature; call - to decide if it has changed. - - </para> - - <para> - - This mimics the behavior of - <literal>build signatures</literal> - in earlier versions of &SCons;. - A &buildsignature; re-combined - signatures of all the input files - that went into making the target file, - so that the target file itself - did not need to have its contents read - to compute an MD5 signature. - This can improve performance for some configurations, - but is generally not as effective as using - <literal>Decider('MD5-timestamp')</literal>. - - </para> - - </section> - </section> - + <section> <title>Implicit Dependencies: The &cv-CPPPATH; Construction Variable</title> diff --git a/doc/user/environments.xml b/doc/user/environments.xml index ede9bc3..5df58c5 100644 --- a/doc/user/environments.xml +++ b/doc/user/environments.xml @@ -618,7 +618,7 @@ int main() { } <para> - You can fetch individual construction variables + You can fetch individual &consvars; using the normal syntax for accessing individual named items in a Python dictionary: @@ -645,20 +645,21 @@ print("CC is: %s"%env['CC']) <para> - A construction environment, however, - is actually an object with associated methods, etc. + A &consenv; + is actually an object with associated methods and + attributes. If you want to have direct access to only the - dictionary of construction variables, + dictionary of &consvars; you can fetch this using the &Dictionary; method: </para> <scons_example name="environments_ex6b"> <file name="SConstruct" printme="1"> -env = Environment(FOO = 'foo', BAR = 'bar') -dict = env.Dictionary() +env = Environment(FOO='foo', BAR='bar') +cvars = env.Dictionary() for key in ['OBJSUFFIX', 'LIBSUFFIX', 'PROGSUFFIX']: - print("key = %s, value = %s" % (key, dict[key])) + print("key = %s, value = %s" % (key, cvars[key])) </file> </scons_example> @@ -687,7 +688,7 @@ for key in ['OBJSUFFIX', 'LIBSUFFIX', 'PROGSUFFIX']: <para> If you want to loop and print the values of - all of the construction variables in a construction environment, + all of the &consvars; in a &consenv;, the Python code to do that in sorted order might look something like: </para> @@ -698,6 +699,16 @@ for item in sorted(env.Dictionary().items()): print("construction variable = '%s', value = '%s'" % item) </sconstruct> + <para> + It should be noted that for the previous example, there is actually + a &consenv; method that does the same thing more simply, + and tries to format the output nicely as well: + </para> + <sconstruct> +env = Environment() +print(env.Dump()) + </sconstruct> + </section> <section> @@ -706,10 +717,10 @@ for item in sorted(env.Dictionary().items()): <para> Another way to get information from - a construction environment + a &consenv; is to use the &subst; method on a string containing <literal>$</literal> expansions - of construction variable names. + of &consvar; names. As a simple example, the example from the previous section that used @@ -728,7 +739,7 @@ print("CC is: %s"%env.subst('$CC')) One advantage of using &subst; to expand strings is - that construction variables + that &consvars; in the result get re-expanded until there are no expansions left in the string. So a simple fetch of a value like @@ -875,33 +886,30 @@ print("value is: %s"%env.subst( '->${1 / 0}<-' )) <para> All of the &Builder; functions that we've introduced so far, - like &Program; and &Library;, - actually use a default &consenv; - that contains settings - for the various compilers - and other tools that - &SCons; configures by default, - or otherwise knows about - and has discovered on your system. - The goal of the default construction environment - is to make many configurations to "just work" - to build software using - readily available tools + like &Program; and &Library;, use a &consenv; + that contains settings for the various compilers + and other tools that &SCons; configures by default, + or otherwise knows about and has discovered on your system. + If not invoked as methods of a specific &consenv;, + they use the default &consenv; + The goal of the default &consenv; + is to make many configurations "just work" + to build software using readily available tools with a minimum of configuration changes. </para> <para> - You can, however, control the settings - in the default construction environment + If needed, you can control the default &consenv; by using the &DefaultEnvironment; function - to initialize various settings: + to initialize various settings by passing + them as keyword arguments: </para> <sconstruct> -DefaultEnvironment(CC = '/usr/local/bin/gcc') +DefaultEnvironment(CC='/usr/local/bin/gcc') </sconstruct> <para> @@ -917,15 +925,15 @@ DefaultEnvironment(CC = '/usr/local/bin/gcc') <para> - Note that the &DefaultEnvironment; function - returns the initialized - default construction environment object, - which can then be manipulated like any - other construction environment. - So the following - would be equivalent to the - previous example, - setting the &cv-CC; + The &DefaultEnvironment; function + returns the initialized default &consenv; object, + which can then be manipulated like any other &consenv; + (note that the default environment works like a singleton - + it can have only one instance - so the keyword arguments + are processed only on the first call. On any subsequent + call the existing object is returned). + So the following would be equivalent to the + previous example, setting the &cv-CC; variable to <filename>/usr/local/bin/gcc</filename> but as a separate step after the default construction environment has been initialized: @@ -960,8 +968,8 @@ env['CC'] = '/usr/local/bin/gcc' </para> <sconstruct> -env = DefaultEnvironment(tools = ['gcc', 'gnulink'], - CC = '/usr/local/bin/gcc') +env = DefaultEnvironment(tools=['gcc', 'gnulink'], + CC='/usr/local/bin/gcc') </sconstruct> <para> @@ -983,9 +991,8 @@ env = DefaultEnvironment(tools = ['gcc', 'gnulink'], <para> - The real advantage of construction environments - is that you can create as many different construction - environments as you need, + The real advantage of &consenvs; + is that you can create as many different ones as you need, each tailored to a different way to build some piece of software or other file. If, for example, we need to build @@ -1018,7 +1025,7 @@ int main() { } <para> - We can even use multiple construction environments to build + We can even use multiple &consenvs; to build multiple versions of a single program. If you do this by simply trying to use the &b-link-Program; builder with both environments, though, @@ -1641,7 +1648,7 @@ env['ENV']['PATH'] = '/usr/local/bin:/bin:/usr/bin' env = Environment() env.Command('foo', [], '__ROOT__/usr/bin/printenv.py') </file> - <file name="__ROOT__/usr/bin/printenv.py" chmod="0755"> + <file name="__ROOT__/usr/bin/printenv.py" chmod="0o755"> #!/usr/bin/env python import os import sys diff --git a/doc/user/factories.xml b/doc/user/factories.xml index 43e417b..0756ad0 100644 --- a/doc/user/factories.xml +++ b/doc/user/factories.xml @@ -161,7 +161,7 @@ env['ENV']['PATH'] = env['ENV']['PATH'] + os.pathsep + os.getcwd() SConscript('S') </file> <file name="file.in">file.in</file> - <file name="modify" chmod="0755"> + <file name="modify" chmod="0o755"> touch $* </file> </scons_example> @@ -231,7 +231,7 @@ env['ENV']['PATH'] = env['ENV']['PATH'] + os.pathsep + os.getcwd() SConscript('S') </file> <file name="file.in">file.in</file> - <file name="modify" chmod="0755"> + <file name="modify" chmod="0o755"> touch $* </file> </scons_example> @@ -325,7 +325,7 @@ env['ENV']['PATH'] = env['ENV']['PATH'] + os.pathsep + os.getcwd() SConscript('S') </file> <file name="file.in">file.in</file> - <file name="modify" chmod="0755"> + <file name="modify" chmod="0o755"> touch $* </file> </scons_example> @@ -416,7 +416,7 @@ env['ENV']['PATH'] = env['ENV']['PATH'] + os.pathsep + os.getcwd() SConscript('S') </file> <file name="file.in">file.in</file> - <file name="process" chmod="0755"> + <file name="process" chmod="0o755"> touch $* </file> </scons_example> @@ -452,7 +452,7 @@ touch $* Command("file.out", "file.in", [ Copy("$TARGET", "$SOURCE"), - Chmod("$TARGET", 0755), + Chmod("$TARGET", 0o755), ]) </file> <file name="file.in">file.in</file> diff --git a/doc/user/file-removal.xml b/doc/user/file-removal.xml index fe38cf7..e772eeb 100644 --- a/doc/user/file-removal.xml +++ b/doc/user/file-removal.xml @@ -214,7 +214,7 @@ foo.in <file name="foo.log"> foo.log </file> - <file name="build" chmod="0755"> + <file name="build" chmod="0o755"> cat $3 > $2 </file> </scons_example> diff --git a/doc/user/install.xml b/doc/user/install.xml index b3cb9dd..d977e6b 100644 --- a/doc/user/install.xml +++ b/doc/user/install.xml @@ -2,7 +2,7 @@ <!DOCTYPE sconsdoc [ <!ENTITY % scons SYSTEM "../scons.mod"> %scons; - + <!ENTITY % builders-mod SYSTEM "../generated/builders.mod"> %builders-mod; <!ENTITY % functions-mod SYSTEM "../generated/functions.mod"> @@ -11,7 +11,7 @@ %tools-mod; <!ENTITY % variables-mod SYSTEM "../generated/variables.mod"> %variables-mod; - + ]> <chapter id="chap-install" @@ -50,7 +50,7 @@ Once a program is built, it is often appropriate to install it in another directory for public use. - You use the &Install; method + You use the &Install; method to arrange for a program, or any other file, to be copied into a destination directory: @@ -226,7 +226,7 @@ int main() { printf("Hello, world!\n"); } <para> - Lastly, if you have multiple files that all + If you have multiple files that all need to be installed with different file names, you can either call the &InstallAs; function multiple times, or as a shorthand, @@ -268,4 +268,66 @@ int main() { printf("Goodbye, world!\n"); } </section> + <section> + <title>Installing a Shared Library</title> + + <para> + If a shared library is created with the + &cv-link-SHLIBVERSION; variable set, + &scons; will create symbolic links as needed based on that + variable. To properly install such a library including the + symbolic links, use the &InstallVersionedLib; function. + </para> + + <para> + For example, on a Linux system, this instruction: + </para> + + <sconstruct> +foo = env.SharedLibrary(target="foo", source="foo.c", SHLIBVERSION="1.2.3") + </sconstruct> + + <para> + Will produce a shared library + <filename>libfoo.so.1.2.3</filename> + and symbolic links + <filename>libfoo.so</filename> and + <filename>libfoo.so.1</filename> + which point to + <filename>libfoo.so.1.2.3</filename>. + You can use the Node returned by the &SharedLibrary; + builder in order to install the library and its + symbolic links in one go without having to list + them individually: + </para> + + <sconstruct> +env.InstallVersionedLib(target="lib", source=foo) + </sconstruct> + +<!-- didn't get this to illustrate what I expected: example reports + installing lib without version, while manual effort has it: + + <scons_example name="install_ex6"> + <file name="SConstruct" printme="1"> +env = Environment() +foo = env.SharedLibrary(target="foo", source="foo.c", SHLIBVERSION="1.2.3") +ins = env.InstallVersionedLib(target="lib", source=foo) +env.Alias('install', ins) + </file> + <file name="foo.c"> +int call_foo() { + printf("Hello world"); + return(0); +} + </file> + </scons_example> + + <scons_output example="install_ex6" suffix="1"> + <scons_output_command>scons -Q install</scons_output_command> + </scons_output> +--> + + </section> + </chapter> diff --git a/doc/user/mergeflags.xml b/doc/user/mergeflags.xml index d802125..f4438f8 100644 --- a/doc/user/mergeflags.xml +++ b/doc/user/mergeflags.xml @@ -77,7 +77,7 @@ env = Environment() env.Append(CCFLAGS = '-option -O3 -O1') flags = { 'CCFLAGS' : '-whatever -O3' } env.MergeFlags(flags) -print env['CCFLAGS'] +print(env['CCFLAGS']) </file> </scons_example> @@ -104,7 +104,7 @@ env = Environment() env.Append(CPPPATH = ['/include', '/usr/local/include', '/usr/include']) flags = { 'CPPPATH' : ['/usr/opt/include', '/usr/local/include'] } env.MergeFlags(flags) -print env['CPPPATH'] +print(env['CPPPATH']) </file> </scons_example> @@ -138,8 +138,8 @@ env = Environment() env.Append(CCFLAGS = '-option -O3 -O1') env.Append(CPPPATH = ['/include', '/usr/local/include', '/usr/include']) env.MergeFlags('-whatever -I/usr/opt/include -O3 -I/usr/local/include') -print env['CCFLAGS'] -print env['CPPPATH'] +print(env['CCFLAGS']) +print(env['CPPPATH']) </file> </scons_example> diff --git a/doc/user/output.xml b/doc/user/output.xml index db16393..c0edbca 100644 --- a/doc/user/output.xml +++ b/doc/user/output.xml @@ -309,7 +309,7 @@ Linking foo <scons_example name="output_COMSTR-VERBOSE"> <file name="SConstruct" printme="1"> env = Environment() -if ARGUMENTS.get('VERBOSE') != "1': +if ARGUMENTS.get('VERBOSE') != '1': env['CCCOMSTR'] = "Compiling $TARGET" env['LINKCOMSTR'] = "Linking $TARGET" env.Program('foo.c') diff --git a/doc/user/parseconfig.xml b/doc/user/parseconfig.xml index 096d236..4adb20f 100644 --- a/doc/user/parseconfig.xml +++ b/doc/user/parseconfig.xml @@ -87,7 +87,7 @@ env = Environment() env['CPPPATH'] = ['/lib/compat'] env.ParseConfig("pkg-config x11 --cflags --libs") -print env['CPPPATH'] +print(env['CPPPATH']) </file> </scons_example> @@ -139,7 +139,7 @@ scons: `.' is up to date. env = Environment() env.ParseConfig("pkg-config x11 --cflags --libs") env.ParseConfig("pkg-config x11 --cflags --libs") -print env['CPPPATH'] +print(env['CPPPATH']) </file> </scons_example> diff --git a/doc/user/parseflags.xml b/doc/user/parseflags.xml index 26313ce..cc31b3b 100644 --- a/doc/user/parseflags.xml +++ b/doc/user/parseflags.xml @@ -80,11 +80,12 @@ <scons_example name="parseflags_ex1"> <file name="SConstruct" printme="1"> +from __future__ import print_function env = Environment() d = env.ParseFlags("-I/opt/include -L/opt/lib -lfoo") for k,v in sorted(d.items()): if v: - print k, v + print(k, v) env.MergeFlags(d) env.Program('f1.c') </file> @@ -119,11 +120,12 @@ int main() { return 0; } <scons_example name="parseflags_ex2"> <file name="SConstruct" printme="1"> +from __future__ import print_function env = Environment() d = env.ParseFlags("-whatever") for k,v in sorted(d.items()): if v: - print k, v + print(k, v) env.MergeFlags(d) env.Program('f1.c') </file> @@ -145,11 +147,12 @@ env.Program('f1.c') <scons_example name="parseflags_ex3"> <file name="SConstruct" printme="1"> +from __future__ import print_function env = Environment() d = env.ParseFlags(["-I/opt/include", ["-L/opt/lib", "-lfoo"]]) for k,v in sorted(d.items()): if v: - print k, v + print(k, v) env.MergeFlags(d) env.Program('f1.c') </file> @@ -172,11 +175,12 @@ int main() { return 0; } <scons_example name="parseflags_ex4"> <file name="SConstruct" printme="1"> +from __future__ import print_function env = Environment() d = env.ParseFlags(["!echo -I/opt/include", "!echo -L/opt/lib", "-lfoo"]) for k,v in sorted(d.items()): if v: - print k, v + print(k, v) env.MergeFlags(d) env.Program('f1.c') </file> diff --git a/doc/user/separate.xml b/doc/user/separate.xml index 26500d6..3640fef 100644 --- a/doc/user/separate.xml +++ b/doc/user/separate.xml @@ -149,10 +149,8 @@ program using the F<build/foo.c> path name. <para> One historical note: the &VariantDir; function - used to be called &BuildDir;. - That name is still supported - but has been deprecated - because the &SCons; functionality + used to be called &BuildDir;, a name which was + removed because the &SCons; functionality differs from the model of a "build directory" implemented by other build systems like the GNU Autotools. diff --git a/doc/user/sideeffect.xml b/doc/user/sideeffect.xml index e630e4f..e8f0614 100644 --- a/doc/user/sideeffect.xml +++ b/doc/user/sideeffect.xml @@ -164,7 +164,7 @@ env.SideEffect('logfile.txt', f1 + f2) </file> <file name="file1.in">file1.in</file> <file name="file2.in">file2.in</file> - <file name="build" chmod="0755"> + <file name="build" chmod="0o755"> cat </file> </scons_example> diff --git a/doc/user/troubleshoot.xml b/doc/user/troubleshoot.xml index 606c727..a9da534 100644 --- a/doc/user/troubleshoot.xml +++ b/doc/user/troubleshoot.xml @@ -289,7 +289,7 @@ file3.c <scons_example name="troubleshoot_Dump"> <file name="SConstruct" printme="1"> env = Environment() -print env.Dump() +print(env.Dump()) </file> </scons_example> @@ -349,7 +349,7 @@ print env.Dump() <scons_example name="troubleshoot_Dump_ENV"> <file name="SConstruct" printme="1"> env = Environment() -print env.Dump('ENV') +print(env.Dump('ENV')) </file> </scons_example> |