2 <!ENTITY % scons SYSTEM "../scons.mod">
4 <!ENTITY % builders-mod SYSTEM "builders.mod">
6 <!ENTITY % functions-mod SYSTEM "functions.mod">
8 <!ENTITY % tools-mod SYSTEM "tools.mod">
10 <!ENTITY % variables-mod SYSTEM "variables.mod">
14 <variablelist 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">
15 <varlistentry id="cv-__LDMODULEVERSIONFLAGS">
17 <envar>__LDMODULEVERSIONFLAGS</envar>
20 This construction variable automatically introduces &cv-link-_LDMODULEVERSIONFLAGS;
21 if &cv-link-LDMODULEVERSION; is set. Othervise it evaluates to an empty string.
25 <varlistentry id="cv-__SHLIBVERSIONFLAGS">
27 <envar>__SHLIBVERSIONFLAGS</envar>
30 This construction variable automatically introduces &cv-link-_SHLIBVERSIONFLAGS;
31 if &cv-link-SHLIBVERSION; is set. Othervise it evaluates to an empty string.
35 <varlistentry id="cv-APPLELINK_COMPATIBILITY_VERSION">
37 <envar>APPLELINK_COMPATIBILITY_VERSION</envar>
40 On Mac OS X this is used to set the linker flag:
42 -compatibility_version
45 The value is specified as X[.Y[.Z]] where X is between 1 and 65535, Y can be omitted or between 1 and
46 255, Z can be omitted or between 1 and 255. This value will be derived from &cv-link-SHLIBVERSION; if
48 specified. The lowest digit will be dropped and replaced by a 0.
51 If the &cv-link-APPLELINK_NO_COMPATIBILITY_VERSION; is set then no -compatibility_version will be
54 <para>See MacOS's ld manpage for more details</para>
57 <varlistentry id="cv-_APPLELINK_COMPATIBILITY_VERSION">
59 <envar>_APPLELINK_COMPATIBILITY_VERSION</envar>
62 A macro (by default a generator function) used to create the linker flags to specify
63 apple's linker's -compatibility_version flag.
64 The default generator uses &cv-link-APPLELINK_COMPATIBILITY_VERSION;
65 and &cv-link-APPLELINK_NO_COMPATIBILITY_VERSION; and &cv-link-SHLIBVERSION;
66 to determine the correct flag.
70 <varlistentry id="cv-APPLELINK_CURRENT_VERSION">
72 <envar>APPLELINK_CURRENT_VERSION</envar>
75 On Mac OS X this is used to set the linker flag:
80 The value is specified as X[.Y[.Z]] where X is between 1 and 65535, Y can be omitted or between 1 and
81 255, Z can be omitted or between 1 and 255. This value will be set to &cv-link-SHLIBVERSION; if not
85 If the &cv-link-APPLELINK_NO_CURRENT_VERSION; is set then no -current_version will be
88 <para>See MacOS's ld manpage for more details</para>
92 <varlistentry id="cv-_APPLELINK_CURRENT_VERSION">
94 <envar>_APPLELINK_CURRENT_VERSION</envar>
97 A macro (by default a generator function) used to create the linker flags to specify apple's linker's
98 -current_version flag. The default generator uses &cv-link-APPLELINK_CURRENT_VERSION; and
99 &cv-link-APPLELINK_NO_CURRENT_VERSION; and &cv-link-SHLIBVERSION; to determine the correct flag.
103 <varlistentry id="cv-APPLELINK_NO_COMPATIBILITY_VERSION">
105 <envar>APPLELINK_NO_COMPATIBILITY_VERSION</envar>
108 Set this to any True (1|True|non-empty string) value to disable adding -compatibility_version flag when
109 generating versioned shared libraries.
112 This overrides &cv-link-APPLELINK_COMPATIBILITY_VERSION;.
116 <varlistentry id="cv-APPLELINK_NO_CURRENT_VERSION">
118 <envar>APPLELINK_NO_CURRENT_VERSION</envar>
121 Set this to any True (1|True|non-empty string) value to disable adding -current_version flag when
122 generating versioned shared libraries.
125 This overrides &cv-link-APPLELINK_CURRENT_VERSION;.
129 <varlistentry id="cv-AR">
134 The static library archiver.
138 <varlistentry id="cv-ARCHITECTURE">
140 <envar>ARCHITECTURE</envar>
143 Specifies the system architecture for which
144 the package is being built.
145 The default is the system architecture
146 of the machine on which SCons is running.
147 This is used to fill in the
148 <literal>Architecture:</literal>
150 <filename>control</filename> file,
151 and the <literal>BuildArch:</literal> field
152 in the RPM <filename>.spec</filename> file,
153 as well as forming part of the name of a generated RPM package file.
155 <para>See the &b-link-Package; builder.</para>
158 <varlistentry id="cv-ARCOM">
163 The command line used to generate a static library from object files.
167 <varlistentry id="cv-ARCOMSTR">
169 <envar>ARCOMSTR</envar>
172 The string displayed when a static library is
173 generated from object files.
174 If this is not set, then &cv-link-ARCOM; (the command line) is displayed.
178 env = Environment(ARCOMSTR = "Archiving $TARGET")
182 <varlistentry id="cv-ARFLAGS">
184 <envar>ARFLAGS</envar>
187 General options passed to the static library archiver.
191 <varlistentry id="cv-AS">
200 <varlistentry id="cv-ASCOM">
205 The command line used to generate an object file
206 from an assembly-language source file.
210 <varlistentry id="cv-ASCOMSTR">
212 <envar>ASCOMSTR</envar>
215 The string displayed when an object file
216 is generated from an assembly-language source file.
217 If this is not set, then &cv-link-ASCOM; (the command line) is displayed.
221 env = Environment(ASCOMSTR = "Assembling $TARGET")
225 <varlistentry id="cv-ASFLAGS">
227 <envar>ASFLAGS</envar>
230 General options passed to the assembler.
234 <varlistentry id="cv-ASPPCOM">
236 <envar>ASPPCOM</envar>
239 The command line used to assemble an assembly-language
240 source file into an object file
241 after first running the file through the C preprocessor.
242 Any options specified
243 in the &cv-link-ASFLAGS; and &cv-link-CPPFLAGS; construction variables
244 are included on this command line.
248 <varlistentry id="cv-ASPPCOMSTR">
250 <envar>ASPPCOMSTR</envar>
253 The string displayed when an object file
254 is generated from an assembly-language source file
255 after first running the file through the C preprocessor.
256 If this is not set, then &cv-link-ASPPCOM; (the command line) is displayed.
260 env = Environment(ASPPCOMSTR = "Assembling $TARGET")
264 <varlistentry id="cv-ASPPFLAGS">
266 <envar>ASPPFLAGS</envar>
269 General options when an assembling an assembly-language
270 source file into an object file
271 after first running the file through the C preprocessor.
272 The default is to use the value of &cv-link-ASFLAGS;.
276 <varlistentry id="cv-BIBTEX">
278 <envar>BIBTEX</envar>
281 The bibliography generator for the TeX formatter and typesetter and the
282 LaTeX structured formatter and typesetter.
286 <varlistentry id="cv-BIBTEXCOM">
288 <envar>BIBTEXCOM</envar>
291 The command line used to call the bibliography generator for the
292 TeX formatter and typesetter and the LaTeX structured formatter and
297 <varlistentry id="cv-BIBTEXCOMSTR">
299 <envar>BIBTEXCOMSTR</envar>
302 The string displayed when generating a bibliography
304 If this is not set, then &cv-link-BIBTEXCOM; (the command line) is displayed.
308 env = Environment(BIBTEXCOMSTR = "Generating bibliography $TARGET")
312 <varlistentry id="cv-BIBTEXFLAGS">
314 <envar>BIBTEXFLAGS</envar>
317 General options passed to the bibliography generator for the TeX formatter
318 and typesetter and the LaTeX structured formatter and typesetter.
322 <varlistentry id="cv-BUILDERS">
324 <envar>BUILDERS</envar>
327 A dictionary mapping the names of the builders
328 available through the &consenv; to underlying Builder objects.
329 Custom builders need to be added to this to make them available.
333 A platform-dependent default list of builders such as
334 &b-link-Program;, &b-link-Library; etc. is used to
335 populate this &consvar; when the &consenv; is initialized
336 via the presence/absence of the tools those builders depend on.
337 &cv-BUILDERS; can be examined to learn which builders will
338 actually be available at run-time.
342 Note that if you initialize this &consvar; through
343 assignment when the &consenv; is created,
344 that value for &cv-BUILDERS; will override any defaults:
348 bld = Builder(action='foobuild < $SOURCE > $TARGET')
349 env = Environment(BUILDERS={'NewBuilder': bld})
353 To instead use a new Builder object in addition to the default Builders,
354 add your new Builder object like this:
359 env.Append(BUILDERS={'NewBuilder': bld})
368 env['BUILDERS']['NewBuilder'] = bld
372 <varlistentry id="cv-CACHEDIR_CLASS">
374 <envar>CACHEDIR_CLASS</envar>
377 The class type that SCons should use when instantiating a
378 new &f-link-CacheDir; in this &consenv;. Must be
379 a subclass of the <classname>SCons.CacheDir.CacheDir</classname> class.
383 <varlistentry id="cv-CC">
392 <varlistentry id="cv-CCCOM">
397 The command line used to compile a C source file to a (static) object
398 file. Any options specified in the &cv-link-CFLAGS;, &cv-link-CCFLAGS; and
399 &cv-link-CPPFLAGS; construction variables are included on this command line.
400 See also &cv-link-SHCCCOM; for compiling to shared objects.
404 <varlistentry id="cv-CCCOMSTR">
406 <envar>CCCOMSTR</envar>
409 If set, the string displayed when a C source file
410 is compiled to a (static) object file.
411 If not set, then &cv-link-CCCOM; (the command line) is displayed.
412 See also &cv-link-SHCCCOMSTR; for compiling to shared objects.
416 env = Environment(CCCOMSTR = "Compiling static object $TARGET")
420 <varlistentry id="cv-CCDEPFLAGS">
422 <envar>CCDEPFLAGS</envar>
425 Options to pass to C or C++ compiler to generate list of dependency files.
428 This is set only by compilers which support this functionality. (&t-link-gcc;, &t-link-clang;, and &t-link-msvc; currently)
432 <varlistentry id="cv-CCFLAGS">
434 <envar>CCFLAGS</envar>
437 General options that are passed to the C and C++ compilers.
438 See also &cv-link-SHCCFLAGS; for compiling to shared objects.
442 <varlistentry id="cv-CCPCHFLAGS">
444 <envar>CCPCHFLAGS</envar>
447 Options added to the compiler command line
448 to support building with precompiled headers.
449 The default value expands expands to the appropriate
450 &MSVC; command-line options
451 when the &cv-link-PCH; &consvar; is set.
455 <varlistentry id="cv-CCPDBFLAGS">
457 <envar>CCPDBFLAGS</envar>
460 Options added to the compiler command line
461 to support storing debugging information in a
463 The default value expands expands to appropriate
464 &MSVC; command-line options
465 when the &cv-link-PDB; &consvar; is set.
469 The &MSVC; compiler option that &SCons; uses by default
470 to generate PDB information is <option>/Z7</option>.
471 This works correctly with parallel (<option>-j</option>) builds
472 because it embeds the debug information in the intermediate object files,
473 as opposed to sharing a single PDB file between multiple object files.
474 This is also the only way to get debug information
475 embedded into a static library.
476 Using the <option>/Zi</option> instead may yield improved
477 link-time performance,
478 although parallel builds will no longer work.
482 You can generate PDB files with the <option>/Zi</option>
483 switch by overriding the default &cv-link-CCPDBFLAGS; variable as follows:
487 env['CCPDBFLAGS'] = ['${(PDB and "/Zi /Fd%s" % File(PDB)) or ""}']
491 An alternative would be to use the <option>/Zi</option>
492 to put the debugging information in a separate <filename>.pdb</filename>
493 file for each object file by overriding
494 the &cv-link-CCPDBFLAGS; variable as follows:
498 env['CCPDBFLAGS'] = '/Zi /Fd${TARGET}.pdb'
502 <varlistentry id="cv-CCVERSION">
504 <envar>CCVERSION</envar>
507 The version number of the C compiler.
508 This may or may not be set,
509 depending on the specific C compiler being used.
513 <varlistentry id="cv-CFILESUFFIX">
515 <envar>CFILESUFFIX</envar>
518 The suffix for C source files.
519 This is used by the internal CFile builder
520 when generating C files from Lex (.l) or YACC (.y) input files.
521 The default suffix, of course, is
522 <filename>.c</filename>
524 On case-insensitive systems (like Windows),
526 <filename>.C</filename>
532 <varlistentry id="cv-CFLAGS">
534 <envar>CFLAGS</envar>
537 General options that are passed to the C compiler (C only; not C++).
538 See also &cv-link-SHCFLAGS; for compiling to shared objects.
542 <varlistentry id="cv-CHANGE_SPECFILE">
544 <envar>CHANGE_SPECFILE</envar>
547 A hook for modifying the file that controls the packaging build
548 (the <filename>.spec</filename> for RPM,
549 the <filename>control</filename> for Ipkg,
550 the <filename>.wxs</filename> for MSI).
551 If set, the function will be called
552 after the SCons template for the file has been written.
554 <para>See the &b-link-Package; builder.</para>
557 <varlistentry id="cv-CHANGED_SOURCES">
559 <envar>CHANGED_SOURCES</envar>
562 A reserved variable name
563 that may not be set or used in a construction environment.
564 (See the manpage section "Variable Substitution"
565 for more information).
569 <varlistentry id="cv-CHANGED_TARGETS">
571 <envar>CHANGED_TARGETS</envar>
574 A reserved variable name
575 that may not be set or used in a construction environment.
576 (See the manpage section "Variable Substitution"
577 for more information).
581 <varlistentry id="cv-CHANGELOG">
583 <envar>CHANGELOG</envar>
586 The name of a file containing the change log text
587 to be included in the package.
588 This is included as the
589 <literal>%changelog</literal>
591 <filename>.spec</filename> file.
593 <para>See the &b-link-Package; builder.</para>
596 <varlistentry id="cv-COMPILATIONDB_COMSTR">
598 <envar>COMPILATIONDB_COMSTR</envar>
601 The string displayed when the &b-link-CompilationDatabase;
602 builder's action is run.
606 <varlistentry id="cv-COMPILATIONDB_PATH_FILTER">
608 <envar>COMPILATIONDB_PATH_FILTER</envar>
611 A string which instructs &b-link-CompilationDatabase; to
612 only include entries where the <literal>output</literal> member
613 matches the pattern in the filter string using fnmatch, which
614 uses glob style wildcards.
618 The default value is an empty string '', which disables filtering.
622 <varlistentry id="cv-COMPILATIONDB_USE_ABSPATH">
624 <envar>COMPILATIONDB_USE_ABSPATH</envar>
627 A boolean flag to instruct &b-link-CompilationDatabase;
628 whether to write the <literal>file</literal> and
629 <literal>output</literal> members
630 in the compilation database using absolute or relative paths.
633 The default value is False (use relative paths)
637 <varlistentry id="cv-_concat">
639 <envar>_concat</envar>
642 A function used to produce variables like &cv-link-_CPPINCFLAGS;. It takes
643 four mandatory arguments, and up to 4 additional optional arguments:
644 1) a prefix to concatenate onto each element,
645 2) a list of elements,
646 3) a suffix to concatenate onto each element,
647 4) an environment for variable interpolation,
648 5) an optional function that will be called to transform the list before concatenation,
649 6) an optionally specified target (Can use TARGET),
650 7) an optionally specified source (Can use SOURCE),
651 8) optional <parameter>affect_signature</parameter> flag which will wrap non-empty returned value with $( and $) to indicate the contents
652 should not affect the signature of the generated command line.
656 env['_CPPINCFLAGS'] = '${_concat(INCPREFIX, CPPPATH, INCSUFFIX, __env__, RDirs, TARGET, SOURCE, affect_signature=False)}'
660 <varlistentry id="cv-CONFIGUREDIR">
662 <envar>CONFIGUREDIR</envar>
665 The name of the directory in which
666 Configure context test files are written.
668 <filename>.sconf_temp</filename>
669 in the top-level directory
671 <filename>SConstruct</filename>
675 If variant directories are in use,
676 and the configure check results should not be
677 shared between variants,
678 you can set &cv-CONFIGUREDIR;
679 and &cv-link-CONFIGURELOG; so they are
680 unique per variant directory.
684 <varlistentry id="cv-CONFIGURELOG">
686 <envar>CONFIGURELOG</envar>
689 The name of the &Configure; context log file.
691 <filename>config.log</filename>
692 in the top-level directory
694 <filename>SConstruct</filename>
698 If variant directories are in use,
699 and the configure check results should not be
700 shared between variants,
701 you can set &cv-link-CONFIGUREDIR;
702 and &cv-CONFIGURELOG; so they are
703 unique per variant directory.
707 <varlistentry id="cv-_CPPDEFFLAGS">
709 <envar>_CPPDEFFLAGS</envar>
712 An automatically-generated &consvar;
713 containing the C preprocessor command-line options
715 The value of &cv-link-_CPPDEFFLAGS; is created
716 by respectively prepending and appending
717 &cv-link-CPPDEFPREFIX; and &cv-link-CPPDEFSUFFIX;
718 to each definition in &cv-link-CPPDEFINES;.
722 <varlistentry id="cv-CPPDEFINES">
724 <envar>CPPDEFINES</envar>
727 A platform independent specification of C preprocessor macro definitions.
728 The definitions are added to command lines
729 through the automatically-generated
730 &cv-link-_CPPDEFFLAGS; &consvar;,
731 which is constructed according to
732 the contents of &cv-CPPDEFINES;:
738 If &cv-CPPDEFINES; is a string,
740 &cv-link-CPPDEFPREFIX; and &cv-link-CPPDEFSUFFIX; &consvars;
741 are respectively prepended and appended to
742 each definition in &cv-CPPDEFINES;,
747 # Adds -Dxyz to POSIX compiler command lines,
748 # and /Dxyz to Microsoft Visual C++ command lines.
749 env = Environment(CPPDEFINES='xyz')
755 If &cv-CPPDEFINES; is a list,
757 &cv-CPPDEFPREFIX; and &cv-CPPDEFSUFFIX; &consvars;
758 are respectively prepended and appended to
759 each element in the list.
760 If any element is a tuple (or list)
761 then the first item of the tuple is the macro name
762 and the second is the macro definition.
763 If the definition is not omitted or <literal>None</literal>,
764 the name and definition are combined into a single
765 <literal>name=definition</literal> item
766 before the preending/appending.
770 # Adds -DB=2 -DA to POSIX compiler command lines,
771 # and /DB=2 /DA to Microsoft Visual C++ command lines.
772 env = Environment(CPPDEFINES=[('B', 2), 'A'])
778 If &cv-CPPDEFINES; is a dictionary,
780 &cv-CPPDEFPREFIX; and &cv-CPPDEFSUFFIX; &consvars;
781 are respectively prepended and appended to
782 each key from the dictionary.
783 If the value for a key is not <literal>None</literal>,
784 then the key (macro name) and the value
785 (macros definition) are combined into a single
786 <literal>name=definition</literal> item
787 before the prepending/appending.
791 # Adds -DA -DB=2 to POSIX compiler command lines,
792 # or /DA /DB=2 to Microsoft Visual C++ command lines.
793 env = Environment(CPPDEFINES={'B':2, 'A':None})
799 Depending on how contents are added to &cv-CPPDEFINES;,
800 it may be transformed into a compound type,
801 for example a list containing strings, tuples and/or dictionaries.
802 &SCons; can correctly expand such a compound type.
806 Note that &SCons; may call the compiler via a shell.
807 If a macro definition contains characters such as spaces that
808 have meaning to the shell, or is intended to be a string value,
809 you may need to use the shell's quoting syntax to avoid
810 interpretation by the shell before the preprocessor sees it.
811 Function-like macros are not supported via this mechanism
812 (and some compilers do not even implement that functionality
813 via the command lines).
814 When quoting, note that
815 one set of quote characters are used to define a &Python; string,
816 then quotes embedded inside that would be consumed by the shell
817 unless escaped. These examples may help illustrate:
821 env = Environment(CPPDEFINES=['USE_ALT_HEADER=\\"foo_alt.h\\"'])
822 env = Environment(CPPDEFINES=[('USE_ALT_HEADER', '\\"foo_alt.h\\"')])
826 :<emphasis>Changed in version 4.5</emphasis>:
827 &SCons; no longer sorts &cv-CPPDEFINES; values entered
828 in dictionary form. &Python; now preserves dictionary
829 keys in the order they are entered, so it is no longer
830 necessary to sort them to ensure a stable command line.
835 <varlistentry id="cv-CPPDEFPREFIX">
837 <envar>CPPDEFPREFIX</envar>
840 The prefix used to specify preprocessor macro definitions
841 on the C compiler command line.
842 This will be prepended to each definition
843 in the &cv-link-CPPDEFINES; &consvar;
844 when the &cv-link-_CPPDEFFLAGS; variable is automatically generated.
848 <varlistentry id="cv-CPPDEFSUFFIX">
850 <envar>CPPDEFSUFFIX</envar>
853 The suffix used to specify preprocessor macro definitions
854 on the C compiler command line.
855 This will be appended to each definition
856 in the &cv-link-CPPDEFINES; &consvar;
857 when the &cv-link-_CPPDEFFLAGS; variable is automatically generated.
861 <varlistentry id="cv-CPPFLAGS">
863 <envar>CPPFLAGS</envar>
866 User-specified C preprocessor options.
867 These will be included in any command that uses the C preprocessor,
868 including not just compilation of C and C++ source files
869 via the &cv-link-CCCOM;,
872 &cv-link-SHCXXCOM; command lines,
873 but also the &cv-link-FORTRANPPCOM;,
874 &cv-link-SHFORTRANPPCOM;,
875 &cv-link-F77PPCOM; and
876 &cv-link-SHF77PPCOM; command lines
877 used to compile a Fortran source file,
878 and the &cv-link-ASPPCOM; command line
879 used to assemble an assembly language source file,
880 after first running each file through the C preprocessor.
881 Note that this variable does
882 <emphasis>not</emphasis>
885 (or similar) include search path options
886 that scons generates automatically from &cv-link-CPPPATH;.
887 See &cv-link-_CPPINCFLAGS;, below,
888 for the variable that expands to those options.
892 <varlistentry id="cv-_CPPINCFLAGS">
894 <envar>_CPPINCFLAGS</envar>
897 An automatically-generated &consvar;
898 containing the C preprocessor command-line options
899 for specifying directories to be searched for include files.
900 The value of &cv-_CPPINCFLAGS; is created
901 by respectively prepending and appending
902 &cv-link-INCPREFIX; and &cv-link-INCSUFFIX;
903 to each directory in &cv-link-CPPPATH;.
907 <varlistentry id="cv-CPPPATH">
909 <envar>CPPPATH</envar>
912 The list of directories that the C preprocessor will search for include
913 directories. The C/C++ implicit dependency scanner will search these
914 directories for include files.
915 In general it's not advised to put include directory directives
916 directly into &cv-link-CCFLAGS; or &cv-link-CXXFLAGS;
917 as the result will be non-portable
918 and the directories will not be searched by the dependency scanner.
919 &cv-CPPPATH; should be a list of path strings,
920 or a single string, not a pathname list joined by
921 Python's <systemitem>os.pathsep</systemitem>.
926 directory names in &cv-CPPPATH;
927 will be looked-up relative to the directory of the SConscript file
928 when they are used in a command.
930 to look-up a directory relative to the root of the source tree use
931 the <literal>#</literal> prefix:
935 env = Environment(CPPPATH='#/include')
939 The directory look-up can also be forced using the
945 include = Dir('include')
946 env = Environment(CPPPATH=include)
950 The directory list will be added to command lines
951 through the automatically-generated
952 &cv-link-_CPPINCFLAGS; &consvar;,
953 which is constructed by
954 respectively prepending and appending the values of the
955 &cv-link-INCPREFIX; and &cv-link-INCSUFFIX; &consvars;
956 to each directory in &cv-link-CPPPATH;.
957 Any command lines you define that need
958 the &cv-CPPPATH; directory list should
959 include &cv-link-_CPPINCFLAGS;:
963 env = Environment(CCCOM="my_compiler $_CPPINCFLAGS -c -o $TARGET $SOURCE")
967 <varlistentry id="cv-CPPSUFFIXES">
969 <envar>CPPSUFFIXES</envar>
972 The list of suffixes of files that will be scanned
973 for C preprocessor implicit dependencies
979 [".c", ".C", ".cxx", ".cpp", ".c++", ".cc",
980 ".h", ".H", ".hxx", ".hpp", ".hh",
981 ".F", ".fpp", ".FPP",
983 ".S", ".spp", ".SPP"]
987 <varlistentry id="cv-CXX">
993 See also &cv-link-SHCXX; for compiling to shared objects..
997 <varlistentry id="cv-CXXCOM">
999 <envar>CXXCOM</envar>
1002 The command line used to compile a C++ source file to an object file.
1003 Any options specified in the &cv-link-CXXFLAGS; and
1004 &cv-link-CPPFLAGS; construction variables
1005 are included on this command line.
1006 See also &cv-link-SHCXXCOM; for compiling to shared objects..
1010 <varlistentry id="cv-CXXCOMSTR">
1012 <envar>CXXCOMSTR</envar>
1015 If set, the string displayed when a C++ source file
1016 is compiled to a (static) object file.
1017 If not set, then &cv-link-CXXCOM; (the command line) is displayed.
1018 See also &cv-link-SHCXXCOMSTR; for compiling to shared objects..
1022 env = Environment(CXXCOMSTR = "Compiling static object $TARGET")
1026 <varlistentry id="cv-CXXFILESUFFIX">
1028 <envar>CXXFILESUFFIX</envar>
1031 The suffix for C++ source files.
1032 This is used by the internal CXXFile builder
1033 when generating C++ files from Lex (.ll) or YACC (.yy) input files.
1034 The default suffix is
1035 <filename>.cc</filename>.
1036 SCons also treats files with the suffixes
1037 <filename>.cpp</filename>,
1038 <filename>.cxx</filename>,
1039 <filename>.c++</filename>,
1041 <filename>.C++</filename>
1044 <filename>.mm</filename>
1045 suffixes as Objective C++ files.
1046 On case-sensitive systems (Linux, UNIX, and other POSIX-alikes),
1048 <filename>.C</filename>
1054 <varlistentry id="cv-CXXFLAGS">
1056 <envar>CXXFLAGS</envar>
1059 General options that are passed to the C++ compiler.
1060 By default, this includes the value of &cv-link-CCFLAGS;,
1061 so that setting &cv-CCFLAGS; affects both C and C++ compilation.
1062 If you want to add C++-specific flags,
1063 you must set or override the value of &cv-link-CXXFLAGS;.
1064 See also &cv-link-SHCXXFLAGS; for compiling to shared objects..
1068 <varlistentry id="cv-CXXVERSION">
1070 <envar>CXXVERSION</envar>
1073 The version number of the C++ compiler.
1074 This may or may not be set,
1075 depending on the specific C++ compiler being used.
1079 <varlistentry id="cv-DC">
1084 The D compiler to use.
1085 See also &cv-link-SHDC; for compiling to shared objects.
1089 <varlistentry id="cv-DCOM">
1094 The command line used to compile a D file to an object file.
1095 Any options specified in the &cv-link-DFLAGS; construction variable
1096 is included on this command line.
1097 See also &cv-link-SHDCOM; for compiling to shared objects.
1101 <varlistentry id="cv-DCOMSTR">
1103 <envar>DCOMSTR</envar>
1106 If set, the string displayed when a D source file
1107 is compiled to a (static) object file.
1108 If not set, then &cv-link-DCOM; (the command line) is displayed.
1109 See also &cv-link-SHDCOMSTR; for compiling to shared objects.
1113 <varlistentry id="cv-DDEBUG">
1115 <envar>DDEBUG</envar>
1118 List of debug tags to enable when compiling.
1122 <varlistentry id="cv-DDEBUGPREFIX">
1124 <envar>DDEBUGPREFIX</envar>
1131 <varlistentry id="cv-DDEBUGSUFFIX">
1133 <envar>DDEBUGSUFFIX</envar>
1140 <varlistentry id="cv-DESCRIPTION">
1142 <envar>DESCRIPTION</envar>
1145 A long description of the project being packaged.
1146 This is included in the relevant section
1147 of the file that controls the packaging build.
1149 <para>See the &b-link-Package; builder.</para>
1152 <varlistentry id="cv-DESCRIPTION_lang">
1154 <envar>DESCRIPTION_lang</envar>
1157 A language-specific long description for
1158 the specified <varname>lang</varname>.
1159 This is used to populate a
1160 <literal>%description -l</literal>
1162 <filename>.spec</filename> file.
1164 <para>See the &b-link-Package; builder.</para>
1167 <varlistentry id="cv-DFILESUFFIX">
1169 <envar>DFILESUFFIX</envar>
1176 <varlistentry id="cv-DFLAGPREFIX">
1178 <envar>DFLAGPREFIX</envar>
1185 <varlistentry id="cv-DFLAGS">
1187 <envar>DFLAGS</envar>
1190 General options that are passed to the D compiler.
1194 <varlistentry id="cv-DFLAGSUFFIX">
1196 <envar>DFLAGSUFFIX</envar>
1203 <varlistentry id="cv-DI_FILE_DIR">
1205 <envar>DI_FILE_DIR</envar>
1208 Path where .di files will be generated
1212 <varlistentry id="cv-DI_FILE_DIR_PREFIX">
1214 <envar>DI_FILE_DIR_PREFIX</envar>
1217 Prefix to send the di path argument to compiler
1221 <varlistentry id="cv-DI_FILE_DIR_SUFFFIX">
1223 <envar>DI_FILE_DIR_SUFFFIX</envar>
1226 Suffix to send the di path argument to compiler
1230 <varlistentry id="cv-DI_FILE_SUFFIX">
1232 <envar>DI_FILE_SUFFIX</envar>
1235 Suffix of d include files default is .di
1239 <varlistentry id="cv-DINCPREFIX">
1241 <envar>DINCPREFIX</envar>
1248 <varlistentry id="cv-DINCSUFFIX">
1250 <envar>DINCSUFFIX</envar>
1257 <varlistentry id="cv-Dir">
1262 A function that converts a string
1263 into a Dir instance relative to the target being built.
1267 <varlistentry id="cv-Dirs">
1272 A function that converts a list of strings
1273 into a list of Dir instances relative to the target being built.
1277 <varlistentry id="cv-DLIB">
1282 Name of the lib tool to use for D codes.
1286 <varlistentry id="cv-DLIBCOM">
1288 <envar>DLIBCOM</envar>
1291 The command line to use when creating libraries.
1295 <varlistentry id="cv-DLIBDIRPREFIX">
1297 <envar>DLIBDIRPREFIX</envar>
1304 <varlistentry id="cv-DLIBDIRSUFFIX">
1306 <envar>DLIBDIRSUFFIX</envar>
1313 <varlistentry id="cv-DLIBFLAGPREFIX">
1315 <envar>DLIBFLAGPREFIX</envar>
1322 <varlistentry id="cv-DLIBFLAGSUFFIX">
1324 <envar>DLIBFLAGSUFFIX</envar>
1331 <varlistentry id="cv-DLIBLINKPREFIX">
1333 <envar>DLIBLINKPREFIX</envar>
1340 <varlistentry id="cv-DLIBLINKSUFFIX">
1342 <envar>DLIBLINKSUFFIX</envar>
1349 <varlistentry id="cv-DLINK">
1351 <envar>DLINK</envar>
1354 Name of the linker to use for linking systems including D sources.
1355 See also &cv-link-SHDLINK; for linking shared objects.
1359 <varlistentry id="cv-DLINKCOM">
1361 <envar>DLINKCOM</envar>
1364 The command line to use when linking systems including D sources.
1365 See also &cv-link-SHDLINKCOM; for linking shared objects.
1369 <varlistentry id="cv-DLINKFLAGPREFIX">
1371 <envar>DLINKFLAGPREFIX</envar>
1378 <varlistentry id="cv-DLINKFLAGS">
1380 <envar>DLINKFLAGS</envar>
1383 List of linker flags.
1384 See also &cv-link-SHDLINKFLAGS; for linking shared objects.
1388 <varlistentry id="cv-DLINKFLAGSUFFIX">
1390 <envar>DLINKFLAGSUFFIX</envar>
1397 <varlistentry id="cv-DOCBOOK_DEFAULT_XSL_EPUB">
1399 <envar>DOCBOOK_DEFAULT_XSL_EPUB</envar>
1402 The default XSLT file for the &b-link-DocbookEpub; builder within the
1403 current environment, if no other XSLT gets specified via keyword.
1407 <varlistentry id="cv-DOCBOOK_DEFAULT_XSL_HTML">
1409 <envar>DOCBOOK_DEFAULT_XSL_HTML</envar>
1412 The default XSLT file for the &b-link-DocbookHtml; builder within the
1413 current environment, if no other XSLT gets specified via keyword.
1417 <varlistentry id="cv-DOCBOOK_DEFAULT_XSL_HTMLCHUNKED">
1419 <envar>DOCBOOK_DEFAULT_XSL_HTMLCHUNKED</envar>
1422 The default XSLT file for the &b-link-DocbookHtmlChunked; builder within the
1423 current environment, if no other XSLT gets specified via keyword.
1427 <varlistentry id="cv-DOCBOOK_DEFAULT_XSL_HTMLHELP">
1429 <envar>DOCBOOK_DEFAULT_XSL_HTMLHELP</envar>
1432 The default XSLT file for the &b-link-DocbookHtmlhelp; builder within the
1433 current environment, if no other XSLT gets specified via keyword.
1437 <varlistentry id="cv-DOCBOOK_DEFAULT_XSL_MAN">
1439 <envar>DOCBOOK_DEFAULT_XSL_MAN</envar>
1442 The default XSLT file for the &b-link-DocbookMan; builder within the
1443 current environment, if no other XSLT gets specified via keyword.
1447 <varlistentry id="cv-DOCBOOK_DEFAULT_XSL_PDF">
1449 <envar>DOCBOOK_DEFAULT_XSL_PDF</envar>
1452 The default XSLT file for the &b-link-DocbookPdf; builder within the
1453 current environment, if no other XSLT gets specified via keyword.
1457 <varlistentry id="cv-DOCBOOK_DEFAULT_XSL_SLIDESHTML">
1459 <envar>DOCBOOK_DEFAULT_XSL_SLIDESHTML</envar>
1462 The default XSLT file for the &b-link-DocbookSlidesHtml; builder within the
1463 current environment, if no other XSLT gets specified via keyword.
1467 <varlistentry id="cv-DOCBOOK_DEFAULT_XSL_SLIDESPDF">
1469 <envar>DOCBOOK_DEFAULT_XSL_SLIDESPDF</envar>
1472 The default XSLT file for the &b-link-DocbookSlidesPdf; builder within the
1473 current environment, if no other XSLT gets specified via keyword.
1477 <varlistentry id="cv-DOCBOOK_FOP">
1479 <envar>DOCBOOK_FOP</envar>
1482 The path to the PDF renderer <literal>fop</literal> or <literal>xep</literal>,
1483 if one of them is installed (<literal>fop</literal> gets checked first).
1487 <varlistentry id="cv-DOCBOOK_FOPCOM">
1489 <envar>DOCBOOK_FOPCOM</envar>
1492 The full command-line for the
1493 PDF renderer <literal>fop</literal> or <literal>xep</literal>.
1497 <varlistentry id="cv-DOCBOOK_FOPCOMSTR">
1499 <envar>DOCBOOK_FOPCOMSTR</envar>
1502 The string displayed when a renderer like <literal>fop</literal> or
1503 <literal>xep</literal> is used to create PDF output from an XML file.
1507 <varlistentry id="cv-DOCBOOK_FOPFLAGS">
1509 <envar>DOCBOOK_FOPFLAGS</envar>
1512 Additonal command-line flags for the
1513 PDF renderer <literal>fop</literal> or <literal>xep</literal>.
1517 <varlistentry id="cv-DOCBOOK_XMLLINT">
1519 <envar>DOCBOOK_XMLLINT</envar>
1522 The path to the external executable <literal>xmllint</literal>, if it's installed.
1523 Note, that this is only used as last fallback for resolving
1524 XIncludes, if no lxml Python binding can be imported
1525 in the current system.
1529 <varlistentry id="cv-DOCBOOK_XMLLINTCOM">
1531 <envar>DOCBOOK_XMLLINTCOM</envar>
1534 The full command-line for the external executable
1535 <literal>xmllint</literal>.
1539 <varlistentry id="cv-DOCBOOK_XMLLINTCOMSTR">
1541 <envar>DOCBOOK_XMLLINTCOMSTR</envar>
1544 The string displayed when <literal>xmllint</literal> is used to resolve
1545 XIncludes for a given XML file.
1549 <varlistentry id="cv-DOCBOOK_XMLLINTFLAGS">
1551 <envar>DOCBOOK_XMLLINTFLAGS</envar>
1554 Additonal command-line flags for the external executable
1555 <literal>xmllint</literal>.
1559 <varlistentry id="cv-DOCBOOK_XSLTPROC">
1561 <envar>DOCBOOK_XSLTPROC</envar>
1564 The path to the external executable <literal>xsltproc</literal>
1565 (or <literal>saxon</literal>, <literal>xalan</literal>), if one of them
1567 Note, that this is only used as last fallback for XSL transformations, if
1568 no lxml Python binding can be imported in the current system.
1572 <varlistentry id="cv-DOCBOOK_XSLTPROCCOM">
1574 <envar>DOCBOOK_XSLTPROCCOM</envar>
1577 The full command-line for the external executable
1578 <literal>xsltproc</literal> (or <literal>saxon</literal>,
1579 <literal>xalan</literal>).
1583 <varlistentry id="cv-DOCBOOK_XSLTPROCCOMSTR">
1585 <envar>DOCBOOK_XSLTPROCCOMSTR</envar>
1588 The string displayed when <literal>xsltproc</literal> is used to transform
1589 an XML file via a given XSLT stylesheet.
1593 <varlistentry id="cv-DOCBOOK_XSLTPROCFLAGS">
1595 <envar>DOCBOOK_XSLTPROCFLAGS</envar>
1598 Additonal command-line flags for the external executable
1599 <literal>xsltproc</literal> (or <literal>saxon</literal>,
1600 <literal>xalan</literal>).
1604 <varlistentry id="cv-DOCBOOK_XSLTPROCPARAMS">
1606 <envar>DOCBOOK_XSLTPROCPARAMS</envar>
1609 Additonal parameters that are not intended for the XSLT processor executable, but
1610 the XSL processing itself. By default, they get appended at the end of the command line
1611 for <literal>saxon</literal> and <literal>saxon-xslt</literal>, respectively.
1615 <varlistentry id="cv-DPATH">
1617 <envar>DPATH</envar>
1620 List of paths to search for import modules.
1624 <varlistentry id="cv-DRPATHPREFIX">
1626 <envar>DRPATHPREFIX</envar>
1633 <varlistentry id="cv-DRPATHSUFFIX">
1635 <envar>DRPATHSUFFIX</envar>
1642 <varlistentry id="cv-DSUFFIXES">
1644 <envar>DSUFFIXES</envar>
1647 The list of suffixes of files that will be scanned
1648 for imported D package files.
1649 The default list is <literal>['.d']</literal>.
1653 <varlistentry id="cv-DVERPREFIX">
1655 <envar>DVERPREFIX</envar>
1662 <varlistentry id="cv-DVERSIONS">
1664 <envar>DVERSIONS</envar>
1667 List of version tags to enable when compiling.
1671 <varlistentry id="cv-DVERSUFFIX">
1673 <envar>DVERSUFFIX</envar>
1680 <varlistentry id="cv-DVIPDF">
1682 <envar>DVIPDF</envar>
1685 The TeX DVI file to PDF file converter.
1689 <varlistentry id="cv-DVIPDFCOM">
1691 <envar>DVIPDFCOM</envar>
1694 The command line used to convert TeX DVI files into a PDF file.
1698 <varlistentry id="cv-DVIPDFCOMSTR">
1700 <envar>DVIPDFCOMSTR</envar>
1703 The string displayed when a TeX DVI file
1704 is converted into a PDF file.
1705 If this is not set, then &cv-link-DVIPDFCOM; (the command line) is displayed.
1709 <varlistentry id="cv-DVIPDFFLAGS">
1711 <envar>DVIPDFFLAGS</envar>
1714 General options passed to the TeX DVI file to PDF file converter.
1718 <varlistentry id="cv-DVIPS">
1720 <envar>DVIPS</envar>
1723 The TeX DVI file to PostScript converter.
1727 <varlistentry id="cv-DVIPSFLAGS">
1729 <envar>DVIPSFLAGS</envar>
1732 General options passed to the TeX DVI file to PostScript converter.
1736 <varlistentry id="cv-ENV">
1741 The <firstterm>execution environment</firstterm> -
1742 a dictionary of environment variables
1743 used when &SCons; invokes external commands
1744 to build targets defined in this &consenv;.
1745 When &cv-ENV; is passed to a command,
1746 all list values are assumed to be path lists and
1747 are joined using the search path separator.
1748 Any other non-string values are coerced to a string.
1752 Note that by default
1755 <emphasis>not</emphasis>
1756 propagate the environment in effect when you execute
1757 &scons; (the "shell environment")
1758 to the execution environment.
1759 This is so that builds will be guaranteed
1760 repeatable regardless of the environment
1761 variables set at the time
1764 If you want to propagate a
1765 shell environment variable
1766 to the commands executed
1767 to build target files,
1768 you must do so explicitly.
1771 environment variable,
1774 will find utilities the same way
1775 as the invoking shell (or other process):
1780 env = Environment(ENV={'PATH': os.environ['PATH']})
1784 Although it is usually not recommended,
1785 you can propagate the entire shell environment
1791 env = Environment(ENV=os.environ.copy())
1796 <varlistentry id="cv-ESCAPE">
1798 <envar>ESCAPE</envar>
1801 A function that will be called to escape shell special characters in
1802 command lines. The function should take one argument: the command line
1803 string to escape; and should return the escaped command line.
1807 <varlistentry id="cv-F03">
1812 The Fortran 03 compiler.
1813 You should normally set the &cv-link-FORTRAN; variable,
1814 which specifies the default Fortran compiler
1815 for all Fortran versions.
1816 You only need to set &cv-link-F03; if you need to use a specific compiler
1817 or compiler version for Fortran 03 files.
1821 <varlistentry id="cv-F03COM">
1823 <envar>F03COM</envar>
1826 The command line used to compile a Fortran 03 source file to an object file.
1827 You only need to set &cv-link-F03COM; if you need to use a specific
1828 command line for Fortran 03 files.
1829 You should normally set the &cv-link-FORTRANCOM; variable,
1830 which specifies the default command line
1831 for all Fortran versions.
1835 <varlistentry id="cv-F03COMSTR">
1837 <envar>F03COMSTR</envar>
1840 If set, the string displayed when a Fortran 03 source file
1841 is compiled to an object file.
1842 If not set, then &cv-link-F03COM; or &cv-link-FORTRANCOM;
1843 (the command line) is displayed.
1847 <varlistentry id="cv-F03FILESUFFIXES">
1849 <envar>F03FILESUFFIXES</envar>
1852 The list of file extensions for which the F03 dialect will be used. By
1853 default, this is <literal>['.f03']</literal>
1857 <varlistentry id="cv-F03FLAGS">
1859 <envar>F03FLAGS</envar>
1862 General user-specified options that are passed to the Fortran 03 compiler.
1863 Note that this variable does
1864 <emphasis>not</emphasis>
1867 (or similar) include search path options
1868 that scons generates automatically from &cv-link-F03PATH;.
1870 &cv-link-_F03INCFLAGS;
1872 for the variable that expands to those options.
1873 You only need to set &cv-link-F03FLAGS; if you need to define specific
1874 user options for Fortran 03 files.
1875 You should normally set the &cv-link-FORTRANFLAGS; variable,
1876 which specifies the user-specified options
1877 passed to the default Fortran compiler
1878 for all Fortran versions.
1882 <varlistentry id="cv-_F03INCFLAGS">
1884 <envar>_F03INCFLAGS</envar>
1887 An automatically-generated construction variable
1888 containing the Fortran 03 compiler command-line options
1889 for specifying directories to be searched for include files.
1890 The value of &cv-link-_F03INCFLAGS; is created
1891 by appending &cv-link-INCPREFIX; and &cv-link-INCSUFFIX;
1892 to the beginning and end
1893 of each directory in &cv-link-F03PATH;.
1897 <varlistentry id="cv-F03PATH">
1899 <envar>F03PATH</envar>
1902 The list of directories that the Fortran 03 compiler will search for include
1903 directories. The implicit dependency scanner will search these
1904 directories for include files. Don't explicitly put include directory
1905 arguments in &cv-link-F03FLAGS; because the result will be non-portable
1906 and the directories will not be searched by the dependency scanner. Note:
1907 directory names in &cv-link-F03PATH; will be looked-up relative to the SConscript
1908 directory when they are used in a command. To force
1910 to look-up a directory relative to the root of the source tree use #:
1911 You only need to set &cv-link-F03PATH; if you need to define a specific
1912 include path for Fortran 03 files.
1913 You should normally set the &cv-link-FORTRANPATH; variable,
1914 which specifies the include path
1915 for the default Fortran compiler
1916 for all Fortran versions.
1920 env = Environment(F03PATH='#/include')
1924 The directory look-up can also be forced using the
1930 include = Dir('include')
1931 env = Environment(F03PATH=include)
1935 The directory list will be added to command lines
1936 through the automatically-generated
1937 &cv-link-_F03INCFLAGS;
1938 construction variable,
1939 which is constructed by
1940 appending the values of the
1941 &cv-link-INCPREFIX; and &cv-link-INCSUFFIX;
1942 construction variables
1943 to the beginning and end
1944 of each directory in &cv-link-F03PATH;.
1945 Any command lines you define that need
1946 the F03PATH directory list should
1947 include &cv-link-_F03INCFLAGS;:
1951 env = Environment(F03COM="my_compiler $_F03INCFLAGS -c -o $TARGET $SOURCE")
1955 <varlistentry id="cv-F03PPCOM">
1957 <envar>F03PPCOM</envar>
1960 The command line used to compile a Fortran 03 source file to an object file
1961 after first running the file through the C preprocessor.
1962 Any options specified in the &cv-link-F03FLAGS; and &cv-link-CPPFLAGS; construction variables
1963 are included on this command line.
1964 You only need to set &cv-link-F03PPCOM; if you need to use a specific
1965 C-preprocessor command line for Fortran 03 files.
1966 You should normally set the &cv-link-FORTRANPPCOM; variable,
1967 which specifies the default C-preprocessor command line
1968 for all Fortran versions.
1972 <varlistentry id="cv-F03PPCOMSTR">
1974 <envar>F03PPCOMSTR</envar>
1977 If set, the string displayed when a Fortran 03 source file
1978 is compiled to an object file
1979 after first running the file through the C preprocessor.
1980 If not set, then &cv-link-F03PPCOM; or &cv-link-FORTRANPPCOM;
1981 (the command line) is displayed.
1985 <varlistentry id="cv-F03PPFILESUFFIXES">
1987 <envar>F03PPFILESUFFIXES</envar>
1990 The list of file extensions for which the compilation + preprocessor pass for
1991 F03 dialect will be used. By default, this is empty.
1995 <varlistentry id="cv-F08">
2000 The Fortran 08 compiler.
2001 You should normally set the &cv-link-FORTRAN; variable,
2002 which specifies the default Fortran compiler
2003 for all Fortran versions.
2004 You only need to set &cv-link-F08; if you need to use a specific compiler
2005 or compiler version for Fortran 08 files.
2009 <varlistentry id="cv-F08COM">
2011 <envar>F08COM</envar>
2014 The command line used to compile a Fortran 08 source file to an object file.
2015 You only need to set &cv-link-F08COM; if you need to use a specific
2016 command line for Fortran 08 files.
2017 You should normally set the &cv-link-FORTRANCOM; variable,
2018 which specifies the default command line
2019 for all Fortran versions.
2023 <varlistentry id="cv-F08COMSTR">
2025 <envar>F08COMSTR</envar>
2028 If set, the string displayed when a Fortran 08 source file
2029 is compiled to an object file.
2030 If not set, then &cv-link-F08COM; or &cv-link-FORTRANCOM;
2031 (the command line) is displayed.
2035 <varlistentry id="cv-F08FILESUFFIXES">
2037 <envar>F08FILESUFFIXES</envar>
2040 The list of file extensions for which the F08 dialect will be used. By
2041 default, this is <literal>['.f08']</literal>
2045 <varlistentry id="cv-F08FLAGS">
2047 <envar>F08FLAGS</envar>
2050 General user-specified options that are passed to the Fortran 08 compiler.
2051 Note that this variable does
2052 <emphasis>not</emphasis>
2055 (or similar) include search path options
2056 that scons generates automatically from &cv-link-F08PATH;.
2058 &cv-link-_F08INCFLAGS;
2060 for the variable that expands to those options.
2061 You only need to set &cv-link-F08FLAGS; if you need to define specific
2062 user options for Fortran 08 files.
2063 You should normally set the &cv-link-FORTRANFLAGS; variable,
2064 which specifies the user-specified options
2065 passed to the default Fortran compiler
2066 for all Fortran versions.
2070 <varlistentry id="cv-_F08INCFLAGS">
2072 <envar>_F08INCFLAGS</envar>
2075 An automatically-generated construction variable
2076 containing the Fortran 08 compiler command-line options
2077 for specifying directories to be searched for include files.
2078 The value of &cv-link-_F08INCFLAGS; is created
2079 by appending &cv-link-INCPREFIX; and &cv-link-INCSUFFIX;
2080 to the beginning and end
2081 of each directory in &cv-link-F08PATH;.
2085 <varlistentry id="cv-F08PATH">
2087 <envar>F08PATH</envar>
2090 The list of directories that the Fortran 08 compiler will search for include
2091 directories. The implicit dependency scanner will search these
2092 directories for include files. Don't explicitly put include directory
2093 arguments in &cv-link-F08FLAGS; because the result will be non-portable
2094 and the directories will not be searched by the dependency scanner. Note:
2095 directory names in &cv-link-F08PATH; will be looked-up relative to the SConscript
2096 directory when they are used in a command. To force
2098 to look-up a directory relative to the root of the source tree use #:
2099 You only need to set &cv-link-F08PATH; if you need to define a specific
2100 include path for Fortran 08 files.
2101 You should normally set the &cv-link-FORTRANPATH; variable,
2102 which specifies the include path
2103 for the default Fortran compiler
2104 for all Fortran versions.
2108 env = Environment(F08PATH='#/include')
2112 The directory look-up can also be forced using the
2118 include = Dir('include')
2119 env = Environment(F08PATH=include)
2123 The directory list will be added to command lines
2124 through the automatically-generated
2125 &cv-link-_F08INCFLAGS;
2126 construction variable,
2127 which is constructed by
2128 appending the values of the
2129 &cv-link-INCPREFIX; and &cv-link-INCSUFFIX;
2130 construction variables
2131 to the beginning and end
2132 of each directory in &cv-link-F08PATH;.
2133 Any command lines you define that need
2134 the F08PATH directory list should
2135 include &cv-link-_F08INCFLAGS;:
2139 env = Environment(F08COM="my_compiler $_F08INCFLAGS -c -o $TARGET $SOURCE")
2143 <varlistentry id="cv-F08PPCOM">
2145 <envar>F08PPCOM</envar>
2148 The command line used to compile a Fortran 08 source file to an object file
2149 after first running the file through the C preprocessor.
2150 Any options specified in the &cv-link-F08FLAGS; and &cv-link-CPPFLAGS; construction variables
2151 are included on this command line.
2152 You only need to set &cv-link-F08PPCOM; if you need to use a specific
2153 C-preprocessor command line for Fortran 08 files.
2154 You should normally set the &cv-link-FORTRANPPCOM; variable,
2155 which specifies the default C-preprocessor command line
2156 for all Fortran versions.
2160 <varlistentry id="cv-F08PPCOMSTR">
2162 <envar>F08PPCOMSTR</envar>
2165 If set, the string displayed when a Fortran 08 source file
2166 is compiled to an object file
2167 after first running the file through the C preprocessor.
2168 If not set, then &cv-link-F08PPCOM; or &cv-link-FORTRANPPCOM;
2169 (the command line) is displayed.
2173 <varlistentry id="cv-F08PPFILESUFFIXES">
2175 <envar>F08PPFILESUFFIXES</envar>
2178 The list of file extensions for which the compilation + preprocessor pass for
2179 F08 dialect will be used. By default, this is empty.
2183 <varlistentry id="cv-F77">
2188 The Fortran 77 compiler.
2189 You should normally set the &cv-link-FORTRAN; variable,
2190 which specifies the default Fortran compiler
2191 for all Fortran versions.
2192 You only need to set &cv-link-F77; if you need to use a specific compiler
2193 or compiler version for Fortran 77 files.
2197 <varlistentry id="cv-F77COM">
2199 <envar>F77COM</envar>
2202 The command line used to compile a Fortran 77 source file to an object file.
2203 You only need to set &cv-link-F77COM; if you need to use a specific
2204 command line for Fortran 77 files.
2205 You should normally set the &cv-link-FORTRANCOM; variable,
2206 which specifies the default command line
2207 for all Fortran versions.
2211 <varlistentry id="cv-F77COMSTR">
2213 <envar>F77COMSTR</envar>
2216 If set, the string displayed when a Fortran 77 source file
2217 is compiled to an object file.
2218 If not set, then &cv-link-F77COM; or &cv-link-FORTRANCOM;
2219 (the command line) is displayed.
2223 <varlistentry id="cv-F77FILESUFFIXES">
2225 <envar>F77FILESUFFIXES</envar>
2228 The list of file extensions for which the F77 dialect will be used. By
2229 default, this is <literal>['.f77']</literal>
2233 <varlistentry id="cv-F77FLAGS">
2235 <envar>F77FLAGS</envar>
2238 General user-specified options that are passed to the Fortran 77 compiler.
2239 Note that this variable does
2240 <emphasis>not</emphasis>
2243 (or similar) include search path options
2244 that scons generates automatically from &cv-link-F77PATH;.
2246 &cv-link-_F77INCFLAGS;
2248 for the variable that expands to those options.
2249 You only need to set &cv-link-F77FLAGS; if you need to define specific
2250 user options for Fortran 77 files.
2251 You should normally set the &cv-link-FORTRANFLAGS; variable,
2252 which specifies the user-specified options
2253 passed to the default Fortran compiler
2254 for all Fortran versions.
2258 <varlistentry id="cv-_F77INCFLAGS">
2260 <envar>_F77INCFLAGS</envar>
2263 An automatically-generated construction variable
2264 containing the Fortran 77 compiler command-line options
2265 for specifying directories to be searched for include files.
2266 The value of &cv-link-_F77INCFLAGS; is created
2267 by appending &cv-link-INCPREFIX; and &cv-link-INCSUFFIX;
2268 to the beginning and end
2269 of each directory in &cv-link-F77PATH;.
2273 <varlistentry id="cv-F77PATH">
2275 <envar>F77PATH</envar>
2278 The list of directories that the Fortran 77 compiler will search for include
2279 directories. The implicit dependency scanner will search these
2280 directories for include files. Don't explicitly put include directory
2281 arguments in &cv-link-F77FLAGS; because the result will be non-portable
2282 and the directories will not be searched by the dependency scanner. Note:
2283 directory names in &cv-link-F77PATH; will be looked-up relative to the SConscript
2284 directory when they are used in a command. To force
2286 to look-up a directory relative to the root of the source tree use #:
2287 You only need to set &cv-link-F77PATH; if you need to define a specific
2288 include path for Fortran 77 files.
2289 You should normally set the &cv-link-FORTRANPATH; variable,
2290 which specifies the include path
2291 for the default Fortran compiler
2292 for all Fortran versions.
2296 env = Environment(F77PATH='#/include')
2300 The directory look-up can also be forced using the
2306 include = Dir('include')
2307 env = Environment(F77PATH=include)
2311 The directory list will be added to command lines
2312 through the automatically-generated
2313 &cv-link-_F77INCFLAGS;
2314 construction variable,
2315 which is constructed by
2316 appending the values of the
2317 &cv-link-INCPREFIX; and &cv-link-INCSUFFIX;
2318 construction variables
2319 to the beginning and end
2320 of each directory in &cv-link-F77PATH;.
2321 Any command lines you define that need
2322 the F77PATH directory list should
2323 include &cv-link-_F77INCFLAGS;:
2327 env = Environment(F77COM="my_compiler $_F77INCFLAGS -c -o $TARGET $SOURCE")
2331 <varlistentry id="cv-F77PPCOM">
2333 <envar>F77PPCOM</envar>
2336 The command line used to compile a Fortran 77 source file to an object file
2337 after first running the file through the C preprocessor.
2338 Any options specified in the &cv-link-F77FLAGS; and &cv-link-CPPFLAGS; construction variables
2339 are included on this command line.
2340 You only need to set &cv-link-F77PPCOM; if you need to use a specific
2341 C-preprocessor command line for Fortran 77 files.
2342 You should normally set the &cv-link-FORTRANPPCOM; variable,
2343 which specifies the default C-preprocessor command line
2344 for all Fortran versions.
2348 <varlistentry id="cv-F77PPCOMSTR">
2350 <envar>F77PPCOMSTR</envar>
2353 If set, the string displayed when a Fortran 77 source file
2354 is compiled to an object file
2355 after first running the file through the C preprocessor.
2356 If not set, then &cv-link-F77PPCOM; or &cv-link-FORTRANPPCOM;
2357 (the command line) is displayed.
2361 <varlistentry id="cv-F77PPFILESUFFIXES">
2363 <envar>F77PPFILESUFFIXES</envar>
2366 The list of file extensions for which the compilation + preprocessor pass for
2367 F77 dialect will be used. By default, this is empty.
2371 <varlistentry id="cv-F90">
2376 The Fortran 90 compiler.
2377 You should normally set the &cv-link-FORTRAN; variable,
2378 which specifies the default Fortran compiler
2379 for all Fortran versions.
2380 You only need to set &cv-link-F90; if you need to use a specific compiler
2381 or compiler version for Fortran 90 files.
2385 <varlistentry id="cv-F90COM">
2387 <envar>F90COM</envar>
2390 The command line used to compile a Fortran 90 source file to an object file.
2391 You only need to set &cv-link-F90COM; if you need to use a specific
2392 command line for Fortran 90 files.
2393 You should normally set the &cv-link-FORTRANCOM; variable,
2394 which specifies the default command line
2395 for all Fortran versions.
2399 <varlistentry id="cv-F90COMSTR">
2401 <envar>F90COMSTR</envar>
2404 If set, the string displayed when a Fortran 90 source file
2405 is compiled to an object file.
2406 If not set, then &cv-link-F90COM; or &cv-link-FORTRANCOM;
2407 (the command line) is displayed.
2411 <varlistentry id="cv-F90FILESUFFIXES">
2413 <envar>F90FILESUFFIXES</envar>
2416 The list of file extensions for which the F90 dialect will be used. By
2417 default, this is <literal>['.f90']</literal>
2421 <varlistentry id="cv-F90FLAGS">
2423 <envar>F90FLAGS</envar>
2426 General user-specified options that are passed to the Fortran 90 compiler.
2427 Note that this variable does
2428 <emphasis>not</emphasis>
2431 (or similar) include search path options
2432 that scons generates automatically from &cv-link-F90PATH;.
2434 &cv-link-_F90INCFLAGS;
2436 for the variable that expands to those options.
2437 You only need to set &cv-link-F90FLAGS; if you need to define specific
2438 user options for Fortran 90 files.
2439 You should normally set the &cv-link-FORTRANFLAGS; variable,
2440 which specifies the user-specified options
2441 passed to the default Fortran compiler
2442 for all Fortran versions.
2446 <varlistentry id="cv-_F90INCFLAGS">
2448 <envar>_F90INCFLAGS</envar>
2451 An automatically-generated construction variable
2452 containing the Fortran 90 compiler command-line options
2453 for specifying directories to be searched for include files.
2454 The value of &cv-link-_F90INCFLAGS; is created
2455 by appending &cv-link-INCPREFIX; and &cv-link-INCSUFFIX;
2456 to the beginning and end
2457 of each directory in &cv-link-F90PATH;.
2461 <varlistentry id="cv-F90PATH">
2463 <envar>F90PATH</envar>
2466 The list of directories that the Fortran 90 compiler will search for include
2467 directories. The implicit dependency scanner will search these
2468 directories for include files. Don't explicitly put include directory
2469 arguments in &cv-link-F90FLAGS; because the result will be non-portable
2470 and the directories will not be searched by the dependency scanner. Note:
2471 directory names in &cv-link-F90PATH; will be looked-up relative to the SConscript
2472 directory when they are used in a command. To force
2474 to look-up a directory relative to the root of the source tree use #:
2475 You only need to set &cv-link-F90PATH; if you need to define a specific
2476 include path for Fortran 90 files.
2477 You should normally set the &cv-link-FORTRANPATH; variable,
2478 which specifies the include path
2479 for the default Fortran compiler
2480 for all Fortran versions.
2484 env = Environment(F90PATH='#/include')
2488 The directory look-up can also be forced using the
2494 include = Dir('include')
2495 env = Environment(F90PATH=include)
2499 The directory list will be added to command lines
2500 through the automatically-generated
2501 &cv-link-_F90INCFLAGS;
2502 construction variable,
2503 which is constructed by
2504 appending the values of the
2505 &cv-link-INCPREFIX; and &cv-link-INCSUFFIX;
2506 construction variables
2507 to the beginning and end
2508 of each directory in &cv-link-F90PATH;.
2509 Any command lines you define that need
2510 the F90PATH directory list should
2511 include &cv-link-_F90INCFLAGS;:
2515 env = Environment(F90COM="my_compiler $_F90INCFLAGS -c -o $TARGET $SOURCE")
2519 <varlistentry id="cv-F90PPCOM">
2521 <envar>F90PPCOM</envar>
2524 The command line used to compile a Fortran 90 source file to an object file
2525 after first running the file through the C preprocessor.
2526 Any options specified in the &cv-link-F90FLAGS; and &cv-link-CPPFLAGS; construction variables
2527 are included on this command line.
2528 You only need to set &cv-link-F90PPCOM; if you need to use a specific
2529 C-preprocessor command line for Fortran 90 files.
2530 You should normally set the &cv-link-FORTRANPPCOM; variable,
2531 which specifies the default C-preprocessor command line
2532 for all Fortran versions.
2536 <varlistentry id="cv-F90PPCOMSTR">
2538 <envar>F90PPCOMSTR</envar>
2541 If set, the string displayed when a Fortran 90 source file
2542 is compiled after first running the file through the C preprocessor.
2543 If not set, then &cv-link-F90PPCOM; or &cv-link-FORTRANPPCOM;
2544 (the command line) is displayed.
2548 <varlistentry id="cv-F90PPFILESUFFIXES">
2550 <envar>F90PPFILESUFFIXES</envar>
2553 The list of file extensions for which the compilation + preprocessor pass for
2554 F90 dialect will be used. By default, this is empty.
2558 <varlistentry id="cv-F95">
2563 The Fortran 95 compiler.
2564 You should normally set the &cv-link-FORTRAN; variable,
2565 which specifies the default Fortran compiler
2566 for all Fortran versions.
2567 You only need to set &cv-link-F95; if you need to use a specific compiler
2568 or compiler version for Fortran 95 files.
2572 <varlistentry id="cv-F95COM">
2574 <envar>F95COM</envar>
2577 The command line used to compile a Fortran 95 source file to an object file.
2578 You only need to set &cv-link-F95COM; if you need to use a specific
2579 command line for Fortran 95 files.
2580 You should normally set the &cv-link-FORTRANCOM; variable,
2581 which specifies the default command line
2582 for all Fortran versions.
2586 <varlistentry id="cv-F95COMSTR">
2588 <envar>F95COMSTR</envar>
2591 If set, the string displayed when a Fortran 95 source file
2592 is compiled to an object file.
2593 If not set, then &cv-link-F95COM; or &cv-link-FORTRANCOM;
2594 (the command line) is displayed.
2598 <varlistentry id="cv-F95FILESUFFIXES">
2600 <envar>F95FILESUFFIXES</envar>
2603 The list of file extensions for which the F95 dialect will be used. By
2604 default, this is <literal>['.f95']</literal>
2608 <varlistentry id="cv-F95FLAGS">
2610 <envar>F95FLAGS</envar>
2613 General user-specified options that are passed to the Fortran 95 compiler.
2614 Note that this variable does
2615 <emphasis>not</emphasis>
2618 (or similar) include search path options
2619 that scons generates automatically from &cv-link-F95PATH;.
2621 &cv-link-_F95INCFLAGS;
2623 for the variable that expands to those options.
2624 You only need to set &cv-link-F95FLAGS; if you need to define specific
2625 user options for Fortran 95 files.
2626 You should normally set the &cv-link-FORTRANFLAGS; variable,
2627 which specifies the user-specified options
2628 passed to the default Fortran compiler
2629 for all Fortran versions.
2633 <varlistentry id="cv-_F95INCFLAGS">
2635 <envar>_F95INCFLAGS</envar>
2638 An automatically-generated construction variable
2639 containing the Fortran 95 compiler command-line options
2640 for specifying directories to be searched for include files.
2641 The value of &cv-link-_F95INCFLAGS; is created
2642 by appending &cv-link-INCPREFIX; and &cv-link-INCSUFFIX;
2643 to the beginning and end
2644 of each directory in &cv-link-F95PATH;.
2648 <varlistentry id="cv-F95PATH">
2650 <envar>F95PATH</envar>
2653 The list of directories that the Fortran 95 compiler will search for include
2654 directories. The implicit dependency scanner will search these
2655 directories for include files. Don't explicitly put include directory
2656 arguments in &cv-link-F95FLAGS; because the result will be non-portable
2657 and the directories will not be searched by the dependency scanner. Note:
2658 directory names in &cv-link-F95PATH; will be looked-up relative to the SConscript
2659 directory when they are used in a command. To force
2661 to look-up a directory relative to the root of the source tree use #:
2662 You only need to set &cv-link-F95PATH; if you need to define a specific
2663 include path for Fortran 95 files.
2664 You should normally set the &cv-link-FORTRANPATH; variable,
2665 which specifies the include path
2666 for the default Fortran compiler
2667 for all Fortran versions.
2671 env = Environment(F95PATH='#/include')
2675 The directory look-up can also be forced using the
2681 include = Dir('include')
2682 env = Environment(F95PATH=include)
2686 The directory list will be added to command lines
2687 through the automatically-generated
2688 &cv-link-_F95INCFLAGS;
2689 construction variable,
2690 which is constructed by
2691 appending the values of the
2692 &cv-link-INCPREFIX; and &cv-link-INCSUFFIX;
2693 construction variables
2694 to the beginning and end
2695 of each directory in &cv-link-F95PATH;.
2696 Any command lines you define that need
2697 the F95PATH directory list should
2698 include &cv-link-_F95INCFLAGS;:
2702 env = Environment(F95COM="my_compiler $_F95INCFLAGS -c -o $TARGET $SOURCE")
2706 <varlistentry id="cv-F95PPCOM">
2708 <envar>F95PPCOM</envar>
2711 The command line used to compile a Fortran 95 source file to an object file
2712 after first running the file through the C preprocessor.
2713 Any options specified in the &cv-link-F95FLAGS; and &cv-link-CPPFLAGS; construction variables
2714 are included on this command line.
2715 You only need to set &cv-link-F95PPCOM; if you need to use a specific
2716 C-preprocessor command line for Fortran 95 files.
2717 You should normally set the &cv-link-FORTRANPPCOM; variable,
2718 which specifies the default C-preprocessor command line
2719 for all Fortran versions.
2723 <varlistentry id="cv-F95PPCOMSTR">
2725 <envar>F95PPCOMSTR</envar>
2728 If set, the string displayed when a Fortran 95 source file
2729 is compiled to an object file
2730 after first running the file through the C preprocessor.
2731 If not set, then &cv-link-F95PPCOM; or &cv-link-FORTRANPPCOM;
2732 (the command line) is displayed.
2736 <varlistentry id="cv-F95PPFILESUFFIXES">
2738 <envar>F95PPFILESUFFIXES</envar>
2741 The list of file extensions for which the compilation + preprocessor pass for
2742 F95 dialect will be used. By default, this is empty.
2746 <varlistentry id="cv-File">
2751 A function that converts a string into a File instance relative to the
2756 <varlistentry id="cv-FILE_ENCODING">
2758 <envar>FILE_ENCODING</envar>
2761 File encoding used for files written by &b-link-Textfile; and &b-link-Substfile;.
2762 Set to "utf-8" by default.
2765 <emphasis>New in version 4.5.0.</emphasis>
2769 <varlistentry id="cv-FORTRAN">
2771 <envar>FORTRAN</envar>
2774 The default Fortran compiler
2775 for all versions of Fortran.
2779 <varlistentry id="cv-FORTRANCOM">
2781 <envar>FORTRANCOM</envar>
2784 The command line used to compile a Fortran source file to an object file.
2785 By default, any options specified
2786 in the &cv-link-FORTRANFLAGS;,
2787 &cv-link-_FORTRANMODFLAG;, and
2788 &cv-link-_FORTRANINCFLAGS;
2789 &consvars; are included on this command line.
2793 <varlistentry id="cv-FORTRANCOMMONFLAGS">
2795 <envar>FORTRANCOMMONFLAGS</envar>
2798 General user-specified options that are passed to the Fortran compiler.
2799 Similar to &cv-link-FORTRANFLAGS;,
2800 but this &consvar; is applied to all dialects.
2802 <para><emphasis>New in version 4.4.</emphasis></para>
2805 <varlistentry id="cv-FORTRANCOMSTR">
2807 <envar>FORTRANCOMSTR</envar>
2810 If set, the string displayed when a Fortran source file
2811 is compiled to an object file.
2812 If not set, then &cv-link-FORTRANCOM;
2813 (the command line) is displayed.
2817 <varlistentry id="cv-FORTRANFILESUFFIXES">
2819 <envar>FORTRANFILESUFFIXES</envar>
2822 The list of file extensions for which the FORTRAN dialect will be used. By
2823 default, this is <literal>['.f', '.for', '.ftn']</literal>
2827 <varlistentry id="cv-FORTRANFLAGS">
2829 <envar>FORTRANFLAGS</envar>
2832 General user-specified options for the FORTRAN dialect
2833 that are passed to the Fortran compiler.
2834 Note that this variable does
2835 <emphasis>not</emphasis>
2838 (or similar) include or module search path options
2839 that scons generates automatically from &cv-link-FORTRANPATH;.
2841 &cv-link-_FORTRANINCFLAGS; and &cv-link-_FORTRANMODFLAG;
2842 for the &consvars; that expand those options.
2846 <varlistentry id="cv-_FORTRANINCFLAGS">
2848 <envar>_FORTRANINCFLAGS</envar>
2851 An automatically-generated &consvar;
2852 containing the Fortran compiler command-line options
2853 for specifying directories to be searched for include
2854 files and module files.
2855 The value of &cv-link-_FORTRANINCFLAGS; is created
2856 by respectively prepending and appending
2857 &cv-link-INCPREFIX; and &cv-link-INCSUFFIX;
2858 to the beginning and end
2859 of each directory in &cv-link-FORTRANPATH;.
2863 <varlistentry id="cv-FORTRANMODDIR">
2865 <envar>FORTRANMODDIR</envar>
2868 Directory location where the Fortran compiler should place
2869 any module files it generates. This variable is empty, by default. Some
2870 Fortran compilers will internally append this directory in the search path
2871 for module files, as well.
2875 <varlistentry id="cv-FORTRANMODDIRPREFIX">
2877 <envar>FORTRANMODDIRPREFIX</envar>
2880 The prefix used to specify a module directory on the Fortran compiler command
2882 This will be prepended to the beginning of the directory
2883 in the &cv-link-FORTRANMODDIR; &consvars;
2884 when the &cv-link-_FORTRANMODFLAG; variables is automatically generated.
2888 <varlistentry id="cv-FORTRANMODDIRSUFFIX">
2890 <envar>FORTRANMODDIRSUFFIX</envar>
2893 The suffix used to specify a module directory on the Fortran compiler command
2895 This will be appended to the end of the directory
2896 in the &cv-link-FORTRANMODDIR; &consvars;
2897 when the &cv-link-_FORTRANMODFLAG; variables is automatically generated.
2901 <varlistentry id="cv-_FORTRANMODFLAG">
2903 <envar>_FORTRANMODFLAG</envar>
2906 An automatically-generated &consvar;
2907 containing the Fortran compiler command-line option
2908 for specifying the directory location where the Fortran
2909 compiler should place any module files that happen to get
2910 generated during compilation.
2911 The value of &cv-link-_FORTRANMODFLAG; is created
2912 by respectively prepending and appending
2913 &cv-link-FORTRANMODDIRPREFIX; and &cv-link-FORTRANMODDIRSUFFIX;
2914 to the beginning and end of the directory in &cv-link-FORTRANMODDIR;.
2918 <varlistentry id="cv-FORTRANMODPREFIX">
2920 <envar>FORTRANMODPREFIX</envar>
2923 The module file prefix used by the Fortran compiler. SCons assumes that
2924 the Fortran compiler follows the quasi-standard naming convention for
2926 <filename>module_name.mod</filename>.
2927 As a result, this variable is left empty, by default. For situations in
2928 which the compiler does not necessarily follow the normal convention,
2929 the user may use this variable. Its value will be appended to every
2930 module file name as scons attempts to resolve dependencies.
2934 <varlistentry id="cv-FORTRANMODSUFFIX">
2936 <envar>FORTRANMODSUFFIX</envar>
2939 The module file suffix used by the Fortran compiler. SCons assumes that
2940 the Fortran compiler follows the quasi-standard naming convention for
2942 <filename>module_name.mod</filename>.
2943 As a result, this variable is set to ".mod", by default. For situations
2944 in which the compiler does not necessarily follow the normal convention,
2945 the user may use this variable. Its value will be appended to every
2946 module file name as scons attempts to resolve dependencies.
2950 <varlistentry id="cv-FORTRANPATH">
2952 <envar>FORTRANPATH</envar>
2955 The list of directories that the Fortran compiler will search for
2956 include files and (for some compilers) module files. The Fortran implicit
2957 dependency scanner will search these directories for include files (but
2958 not module files since they are autogenerated and, as such, may not
2959 actually exist at the time the scan takes place). Don't explicitly put
2960 include directory arguments in FORTRANFLAGS because the result will be
2961 non-portable and the directories will not be searched by the dependency
2962 scanner. Note: directory names in FORTRANPATH will be looked-up relative
2963 to the SConscript directory when they are used in a command. To force
2965 to look-up a directory relative to the root of the source tree use #:
2969 env = Environment(FORTRANPATH='#/include')
2973 The directory look-up can also be forced using the
2979 include = Dir('include')
2980 env = Environment(FORTRANPATH=include)
2984 The directory list will be added to command lines
2985 through the automatically-generated
2986 &cv-link-_FORTRANINCFLAGS;
2988 which is constructed by
2989 respectively prepending and appending the values of the
2990 &cv-link-INCPREFIX; and &cv-link-INCSUFFIX;
2992 to the beginning and end
2993 of each directory in &cv-link-FORTRANPATH;.
2994 Any command lines you define that need
2995 the FORTRANPATH directory list should
2996 include &cv-link-_FORTRANINCFLAGS;:
3000 env = Environment(FORTRANCOM="my_compiler $_FORTRANINCFLAGS -c -o $TARGET $SOURCE")
3004 <varlistentry id="cv-FORTRANPPCOM">
3006 <envar>FORTRANPPCOM</envar>
3009 The command line used to compile a Fortran source file to an object file
3010 after first running the file through the C preprocessor.
3011 By default, any options specified in the &cv-link-FORTRANFLAGS;,
3013 &cv-link-_CPPDEFFLAGS;,
3014 &cv-link-_FORTRANMODFLAG;, and
3015 &cv-link-_FORTRANINCFLAGS;
3016 &consvars; are included on this command line.
3020 <varlistentry id="cv-FORTRANPPCOMSTR">
3022 <envar>FORTRANPPCOMSTR</envar>
3025 If set, the string displayed when a Fortran source file
3026 is compiled to an object file
3027 after first running the file through the C preprocessor.
3028 If not set, then &cv-link-FORTRANPPCOM;
3029 (the command line) is displayed.
3033 <varlistentry id="cv-FORTRANPPFILESUFFIXES">
3035 <envar>FORTRANPPFILESUFFIXES</envar>
3038 The list of file extensions for which the compilation + preprocessor pass for
3039 FORTRAN dialect will be used. By default, this is <literal>['.fpp', '.FPP']</literal>
3043 <varlistentry id="cv-FORTRANSUFFIXES">
3045 <envar>FORTRANSUFFIXES</envar>
3048 The list of suffixes of files that will be scanned
3049 for Fortran implicit dependencies
3050 (INCLUDE lines and USE statements).
3051 The default list is:
3055 [".f", ".F", ".for", ".FOR", ".ftn", ".FTN", ".fpp", ".FPP",
3056 ".f77", ".F77", ".f90", ".F90", ".f95", ".F95"]
3060 <varlistentry id="cv-FRAMEWORKPATH">
3062 <envar>FRAMEWORKPATH</envar>
3065 On Mac OS X with gcc,
3066 a list containing the paths to search for frameworks.
3067 Used by the compiler to find framework-style includes like
3068 #include <Fmwk/Header.h>.
3069 Used by the linker to find user-specified frameworks when linking (see
3070 &cv-link-FRAMEWORKS;).
3075 env.AppendUnique(FRAMEWORKPATH='#myframeworkdir')
3083 ... -Fmyframeworkdir
3087 to the compiler and linker command lines.
3091 <varlistentry id="cv-_FRAMEWORKPATH">
3093 <envar>_FRAMEWORKPATH</envar>
3096 On Mac OS X with gcc, an automatically-generated construction variable
3097 containing the linker command-line options corresponding to
3098 &cv-link-FRAMEWORKPATH;.
3102 <varlistentry id="cv-FRAMEWORKPATHPREFIX">
3104 <envar>FRAMEWORKPATHPREFIX</envar>
3107 On Mac OS X with gcc, the prefix to be used for the FRAMEWORKPATH entries.
3108 (see &cv-link-FRAMEWORKPATH;).
3109 The default value is
3110 <option>-F</option>.
3114 <varlistentry id="cv-FRAMEWORKPREFIX">
3116 <envar>FRAMEWORKPREFIX</envar>
3119 On Mac OS X with gcc,
3120 the prefix to be used for linking in frameworks
3121 (see &cv-link-FRAMEWORKS;).
3122 The default value is
3123 <option>-framework</option>.
3127 <varlistentry id="cv-FRAMEWORKS">
3129 <envar>FRAMEWORKS</envar>
3132 On Mac OS X with gcc, a list of the framework names to be linked into a
3133 program or shared library or bundle.
3134 The default value is the empty list.
3139 env.AppendUnique(FRAMEWORKS=Split('System Cocoa SystemConfiguration'))
3144 <varlistentry id="cv-_FRAMEWORKS">
3146 <envar>_FRAMEWORKS</envar>
3149 On Mac OS X with gcc,
3150 an automatically-generated construction variable
3151 containing the linker command-line options
3152 for linking with FRAMEWORKS.
3156 <varlistentry id="cv-FRAMEWORKSFLAGS">
3158 <envar>FRAMEWORKSFLAGS</envar>
3161 On Mac OS X with gcc,
3162 general user-supplied frameworks options to be added at
3163 the end of a command
3164 line building a loadable module.
3165 (This has been largely superseded by
3166 the &cv-link-FRAMEWORKPATH;, &cv-link-FRAMEWORKPATHPREFIX;,
3167 &cv-link-FRAMEWORKPREFIX; and &cv-link-FRAMEWORKS; variables
3172 <varlistentry id="cv-GS">
3177 The Ghostscript program used to, for example, convert PostScript to PDF files.
3181 <varlistentry id="cv-GSCOM">
3183 <envar>GSCOM</envar>
3186 The full Ghostscript command line used for the conversion process. Its default
3187 value is <quote><literal>$GS $GSFLAGS -sOutputFile=$TARGET $SOURCES</literal></quote>.
3191 <varlistentry id="cv-GSCOMSTR">
3193 <envar>GSCOMSTR</envar>
3196 The string displayed when
3197 Ghostscript is called for the conversion process.
3198 If this is not set (the default), then &cv-link-GSCOM; (the command line) is displayed.
3202 <varlistentry id="cv-GSFLAGS">
3204 <envar>GSFLAGS</envar>
3207 General options passed to the Ghostscript program,
3208 when converting PostScript to PDF files for example. Its default value
3209 is <quote><literal>-dNOPAUSE -dBATCH -sDEVICE=pdfwrite</literal></quote>
3213 <varlistentry id="cv-HOST_ARCH">
3215 <envar>HOST_ARCH</envar>
3218 The name of the host hardware architecture
3219 used to create this &consenv;.
3220 The platform code sets this when initializing
3221 (see &cv-link-PLATFORM; and the
3222 <parameter>platform</parameter> argument to &f-link-Environment;).
3223 Note the detected name of the architecture may not be identical to
3224 that returned by the &Python;
3225 <systemitem>platform.machine</systemitem> method.
3228 On the <literal>win32</literal> platform,
3229 if the &MSVC; compiler is available,
3230 &t-link-msvc; tool setup is done using
3231 &cv-HOST_ARCH; and &cv-link-TARGET_ARCH;.
3232 Changing the values at any later time will not cause
3233 the tool to be reinitialized.
3234 Valid host arch values are
3235 <literal>x86</literal> and <literal>arm</literal>
3236 for 32-bit hosts and
3237 <literal>amd64</literal>, <literal>arm64</literal>,
3238 and <literal>x86_64</literal> for 64-bit hosts.
3241 Should be considered immutable.
3242 &cv-HOST_ARCH; is not currently used by other platforms,
3243 but the option is reserved to do so in future
3247 <varlistentry id="cv-HOST_OS">
3249 <envar>HOST_OS</envar>
3252 The name of the host operating system for the platform
3253 used to create this &consenv;.
3254 The platform code sets this when initializing
3255 (see &cv-link-PLATFORM; and the
3256 <parameter>platform</parameter> argument to &f-link-Environment;).
3259 Should be considered immutable.
3260 &cv-HOST_OS; is not currently used by &SCons;,
3261 but the option is reserved to do so in future
3265 <varlistentry id="cv-IDLSUFFIXES">
3267 <envar>IDLSUFFIXES</envar>
3270 The list of suffixes of files that will be scanned
3271 for IDL implicit dependencies
3272 (#include or import lines).
3273 The default list is:
3281 <varlistentry id="cv-IMPLIBNOVERSIONSYMLINKS">
3283 <envar>IMPLIBNOVERSIONSYMLINKS</envar>
3286 Used to override &cv-link-SHLIBNOVERSIONSYMLINKS;/&cv-link-LDMODULENOVERSIONSYMLINKS; when
3287 creating versioned import library for a shared library/loadable module. If not defined,
3288 then &cv-link-SHLIBNOVERSIONSYMLINKS;/&cv-link-LDMODULENOVERSIONSYMLINKS; is used to determine
3289 whether to disable symlink generation or not.
3293 <varlistentry id="cv-IMPLIBPREFIX">
3295 <envar>IMPLIBPREFIX</envar>
3298 The prefix used for import library names. For example, cygwin uses import
3299 libraries (<literal>libfoo.dll.a</literal>) in pair with dynamic libraries
3300 (<literal>cygfoo.dll</literal>). The &t-link-cyglink; linker sets
3301 &cv-link-IMPLIBPREFIX; to <literal>'lib'</literal> and &cv-link-SHLIBPREFIX;
3302 to <literal>'cyg'</literal>.
3306 <varlistentry id="cv-IMPLIBSUFFIX">
3308 <envar>IMPLIBSUFFIX</envar>
3311 The suffix used for import library names. For example, cygwin uses import
3312 libraries (<literal>libfoo.dll.a</literal>) in pair with dynamic libraries
3313 (<literal>cygfoo.dll</literal>). The &t-link-cyglink; linker sets
3314 &cv-link-IMPLIBSUFFIX; to <literal>'.dll.a'</literal> and &cv-link-SHLIBSUFFIX;
3315 to <literal>'.dll'</literal>.
3319 <varlistentry id="cv-IMPLIBVERSION">
3321 <envar>IMPLIBVERSION</envar>
3324 Used to override &cv-link-SHLIBVERSION;/&cv-link-LDMODULEVERSION; when
3325 generating versioned import library for a shared library/loadable module. If
3326 undefined, the &cv-link-SHLIBVERSION;/&cv-link-LDMODULEVERSION; is used to
3327 determine the version of versioned import library.
3331 <varlistentry id="cv-IMPLICIT_COMMAND_DEPENDENCIES">
3333 <envar>IMPLICIT_COMMAND_DEPENDENCIES</envar>
3336 Controls whether or not &SCons; will
3337 add implicit dependencies for the commands
3338 executed to build targets.
3342 By default, &SCons; will add to each target
3343 an implicit dependency on the command
3344 represented by the first argument of any
3345 command line it executes (which is typically
3346 the command itself). By setting such
3347 a dependency, &SCons; can determine that
3348 a target should be rebuilt if the command changes,
3349 such as when a compiler is upgraded to a new version.
3350 The specific file for the dependency is
3351 found by searching the
3352 <varname>PATH</varname>
3354 <varname>ENV</varname> dictionary
3355 in the &consenv; used to execute the command.
3356 The default is the same as
3357 setting the &consvar;
3358 &cv-IMPLICIT_COMMAND_DEPENDENCIES;
3359 to a True-like value (<quote>true</quote>,
3361 or <quote>1</quote> - but not a number
3362 greater than one, as that has a different meaning).
3366 Action strings can be segmented by the
3367 use of an AND operator, <literal>&&</literal>.
3368 In a segemented string, each segment is a separate
3369 <quote>command line</quote>, these are run
3370 sequentially until one fails or the entire
3371 sequence has been executed. If an
3372 action string is segmented, then the selected
3373 behavior of &cv-IMPLICIT_COMMAND_DEPENDENCIES;
3374 is applied to each segment.
3378 If &cv-IMPLICIT_COMMAND_DEPENDENCIES;
3379 is set to a False-like value
3380 (<quote>none</quote>,
3381 <quote>false</quote>,
3385 then the implicit dependency will
3386 not be added to the targets
3387 built with that &consenv;.
3391 If &cv-IMPLICIT_COMMAND_DEPENDENCIES;
3392 is set to <quote>2</quote> or higher,
3393 then that number of arguments in the command line
3394 will be scanned for relative or absolute paths.
3395 If any are present, they will be added as
3396 implicit dependencies to the targets built
3397 with that &consenv;.
3398 The first argument in the command line will be
3399 searched for using the <varname>PATH</varname>
3400 variable in the <varname>ENV</varname> dictionary
3401 in the &consenv; used to execute the command.
3402 The other arguments will only be found if they
3403 are absolute paths or valid paths relative
3404 to the working directory.
3408 If &cv-IMPLICIT_COMMAND_DEPENDENCIES;
3409 is set to <quote>all</quote>,
3410 then all arguments in the command line will be
3411 scanned for relative or absolute paths.
3412 If any are present, they will be added as
3413 implicit dependencies to the targets built
3414 with that &consenv;.
3415 The first argument in the command line will be
3416 searched for using the <varname>PATH</varname>
3417 variable in the <varname>ENV</varname> dictionary
3418 in the &consenv; used to execute the command.
3419 The other arguments will only be found if they
3420 are absolute paths or valid paths relative
3421 to the working directory.
3425 env = Environment(IMPLICIT_COMMAND_DEPENDENCIES=False)
3429 <varlistentry id="cv-INCPREFIX">
3431 <envar>INCPREFIX</envar>
3434 The prefix used to specify an include directory on the C compiler command
3436 This will be prepended to each directory
3437 in the &cv-link-CPPPATH; and &cv-link-FORTRANPATH; &consvars;
3438 when the &cv-link-_CPPINCFLAGS; and &cv-link-_FORTRANINCFLAGS;
3439 variables are automatically generated.
3443 <varlistentry id="cv-INCSUFFIX">
3445 <envar>INCSUFFIX</envar>
3448 The suffix used to specify an include directory on the C compiler command
3450 This will be appended to each directory
3451 in the &cv-link-CPPPATH; and &cv-link-FORTRANPATH; &consvars;
3452 when the &cv-link-_CPPINCFLAGS; and &cv-link-_FORTRANINCFLAGS;
3453 variables are automatically generated.
3457 <varlistentry id="cv-INSTALL">
3459 <envar>INSTALL</envar>
3462 A function to be called to install a file into a
3463 destination file name.
3464 The default function copies the file into the destination
3465 (and sets the destination file's mode and permission bits
3466 to match the source file's).
3467 The function takes the following arguments:
3471 def install(dest, source, env):
3475 <varname>dest</varname>
3476 is the path name of the destination file.
3477 <varname>source</varname>
3478 is the path name of the source file.
3479 <varname>env</varname>
3480 is the construction environment
3481 (a dictionary of construction values)
3482 in force for this file installation.
3486 <varlistentry id="cv-INSTALLSTR">
3488 <envar>INSTALLSTR</envar>
3491 The string displayed when a file is
3492 installed into a destination file name.
3496 Install file: "$SOURCE" as "$TARGET"
3500 <varlistentry id="cv-INTEL_C_COMPILER_VERSION">
3502 <envar>INTEL_C_COMPILER_VERSION</envar>
3505 Set by the &t-link-intelc; Tool
3506 to the major version number of the Intel C compiler
3511 <varlistentry id="cv-JAR">
3516 The Java archive tool.
3520 <varlistentry id="cv-JARCHDIR">
3522 <envar>JARCHDIR</envar>
3525 The directory to which the Java archive tool should change
3532 <varlistentry id="cv-JARCOM">
3534 <envar>JARCOM</envar>
3537 The command line used to call the Java archive tool.
3541 <varlistentry id="cv-JARCOMSTR">
3543 <envar>JARCOMSTR</envar>
3546 The string displayed when the Java archive tool
3548 If this is not set, then &cv-link-JARCOM; (the command line) is displayed.
3552 env = Environment(JARCOMSTR="JARchiving $SOURCES into $TARGET")
3556 <varlistentry id="cv-JARFLAGS">
3558 <envar>JARFLAGS</envar>
3561 General options passed to the Java archive tool.
3562 By default this is set to
3564 to create the necessary
3565 <command>jar</command>
3570 <varlistentry id="cv-JARSUFFIX">
3572 <envar>JARSUFFIX</envar>
3575 The suffix for Java archives:
3576 <filename>.jar</filename>
3581 <varlistentry id="cv-JAVABOOTCLASSPATH">
3583 <envar>JAVABOOTCLASSPATH</envar>
3586 Specifies the location of the bootstrap class files.
3587 Can be specified as a string or Node object,
3588 or as a list of strings or Node objects.
3591 The value will be added to the JDK command lines
3592 via the <option>-bootclasspath</option> option,
3593 which requires a system-specific search path separator.
3594 This will be supplied by &SCons; as needed when it
3595 constructs the command line if &cv-JAVABOOTCLASSPATH; is
3596 provided in list form.
3597 If &cv-JAVABOOTCLASSPATH; is a single string containing
3598 search path separator characters
3599 (<literal>:</literal> for POSIX systems or
3600 <literal>;</literal> for Windows), it will not be modified;
3601 and so is inherently system-specific;
3602 to supply the path in a system-independent manner,
3603 give &cv-JAVABOOTCLASSPATH; as a list of paths instead.
3607 Can only be used when compiling for releases prior to JDK 9.
3612 <varlistentry id="cv-JAVAC">
3614 <envar>JAVAC</envar>
3621 <varlistentry id="cv-JAVACCOM">
3623 <envar>JAVACCOM</envar>
3626 The command line used to compile a directory tree containing
3627 Java source files to
3628 corresponding Java class files.
3629 Any options specified in the &cv-link-JAVACFLAGS; construction variable
3630 are included on this command line.
3634 <varlistentry id="cv-JAVACCOMSTR">
3636 <envar>JAVACCOMSTR</envar>
3639 The string displayed when compiling
3640 a directory tree of Java source files to
3641 corresponding Java class files.
3642 If this is not set, then &cv-link-JAVACCOM; (the command line) is displayed.
3646 env = Environment(JAVACCOMSTR="Compiling class files $TARGETS from $SOURCES")
3650 <varlistentry id="cv-JAVACFLAGS">
3652 <envar>JAVACFLAGS</envar>
3655 General options that are passed to the Java compiler.
3659 <varlistentry id="cv-JAVACLASSDIR">
3661 <envar>JAVACLASSDIR</envar>
3664 The directory in which Java class files may be found.
3665 This is stripped from the beginning of any Java
3666 <filename>.class</filename>
3667 file names supplied to the &b-link-JavaH; builder.
3671 <varlistentry id="cv-JAVACLASSPATH">
3673 <envar>JAVACLASSPATH</envar>
3676 Specifies the class search path for the JDK tools.
3677 Can be specified as a string or Node object,
3678 or as a list of strings or Node objects.
3679 Class path entries may be directory names to search
3680 for class files or packages, pathnames to archives
3681 (<filename>.jar</filename> or <filename>.zip</filename>)
3682 containing classes, or paths ending in a "base name wildcard"
3683 character (<literal>*</literal>), which matches files
3684 in that directory with a <filename>.jar</filename> suffix.
3685 See the Java documentation for more details.
3688 The value will be added to the JDK command lines
3689 via the <option>-classpath</option> option,
3690 which requires a system-specific search path separator.
3691 This will be supplied by &SCons; as needed when it
3692 constructs the command line if &cv-JAVACLASSPATH; is
3693 provided in list form.
3694 If &cv-JAVACLASSPATH; is a single string containing
3695 search path separator characters
3696 (<literal>:</literal> for POSIX systems or
3697 <literal>;</literal> for Windows),
3698 it will be split on the separator into a list of individual
3699 paths for dependency scanning purposes.
3700 It will not be modified for JDK command-line usage,
3701 so such a string is inherently system-specific;
3702 to supply the path in a system-independent manner,
3703 give &cv-JAVACLASSPATH; as a list of paths instead.
3707 &SCons; <emphasis role="bold">always</emphasis>
3708 supplies a <option>-sourcepath</option>
3709 when invoking the Java compiler &javac;,
3710 regardless of the setting of &cv-link-JAVASOURCEPATH;,
3711 as it passes the path(s) to the source(s) supplied
3712 in the call to the &b-link-Java; builder via
3713 <option>-sourcepath</option> .
3714 From the documentation of the standard Java toolkit for &javac;:
3715 <quote>If not compiling code for modules, if the
3716 <option>--source-path</option> or <option>-sourcepath</option>
3717 option is not specified, then the user class path is also
3718 searched for source files.</quote>
3719 Since <option>-sourcepath</option> is always supplied,
3720 &javac; will not use the contents of the value of
3721 &cv-JAVACLASSPATH; when searching for sources.
3726 <varlistentry id="cv-JAVACLASSSUFFIX">
3728 <envar>JAVACLASSSUFFIX</envar>
3731 The suffix for Java class files;
3732 <filename>.class</filename>
3737 <varlistentry id="cv-JAVAH">
3739 <envar>JAVAH</envar>
3742 The Java generator for C header and stub files.
3746 <varlistentry id="cv-JAVAHCOM">
3748 <envar>JAVAHCOM</envar>
3751 The command line used to generate C header and stub files
3753 Any options specified in the &cv-link-JAVAHFLAGS; construction variable
3754 are included on this command line.
3758 <varlistentry id="cv-JAVAHCOMSTR">
3760 <envar>JAVAHCOMSTR</envar>
3763 The string displayed when C header and stub files
3764 are generated from Java classes.
3765 If this is not set, then &cv-link-JAVAHCOM; (the command line) is displayed.
3769 env = Environment(JAVAHCOMSTR="Generating header/stub file(s) $TARGETS from $SOURCES")
3773 <varlistentry id="cv-JAVAHFLAGS">
3775 <envar>JAVAHFLAGS</envar>
3778 General options passed to the C header and stub file generator
3783 <varlistentry id="cv-JAVAINCLUDES">
3785 <envar>JAVAINCLUDES</envar>
3788 Include path for Java header files
3789 (such as <filename>jni.h</filename>).
3793 <varlistentry id="cv-JAVAPROCESSORPATH">
3795 <envar>JAVAPROCESSORPATH</envar>
3798 Specifies the location of the annotation processor class files.
3799 Can be specified as a string or Node object,
3800 or as a list of strings or Node objects.
3803 The value will be added to the JDK command lines
3804 via the <option>-processorpath</option> option,
3805 which requires a system-specific search path separator.
3806 This will be supplied by &SCons; as needed when it
3807 constructs the command line if &cv-JAVAPROCESSORPATH; is
3808 provided in list form.
3809 If &cv-JAVAPROCESSORPATH; is a single string containing
3810 search path separator characters
3811 (<literal>:</literal> for POSIX systems or
3812 <literal>;</literal> for Windows), it will not be modified;
3813 and so is inherently system-specific;
3814 to supply the path in a system-independent manner,
3815 give &cv-JAVAPROCESSORPATH; as a list of paths instead.
3818 <emphasis>New in version 4.5.0</emphasis>
3822 <varlistentry id="cv-JAVASOURCEPATH">
3824 <envar>JAVASOURCEPATH</envar>
3827 Specifies the list of directories that
3828 will be searched for input (source)
3829 <filename>.java</filename> files.
3830 Can be specified as a string or Node object,
3831 or as a list of strings or Node objects.
3834 The value will be added to the JDK command lines
3835 via the <option>-sourcepath</option> option,
3836 which requires a system-specific search path separator,
3837 This will be supplied by &SCons; as needed when it
3838 constructs the command line if &cv-JAVASOURCEPATH; is
3839 provided in list form.
3840 If &cv-JAVASOURCEPATH; is a single string containing
3841 search path separator characters
3842 (<literal>:</literal> for POSIX systems or
3843 <literal>;</literal> for Windows), it will not be modified,
3844 and so is inherently system-specific;
3845 to supply the path in a system-independent manner,
3846 give &cv-JAVASOURCEPATH; as a list of paths instead.
3849 Note that the specified directories are only added to
3850 the command line via the <option>-sourcepath</option> option.
3851 &SCons; does not currently search the
3852 &cv-JAVASOURCEPATH; directories for dependent
3853 <filename>.java</filename>
3858 <varlistentry id="cv-JAVASUFFIX">
3860 <envar>JAVASUFFIX</envar>
3863 The suffix for Java files;
3864 <filename>.java</filename>
3869 <varlistentry id="cv-JAVAVERSION">
3871 <envar>JAVAVERSION</envar>
3874 Specifies the Java version being used by the &b-link-Java;
3875 builder. Set this to specify the version of Java targeted
3876 by the &javac; compiler.
3877 This is sometimes necessary because
3878 Java 1.5 changed the file names that are created
3879 for nested anonymous inner classes,
3880 which can cause a mismatch with the files
3881 that &SCons; expects will be generated by the &javac; compiler.
3882 Setting &cv-JAVAVERSION; to a version greater than
3883 <literal>1.4</literal> makes &SCons; realize that a build
3884 with such a compiler is actually up to date.
3885 The default is <literal>1.4</literal>.
3888 While this is <emphasis>not</emphasis> primarily intended for
3889 selecting one version of the Java compiler vs. another,
3890 it does have that effect on the Windows platform. A
3891 more precise approach is to set &cv-link-JAVAC; (and related
3892 &consvars; for related utilities) to the path to the specific
3893 Java compiler you want, if that is not the default compiler.
3894 On non-Windows platforms, the
3895 <systemitem>alternatives</systemitem> system may provide a
3896 way to adjust the default Java compiler without
3897 having to specify explicit paths.
3901 <varlistentry id="cv-LATEX">
3903 <envar>LATEX</envar>
3906 The LaTeX structured formatter and typesetter.
3910 <varlistentry id="cv-LATEXCOM">
3912 <envar>LATEXCOM</envar>
3915 The command line used to call the LaTeX structured formatter and typesetter.
3919 <varlistentry id="cv-LATEXCOMSTR">
3921 <envar>LATEXCOMSTR</envar>
3924 The string displayed when calling
3925 the LaTeX structured formatter and typesetter.
3926 If this is not set, then &cv-link-LATEXCOM; (the command line) is displayed.
3930 env = Environment(LATEXCOMSTR = "Building $TARGET from LaTeX input $SOURCES")
3934 <varlistentry id="cv-LATEXFLAGS">
3936 <envar>LATEXFLAGS</envar>
3939 General options passed to the LaTeX structured formatter and typesetter.
3943 <varlistentry id="cv-LATEXRETRIES">
3945 <envar>LATEXRETRIES</envar>
3948 The maximum number of times that LaTeX
3949 will be re-run if the
3950 <filename>.log</filename>
3951 generated by the &cv-link-LATEXCOM; command
3952 indicates that there are undefined references.
3953 The default is to try to resolve undefined references
3954 by re-running LaTeX up to three times.
3958 <varlistentry id="cv-LATEXSUFFIXES">
3960 <envar>LATEXSUFFIXES</envar>
3963 The list of suffixes of files that will be scanned
3964 for LaTeX implicit dependencies
3965 (<literal>\include</literal> or <literal>\import</literal> files).
3966 The default list is:
3970 [".tex", ".ltx", ".latex"]
3974 <varlistentry id="cv-LDMODULE">
3976 <envar>LDMODULE</envar>
3979 The linker for building loadable modules.
3980 By default, this is the same as &cv-link-SHLINK;.
3984 <varlistentry id="cv-LDMODULECOM">
3986 <envar>LDMODULECOM</envar>
3989 The command line for building loadable modules.
3990 On Mac OS X, this uses the &cv-link-LDMODULE;,
3991 &cv-link-LDMODULEFLAGS; and
3992 &cv-link-FRAMEWORKSFLAGS; variables.
3993 On other systems, this is the same as &cv-link-SHLINK;.
3997 <varlistentry id="cv-LDMODULECOMSTR">
3999 <envar>LDMODULECOMSTR</envar>
4002 If set, the string displayed when building loadable modules.
4003 If not set, then &cv-link-LDMODULECOM; (the command line) is displayed.
4007 <varlistentry id="cv-LDMODULEEMITTER">
4009 <envar>LDMODULEEMITTER</envar>
4012 Contains the emitter specification for the
4013 &b-link-LoadableModule; builder.
4014 The manpage section "Builder Objects" contains
4015 general information on specifying emitters.
4019 <varlistentry id="cv-LDMODULEFLAGS">
4021 <envar>LDMODULEFLAGS</envar>
4024 General user options passed to the linker for building loadable modules.
4028 <varlistentry id="cv-LDMODULENOVERSIONSYMLINKS">
4030 <envar>LDMODULENOVERSIONSYMLINKS</envar>
4033 Instructs the &b-link-LoadableModule; builder to not automatically create symlinks
4034 for versioned modules. Defaults to <literal>$SHLIBNOVERSIONSYMLINKS</literal>
4038 <varlistentry id="cv-LDMODULEPREFIX">
4040 <envar>LDMODULEPREFIX</envar>
4043 The prefix used for loadable module file names.
4044 On Mac OS X, this is null;
4045 on other systems, this is
4046 the same as &cv-link-SHLIBPREFIX;.
4050 <varlistentry id="cv-_LDMODULESONAME">
4052 <envar>_LDMODULESONAME</envar>
4055 A macro that automatically generates loadable module's SONAME based on $TARGET,
4056 $LDMODULEVERSION and $LDMODULESUFFIX. Used by &b-link-LoadableModule; builder
4057 when the linker tool supports SONAME (e.g. &t-link-gnulink;).
4061 <varlistentry id="cv-LDMODULESUFFIX">
4063 <envar>LDMODULESUFFIX</envar>
4066 The suffix used for loadable module file names.
4067 On Mac OS X, this is null;
4068 on other systems, this is
4069 the same as $SHLIBSUFFIX.
4073 <varlistentry id="cv-LDMODULEVERSION">
4075 <envar>LDMODULEVERSION</envar>
4078 When this &consvar; is defined, a versioned loadable module
4079 is created by &b-link-LoadableModule; builder. This activates the
4080 &cv-link-_LDMODULEVERSIONFLAGS; and thus modifies the &cv-link-LDMODULECOM; as
4081 required, adds the version number to the library name, and creates the symlinks
4082 that are needed. &cv-link-LDMODULEVERSION; versions should exist in the same
4083 format as &cv-link-SHLIBVERSION;.
4087 <varlistentry id="cv-_LDMODULEVERSIONFLAGS">
4089 <envar>_LDMODULEVERSIONFLAGS</envar>
4092 This macro automatically introduces extra flags to &cv-link-LDMODULECOM; when
4093 building versioned &b-link-LoadableModule; (that is when
4094 &cv-link-LDMODULEVERSION; is set). <literal>_LDMODULEVERSIONFLAGS</literal>
4095 usually adds &cv-link-SHLIBVERSIONFLAGS; and some extra dynamically generated
4096 options (such as <literal>-Wl,-soname=$_LDMODULESONAME</literal>). It is unused
4097 by plain (unversioned) loadable modules.
4101 <varlistentry id="cv-LDMODULEVERSIONFLAGS">
4103 <envar>LDMODULEVERSIONFLAGS</envar>
4106 Extra flags added to &cv-link-LDMODULECOM; when building versioned
4107 &b-link-LoadableModule;. These flags are only used when &cv-link-LDMODULEVERSION; is
4112 <varlistentry id="cv-LEX">
4117 The lexical analyzer generator.
4121 <varlistentry id="cv-LEX_HEADER_FILE">
4123 <envar>LEX_HEADER_FILE</envar>
4126 If supplied, generate a C header file with the name taken from this variable.
4127 Will be emitted as a <option>--header-file=</option>
4128 command-line option. Use this in preference to including
4129 <option>--header-file=</option> in &cv-link-LEXFLAGS; directly.
4133 <varlistentry id="cv-LEX_TABLES_FILE">
4135 <envar>LEX_TABLES_FILE</envar>
4138 If supplied, write the lex tables to a file with the name
4139 taken from this variable.
4140 Will be emitted as a <option>--tables-file=</option>
4141 command-line option. Use this in preference to including
4142 <option>--tables-file=</option> in &cv-link-LEXFLAGS; directly.
4146 <varlistentry id="cv-LEXCOM">
4148 <envar>LEXCOM</envar>
4151 The command line used to call the lexical analyzer generator
4152 to generate a source file.
4156 <varlistentry id="cv-LEXCOMSTR">
4158 <envar>LEXCOMSTR</envar>
4161 The string displayed when generating a source file
4162 using the lexical analyzer generator.
4163 If this is not set, then &cv-link-LEXCOM; (the command line) is displayed.
4167 env = Environment(LEXCOMSTR="Lex'ing $TARGET from $SOURCES")
4171 <varlistentry id="cv-LEXFLAGS">
4173 <envar>LEXFLAGS</envar>
4176 General options passed to the lexical analyzer generator.
4177 In addition to passing the value on during invocation,
4178 the &t-link-lex; tool also examines this &consvar; for options
4179 which cause additional output files to be generated,
4180 and adds those to the target list.
4181 Recognized for this purpose are GNU &flex; options
4182 <option>--header-file=</option> and
4183 <option>--tables-file=</option>;
4184 the output file is named by the option argument.
4187 Note that files specified by <option>--header-file=</option> and
4188 <option>--tables-file=</option> may not be properly handled
4189 by &SCons; in all situations. Consider using
4190 &cv-link-LEX_HEADER_FILE; and &cv-link-LEX_TABLES_FILE; instead.
4194 <varlistentry id="cv-LEXUNISTD">
4196 <envar>LEXUNISTD</envar>
4199 Used only on windows environments to set a lex flag to prevent 'unistd.h' from being included. The default value is '--nounistd'.
4203 <varlistentry id="cv-_LIBDIRFLAGS">
4205 <envar>_LIBDIRFLAGS</envar>
4208 An automatically-generated construction variable
4209 containing the linker command-line options
4210 for specifying directories to be searched for library.
4211 The value of &cv-_LIBDIRFLAGS; is created
4212 by respectively prepending and appending &cv-link-LIBDIRPREFIX;
4213 and &cv-link-LIBDIRSUFFIX;
4214 to each directory in &cv-link-LIBPATH;.
4218 <varlistentry id="cv-LIBDIRPREFIX">
4220 <envar>LIBDIRPREFIX</envar>
4223 The prefix used to specify a library directory on the linker command line.
4224 This will be prepended to each directory
4225 in the &cv-link-LIBPATH; construction variable
4226 when the &cv-link-_LIBDIRFLAGS; variable is automatically generated.
4230 <varlistentry id="cv-LIBDIRSUFFIX">
4232 <envar>LIBDIRSUFFIX</envar>
4235 The suffix used to specify a library directory on the linker command line.
4236 This will be appended to each directory
4237 in the &cv-link-LIBPATH; construction variable
4238 when the &cv-link-_LIBDIRFLAGS; variable is automatically generated.
4242 <varlistentry id="cv-LIBEMITTER">
4244 <envar>LIBEMITTER</envar>
4247 Contains the emitter specification for the
4248 &b-link-StaticLibrary; builder.
4249 The manpage section "Builder Objects" contains
4250 general information on specifying emitters.
4254 <varlistentry id="cv-_LIBFLAGS">
4256 <envar>_LIBFLAGS</envar>
4259 An automatically-generated construction variable
4260 containing the linker command-line options
4261 for specifying libraries to be linked with the resulting target.
4262 The value of &cv-_LIBFLAGS; is created
4263 by respectively prepending and appending &cv-link-LIBLINKPREFIX;
4264 and &cv-link-LIBLINKSUFFIX;
4265 to each filename in &cv-link-LIBS;.
4269 <varlistentry id="cv-LIBLINKPREFIX">
4271 <envar>LIBLINKPREFIX</envar>
4274 The prefix used to specify a library to link on the linker command line.
4275 This will be prepended to each library
4276 in the &cv-link-LIBS; construction variable
4277 when the &cv-link-_LIBFLAGS; variable is automatically generated.
4281 <varlistentry id="cv-LIBLINKSUFFIX">
4283 <envar>LIBLINKSUFFIX</envar>
4286 The suffix used to specify a library to link on the linker command line.
4287 This will be appended to each library
4288 in the &cv-link-LIBS; construction variable
4289 when the &cv-link-_LIBFLAGS; variable is automatically generated.
4293 <varlistentry id="cv-LIBLITERALPREFIX">
4295 <envar>LIBLITERALPREFIX</envar>
4298 If the linker supports command line syntax directing
4299 that the argument specifying a library should be
4300 searched for literally (without modification),
4301 &cv-LIBLITERALPREFIX; can be set to that indicator.
4302 For example, the GNU linker follows this rule:
4304 <literal>-l:foo</literal> searches the library path
4305 for a filename called <literal>foo</literal>,
4306 without converting it to
4307 <literal>libfoo.so</literal> or
4308 <literal>libfoo.a</literal>.
4310 If &cv-LIBLITERALPREFIX; is set,
4311 &SCons; will not transform a string-valued entry in
4312 &cv-link-LIBS; that starts with that string.
4313 The entry will still be surrounded with
4314 &cv-link-LIBLINKPREFIX; and &cv-link-LIBLINKSUFFIX;
4315 on the command line.
4316 This is useful, for example,
4317 in directing that a static library
4318 be used when both a static and dynamic library are available
4319 and linker policy is to prefer dynamic libraries.
4320 Compared to the example in &cv-link-LIBS;,
4323 env.Append(LIBS=":libmylib.a")
4326 will let the linker select that specific (static)
4327 library name if found in the library search path.
4328 This differs from using a
4329 <classname>File</classname> object
4330 to specify the static library,
4331 as the latter bypasses the library search path entirely.
4335 <varlistentry id="cv-LIBPATH">
4337 <envar>LIBPATH</envar>
4340 The list of directories that will be searched for libraries
4341 specified by the &cv-link-LIBS; &consvar;.
4342 &cv-LIBPATH; should be a list of path strings,
4343 or a single string, not a pathname list joined by
4344 Python's <systemitem>os.pathsep</systemitem>.
4346 The implicit dependency scanner will search these
4347 directories for include files. Don't explicitly put include directory
4348 arguments into &cv-LINKFLAGS; or &cv-SHLINKFLAGS;
4349 because the result will be non-portable
4350 and the directories will not be searched by the dependency scanner.
4353 Do not put library search directives directly
4354 into &cv-LINKFLAGS; or &cv-SHLINKFLAGS;
4355 as the result will be non-portable.
4361 directory names in &cv-LIBPATH; will be looked-up relative to the
4362 directory of the SConscript file
4363 when they are used in a command.
4365 to look-up a directory relative to the root of the source tree use
4366 the <literal>#</literal> prefix:
4370 env = Environment(LIBPATH='#/libs')
4374 The directory look-up can also be forced using the
4375 &f-link-Dir; function:
4380 env = Environment(LIBPATH=libs)
4384 The directory list will be added to command lines
4385 through the automatically-generated
4386 &cv-link-_LIBDIRFLAGS;
4387 construction variable,
4388 which is constructed by
4389 respectively prepending and appending the values of the
4390 &cv-link-LIBDIRPREFIX; and &cv-link-LIBDIRSUFFIX;
4391 construction variables
4392 to each directory in &cv-LIBPATH;.
4393 Any command lines you define that need
4394 the &cv-LIBPATH; directory list should
4395 include &cv-_LIBDIRFLAGS;:
4399 env = Environment(LINKCOM="my_linker $_LIBDIRFLAGS $_LIBFLAGS -o $TARGET $SOURCE")
4403 <varlistentry id="cv-LIBPREFIX">
4405 <envar>LIBPREFIX</envar>
4408 The prefix used for (static) library file names.
4409 A default value is set for each platform
4410 (posix, win32, os2, etc.),
4411 but the value is overridden by individual tools
4412 (ar, mslib, sgiar, sunar, tlib, etc.)
4413 to reflect the names of the libraries they create.
4417 <varlistentry id="cv-LIBPREFIXES">
4419 <envar>LIBPREFIXES</envar>
4422 A list of all legal prefixes for library file names
4423 on the current platform.
4424 When searching for library dependencies,
4425 SCons will look for files with these prefixes,
4426 the base library name,
4427 and suffixes from the &cv-link-LIBSUFFIXES; list.
4431 <varlistentry id="cv-LIBS">
4436 The list of libraries
4437 that will be added to the link line
4438 for linking with any executable program, shared library, or loadable module
4439 created by the &consenv; or override.
4444 a string-valued library name should include
4445 only the base library name,
4446 without prefixes such as <filename>lib</filename>
4447 or suffixes such as <filename>.so</filename> or <filename>.dll</filename>.
4448 &SCons; <emphasis>will</emphasis> attempt to
4449 strip prefixes from the &cv-link-LIBPREFIXES; list
4450 and suffixes from the &cv-link-LIBSUFFIXES; list,
4451 but depending on that behavior will make the build
4453 for example, on a POSIX system,
4454 no attempt will be made to strip a suffix like
4455 <filename>.dll</filename>.
4456 Library name strings in &cv-LIBS; should not include a path component:
4457 instead use &cv-link-LIBPATH; to direct the compiler
4458 to look for libraries in those paths,
4459 plus any default paths the linker searches in.
4460 If &cv-link-LIBLITERALPREFIX; is set to a non-empty string,
4461 then a string-valued &cv-LIBS; entry
4462 that starts with &cv-link-LIBLITERALPREFIX;
4463 will cause the rest of the entry
4464 to be searched for for unmodified,
4465 but respecting normal library search paths
4466 (this is an exception to the guideline above
4467 about leaving off the prefix/suffix from the library name).
4471 If a &cv-LIBS; entry is a Node object
4472 (either as returned by a previous Builder call,
4473 or as the result of an explicit call to &f-link-File;),
4474 the pathname from that Node will be added to
4476 and thus to the link line,
4477 unmodified - without adding
4481 Such entries are searched for literally
4482 (including any path component);
4483 the library search paths are not used.
4488 env.Append(LIBS=File('/tmp/mylib.so'))
4492 <!-- is this actually true? -->
4493 For each &Builder; call that causes linking with libraries,
4494 &SCons; will add the libraries in the setting of &cv-LIBS;
4495 in effect at that moment to the dependecy graph
4496 as dependencies of the target being generated.
4500 The library list will transformed to command line
4501 arguments through the automatically-generated
4502 &cv-link-_LIBFLAGS; &consvar;
4503 which is constructed by
4504 respectively prepending and appending the values of the
4505 &cv-link-LIBLINKPREFIX; and &cv-link-LIBLINKSUFFIX; &consvars;
4506 to each library name.
4510 Any command lines you define yourself that need
4511 the libraries from &cv-LIBS; should include &cv-_LIBFLAGS;
4512 (as well as &cv-link-_LIBDIRFLAGS;)
4513 rather than &cv-LIBS;.
4518 env = Environment(LINKCOM="my_linker $_LIBDIRFLAGS $_LIBFLAGS -o $TARGET $SOURCE")
4522 <varlistentry id="cv-LIBSUFFIX">
4524 <envar>LIBSUFFIX</envar>
4527 The suffix used for (static) library file names.
4528 A default value is set for each platform
4529 (posix, win32, os2, etc.),
4530 but the value is overridden by individual tools
4531 (ar, mslib, sgiar, sunar, tlib, etc.)
4532 to reflect the names of the libraries they create.
4536 <varlistentry id="cv-LIBSUFFIXES">
4538 <envar>LIBSUFFIXES</envar>
4541 A list of all legal suffixes for library file names.
4542 on the current platform.
4543 When searching for library dependencies,
4544 SCons will look for files with prefixes from the &cv-link-LIBPREFIXES; list,
4545 the base library name,
4550 <varlistentry id="cv-LICENSE">
4552 <envar>LICENSE</envar>
4555 The abbreviated name, preferably the SPDX code, of the license under which
4556 this project is released (GPL-3.0, LGPL-2.1, BSD-2-Clause etc.).
4558 <ulink url="http://www.opensource.org/licenses/alphabetical">
4559 http://www.opensource.org/licenses/alphabetical</ulink>
4560 for a list of license names and SPDX codes.
4562 <para>See the &b-link-Package; builder.</para>
4565 <varlistentry id="cv-LINESEPARATOR">
4567 <envar>LINESEPARATOR</envar>
4570 The separator used by the &b-link-Substfile; and &b-link-Textfile; builders.
4571 This value is used between sources when constructing the target.
4572 It defaults to the current system line separator.
4576 <varlistentry id="cv-LINGUAS_FILE">
4578 <envar>LINGUAS_FILE</envar>
4581 The &cv-LINGUAS_FILE; defines file(s) containing list of additional linguas
4582 to be processed by &b-link-POInit;, &b-link-POUpdate; or &b-link-MOFiles;
4583 builders. It also affects &b-link-Translate; builder. If the variable contains
4584 a string, it defines name of the list file. The &cv-LINGUAS_FILE; may be a
4585 list of file names as well. If &cv-LINGUAS_FILE; is set to
4586 <literal>True</literal> (or non-zero numeric value), the list will be read from
4588 <filename>LINGUAS</filename>.
4593 <varlistentry id="cv-LINK">
4599 See also &cv-link-SHLINK; for linking shared objects.
4602 On POSIX systems (those using the &t-link-link; tool),
4603 you should normally not change this value as it defaults
4604 to a "smart" linker tool which selects a compiler
4605 driver matching the type of source files in use.
4606 So for example, if you set &cv-link-CXX; to a specific
4607 compiler name, and are compiling C++ sources,
4608 the smartlink function will automatically select the same compiler
4613 <varlistentry id="cv-LINKCOM">
4615 <envar>LINKCOM</envar>
4618 The command line used to link object files into an executable.
4619 See also &cv-link-SHLINKCOM; for linking shared objects.
4623 <varlistentry id="cv-LINKCOMSTR">
4625 <envar>LINKCOMSTR</envar>
4628 If set, the string displayed when object files
4629 are linked into an executable.
4630 If not set, then &cv-link-LINKCOM; (the command line) is displayed.
4631 See also &cv-link-SHLINKCOMSTR;. for linking shared objects.
4635 env = Environment(LINKCOMSTR = "Linking $TARGET")
4639 <varlistentry id="cv-LINKFLAGS">
4641 <envar>LINKFLAGS</envar>
4644 General user options passed to the linker.
4645 Note that this variable should
4646 <emphasis>not</emphasis>
4649 (or similar) options for linking with the libraries listed in &cv-link-LIBS;,
4652 (or similar) library search path options
4653 that scons generates automatically from &cv-link-LIBPATH;.
4657 for the variable that expands to library-link options,
4659 &cv-link-_LIBDIRFLAGS;
4661 for the variable that expands to library search path options.
4662 See also &cv-link-SHLINKFLAGS;. for linking shared objects.
4666 <varlistentry id="cv-M4">
4671 The M4 macro preprocessor.
4675 <varlistentry id="cv-M4COM">
4677 <envar>M4COM</envar>
4680 The command line used to pass files through the M4 macro preprocessor.
4684 <varlistentry id="cv-M4COMSTR">
4686 <envar>M4COMSTR</envar>
4689 The string displayed when
4690 a file is passed through the M4 macro preprocessor.
4691 If this is not set, then &cv-link-M4COM; (the command line) is displayed.
4695 <varlistentry id="cv-M4FLAGS">
4697 <envar>M4FLAGS</envar>
4700 General options passed to the M4 macro preprocessor.
4704 <varlistentry id="cv-MAKEINDEX">
4706 <envar>MAKEINDEX</envar>
4709 The makeindex generator for the TeX formatter and typesetter and the
4710 LaTeX structured formatter and typesetter.
4714 <varlistentry id="cv-MAKEINDEXCOM">
4716 <envar>MAKEINDEXCOM</envar>
4719 The command line used to call the makeindex generator for the
4720 TeX formatter and typesetter and the LaTeX structured formatter and
4725 <varlistentry id="cv-MAKEINDEXCOMSTR">
4727 <envar>MAKEINDEXCOMSTR</envar>
4730 The string displayed when calling the makeindex generator for the
4731 TeX formatter and typesetter
4732 and the LaTeX structured formatter and typesetter.
4733 If this is not set, then &cv-link-MAKEINDEXCOM; (the command line) is displayed.
4737 <varlistentry id="cv-MAKEINDEXFLAGS">
4739 <envar>MAKEINDEXFLAGS</envar>
4742 General options passed to the makeindex generator for the TeX formatter
4743 and typesetter and the LaTeX structured formatter and typesetter.
4747 <varlistentry id="cv-MAXLINELENGTH">
4749 <envar>MAXLINELENGTH</envar>
4752 The maximum number of characters allowed on an external command line.
4754 link lines longer than this many characters
4755 are linked via a temporary file name.
4759 <varlistentry id="cv-MIDL">
4764 The Microsoft IDL compiler.
4768 <varlistentry id="cv-MIDLCOM">
4770 <envar>MIDLCOM</envar>
4773 The command line used to pass files to the Microsoft IDL compiler.
4777 <varlistentry id="cv-MIDLCOMSTR">
4779 <envar>MIDLCOMSTR</envar>
4782 The string displayed when
4783 the Microsoft IDL compiler is called.
4784 If this is not set, then &cv-link-MIDLCOM; (the command line) is displayed.
4788 <varlistentry id="cv-MIDLFLAGS">
4790 <envar>MIDLFLAGS</envar>
4793 General options passed to the Microsoft IDL compiler.
4797 <varlistentry id="cv-MOSUFFIX">
4799 <envar>MOSUFFIX</envar>
4802 Suffix used for <literal>MO</literal> files (default: <literal>'.mo'</literal>).
4803 See &t-link-msgfmt; tool and &b-link-MOFiles; builder.
4807 <varlistentry id="cv-MSGFMT">
4809 <envar>MSGFMT</envar>
4812 Absolute path to <command>msgfmt(1)</command> binary, found by
4813 <function>Detect()</function>.
4814 See &t-link-msgfmt; tool and &b-link-MOFiles; builder.
4818 <varlistentry id="cv-MSGFMTCOM">
4820 <envar>MSGFMTCOM</envar>
4823 Complete command line to run <command>msgfmt(1)</command> program.
4824 See &t-link-msgfmt; tool and &b-link-MOFiles; builder.
4828 <varlistentry id="cv-MSGFMTCOMSTR">
4830 <envar>MSGFMTCOMSTR</envar>
4833 String to display when <command>msgfmt(1)</command> is invoked
4834 (default: <literal>''</literal>, which means ``print &cv-link-MSGFMTCOM;'').
4835 See &t-link-msgfmt; tool and &b-link-MOFiles; builder.
4839 <varlistentry id="cv-MSGFMTFLAGS">
4841 <envar>MSGFMTFLAGS</envar>
4844 Additional flags to <command>msgfmt(1)</command>.
4845 See &t-link-msgfmt; tool and &b-link-MOFiles; builder.
4849 <varlistentry id="cv-MSGINIT">
4851 <envar>MSGINIT</envar>
4854 Path to <command>msginit(1)</command> program (found via
4855 <literal>Detect()</literal>).
4856 See &t-link-msginit; tool and &b-link-POInit; builder.
4860 <varlistentry id="cv-MSGINITCOM">
4862 <envar>MSGINITCOM</envar>
4865 Complete command line to run <command>msginit(1)</command> program.
4866 See &t-link-msginit; tool and &b-link-POInit; builder.
4870 <varlistentry id="cv-MSGINITCOMSTR">
4872 <envar>MSGINITCOMSTR</envar>
4875 String to display when <command>msginit(1)</command> is invoked
4876 (default: <literal>''</literal>, which means ``print &cv-link-MSGINITCOM;'').
4877 See &t-link-msginit; tool and &b-link-POInit; builder.
4881 <varlistentry id="cv-MSGINITFLAGS">
4883 <envar>MSGINITFLAGS</envar>
4886 List of additional flags to <command>msginit(1)</command> (default:
4887 <literal>[]</literal>).
4888 See &t-link-msginit; tool and &b-link-POInit; builder.
4892 <varlistentry id="cv-_MSGINITLOCALE">
4894 <envar>_MSGINITLOCALE</envar>
4897 Internal ``macro''. Computes locale (language) name based on target filename
4898 (default: <literal>'${TARGET.filebase}' </literal>).
4901 See &t-link-msginit; tool and &b-link-POInit; builder.
4905 <varlistentry id="cv-MSGMERGE">
4907 <envar>MSGMERGE</envar>
4910 Absolute path to <command>msgmerge(1)</command> binary as found by
4911 <function>Detect()</function>.
4912 See &t-link-msgmerge; tool and &b-link-POUpdate; builder.
4916 <varlistentry id="cv-MSGMERGECOM">
4918 <envar>MSGMERGECOM</envar>
4921 Complete command line to run <command>msgmerge(1)</command> command.
4922 See &t-link-msgmerge; tool and &b-link-POUpdate; builder.
4926 <varlistentry id="cv-MSGMERGECOMSTR">
4928 <envar>MSGMERGECOMSTR</envar>
4931 String to be displayed when <command>msgmerge(1)</command> is invoked
4932 (default: <literal>''</literal>, which means ``print &cv-link-MSGMERGECOM;'').
4933 See &t-link-msgmerge; tool and &b-link-POUpdate; builder.
4937 <varlistentry id="cv-MSGMERGEFLAGS">
4939 <envar>MSGMERGEFLAGS</envar>
4942 Additional flags to <command>msgmerge(1)</command> command.
4943 See &t-link-msgmerge; tool and &b-link-POUpdate; builder.
4947 <varlistentry id="cv-MSSDK_DIR">
4949 <envar>MSSDK_DIR</envar>
4952 The directory containing the Microsoft SDK
4953 (either Platform SDK or Windows SDK)
4954 to be used for compilation.
4958 <varlistentry id="cv-MSSDK_VERSION">
4960 <envar>MSSDK_VERSION</envar>
4963 The version string of the Microsoft SDK
4964 (either Platform SDK or Windows SDK)
4965 to be used for compilation.
4966 Supported versions include
4967 <literal>6.1</literal>,
4968 <literal>6.0A</literal>,
4969 <literal>6.0</literal>,
4970 <literal>2003R2</literal>
4972 <literal>2003R1</literal>.
4976 <varlistentry id="cv-MSVC_BATCH">
4978 <envar>MSVC_BATCH</envar>
4981 When set to any true value,
4982 specifies that &SCons; should batch
4983 compilation of object files
4984 when calling the &MSVC; compiler.
4985 All compilations of source files from the same source directory
4986 that generate target files in a same output directory
4987 and were configured in &SCons; using the same &consenv;
4988 will be built in a single call to the compiler.
4989 Only source files that have changed since their
4990 object files were built will be passed to each compiler invocation
4991 (via the &cv-link-CHANGED_SOURCES; &consvar;).
4992 Any compilations where the object (target) file base name
4993 (minus the <filename>.obj</filename>)
4994 does not match the source file base name
4995 will be compiled separately.
4999 <varlistentry id="cv-MSVC_NOTFOUND_POLICY">
5001 <envar>MSVC_NOTFOUND_POLICY</envar>
5004 Specify the &scons; behavior when the &MSVC; compiler is not detected.
5008 The &cv-MSVC_NOTFOUND_POLICY; specifies the &scons; behavior when no msvc versions are detected or
5009 when the requested msvc version is not detected.
5013 The valid values for &cv-MSVC_NOTFOUND_POLICY; and the corresponding &scons; behavior are:
5019 <term><parameter>'Error' or 'Exception'</parameter></term>
5022 Raise an exception when no msvc versions are detected or when the requested msvc version is not detected.
5028 <term><parameter>'Warning' or 'Warn'</parameter></term>
5031 Issue a warning and continue when no msvc versions are detected or when the requested msvc version is not detected.
5032 Depending on usage, this could result in build failure(s).
5038 <term><parameter>'Ignore' or 'Suppress'</parameter></term>
5041 Take no action and continue when no msvc versions are detected or when the requested msvc version is not detected.
5042 Depending on usage, this could result in build failure(s).
5050 Note: in addition to the camel case values shown above, lower case and upper case values are accepted as well.
5054 The &cv-MSVC_NOTFOUND_POLICY; is applied when any of the following conditions are satisfied:
5057 &cv-MSVC_VERSION; is specified, the default tools list is implicitly defined (i.e., the tools list is not specified),
5058 and the default tools list contains one or more of the msvc tools.
5061 &cv-MSVC_VERSION; is specified, the default tools list is explicitly specified (e.g., <literal>tools=['default']</literal>),
5062 and the default tools list contains one or more of the msvc tools.
5065 A non-default tools list is specified that contains one or more of the msvc tools (e.g., <literal>tools=['msvc', 'mslink']</literal>).
5071 The &cv-MSVC_NOTFOUND_POLICY; is ignored when any of the following conditions are satisfied:
5074 &cv-MSVC_VERSION; is not specified and the default tools list is implicitly defined (i.e., the tools list is not specified).
5077 &cv-MSVC_VERSION; is not specified and the default tools list is explicitly specified (e.g., <literal>tools=['default']</literal>).
5080 A non-default tool list is specified that does not contain any of the msvc tools (e.g., <literal>tools=['mingw']</literal>).
5086 Important usage details:
5090 &cv-MSVC_NOTFOUND_POLICY; must be passed as an argument to the &f-link-Environment;
5091 constructor when an msvc tool (e.g., &t-link-msvc;, &t-link-msvs;, etc.) is
5092 loaded via the default tools list or via a tools list passed to the
5093 &f-link-Environment; constructor.
5094 Otherwise, &cv-MSVC_NOTFOUND_POLICY; must be set before the first msvc tool is
5095 loaded into the environment.
5102 When &cv-MSVC_NOTFOUND_POLICY; is not specified, the default &scons; behavior is to issue a warning and continue
5103 subject to the conditions listed above. The default &scons; behavior may change in the future.
5106 <para><emphasis>New in version 4.4</emphasis></para>
5110 <varlistentry id="cv-MSVC_SCRIPT_ARGS">
5112 <envar>MSVC_SCRIPT_ARGS</envar>
5115 Pass user-defined arguments to the &MSVC; batch file determined via autodetection.
5119 &cv-MSVC_SCRIPT_ARGS; is available for msvc batch file arguments that do not have first-class support
5120 via &consvars; or when there is an issue with the appropriate &consvar; validation.
5121 When available, it is recommended to use the appropriate &consvars; (e.g., &cv-link-MSVC_TOOLSET_VERSION;)
5122 rather than &cv-MSVC_SCRIPT_ARGS; arguments.
5126 The valid values for &cv-MSVC_SCRIPT_ARGS; are: <literal>None</literal>, a string,
5127 or a list of strings.
5131 The &cv-MSVC_SCRIPT_ARGS; value is converted to a scalar string (i.e., "flattened").
5132 The resulting scalar string, if not empty, is passed as an argument to the msvc batch file determined
5133 via autodetection subject to the validation conditions listed below.
5137 &cv-MSVC_SCRIPT_ARGS; is ignored when the value is <literal>None</literal> and when the
5138 result from argument conversion is an empty string. The validation conditions below do not apply.
5142 An exception is raised when any of the following conditions are satisfied:
5146 &cv-MSVC_SCRIPT_ARGS; is specified for Visual Studio 2013 and earlier.
5150 Multiple SDK version arguments (e.g., <literal>'10.0.20348.0'</literal>) are specified
5151 in &cv-MSVC_SCRIPT_ARGS;.
5155 &cv-link-MSVC_SDK_VERSION; is specified and an SDK version argument
5156 (e.g., <literal>'10.0.20348.0'</literal>) is specified in &cv-MSVC_SCRIPT_ARGS;.
5157 Multiple SDK version declarations via &cv-link-MSVC_SDK_VERSION; and &cv-MSVC_SCRIPT_ARGS;
5162 Multiple toolset version arguments (e.g., <literal>'-vcvars_ver=14.29'</literal>)
5163 are specified in &cv-MSVC_SCRIPT_ARGS;.
5167 &cv-link-MSVC_TOOLSET_VERSION; is specified and a toolset version argument
5168 (e.g., <literal>'-vcvars_ver=14.29'</literal>) is specified in &cv-MSVC_SCRIPT_ARGS;.
5169 Multiple toolset version declarations via &cv-link-MSVC_TOOLSET_VERSION; and
5170 &cv-MSVC_SCRIPT_ARGS; are not allowed.
5174 Multiple spectre library arguments (e.g., <literal>'-vcvars_spectre_libs=spectre'</literal>)
5175 are specified in &cv-MSVC_SCRIPT_ARGS;.
5179 &cv-link-MSVC_SPECTRE_LIBS; is enabled and a spectre library argument
5180 (e.g., <literal>'-vcvars_spectre_libs=spectre'</literal>) is specified in
5181 &cv-MSVC_SCRIPT_ARGS;. Multiple spectre library declarations via &cv-link-MSVC_SPECTRE_LIBS;
5182 and &cv-MSVC_SCRIPT_ARGS; are not allowed.
5186 Multiple UWP arguments (e.g., <literal>uwp</literal> or <literal>store</literal>) are specified
5187 in &cv-MSVC_SCRIPT_ARGS;.
5191 &cv-link-MSVC_UWP_APP; is enabled and a UWP argument (e.g., <literal>uwp</literal> or
5192 <literal>store</literal>) is specified in &cv-MSVC_SCRIPT_ARGS;. Multiple UWP declarations
5193 via &cv-link-MSVC_UWP_APP; and &cv-MSVC_SCRIPT_ARGS; are not allowed.
5200 Example 1 - A Visual Studio 2022 build with an SDK version and a toolset version
5201 specified with a string argument:
5203 env = Environment(MSVC_VERSION='14.3', MSVC_SCRIPT_ARGS='10.0.20348.0 -vcvars_ver=14.29.30133')
5208 Example 2 - A Visual Studio 2022 build with an SDK version and a toolset version
5209 specified with a list argument:
5211 env = Environment(MSVC_VERSION='14.3', MSVC_SCRIPT_ARGS=['10.0.20348.0', '-vcvars_ver=14.29.30133'])
5216 Important usage details:
5220 &cv-MSVC_SCRIPT_ARGS; must be passed as an argument to the &f-link-Environment;
5221 constructor when an msvc tool (e.g., &t-link-msvc;, &t-link-msvs;, etc.) is
5222 loaded via the default tools list or via a tools list passed to the
5223 &f-link-Environment; constructor.
5224 Otherwise, &cv-MSVC_SCRIPT_ARGS; must be set before the first msvc tool is
5225 loaded into the environment.
5229 Other than checking for multiple declarations as described above, &cv-MSVC_SCRIPT_ARGS; arguments
5235 Erroneous, inconsistent, and/or version incompatible &cv-MSVC_SCRIPT_ARGS; arguments are likely
5236 to result in build failures for reasons that are not readily apparent and may be difficult to diagnose.
5238 The burden is on the user to ensure that the arguments provided to the msvc batch file are valid, consistent
5239 and compatible with the version of msvc selected.
5245 <para><emphasis>New in version 4.4</emphasis></para>
5249 <varlistentry id="cv-MSVC_SCRIPTERROR_POLICY">
5251 <envar>MSVC_SCRIPTERROR_POLICY</envar>
5254 Specify the &scons; behavior when &MSVC; batch file errors are detected.
5258 The &cv-MSVC_SCRIPTERROR_POLICY; specifies the &scons; behavior when msvc batch file errors are
5260 When &cv-MSVC_SCRIPTERROR_POLICY; is not specified, the default &scons; behavior is to suppress
5261 msvc batch file error messages.
5264 The root cause of msvc build failures may be difficult to diagnose. In these situations, setting
5265 the &scons; behavior to issue a warning when msvc batch file errors are detected <emphasis>may</emphasis>
5266 produce additional diagnostic information.
5270 The valid values for &cv-MSVC_SCRIPTERROR_POLICY; and the corresponding &scons; behavior are:
5276 <term><parameter>'Error' or 'Exception'</parameter></term>
5279 Raise an exception when msvc batch file errors are detected.
5285 <term><parameter>'Warning' or 'Warn'</parameter></term>
5288 Issue a warning when msvc batch file errors are detected.
5294 <term><parameter>'Ignore' or 'Suppress'</parameter></term>
5297 Suppress msvc batch file error messages.
5300 <para><emphasis>New in version 4.4</emphasis></para>
5308 Note: in addition to the camel case values shown above, lower case and upper case values are accepted as well.
5312 Example 1 - A Visual Studio 2022 build with user-defined script arguments:
5314 env = environment(MSVC_VERSION='14.3', MSVC_SCRIPT_ARGS=['8.1', 'store', '-vcvars_ver=14.1'])
5315 env.Program('hello', ['hello.c'], CCFLAGS='/MD', LIBS=['kernel32', 'user32', 'runtimeobject'])
5320 Example 1 - Output fragment:
5323 link /nologo /OUT:_build001\hello.exe kernel32.lib user32.lib runtimeobject.lib _build001\hello.obj
5324 LINK : fatal error LNK1104: cannot open file 'MSVCRT.lib'
5330 Example 2 - A Visual Studio 2022 build with user-defined script arguments and the script error policy set
5331 to issue a warning when msvc batch file errors are detected:
5333 env = environment(MSVC_VERSION='14.3', MSVC_SCRIPT_ARGS=['8.1', 'store', '-vcvars_ver=14.1'], MSVC_SCRIPTERROR_POLICY='warn')
5334 env.Program('hello', ['hello.c'], CCFLAGS='/MD', LIBS=['kernel32', 'user32', 'runtimeobject'])
5339 Example 2 - Output fragment:
5342 scons: warning: vc script errors detected:
5343 [ERROR:vcvars.bat] The UWP Application Platform requires a Windows 10 SDK.
5344 [ERROR:vcvars.bat] WindowsSdkDir = "C:\Program Files (x86)\Windows Kits\8.1\"
5345 [ERROR:vcvars.bat] host/target architecture is not supported : { x64 , x64 }
5347 link /nologo /OUT:_build001\hello.exe kernel32.lib user32.lib runtimeobject.lib _build001\hello.obj
5348 LINK : fatal error LNK1104: cannot open file 'MSVCRT.lib'
5353 Important usage details:
5357 &cv-MSVC_SCRIPTERROR_POLICY; must be passed as an argument to the &f-link-Environment;
5358 constructor when an msvc tool (e.g., &t-link-msvc;, &t-link-msvs;, etc.) is
5359 loaded via the default tools list or via a tools list passed to the
5360 &f-link-Environment; constructor.
5361 Otherwise, &cv-MSVC_SCRIPTERROR_POLICY; must be set before the first msvc tool is
5362 loaded into the environment.
5366 Due to &scons; implementation details, not all Windows system environment variables are propagated
5367 to the environment in which the msvc batch file is executed. Depending on Visual Studio version
5368 and installation options, non-fatal msvc batch file error messages may be generated for ancillary
5369 tools which may not affect builds with the msvc compiler. For this reason, caution is recommended
5370 when setting the script error policy to raise an exception (e.g., <literal>'Error'</literal>).
5376 <para><emphasis>New in version 4.4</emphasis></para>
5380 <varlistentry id="cv-MSVC_SDK_VERSION">
5382 <envar>MSVC_SDK_VERSION</envar>
5385 Build with a specific version of the Microsoft Software Development Kit (SDK).
5389 The valid values for &cv-MSVC_SDK_VERSION; are: <literal>None</literal>
5390 or a string containing the requested SDK version (e.g., <literal>'10.0.20348.0'</literal>).
5394 &cv-MSVC_SDK_VERSION; is ignored when the value is <literal>None</literal> and when
5395 the value is an empty string. The validation conditions below do not apply.
5399 An exception is raised when any of the following conditions are satisfied:
5403 &cv-MSVC_SDK_VERSION; is specified for Visual Studio 2013 and earlier.
5407 &cv-MSVC_SDK_VERSION; is specified and an SDK version argument is specified in
5408 &cv-link-MSVC_SCRIPT_ARGS;. Multiple SDK version declarations via &cv-MSVC_SDK_VERSION;
5409 and &cv-link-MSVC_SCRIPT_ARGS; are not allowed.
5413 The &cv-MSVC_SDK_VERSION; specified does not match any of the supported formats:
5416 <literal>'10.0.XXXXX.Y'</literal> [SDK 10.0]
5419 <literal>'8.1'</literal> [SDK 8.1]
5425 The system folder for the corresponding &cv-MSVC_SDK_VERSION; version is not found.
5426 The requested SDK version does not appear to be installed.
5430 The &cv-MSVC_SDK_VERSION; version does not appear to support the requested platform
5431 type (i.e., <literal>UWP</literal> or <literal>Desktop</literal>). The requested SDK version
5432 platform type components do not appear to be installed.
5436 The &cv-MSVC_SDK_VERSION; version is <literal>8.1</literal>, the platform type is
5437 <literal>UWP</literal>, and the build tools selected are from Visual Studio 2017
5438 and later (i.e., &cv-link-MSVC_VERSION; must be '14.0' or &cv-link-MSVC_TOOLSET_VERSION;
5446 Example 1 - A Visual Studio 2022 build with a specific Windows SDK version:
5448 env = Environment(MSVC_VERSION='14.3', MSVC_SDK_VERSION='10.0.20348.0')
5453 Example 2 - A Visual Studio 2022 build with a specific SDK version for the Universal Windows Platform:
5455 env = Environment(MSVC_VERSION='14.3', MSVC_SDK_VERSION='10.0.20348.0', MSVC_UWP_APP=True)
5460 Important usage details:
5464 &cv-MSVC_SDK_VERSION; must be passed as an argument to the &f-link-Environment;
5465 constructor when an msvc tool (e.g., &t-link-msvc;, &t-link-msvs;, etc.) is
5466 loaded via the default tools list or via a tools list passed to the
5467 &f-link-Environment; constructor.
5468 Otherwise, &cv-MSVC_SDK_VERSION; must be set before the first msvc tool is
5469 loaded into the environment.
5474 Should a SDK 10.0 version be installed that does not follow the naming scheme above, the
5475 SDK version will need to be specified via &cv-link-MSVC_SCRIPT_ARGS; until the version number
5476 validation format can be extended.
5481 Should an exception be raised indicating that the SDK version is not found, verify that
5482 the requested SDK version is installed with the necessary platform type components.
5486 There is a known issue with the Microsoft libraries when the target architecture is
5487 <literal>ARM64</literal> and a Windows 11 SDK (version <literal>'10.0.22000.0'</literal> and later) is used
5488 with the <literal>v141</literal> build tools and older <literal>v142</literal> toolsets
5489 (versions <literal>'14.28.29333'</literal> and earlier). Should build failures arise with these combinations
5490 of settings due to unresolved symbols in the Microsoft libraries, &cv-MSVC_SDK_VERSION; may be employed to
5491 specify a Windows 10 SDK (e.g., <literal>'10.0.20348.0'</literal>) for the build.
5497 <para><emphasis>New in version 4.4</emphasis></para>
5501 <varlistentry id="cv-MSVC_SPECTRE_LIBS">
5503 <envar>MSVC_SPECTRE_LIBS</envar>
5506 Build with the spectre-mitigated &MSVC; libraries.
5510 The valid values for &cv-MSVC_SPECTRE_LIBS; are: <literal>True</literal>,
5511 <literal>False</literal>, or <literal>None</literal>.
5515 When &cv-MSVC_SPECTRE_LIBS; is enabled (i.e., <literal>True</literal>),
5516 the &MSVC; environment will include the paths to the spectre-mitigated implementations
5517 of the &MSVC; libraries.
5521 An exception is raised when any of the following conditions are satisfied:
5525 &cv-MSVC_SPECTRE_LIBS; is enabled for Visual Studio 2015 and earlier.
5529 &cv-MSVC_SPECTRE_LIBS; is enabled and a spectre library argument is specified in
5530 &cv-link-MSVC_SCRIPT_ARGS;. Multiple spectre library declarations via &cv-MSVC_SPECTRE_LIBS;
5531 and &cv-link-MSVC_SCRIPT_ARGS; are not allowed.
5535 &cv-MSVC_SPECTRE_LIBS; is enabled and the platform type is <literal>UWP</literal>. There
5536 are no spectre-mitigated libraries for Universal Windows Platform (UWP) applications or
5544 Example - A Visual Studio 2022 build with spectre mitigated &MSVC; libraries:
5546 env = Environment(MSVC_VERSION='14.3', MSVC_SPECTRE_LIBS=True)
5551 Important usage details:
5555 &cv-MSVC_SPECTRE_LIBS; must be passed as an argument to the &f-link-Environment;
5556 constructor when an msvc tool (e.g., &t-link-msvc;, &t-link-msvs;, etc.) is
5557 loaded via the default tools list or via a tools list passed to the
5558 &f-link-Environment; constructor.
5559 Otherwise, &cv-MSVC_SPECTRE_LIBS; must be set before the first msvc tool is
5560 loaded into the environment.
5564 Additional compiler switches (e.g., <literal>/Qspectre</literal>) are necessary for including
5565 spectre mitigations when building user artifacts. Refer to the Visual Studio documentation for
5571 The existence of the spectre libraries host architecture and target architecture folders are not
5572 verified when &cv-MSVC_SPECTRE_LIBS; is enabled which could result in build failures.
5574 The burden is on the user to ensure the requisite libraries with spectre mitigations are installed.
5580 <para><emphasis>New in version 4.4</emphasis></para>
5584 <varlistentry id="cv-MSVC_TOOLSET_VERSION">
5586 <envar>MSVC_TOOLSET_VERSION</envar>
5589 Build with a specific &MSVC; toolset version.
5593 Specifying &cv-MSVC_TOOLSET_VERSION; does not affect the autodetection and selection
5594 of msvc instances. The &cv-MSVC_TOOLSET_VERSION; is applied <emphasis>after</emphasis>
5595 an msvc instance is selected. This could be the default version of msvc if &cv-link-MSVC_VERSION;
5600 The valid values for &cv-MSVC_TOOLSET_VERSION; are: <literal>None</literal>
5601 or a string containing the requested toolset version (e.g., <literal>'14.29'</literal>).
5605 &cv-MSVC_TOOLSET_VERSION; is ignored when the value is <literal>None</literal> and when
5606 the value is an empty string. The validation conditions below do not apply.
5610 An exception is raised when any of the following conditions are satisfied:
5614 &cv-MSVC_TOOLSET_VERSION; is specified for Visual Studio 2015 and earlier.
5618 &cv-MSVC_TOOLSET_VERSION; is specified and a toolset version argument is specified in
5619 &cv-link-MSVC_SCRIPT_ARGS;. Multiple toolset version declarations via &cv-MSVC_TOOLSET_VERSION;
5620 and &cv-link-MSVC_SCRIPT_ARGS; are not allowed.
5625 The &cv-MSVC_TOOLSET_VERSION; specified does not match any of the supported formats:
5631 <literal>'XX.Y'</literal>
5635 <literal>'XX.YY'</literal>
5639 <literal>'XX.YY.ZZZZZ'</literal>
5643 <literal>'XX.YY.Z'</literal> to <literal>'XX.YY.ZZZZ'</literal>
5645 [&scons; extension not directly supported by the msvc batch files and may be removed in the future]
5650 <literal>'XX.YY.ZZ.N'</literal> [SxS format]
5654 <literal>'XX.YY.ZZ.NN'</literal> [SxS format]
5662 The major msvc version prefix (i.e., <literal>'XX.Y'</literal>) of the &cv-MSVC_TOOLSET_VERSION; specified
5663 is for Visual Studio 2013 and earlier (e.g., <literal>'12.0'</literal>).
5667 The major msvc version prefix (i.e., <literal>'XX.Y'</literal>) of the &cv-MSVC_TOOLSET_VERSION; specified
5668 is greater than the msvc version selected (e.g., <literal>'99.0'</literal>).
5672 A system folder for the corresponding &cv-MSVC_TOOLSET_VERSION; version is not found.
5673 The requested toolset version does not appear to be installed.
5680 Toolset selection details:
5684 When &cv-MSVC_TOOLSET_VERSION; is not an SxS version number or a full toolset version number:
5685 the first toolset version, ranked in descending order, that matches the &cv-MSVC_TOOLSET_VERSION;
5690 When &cv-MSVC_TOOLSET_VERSION; is specified using the major msvc version prefix
5691 (i.e., <literal>'XX.Y'</literal>) and the major msvc version is that of the latest release of
5692 Visual Studio, the selected toolset version may not be the same as the default &MSVC; toolset version.
5694 In the latest release of Visual Studio, the default &MSVC; toolset version is not necessarily the
5695 toolset with the largest version number.
5702 Example 1 - A default Visual Studio build with a partial toolset version specified:
5704 env = Environment(MSVC_TOOLSET_VERSION='14.2')
5709 Example 2 - A default Visual Studio build with a partial toolset version specified:
5711 env = Environment(MSVC_TOOLSET_VERSION='14.29')
5716 Example 3 - A Visual Studio 2022 build with a full toolset version specified:
5718 env = Environment(MSVC_VERSION='14.3', MSVC_TOOLSET_VERSION='14.29.30133')
5723 Example 4 - A Visual Studio 2022 build with an SxS toolset version specified:
5725 env = Environment(MSVC_VERSION='14.3', MSVC_TOOLSET_VERSION='14.29.16.11')
5730 Important usage details:
5734 &cv-MSVC_TOOLSET_VERSION; must be passed as an argument to the &f-link-Environment;
5735 constructor when an msvc tool (e.g., &t-link-msvc;, &t-link-msvs;, etc.) is
5736 loaded via the default tools list or via a tools list passed to the
5737 &f-link-Environment; constructor.
5738 Otherwise, &cv-MSVC_TOOLSET_VERSION; must be set before the first msvc tool is
5739 loaded into the environment.
5744 The existence of the toolset host architecture and target architecture folders are not verified
5745 when &cv-MSVC_TOOLSET_VERSION; is specified which could result in build failures.
5747 The burden is on the user to ensure the requisite toolset target architecture build tools are installed.
5753 <para><emphasis>New in version 4.4</emphasis></para>
5757 <varlistentry id="cv-MSVC_USE_SCRIPT">
5759 <envar>MSVC_USE_SCRIPT</envar>
5762 Use a batch script to set up the &MSVC; compiler.
5766 If set to the name of a Visual Studio <filename>.bat</filename> file
5767 (e.g. <filename>vcvars.bat</filename>),
5768 &SCons; will run that batch file instead of the auto-detected one,
5769 and extract the relevant variables from the result (typically
5770 <envar>%INCLUDE%</envar>,
5771 <envar>%LIB%</envar>, and
5772 <envar>%PATH%</envar>) for supplying to the build.
5773 This can be useful to force the use of a compiler version that
5774 &SCons; does not detect.
5775 &cv-link-MSVC_USE_SCRIPT_ARGS; provides arguments passed to this script.
5780 &cv-MSVC_USE_SCRIPT; to <constant>None</constant> bypasses the
5781 Visual Studio autodetection entirely;
5782 use this if you are running &SCons; in a Visual Studio <command>cmd</command>
5783 window and importing the shell's environment variables - that
5784 is, if you are sure everything is set correctly already and
5785 you don't want &SCons; to change anything.
5788 &cv-MSVC_USE_SCRIPT; ignores &cv-link-MSVC_VERSION; and &cv-link-TARGET_ARCH;.
5791 <para><emphasis>Changed in version 4.4:</emphasis>
5792 new &cv-link-MSVC_USE_SCRIPT_ARGS; provides a
5793 way to pass arguments.
5798 <varlistentry id="cv-MSVC_USE_SCRIPT_ARGS">
5800 <envar>MSVC_USE_SCRIPT_ARGS</envar>
5803 Provides arguments passed to the script &cv-link-MSVC_USE_SCRIPT;.
5806 <para><emphasis>New in version 4.4</emphasis></para>
5810 <varlistentry id="cv-MSVC_USE_SETTINGS">
5812 <envar>MSVC_USE_SETTINGS</envar>
5815 Use a dictionary to set up the &MSVC; compiler.
5819 &cv-MSVC_USE_SETTINGS; is ignored when &cv-link-MSVC_USE_SCRIPT; is defined
5820 and/or when &cv-MSVC_USE_SETTINGS; is set to <constant>None</constant>.
5824 The dictionary is used to populate the environment with the relevant variables
5825 (typically <envar>%INCLUDE%</envar>, <envar>%LIB%</envar>, and <envar>%PATH%</envar>)
5826 for supplying to the build. This can be useful to force the use of a compiler environment
5827 that &SCons; does not configure correctly. This is an alternative to manually configuring
5828 the environment when bypassing Visual Studio autodetection entirely by setting
5829 &cv-link-MSVC_USE_SCRIPT; to <constant>None</constant>.
5833 Here is an example of configuring a build environment using the &MSVC; compiler
5834 included in the Microsoft SDK on a 64-bit host and building for a 64-bit architecture:
5836 # Microsoft SDK 6.0 (MSVC 8.0): 64-bit host and 64-bit target
5837 msvc_use_settings = {
5839 "C:\\Program Files\\Microsoft SDKs\\Windows\\v6.0\\VC\\Bin\\x64",
5840 "C:\\Program Files\\Microsoft SDKs\\Windows\\v6.0\\Bin\\x64",
5841 "C:\\Program Files\\Microsoft SDKs\\Windows\\v6.0\\Bin",
5842 "C:\\Windows\\Microsoft.NET\\Framework\\v2.0.50727",
5843 "C:\\Windows\\system32",
5845 "C:\\Windows\\System32\\Wbem",
5846 "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\"
5849 "C:\\Program Files\\Microsoft SDKs\\Windows\\v6.0\\VC\\Include",
5850 "C:\\Program Files\\Microsoft SDKs\\Windows\\v6.0\\VC\\Include\\Sys",
5851 "C:\\Program Files\\Microsoft SDKs\\Windows\\v6.0\\Include",
5852 "C:\\Program Files\\Microsoft SDKs\\Windows\\v6.0\\Include\\gl",
5855 "C:\\Program Files\\Microsoft SDKs\\Windows\\v6.0\\VC\\Lib\\x64",
5856 "C:\\Program Files\\Microsoft SDKs\\Windows\\v6.0\\Lib\\x64",
5859 "VSCMD_ARG_app_plat": [],
5861 "VCToolsInstallDir": []
5864 # Specifying MSVC_VERSION is recommended
5865 env = Environment(MSVC_VERSION='8.0', MSVC_USE_SETTINGS=msvc_use_settings)
5870 Important usage details:
5874 &cv-MSVC_USE_SETTINGS; must be passed as an argument to the &f-link-Environment;
5875 constructor when an msvc tool (e.g., &t-link-msvc;, &t-link-msvs;, etc.) is
5876 loaded via the default tools list or via a tools list passed to the
5877 &f-link-Environment; constructor.
5878 Otherwise, &cv-MSVC_USE_SETTINGS; must be set before the first msvc tool is
5879 loaded into the environment.
5884 The dictionary content requirements are based on the internal msvc implementation and
5885 therefore may change at any time.
5887 The burden is on the user to ensure the dictionary contents are minimally sufficient to
5888 ensure successful builds.
5896 <para><emphasis>New in version 4.4</emphasis></para>
5900 <varlistentry id="cv-MSVC_UWP_APP">
5902 <envar>MSVC_UWP_APP</envar>
5905 Build with the Universal Windows Platform (UWP) application &MSVC; libraries.
5909 The valid values for &cv-MSVC_UWP_APP; are: <literal>True</literal>,
5910 <literal>'1'</literal>, <literal>False</literal>, <literal>'0'</literal>,
5911 or <literal>None</literal>.
5915 When &cv-MSVC_UWP_APP; is enabled (i.e., <literal>True</literal> or
5916 <literal>'1'</literal>), the &MSVC; environment will be set up to point
5917 to the Windows Store compatible libraries and &MSVC; runtimes. In doing so,
5918 any libraries that are built will be able to be used in a UWP App and published
5919 to the Windows Store.
5920 <!-- This flag will only have an effect with Visual Studio 2015 or later. -->
5921 <!-- This variable must be passed as an argument to the Environment()
5922 constructor; setting it later has no effect. -->
5926 An exception is raised when any of the following conditions are satisfied:
5929 &cv-MSVC_UWP_APP; is enabled for Visual Studio 2013 and earlier.
5932 &cv-MSVC_UWP_APP; is enabled and a UWP argument is specified in
5933 &cv-link-MSVC_SCRIPT_ARGS;. Multiple UWP declarations via &cv-MSVC_UWP_APP;
5934 and &cv-link-MSVC_SCRIPT_ARGS; are not allowed.
5940 Example - A Visual Studio 2022 build for the Universal Windows Platform:
5942 env = Environment(MSVC_VERSION='14.3', MSVC_UWP_APP=True)
5947 Important usage details:
5951 &cv-MSVC_UWP_APP; must be passed as an argument to the &f-link-Environment;
5952 constructor when an msvc tool (e.g., &t-link-msvc;, &t-link-msvs;, etc.) is
5953 loaded via the default tools list or via a tools list passed to the
5954 &f-link-Environment; constructor.
5955 Otherwise, &cv-MSVC_UWP_APP; must be set before the first msvc tool is
5956 loaded into the environment.
5961 The existence of the UWP libraries is not verified when &cv-MSVC_UWP_APP; is enabled
5962 which could result in build failures.
5964 The burden is on the user to ensure the requisite UWP libraries are installed.
5972 <varlistentry id="cv-MSVC_VERSION">
5974 <envar>MSVC_VERSION</envar>
5977 A string to select the preferred version of &MSVC;.
5978 If the specified version is unavailable and/or unknown to &SCons;,
5979 a warning is issued showing the versions actually discovered,
5980 and the build will eventually fail indicating a missing compiler binary.
5981 If &cv-MSVC_VERSION; is not set, &SCons; will (by default) select the
5982 latest version of &MSVC; installed on your system
5983 (excluding any preview versions).
5988 In order to take effect, &cv-MSVC_VERSION; must be set before
5989 the initial &MSVC; compiler discovery takes place.
5990 Discovery happens, at the latest, during the first call to the
5991 &f-link-Environment; function, unless a <parameter>tools</parameter>
5992 list is specified which excludes the entire &MSVC; toolchain -
5993 that is, omits <literal>"defaults"</literal>
5994 and any specific tool module that refers to parts of the toolchain
5995 (&t-link-msvc;, &t-link-mslink;, &t-link-masm;, &t-link-midl;
5996 and &t-link-msvs;). In this case, detection is deferred until
5997 any one of those tool modules is invoked manually.
5998 The following two examples illustrate this:
6002 # MSVC_VERSION set as Environment is created
6003 env = Environment(MSVC_VERSION='14.2')
6005 # Initialization deferred with empty tools, triggered manually
6006 env = Environment(tools=[])
6007 env['MSVC_VERSION'] = '14.2
6015 The valid values for &cv-MSVC_VERSION; represent major versions
6016 of the compiler, except that versions ending in <literal>Exp</literal>
6017 refer to "Express" or "Express for Desktop" Visual Studio editions.
6018 Values that do not look like a valid compiler version
6019 <emphasis>string</emphasis> are not supported.
6023 The following table shows the correspondence
6024 of &cv-MSVC_VERSION; values to various version indicators
6025 ('x' is used as a placeholder for
6026 a single digit that can vary).
6031 <colspec align="left"/>
6032 <colspec align="center"/>
6033 <colspec align="center"/>
6034 <colspec align="left"/>
6035 <colspec align="center"/>
6038 <entry> SCons Key </entry>
6039 <entry> <literallayout>
6041 Version </literallayout></entry>
6042 <entry> <literal>_MSVC_VER</literal> </entry>
6043 <entry> Visual Studio Product </entry>
6044 <!--entry> <literallayout>
6046 Product </literallayout></entry-->
6047 <entry> <literallayout>
6049 Visual Studio </literallayout></entry>
6054 <entry> <literal>"14.3"</literal> </entry>
6055 <entry> 14.3x </entry>
6056 <entry> 193x </entry>
6057 <entry> Visual Studio 2022 </entry>
6058 <entry> 17.x, 17.1x </entry>
6061 <entry> <literal>"14.2"</literal> </entry>
6062 <entry> 14.2x </entry>
6063 <entry> 192x </entry>
6064 <entry> Visual Studio 2019 </entry>
6065 <entry> 16.x, 16.1x </entry>
6068 <entry> <literal>"14.1"</literal> </entry>
6069 <entry> 14.1 or 14.1x </entry>
6070 <entry> 191x </entry>
6071 <entry> Visual Studio 2017 </entry>
6072 <entry> 15.x </entry>
6075 <entry> <literal>"14.1Exp"</literal> </entry>
6076 <entry> 14.1 or 14.1x </entry>
6077 <entry> 191x </entry>
6078 <entry> Visual Studio 2017 Express </entry>
6079 <entry> 15.x </entry>
6082 <entry> <literal>"14.0"</literal> </entry>
6083 <entry> 14.0 </entry>
6084 <entry> 1900 </entry>
6085 <entry> Visual Studio 2015 </entry>
6086 <entry> 14.0 </entry>
6089 <entry> <literal>"14.0Exp"</literal> </entry>
6090 <entry> 14.0 </entry>
6091 <entry> 1900 </entry>
6092 <entry> Visual Studio 2015 Express </entry>
6093 <entry> 14.0 </entry>
6096 <entry> <literal>"12.0"</literal> </entry>
6097 <entry> 12.0 </entry>
6098 <entry> 1800 </entry>
6099 <entry> Visual Studio 2013 </entry>
6100 <entry> 12.0 </entry>
6103 <entry> <literal>"12.0Exp"</literal> </entry>
6104 <entry> 12.0 </entry>
6105 <entry> 1800 </entry>
6106 <entry> Visual Studio 2013 Express </entry>
6107 <entry> 12.0 </entry>
6110 <entry> <literal>"11.0"</literal> </entry>
6111 <entry> 11.0 </entry>
6112 <entry> 1700 </entry>
6113 <entry> Visual Studio 2012 </entry>
6114 <entry> 11.0 </entry>
6117 <entry> <literal>"11.0Exp"</literal> </entry>
6118 <entry> 11.0 </entry>
6119 <entry> 1700 </entry>
6120 <entry> Visual Studio 2012 Express </entry>
6121 <entry> 11.0 </entry>
6124 <entry> <literal>"10.0"</literal> </entry>
6125 <entry> 10.0 </entry>
6126 <entry> 1600 </entry>
6127 <entry> Visual Studio 2010 </entry>
6128 <entry> 10.0 </entry>
6131 <entry> <literal>"10.0Exp"</literal> </entry>
6132 <entry> 10.0 </entry>
6133 <entry> 1600 </entry>
6134 <entry> Visual C++ Express 2010 </entry>
6135 <entry> 10.0 </entry>
6138 <entry> <literal>"9.0"</literal> </entry>
6139 <entry> 9.0 </entry>
6140 <entry> 1500 </entry>
6141 <entry> Visual Studio 2008 </entry>
6142 <entry> 9.0 </entry>
6145 <entry> <literal>"9.0Exp"</literal> </entry>
6146 <entry> 9.0 </entry>
6147 <entry> 1500 </entry>
6148 <entry> Visual C++ Express 2008 </entry>
6149 <entry> 9.0 </entry>
6152 <entry> <literal>"8.0"</literal> </entry>
6153 <entry> 8.0 </entry>
6154 <entry> 1400 </entry>
6155 <entry> Visual Studio 2005 </entry>
6156 <entry> 8.0 </entry>
6159 <entry> <literal>"8.0Exp"</literal> </entry>
6160 <entry> 8.0 </entry>
6161 <entry> 1400 </entry>
6162 <entry> Visual C++ Express 2005 </entry>
6163 <entry> 8.0 </entry>
6166 <entry> <literal>"7.1"</literal> </entry>
6167 <entry> 7.1 </entry>
6168 <entry> 1300 </entry>
6169 <entry> Visual Studio .NET 2003 </entry>
6170 <entry> 7.1 </entry>
6173 <entry> <literal>"7.0"</literal> </entry>
6174 <entry> 7.0 </entry>
6175 <entry> 1200 </entry>
6176 <entry> Visual Studio .NET 2002 </entry>
6177 <entry> 7.0 </entry>
6180 <entry> <literal>"6.0"</literal> </entry>
6181 <entry> 6.0 </entry>
6182 <entry> 1100 </entry>
6183 <entry> Visual Studio 6.0 </entry>
6184 <entry> 6.0 </entry>
6194 It is not necessary to install a Visual Studio IDE
6195 to build with &SCons; (for example, you can install only
6196 Build Tools), but when a Visual Studio IDE is installed,
6197 additional builders such as &b-link-MSVSSolution; and
6198 &b-link-MSVSProject; become available and correspond to
6199 the specified versions.
6203 Versions ending in <literal>Exp</literal> refer to historical
6204 "Express" or "Express for Desktop" Visual Studio editions,
6205 which had feature limitations compared to the full editions.
6206 It is only necessary to specify the <literal>Exp</literal>
6207 suffix to select the express edition when both express and
6208 non-express editions of the same product are installed
6209 simulaneously. The <literal>Exp</literal> suffix is unnecessary,
6210 but accepted, when only the express edition is installed.
6216 The compilation environment can be further or more precisely specified through the
6217 use of several other &consvars;: see the descriptions of
6218 &cv-link-MSVC_TOOLSET_VERSION;,
6219 &cv-link-MSVC_SDK_VERSION;,
6220 &cv-link-MSVC_USE_SCRIPT;,
6221 &cv-link-MSVC_USE_SCRIPT_ARGS;,
6222 and &cv-link-MSVC_USE_SETTINGS;.
6227 <varlistentry id="cv-MSVS">
6232 When the Microsoft Visual Studio tools are initialized,
6233 they set up this dictionary with the following keys:
6237 <term>VERSION</term>
6239 <para>the version of MSVS being used (can be set via
6240 &cv-link-MSVC_VERSION;)</para>
6244 <term>VERSIONS</term>
6246 <para>the available versions of MSVS installed</para>
6250 <term>VCINSTALLDIR</term>
6252 <para>installed directory of &MSVC;</para>
6256 <term>VSINSTALLDIR</term>
6258 <para>installed directory of Visual Studio</para>
6262 <term>FRAMEWORKDIR</term>
6264 <para>installed directory of the .NET framework</para>
6268 <term>FRAMEWORKVERSIONS</term>
6271 list of installed versions of the .NET framework,
6272 sorted latest to oldest.
6277 <term>FRAMEWORKVERSION</term>
6279 <para>latest installed version of the .NET framework</para>
6283 <term>FRAMEWORKSDKDIR</term>
6285 <para>installed location of the .NET SDK.</para>
6289 <term>PLATFORMSDKDIR</term>
6291 <para>installed location of the Platform SDK.</para>
6295 <term>PLATFORMSDK_MODULES</term>
6298 dictionary of installed Platform SDK modules, where the
6299 dictionary keys are keywords for the various modules,
6300 and the values are 2-tuples where the first is the
6301 release date, and the second is the version number.
6306 <para>If a value is not set, it was not available in the registry.
6307 Visual Studio 2017 and later do not use the registry for
6308 primary storage of this information, so typically for these
6309 versions only <literal>PROJECTSUFFIX</literal> and
6310 <literal>SOLUTIONSUFFIX</literal> will be set.
6314 <varlistentry id="cv-MSVS_ARCH">
6316 <envar>MSVS_ARCH</envar>
6318 <listitem><para>Sets the architecture for which the generated project(s) should build.</para>
6320 The default value is <literal>x86</literal>.
6321 <literal>amd64</literal> is also supported by &SCons; for
6322 most Visual Studio versions. Since Visual Studio 2015
6323 <literal>arm</literal> is supported, and since Visual Studio
6324 2017 <literal>arm64</literal> is supported.
6325 Trying to set &cv-MSVS_ARCH;
6326 to an architecture that's not supported for a given Visual
6327 Studio version will generate an error.
6331 <varlistentry id="cv-MSVS_PROJECT_GUID">
6333 <envar>MSVS_PROJECT_GUID</envar>
6336 The string placed in a generated
6337 &MSVC; project file as the value of the
6338 <literal>ProjectGUID</literal> attribute. There is no default
6339 value. If not defined, a new GUID is generated.
6343 <varlistentry id="cv-MSVS_SCC_AUX_PATH">
6345 <envar>MSVS_SCC_AUX_PATH</envar>
6348 The path name placed in a generated
6349 &MSVC; project file as the value of the
6350 <literal>SccAuxPath</literal> attribute if the
6351 <envar>MSVS_SCC_PROVIDER</envar> &consvar; is
6352 also set. There is no default value.
6356 <varlistentry id="cv-MSVS_SCC_CONNECTION_ROOT">
6358 <envar>MSVS_SCC_CONNECTION_ROOT</envar>
6361 The root path of projects in your SCC workspace, i.e the
6362 path under which all project and solution files will be
6363 generated. It is used as a reference path from which the
6364 relative paths of the generated &MSVC; project
6365 and solution files are computed. The relative project file path
6366 is placed as the value of the <literal>SccLocalPath</literal>
6367 attribute of the project file and as the values of the
6368 <literal>SccProjectFilePathRelativizedFromConnection[i]</literal>
6369 (where [i] ranges from 0 to the number of projects in the solution)
6370 attributes of the <literal>GlobalSection(SourceCodeControl)</literal>
6371 section of the Microsoft Visual Studio solution file. Similarly
6372 the relative solution file path is placed as the values of the
6373 <literal>SccLocalPath[i]</literal> (where [i] ranges from 0
6374 to the number of projects in the solution) attributes of the
6375 <literal>GlobalSection(SourceCodeControl)</literal> section of
6376 the Microsoft Visual Studio solution file. This is used only if
6377 the <envar>MSVS_SCC_PROVIDER</envar> &consvar; is
6378 also set. The default value is the current working directory.
6382 <varlistentry id="cv-MSVS_SCC_PROJECT_NAME">
6384 <envar>MSVS_SCC_PROJECT_NAME</envar>
6387 The project name placed in a generated &MSVC;
6388 project file as the value of the
6389 <literal>SccProjectName</literal> attribute if the
6390 <envar>MSVS_SCC_PROVIDER</envar> &consvar;
6391 is also set. In this case the string is also placed in
6392 the <literal>SccProjectName0</literal> attribute of the
6393 <literal>GlobalSection(SourceCodeControl)</literal> section
6394 of the Microsoft Visual Studio solution file. There is no
6399 <varlistentry id="cv-MSVS_SCC_PROVIDER">
6401 <envar>MSVS_SCC_PROVIDER</envar>
6404 The string placed in a generated &MSVC;
6405 project file as the value of the
6406 <literal>SccProvider</literal> attribute. The string is
6407 also placed in the <literal>SccProvider0</literal> attribute
6408 of the <literal>GlobalSection(SourceCodeControl)</literal>
6409 section of the Microsoft Visual Studio solution file. There
6410 is no default value.
6414 <varlistentry id="cv-MSVS_VERSION">
6416 <envar>MSVS_VERSION</envar>
6418 <listitem><para>Set the preferred version of Microsoft Visual Studio to use.</para>
6420 If &cv-MSVS_VERSION; is not set, &SCons; will (by default)
6421 select the latest version of Visual Studio installed on your
6422 system. So, if you have version 6 and version 7 (MSVS .NET)
6423 installed, it will prefer version 7. You can override this by
6424 specifying the &cv-link-MSVS_VERSION; variable when
6425 initializing the Environment, setting it to the appropriate
6426 version ('6.0' or '7.0', for example). If the specified
6427 version isn't installed, tool initialization will fail.
6430 <emphasis>Deprecated since 1.3.0:</emphasis>
6431 &cv-MSVS_VERSION; is deprecated in favor of &cv-link-MSVC_VERSION;.
6432 As a transitional aid, if &cv-MSVS_VERSION; is set
6433 and &cv-MSVC_VERSION; is not,
6434 &cv-MSVC_VERSION; will be initialized to the value
6435 of &cv-MSVS_VERSION;.
6436 An error is raised if If both are set and have different values,
6440 <varlistentry id="cv-MSVSBUILDCOM">
6442 <envar>MSVSBUILDCOM</envar>
6445 The build command line placed in a generated &MSVC;
6446 project file. The default is to have Visual Studio
6447 invoke &SCons; with any specified build targets.
6451 <varlistentry id="cv-MSVSCLEANCOM">
6453 <envar>MSVSCLEANCOM</envar>
6456 The clean command line placed in a generated &MSVC;
6457 project file. The default is to have Visual Studio
6458 invoke &SCons; with the <option>-c</option> option to remove
6459 any specified targets.
6463 <varlistentry id="cv-MSVSENCODING">
6465 <envar>MSVSENCODING</envar>
6468 The encoding string placed in a generated &MSVC;
6469 project file. The default is encoding
6470 <literal>Windows-1252</literal>.
6474 <varlistentry id="cv-MSVSPROJECTCOM">
6476 <envar>MSVSPROJECTCOM</envar>
6478 <listitem><para>The action used to generate &MSVC; project files.</para>
6481 <varlistentry id="cv-MSVSPROJECTSUFFIX">
6483 <envar>MSVSPROJECTSUFFIX</envar>
6486 The suffix used for &MSVC; project (DSP)
6487 files. The default value is
6488 <filename>.vcxproj</filename> when using Visual Studio 2010
6489 and later, <filename>.vcproj</filename>
6490 when using Visual Studio versions between 2002 and 2008,
6491 and <filename>.dsp</filename> when using Visual Studio 6.0.
6495 <varlistentry id="cv-MSVSREBUILDCOM">
6497 <envar>MSVSREBUILDCOM</envar>
6500 The rebuild command line placed in a generated &MSVC;
6501 project file. The default is to have Visual
6502 Studio invoke &SCons; with any specified rebuild targets.
6507 <varlistentry id="cv-MSVSSCONS">
6509 <envar>MSVSSCONS</envar>
6512 The &SCons; used in generated &MSVC; project
6513 files. The default is the version of &SCons; being used to
6514 generate the project file.
6518 <varlistentry id="cv-MSVSSCONSCOM">
6520 <envar>MSVSSCONSCOM</envar>
6523 The default &SCons; command used in generated &MSVC; project files.
6527 <varlistentry id="cv-MSVSSCONSCRIPT">
6529 <envar>MSVSSCONSCRIPT</envar>
6532 The sconscript file (that is, &SConstruct; or &SConscript;
6533 file) that will be invoked by &MSVC; project files
6534 (through the &cv-link-MSVSSCONSCOM; variable). The default
6535 is the same sconscript file that contains the call to
6536 &b-link-MSVSProject; to build the project file.
6540 <varlistentry id="cv-MSVSSCONSFLAGS">
6542 <envar>MSVSSCONSFLAGS</envar>
6545 The &SCons; flags used in generated &MSVC; project files.
6549 <varlistentry id="cv-MSVSSOLUTIONCOM">
6551 <envar>MSVSSOLUTIONCOM</envar>
6553 <listitem><para>The action used to generate Microsoft Visual Studio solution files.</para>
6556 <varlistentry id="cv-MSVSSOLUTIONSUFFIX">
6558 <envar>MSVSSOLUTIONSUFFIX</envar>
6561 The suffix used for Microsoft Visual Studio solution (DSW)
6562 files. The default value is <filename>.sln</filename>
6563 when using Visual Studio version 7.x (.NET 2002) and later,
6564 and <filename>.dsw</filename> when using Visual Studio 6.0.
6568 <varlistentry id="cv-MT">
6573 The program used on Windows systems to embed manifests into DLLs and EXEs.
6574 See also &cv-link-WINDOWS_EMBED_MANIFEST;.
6578 <varlistentry id="cv-MTEXECOM">
6580 <envar>MTEXECOM</envar>
6583 The Windows command line used to embed manifests into executables.
6584 See also &cv-link-MTSHLIBCOM;.
6588 <varlistentry id="cv-MTFLAGS">
6590 <envar>MTFLAGS</envar>
6593 Flags passed to the &cv-link-MT; manifest embedding program (Windows only).
6597 <varlistentry id="cv-MTSHLIBCOM">
6599 <envar>MTSHLIBCOM</envar>
6602 The Windows command line used to embed manifests into shared libraries (DLLs).
6603 See also &cv-link-MTEXECOM;.
6607 <varlistentry id="cv-MWCW_VERSION">
6609 <envar>MWCW_VERSION</envar>
6612 The version number of the MetroWerks CodeWarrior C compiler
6617 <varlistentry id="cv-MWCW_VERSIONS">
6619 <envar>MWCW_VERSIONS</envar>
6622 A list of installed versions of the MetroWerks CodeWarrior C compiler
6627 <varlistentry id="cv-NAME">
6632 Specfies the name of the project to package.
6634 <para>See the &b-link-Package; builder.</para>
6637 <varlistentry id="cv-NINJA_ALIAS_NAME">
6639 <envar>NINJA_ALIAS_NAME</envar>
6642 The name of the alias target which will cause &SCons; to create the &ninja; build file,
6643 and then (optionally) run &ninja;.
6644 The default value is <literal>generate-ninja</literal>.
6648 <varlistentry id="cv-NINJA_CMD_ARGS">
6650 <envar>NINJA_CMD_ARGS</envar>
6653 A string which will pass arguments through SCons to the ninja command when scons executes ninja.
6654 Has no effect if &cv-NINJA_DISABLE_AUTO_RUN; is set.
6657 This value can also be passed on the command line:
6660 scons NINJA_CMD_ARGS=-v
6662 scons NINJA_CMD_ARGS="-v -j 3"
6666 <varlistentry id="cv-NINJA_COMPDB_EXPAND">
6668 <envar>NINJA_COMPDB_EXPAND</envar>
6671 Boolean value to instruct &ninja; to expand the command line arguments normally put into
6673 If true, prevents unexpanded lines in the compilation database like
6674 <quote><literal>gcc @rsp_file</literal></quote> and instead yields expanded lines like
6675 <quote><literal>gcc -c -o myfile.o myfile.c -Ia -DXYZ</literal></quote>.
6678 Ninja's compdb tool added the <option>-x</option> flag in Ninja V1.9.0
6682 <varlistentry id="cv-NINJA_DEPFILE_PARSE_FORMAT">
6684 <envar>NINJA_DEPFILE_PARSE_FORMAT</envar>
6687 Determines the type of format ninja should expect when parsing header
6688 include depfiles. Can be <option>msvc</option>, <option>gcc</option>, or <option>clang</option>.
6689 The <option>msvc</option> option corresponds to <option>/showIncludes</option> format, and
6690 <option>gcc</option> or <option>clang</option> correspond to <option>-MMD -MF</option>.
6694 <varlistentry id="cv-NINJA_DIR">
6696 <envar>NINJA_DIR</envar>
6699 The <parameter>builddir</parameter> value.
6700 Propagates directly into the generated &ninja; build file.
6703 A directory for some Ninja output files. ... (You can also store other build output in this
6706 The default value is <filename>.ninja</filename>.
6710 <varlistentry id="cv-NINJA_DISABLE_AUTO_RUN">
6712 <envar>NINJA_DISABLE_AUTO_RUN</envar>
6715 Boolean. Default: <constant>False</constant>.
6716 If true, &SCons; will not run &ninja; automatically after creating the &ninja; build file.
6720 If not explicitly set, this will be set to <constant>True</constant>
6721 if <option>--disable_execute_ninja</option> or
6722 <code>SetOption('disable_execute_ninja', True)</code> is seen.
6726 <varlistentry id="cv-NINJA_ENV_VAR_CACHE">
6728 <envar>NINJA_ENV_VAR_CACHE</envar>
6731 A string that sets the environment for any environment variables that
6732 differ between the OS environment and the &SCons; execution environment.
6736 It will be compatible with the default shell of the operating system.
6740 If not explicitly set, &SCons; will generate this dynamically from the
6741 execution environment stored in the current &consenv;
6742 (e.g. <literal>env['ENV']</literal>)
6743 where those values differ from the existing shell..
6747 <varlistentry id="cv-NINJA_FILE_NAME">
6749 <envar>NINJA_FILE_NAME</envar>
6752 The filename for the generated Ninja build file.
6753 The default is <filename>ninja.build</filename>.
6757 <varlistentry id="cv-NINJA_FORCE_SCONS_BUILD">
6759 <envar>NINJA_FORCE_SCONS_BUILD</envar>
6762 If true, causes the build nodes to callback to scons instead of using
6763 &ninja; to build them. This is intended to be passed to the environment on the builder invocation.
6764 It is useful if you have a build node which does something which is not easily translated into &ninja;.
6768 <varlistentry id="cv-NINJA_GENERATED_SOURCE_ALIAS_NAME">
6770 <envar>NINJA_GENERATED_SOURCE_ALIAS_NAME</envar>
6773 A string matching the name of a user defined alias which represents a list of all generated sources.
6774 This will prevent the auto-detection of generated sources from &cv-NINJA_GENERATED_SOURCE_SUFFIXES;.
6775 Then all other source files will be made to depend on this in the &ninja; build file, forcing the
6776 generated sources to be built first.
6780 <varlistentry id="cv-NINJA_GENERATED_SOURCE_SUFFIXES">
6782 <envar>NINJA_GENERATED_SOURCE_SUFFIXES</envar>
6785 The list of source file suffixes which are generated by &SCons; build steps.
6786 All source files which match these suffixes will be added to the _generated_sources alias in the output
6788 Then all other source files will be made to depend on this in the &ninja; build file, forcing the
6789 generated sources to be built first.
6793 <varlistentry id="cv-NINJA_MSVC_DEPS_PREFIX">
6795 <envar>NINJA_MSVC_DEPS_PREFIX</envar>
6798 The <parameter>msvc_deps_prefix</parameter> string.
6799 Propagates directly into the generated &ninja; build file.
6801 <quote>defines the string which should be stripped from msvc's <option>/showIncludes</option> output</quote>
6805 <varlistentry id="cv-NINJA_POOL">
6807 <envar>NINJA_POOL</envar>
6810 Set the <parameter>ninja_pool</parameter> for this or all targets in scope for this env var.
6814 <varlistentry id="cv-NINJA_REGENERATE_DEPS">
6816 <envar>NINJA_REGENERATE_DEPS</envar>
6819 A generator function used to create a &ninja; depfile which
6820 includes all the files which would require
6821 &SCons; to be invoked if they change.
6822 Or a list of said files.
6826 <varlistentry id="cv-_NINJA_REGENERATE_DEPS_FUNC">
6828 <envar>_NINJA_REGENERATE_DEPS_FUNC</envar>
6831 Internal value used to specify the function to call with argument env to generate the list of files
6832 which if changed would require the &ninja; build file to be regenerated.
6836 <varlistentry id="cv-NINJA_SCONS_DAEMON_KEEP_ALIVE">
6838 <envar>NINJA_SCONS_DAEMON_KEEP_ALIVE</envar>
6841 The number of seconds for the SCons deamon launched by ninja to stay alive.
6846 <varlistentry id="cv-NINJA_SCONS_DAEMON_PORT">
6848 <envar>NINJA_SCONS_DAEMON_PORT</envar>
6851 The TCP/IP port for the SCons daemon to listen on.
6852 <emphasis>NOTE: You cannot use a port already being listened to on your build machine.</emphasis>
6853 (Default: random number between 10000,60000)
6857 <varlistentry id="cv-NINJA_SYNTAX">
6859 <envar>NINJA_SYNTAX</envar>
6862 The path to a custom <filename>ninja_syntax.py</filename> file which is used in generation.
6863 The tool currently assumes you have &ninja; installed as a &Python; module and grabs the syntax file from that
6864 installation if &cv-NINJA_SYNTAX; is not explicitly set.
6868 <varlistentry id="cv-no_import_lib">
6870 <envar>no_import_lib</envar>
6873 When set to non-zero,
6874 suppresses creation of a corresponding Windows static import lib by the
6875 &b-link-SharedLibrary;
6876 builder when used with
6877 MinGW, Microsoft Visual Studio or Metrowerks.
6878 This also suppresses creation
6879 of an export (<filename>.exp</filename>) file
6880 when using Microsoft Visual Studio.
6884 <varlistentry id="cv-OBJPREFIX">
6886 <envar>OBJPREFIX</envar>
6889 The prefix used for (static) object file names.
6893 <varlistentry id="cv-OBJSUFFIX">
6895 <envar>OBJSUFFIX</envar>
6898 The suffix used for (static) object file names.
6902 <varlistentry id="cv-PACKAGEROOT">
6904 <envar>PACKAGEROOT</envar>
6907 Specifies the directory where all files in resulting archive will be
6908 placed if applicable. The default value is <quote>&cv-NAME;-&cv-VERSION;</quote>.
6910 <para>See the &b-link-Package; builder.</para>
6913 <varlistentry id="cv-PACKAGETYPE">
6915 <envar>PACKAGETYPE</envar>
6918 Selects the package type to build when using the &b-link-Package;
6919 builder. May be a string or list of strings. See the docuentation
6920 for the builder for the currently supported types.
6924 &cv-PACKAGETYPE; may be overridden with the <option>--package-type</option>
6925 command line option.
6927 <para>See the &b-link-Package; builder.</para>
6930 <varlistentry id="cv-PACKAGEVERSION">
6932 <envar>PACKAGEVERSION</envar>
6935 The version of the package (not the underlying project).
6936 This is currently only used by the rpm packager
6937 and should reflect changes in the packaging,
6938 not the underlying project code itself.
6940 <para>See the &b-link-Package; builder.</para>
6943 <varlistentry id="cv-PCH">
6948 A node for the &MSVC; precompiled header that will be
6949 used when compiling object files.
6950 This variable is ignored by tools other than &MSVC;.
6951 When this variable is
6952 defined, &SCons; will add options to the compiler command line to
6953 cause it to use the precompiled header, and will also set up the
6954 dependencies for the PCH file.
6959 env['PCH'] = File('StdAfx.pch')
6960 env['PCH'] = env.PCH('pch.cc')[0]
6964 <varlistentry id="cv-PCHCOM">
6966 <envar>PCHCOM</envar>
6969 The command line used by the
6971 builder to generated a precompiled header.
6975 <varlistentry id="cv-PCHCOMSTR">
6977 <envar>PCHCOMSTR</envar>
6980 The string displayed when generating a precompiled header.
6981 If not set, then &cv-link-PCHCOM; (the command line) is displayed.
6985 <varlistentry id="cv-PCHPDBFLAGS">
6987 <envar>PCHPDBFLAGS</envar>
6990 A &consvar; that, when expanded,
6991 adds the <option>/yD</option> flag to the command line
6992 only if the &cv-link-PDB; &consvar; is set.
6996 <varlistentry id="cv-PCHSTOP">
6998 <envar>PCHSTOP</envar>
7001 This variable specifies how much of a source file is precompiled. This
7002 variable is ignored by tools other than &MSVC;, or when
7003 the PCH variable is not being used. When this variable is define it
7004 must be a string that is the name of the header that
7005 is included at the end of the precompiled portion of the source files, or
7006 the empty string if the "#pragma hrdstop" construct is being used:
7010 env['PCHSTOP'] = 'StdAfx.h'
7014 <varlistentry id="cv-PDB">
7019 The &MSVC; PDB file that will store debugging information for
7020 object files, shared libraries, and programs. This variable is ignored by
7021 tools other than &MSVC;.
7022 When this variable is
7023 defined SCons will add options to the compiler and linker command line to
7024 cause them to generate external debugging information, and will also set up the
7025 dependencies for the PDB file.
7030 env['PDB'] = 'hello.pdb'
7034 The &MSVC; compiler switch that SCons uses by default
7035 to generate PDB information is <option>/Z7</option>.
7036 This works correctly with parallel (<option>-j</option>) builds
7037 because it embeds the debug information in the intermediate object files,
7038 as opposed to sharing a single PDB file between multiple object files.
7039 This is also the only way to get debug information
7040 embedded into a static library.
7041 Using the <option>/Zi</option> instead may yield improved
7042 link-time performance,
7043 although parallel builds will no longer work.
7044 You can generate PDB files with the <option>/Zi</option>
7045 switch by overriding the default &cv-link-CCPDBFLAGS; variable;
7046 see the entry for that variable for specific examples.
7050 <varlistentry id="cv-PDFLATEX">
7052 <envar>PDFLATEX</envar>
7055 The &pdflatex; utility.
7059 <varlistentry id="cv-PDFLATEXCOM">
7061 <envar>PDFLATEXCOM</envar>
7064 The command line used to call the &pdflatex; utility.
7068 <varlistentry id="cv-PDFLATEXCOMSTR">
7070 <envar>PDFLATEXCOMSTR</envar>
7073 The string displayed when calling the &pdflatex; utility.
7074 If this is not set, then &cv-link-PDFLATEXCOM; (the command line) is displayed.
7078 env = Environment(PDFLATEX;COMSTR = "Building $TARGET from LaTeX input $SOURCES")
7082 <varlistentry id="cv-PDFLATEXFLAGS">
7084 <envar>PDFLATEXFLAGS</envar>
7087 General options passed to the &pdflatex; utility.
7091 <varlistentry id="cv-PDFPREFIX">
7093 <envar>PDFPREFIX</envar>
7096 The prefix used for PDF file names.
7100 <varlistentry id="cv-PDFSUFFIX">
7102 <envar>PDFSUFFIX</envar>
7105 The suffix used for PDF file names.
7109 <varlistentry id="cv-PDFTEX">
7111 <envar>PDFTEX</envar>
7114 The &pdftex; utility.
7118 <varlistentry id="cv-PDFTEXCOM">
7120 <envar>PDFTEXCOM</envar>
7123 The command line used to call the &pdftex; utility.
7127 <varlistentry id="cv-PDFTEXCOMSTR">
7129 <envar>PDFTEXCOMSTR</envar>
7132 The string displayed when calling the &pdftex; utility.
7133 If this is not set, then &cv-link-PDFTEXCOM; (the command line) is displayed.
7137 env = Environment(PDFTEXCOMSTR = "Building $TARGET from TeX input $SOURCES")
7141 <varlistentry id="cv-PDFTEXFLAGS">
7143 <envar>PDFTEXFLAGS</envar>
7146 General options passed to the &pdftex; utility.
7150 <varlistentry id="cv-PKGCHK">
7152 <envar>PKGCHK</envar>
7156 the package-checking program that will
7157 be used (along with &cv-PKGINFO;)
7158 to look for installed versions of
7159 the Sun PRO C++ compiler.
7161 <filename>/usr/sbin/pgkchk</filename>.
7165 <varlistentry id="cv-PKGINFO">
7167 <envar>PKGINFO</envar>
7171 the package information program that will
7172 be used (along with &cv-PKGCHK;)
7173 to look for installed versions of
7174 the Sun PRO C++ compiler.
7176 <filename>pkginfo</filename>.
7180 <varlistentry id="cv-PLATFORM">
7182 <envar>PLATFORM</envar>
7185 The name of the platform used to create this &consenv;.
7186 &SCons; sets this when initializing the platform,
7187 which by default is auto-detected
7188 (see the <parameter>platform</parameter>
7189 argument to &f-link-Environment;).
7193 env = Environment(tools=[])
7194 if env['PLATFORM'] == 'cygwin':
7201 <varlistentry id="cv-POAUTOINIT">
7203 <envar>POAUTOINIT</envar>
7206 The &cv-POAUTOINIT; variable, if set to <literal>True</literal> (on non-zero
7207 numeric value), let the &t-link-msginit; tool to automatically initialize
7208 <emphasis>missing</emphasis> <literal>PO</literal> files with
7209 <command>msginit(1)</command>. This applies to both,
7210 &b-link-POInit; and &b-link-POUpdate; builders (and others that use any of
7215 <varlistentry id="cv-POCREATE_ALIAS">
7217 <envar>POCREATE_ALIAS</envar>
7220 Common alias for all <literal>PO</literal> files created with &b-POInit;
7221 builder (default: <literal>'po-create'</literal>).
7222 See &t-link-msginit; tool and &b-link-POInit; builder.
7226 <varlistentry id="cv-POSUFFIX">
7228 <envar>POSUFFIX</envar>
7231 Suffix used for <literal>PO</literal> files (default: <literal>'.po'</literal>)
7232 See &t-link-msginit; tool and &b-link-POInit; builder.
7236 <varlistentry id="cv-POTDOMAIN">
7238 <envar>POTDOMAIN</envar>
7241 The &cv-POTDOMAIN; defines default domain, used to generate
7242 <literal>POT</literal> filename as <filename>&cv-POTDOMAIN;.pot</filename> when
7243 no <literal>POT</literal> file name is provided by the user. This applies to
7244 &b-link-POTUpdate;, &b-link-POInit; and &b-link-POUpdate; builders (and
7245 builders, that use them, e.g. &b-Translate;). Normally (if &cv-POTDOMAIN; is
7246 not defined), the builders use <filename>messages.pot</filename> as default
7247 <literal>POT</literal> file name.
7251 <varlistentry id="cv-POTSUFFIX">
7253 <envar>POTSUFFIX</envar>
7256 Suffix used for PO Template files (default: <literal>'.pot'</literal>).
7257 See &t-link-xgettext; tool and &b-link-POTUpdate; builder.
7261 <varlistentry id="cv-POTUPDATE_ALIAS">
7263 <envar>POTUPDATE_ALIAS</envar>
7266 Name of the common phony target for all PO Templates created with
7267 &b-link-POUpdate; (default: <literal>'pot-update'</literal>).
7268 See &t-link-xgettext; tool and &b-link-POTUpdate; builder.
7272 <varlistentry id="cv-POUPDATE_ALIAS">
7274 <envar>POUPDATE_ALIAS</envar>
7277 Common alias for all <literal>PO</literal> files being defined with
7278 &b-link-POUpdate; builder (default: <literal>'po-update'</literal>).
7279 See &t-link-msgmerge; tool and &b-link-POUpdate; builder.
7283 <varlistentry id="cv-PRINT_CMD_LINE_FUNC">
7285 <envar>PRINT_CMD_LINE_FUNC</envar>
7288 A Python function used to print the command lines as they are executed
7289 (assuming command printing is not disabled by the
7293 options or their equivalents).
7294 The function must accept four arguments:
7295 <varname>s</varname>,
7296 <varname>target</varname>,
7297 <varname>source</varname> and
7298 <varname>env</varname>.
7299 <varname>s</varname>
7300 is a string showing the command being executed,
7301 <varname>target</varname>,
7302 is the target being built (file node, list, or string name(s)),
7303 <varname>source</varname>,
7304 is the source(s) used (file node, list, or string name(s)),
7305 and <varname>env</varname>
7306 is the environment being used.
7310 The function must do the printing itself.
7311 The default implementation,
7312 used if this variable is not set or is <constant>None</constant>,
7313 is to just print the string, as in:
7316 def print_cmd_line(s, target, source, env):
7317 sys.stdout.write(s + "\n")
7321 Here is an example of a more interesting function:
7325 def print_cmd_line(s, target, source, env):
7327 "Building %s -> %s...\n"
7329 ' and '.join([str(x) for x in source]),
7330 ' and '.join([str(x) for x in target]),
7334 env = Environment(PRINT_CMD_LINE_FUNC=print_cmd_line)
7335 env.Program('foo', ['foo.c', 'bar.c'])
7344 scons: Building targets ...
7345 Building bar.c -> bar.o...
7346 Building foo.c -> foo.o...
7347 Building foo.o and bar.o -> foo...
7348 scons: done building targets.
7352 Another example could be a function that logs the actual commands to a file.
7356 <varlistentry id="cv-PROGEMITTER">
7358 <envar>PROGEMITTER</envar>
7361 Contains the emitter specification for the
7362 &b-link-Program; builder.
7363 The manpage section "Builder Objects" contains
7364 general information on specifying emitters.
7368 <varlistentry id="cv-PROGPREFIX">
7370 <envar>PROGPREFIX</envar>
7373 The prefix used for executable file names.
7377 <varlistentry id="cv-PROGSUFFIX">
7379 <envar>PROGSUFFIX</envar>
7382 The suffix used for executable file names.
7386 <varlistentry id="cv-PSCOM">
7388 <envar>PSCOM</envar>
7391 The command line used to convert TeX DVI files into a PostScript file.
7395 <varlistentry id="cv-PSCOMSTR">
7397 <envar>PSCOMSTR</envar>
7400 The string displayed when a TeX DVI file
7401 is converted into a PostScript file.
7402 If this is not set, then &cv-link-PSCOM; (the command line) is displayed.
7406 <varlistentry id="cv-PSPREFIX">
7408 <envar>PSPREFIX</envar>
7411 The prefix used for PostScript file names.
7415 <varlistentry id="cv-PSSUFFIX">
7417 <envar>PSSUFFIX</envar>
7420 The prefix used for PostScript file names.
7424 <varlistentry id="cv-QT3_AUTOSCAN">
7426 <envar>QT3_AUTOSCAN</envar>
7429 Turn off scanning for mocable files. Use the &b-link-Moc; Builder to explicitly
7430 specify files to run <command>moc</command> on.
7433 <emphasis>Changed in 4.5.0</emphasis>: renamed from QT_AUTOSCAN.
7437 <varlistentry id="cv-QT3_BINPATH">
7439 <envar>QT3_BINPATH</envar>
7442 The path where the Qt binaries are installed.
7443 The default value is '&cv-link-QT3DIR;<filename>/bin</filename>'.
7446 <emphasis>Changed in 4.5.0</emphasis>: renamed from QT_BINPATH.
7450 <varlistentry id="cv-QT3_CPPPATH">
7452 <envar>QT3_CPPPATH</envar>
7455 The path where the Qt header files are installed.
7456 The default value is '&cv-link-QT3DIR;/include'.
7457 Note: If you set this variable to <constant>None</constant>,
7458 the tool won't change the &cv-link-CPPPATH;
7459 construction variable.
7462 <emphasis>Changed in 4.5.0</emphasis>: renamed from QT_CPPPATH.
7466 <varlistentry id="cv-QT3_DEBUG">
7468 <envar>QT3_DEBUG</envar>
7471 Prints lots of debugging information while scanning for moc files.
7474 <emphasis>Changed in 4.5.0</emphasis>: renamed from QT_DEBUG.
7478 <varlistentry id="cv-QT3_LIB">
7480 <envar>QT3_LIB</envar>
7483 Default value is <literal>'qt'</literal>.
7484 You may want to set this to <literal>'qt-mt'</literal>.
7485 Note: If you set this variable to <constant>None</constant>,
7486 the tool won't change the &cv-link-LIBS; variable.
7489 <emphasis>Changed in 4.5.0</emphasis>: renamed from QT_LIB.
7493 <varlistentry id="cv-QT3_LIBPATH">
7495 <envar>QT3_LIBPATH</envar>
7498 The path where the Qt libraries are installed.
7499 The default value is '&cv-link-QT3DIR;<filename>/lib</filename>'.
7500 Note: If you set this variable to <constant>None</constant>,
7501 the tool won't change the &cv-link-LIBPATH;
7502 construction variable.
7505 <emphasis>Changed in 4.5.0</emphasis>: renamed from QT_LIBPATH.
7509 <varlistentry id="cv-QT3_MOC">
7511 <envar>QT3_MOC</envar>
7514 Default value is '&cv-link-QT3_BINPATH;<filename>/moc</filename>'.
7518 <varlistentry id="cv-QT3_MOCCXXPREFIX">
7520 <envar>QT3_MOCCXXPREFIX</envar>
7523 Default value is <literal>''</literal>.
7524 Prefix for <command>moc</command> output files when source is a C++ file.
7528 <varlistentry id="cv-QT3_MOCCXXSUFFIX">
7530 <envar>QT3_MOCCXXSUFFIX</envar>
7533 Default value is <literal>'.moc'</literal>.
7534 Suffix for <command>moc</command> output files when source is a C++ file.
7537 <emphasis>Changed in 4.5.0</emphasis>: renamed from QT_MOCCXXSUFFIX.
7541 <varlistentry id="cv-QT3_MOCFROMCXXCOM">
7543 <envar>QT3_MOCFROMCXXCOM</envar>
7546 Command to generate a moc file from a C++ file.
7549 <emphasis>Changed in 4.5.0</emphasis>: renamed from QT_MOCFROMCXXCOM.
7553 <varlistentry id="cv-QT3_MOCFROMCXXCOMSTR">
7555 <envar>QT3_MOCFROMCXXCOMSTR</envar>
7558 The string displayed when generating a moc file from a C++ file.
7559 If this is not set, then &cv-link-QT3_MOCFROMCXXCOM; (the command line) is displayed.
7562 <emphasis>Changed in 4.5.0</emphasis>: renamed from QT_MOCFROMCXXCOMSTR.
7566 <varlistentry id="cv-QT3_MOCFROMCXXFLAGS">
7568 <envar>QT3_MOCFROMCXXFLAGS</envar>
7571 Default value is <literal>'-i'</literal>.
7572 These flags are passed to <command>moc</command> when moccing a C++ file.
7575 <emphasis>Changed in 4.5.0</emphasis>: renamed from QT_MOCFROMCXXFLAGS.
7579 <varlistentry id="cv-QT3_MOCFROMHCOM">
7581 <envar>QT3_MOCFROMHCOM</envar>
7584 Command to generate a moc file from a header.
7587 <emphasis>Changed in 4.5.0</emphasis>: renamed from QT_MOCFROMSHCOM.
7591 <varlistentry id="cv-QT3_MOCFROMHCOMSTR">
7593 <envar>QT3_MOCFROMHCOMSTR</envar>
7596 The string displayed when generating a moc file from a C++ file.
7597 If this is not set, then &cv-link-QT3_MOCFROMHCOM; (the command line) is displayed.
7600 <emphasis>Changed in 4.5.0</emphasis>: renamed from QT_MOCFROMSHCOMSTR.
7604 <varlistentry id="cv-QT3_MOCFROMHFLAGS">
7606 <envar>QT3_MOCFROMHFLAGS</envar>
7609 Default value is <literal>''</literal>. These flags are passed to <command>moc</command>
7610 when moccing a header file.
7613 <emphasis>Changed in 4.5.0</emphasis>: renamed from QT_MOCFROMSHFLAGS.
7617 <varlistentry id="cv-QT3_MOCHPREFIX">
7619 <envar>QT3_MOCHPREFIX</envar>
7622 Default value is <literal>'moc_'</literal>.
7623 Prefix for <command>moc</command> output files when source is a header.
7626 <emphasis>Changed in 4.5.0</emphasis>: renamed from QT_MOCHPREFIX.
7630 <varlistentry id="cv-QT3_MOCHSUFFIX">
7632 <envar>QT3_MOCHSUFFIX</envar>
7635 Default value is '&cv-link-CXXFILESUFFIX;'.
7636 Suffix for moc output files when source is a header.
7639 <emphasis>Changed in 4.5.0</emphasis>: renamed from QT_MOCHSUFFIX.
7643 <varlistentry id="cv-QT3_UIC">
7645 <envar>QT3_UIC</envar>
7648 Default value is '&cv-link-QT3_BINPATH;<filename>/uic</filename>'.
7651 <emphasis>Changed in 4.5.0</emphasis>: renamed from QT_UIC.
7655 <varlistentry id="cv-QT3_UICCOM">
7657 <envar>QT3_UICCOM</envar>
7660 Command to generate header files from <filename>.ui</filename> files.
7663 <emphasis>Changed in 4.5.0</emphasis>: renamed from QT_UICCOM.
7667 <varlistentry id="cv-QT3_UICCOMSTR">
7669 <envar>QT3_UICCOMSTR</envar>
7672 The string displayed when generating header files from <filename>.ui</filename> files.
7673 If this is not set, then &cv-link-QT3_UICCOM; (the command line) is displayed.
7676 <emphasis>Changed in 4.5.0</emphasis>: renamed from QT_UICCOMSTR.
7680 <varlistentry id="cv-QT3_UICDECLFLAGS">
7682 <envar>QT3_UICDECLFLAGS</envar>
7685 Default value is ''. These flags are passed to <command>uic</command>
7686 when creating a header file from a <filename>.ui</filename> file.
7689 <emphasis>Changed in 4.5.0</emphasis>: renamed from QT_UICDECLFLAGS.
7693 <varlistentry id="cv-QT3_UICDECLPREFIX">
7695 <envar>QT3_UICDECLPREFIX</envar>
7698 Default value is <literal>''</literal>.
7699 Prefix for <command>uic</command> generated header files.
7702 <emphasis>Changed in 4.5.0</emphasis>: renamed from QT_UICDECLPREFIX.
7706 <varlistentry id="cv-QT3_UICDECLSUFFIX">
7708 <envar>QT3_UICDECLSUFFIX</envar>
7711 Default value is <literal>'.h'</literal>.
7712 Suffix for <command>uic</command> generated header files.
7715 <emphasis>Changed in 4.5.0</emphasis>: renamed from QT_UICDECLSUFFIX.
7719 <varlistentry id="cv-QT3_UICIMPLFLAGS">
7721 <envar>QT3_UICIMPLFLAGS</envar>
7724 Default value is <literal>''</literal>.
7725 These flags are passed to <command>uic</command> when creating a C++
7726 file from a <filename>.ui</filename> file.
7729 <emphasis>Changed in 4.5.0</emphasis>: renamed from QT_UICIMPFLAGS.
7733 <varlistentry id="cv-QT3_UICIMPLPREFIX">
7735 <envar>QT3_UICIMPLPREFIX</envar>
7738 Default value is <literal>'uic_'</literal>.
7739 Prefix for uic generated implementation files.
7742 <emphasis>Changed in 4.5.0</emphasis>: renamed from QT_UICIMPLPREFIX.
7746 <varlistentry id="cv-QT3_UICIMPLSUFFIX">
7748 <envar>QT3_UICIMPLSUFFIX</envar>
7751 Default value is '&cv-link-CXXFILESUFFIX;'. Suffix for uic generated implementation
7755 <emphasis>Changed in 4.5.0</emphasis>: renamed from QT_UICIMPLSUFFIX.
7759 <varlistentry id="cv-QT3_UISUFFIX">
7761 <envar>QT3_UISUFFIX</envar>
7764 Default value is <literal>'.ui'</literal>.
7765 Suffix of designer input files.
7768 <emphasis>Changed in 4.5.0</emphasis>: renamed from QT_UISUFFIX.
7772 <varlistentry id="cv-QT3DIR">
7774 <envar>QT3DIR</envar>
7777 The path to the Qt installation to build against.
7779 &t-link-qt3; tool tries to obtain this from
7780 <varname>os.environ</varname>;
7781 if not found there, it tries to make a guess.
7784 <emphasis>Changed in 4.5.0</emphasis>: renamed from QTDIR.
7788 <varlistentry id="cv-RANLIB">
7790 <envar>RANLIB</envar>
7793 The archive indexer.
7797 <varlistentry id="cv-RANLIBCOM">
7799 <envar>RANLIBCOM</envar>
7802 The command line used to index a static library archive.
7806 <varlistentry id="cv-RANLIBCOMSTR">
7808 <envar>RANLIBCOMSTR</envar>
7811 The string displayed when a static library archive is indexed.
7812 If this is not set, then &cv-link-RANLIBCOM; (the command line) is displayed.
7816 env = Environment(RANLIBCOMSTR = "Indexing $TARGET")
7820 <varlistentry id="cv-RANLIBFLAGS">
7822 <envar>RANLIBFLAGS</envar>
7825 General options passed to the archive indexer.
7829 <varlistentry id="cv-RC">
7834 The resource compiler used to build
7835 a &MSVC; resource file.
7839 <varlistentry id="cv-RCCOM">
7841 <envar>RCCOM</envar>
7844 The command line used to build
7845 a &MSVC; resource file.
7849 <varlistentry id="cv-RCCOMSTR">
7851 <envar>RCCOMSTR</envar>
7854 The string displayed when invoking the resource compiler
7855 to build a &MSVC; resource file.
7856 If this is not set, then &cv-link-RCCOM; (the command line) is displayed.
7860 <varlistentry id="cv-RCFLAGS">
7862 <envar>RCFLAGS</envar>
7865 The flags passed to the resource compiler by the &b-link-RES; builder.
7869 <varlistentry id="cv-RCINCFLAGS">
7871 <envar>RCINCFLAGS</envar>
7874 An automatically-generated &consvar;
7875 containing the command-line options
7876 for specifying directories to be searched
7877 by the resource compiler.
7878 The value of &cv-RCINCFLAGS; is created
7879 by respectively prepending and appending
7880 &cv-link-RCINCPREFIX; and &cv-link-RCINCSUFFIX;
7881 to the beginning and end
7882 of each directory in &cv-link-CPPPATH;.
7886 <varlistentry id="cv-RCINCPREFIX">
7888 <envar>RCINCPREFIX</envar>
7891 The prefix (flag) used to specify an include directory
7892 on the resource compiler command line.
7893 This will be prepended to the beginning of each directory
7894 in the &cv-link-CPPPATH; &consvar;
7895 when the &cv-link-RCINCFLAGS; variable is expanded.
7899 <varlistentry id="cv-RCINCSUFFIX">
7901 <envar>RCINCSUFFIX</envar>
7904 The suffix used to specify an include directory
7905 on the resource compiler command line.
7906 This will be appended to the end of each directory
7907 in the &cv-link-CPPPATH; &consvar;
7908 when the &cv-link-RCINCFLAGS; variable is expanded.
7912 <varlistentry id="cv-RDirs">
7914 <envar>RDirs</envar>
7917 A function that converts a string into a list of Dir instances by
7918 searching the repositories.
7922 <varlistentry id="cv-REGSVR">
7924 <envar>REGSVR</envar>
7927 The program used on Windows systems
7928 to register a newly-built DLL library
7929 whenever the &b-link-SharedLibrary; builder
7930 is passed a keyword argument of <literal>register=True</literal>.
7934 <varlistentry id="cv-REGSVRCOM">
7936 <envar>REGSVRCOM</envar>
7939 The command line used on Windows systems
7940 to register a newly-built DLL library
7941 whenever the &b-link-SharedLibrary; builder
7942 is passed a keyword argument of <literal>register=True</literal>.
7946 <varlistentry id="cv-REGSVRCOMSTR">
7948 <envar>REGSVRCOMSTR</envar>
7951 The string displayed when registering a newly-built DLL file.
7952 If this is not set, then &cv-link-REGSVRCOM; (the command line) is displayed.
7956 <varlistentry id="cv-REGSVRFLAGS">
7958 <envar>REGSVRFLAGS</envar>
7961 Flags passed to the DLL registration program
7962 on Windows systems when a newly-built DLL library is registered.
7964 this includes the <option>/s</option>
7965 that prevents dialog boxes from popping up
7966 and requiring user attention.
7970 <varlistentry id="cv-RMIC">
7975 The Java RMI stub compiler.
7979 <varlistentry id="cv-RMICCOM">
7981 <envar>RMICCOM</envar>
7984 The command line used to compile stub
7985 and skeleton class files
7986 from Java classes that contain RMI implementations.
7987 Any options specified in the &cv-link-RMICFLAGS; construction variable
7988 are included on this command line.
7992 <varlistentry id="cv-RMICCOMSTR">
7994 <envar>RMICCOMSTR</envar>
7997 The string displayed when compiling
7998 stub and skeleton class files
7999 from Java classes that contain RMI implementations.
8000 If this is not set, then &cv-link-RMICCOM; (the command line) is displayed.
8005 RMICCOMSTR="Generating stub/skeleton class files $TARGETS from $SOURCES"
8010 <varlistentry id="cv-RMICFLAGS">
8012 <envar>RMICFLAGS</envar>
8015 General options passed to the Java RMI stub compiler.
8019 <varlistentry id="cv-RPATH">
8021 <envar>RPATH</envar>
8024 A list of paths to search for shared libraries when running programs.
8025 Currently only used in the GNU (gnulink),
8026 IRIX (sgilink) and Sun (sunlink) linkers.
8027 Ignored on platforms and toolchains that don't support it.
8028 Note that the paths added to RPATH
8029 are not transformed by
8031 in any way: if you want an absolute
8032 path, you must make it absolute yourself.
8036 <varlistentry id="cv-_RPATH">
8038 <envar>_RPATH</envar>
8041 An automatically-generated construction variable
8042 containing the rpath flags to be used when linking
8043 a program with shared libraries.
8044 The value of &cv-_RPATH; is created
8045 by respectively prepending &cv-RPATHPREFIX; and appending &cv-RPATHSUFFIX;
8046 to the beginning and end
8047 of each directory in &cv-RPATH;.
8051 <varlistentry id="cv-RPATHPREFIX">
8053 <envar>RPATHPREFIX</envar>
8056 The prefix used to specify a directory to be searched for
8057 shared libraries when running programs.
8058 This will be prepended to the beginning of each directory
8059 in the &cv-RPATH; construction variable
8060 when the &cv-_RPATH; variable is automatically generated.
8064 <varlistentry id="cv-RPATHSUFFIX">
8066 <envar>RPATHSUFFIX</envar>
8069 The suffix used to specify a directory to be searched for
8070 shared libraries when running programs.
8071 This will be appended to the end of each directory
8072 in the &cv-RPATH; construction variable
8073 when the &cv-_RPATH; variable is automatically generated.
8077 <varlistentry id="cv-RPCGEN">
8079 <envar>RPCGEN</envar>
8082 The RPC protocol compiler.
8086 <varlistentry id="cv-RPCGENCLIENTFLAGS">
8088 <envar>RPCGENCLIENTFLAGS</envar>
8091 Options passed to the RPC protocol compiler
8092 when generating client side stubs.
8093 These are in addition to any flags specified in the
8094 &cv-link-RPCGENFLAGS;
8095 construction variable.
8099 <varlistentry id="cv-RPCGENFLAGS">
8101 <envar>RPCGENFLAGS</envar>
8104 General options passed to the RPC protocol compiler.
8108 <varlistentry id="cv-RPCGENHEADERFLAGS">
8110 <envar>RPCGENHEADERFLAGS</envar>
8113 Options passed to the RPC protocol compiler
8114 when generating a header file.
8115 These are in addition to any flags specified in the
8116 &cv-link-RPCGENFLAGS;
8117 construction variable.
8121 <varlistentry id="cv-RPCGENSERVICEFLAGS">
8123 <envar>RPCGENSERVICEFLAGS</envar>
8126 Options passed to the RPC protocol compiler
8127 when generating server side stubs.
8128 These are in addition to any flags specified in the
8129 &cv-link-RPCGENFLAGS;
8130 construction variable.
8134 <varlistentry id="cv-RPCGENXDRFLAGS">
8136 <envar>RPCGENXDRFLAGS</envar>
8139 Options passed to the RPC protocol compiler
8140 when generating XDR routines.
8141 These are in addition to any flags specified in the
8142 &cv-link-RPCGENFLAGS;
8143 construction variable.
8147 <varlistentry id="cv-SCANNERS">
8149 <envar>SCANNERS</envar>
8152 A list of the available implicit dependency scanners.
8153 New file scanners may be added by
8154 appending to this list,
8155 although the more flexible approach
8156 is to associate scanners
8157 with a specific Builder.
8158 See the manpage sections "Builder Objects"
8159 and "Scanner Objects"
8160 for more information.
8164 <varlistentry id="cv-SCONS_HOME">
8166 <envar>SCONS_HOME</envar>
8169 The (optional) path to the &SCons; library directory,
8170 initialized from the external environment. If set, this is
8171 used to construct a shorter and more efficient search path in
8172 the &cv-link-MSVSSCONS; command line executed from C++
8177 <varlistentry id="cv-SHCC">
8182 The C compiler used for generating shared-library objects.
8183 See also &cv-link-CC; for compiling to static objects.
8187 <varlistentry id="cv-SHCCCOM">
8189 <envar>SHCCCOM</envar>
8192 The command line used to compile a C source file
8193 to a shared-library object file.
8194 Any options specified in the &cv-link-SHCFLAGS;,
8195 &cv-link-SHCCFLAGS; and
8196 &cv-link-CPPFLAGS; construction variables
8197 are included on this command line.
8198 See also &cv-link-CCCOM; for compiling to static objects.
8202 <varlistentry id="cv-SHCCCOMSTR">
8204 <envar>SHCCCOMSTR</envar>
8207 If set, the string displayed when a C source file
8208 is compiled to a shared object file.
8209 If not set, then &cv-link-SHCCCOM; (the command line) is displayed.
8210 See also &cv-link-CCCOMSTR; for compiling to static objects.
8214 env = Environment(SHCCCOMSTR = "Compiling shared object $TARGET")
8218 <varlistentry id="cv-SHCCFLAGS">
8220 <envar>SHCCFLAGS</envar>
8223 Options that are passed to the C and C++ compilers
8224 to generate shared-library objects.
8225 See also &cv-link-CCFLAGS; for compiling to static objects.
8229 <varlistentry id="cv-SHCFLAGS">
8231 <envar>SHCFLAGS</envar>
8234 Options that are passed to the C compiler (only; not C++)
8235 to generate shared-library objects.
8236 See also &cv-link-CFLAGS; for compiling to static objects.
8240 <varlistentry id="cv-SHCXX">
8242 <envar>SHCXX</envar>
8245 The C++ compiler used for generating shared-library objects.
8246 See also &cv-link-CXX; for compiling to static objects.
8250 <varlistentry id="cv-SHCXXCOM">
8252 <envar>SHCXXCOM</envar>
8255 The command line used to compile a C++ source file
8256 to a shared-library object file.
8257 Any options specified in the &cv-link-SHCXXFLAGS; and
8258 &cv-link-CPPFLAGS; construction variables
8259 are included on this command line.
8260 See also &cv-link-CXXCOM; for compiling to static objects.
8264 <varlistentry id="cv-SHCXXCOMSTR">
8266 <envar>SHCXXCOMSTR</envar>
8269 If set, the string displayed when a C++ source file
8270 is compiled to a shared object file.
8271 If not set, then &cv-link-SHCXXCOM; (the command line) is displayed.
8272 See also &cv-link-CXXCOMSTR; for compiling to static objects.
8276 env = Environment(SHCXXCOMSTR = "Compiling shared object $TARGET")
8280 <varlistentry id="cv-SHCXXFLAGS">
8282 <envar>SHCXXFLAGS</envar>
8285 Options that are passed to the C++ compiler
8286 to generate shared-library objects.
8287 See also &cv-link-CXXFLAGS; for compiling to static objects.
8291 <varlistentry id="cv-SHDC">
8296 The name of the compiler to use when compiling D source
8297 destined to be in a shared objects.
8298 See also &cv-link-DC; for compiling to static objects.
8302 <varlistentry id="cv-SHDCOM">
8304 <envar>SHDCOM</envar>
8307 The command line to use when compiling code to be part of shared objects.
8308 See also &cv-link-DCOM; for compiling to static objects.
8312 <varlistentry id="cv-SHDCOMSTR">
8314 <envar>SHDCOMSTR</envar>
8317 If set, the string displayed when a D source file
8318 is compiled to a (shared) object file.
8319 If not set, then &cv-link-SHDCOM; (the command line) is displayed.
8320 See also &cv-link-DCOMSTR; for compiling to static objects.
8324 <varlistentry id="cv-SHDLIBVERSIONFLAGS">
8326 <envar>SHDLIBVERSIONFLAGS</envar>
8329 Extra flags added to &cv-link-SHDLINKCOM; when building versioned
8330 &b-link-SharedLibrary;. These flags are only used when &cv-link-SHLIBVERSION; is
8335 <varlistentry id="cv-SHDLINK">
8337 <envar>SHDLINK</envar>
8340 The linker to use when creating shared objects for code bases
8342 See also &cv-link-DLINK; for linking static objects.
8346 <varlistentry id="cv-SHDLINKCOM">
8348 <envar>SHDLINKCOM</envar>
8351 The command line to use when generating shared objects.
8352 See also &cv-link-DLINKCOM; for linking static objects.
8356 <varlistentry id="cv-SHDLINKFLAGS">
8358 <envar>SHDLINKFLAGS</envar>
8361 The list of flags to use when generating a shared object.
8362 See also &cv-link-DLINKFLAGS; for linking static objects.
8366 <varlistentry id="cv-SHELL">
8368 <envar>SHELL</envar>
8371 A string naming the shell program that will be passed to the
8376 construction variable for more information.
8380 <varlistentry id="cv-SHELL_ENV_GENERATORS">
8382 <envar>SHELL_ENV_GENERATORS</envar>
8385 A hook allowing the execution environment to be modified prior
8386 to the actual execution of a command line from an action
8387 via the spawner function defined by &cv-link-SPAWN;.
8388 Allows substitution based on targets and sources,
8389 as well as values from the &consenv;,
8390 adding extra environment variables, etc.
8394 The value must be a list (or other iterable)
8395 of functions which each generate or
8396 alter the execution environment dictionary.
8397 The first function will be passed a copy of the initial execution environment
8398 (&cv-link-ENV; in the current &consenv;);
8399 the dictionary returned by that function is passed to the next,
8400 until the iterable is exhausted and the result returned
8401 for use by the command spawner.
8402 The original execution environment is not modified.
8406 Each function provided in &cv-SHELL_ENV_GENERATORS; must accept four
8407 arguments and return a dictionary:
8408 <varname>env</varname> is the &consenv; for this action;
8409 <varname>target</varname> is the list of targets associated with this action;
8410 <varname>source</varname> is the list of sources associated with this action;
8411 and <varname>shell_env</varname> is the current dictionary after iterating
8412 any previous &cv-SHELL_ENV_GENERATORS; functions
8413 (this can be compared to the original execution environment,
8414 which is available as <literal>env['ENV']</literal>, to detect any changes).
8417 <para>Example:</para>
8419 def custom_shell_env(env, target, source, shell_env):
8420 """customize shell_env if desired"""
8421 if str(target[0]) == 'special_target':
8422 shell_env['SPECIAL_VAR'] = env.subst('SOME_VAR', target=target, source=source)
8425 env["SHELL_ENV_GENERATORS"] = [custom_shell_env]
8428 <para><emphasis>Available since 4.4</emphasis></para>
8431 <varlistentry id="cv-SHF03">
8433 <envar>SHF03</envar>
8436 The Fortran 03 compiler used for generating shared-library objects.
8437 You should normally set the &cv-link-SHFORTRAN; variable,
8438 which specifies the default Fortran compiler
8439 for all Fortran versions.
8440 You only need to set &cv-link-SHF03; if you need to use a specific compiler
8441 or compiler version for Fortran 03 files.
8445 <varlistentry id="cv-SHF03COM">
8447 <envar>SHF03COM</envar>
8450 The command line used to compile a Fortran 03 source file
8451 to a shared-library object file.
8452 You only need to set &cv-link-SHF03COM; if you need to use a specific
8453 command line for Fortran 03 files.
8454 You should normally set the &cv-link-SHFORTRANCOM; variable,
8455 which specifies the default command line
8456 for all Fortran versions.
8460 <varlistentry id="cv-SHF03COMSTR">
8462 <envar>SHF03COMSTR</envar>
8465 If set, the string displayed when a Fortran 03 source file
8466 is compiled to a shared-library object file.
8467 If not set, then &cv-link-SHF03COM; or &cv-link-SHFORTRANCOM;
8468 (the command line) is displayed.
8472 <varlistentry id="cv-SHF03FLAGS">
8474 <envar>SHF03FLAGS</envar>
8477 Options that are passed to the Fortran 03 compiler
8478 to generated shared-library objects.
8479 You only need to set &cv-link-SHF03FLAGS; if you need to define specific
8480 user options for Fortran 03 files.
8481 You should normally set the &cv-link-FORTRANCOMMONFLAGS; variable,
8482 which specifies the user-specified options
8483 passed to the default Fortran compiler
8484 for all Fortran versions.
8488 <varlistentry id="cv-SHF03PPCOM">
8490 <envar>SHF03PPCOM</envar>
8493 The command line used to compile a Fortran 03 source file to a
8494 shared-library object file
8495 after first running the file through the C preprocessor.
8496 Any options specified in the &cv-link-SHF03FLAGS; and &cv-link-CPPFLAGS; construction variables
8497 are included on this command line.
8498 You only need to set &cv-link-SHF03PPCOM; if you need to use a specific
8499 C-preprocessor command line for Fortran 03 files.
8500 You should normally set the &cv-link-SHFORTRANPPCOM; variable,
8501 which specifies the default C-preprocessor command line
8502 for all Fortran versions.
8506 <varlistentry id="cv-SHF03PPCOMSTR">
8508 <envar>SHF03PPCOMSTR</envar>
8511 If set, the string displayed when a Fortran 03 source file
8512 is compiled to a shared-library object file
8513 after first running the file through the C preprocessor.
8514 If not set, then &cv-link-SHF03PPCOM; or &cv-link-SHFORTRANPPCOM;
8515 (the command line) is displayed.
8519 <varlistentry id="cv-SHF08">
8521 <envar>SHF08</envar>
8524 The Fortran 08 compiler used for generating shared-library objects.
8525 You should normally set the &cv-link-SHFORTRAN; variable,
8526 which specifies the default Fortran compiler
8527 for all Fortran versions.
8528 You only need to set &cv-link-SHF08; if you need to use a specific compiler
8529 or compiler version for Fortran 08 files.
8533 <varlistentry id="cv-SHF08COM">
8535 <envar>SHF08COM</envar>
8538 The command line used to compile a Fortran 08 source file
8539 to a shared-library object file.
8540 You only need to set &cv-link-SHF08COM; if you need to use a specific
8541 command line for Fortran 08 files.
8542 You should normally set the &cv-link-SHFORTRANCOM; variable,
8543 which specifies the default command line
8544 for all Fortran versions.
8548 <varlistentry id="cv-SHF08COMSTR">
8550 <envar>SHF08COMSTR</envar>
8553 If set, the string displayed when a Fortran 08 source file
8554 is compiled to a shared-library object file.
8555 If not set, then &cv-link-SHF08COM; or &cv-link-SHFORTRANCOM;
8556 (the command line) is displayed.
8560 <varlistentry id="cv-SHF08FLAGS">
8562 <envar>SHF08FLAGS</envar>
8565 Options that are passed to the Fortran 08 compiler
8566 to generated shared-library objects.
8567 You only need to set &cv-link-SHF08FLAGS; if you need to define specific
8568 user options for Fortran 08 files.
8569 You should normally set the &cv-link-FORTRANCOMMONFLAGS; variable,
8570 which specifies the user-specified options
8571 passed to the default Fortran compiler
8572 for all Fortran versions.
8576 <varlistentry id="cv-SHF08PPCOM">
8578 <envar>SHF08PPCOM</envar>
8581 The command line used to compile a Fortran 08 source file to a
8582 shared-library object file
8583 after first running the file through the C preprocessor.
8584 Any options specified in the &cv-link-SHF08FLAGS; and &cv-link-CPPFLAGS; construction variables
8585 are included on this command line.
8586 You only need to set &cv-link-SHF08PPCOM; if you need to use a specific
8587 C-preprocessor command line for Fortran 08 files.
8588 You should normally set the &cv-link-SHFORTRANPPCOM; variable,
8589 which specifies the default C-preprocessor command line
8590 for all Fortran versions.
8594 <varlistentry id="cv-SHF08PPCOMSTR">
8596 <envar>SHF08PPCOMSTR</envar>
8599 If set, the string displayed when a Fortran 08 source file
8600 is compiled to a shared-library object file
8601 after first running the file through the C preprocessor.
8602 If not set, then &cv-link-SHF08PPCOM; or &cv-link-SHFORTRANPPCOM;
8603 (the command line) is displayed.
8607 <varlistentry id="cv-SHF77">
8609 <envar>SHF77</envar>
8612 The Fortran 77 compiler used for generating shared-library objects.
8613 You should normally set the &cv-link-SHFORTRAN; variable,
8614 which specifies the default Fortran compiler
8615 for all Fortran versions.
8616 You only need to set &cv-link-SHF77; if you need to use a specific compiler
8617 or compiler version for Fortran 77 files.
8621 <varlistentry id="cv-SHF77COM">
8623 <envar>SHF77COM</envar>
8626 The command line used to compile a Fortran 77 source file
8627 to a shared-library object file.
8628 You only need to set &cv-link-SHF77COM; if you need to use a specific
8629 command line for Fortran 77 files.
8630 You should normally set the &cv-link-SHFORTRANCOM; variable,
8631 which specifies the default command line
8632 for all Fortran versions.
8636 <varlistentry id="cv-SHF77COMSTR">
8638 <envar>SHF77COMSTR</envar>
8641 If set, the string displayed when a Fortran 77 source file
8642 is compiled to a shared-library object file.
8643 If not set, then &cv-link-SHF77COM; or &cv-link-SHFORTRANCOM;
8644 (the command line) is displayed.
8648 <varlistentry id="cv-SHF77FLAGS">
8650 <envar>SHF77FLAGS</envar>
8653 Options that are passed to the Fortran 77 compiler
8654 to generated shared-library objects.
8655 You only need to set &cv-link-SHF77FLAGS; if you need to define specific
8656 user options for Fortran 77 files.
8657 You should normally set the &cv-link-FORTRANCOMMONFLAGS; variable,
8658 which specifies the user-specified options
8659 passed to the default Fortran compiler
8660 for all Fortran versions.
8664 <varlistentry id="cv-SHF77PPCOM">
8666 <envar>SHF77PPCOM</envar>
8669 The command line used to compile a Fortran 77 source file to a
8670 shared-library object file
8671 after first running the file through the C preprocessor.
8672 Any options specified in the &cv-link-SHF77FLAGS; and &cv-link-CPPFLAGS; construction variables
8673 are included on this command line.
8674 You only need to set &cv-link-SHF77PPCOM; if you need to use a specific
8675 C-preprocessor command line for Fortran 77 files.
8676 You should normally set the &cv-link-SHFORTRANPPCOM; variable,
8677 which specifies the default C-preprocessor command line
8678 for all Fortran versions.
8682 <varlistentry id="cv-SHF77PPCOMSTR">
8684 <envar>SHF77PPCOMSTR</envar>
8687 If set, the string displayed when a Fortran 77 source file
8688 is compiled to a shared-library object file
8689 after first running the file through the C preprocessor.
8690 If not set, then &cv-link-SHF77PPCOM; or &cv-link-SHFORTRANPPCOM;
8691 (the command line) is displayed.
8695 <varlistentry id="cv-SHF90">
8697 <envar>SHF90</envar>
8700 The Fortran 90 compiler used for generating shared-library objects.
8701 You should normally set the &cv-link-SHFORTRAN; variable,
8702 which specifies the default Fortran compiler
8703 for all Fortran versions.
8704 You only need to set &cv-link-SHF90; if you need to use a specific compiler
8705 or compiler version for Fortran 90 files.
8709 <varlistentry id="cv-SHF90COM">
8711 <envar>SHF90COM</envar>
8714 The command line used to compile a Fortran 90 source file
8715 to a shared-library object file.
8716 You only need to set &cv-link-SHF90COM; if you need to use a specific
8717 command line for Fortran 90 files.
8718 You should normally set the &cv-link-SHFORTRANCOM; variable,
8719 which specifies the default command line
8720 for all Fortran versions.
8724 <varlistentry id="cv-SHF90COMSTR">
8726 <envar>SHF90COMSTR</envar>
8729 If set, the string displayed when a Fortran 90 source file
8730 is compiled to a shared-library object file.
8731 If not set, then &cv-link-SHF90COM; or &cv-link-SHFORTRANCOM;
8732 (the command line) is displayed.
8736 <varlistentry id="cv-SHF90FLAGS">
8738 <envar>SHF90FLAGS</envar>
8741 Options that are passed to the Fortran 90 compiler
8742 to generated shared-library objects.
8743 You only need to set &cv-link-SHF90FLAGS; if you need to define specific
8744 user options for Fortran 90 files.
8745 You should normally set the &cv-link-FORTRANCOMMONFLAGS; variable,
8746 which specifies the user-specified options
8747 passed to the default Fortran compiler
8748 for all Fortran versions.
8752 <varlistentry id="cv-SHF90PPCOM">
8754 <envar>SHF90PPCOM</envar>
8757 The command line used to compile a Fortran 90 source file to a
8758 shared-library object file
8759 after first running the file through the C preprocessor.
8760 Any options specified in the &cv-link-SHF90FLAGS; and &cv-link-CPPFLAGS; construction variables
8761 are included on this command line.
8762 You only need to set &cv-link-SHF90PPCOM; if you need to use a specific
8763 C-preprocessor command line for Fortran 90 files.
8764 You should normally set the &cv-link-SHFORTRANPPCOM; variable,
8765 which specifies the default C-preprocessor command line
8766 for all Fortran versions.
8770 <varlistentry id="cv-SHF90PPCOMSTR">
8772 <envar>SHF90PPCOMSTR</envar>
8775 If set, the string displayed when a Fortran 90 source file
8776 is compiled to a shared-library object file
8777 after first running the file through the C preprocessor.
8778 If not set, then &cv-link-SHF90PPCOM; or &cv-link-SHFORTRANPPCOM;
8779 (the command line) is displayed.
8783 <varlistentry id="cv-SHF95">
8785 <envar>SHF95</envar>
8788 The Fortran 95 compiler used for generating shared-library objects.
8789 You should normally set the &cv-link-SHFORTRAN; variable,
8790 which specifies the default Fortran compiler
8791 for all Fortran versions.
8792 You only need to set &cv-link-SHF95; if you need to use a specific compiler
8793 or compiler version for Fortran 95 files.
8797 <varlistentry id="cv-SHF95COM">
8799 <envar>SHF95COM</envar>
8802 The command line used to compile a Fortran 95 source file
8803 to a shared-library object file.
8804 You only need to set &cv-link-SHF95COM; if you need to use a specific
8805 command line for Fortran 95 files.
8806 You should normally set the &cv-link-SHFORTRANCOM; variable,
8807 which specifies the default command line
8808 for all Fortran versions.
8812 <varlistentry id="cv-SHF95COMSTR">
8814 <envar>SHF95COMSTR</envar>
8817 If set, the string displayed when a Fortran 95 source file
8818 is compiled to a shared-library object file.
8819 If not set, then &cv-link-SHF95COM; or &cv-link-SHFORTRANCOM;
8820 (the command line) is displayed.
8824 <varlistentry id="cv-SHF95FLAGS">
8826 <envar>SHF95FLAGS</envar>
8829 Options that are passed to the Fortran 95 compiler
8830 to generated shared-library objects.
8831 You only need to set &cv-link-SHF95FLAGS; if you need to define specific
8832 user options for Fortran 95 files.
8833 You should normally set the &cv-link-FORTRANCOMMONFLAGS; variable,
8834 which specifies the user-specified options
8835 passed to the default Fortran compiler
8836 for all Fortran versions.
8840 <varlistentry id="cv-SHF95PPCOM">
8842 <envar>SHF95PPCOM</envar>
8845 The command line used to compile a Fortran 95 source file to a
8846 shared-library object file
8847 after first running the file through the C preprocessor.
8848 Any options specified in the &cv-link-SHF95FLAGS; and &cv-link-CPPFLAGS; construction variables
8849 are included on this command line.
8850 You only need to set &cv-link-SHF95PPCOM; if you need to use a specific
8851 C-preprocessor command line for Fortran 95 files.
8852 You should normally set the &cv-link-SHFORTRANPPCOM; variable,
8853 which specifies the default C-preprocessor command line
8854 for all Fortran versions.
8858 <varlistentry id="cv-SHF95PPCOMSTR">
8860 <envar>SHF95PPCOMSTR</envar>
8863 If set, the string displayed when a Fortran 95 source file
8864 is compiled to a shared-library object file
8865 after first running the file through the C preprocessor.
8866 If not set, then &cv-link-SHF95PPCOM; or &cv-link-SHFORTRANPPCOM;
8867 (the command line) is displayed.
8871 <varlistentry id="cv-SHFORTRAN">
8873 <envar>SHFORTRAN</envar>
8876 The default Fortran compiler used for generating shared-library objects.
8880 <varlistentry id="cv-SHFORTRANCOM">
8882 <envar>SHFORTRANCOM</envar>
8885 The command line used to compile a Fortran source file
8886 to a shared-library object file.
8887 By default, any options specified
8888 in the &cv-link-SHFORTRANFLAGS;,
8889 &cv-link-_FORTRANMODFLAG;, and
8890 &cv-link-_FORTRANINCFLAGS;
8891 &consvars; are included on this command line.
8892 See also &cv-link-FORTRANCOM;.
8896 <varlistentry id="cv-SHFORTRANCOMSTR">
8898 <envar>SHFORTRANCOMSTR</envar>
8901 If set, the string displayed when a Fortran source file
8902 is compiled to a shared-library object file.
8903 If not set, then &cv-link-SHFORTRANCOM;
8904 (the command line) is displayed.
8908 <varlistentry id="cv-SHFORTRANFLAGS">
8910 <envar>SHFORTRANFLAGS</envar>
8913 Options that are passed to the Fortran compiler
8914 to generate shared-library objects.
8918 <varlistentry id="cv-SHFORTRANPPCOM">
8920 <envar>SHFORTRANPPCOM</envar>
8923 The command line used to compile a Fortran source file to a
8924 shared-library object file
8925 after first running the file through the C preprocessor.
8926 By default, any options specified in the &cv-link-SHFORTRANFLAGS;,
8928 &cv-link-_CPPDEFFLAGS;,
8929 &cv-link-_FORTRANMODFLAG;, and
8930 &cv-link-_FORTRANINCFLAGS;
8931 &consvars; are included on this command line.
8932 See also &cv-link-SHFORTRANCOM;.
8936 <varlistentry id="cv-SHFORTRANPPCOMSTR">
8938 <envar>SHFORTRANPPCOMSTR</envar>
8941 If set, the string displayed when a Fortran source file
8942 is compiled to a shared-library object file
8943 after first running the file through the C preprocessor.
8944 If not set, then &cv-link-SHFORTRANPPCOM;
8945 (the command line) is displayed.
8949 <varlistentry id="cv-SHLIBEMITTER">
8951 <envar>SHLIBEMITTER</envar>
8954 Contains the emitter specification for the
8955 &b-link-SharedLibrary; builder.
8956 The manpage section "Builder Objects" contains
8957 general information on specifying emitters.
8961 <varlistentry id="cv-SHLIBNOVERSIONSYMLINKS">
8963 <envar>SHLIBNOVERSIONSYMLINKS</envar>
8966 Instructs the &b-link-SharedLibrary; builder to not create symlinks for versioned
8971 <varlistentry id="cv-SHLIBPREFIX">
8973 <envar>SHLIBPREFIX</envar>
8976 The prefix used for shared library file names.
8980 <varlistentry id="cv-_SHLIBSONAME">
8982 <envar>_SHLIBSONAME</envar>
8985 A macro that automatically generates shared library's SONAME based on $TARGET,
8986 $SHLIBVERSION and $SHLIBSUFFIX. Used by &b-link-SharedLibrary; builder when
8987 the linker tool supports SONAME (e.g. &t-link-gnulink;).
8991 <varlistentry id="cv-SHLIBSUFFIX">
8993 <envar>SHLIBSUFFIX</envar>
8996 The suffix used for shared library file names.
9000 <varlistentry id="cv-SHLIBVERSION">
9002 <envar>SHLIBVERSION</envar>
9005 When this &consvar; is defined, a versioned shared library
9006 is created by the &b-link-SharedLibrary; builder. This activates the
9007 &cv-link-_SHLIBVERSIONFLAGS; and thus modifies the &cv-link-SHLINKCOM; as
9008 required, adds the version number to the library name, and creates the symlinks
9009 that are needed. &cv-link-SHLIBVERSION; versions should exist as alpha-numeric,
9010 decimal-delimited values as defined by the regular expression "\w+[\.\w+]*".
9011 Example &cv-link-SHLIBVERSION; values include '1', '1.2.3', and '1.2.gitaa412c8b'.
9015 <varlistentry id="cv-_SHLIBVERSIONFLAGS">
9017 <envar>_SHLIBVERSIONFLAGS</envar>
9020 This macro automatically introduces extra flags to &cv-link-SHLINKCOM; when
9021 building versioned &b-link-SharedLibrary; (that is when &cv-link-SHLIBVERSION;
9022 is set). <literal>_SHLIBVERSIONFLAGS</literal> usually adds &cv-link-SHLIBVERSIONFLAGS;
9023 and some extra dynamically generated options (such as
9024 <literal>-Wl,-soname=$_SHLIBSONAME</literal>. It is unused by "plain"
9025 (unversioned) shared libraries.
9029 <varlistentry id="cv-SHLIBVERSIONFLAGS">
9031 <envar>SHLIBVERSIONFLAGS</envar>
9034 Extra flags added to &cv-link-SHLINKCOM; when building versioned
9035 &b-link-SharedLibrary;. These flags are only used when &cv-link-SHLIBVERSION; is
9040 <varlistentry id="cv-SHLINK">
9042 <envar>SHLINK</envar>
9045 The linker for programs that use shared libraries.
9046 See also &cv-link-LINK; for linking static objects.
9049 On POSIX systems (those using the &t-link-link; tool),
9050 you should normally not change this value as it defaults
9051 to a "smart" linker tool which selects a compiler
9052 driver matching the type of source files in use.
9053 So for example, if you set &cv-link-SHCXX; to a specific
9054 compiler name, and are compiling C++ sources,
9055 the smartlink function will automatically select the same compiler
9060 <varlistentry id="cv-SHLINKCOM">
9062 <envar>SHLINKCOM</envar>
9065 The command line used to link programs using shared libraries.
9066 See also &cv-link-LINKCOM; for linking static objects.
9070 <varlistentry id="cv-SHLINKCOMSTR">
9072 <envar>SHLINKCOMSTR</envar>
9075 The string displayed when programs using shared libraries are linked.
9076 If this is not set, then &cv-link-SHLINKCOM; (the command line) is displayed.
9077 See also &cv-link-LINKCOMSTR; for linking static objects.
9081 env = Environment(SHLINKCOMSTR = "Linking shared $TARGET")
9085 <varlistentry id="cv-SHLINKFLAGS">
9087 <envar>SHLINKFLAGS</envar>
9090 General user options passed to the linker for programs using shared libraries.
9091 Note that this variable should
9092 <emphasis>not</emphasis>
9095 (or similar) options for linking with the libraries listed in &cv-link-LIBS;,
9098 (or similar) include search path options
9099 that scons generates automatically from &cv-link-LIBPATH;.
9103 for the variable that expands to library-link options,
9105 &cv-link-_LIBDIRFLAGS;
9107 for the variable that expands to library search path options.
9108 See also &cv-link-LINKFLAGS; for linking static objects.
9112 <varlistentry id="cv-SHOBJPREFIX">
9114 <envar>SHOBJPREFIX</envar>
9117 The prefix used for shared object file names.
9121 <varlistentry id="cv-SHOBJSUFFIX">
9123 <envar>SHOBJSUFFIX</envar>
9126 The suffix used for shared object file names.
9130 <varlistentry id="cv-SONAME">
9132 <envar>SONAME</envar>
9135 Variable used to hard-code SONAME for versioned shared library/loadable module.
9137 env.SharedLibrary('test', 'test.c', SHLIBVERSION='0.1.2', SONAME='libtest.so.2')
9139 The variable is used, for example, by &t-link-gnulink; linker tool.
9143 <varlistentry id="cv-SOURCE">
9145 <envar>SOURCE</envar>
9148 A reserved variable name
9149 that may not be set or used in a construction environment.
9150 (See the manpage section "Variable Substitution"
9151 for more information).
9155 <varlistentry id="cv-SOURCE_URL">
9157 <envar>SOURCE_URL</envar>
9162 of the location from which the project was retrieved.
9163 This is used to fill in the
9164 <literal>Source:</literal>
9165 field in the controlling information for Ipkg and RPM packages.
9167 <para>See the &b-link-Package; builder.</para>
9170 <varlistentry id="cv-SOURCES">
9172 <envar>SOURCES</envar>
9175 A reserved variable name
9176 that may not be set or used in a construction environment.
9177 (See the manpage section "Variable Substitution"
9178 for more information).
9182 <varlistentry id="cv-SOVERSION">
9184 <envar>SOVERSION</envar>
9187 This will construct the <varname>SONAME</varname> using on the base library name
9188 (<parameter>test</parameter> in the example below) and use specified <varname>SOVERSION</varname>
9189 to create <varname>SONAME</varname>.
9191 env.SharedLibrary('test', 'test.c', SHLIBVERSION='0.1.2', SOVERSION='2')
9193 The variable is used, for example, by &t-link-gnulink; linker tool.
9196 In the example above <varname>SONAME</varname> would be <filename>libtest.so.2</filename>
9197 which would be a symlink and point to <filename>libtest.so.0.1.2</filename>
9201 <varlistentry id="cv-SPAWN">
9203 <envar>SPAWN</envar>
9206 A command interpreter function that will be called to execute command line
9207 strings. The function must accept five arguments:
9211 def spawn(shell, escape, cmd, args, env):
9215 <varname>shell</varname>
9216 is a string naming the shell program to use,
9217 <varname>escape</varname>
9218 is a function that can be called to escape shell special characters in
9220 <varname>cmd</varname>
9221 is the path to the command to be executed,
9222 <varname>args</varname>
9223 holds the arguments to the command and
9224 <varname>env</varname>
9225 is a dictionary of environment variables
9226 defining the execution environment in which the command should be executed.
9230 <varlistentry id="cv-STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME">
9232 <envar>STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME</envar>
9235 When this variable is true, static objects and shared objects are assumed to be the same; that is, SCons does not check for linking static objects into a shared library.
9239 <varlistentry id="cv-SUBST_DICT">
9241 <envar>SUBST_DICT</envar>
9244 The dictionary used by the &b-link-Substfile; or &b-link-Textfile; builders
9245 for substitution values.
9246 It can be anything acceptable to the <function>dict()</function> constructor,
9247 so in addition to a dictionary,
9248 lists of tuples are also acceptable.
9252 <varlistentry id="cv-SUBSTFILEPREFIX">
9254 <envar>SUBSTFILEPREFIX</envar>
9257 The prefix used for &b-link-Substfile; file names,
9258 an empty string by default.
9262 <varlistentry id="cv-SUBSTFILESUFFIX">
9264 <envar>SUBSTFILESUFFIX</envar>
9267 The suffix used for &b-link-Substfile; file names,
9268 an empty string by default.
9272 <varlistentry id="cv-SUMMARY">
9274 <envar>SUMMARY</envar>
9277 A short summary of what the project is about.
9278 This is used to fill in the
9279 <literal>Summary:</literal>
9280 field in the controlling information for Ipkg and RPM packages,
9282 <literal>Description:</literal>
9283 field in MSI packages.
9285 <para>See the &b-link-Package; builder.</para>
9288 <varlistentry id="cv-SWIG">
9293 The name of the &swig; compiler to use.
9297 <varlistentry id="cv-SWIGCFILESUFFIX">
9299 <envar>SWIGCFILESUFFIX</envar>
9302 The suffix that will be used for intermediate C
9303 source files generated by &swig;.
9304 The default value is <literal>'_wrap$CFILESUFFIX'</literal> -
9305 that is, the concatenation of the string
9306 <literal>_wrap</literal>
9307 and the current C suffix &cv-link-CFILESUFFIX;.
9308 By default, this value is used whenever the
9309 <option>-c++</option>
9311 <emphasis>not</emphasis>
9312 specified as part of the
9314 construction variable.
9318 <varlistentry id="cv-SWIGCOM">
9320 <envar>SWIGCOM</envar>
9323 The command line used to call &swig;.
9327 <varlistentry id="cv-SWIGCOMSTR">
9329 <envar>SWIGCOMSTR</envar>
9332 The string displayed when calling &swig;.
9333 If this is not set, then &cv-link-SWIGCOM; (the command line) is displayed.
9337 <varlistentry id="cv-SWIGCXXFILESUFFIX">
9339 <envar>SWIGCXXFILESUFFIX</envar>
9342 The suffix that will be used for intermediate C++
9343 source files generated by &swig;.
9344 The default value is <literal>'_wrap$CXXFILESUFFIX'</literal> -
9345 that is, the concatenation of the string
9346 <literal>_wrap</literal>
9347 and the current C++ suffix &cv-link-CXXFILESUFFIX;.
9348 By default, this value is used whenever the
9349 <option>-c++</option>
9350 option is specified as part of the
9352 construction variable.
9356 <varlistentry id="cv-SWIGDIRECTORSUFFIX">
9358 <envar>SWIGDIRECTORSUFFIX</envar>
9361 The suffix that will be used for intermediate C++ header
9362 files generated by &swig;.
9363 These are only generated for C++ code when the &swig; 'directors' feature is
9365 The default value is
9366 <filename>_wrap.h</filename>.
9370 <varlistentry id="cv-SWIGFLAGS">
9372 <envar>SWIGFLAGS</envar>
9375 General options passed to &swig;.
9376 This is where you should set the target language
9377 (<option>-python</option>,
9378 <option>-perl5</option>,
9379 <option>-tcl</option>, etc.)
9380 and whatever other options you want to specify to &swig;,
9381 such as the <option>-c++</option> to generate C++ code
9386 <varlistentry id="cv-_SWIGINCFLAGS">
9388 <envar>_SWIGINCFLAGS</envar>
9391 An automatically-generated construction variable
9392 containing the &swig; command-line options
9393 for specifying directories to be searched for included files.
9394 The value of &cv-_SWIGINCFLAGS; is created
9395 by respectively prepending and appending
9396 &cv-SWIGINCPREFIX; and &cv-SWIGINCSUFFIX;
9397 to the beginning and end
9398 of each directory in &cv-SWIGPATH;.
9402 <varlistentry id="cv-SWIGINCPREFIX">
9404 <envar>SWIGINCPREFIX</envar>
9407 The prefix used to specify an include directory on the &swig; command line.
9408 This will be prepended to the beginning of each directory
9409 in the &cv-SWIGPATH; construction variable
9410 when the &cv-_SWIGINCFLAGS; variable is automatically generated.
9414 <varlistentry id="cv-SWIGINCSUFFIX">
9416 <envar>SWIGINCSUFFIX</envar>
9419 The suffix used to specify an include directory on the &swig; command line.
9420 This will be appended to the end of each directory
9421 in the &cv-SWIGPATH; construction variable
9422 when the &cv-_SWIGINCFLAGS; variable is automatically generated.
9426 <varlistentry id="cv-SWIGOUTDIR">
9428 <envar>SWIGOUTDIR</envar>
9431 Specifies the output directory in which &swig;
9432 should place generated language-specific files.
9433 This will be used by SCons to identify
9434 the files that will be generated by the &swig; call,
9435 and translated into the
9436 <literal>swig -outdir</literal> option on the command line.
9440 <varlistentry id="cv-SWIGPATH">
9442 <envar>SWIGPATH</envar>
9445 The list of directories that &swig;
9446 will search for included files.
9447 &SCons;' SWIG implicit dependency scanner will search these
9448 directories for include files. The default value is an empty list.
9452 Don't explicitly put include directory
9453 arguments in &cv-link-SWIGFLAGS;
9454 the result will be non-portable
9455 and the directories will not be searched by the dependency scanner.
9456 Note: directory names in &cv-link-SWIGPATH;
9457 will be looked-up relative to the SConscript
9458 directory when they are used in a command.
9461 to look-up a directory relative to the root of the source tree use
9462 a top-relative path (<literal>#</literal>):
9466 env = Environment(SWIGPATH='#/include')
9470 The directory look-up can also be forced using the
9476 include = Dir('include')
9477 env = Environment(SWIGPATH=include)
9481 The directory list will be added to command lines
9482 through the automatically-generated
9484 construction variable,
9485 which is constructed by
9486 respectively prepending and appending the values of the
9487 &cv-SWIGINCPREFIX; and &cv-SWIGINCSUFFIX;
9488 construction variables
9489 to the beginning and end
9490 of each directory in &cv-SWIGPATH;.
9491 Any command lines you define that need
9492 the SWIGPATH directory list should
9493 include &cv-_SWIGINCFLAGS;:
9497 env = Environment(SWIGCOM="my_swig -o $TARGET $_SWIGINCFLAGS $SOURCES")
9501 <varlistentry id="cv-SWIGVERSION">
9503 <envar>SWIGVERSION</envar>
9506 The detected version string of the &swig; tool.
9510 <varlistentry id="cv-TAR">
9519 <varlistentry id="cv-TARCOM">
9521 <envar>TARCOM</envar>
9524 The command line used to call the tar archiver.
9528 <varlistentry id="cv-TARCOMSTR">
9530 <envar>TARCOMSTR</envar>
9533 The string displayed when archiving files
9534 using the tar archiver.
9535 If this is not set, then &cv-link-TARCOM; (the command line) is displayed.
9539 env = Environment(TARCOMSTR = "Archiving $TARGET")
9543 <varlistentry id="cv-TARFLAGS">
9545 <envar>TARFLAGS</envar>
9548 General options passed to the tar archiver.
9552 <varlistentry id="cv-TARGET">
9554 <envar>TARGET</envar>
9557 A reserved variable name
9558 that may not be set or used in a construction environment.
9559 (See the manpage section "Variable Substitution"
9560 for more information).
9564 <varlistentry id="cv-TARGET_ARCH">
9566 <envar>TARGET_ARCH</envar>
9569 The name of the hardware architecture that objects
9570 created using this &consenv; should target.
9571 Can be set when creating a &consenv; by passing as a keyword
9572 argument in the &f-link-Environment; call.
9575 On the <literal>win32</literal> platform,
9576 if the &MSVC; compiler is available,
9577 &t-link-msvc; tool setup is done using
9578 &cv-link-HOST_ARCH; and &cv-TARGET_ARCH;.
9579 If a value is not specified,
9580 will be set to the same value as &cv-link-HOST_ARCH;.
9581 Changing the value after the environment is initialized
9582 will not cause the tool to be reinitialized.
9583 Compiled objects will be in the target architecture if
9584 the compilation system supports generating for that target.
9585 The latest compiler which can fulfill the requirement will
9586 be selected, unless a different version is directed by the
9587 value of the &cv-link-MSVC_VERSION; &consvar;.
9590 On the win32/msvc combination, valid target arch values are
9591 <literal>x86</literal>,
9592 <literal>arm</literal>,
9593 <literal>i386</literal>
9594 for 32-bit targets and
9595 <literal>amd64</literal>,
9596 <literal>arm64</literal>,
9597 <literal>x86_64</literal>
9598 and <literal>ia64</literal> (Itanium)
9600 For example, if you want to compile 64-bit binaries, you would set
9601 <literal>TARGET_ARCH='x86_64'</literal> when creating the &consenv;.
9602 Note that not all target architectures are
9603 supported for all Visual Studio / MSVC versions.
9604 Check the relevant Microsoft documentation.
9607 &cv-TARGET_ARCH; is not currently used by other compilation tools,
9608 but the option is reserved to do so in future
9612 <varlistentry id="cv-TARGET_OS">
9614 <envar>TARGET_OS</envar>
9617 The name of the operating system that objects
9618 created using this &consenv; should target.
9619 Can be set when creating a &consenv; by passing as a keyword
9620 argument in the &f-link-Environment; call;.
9623 &cv-TARGET_OS; is not currently used by &SCons;
9624 but the option is reserved to do so in future
9628 <varlistentry id="cv-TARGETS">
9630 <envar>TARGETS</envar>
9633 A reserved variable name
9634 that may not be set or used in a construction environment.
9635 (See the manpage section "Variable Substitution"
9636 for more information).
9640 <varlistentry id="cv-TARSUFFIX">
9642 <envar>TARSUFFIX</envar>
9645 The suffix used for tar file names.
9649 <varlistentry id="cv-TEMPFILE">
9651 <envar>TEMPFILE</envar>
9654 Holds a callable object which will be invoked to transform long
9655 command lines (string or list) into an alternate form.
9656 Length limits on various operating systems
9657 may cause long command lines to fail when calling out to
9658 a shell to run the command.
9659 Most often affects linking, when there are many object files and/or
9660 libraries to be linked, but may also affect other
9661 compilation steps which have many arguments.
9662 &cv-TEMPFILE; is not called directly,
9663 but rather is typically embedded in another
9664 &consvar;, to be expanded when used. Example:
9668 env["TEMPFILE"] = TempFileMunge
9669 env["LINKCOM"] = "${TEMPFILE('$LINK $TARGET $SOURCES', '$LINKCOMSTR')}"
9673 The SCons default value for &cv-TEMPFILE;,
9674 <classname>TempFileMunge</classname>,
9675 performs command substitution on the passed command line,
9676 calculates whether modification is needed,
9677 then puts all but the first word (assumed to be the command name)
9678 of the resulting list into a temporary file
9679 (sometimes called a response file or command file),
9680 and returns a new command line consisting of the
9681 the command name and an appropriately formatted reference
9682 to the temporary file.
9686 A replacement for the default tempfile object would need
9687 to do fundamentally the same thing, including taking into account
9689 &cv-link-MAXLINELENGTH;,
9690 &cv-link-TEMPFILEPREFIX;,
9691 &cv-link-TEMPFILESUFFIX;,
9692 &cv-link-TEMPFILEARGJOIN;,
9693 &cv-link-TEMPFILEDIR;
9695 &cv-link-TEMPFILEARGESCFUNC;.
9696 If a particular use case requires a different transformation
9697 than the default, it is recommended to copy the mechanism and
9698 define a new &consvar; and rewrite the relevant <literal>*COM</literal>
9699 variable(s) to use it, to avoid possibly disrupting existing uses
9704 <varlistentry id="cv-TEMPFILEARGESCFUNC">
9706 <envar>TEMPFILEARGESCFUNC</envar>
9709 The default argument escape function is
9710 <function>SCons.Subst.quote_spaces</function>.
9711 If you need to apply extra operations on a command argument
9712 (to fix Windows slashes, normalize paths, etc.)
9713 before writing to the temporary file,
9714 you can set the &cv-TEMPFILEARGESCFUNC; variable to a custom function.
9715 Such a function takes a single string argument and returns
9716 a new string with any modifications applied.
9723 from SCons.Subst import quote_spaces
9725 WINPATHSEP_RE = re.compile(r"\\([^\"'\\]|$)")
9727 def tempfile_arg_esc_func(arg):
9728 arg = quote_spaces(arg)
9729 if sys.platform != "win32":
9731 # GCC requires double Windows slashes, let's use UNIX separator
9732 return WINPATHSEP_RE.sub(r"/\1", arg)
9734 env["TEMPFILEARGESCFUNC"] = tempfile_arg_esc_func
9738 <varlistentry id="cv-TEMPFILEARGJOIN">
9740 <envar>TEMPFILEARGJOIN</envar>
9743 The string to use to join the arguments passed to
9744 &cv-link-TEMPFILE; when the command line exceeds the limit set by
9745 &cv-link-MAXLINELENGTH;.
9746 The default value is a space.
9747 However for MSVC, MSLINK the default is a line separator
9748 as defined by <systemitem>os.linesep</systemitem>.
9749 Note this value is used literally and not expanded by the subst logic.
9753 <varlistentry id="cv-TEMPFILEDIR">
9755 <envar>TEMPFILEDIR</envar>
9758 The directory to create the long-lines temporary file in.
9759 If unset, some suitable default should be chosen.
9760 The default tempfile object lets the &Python;
9761 <systemitem>tempfile</systemitem> module choose.
9765 <varlistentry id="cv-TEMPFILEPREFIX">
9767 <envar>TEMPFILEPREFIX</envar>
9770 The prefix for the name of the temporary file used
9771 to store command lines exceeding &cv-link-MAXLINELENGTH;.
9772 The prefix must include the compiler syntax to actually
9773 include and process the file.
9774 The default prefix is <literal>'@'</literal>, which works for the &MSVC;
9775 and GNU toolchains on Windows.
9776 Set this appropriately for other toolchains,
9777 for example <literal>'-@'</literal> for the diab compiler
9778 or <literal>'-via'</literal> for ARM toolchain.
9782 <varlistentry id="cv-TEMPFILESUFFIX">
9784 <envar>TEMPFILESUFFIX</envar>
9787 The suffix for the name of the temporary file used
9788 to store command lines exceeding &cv-link-MAXLINELENGTH;.
9789 The suffix should include the dot ('.') if one is needed as
9790 it will not be added automatically.
9791 The default is <filename>.lnk</filename>.
9795 <varlistentry id="cv-TEX">
9800 The TeX formatter and typesetter.
9804 <varlistentry id="cv-TEXCOM">
9806 <envar>TEXCOM</envar>
9809 The command line used to call the TeX formatter and typesetter.
9813 <varlistentry id="cv-TEXCOMSTR">
9815 <envar>TEXCOMSTR</envar>
9818 The string displayed when calling
9819 the TeX formatter and typesetter.
9820 If this is not set, then &cv-link-TEXCOM; (the command line) is displayed.
9824 env = Environment(TEXCOMSTR = "Building $TARGET from TeX input $SOURCES")
9828 <varlistentry id="cv-TEXFLAGS">
9830 <envar>TEXFLAGS</envar>
9833 General options passed to the TeX formatter and typesetter.
9837 <varlistentry id="cv-TEXINPUTS">
9839 <envar>TEXINPUTS</envar>
9842 List of directories that the LaTeX program will search
9843 for include directories.
9844 The LaTeX implicit dependency scanner will search these
9845 directories for \include and \import files.
9849 <varlistentry id="cv-TEXTFILEPREFIX">
9851 <envar>TEXTFILEPREFIX</envar>
9854 The prefix used for &b-link-Textfile; file names,
9855 an empty string by default.
9859 <varlistentry id="cv-TEXTFILESUFFIX">
9861 <envar>TEXTFILESUFFIX</envar>
9864 The suffix used for &b-link-Textfile; file names;
9865 <filename>.txt</filename> by default.
9869 <varlistentry id="cv-TOOLS">
9871 <envar>TOOLS</envar>
9874 A list of the names of the Tool specification modules
9875 that were actually initialized in the current &consenv;.
9876 This may be useful as a diagnostic aid
9877 to see if a tool did (or did not) run.
9878 The value is informative and is not guaranteed to be complete.
9882 <varlistentry id="cv-UNCHANGED_SOURCES">
9884 <envar>UNCHANGED_SOURCES</envar>
9887 A reserved variable name
9888 that may not be set or used in a construction environment.
9889 (See the manpage section "Variable Substitution"
9890 for more information).
9894 <varlistentry id="cv-UNCHANGED_TARGETS">
9896 <envar>UNCHANGED_TARGETS</envar>
9899 A reserved variable name
9900 that may not be set or used in a construction environment.
9901 (See the manpage section "Variable Substitution"
9902 for more information).
9906 <varlistentry id="cv-VENDOR">
9908 <envar>VENDOR</envar>
9911 The person or organization who supply the packaged software.
9912 This is used to fill in the
9913 <literal>Vendor:</literal>
9914 field in the controlling information for RPM packages,
9916 <literal>Manufacturer:</literal>
9917 field in the controlling information for MSI packages.
9919 <para>See the &b-link-Package; builder.</para>
9922 <varlistentry id="cv-VERSION">
9924 <envar>VERSION</envar>
9927 The version of the project, specified as a string.
9929 <para>See the &b-link-Package; builder.</para>
9932 <varlistentry id="cv-VSWHERE">
9934 <envar>VSWHERE</envar>
9937 Specify the location of <command>vswhere.exe</command>.
9941 The <command>vswhere.exe</command> executable is distributed with
9942 Microsoft Visual Studio and Build Tools since the 2017 edition,
9943 but is also available as a standalone installation.
9944 It allows queries to obtain detailed information about
9945 installations of 2017 and later editions.
9946 &SCons; makes use of this information to determine
9947 the state of compiler support for those editions.
9950 Setting the &cv-VSWHERE; variable to the path to a specific
9951 <command>vswhere.exe</command> binary
9952 causes &SCons; to use that binary.
9953 If not set, &SCons; will search for one,
9954 looking in the following locations in order,
9955 using the first found
9956 (&cv-VSWHERE; is updated with the location):
9959 <simplelist type="vert">
9960 <member><literal>%ProgramFiles(x86)%\Microsoft Visual Studio\Installer</literal></member>
9961 <member><literal>%ProgramFiles%\Microsoft Visual Studio\Installer</literal></member>
9962 <member><literal>%ChocolateyInstall%\bin</literal></member>
9963 <member><literal>%LOCALAPPDATA%\Microsoft\WinGet\Links</literal></member>
9964 <member><literal>%USERPROFILE%\scoop\shims</literal></member>
9965 <member><literal>%SCOOP%\shims</literal></member>
9971 In order to take effect, &cv-VSWHERE; must be set before
9972 the initial &MSVC; compiler discovery takes place.
9973 Discovery happens, at the latest, during the first call to the
9974 &f-link-Environment; function, unless a <parameter>tools</parameter>
9975 list is specified which excludes the entire &MSVC; toolchain -
9976 that is, omits <literal>"defaults"</literal>
9977 and any specific tool module that refers to parts of the toolchain
9978 (&t-link-msvc;, &t-link-mslink;, &t-link-masm;, &t-link-midl;
9979 and &t-link-msvs;). In this case, detection is deferred until
9980 any one of those tool modules is invoked manually.
9981 The following two examples illustrate this:
9985 # VSWHERE set as Environment is created
9986 env = Environment(VSWHERE='c:/my/path/to/vswhere')
9988 # Initialization deferred with empty tools, triggered manually
9989 env = Environment(tools=[])
9990 env['VSWHERE'] = r'c:/my/vswhere/install/location/vswhere.exe'
9999 <varlistentry id="cv-WINDOWS_EMBED_MANIFEST">
10001 <envar>WINDOWS_EMBED_MANIFEST</envar>
10004 Set to <constant>True</constant> to embed the
10005 compiler-generated manifest
10006 (normally <literal>${TARGET}.manifest</literal>)
10007 into all Windows executables and DLLs built with this environment,
10008 as a resource during their link step.
10009 This is done using &cv-link-MT; and &cv-link-MTEXECOM; and &cv-link-MTSHLIBCOM;.
10010 See also &cv-link-WINDOWS_INSERT_MANIFEST;.
10014 <varlistentry id="cv-WINDOWS_INSERT_DEF">
10016 <envar>WINDOWS_INSERT_DEF</envar>
10020 a library build of a Windows shared library
10021 (<filename>.dll</filename> file)
10022 will include a reference to the corresponding
10023 module-definition file at the same time,
10024 if a module-definition file
10025 is not already listed as a build target.
10026 The name of the module-definition file will
10027 be constructed from the base name of the library
10029 &cv-link-WINDOWSDEFSUFFIX; and
10030 &cv-link-WINDOWSDEFPREFIX;.
10031 The default is to not add a module-definition file.
10032 The module-definition file is not created by this directive,
10033 and must be supplied by the developer.
10037 <varlistentry id="cv-WINDOWS_INSERT_MANIFEST">
10039 <envar>WINDOWS_INSERT_MANIFEST</envar>
10044 will add the manifest file
10045 generated by &MSVC; 8.0 and later
10046 to the target list so &SCons; will be aware they
10048 In the case of an executable, the manifest file name
10049 is constructed using
10050 &cv-link-WINDOWSPROGMANIFESTSUFFIX; and
10051 &cv-link-WINDOWSPROGMANIFESTPREFIX;.
10052 In the case of a shared library, the manifest file name
10053 is constructed using
10054 &cv-link-WINDOWSSHLIBMANIFESTSUFFIX; and
10055 &cv-link-WINDOWSSHLIBMANIFESTPREFIX;.
10056 See also &cv-link-WINDOWS_EMBED_MANIFEST;.
10060 <varlistentry id="cv-WINDOWSDEFPREFIX">
10062 <envar>WINDOWSDEFPREFIX</envar>
10065 The prefix used for a Windows linker module-definition file name.
10070 <varlistentry id="cv-WINDOWSDEFSUFFIX">
10072 <envar>WINDOWSDEFSUFFIX</envar>
10075 The suffix used for a Windows linker module-definition file name.
10076 Defaults to <filename>.def</filename>.
10080 <varlistentry id="cv-WINDOWSEXPPREFIX">
10082 <envar>WINDOWSEXPPREFIX</envar>
10085 The prefix used for Windows linker exports file names.
10090 <varlistentry id="cv-WINDOWSEXPSUFFIX">
10092 <envar>WINDOWSEXPSUFFIX</envar>
10095 The suffix used for Windows linker exports file names.
10096 Defaults to <filename>.exp</filename>.
10100 <varlistentry id="cv-WINDOWSPROGMANIFESTPREFIX">
10102 <envar>WINDOWSPROGMANIFESTPREFIX</envar>
10105 The prefix used for executable program manifest files
10106 generated by &MSVC;.
10111 <varlistentry id="cv-WINDOWSPROGMANIFESTSUFFIX">
10113 <envar>WINDOWSPROGMANIFESTSUFFIX</envar>
10116 The suffix used for executable program manifest files
10117 generated by &MSVC;.
10118 Defaults to <filename>.manifest</filename>.
10122 <varlistentry id="cv-WINDOWSSHLIBMANIFESTPREFIX">
10124 <envar>WINDOWSSHLIBMANIFESTPREFIX</envar>
10127 The prefix used for shared library manifest files
10128 generated by &MSVC;.
10133 <varlistentry id="cv-WINDOWSSHLIBMANIFESTSUFFIX">
10135 <envar>WINDOWSSHLIBMANIFESTSUFFIX</envar>
10138 The suffix used for shared library manifest files
10139 generated by &MSVC;.
10140 Defaults to <filename>.manifest</filename>.
10144 <varlistentry id="cv-X_IPK_DEPENDS">
10146 <envar>X_IPK_DEPENDS</envar>
10149 This is used to fill in the
10150 <literal>Depends:</literal>
10151 field in the controlling information for Ipkg packages.
10153 <para>See the &b-link-Package; builder.</para>
10156 <varlistentry id="cv-X_IPK_DESCRIPTION">
10158 <envar>X_IPK_DESCRIPTION</envar>
10161 This is used to fill in the
10162 <literal>Description:</literal>
10163 field in the controlling information for Ipkg packages.
10164 The default value is
10165 <quote>&cv-SUMMARY;\n&cv-DESCRIPTION;</quote>
10169 <varlistentry id="cv-X_IPK_MAINTAINER">
10171 <envar>X_IPK_MAINTAINER</envar>
10174 This is used to fill in the
10175 <literal>Maintainer:</literal>
10176 field in the controlling information for Ipkg packages.
10180 <varlistentry id="cv-X_IPK_PRIORITY">
10182 <envar>X_IPK_PRIORITY</envar>
10185 This is used to fill in the
10186 <literal>Priority:</literal>
10187 field in the controlling information for Ipkg packages.
10191 <varlistentry id="cv-X_IPK_SECTION">
10193 <envar>X_IPK_SECTION</envar>
10196 This is used to fill in the
10197 <literal>Section:</literal>
10198 field in the controlling information for Ipkg packages.
10202 <varlistentry id="cv-X_MSI_LANGUAGE">
10204 <envar>X_MSI_LANGUAGE</envar>
10207 This is used to fill in the
10208 <literal>Language:</literal>
10209 attribute in the controlling information for MSI packages.
10211 <para>See the &b-link-Package; builder.</para>
10214 <varlistentry id="cv-X_MSI_LICENSE_TEXT">
10216 <envar>X_MSI_LICENSE_TEXT</envar>
10219 The text of the software license in RTF format.
10220 Carriage return characters will be
10221 replaced with the RTF equivalent \\par.
10223 <para>See the &b-link-Package; builder.</para>
10226 <varlistentry id="cv-X_MSI_UPGRADE_CODE">
10228 <envar>X_MSI_UPGRADE_CODE</envar>
10235 <varlistentry id="cv-X_RPM_AUTOREQPROV">
10237 <envar>X_RPM_AUTOREQPROV</envar>
10240 This is used to fill in the
10241 <literal>AutoReqProv:</literal>
10243 <filename>.spec</filename> file.
10245 <para>See the &b-link-Package; builder.</para>
10248 <varlistentry id="cv-X_RPM_BUILD">
10250 <envar>X_RPM_BUILD</envar>
10253 internal, but overridable
10257 <varlistentry id="cv-X_RPM_BUILDREQUIRES">
10259 <envar>X_RPM_BUILDREQUIRES</envar>
10262 This is used to fill in the
10263 <literal>BuildRequires:</literal>
10265 <filename>.spec</filename> file.
10266 Note this should only be used on a host managed by rpm as the dependencies will not be resolvable at build time otherwise.
10270 <varlistentry id="cv-X_RPM_BUILDROOT">
10272 <envar>X_RPM_BUILDROOT</envar>
10275 internal, but overridable
10279 <varlistentry id="cv-X_RPM_CLEAN">
10281 <envar>X_RPM_CLEAN</envar>
10284 internal, but overridable
10288 <varlistentry id="cv-X_RPM_CONFLICTS">
10290 <envar>X_RPM_CONFLICTS</envar>
10293 This is used to fill in the
10294 <literal>Conflicts:</literal>
10296 <filename>.spec</filename> file.
10300 <varlistentry id="cv-X_RPM_DEFATTR">
10302 <envar>X_RPM_DEFATTR</envar>
10305 This value is used as the default attributes
10306 for the files in the RPM package.
10307 The default value is
10308 <quote>(-,root,root)</quote>.
10312 <varlistentry id="cv-X_RPM_DISTRIBUTION">
10314 <envar>X_RPM_DISTRIBUTION</envar>
10317 This is used to fill in the
10318 <literal>Distribution:</literal>
10320 <filename>.spec</filename> file.
10324 <varlistentry id="cv-X_RPM_EPOCH">
10326 <envar>X_RPM_EPOCH</envar>
10329 This is used to fill in the
10330 <literal>Epoch:</literal>
10332 <filename>.spec</filename> file.
10336 <varlistentry id="cv-X_RPM_EXCLUDEARCH">
10338 <envar>X_RPM_EXCLUDEARCH</envar>
10341 This is used to fill in the
10342 <literal>ExcludeArch:</literal>
10344 <filename>.spec</filename> file.
10348 <varlistentry id="cv-X_RPM_EXLUSIVEARCH">
10350 <envar>X_RPM_EXLUSIVEARCH</envar>
10353 This is used to fill in the
10354 <literal>ExclusiveArch:</literal>
10356 <filename>.spec</filename> file.
10360 <varlistentry id="cv-X_RPM_EXTRADEFS">
10362 <envar>X_RPM_EXTRADEFS</envar>
10365 A list used to supply extra defintions or flags
10366 to be added to the RPM <filename>.spec</filename> file.
10367 Each item is added as-is with a carriage return appended.
10368 This is useful if some specific RPM feature not otherwise
10369 anticipated by SCons needs to be turned on or off.
10370 Note if this variable is omitted, SCons will by
10371 default supply the value
10372 <literal>'%global debug_package %{nil}'</literal>
10373 to disable debug package generation.
10374 To enable debug package generation, include this
10375 variable set either to None, or to a custom
10376 list that does not include the default line.
10379 <emphasis>New in version 3.1.</emphasis>
10387 "%define _unpackaged_files_terminate_build 0"
10388 "%define _missing_doc_files_terminate_build 0"
10392 </example_commands>
10396 <varlistentry id="cv-X_RPM_GROUP">
10398 <envar>X_RPM_GROUP</envar>
10401 This is used to fill in the
10402 <literal>Group:</literal>
10404 <filename>.spec</filename> file.
10408 <varlistentry id="cv-X_RPM_GROUP_lang">
10410 <envar>X_RPM_GROUP_lang</envar>
10413 This is used to fill in the
10414 <literal>Group(lang):</literal>
10416 <filename>.spec</filename> file.
10418 <varname>lang</varname>
10420 and should be replaced by
10421 the appropriate language code.
10425 <varlistentry id="cv-X_RPM_ICON">
10427 <envar>X_RPM_ICON</envar>
10430 This is used to fill in the
10431 <literal>Icon:</literal>
10433 <filename>.spec</filename> file.
10437 <varlistentry id="cv-X_RPM_INSTALL">
10439 <envar>X_RPM_INSTALL</envar>
10442 internal, but overridable
10446 <varlistentry id="cv-X_RPM_PACKAGER">
10448 <envar>X_RPM_PACKAGER</envar>
10451 This is used to fill in the
10452 <literal>Packager:</literal>
10454 <filename>.spec</filename> file.
10458 <varlistentry id="cv-X_RPM_POSTINSTALL">
10460 <envar>X_RPM_POSTINSTALL</envar>
10463 This is used to fill in the
10464 <literal>%post:</literal>
10466 <filename>.spec</filename> file.
10470 <varlistentry id="cv-X_RPM_POSTUNINSTALL">
10472 <envar>X_RPM_POSTUNINSTALL</envar>
10475 This is used to fill in the
10476 <literal>%postun:</literal>
10478 <filename>.spec</filename> file.
10482 <varlistentry id="cv-X_RPM_PREFIX">
10484 <envar>X_RPM_PREFIX</envar>
10487 This is used to fill in the
10488 <literal>Prefix:</literal>
10490 <filename>.spec</filename> file.
10494 <varlistentry id="cv-X_RPM_PREINSTALL">
10496 <envar>X_RPM_PREINSTALL</envar>
10499 This is used to fill in the
10500 <literal>%pre:</literal>
10502 <filename>.spec</filename> file.
10506 <varlistentry id="cv-X_RPM_PREP">
10508 <envar>X_RPM_PREP</envar>
10511 internal, but overridable
10515 <varlistentry id="cv-X_RPM_PREUNINSTALL">
10517 <envar>X_RPM_PREUNINSTALL</envar>
10520 This is used to fill in the
10521 <literal>%preun:</literal>
10523 <filename>.spec</filename> file.
10527 <varlistentry id="cv-X_RPM_PROVIDES">
10529 <envar>X_RPM_PROVIDES</envar>
10532 This is used to fill in the
10533 <literal>Provides:</literal>
10535 <filename>.spec</filename> file.
10539 <varlistentry id="cv-X_RPM_REQUIRES">
10541 <envar>X_RPM_REQUIRES</envar>
10544 This is used to fill in the
10545 <literal>Requires:</literal>
10547 <filename>.spec</filename> file.
10551 <varlistentry id="cv-X_RPM_SERIAL">
10553 <envar>X_RPM_SERIAL</envar>
10556 This is used to fill in the
10557 <literal>Serial:</literal>
10559 <filename>.spec</filename> file.
10563 <varlistentry id="cv-X_RPM_URL">
10565 <envar>X_RPM_URL</envar>
10568 This is used to fill in the
10569 <literal>Url:</literal>
10571 <filename>.spec</filename> file.
10575 <varlistentry id="cv-XGETTEXT">
10577 <envar>XGETTEXT</envar>
10580 Path to <command>xgettext(1)</command> program (found via
10581 <function>Detect()</function>).
10582 See &t-link-xgettext; tool and &b-link-POTUpdate; builder.
10586 <varlistentry id="cv-XGETTEXTCOM">
10588 <envar>XGETTEXTCOM</envar>
10591 Complete xgettext command line.
10592 See &t-link-xgettext; tool and &b-link-POTUpdate; builder.
10596 <varlistentry id="cv-XGETTEXTCOMSTR">
10598 <envar>XGETTEXTCOMSTR</envar>
10601 A string that is shown when <command>xgettext(1)</command> command is invoked
10602 (default: <literal>''</literal>, which means "print &cv-link-XGETTEXTCOM;").
10603 See &t-link-xgettext; tool and &b-link-POTUpdate; builder.
10607 <varlistentry id="cv-_XGETTEXTDOMAIN">
10609 <envar>_XGETTEXTDOMAIN</envar>
10612 Internal "macro". Generates <command>xgettext</command> domain name
10613 form source and target (default: <literal>'${TARGET.filebase}'</literal>).
10617 <varlistentry id="cv-XGETTEXTFLAGS">
10619 <envar>XGETTEXTFLAGS</envar>
10622 Additional flags to <command>xgettext(1)</command>.
10623 See &t-link-xgettext; tool and &b-link-POTUpdate; builder.
10627 <varlistentry id="cv-XGETTEXTFROM">
10629 <envar>XGETTEXTFROM</envar>
10632 Name of file containing list of <command>xgettext(1)</command>'s source
10633 files. Autotools' users know this as <filename>POTFILES.in</filename> so they
10634 will in most cases set <literal>XGETTEXTFROM="POTFILES.in"</literal> here.
10635 The &cv-XGETTEXTFROM; files have same syntax and semantics as the well known
10636 GNU <filename>POTFILES.in</filename>.
10637 See &t-link-xgettext; tool and &b-link-POTUpdate; builder.
10641 <varlistentry id="cv-_XGETTEXTFROMFLAGS">
10643 <envar>_XGETTEXTFROMFLAGS</envar>
10646 Internal "macro". Genrates list of <literal>-D<dir></literal> flags
10647 from the &cv-link-XGETTEXTPATH; list.
10651 <varlistentry id="cv-XGETTEXTFROMPREFIX">
10653 <envar>XGETTEXTFROMPREFIX</envar>
10656 This flag is used to add single &cv-link-XGETTEXTFROM; file to
10657 <command>xgettext(1)</command>'s commandline (default:
10658 <literal>'-f'</literal>).
10662 <varlistentry id="cv-XGETTEXTFROMSUFFIX">
10664 <envar>XGETTEXTFROMSUFFIX</envar>
10667 (default: <literal>''</literal>)
10671 <varlistentry id="cv-XGETTEXTPATH">
10673 <envar>XGETTEXTPATH</envar>
10676 List of directories, there <command>xgettext(1)</command> will look for
10677 source files (default: <literal>[]</literal>).
10679 This variable works only together with &cv-link-XGETTEXTFROM;
10681 See also &t-link-xgettext; tool and &b-link-POTUpdate; builder.
10685 <varlistentry id="cv-_XGETTEXTPATHFLAGS">
10687 <envar>_XGETTEXTPATHFLAGS</envar>
10690 Internal "macro". Generates list of <literal>-f<file></literal> flags
10691 from &cv-link-XGETTEXTFROM;.
10695 <varlistentry id="cv-XGETTEXTPATHPREFIX">
10697 <envar>XGETTEXTPATHPREFIX</envar>
10700 This flag is used to add single search path to
10701 <command>xgettext(1)</command>'s commandline (default:
10702 <literal>'-D'</literal>).
10706 <varlistentry id="cv-XGETTEXTPATHSUFFIX">
10708 <envar>XGETTEXTPATHSUFFIX</envar>
10711 (default: <literal>''</literal>)
10715 <varlistentry id="cv-YACC">
10717 <envar>YACC</envar>
10720 The parser generator.
10724 <varlistentry id="cv-YACC_GRAPH_FILE">
10726 <envar>YACC_GRAPH_FILE</envar>
10729 If supplied, write a graph of the automaton to a file with the name
10730 taken from this variable.
10731 Will be emitted as a <option>--graph=</option>
10732 command-line option. Use this in preference to including
10733 <option>--graph=</option> in &cv-link-YACCFLAGS; directly.
10735 <para><emphasis>New in version 4.4.0.</emphasis></para>
10738 <varlistentry id="cv-YACC_GRAPH_FILE_SUFFIX">
10740 <envar>YACC_GRAPH_FILE_SUFFIX</envar>
10743 Previously specified by &cv-link-YACCVCGFILESUFFIX;.
10746 The suffix of the file
10747 containing a graph of the grammar automaton
10748 when the <option>-g</option> option
10749 (or <option>--graph=</option> without an option-argument)
10750 is used in &cv-link-YACCFLAGS;.
10751 Note that setting this variable informs &SCons;
10752 how to construct the graph filename for tracking purposes,
10753 it does not affect the actual generated filename.
10754 Various yacc tools have emitted various formats
10755 at different times.
10756 Set this to match what your parser generator produces.
10758 <para><emphasis>New in version 4.6.0</emphasis>. </para>
10761 <varlistentry id="cv-YACC_HEADER_FILE">
10763 <envar>YACC_HEADER_FILE</envar>
10766 If supplied, generate a header file with the name taken from this variable.
10767 Will be emitted as a <option>--header=</option>
10768 command-line option. Use this in preference to including
10769 <option>--header=</option> in &cv-link-YACCFLAGS; directly.
10771 <para><emphasis>New in version 4.4.0.</emphasis></para>
10774 <varlistentry id="cv-YACCCOM">
10776 <envar>YACCCOM</envar>
10779 The command line used to call the parser generator
10780 to generate a source file.
10784 <varlistentry id="cv-YACCCOMSTR">
10786 <envar>YACCCOMSTR</envar>
10789 The string displayed when generating a source file
10790 using the parser generator.
10791 If this is not set, then &cv-link-YACCCOM; (the command line) is displayed.
10795 env = Environment(YACCCOMSTR="Yacc'ing $TARGET from $SOURCES")
10796 </example_commands>
10799 <varlistentry id="cv-YACCFLAGS">
10801 <envar>YACCFLAGS</envar>
10804 General options passed to the parser generator.
10805 In addition to passing the value on during invocation,
10806 the &t-link-yacc; tool also examines this &consvar; for options
10807 which cause additional output files to be generated,
10808 and adds those to the target list.
10812 If the <option>-d</option> option is present in &cv-YACCFLAGS;
10813 &scons; assumes that the call will also create a header file
10814 with the suffix defined by &cv-link-YACCHFILESUFFIX;
10815 if the yacc source file ends in a <filename>.y</filename> suffix,
10816 or a file with the suffix defined by &cv-link-YACCHXXFILESUFFIX;
10817 if the yacc source file ends in a <filename>.yy</filename> suffix.
10818 The header will have the same base name as the requested target.
10819 This is only correct if the executable is <command>bison</command>
10820 (or <command>win_bison</command>).
10821 If using Berkeley yacc (<command>byacc</command>),
10822 <filename>y.tab.h</filename> is always written -
10823 avoid the <option>-d</option> in this case and
10824 use &cv-link-YACC_HEADER_FILE; instead.
10828 If a <option>-g</option> option is present,
10829 &scons; assumes that the call will also create a graph file
10830 with the suffix defined by &cv-link-YACCVCGFILESUFFIX;.
10834 If a <option>-v</option> option is present,
10835 &scons; assumes that the call will also create an output debug file
10836 with the suffix <filename>.output</filename>.
10840 Also recognized are GNU &bison; options
10841 <option>--header</option>
10842 (and its deprecated synonym <option>--defines</option>),
10843 which is similar to
10844 <option>-d</option>
10845 but gives the option to explicitly name the output header file
10846 through an option argument;
10847 and <option>--graph</option>,
10848 which is similar to
10849 <option>-g</option>
10850 but gives the option to explicitly name the output graph file
10851 through an option argument.
10852 The file suffixes described for
10853 <option>-d</option> and <option>-g</option> above
10854 are not applied if these are used in the option=argument form.
10858 Note that files specified by <option>--header=</option> and
10859 <option>--graph=</option> may not be properly handled
10860 by &SCons; in all situations, and using those in &cv-YACCFLAGS;
10861 should be considered legacy support only.
10862 Consider using &cv-link-YACC_HEADER_FILE;
10863 and &cv-link-YACC_GRAPH_FILE; instead
10864 if the files need to be explicitly named
10865 (<emphasis>new in version 4.4.0</emphasis>).
10869 <varlistentry id="cv-YACCHFILESUFFIX">
10871 <envar>YACCHFILESUFFIX</envar>
10874 The suffix of the C
10875 header file generated by the parser generator
10876 when the <option>-d</option> option
10877 (or <option>--header</option> without an option-argument)
10878 is used in &cv-link-YACCFLAGS;.
10879 Note that setting this variable informs &SCons;
10880 how to construct the header filename for tracking purposes,
10881 it does not affect the actual generated filename.
10882 Set this to match what your parser generator produces.
10883 The default value is
10884 <filename>.h</filename>.
10888 <varlistentry id="cv-YACCHXXFILESUFFIX">
10890 <envar>YACCHXXFILESUFFIX</envar>
10893 The suffix of the C++
10894 header file generated by the parser generator
10895 when the <option>-d</option> option
10896 (or <option>--header</option> without an option-argument)
10897 is used in &cv-link-YACCFLAGS;.
10898 Note that setting this variable informs &SCons;
10899 how to construct the header filename for tracking purposes,
10900 it does not affect the actual generated filename.
10901 Set this to match what your parser generator produces.
10902 The default value is <filename>.hpp</filename>.
10906 <varlistentry id="cv-YACCVCGFILESUFFIX">
10908 <envar>YACCVCGFILESUFFIX</envar>
10911 Obsoleted. Use &cv-link-YACC_GRAPH_FILE_SUFFIX; instead.
10912 The value is used only if &cv-YACC_GRAPH_FILE_SUFFIX; is not set.
10913 The default value is <filename>.gv</filename>.
10916 <emphasis>Changed in version 4.6.0</emphasis>: deprecated. The default value
10917 changed from <filename>.vcg</filename> (&bison; stopped generating
10918 <filename>.vcg</filename> output with version 2.4, in 2006).
10922 <varlistentry id="cv-ZIP">
10927 The zip compression and file packaging utility.
10931 <varlistentry id="cv-ZIP_OVERRIDE_TIMESTAMP">
10933 <envar>ZIP_OVERRIDE_TIMESTAMP</envar>
10936 An optional timestamp which overrides the last modification time of
10937 the file when stored inside the Zip archive. This is a tuple of six values:
10941 Day of month (one-based)
10943 Minutes (zero-based)
10944 Seconds (zero-based)
10948 <varlistentry id="cv-ZIPCOM">
10950 <envar>ZIPCOM</envar>
10953 The command line used to call the zip utility,
10954 or the internal Python function used to create a
10959 <varlistentry id="cv-ZIPCOMPRESSION">
10961 <envar>ZIPCOMPRESSION</envar>
10965 <varname>compression</varname>
10968 <filename>zipfile</filename>
10969 module used by the internal Python function
10970 to control whether the zip archive
10971 is compressed or not.
10972 The default value is
10973 <literal>zipfile.ZIP_DEFLATED</literal>,
10974 which creates a compressed zip archive.
10975 This value has no effect if the
10976 <literal>zipfile</literal>
10977 module is unavailable.
10981 <varlistentry id="cv-ZIPCOMSTR">
10983 <envar>ZIPCOMSTR</envar>
10986 The string displayed when archiving files
10987 using the zip utility.
10988 If this is not set, then &cv-link-ZIPCOM;
10989 (the command line or internal Python function) is displayed.
10993 env = Environment(ZIPCOMSTR = "Zipping $TARGET")
10994 </example_commands>
10997 <varlistentry id="cv-ZIPFLAGS">
10999 <envar>ZIPFLAGS</envar>
11002 General options passed to the zip utility.
11006 <varlistentry id="cv-ZIPROOT">
11008 <envar>ZIPROOT</envar>
11011 An optional zip root directory (default empty). The filenames stored
11012 in the zip file will be relative to this directory, if given.
11013 Otherwise the filenames are relative to the current directory of the
11018 env = Environment()
11019 env.Zip('foo.zip', 'subdir1/subdir2/file1', ZIPROOT='subdir1')
11020 </example_commands>
11022 will produce a zip file <literal>foo.zip</literal>
11023 containing a file with the name
11024 <literal>subdir2/file1</literal> rather than
11025 <literal>subdir1/subdir2/file1</literal>.
11029 <varlistentry id="cv-ZIPSUFFIX">
11031 <envar>ZIPSUFFIX</envar>
11034 The suffix used for zip file names.