summaryrefslogtreecommitdiff
path: root/scons.1
diff options
context:
space:
mode:
Diffstat (limited to 'scons.1')
-rw-r--r--scons.1649
1 files changed, 644 insertions, 5 deletions
diff --git a/scons.1 b/scons.1
index ee321d7..8738f49 100644
--- a/scons.1
+++ b/scons.1
@@ -1,4 +1,4 @@
-.\" Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 The SCons Foundation
+.\" Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 The SCons Foundation
.\"
.\" Permission is hereby granted, free of charge, to any person obtaining
.\" a copy of this software and associated documentation files (the
@@ -19,9 +19,9 @@
.\" OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
.\" WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
.\"
-.\" doc/man/scons.1 5357 2011/09/09 21:31:03 bdeegan
+.\" doc/man/scons.1 issue-2856:2676:d23b7a2f45e8 2012/08/05 15:38:28 garyo
.\"
-.TH SCONS 1 "September 2011"
+.TH SCONS 1 "August 2012"
.\" ES - Example Start - indents and turns off line fill
.rm ES
.de ES
@@ -2586,6 +2586,45 @@ env.Moc('foo.cpp') # generates foo.moc
.EE
'\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+.IP MOFiles()
+.IP env.MOFiles()
+This builder belongs to &t-link-msgfmt; tool. The builder compiles
+\fBPO\fP files to \fBMO\fP files.
+
+.IR Example 1 .
+Create \fBpl.mo\fP and \fBen.mo\fP by compiling
+.BR pl.po\fP and \fBen.po :
+.ES
+ # ...
+ env.MOFiles(['pl', 'en'])
+.EE
+.IP
+.IR Example 2 .
+Compile files for languages defined in \fBLINGUAS\fP file:
+.ES
+ # ...
+ env.MOFiles(LINGUAS_FILE = 1)
+.EE
+.IP
+.IR Example 3 .
+Create \fBpl.mo\fP and \fBen.mo\fP by compiling
+\fBpl.po\fP and \fBen.po\fP plus files for
+languages defined in \fBLINGUAS\fP file:
+.ES
+ # ...
+ env.MOFiles(['pl', 'en'], LINGUAS_FILE = 1)
+.EE
+.IP
+.IR Example 4 .
+Compile files for languages defined in \fBLINGUAS\fP file
+(another version):
+.ES
+ # ...
+ env['LINGUAS_FILE'] = 1
+ env.MOFiles()
+.EE
+
+'\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
.IP MSVSProject()
.IP env.MSVSProject()
Builds a Microsoft Visual Studio project file,
@@ -2883,6 +2922,88 @@ env.PDF(target = 'bbb', source = 'bbb.dvi')
.EE
'\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+.IP POInit()
+.IP env.POInit()
+This builder belongs to &t-link-msginit; tool. The builder initializes missing
+\fBPO\fP file(s) if \fB$POAUTOINIT\fP is set. If
+\fB$POAUTOINIT\fP is not set (default), \fBPOInit\fP() prints instruction for
+user (that is supposed to be a translator), telling how the
+\fBPO\fP file should be initialized. In normal projects
+.IR you should not use \fBPOInit\fP() and use \fBPOUpdate ()
+instead\fP. \fBPOUpdate\fP() chooses intelligently between
+.BR msgmerge(1)\fP and \fBmsginit(1)\fP. \fBPOInit ()
+always uses \fBmsginit(1)\fP and should be regarded as builder for
+special purposes or for temporary use (e.g. for quick, one time initialization
+of a bunch of \fBPO\fP files) or for tests.
+
+Target nodes defined through \fBPOInit\fP() are not built by default (they're
+\fBIgnore\fPd from \fB'.'\fP node) but are added to
+special \fBAlias\fP (\fB'po-create'\fP by default).
+The alias name may be changed through the \fB$POCREATE_ALIAS\fP
+construction variable. All \fBPO\fP files defined through
+.BR POInit\fP() may be easily initialized by \fBscons po-create .
+
+.IR Example 1 .
+Initialize \fBen.po\fP and \fBpl.po\fP from
+.BR messages.pot :
+.ES
+ # ...
+ env.POInit(['en', 'pl']) # messages.pot --> [en.po, pl.po]
+.EE
+.IP
+.IR Example 2 .
+Initialize \fBen.po\fP and \fBpl.po\fP from
+.BR foo.pot :
+.ES
+ # ...
+ env.POInit(['en', 'pl'], ['foo']) # foo.pot --> [en.po, pl.po]
+.EE
+.IP
+.IR Example 3 .
+Initialize \fBen.po\fP and \fBpl.po\fP from
+\fBfoo.pot\fP but using \fB$POTDOMAIN\fP construction
+variable:
+.ES
+ # ...
+ env.POInit(['en', 'pl'], POTDOMAIN='foo') # foo.pot --> [en.po, pl.po]
+.EE
+.IP
+.IR Example 4 .
+Initialize \fBPO\fP files for languages defined in
+\fBLINGUAS\fP file. The files will be initialized from template
+.BR messages.pot :
+.ES
+ # ...
+ env.POInit(LINGUAS_FILE = 1) # needs 'LINGUAS' file
+.EE
+.IP
+.IR Example 5 .
+Initialize \fBen.po\fP and \fBpl.pl\fP
+\fBPO\fP files plus files for languages defined in
+\fBLINGUAS\fP file. The files will be initialized from template
+.BR messages.pot :
+.ES
+ # ...
+ env.POInit(['en', 'pl'], LINGUAS_FILE = 1)
+.EE
+.IP
+.IR Example 6 .
+You may preconfigure your environment first, and then initialize
+\fBPO\fP files:
+.ES
+ # ...
+ env['POAUTOINIT'] = 1
+ env['LINGUAS_FILE'] = 1
+ env['POTDOMAIN'] = 'foo'
+ env.POInit()
+.EE
+which has same efect as:
+.ES
+ # ...
+ env.POInit(POAUTOINIT = 1, LINGUAS_FILE = 1, POTDOMAIN = 'foo')
+.EE
+
+'\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
.IP PostScript()
.IP env.PostScript()
Builds a \fB.ps\fP file
@@ -2904,6 +3025,236 @@ env.PostScript(target = 'bbb', source = 'bbb.dvi')
.EE
'\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+.IP POTUpdate()
+.IP env.POTUpdate()
+The builder belongs to &t-link-xgettext; tool. The builder updates target
+\fBPOT\fP file if exists or creates one if it doesn't. The node is
+not built by default (i.e. it is \fBIgnore\fPd from
+\fB'.'\fP), but only on demand (i.e. when given
+\fBPOT\fP file is required or when special alias is invoked). This
+builder adds its targe node (\fBmessages.pot\fP, say) to a
+special alias (\fBpot-update\fP by default, see
+\fB$POTUPDATE_ALIAS\fP) so you can update/create them easily with
+\fBscons pot-update\fP. The file is not written until there is no
+real change in internationalized messages (or in comments that enter
+\fBPOT\fP file).
+
+<note>
+You may see \fBxgettext(1)\fP being invoked by the
+&t-link-xgettext; tool even if there is no real change in internationalized
+messages (so the \fBPOT\fP file is not being updated). This
+happens every time a source file has changed. In such case we invoke
+\fBxgettext(1)\fP and compare its output with the content of
+\fBPOT\fP file to decide whether the file should be updated or
+not.</para></note>
+
+.I "Example 1."
+Let's create \fBpo/\fP directory and place following
+\fBSConstruct\fP script there:
+.ES
+ # SConstruct in 'po/' subdir
+ env = Environment( tools = ['default', 'xgettext'] )
+ env.POTUpdate(['foo'], ['../a.cpp', '../b.cpp'])
+ env.POTUpdate(['bar'], ['../c.cpp', '../d.cpp'])
+.EE
+.IP
+
+Then invoke scons few times:
+.ES
+ user@host:$ scons # Does not create foo.pot nor bar.pot
+ user@host:$ scons foo.pot # Updates or creates foo.pot
+ user@host:$ scons pot-update # Updates or creates foo.pot and bar.pot
+ user@host:$ scons -c # Does not clean foo.pot nor bar.pot.
+.EE
+the results shall be as the comments above say.
+
+.I "Example 2."
+The \fBPOTUpdate\fP() builder may be used with no target specified, in which
+case default target \fBmessages.pot\fP will be used. The
+default target may also be overriden by setting \fB$POTDOMAIN\fP construction
+variable or providing it as an override to \fBPOTUpdate\fP() builder:
+.ES
+ # SConstruct script
+ env = Environment( tools = ['default', 'xgettext'] )
+ env['POTDOMAIN'] = "foo"
+ env.POTUpdate(source = ["a.cpp", "b.cpp"]) # Creates foo.pot ...
+ env.POTUpdate(POTDOMAIN = "bar", source = ["c.cpp", "d.cpp"]) # and bar.pot
+.EE
+.IP
+.I "Example 3."
+The sources may be specified within separate file, for example
+.BR POTFILES.in :
+.ES
+ # POTFILES.in in 'po/' subdirectory
+ ../a.cpp
+ ../b.cpp
+ # end of file
+.EE
+.IP
+
+The name of the file (\fBPOTFILES.in\fP) containing the list of
+sources is provided via \fB$XGETTEXTFROM\fP:
+.ES
+ # SConstruct file in 'po/' subdirectory
+ env = Environment( tools = ['default', 'xgettext'] )
+ env.POTUpdate(XGETTEXTFROM = 'POTFILES.in')
+.EE
+.IP
+
+
+.I "Example 4."
+You may use \fB$XGETTEXTPATH\fP to define source search path. Assume, for
+example, that you have files \fBa.cpp\fP,
+.BR b.cpp\fP, \fBpo/SConstruct ,
+.BR po/POTFILES.in\fP. Then your \fBPOT -related
+files could look as below:
+.ES
+ # POTFILES.in in 'po/' subdirectory
+ a.cpp
+ b.cpp
+ # end of file
+.EE
+
+.ES
+ # SConstruct file in 'po/' subdirectory
+ env = Environment( tools = ['default', 'xgettext'] )
+ env.POTUpdate(XGETTEXTFROM = 'POTFILES.in', XGETTEXTPATH='../')
+.EE
+.IP
+.I "Example 5."
+Multiple search directories may be defined within a list, i.e.
+\fBXGETTEXTPATH = ['dir1', 'dir2', ...]\fP. The order in the list
+determines the search order of source files. The path to the first file found
+is used.
+
+Let's create \fB0/1/po/SConstruct\fP script:
+.ES
+ # SConstruct file in '0/1/po/' subdirectory
+ env = Environment( tools = ['default', 'xgettext'] )
+ env.POTUpdate(XGETTEXTFROM = 'POTFILES.in', XGETTEXTPATH=['../', '../../'])
+.EE
+and \fB0/1/po/POTFILES.in\fP:
+.ES
+ # POTFILES.in in '0/1/po/' subdirectory
+ a.cpp
+ # end of file
+.EE
+Write two \fB*.cpp\fP files, the first one is
+.BR 0/a.cpp :
+.ES
+ /* 0/a.cpp */
+ gettext("Hello from ../../a.cpp")
+.EE
+and the second is \fB0/1/a.cpp\fP:
+.ES
+ /* 0/1/a.cpp */
+ gettext("Hello from ../a.cpp")
+.EE
+then run scons. You'll obtain \fB0/1/po/messages.pot\fP with the
+message \fB"Hello from ../a.cpp"\fP. When you reverse order in
+\fI$XGETTEXTFOM\fP, i.e. when you write SConscript as
+.ES
+ # SConstruct file in '0/1/po/' subdirectory
+ env = Environment( tools = ['default', 'xgettext'] )
+ env.POTUpdate(XGETTEXTFROM = 'POTFILES.in', XGETTEXTPATH=['../../', '../'])
+.EE
+.IP
+ then the \fBmessages.pot\fP will contain
+\fBmsgid "Hello from ../../a.cpp"\fP line and not
+.BR msgid "Hello from ../a.cpp" .
+
+
+'\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+.IP POUpdate()
+.IP env.POUpdate()
+The builder belongs to &t-link-msgmerge; tool. The builder updates
+\fBPO\fP files with \fBmsgmerge(1)\fP, or initializes
+missing \fBPO\fP files as described in documentation of
+&t-link-msginit; tool and \fBPOInit\fP() builder (see also
+\fB$POAUTOINIT\fP). Note, that \fBPOUpdate\fP() \fIdoes not add its
+targets to \fBpo-create\fP alias\fP as \fBPOInit\fP()
+does.
+
+Target nodes defined through \fBPOUpdate\fP() are not built by default
+(they're \fBIgnore\fPd from \fB'.'\fP node). Instead,
+they are added automatically to special \fBAlias\fP
+(\fB'po-update'\fP by default). The alias name may be changed
+through the \fB$POUPDATE_ALIAS\fP construction variable. You can easilly
+update \fBPO\fP files in your project by \fBscons
+po-update\fP.
+
+.I "Example 1."
+Update \fBen.po\fP and \fBpl.po\fP from
+.BR messages.pot\fP template (see also \fB$POTDOMAIN ),
+assuming that the later one exists or there is rule to build it (see
+.BR POTUpdate ()):
+.ES
+ # ...
+ env.POUpdate(['en','pl']) # messages.pot --> [en.po, pl.po]
+.EE
+.IP
+.I "Example 2."
+Update \fBen.po\fP and \fBpl.po\fP from
+\fBfoo.pot\fP template:
+.ES
+ # ...
+ env.POUpdate(['en', 'pl'], ['foo']) # foo.pot --> [en.po, pl.pl]
+.EE
+.IP
+.I "Example 3."
+Update \fBen.po\fP and \fBpl.po\fP from
+\fBfoo.pot\fP (another version):
+.ES
+ # ...
+ env.POUpdate(['en', 'pl'], POTDOMAIN='foo') # foo.pot -- > [en.po, pl.pl]
+.EE
+.IP
+.I "Example 4."
+Update files for languages defined in \fBLINGUAS\fP file. The
+files are updated from \fBmessages.pot\fP template:
+.ES
+ # ...
+ env.POUpdate(LINGUAS_FILE = 1) # needs 'LINGUAS' file
+.EE
+.IP
+.I "Example 5."
+Same as above, but update from \fBfoo.pot\fP template:
+.ES
+ # ...
+ env.POUpdate(LINGUAS_FILE = 1, source = ['foo'])
+.EE
+.IP
+.I "Example 6."
+Update \fBen.po\fP and \fBpl.po\fP plus files for
+languages defined in \fBLINGUAS\fP file. The files are updated
+from \fBmessages.pot\fP template:
+.ES
+ # produce 'en.po', 'pl.po' + files defined in 'LINGUAS':
+ env.POUpdate(['en', 'pl' ], LINGUAS_FILE = 1)
+.EE
+.IP
+.I "Example 7."
+Use \fB$POAUTOINIT\fP to automatically initialize \fBPO\fP file
+if it doesn't exist:
+.ES
+ # ...
+ env.POUpdate(LINGUAS_FILE = 1, POAUTOINIT = 1)
+.EE
+.IP
+.I "Example 8."
+Update \fBPO\fP files for languages defined in
+\fBLINGUAS\fP file. The files are updated from
+\fBfoo.pot\fP template. All necessary settings are
+pre-configured via environment.
+.ES
+ # ...
+ env['POAUTOINIT'] = 1
+ env['LINGUAS_FILE'] = 1
+ env['POTDOMAIN'] = 'foo'
+ env.POUpdate()
+.EE
+
+'\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
.IP Program()
.IP env.Program()
Builds an executable given one or more object files
@@ -3314,7 +3665,7 @@ env.Substfile('bar.in', SUBST_DICT = good_bar)
# the SUBST_DICT may be in common (and not an override)
substutions = {}
-subst = Environment(tools = ['textfile', SUBST_DICT = substitutions)
+subst = Environment(tools = ['textfile'], SUBST_DICT = substitutions)
substitutions['@foo@'] = 'foo'
subst['SUBST_DICT']['@bar@'] = 'bar'
subst.Substfile('pgm1.c', [Value('#include "@foo@.h"'),
@@ -3428,6 +3779,119 @@ blob.txt
.EE
'\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+.IP Translate()
+.IP env.Translate()
+This pseudo-builder belongs to &t-link-gettext; toolset. The builder extracts
+internationalized messages from source files, updates \fBPOT\fP
+template (if necessary) and then updates \fBPO\fP translations (if
+necessary). If \fB$POAUTOINIT\fP is set, missing \fBPO\fP files
+will be automatically created (i.e. without translator person intervention).
+The variables \fB$LINGUAS_FILE\fP and \fB$POTDOMAIN\fP are taken into
+acount too. All other construction variables used by \fBPOTUpdate\fP(), and
+\fBPOUpdate\fP() work here too.
+
+.IR Example 1 .
+The simplest way is to specify input files and output languages inline in
+a SCons script when invoking \fBTranslate\fP()
+.ES
+# SConscript in 'po/' directory
+env = Environment( tools = ["default", "gettext"] )
+env['POAUTOINIT'] = 1
+env.Translate(['en','pl'], ['../a.cpp','../b.cpp'])
+.EE
+.IP
+.IR Example 2 .
+If you wish, you may also stick to conventional style known from
+<productname>autotools</productname>, i.e. using
+\fBPOTFILES.in\fP and \fBLINGUAS\fP files
+.ES
+# LINGUAS
+en pl
+#end
+.EE
+
+.ES
+# POTFILES.in
+a.cpp
+b.cpp
+# end
+.EE
+
+.ES
+# SConscript
+env = Environment( tools = ["default", "gettext"] )
+env['POAUTOINIT'] = 1
+env['XGETTEXTPATH'] = ['../']
+env.Translate(LINGUAS_FILE = 1, XGETTEXTFROM = 'POTFILES.in')
+.EE
+.IP
+The last approach is perhaps the recommended one. It allows easily split
+internationalization/localization onto separate SCons scripts, where a script
+in source tree is responsible for translations (from sources to
+\fBPO\fP files) and script(s) under variant directories are
+responsible for compilation of \fBPO\fP to \fBMO\fP
+files to and for installation of \fBMO\fP files. The "gluing
+factor" synchronizing these two scripts is then the content of
+\fBLINGUAS\fP file. Note, that the updated
+\fBPOT\fP and \fBPO\fP files are usually going to be
+committed back to the repository, so they must be updated within the source
+directory (and not in variant directories). Additionaly, the file listing of
+\fBpo/\fP directory contains \fBLINGUAS\fP file,
+so the source tree looks familiar to translators, and they may work with the
+project in their usual way.
+
+.IR Example 3 .
+Let's prepare a development tree as below
+.ES
+ project/
+ + SConstruct
+ + build/
+ + src/
+ + po/
+ + SConscript
+ + SConscript.i18n
+ + POTFILES.in
+ + LINGUAS
+.EE
+with \fBbuild\fP being variant directory. Write the top-level
+\fBSConstruct\fP script as follows
+.ES
+ # SConstruct
+ env = Environment( tools = ["default", "gettext"] )
+ VariantDir('build', 'src', duplicate = 0)
+ env['POAUTOINIT'] = 1
+ SConscript('src/po/SConscript.i18n', exports = 'env')
+ SConscript('build/po/SConscript', exports = 'env')
+.EE
+the \fBsrc/po/SConscript.i18n\fP as
+.ES
+ # src/po/SConscript.i18n
+ Import('env')
+ env.Translate(LINGUAS_FILE=1, XGETTEXTFROM='POTFILES.in', XGETTEXTPATH=['../'])
+.EE
+and the \fBsrc/po/SConscript\fP
+.ES
+ # src/po/SConscript
+ Import('env')
+ env.MOFiles(LINGUAS_FILE = 1)
+.EE
+Such setup produces \fBPOT\fP and \fBPO\fP files
+under source tree in \fBsrc/po/\fP and binary
+\fBMO\fP files under variant tree in
+\fBbuild/po/\fP. This way the \fBPOT\fP and
+\fBPO\fP files are separated from other output files, which must
+not be committed back to source repositories (e.g. \fBMO\fP
+files).
+
+<note>
+In above example, the \fBPO\fP files are not updated,
+nor created automatically when you issue \fBscons '.'\fP command.
+The files must be updated (created) by hand via \fBscons
+po-update\fP and then \fBMO\fP files can be compiled by
+running \fBscons '.'\fP.</para></note>
+
+
+'\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
.IP TypeLibrary()
.IP env.TypeLibrary()
Builds a Windows type library (\fB.tlb\fP)
@@ -9608,6 +10072,17 @@ The separator used by the \fBSubstfile\fP() and \fBTextfile\fP() builders.
This value is used between sources when constructing the target.
It defaults to the current system line separator.
+.IP LINGUAS_FILE
+The \fB$LINGUAS_FILE\fP defines file(s) containing list of additional linguas
+to be processed by \fBPOInit\fP(), \fBPOUpdate\fP() or \fBMOFiles\fP()
+builders. It also affects \fBTranslate\fP() builder. If the variable contains
+a string, it defines name of the list file. The \fB$LINGUAS_FILE\fP may be a
+list of file names as well. If \fB$LINGUAS_FILE\fP is set to
+\fBTrue\fP (or non-zero numeric value), the list will be read from
+default file named
+.BR LINGUAS .
+
+
.IP LINK
The linker.
@@ -9696,6 +10171,69 @@ If this is not set, then \fB$MIDLCOM\fP (the command line) is displayed.
.IP MIDLFLAGS
General options passed to the Microsoft IDL compiler.
+.IP MOSUFFIX
+Suffix used for \fBMO\fP files (default: \fB'.mo'\fP).
+See &t-link-msgfmt; tool and \fBMOFiles\fP() builder.
+
+.IP MSGFMT
+Absolute path to \fBmsgfmt(1)\fP binary, found by
+.BR Detect() .
+See &t-link-msgfmt; tool and \fBMOFiles\fP() builder.
+
+.IP MSGFMTCOM
+Complete command line to run \fBmsgfmt(1)\fP program.
+See &t-link-msgfmt; tool and \fBMOFiles\fP() builder.
+
+.IP MSGFMTCOMSTR
+String to display when \fBmsgfmt(1)\fP is invoked
+(default: \fB''\fP, which means ``print \fB$MSGFMTCOM\fP'').
+See &t-link-msgfmt; tool and \fBMOFiles\fP() builder.
+
+.IP MSGFMTFLAGS
+Additional flags to \fBmsgfmt(1)\fP.
+See &t-link-msgfmt; tool and \fBMOFiles\fP() builder.
+
+.IP MSGINIT
+Path to \fBmsginit(1)\fP program (found via
+.BR Detect() ).
+See &t-link-msginit; tool and \fBPOInit\fP() builder.
+
+.IP MSGINITCOM
+Complete command line to run \fBmsginit(1)\fP program.
+See &t-link-msginit; tool and \fBPOInit\fP() builder.
+
+.IP MSGINITCOMSTR
+String to display when \fBmsginit(1)\fP is invoked
+(default: \fB''\fP, which means ``print \fB$MSGINITCOM\fP'').
+See &t-link-msginit; tool and \fBPOInit\fP() builder.
+
+.IP MSGINITFLAGS
+List of additional flags to \fBmsginit(1)\fP (default:
+.BR [] ).
+See &t-link-msginit; tool and \fBPOInit\fP() builder.
+
+.IP _MSGINITLOCALE
+Internal ``macro''. Computes locale (language) name based on target filename
+(default: \fB'${TARGET.filebase}' \fP).
+
+.IP MSGMERGE
+Absolute path to \fBmsgmerge(1)\fP binary as found by
+.BR Detect() .
+See &t-link-msgmerge; tool and \fBPOUpdate\fP() builder.
+
+.IP MSGMERGECOM
+Complete command line to run \fBmsgmerge(1)\fP command.
+See &t-link-msgmerge; tool and \fBPOUpdate\fP() builder.
+
+.IP MSGMERGECOMSTR
+String to be displayed when \fBmsgmerge(1)\fP is invoked
+(default: \fB''\fP, which means ``print \fB$MSGMERGECOM\fP'').
+See &t-link-msgmerge; tool and \fBPOUpdate\fP() builder.
+
+.IP MSGMERGEFLAGS
+Additional flags to \fBmsgmerge(1)\fP command.
+See &t-link-msgmerge; tool and \fBPOUpdate\fP() builder.
+
.IP MSSDK_DIR
The directory containing the Microsoft SDK
(either Platform SDK or Windows SDK)
@@ -10199,6 +10737,46 @@ else:
Tool('msvc')(env)
.EE
+.IP POAUTOINIT
+The \fB$POAUTOINIT\fP variable, if set to \fBTrue\fP (on non-zero
+numeric value), let the &t-link-msginit; tool to automatically initialize
+\fImissing\fP \fBPO\fP files with
+\fBmsginit(1)\fP. This applies to both,
+\fBPOInit\fP() and \fBPOUpdate\fP() builders (and others that use any of
+them).
+
+.IP POCREATE_ALIAS
+Common alias for all \fBPO\fP files created with \fBPOInit\fP()
+builder (default: \fB'po-create'\fP).
+See &t-link-msginit; tool and \fBPOInit\fP() builder.
+
+.IP POSUFFIX
+Suffix used for \fBPO\fP files (default: \fB'.po'\fP)
+See &t-link-msginit; tool and \fBPOInit\fP() builder.
+
+.IP POTDOMAIN
+The \fB$POTDOMAIN\fP defines default domain, used to generate
+\fBPOT\fP filename as \fB\fB$POTDOMAIN\fP.pot\fP when
+no \fBPOT\fP file name is provided by the user. This applies to
+\fBPOTUpdate\fP(), \fBPOInit\fP() and \fBPOUpdate\fP() builders (and
+builders, that use them, e.g. \fBTranslate\fP()). Normally (if \fB$POTDOMAIN\fP is
+not defined), the builders use \fBmessages.pot\fP as default
+\fBPOT\fP file name.
+
+.IP POTSUFFIX
+Suffix used for PO Template files (default: \fB'.pot'\fP).
+See &t-link-xgettext; tool and \fBPOTUpdate\fP() builder.
+
+.IP POTUPDATE_ALIAS
+Name of the common phony target for all PO Templates created with
+.BR POUpdate\fP() (default: \fB'pot-update' ).
+See &t-link-xgettext; tool and \fBPOTUpdate\fP() builder.
+
+.IP POUPDATE_ALIAS
+Common alias for all \fBPO\fP files being defined with
+.BR POUpdate\fP() builder (default: \fB'po-update' ).
+See &t-link-msgmerge; tool and \fBPOUpdate\fP() builder.
+
.IP PRINT_CMD_LINE_FUNC
A Python function used to print the command lines as they are executed
(assuming command printing is not disabled by the
@@ -11318,7 +11896,7 @@ This is done using \fB$MT\fP and \fB$MTEXECOM\fP and \fB$MTSHLIBCOM\fP.
.IP WINDOWS_INSERT_DEF
When this is set to true,
a library build of a Windows shared library
-.RB ( .dll file)
+(\fB.dll\fP file)
will also build a corresponding \fB.def\fP file
at the same time,
if a \fB.def\fP file
@@ -11544,6 +12122,67 @@ This is used to fill in the
field in the RPM
\fB.spec\fP file.
+.IP XGETTEXT
+Path to \fBxgettext(1)\fP program (found via
+.BR Detect() ).
+See &t-link-xgettext; tool and \fBPOTUpdate\fP() builder.
+
+.IP XGETTEXTCOM
+Complete xgettext command line.
+See &t-link-xgettext; tool and \fBPOTUpdate\fP() builder.
+
+.IP XGETTEXTCOMSTR
+A string that is shown when \fBxgettext(1)\fP command is invoked
+(default: \fB''\fP, which means "print \fB$XGETTEXTCOM\fP").
+See &t-link-xgettext; tool and \fBPOTUpdate\fP() builder.
+
+.IP _XGETTEXTDOMAIN
+Internal "macro". Generates \fBxgettext\fP domain name
+form source and target (default: \fB'${TARGET.filebase}'\fP).
+
+.IP XGETTEXTFLAGS
+Additional flags to \fBxgettext(1)\fP.
+See &t-link-xgettext; tool and \fBPOTUpdate\fP() builder.
+
+.IP XGETTEXTFROM
+Name of file containing list of \fBxgettext(1)\fP's source
+files. Autotools' users know this as \fBPOTFILES.in\fP so they
+will in most cases set \fBXGETTEXTFROM="POTFILES.in"\fP here.
+The \fB$XGETTEXTFROM\fP files have same syntax and semantics as the well known
+GNU \fBPOTFILES.in\fP.
+See &t-link-xgettext; tool and \fBPOTUpdate\fP() builder.
+
+.IP _XGETTEXTFROMFLAGS
+Internal "macro". Genrates list of \fB\-D<dir>\fP flags
+from the \fB$XGETTEXTPATH\fP list.
+
+.IP XGETTEXTFROMPREFIX
+This flag is used to add single \fB$XGETTEXTFROM\fP file to
+\fBxgettext(1)\fP's commandline (default:
+.BR '-f' ).
+
+.IP XGETTEXTFROMSUFFIX
+(default: \fB''\fP)
+
+.IP XGETTEXTPATH
+List of directories, there \fBxgettext(1)\fP will look for
+source files (default: \fB[]\fP).
+<note>This variable works only together with \fB$XGETTEXTFROM\fP
+</para></note>
+See also &t-link-xgettext; tool and \fBPOTUpdate\fP() builder.
+
+.IP _XGETTEXTPATHFLAGS
+Internal "macro". Generates list of \fB\-f<file>\fP flags
+from \fB$XGETTEXTFROM\fP.
+
+.IP XGETTEXTPATHPREFIX
+This flag is used to add single search path to
+\fBxgettext(1)\fP's commandline (default:
+.BR '-D' ).
+
+.IP XGETTEXTPATHSUFFIX
+(default: \fB''\fP)
+
.IP YACC
The parser generator.