diff --git a/poky/documentation/ref-manual/ref-variables.xml b/poky/documentation/ref-manual/ref-variables.xml
new file mode 100644
index 0000000..a506480
--- /dev/null
+++ b/poky/documentation/ref-manual/ref-variables.xml
@@ -0,0 +1,16877 @@
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
+[<!ENTITY % poky SYSTEM "../poky.ent"> %poky; ] >
+<!--SPDX-License-Identifier: CC-BY-2.0-UK-->
+
+<!-- Dummy chapter -->
+<chapter id='ref-variables-glos'>
+
+<title>Variables Glossary</title>
+
+<para>
+    This chapter lists common variables used in the OpenEmbedded build system and gives an overview
+    of their function and contents.
+</para>
+
+<glossary id='ref-variables-glossary'>
+
+
+    <para>
+       <link linkend='var-ABIEXTENSION'>A</link>
+       <link linkend='var-B'>B</link>
+       <link linkend='var-CACHE'>C</link>
+       <link linkend='var-D'>D</link>
+       <link linkend='var-EFI_PROVIDER'>E</link>
+       <link linkend='var-FEATURE_PACKAGES'>F</link>
+       <link linkend='var-GCCPIE'>G</link>
+       <link linkend='var-HOMEPAGE'>H</link>
+       <link linkend='var-ICECC_DISABLED'>I</link>
+<!--               <link linkend='var-glossary-j'>J</link> -->
+       <link linkend='var-KARCH'>K</link>
+       <link linkend='var-LABELS'>L</link>
+       <link linkend='var-MACHINE'>M</link>
+       <link linkend='var-NATIVELSBSTRING'>N</link>
+       <link linkend='var-OBJCOPY'>O</link>
+       <link linkend='var-P'>P</link>
+<!--               <link linkend='var-glossary-q'>Q</link> -->
+       <link linkend='var-RANLIB'>R</link>
+       <link linkend='var-S'>S</link>
+       <link linkend='var-T'>T</link>
+       <link linkend='var-UBOOT_CONFIG'>U</link>
+       <link linkend='var-VOLATILE_LOG_DIR'>V</link>
+       <link linkend='var-WARN_QA'>W</link>
+       <link linkend='var-XSERVER'>X</link>
+<!--               <link linkend='var-glossary-y'>Y</link> -->
+<!--               <link linkend='var-glossary-z'>Z</link>-->
+    </para>
+
+    <glossdiv id='var-glossary-a'><title>A</title>
+
+        <glossentry id='var-ABIEXTENSION'><glossterm>ABIEXTENSION</glossterm>
+            <info>
+                ABIEXTENSION[doc] = "Extension to the Application Binary Interface (ABI) field of the GNU canonical architecture name (e.g. "eabi")."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Extension to the Application Binary Interface (ABI)
+                    field of the GNU canonical architecture name
+                    (e.g. "eabi").
+                </para>
+
+                <para>
+                   ABI extensions are set in the machine include files.
+                   For example, the
+                   <filename>meta/conf/machine/include/arm/arch-arm.inc</filename>
+                   file sets the following extension:
+                   <literallayout class='monospaced'>
+     ABIEXTENSION = "eabi"
+                   </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-ALLOW_EMPTY'><glossterm>ALLOW_EMPTY</glossterm>
+            <info>
+                ALLOW_EMPTY[doc] = "Specifies whether to produce an output package even if it is empty."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                   Specifies whether to produce an output package even if it is
+                   empty.
+                   By default, BitBake does not produce empty packages.
+                   This default behavior can cause issues when there is an
+                   <link linkend='var-RDEPENDS'><filename>RDEPENDS</filename></link> or
+                   some other hard runtime requirement on the existence of the package.
+                </para>
+
+                <para>
+                   Like all package-controlling variables, you must always use them in
+                   conjunction with a package name override, as in:
+                   <literallayout class='monospaced'>
+     ALLOW_EMPTY_${PN} = "1"
+     ALLOW_EMPTY_${PN}-dev = "1"
+     ALLOW_EMPTY_${PN}-staticdev = "1"
+                   </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-ALTERNATIVE'><glossterm>ALTERNATIVE</glossterm>
+            <info>
+                ALTERNATIVE[doc] = "Lists commands in a package that need an alternative binary naming scheme."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Lists commands in a package that need an alternative
+                    binary naming scheme.
+                    Sometimes the same command is provided in multiple packages.
+                    When this occurs, the OpenEmbedded build system needs to
+                    use the alternatives system to create a different binary
+                    naming scheme so the commands can co-exist.
+                </para>
+
+                <para>
+                    To use the variable, list out the package's commands
+                    that also exist as part of another package.
+                    For example, if the <filename>busybox</filename> package
+                    has four commands that also exist as part of another
+                    package, you identify them as follows:
+                    <literallayout class='monospaced'>
+     ALTERNATIVE_busybox = "sh sed test bracket"
+                    </literallayout>
+                    For more information on the alternatives system, see the
+                    "<link linkend='ref-classes-update-alternatives'><filename>update-alternatives.bbclass</filename></link>"
+                    section.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-ALTERNATIVE_LINK_NAME'><glossterm>ALTERNATIVE_LINK_NAME</glossterm>
+            <info>
+                ALTERNATIVE_LINK_NAME[doc] = "Used by the alternatives system to map duplicated commands to actual locations."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Used by the alternatives system to map duplicated commands
+                    to actual locations.
+                    For example, if the <filename>bracket</filename> command
+                    provided by the <filename>busybox</filename> package is
+                    duplicated through another package, you must use the
+                    <filename>ALTERNATIVE_LINK_NAME</filename> variable to
+                    specify the actual location:
+                    <literallayout class='monospaced'>
+     ALTERNATIVE_LINK_NAME[bracket] = "/usr/bin/["
+                    </literallayout>
+                </para>
+
+                <para>
+                    In this example, the binary for the
+                    <filename>bracket</filename> command (i.e.
+                    <filename>[</filename>) from the
+                    <filename>busybox</filename> package resides in
+                    <filename>/usr/bin/</filename>.
+                    <note>
+                        If <filename>ALTERNATIVE_LINK_NAME</filename> is not
+                        defined, it defaults to
+                        <filename>${bindir}/<replaceable>name</replaceable></filename>.
+                    </note>
+                </para>
+
+                <para>
+                    For more information on the alternatives system, see the
+                    "<link linkend='ref-classes-update-alternatives'><filename>update-alternatives.bbclass</filename></link>"
+                    section.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-ALTERNATIVE_PRIORITY'><glossterm>ALTERNATIVE_PRIORITY</glossterm>
+            <info>
+                ALTERNATIVE_PRIORITY[doc] = "Used by the alternatives system to create default priorities for duplicated commands."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Used by the alternatives system to create default
+                    priorities for duplicated commands.
+                    You can use the variable to create a single default
+                    regardless of the command name or package, a default for
+                    specific duplicated commands regardless of the package, or
+                    a default for specific commands tied to particular packages.
+                    Here are the available syntax forms:
+                    <literallayout class='monospaced'>
+     ALTERNATIVE_PRIORITY = "<replaceable>priority</replaceable>"
+     ALTERNATIVE_PRIORITY[<replaceable>name</replaceable>] = "<replaceable>priority</replaceable>"
+     ALTERNATIVE_PRIORITY_<replaceable>pkg</replaceable>[<replaceable>name</replaceable>] = "<replaceable>priority</replaceable>"
+                    </literallayout>
+                </para>
+
+                <para>
+                    For more information on the alternatives system, see the
+                    "<link linkend='ref-classes-update-alternatives'><filename>update-alternatives.bbclass</filename></link>"
+                    section.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-ALTERNATIVE_TARGET'><glossterm>ALTERNATIVE_TARGET</glossterm>
+            <info>
+                ALTERNATIVE_TARGET[doc] = "Used by the alternatives system to create default link locations for duplicated commands."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Used by the alternatives system to create default link
+                    locations for duplicated commands.
+                    You can use the variable to create a single default
+                    location for all duplicated commands regardless of the
+                    command name or package, a default for
+                    specific duplicated commands regardless of the package, or
+                    a default for specific commands tied to particular packages.
+                    Here are the available syntax forms:
+                    <literallayout class='monospaced'>
+     ALTERNATIVE_TARGET = "<replaceable>target</replaceable>"
+     ALTERNATIVE_TARGET[<replaceable>name</replaceable>] = "<replaceable>target</replaceable>"
+     ALTERNATIVE_TARGET_<replaceable>pkg</replaceable>[<replaceable>name</replaceable>] = "<replaceable>target</replaceable>"
+                    </literallayout>
+                    <note>
+                        <para>
+                            If <filename>ALTERNATIVE_TARGET</filename> is not
+                            defined, it inherits the value from the
+                            <link linkend='var-ALTERNATIVE_LINK_NAME'><filename>ALTERNATIVE_LINK_NAME</filename></link>
+                            variable.
+                        </para>
+
+                        <para>
+                            If <filename>ALTERNATIVE_LINK_NAME</filename> and
+                            <filename>ALTERNATIVE_TARGET</filename> are the
+                            same, the target for
+                            <filename>ALTERNATIVE_TARGET</filename>
+                            has "<filename>.{BPN}</filename>" appended to it.
+                        </para>
+
+                        <para>
+                            Finally, if the file referenced has not been
+                            renamed, the alternatives system will rename it to
+                            avoid the need to rename alternative files in the
+                            <link linkend='ref-tasks-install'><filename>do_install</filename></link>
+                            task while
+                            retaining support for the command if necessary.
+                        </para>
+                    </note>
+                </para>
+
+                <para>
+                    For more information on the alternatives system, see the
+                    "<link linkend='ref-classes-update-alternatives'><filename>update-alternatives.bbclass</filename></link>"
+                    section.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-APPEND'><glossterm>APPEND</glossterm>
+            <info>
+                APPEND[doc] = "An override list of append strings for target specified using LABELS."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    An override list of append strings for each target
+                    specified with
+                    <link linkend='var-LABELS'><filename>LABELS</filename></link>.
+                </para>
+
+                <para>
+                    See the
+                    <link linkend='ref-classes-grub-efi'><filename>grub-efi</filename></link>
+                    class for more information on how this variable is used.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-AR'><glossterm>AR</glossterm>
+            <info>
+                AR[doc] = "Minimal command and arguments to run 'ar'."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The minimal command and arguments used to run
+                    <filename>ar</filename>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-ARCHIVER_MODE'><glossterm>ARCHIVER_MODE</glossterm>
+            <info>
+                ARCHIVER_MODE[doc] = "Controls archive creation used when releasing source files."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When used with the
+                    <link linkend='ref-classes-archiver'><filename>archiver</filename></link>
+                    class, determines the type of information used to create
+                    a released archive.
+                    You can use this variable to create archives of patched
+                    source, original source, configured source, and so forth
+                    by employing the following variable flags (varflags):
+                    <literallayout class='monospaced'>
+     ARCHIVER_MODE[src] = "original"                 # Uses original (unpacked) source
+                                                     # files.
+
+     ARCHIVER_MODE[src] = "patched"                  # Uses patched source files. This is
+                                                     # the default.
+
+     ARCHIVER_MODE[src] = "configured"               # Uses configured source files.
+
+     ARCHIVER_MODE[diff] = "1"                       # Uses patches between do_unpack and
+                                                     # do_patch.
+
+     ARCHIVER_MODE[diff-exclude] ?= "<replaceable>file</replaceable> <replaceable>file</replaceable> ..."  # Lists files and directories to
+                                                     # exclude from diff.
+
+     ARCHIVER_MODE[dumpdata] = "1"                   # Uses environment data.
+
+     ARCHIVER_MODE[recipe] = "1"                     # Uses recipe and include files.
+
+     ARCHIVER_MODE[srpm] = "1"                       # Uses RPM package files.
+                    </literallayout>
+                    For information on how the variable works, see the
+                    <filename>meta/classes/archiver.bbclass</filename> file
+                    in the
+                    <link linkend='source-directory'>Source Directory</link>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-AS'><glossterm>AS</glossterm>
+            <info>
+                AS[doc] = "Minimal command and arguments to run the assembler."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Minimal command and arguments needed to run the
+                    assembler.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-ASSUME_PROVIDED'><glossterm>ASSUME_PROVIDED</glossterm>
+            <info>
+                ASSUME_PROVIDED[doc] = "Lists recipe names (PN values) BitBake does not attempt to build."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Lists recipe names
+                    (<link linkend='var-PN'><filename>PN</filename></link>
+                    values) BitBake does not attempt to build.
+                    Instead, BitBake assumes these recipes have already been
+                    built.
+                </para>
+
+                <para>
+                    In OpenEmbedded-Core, <filename>ASSUME_PROVIDED</filename>
+                    mostly specifies native tools that should not be built.
+                    An example is <filename>git-native</filename>, which when
+                    specified, allows for the Git binary from the host to be
+                    used rather than building <filename>git-native</filename>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-ASSUME_SHLIBS'><glossterm>ASSUME_SHLIBS</glossterm>
+            <info>
+                ASSUME_SHLIBS[doc] = "Provides additional shlibs provider mapping information, which adds to or overwrites the information provided automatically by the system."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Provides additional <filename>shlibs</filename> provider
+                    mapping information, which adds to or overwrites the
+                    information provided automatically by the system.
+                    Separate multiple entries using spaces.
+                </para>
+
+                <para>
+                    As an example, use the following form to add an
+                    <filename>shlib</filename> provider of
+                    <replaceable>shlibname</replaceable> in
+                    <replaceable>packagename</replaceable> with the optional
+                    <replaceable>version</replaceable>:
+                    <literallayout class='monospaced'>
+     <replaceable>shlibname:packagename</replaceable>[_<replaceable>version</replaceable>]
+                    </literallayout>
+                </para>
+
+                <para>
+                    Here is an example that adds a shared library named
+                    <filename>libEGL.so.1</filename> as being provided by
+                    the <filename>libegl-implementation</filename> package:
+                    <literallayout class='monospaced'>
+     ASSUME_SHLIBS = "libEGL.so.1:libegl-implementation"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-AUTHOR'><glossterm>AUTHOR</glossterm>
+            <info>
+                AUTHOR[doc] = "Email address used to contact the original author or authors in order to send patches and forward bugs."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The email address used to contact the original author
+                    or authors in order to send patches and forward bugs.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-AUTO_LIBNAME_PKGS'><glossterm>AUTO_LIBNAME_PKGS</glossterm>
+            <info>
+                AUTO_LIBNAME_PKGS[doc] = "Specifies which packages should be checked for libraries and renamed according to Debian library package naming."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When the
+                    <link linkend='ref-classes-debian'><filename>debian</filename></link>
+                    class is inherited, which is the default behavior,
+                    <filename>AUTO_LIBNAME_PKGS</filename> specifies which
+                    packages should be checked for libraries and renamed
+                    according to Debian library package naming.
+                </para>
+
+                <para>
+                    The default value is "${PACKAGES}", which causes the
+                    debian class to act on all packages that are
+                    explicitly generated by the recipe.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-AUTO_SYSLINUXMENU'><glossterm>AUTO_SYSLINUXMENU</glossterm>
+            <info>
+                AUTO_SYSLINUXMENU[doc] = "Enables creating an automatic menu for the syslinux bootloader."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Enables creating an automatic menu for the syslinux
+                    bootloader.
+                    You must set this variable in your recipe.
+                    The
+                    <link linkend='ref-classes-syslinux'><filename>syslinux</filename></link>
+                    class checks this variable.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-AUTOREV'><glossterm>AUTOREV</glossterm>
+            <info>
+                AUTOREV[doc] = "When SRCREV is set to the value of this variable, it specifies to use the latest source revision in the repository."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When
+                    <filename><link linkend='var-SRCREV'>SRCREV</link></filename>
+                    is set to the value of this variable, it specifies to use
+                    the latest source revision in the repository.
+                    Here is an example:
+                    <literallayout class='monospaced'>
+     SRCREV = "${AUTOREV}"
+                    </literallayout>
+                </para>
+
+                <para>
+                    If you use the previous statement to retrieve the latest
+                    version of software, you need to be sure
+                    <link linkend='var-PV'><filename>PV</filename></link>
+                    contains
+                    <filename>${</filename><link linkend='var-SRCPV'><filename>SRCPV</filename></link><filename>}</filename>.
+                    For example, suppose you have a kernel recipe that
+                    inherits the
+                    <link linkend='ref-classes-kernel'>kernel</link> class
+                    and you use the previous statement.
+                    In this example, <filename>${SRCPV}</filename> does not
+                    automatically get into <filename>PV</filename>.
+                    Consequently, you need to change <filename>PV</filename>
+                    in your recipe so that it does contain
+                    <filename>${SRCPV}</filename>.
+                </para>
+
+                <para>
+                    For more information see the
+                    "<ulink url='&YOCTO_DOCS_DEV_URL;#automatically-incrementing-a-binary-package-revision-number'>Automatically Incrementing a Binary Package Revision Number</ulink>"
+                    section in the Yocto Project Development Tasks Manual.
+                    </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-AVAILABLE_LICENSES'><glossterm>AVAILABLE_LICENSES</glossterm>
+            <info>
+                AVAILABLE_LICENSES[doc] = "List of licenses found in the directories specified by COMMON_LICENSE_DIR and LICENSE_PATH."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+
+                    List of licenses found in the directories specified
+                    by <link linkend='var-COMMON_LICENSE_DIR'><filename>COMMON_LICENSE_DIR</filename></link>
+                    and <link linkend='var-LICENSE_PATH'><filename>LICENSE_PATH</filename></link>.
+
+                    <note>
+                        It is assumed that all changes
+                        to <filename>COMMON_LICENSE_DIR</filename>
+                        and <filename>LICENSE_PATH</filename> have been done
+                        before <filename>AVAILABLE_LICENSES</filename> is
+                        defined
+                        (in <link linkend='ref-classes-license'>license.bbclass</link>).
+                    </note>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-AVAILTUNES'><glossterm>AVAILTUNES</glossterm>
+            <info>
+                AVAILTUNES[doc] = "The list of defined CPU and Application Binary Interface (ABI) tunings (i.e.  "tunes") available for use by the OpenEmbedded build system."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The list of defined CPU and Application Binary Interface
+                    (ABI) tunings (i.e.  "tunes") available for use by the
+                    OpenEmbedded build system.
+                </para>
+
+                <para>
+                    The list simply presents the tunes that are available.
+                    Not all tunes may be compatible with a particular
+                    machine configuration, or with each other in a
+                    <ulink url='&YOCTO_DOCS_DEV_URL;#combining-multiple-versions-library-files-into-one-image'>Multilib</ulink>
+                    configuration.
+                </para>
+
+                <para>
+                    To add a tune to the list, be sure to append it with
+                    spaces using the "+=" BitBake operator.
+                    Do not simply replace the list by using the "=" operator.
+                    See the
+                    "<ulink url='&YOCTO_DOCS_BB_URL;#basic-syntax'>Basic Syntax</ulink>"
+                    section in the BitBake User Manual for more information.
+                </para>
+            </glossdef>
+        </glossentry>
+
+    </glossdiv>
+
+    <glossdiv id='var-glossary-b'><title>B</title>
+
+        <glossentry id='var-B'><glossterm>B</glossterm>
+            <info>
+                B[doc] = "The Build Directory. The OpenEmbedded build system places generated objects into the Build Directory during a recipe's build process."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The directory within the
+                    <link linkend='build-directory'>Build Directory</link>
+                    in which the OpenEmbedded build system places generated
+                    objects during a recipe's build process.
+                    By default, this directory is the same as the <link linkend='var-S'><filename>S</filename></link>
+                    directory, which is defined as:
+                    <literallayout class='monospaced'>
+     S = "${WORKDIR}/${BP}"
+                    </literallayout>
+                </para>
+
+                <para>
+                    You can separate the (<filename>S</filename>) directory
+                    and the directory pointed to by the <filename>B</filename>
+                    variable.
+                    Most Autotools-based recipes support separating these
+                    directories.
+                    The build system defaults to using separate directories for
+                    <filename>gcc</filename> and some kernel recipes.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BAD_RECOMMENDATIONS'><glossterm>BAD_RECOMMENDATIONS</glossterm>
+            <info>
+                BAD_RECOMMENDATIONS[doc] = "A list of packages not to install despite being recommended by a recipe. Support for this variable exists only when using the IPK packaging backend."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Lists "recommended-only" packages to not install.
+                    Recommended-only packages are packages installed only
+                    through the
+                    <link linkend='var-RRECOMMENDS'><filename>RRECOMMENDS</filename></link>
+                    variable.
+                    You can prevent any of these "recommended" packages from
+                    being installed by listing them with the
+                    <filename>BAD_RECOMMENDATIONS</filename> variable:
+                    <literallayout class='monospaced'>
+     BAD_RECOMMENDATIONS = "<replaceable>package_name</replaceable> <replaceable>package_name</replaceable> <replaceable>package_name</replaceable> ..."
+                    </literallayout>
+                </para>
+
+                <para>
+                    You can set this variable globally in your
+                    <filename>local.conf</filename> file or you can attach it to
+                    a specific image recipe by using the recipe name override:
+                    <literallayout class='monospaced'>
+     BAD_RECOMMENDATIONS_pn-<replaceable>target_image</replaceable> = "<replaceable>package_name</replaceable>"
+                    </literallayout>
+                </para>
+
+                <para>
+                    It is important to realize that if you choose to not install
+                    packages using this variable and some other packages are
+                    dependent on them (i.e. listed in a recipe's
+                    <link linkend='var-RDEPENDS'><filename>RDEPENDS</filename></link>
+                    variable), the OpenEmbedded build system ignores your
+                    request and will install the packages to avoid dependency
+                    errors.
+                </para>
+
+                <para>
+                    Support for this variable exists only when using the
+                    IPK and RPM packaging backend.
+                    Support does not exist for DEB.
+                </para>
+
+                <para>
+                    See the
+                    <link linkend='var-NO_RECOMMENDATIONS'><filename>NO_RECOMMENDATIONS</filename></link>
+                    and the
+                    <link linkend='var-PACKAGE_EXCLUDE'><filename>PACKAGE_EXCLUDE</filename></link>
+                    variables for related information.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BASE_LIB'><glossterm>BASE_LIB</glossterm>
+            <info>
+                BASE_LIB[doc] = "The library directory name for the CPU or Application Binary Interface (ABI) tune."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The library directory name for the CPU or Application
+                    Binary Interface (ABI) tune.
+                    The <filename>BASE_LIB</filename> applies only in the
+                    Multilib context.
+                    See the
+                    "<ulink url='&YOCTO_DOCS_DEV_URL;#combining-multiple-versions-library-files-into-one-image'>Combining Multiple Versions of Library Files into One Image</ulink>"
+                    section in the Yocto Project Development Tasks Manual for
+                    information on Multilib.
+                </para>
+
+                <para>
+                    The <filename>BASE_LIB</filename> variable is defined in
+                    the machine include files in the
+                    <link linkend='source-directory'>Source Directory</link>.
+                    If Multilib is not being used, the value defaults to "lib".
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BASE_WORKDIR'><glossterm>BASE_WORKDIR</glossterm>
+            <info>
+                BASE_WORKDIR[doc] = "Points to the base of the work directory for all recipes."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Points to the base of the work directory for all recipes.
+                    The default value is "${TMPDIR}/work".
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BB_ALLOWED_NETWORKS'><glossterm>BB_ALLOWED_NETWORKS</glossterm>
+            <info>
+                BB_ALLOWED_NETWORKS[doc] = "A list of hosts that the fetcher is allowed to use to obtain the required source code."
+            </info>
+            <glossdef>
+                <para>
+                    Specifies a space-delimited list of hosts that the fetcher
+                    is allowed to use to obtain the required source code.
+                    Following are considerations surrounding this variable:
+                    <itemizedlist>
+                        <listitem><para>
+                            This host list is only used if
+                            <filename>BB_NO_NETWORK</filename> is either not
+                            set or set to "0".
+                            </para></listitem>
+                        <listitem><para>
+                            Limited support for wildcard matching against the
+                            beginning of host names exists.
+                            For example, the following setting matches
+                            <filename>git.gnu.org</filename>,
+                            <filename>ftp.gnu.org</filename>, and
+                            <filename>foo.git.gnu.org</filename>.
+                            <literallayout class='monospaced'>
+     BB_ALLOWED_NETWORKS = "*.gnu.org"
+                            </literallayout>
+                            <note><title>Important</title>
+                                <para>The use of the "<filename>*</filename>"
+                                character only works at the beginning of
+                                a host name and it must be isolated from
+                                the remainder of the host name.
+                                You cannot use the wildcard character in any
+                                other location of the name or combined with
+                                the front part of the name.</para>
+
+                                <para>For example,
+                                <filename>*.foo.bar</filename> is supported,
+                                while <filename>*aa.foo.bar</filename> is not.
+                                </para>
+                            </note>
+                            </para></listitem>
+                        <listitem><para>
+                            Mirrors not in the host list are skipped and
+                            logged in debug.
+                            </para></listitem>
+                        <listitem><para>
+                            Attempts to access networks not in the host list
+                            cause a failure.
+                            </para></listitem>
+                    </itemizedlist>
+                    Using <filename>BB_ALLOWED_NETWORKS</filename> in
+                    conjunction with
+                    <link linkend='var-PREMIRRORS'><filename>PREMIRRORS</filename></link>
+                    is very useful.
+                    Adding the host you want to use to
+                    <filename>PREMIRRORS</filename> results in the source code
+                    being fetched from an allowed location and avoids raising
+                    an error when a host that is not allowed is in a
+                    <link linkend='var-SRC_URI'><filename>SRC_URI</filename></link>
+                    statement.
+                    This is because the fetcher does not attempt to use the
+                    host listed in <filename>SRC_URI</filename> after a
+                    successful fetch from the
+                    <filename>PREMIRRORS</filename> occurs.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BB_DANGLINGAPPENDS_WARNONLY'><glossterm>BB_DANGLINGAPPENDS_WARNONLY</glossterm>
+            <info>
+                BB_DANGLINGAPPENDS_WARNONLY[doc] = "Defines how BitBake handles situations where an append file (.bbappend) has no corresponding recipe file (.bb)."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Defines how BitBake handles situations where an append
+                    file (<filename>.bbappend</filename>) has no
+                    corresponding recipe file (<filename>.bb</filename>).
+                    This condition often occurs when layers get out of sync
+                    (e.g. <filename>oe-core</filename> bumps a
+                    recipe version and the old recipe no longer exists and the
+                    other layer has not been updated to the new version
+                    of the recipe yet).
+                </para>
+
+                <para>
+                    The default fatal behavior is safest because it is
+                    the sane reaction given something is out of sync.
+                    It is important to realize when your changes are no longer
+                    being applied.
+                </para>
+
+                <para>
+                    You can change the default behavior by setting this
+                    variable to "1", "yes", or "true"
+                    in your <filename>local.conf</filename> file, which is
+                    located in the
+                    <link linkend='build-directory'>Build Directory</link>:
+                    Here is an example:
+                    <literallayout class='monospaced'>
+     BB_DANGLINGAPPENDS_WARNONLY = "1"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BB_DISKMON_DIRS'><glossterm>BB_DISKMON_DIRS</glossterm>
+            <info>
+                BB_DISKMON_DIRS[doc] = "Monitors disk space and available inodes during the build and allows you to control the build based on these parameters."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Monitors disk space and available inodes during the build
+                    and allows you to control the build based on these
+                    parameters.
+                </para>
+
+                <para>
+                    Disk space monitoring is disabled by default.
+                    To enable monitoring, add the <filename>BB_DISKMON_DIRS</filename>
+                    variable to your <filename>conf/local.conf</filename> file found in the
+                    <link linkend='build-directory'>Build Directory</link>.
+                    Use the following form:
+                    <literallayout class='monospaced'>
+     BB_DISKMON_DIRS = "<replaceable>action</replaceable>,<replaceable>dir</replaceable>,<replaceable>threshold</replaceable> [...]"
+
+     where:
+
+        <replaceable>action</replaceable> is:
+           ABORT:     Immediately abort the build when
+                      a threshold is broken.
+           STOPTASKS: Stop the build after the currently
+                      executing tasks have finished when
+                      a threshold is broken.
+           WARN:      Issue a warning but continue the
+                      build when a threshold is broken.
+                      Subsequent warnings are issued as
+                      defined by the BB_DISKMON_WARNINTERVAL
+                      variable, which must be defined in
+                      the conf/local.conf file.
+
+        <replaceable>dir</replaceable> is:
+           Any directory you choose. You can specify one or
+           more directories to monitor by separating the
+           groupings with a space.  If two directories are
+           on the same device, only the first directory
+           is monitored.
+
+        <replaceable>threshold</replaceable> is:
+           Either the minimum available disk space,
+           the minimum number of free inodes, or
+           both.  You must specify at least one.  To
+           omit one or the other, simply omit the value.
+           Specify the threshold using G, M, K for Gbytes,
+           Mbytes, and Kbytes, respectively. If you do
+           not specify G, M, or K, Kbytes is assumed by
+           default.  Do not use GB, MB, or KB.
+                    </literallayout>
+                </para>
+
+                <para>
+                    Here are some examples:
+                    <literallayout class='monospaced'>
+     BB_DISKMON_DIRS = "ABORT,${TMPDIR},1G,100K WARN,${SSTATE_DIR},1G,100K"
+     BB_DISKMON_DIRS = "STOPTASKS,${TMPDIR},1G"
+     BB_DISKMON_DIRS = "ABORT,${TMPDIR},,100K"
+                    </literallayout>
+                    The first example works only if you also provide
+                    the <link linkend='var-BB_DISKMON_WARNINTERVAL'><filename>BB_DISKMON_WARNINTERVAL</filename></link> variable
+                    in the <filename>conf/local.conf</filename>.
+                    This example causes the build system to immediately
+                    abort when either the disk space in <filename>${TMPDIR}</filename> drops
+                    below 1 Gbyte or the available free inodes drops below
+                    100 Kbytes.
+                    Because two directories are provided with the variable, the
+                    build system also issue a
+                    warning when the disk space in the
+                    <filename>${SSTATE_DIR}</filename> directory drops
+                    below 1 Gbyte or the number of free inodes drops
+                    below 100 Kbytes.
+                    Subsequent warnings are issued during intervals as
+                    defined by the <filename>BB_DISKMON_WARNINTERVAL</filename>
+                    variable.
+                </para>
+
+                <para>
+                    The second example stops the build after all currently
+                    executing tasks complete when the minimum disk space
+                    in the <filename>${<link linkend='var-TMPDIR'>TMPDIR</link>}</filename>
+                    directory drops below 1 Gbyte.
+                    No disk monitoring occurs for the free inodes in this case.
+                </para>
+
+                <para>
+                    The final example immediately aborts the build when the
+                    number of free inodes in the <filename>${TMPDIR}</filename> directory
+                    drops below 100 Kbytes.
+                    No disk space monitoring for the directory itself occurs
+                    in this case.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BB_DISKMON_WARNINTERVAL'><glossterm>BB_DISKMON_WARNINTERVAL</glossterm>
+            <info>
+                BB_DISKMON_WARNINTERVAL[doc] = "Defines the disk space and free inode warning intervals. To set these intervals, define the variable in the conf/local.conf file in the Build Directory."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Defines the disk space and free inode warning intervals.
+                    To set these intervals, define the variable in your
+                    <filename>conf/local.conf</filename> file in the
+                    <link linkend='build-directory'>Build Directory</link>.
+                </para>
+
+                <para>
+                    If you are going to use the
+                    <filename>BB_DISKMON_WARNINTERVAL</filename> variable, you must
+                    also use the
+                    <link linkend='var-BB_DISKMON_DIRS'><filename>BB_DISKMON_DIRS</filename></link> variable
+                    and define its action as "WARN".
+                    During the build, subsequent warnings are issued each time
+                    disk space or number of free inodes further reduces by
+                    the respective interval.
+                </para>
+
+                <para>
+                    If you do not provide a <filename>BB_DISKMON_WARNINTERVAL</filename>
+                    variable and you do use <filename>BB_DISKMON_DIRS</filename> with
+                    the "WARN" action, the disk monitoring interval defaults to
+                    the following:
+                    <literallayout class='monospaced'>
+     BB_DISKMON_WARNINTERVAL = "50M,5K"
+                    </literallayout>
+                </para>
+
+                <para>
+                    When specifying the variable in your configuration file,
+                    use the following form:
+                    <literallayout class='monospaced'>
+     BB_DISKMON_WARNINTERVAL = "<replaceable>disk_space_interval</replaceable>,<replaceable>disk_inode_interval</replaceable>"
+
+     where:
+
+        <replaceable>disk_space_interval</replaceable> is:
+           An interval of memory expressed in either
+           G, M, or K for Gbytes, Mbytes, or Kbytes,
+           respectively. You cannot use GB, MB, or KB.
+
+        <replaceable>disk_inode_interval</replaceable> is:
+           An interval of free inodes expressed in either
+           G, M, or K for Gbytes, Mbytes, or Kbytes,
+           respectively. You cannot use GB, MB, or KB.
+                    </literallayout>
+                </para>
+
+                <para>
+                    Here is an example:
+                    <literallayout class='monospaced'>
+     BB_DISKMON_DIRS = "WARN,${SSTATE_DIR},1G,100K"
+     BB_DISKMON_WARNINTERVAL = "50M,5K"
+                    </literallayout>
+                    These variables cause the OpenEmbedded build system to
+                    issue subsequent warnings each time the available
+                    disk space further reduces by 50 Mbytes or the number
+                    of free inodes further reduces by 5 Kbytes in the
+                    <filename>${SSTATE_DIR}</filename> directory.
+                    Subsequent warnings based on the interval occur each time
+                    a respective interval is reached beyond the initial warning
+                    (i.e. 1 Gbytes and 100 Kbytes).
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BB_GENERATE_MIRROR_TARBALLS'><glossterm>BB_GENERATE_MIRROR_TARBALLS</glossterm>
+            <info>
+                BB_GENERATE_MIRROR_TARBALLS[doc] = "Causes tarballs of the source control repositories to be placed in the DL_DIR directory."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Causes tarballs of the source control repositories
+                    (e.g. Git repositories), including metadata, to be placed
+                    in the
+                    <link linkend='var-DL_DIR'><filename>DL_DIR</filename></link>
+                    directory.
+                </para>
+
+                <para>
+                    For performance reasons, creating and placing tarballs of
+                    these repositories is not the default action by the
+                    OpenEmbedded build system.
+                    <literallayout class='monospaced'>
+     BB_GENERATE_MIRROR_TARBALLS = "1"
+                    </literallayout>
+                    Set this variable in your <filename>local.conf</filename>
+                    file in the
+                    <link linkend='build-directory'>Build Directory</link>.
+                </para>
+
+                <para>
+                    Once you have the tarballs containing your source files,
+                    you can clean up your <filename>DL_DIR</filename>
+                    directory by deleting any Git or other source control
+                    work directories.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BB_NUMBER_THREADS'><glossterm>BB_NUMBER_THREADS</glossterm>
+            <info>
+                BB_NUMBER_THREADS[doc] = "The maximum number of tasks BitBake should run in parallel at any one time. This variable is automatically configured to be equal to the number of build system cores."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The maximum number of tasks BitBake should run in parallel
+                    at any one time.
+                    The OpenEmbedded build system automatically configures
+                    this variable to be equal to the number of cores on the
+                    build system.
+                    For example, a system with a dual core processor that
+                    also uses hyper-threading causes the
+                    <filename>BB_NUMBER_THREADS</filename> variable to default
+                    to "4".
+                </para>
+
+                <para>
+                    For single socket systems (i.e. one CPU), you should not
+                    have to override this variable to gain optimal parallelism
+                    during builds.
+                    However, if you have very large systems that employ
+                    multiple physical CPUs, you might want to make sure the
+                    <filename>BB_NUMBER_THREADS</filename> variable is not
+                    set higher than "20".
+                </para>
+
+                <para>
+                    For more information on speeding up builds, see the
+                    "<ulink url='&YOCTO_DOCS_DEV_URL;#speeding-up-a-build'>Speeding Up a Build</ulink>"
+                    section in the Yocto Project Development Tasks Manual.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BB_SERVER_TIMEOUT'><glossterm>BB_SERVER_TIMEOUT</glossterm>
+            <info>
+                BB_SERVER_TIMEOUT [doc] = "Specifies the time (in seconds) after which to unload the BitBake server due to inactivity."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the time (in seconds) after which to unload the
+                    BitBake server due to inactivity.
+                    Set <filename>BB_SERVER_TIMEOUT</filename> to determine how
+                    long the BitBake server stays resident between invocations.
+                </para>
+
+                <para>
+                    For example, the following statement in your
+                    <filename>local.conf</filename> file instructs the server
+                    to be unloaded after 20 seconds of inactivity:
+                    <literallayout class='monospaced'>
+     BB_SERVER_TIMEOUT = "20"
+                    </literallayout>
+                    If you want the server to never be unloaded, set
+                    <filename>BB_SERVER_TIMEOUT</filename> to "-1".
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BBCLASSEXTEND'><glossterm>BBCLASSEXTEND</glossterm>
+            <info>
+                BBCLASSEXTEND[doc] = "Allows you to extend a recipe so that it builds variants of the software. Common variants for recipes are 'native', 'cross', 'nativesdk', and multilibs."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Allows you to extend a recipe so that it builds variants of the software.
+                    Common variants for recipes exist such as "natives" like <filename>quilt-native</filename>,
+                    which is a copy of Quilt built to run on the build system;
+                    "crosses" such as <filename>gcc-cross</filename>,
+                    which is a compiler built to run on the build machine but produces binaries
+                    that run on the target <link linkend='var-MACHINE'><filename>MACHINE</filename></link>;
+                    "nativesdk", which targets the SDK machine instead of <filename>MACHINE</filename>;
+                    and "mulitlibs" in the form "<filename>multilib:</filename><replaceable>multilib_name</replaceable>".
+                </para>
+
+                <para>
+                    To build a different variant of the recipe with a minimal amount of code, it usually
+                    is as simple as adding the following to your recipe:
+                    <literallayout class='monospaced'>
+     BBCLASSEXTEND =+ "native nativesdk"
+     BBCLASSEXTEND =+ "multilib:<replaceable>multilib_name</replaceable>"
+                    </literallayout>
+                    <note>
+                        <para>
+                        Internally, the <filename>BBCLASSEXTEND</filename>
+                        mechanism generates recipe variants by rewriting
+                        variable values and applying overrides such as
+                        <filename>_class-native</filename>.
+                        For example, to generate a native version of a recipe,
+                        a
+                        <link linkend='var-DEPENDS'><filename>DEPENDS</filename></link>
+                        on "foo" is rewritten to a <filename>DEPENDS</filename>
+                        on "foo-native".
+                        </para>
+
+                        <para>
+                        Even when using <filename>BBCLASSEXTEND</filename>, the
+                        recipe is only parsed once.
+                        Parsing once adds some limitations.
+                        For example, it is not possible to
+                        include a different file depending on the variant,
+                        since <filename>include</filename> statements are
+                        processed when the recipe is parsed.
+                        </para>
+                    </note>
+                </para>
+             </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BBFILE_COLLECTIONS'><glossterm>BBFILE_COLLECTIONS</glossterm>
+            <info>
+                BBFILE_COLLECTIONS[doc] = "Lists the names of configured layers. These names are used to find the other BBFILE_* variables."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Lists the names of configured layers.
+                    These names are used to find the other <filename>BBFILE_*</filename>
+                    variables.
+                    Typically, each layer will append its name to this variable in its
+                    <filename>conf/layer.conf</filename> file.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BBFILE_PATTERN'><glossterm>BBFILE_PATTERN</glossterm>
+            <info>
+                BBFILE_PATTERN[doc] = "Variable that expands to match files from BBFILES in a particular layer. This variable is used in the layer.conf file and must be suffixed with the name of a layer."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Variable that expands to match files from
+                    <link linkend='var-BBFILES'><filename>BBFILES</filename></link>
+                    in a particular layer.
+                    This variable is used in the <filename>conf/layer.conf</filename> file and must
+                    be suffixed with the name of the specific layer (e.g.
+                    <filename>BBFILE_PATTERN_emenlow</filename>).
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BBFILE_PRIORITY'><glossterm>BBFILE_PRIORITY</glossterm>
+            <info>
+                BBFILE_PRIORITY[doc] = "Assigns the priority for recipe files in each layer. Setting this variable allows you to prioritize a layer against other layers that contain the same recipe."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Assigns the priority for recipe files in each layer.
+                </para>
+
+                <para>
+                    This variable is useful in situations where the same recipe appears in
+                    more than one layer.
+                    Setting this variable allows you to prioritize a
+                    layer against other layers that contain the same recipe - effectively
+                    letting you control the precedence for the multiple layers.
+                    The precedence established through this variable stands regardless of a
+                    recipe's version
+                    (<link linkend='var-PV'><filename>PV</filename></link> variable).
+                    For example, a layer that has a recipe with a higher <filename>PV</filename> value but for
+                    which the <filename>BBFILE_PRIORITY</filename> is set to have a lower precedence still has a
+                    lower precedence.
+                </para>
+
+                <para>
+                    A larger value for the <filename>BBFILE_PRIORITY</filename> variable results in a higher
+                    precedence.
+                    For example, the value 6 has a higher precedence than the value 5.
+                    If not specified, the <filename>BBFILE_PRIORITY</filename> variable is set based on layer
+                    dependencies (see the
+                    <filename><link linkend='var-LAYERDEPENDS'>LAYERDEPENDS</link></filename> variable for
+                    more information.
+                    The default priority, if unspecified
+                    for a layer with no dependencies, is the lowest defined priority + 1
+                    (or 1 if no priorities are defined).
+                </para>
+                <tip>
+                    You can use the command <filename>bitbake-layers show-layers</filename> to list
+                    all configured layers along with their priorities.
+                </tip>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BBFILES'><glossterm>BBFILES</glossterm>
+            <info>
+                BBFILES[doc] = "A space-separated list of recipe files BitBake uses to build software."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A space-separated list of recipe files BitBake uses to
+                    build software.
+                </para>
+
+                <para>
+                    When specifying recipe files, you can pattern match using
+                    Python's
+                    <ulink url='https://docs.python.org/3/library/glob.html'><filename>glob</filename></ulink>
+                    syntax.
+                    For details on the syntax, see the documentation by
+                    following the previous link.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BBFILES_DYNAMIC'><glossterm>BBFILES_DYNAMIC</glossterm>
+            <info>
+                BBFILES_DYNAMIC[doc] = "Activates content when identified layers are present."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Activates content when identified layers are present.
+                    You identify the layers by the collections that the layers
+                    define.
+                </para>
+
+                <para>
+                    Use the <filename>BBFILES_DYNAMIC</filename> variable to
+                    avoid <filename>.bbappend</filename> files whose
+                    corresponding <filename>.bb</filename> file is in a layer
+                    that attempts to modify other layers through
+                    <filename>.bbappend</filename> but does not want to
+                    introduce a hard dependency on those other layers.
+                </para>
+
+                <para>
+                    Use the following form for
+                    <filename>BBFILES_DYNAMIC</filename>:
+                    <literallayout class='monospaced'>
+     <replaceable>collection_name</replaceable>:<replaceable>filename_pattern</replaceable>
+                    </literallayout>
+                    The following example identifies two collection names and
+                    two filename patterns:
+                    <literallayout class='monospaced'>
+     BBFILES_DYNAMIC += " \
+         clang-layer:${LAYERDIR}/bbappends/meta-clang/*/*/*.bbappend \
+         core:${LAYERDIR}/bbappends/openembedded-core/meta/*/*/*.bbappend \
+     "
+                    </literallayout>
+                    This next example shows an error message that occurs
+                    because invalid entries are found, which cause parsing to
+                    abort:
+                    <literallayout class='monospaced'>
+     ERROR: BBFILES_DYNAMIC entries must be of the form &lt;collection name&gt;:&lt;filename pattern&gt;, not:
+         /work/my-layer/bbappends/meta-security-isafw/*/*/*.bbappend
+         /work/my-layer/bbappends/openembedded-core/meta/*/*/*.bbappend
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BBINCLUDELOGS'><glossterm>BBINCLUDELOGS</glossterm>
+            <info>
+                BBINCLUDELOGS[doc] = "Variable that controls how BitBake displays logs on build failure."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Variable that controls how BitBake displays logs on build failure.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BBINCLUDELOGS_LINES'><glossterm>BBINCLUDELOGS_LINES</glossterm>
+            <info>
+                BBINCLUDELOGS_LINES[doc] = "Amount of log lines printed on failure."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    If
+                    <link linkend='var-BBINCLUDELOGS'><filename>BBINCLUDELOGS</filename></link>
+                    is set, specifies the maximum number of lines from the
+                    task log file to print when reporting a failed task.
+                    If you do not set <filename>BBINCLUDELOGS_LINES</filename>,
+                    the entire log is printed.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BBLAYERS'><glossterm>BBLAYERS</glossterm>
+            <info>
+                BBLAYERS[doc] = "Lists the layers to enable during the build. This variable is defined in the bblayers.conf configuration file."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Lists the layers to enable during the build.
+                    This variable is defined in the <filename>bblayers.conf</filename> configuration
+                    file in the
+                    <link linkend='build-directory'>Build Directory</link>.
+                    Here is an example:
+                    <literallayout class='monospaced'>
+     BBLAYERS = " \
+       /home/scottrif/poky/meta \
+       /home/scottrif/poky/meta-poky \
+       /home/scottrif/poky/meta-yocto-bsp \
+       /home/scottrif/poky/meta-mykernel \
+       "
+                    </literallayout>
+                </para>
+
+                <para>
+                    This example enables four layers, one of which is a custom, user-defined layer
+                    named <filename>meta-mykernel</filename>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BBMASK'><glossterm>BBMASK</glossterm>
+            <info>
+                BBMASK[doc] = "Prevents BitBake from processing specific recipes or recipe append files."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Prevents BitBake from processing recipes and recipe
+                    append files.
+                </para>
+
+                <para>
+                    You can use the <filename>BBMASK</filename> variable
+                    to "hide" these <filename>.bb</filename> and
+                    <filename>.bbappend</filename> files.
+                    BitBake ignores any recipe or recipe append files that
+                    match any of the expressions.
+                    It is as if BitBake does not see them at all.
+                    Consequently, matching files are not parsed or otherwise
+                    used by BitBake.
+                </para>
+
+                <para>
+                    The values you provide are passed to Python's regular
+                    expression compiler.
+                    Consequently, the syntax follows Python's Regular
+                    Expression (re) syntax.
+                    The expressions are compared against the full paths to
+                    the files.
+                    For complete syntax information, see Python's
+                    documentation at
+                    <ulink url='http://docs.python.org/3/library/re.html#re'></ulink>.
+                </para>
+
+                <para>
+                    The following example uses a complete regular expression
+                    to tell BitBake to ignore all recipe and recipe append
+                    files in the <filename>meta-ti/recipes-misc/</filename>
+                    directory:
+                    <literallayout class='monospaced'>
+     BBMASK = "meta-ti/recipes-misc/"
+                    </literallayout>
+                    If you want to mask out multiple directories or recipes,
+                    you can specify multiple regular expression fragments.
+                    This next example masks out multiple directories and
+                    individual recipes:
+                    <literallayout class='monospaced'>
+     BBMASK += "/meta-ti/recipes-misc/ meta-ti/recipes-ti/packagegroup/"
+     BBMASK += "/meta-oe/recipes-support/"
+     BBMASK += "/meta-foo/.*/openldap"
+     BBMASK += "opencv.*\.bbappend"
+     BBMASK += "lzma"
+                    </literallayout>
+                    <note>
+                        When specifying a directory name, use the trailing
+                        slash character to ensure you match just that directory
+                        name.
+                    </note>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BBMULTICONFIG'><glossterm>BBMULTICONFIG</glossterm>
+            <info>
+                BBMULTICONFIG[doc] = "Specifies each additional separate configuration when you are building targets with multiple configurations."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies each additional separate configuration when you
+                    are building targets with multiple configurations.
+                    Use this variable in your
+                    <filename>conf/local.conf</filename> configuration file.
+                    Specify a <replaceable>multiconfigname</replaceable> for
+                    each configuration file you are using.
+                    For example, the following line specifies three
+                    configuration files:
+                    <literallayout class='monospaced'>
+     BBMULTICONFIG = "configA configB configC"
+                    </literallayout>
+                    Each configuration file you use must reside in the
+                    <link linkend='build-directory'>Build Directory</link>
+                    <filename>conf/multiconfig</filename> directory
+                    (e.g.
+                    <replaceable>build_directory</replaceable><filename>/conf/multiconfig/configA.conf</filename>).
+                </para>
+
+                <para>
+                    For information on how to use
+                    <filename>BBMULTICONFIG</filename> in an environment that
+                    supports building targets with multiple configurations,
+                    see the
+                    "<ulink url='&YOCTO_DOCS_DEV_URL;#dev-building-images-for-multiple-targets-using-multiple-configurations'>Building Images for Multiple Targets Using Multiple Configurations</ulink>"
+                    section in the Yocto Project Development Tasks Manual.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BBPATH'><glossterm>BBPATH</glossterm>
+            <info>
+                BBPATH[doc] = "Used by BitBake to locate .bbclass and configuration files. This variable is analogous to the PATH variable."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Used by BitBake to locate
+                    <filename>.bbclass</filename> and configuration files.
+                    This variable is analogous to the
+                    <filename>PATH</filename> variable.
+                    <note>
+                        If you run BitBake from a directory outside of the
+                        <link linkend='build-directory'>Build Directory</link>,
+                        you must be sure to set
+                        <filename>BBPATH</filename> to point to the
+                        Build Directory.
+                        Set the variable as you would any environment variable
+                        and then run BitBake:
+                        <literallayout class='monospaced'>
+     $ BBPATH = "<replaceable>build_directory</replaceable>"
+     $ export BBPATH
+     $ bitbake <replaceable>target</replaceable>
+                        </literallayout>
+                    </note>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BBSERVER'><glossterm>BBSERVER</glossterm>
+            <info>
+                BBSERVER[doc] = "Points to the BitBake remote server."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    If defined in the BitBake environment,
+                    <filename>BBSERVER</filename> points to the BitBake
+                    remote server.
+                </para>
+
+                <para>
+                    Use the following format to export the variable to the
+                    BitBake environment:
+                    <literallayout class='monospaced'>
+     export BBSERVER=localhost:$port
+                    </literallayout>
+                </para>
+
+                <para>
+                    By default, <filename>BBSERVER</filename> also appears in
+                    <ulink url='&YOCTO_DOCS_BB_URL;#var-BB_HASHBASE_WHITELIST'><filename>BB_HASHBASE_WHITELIST</filename></ulink>.
+                    Consequently, <filename>BBSERVER</filename> is excluded
+                    from checksum and dependency data.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BINCONFIG'><glossterm>BINCONFIG</glossterm>
+            <info>
+                BINCONFIG[doc] = "When inheriting the binconfig-disabled class, this variable specifies binary configuration scripts to disable in favor of using pkg-config to query the information."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When inheriting the
+                    <link linkend='ref-classes-binconfig-disabled'><filename>binconfig-disabled</filename></link>
+                    class, this variable specifies binary configuration
+                    scripts to disable in favor of using
+                    <filename>pkg-config</filename> to query the information.
+                    The <filename>binconfig-disabled</filename> class will
+                    modify the specified scripts to return an error so that
+                    calls to them can be easily found and replaced.
+                </para>
+
+                <para>
+                    To add multiple scripts, separate them by spaces.
+                    Here is an example from the <filename>libpng</filename>
+                    recipe:
+                    <literallayout class='monospaced'>
+     BINCONFIG = "${bindir}/libpng-config ${bindir}/libpng16-config"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BINCONFIG_GLOB'><glossterm>BINCONFIG_GLOB</glossterm>
+            <info>
+                BINCONFIG_GLOB[doc] = "When inheriting binconfig.bbclass from a recipe, this variable specifies a wildcard for configuration scripts that need editing."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When inheriting the
+                    <link linkend='ref-classes-binconfig'><filename>binconfig</filename></link>
+                    class, this variable specifies a wildcard for
+                    configuration scripts that need editing.
+                    The scripts are edited to correct any paths that have been
+                    set up during compilation so that they are correct for
+                    use when installed into the sysroot and called by the
+                    build processes of other recipes.
+                    <note>
+                        The <filename>BINCONFIG_GLOB</filename> variable
+                        uses
+                        <ulink url='http://tldp.org/LDP/abs/html/globbingref.html'>shell globbing</ulink>,
+                        which is recognition and expansion of wildcards during
+                        pattern matching.
+                        Shell globbing is very similar to
+                        <ulink url='https://docs.python.org/2/library/fnmatch.html#module-fnmatch'><filename>fnmatch</filename></ulink>
+                        and
+                        <ulink url='https://docs.python.org/2/library/glob.html'><filename>glob</filename></ulink>.
+                    </note>
+                </para>
+
+                <para>
+                    For more information on how this variable works, see
+                    <filename>meta/classes/binconfig.bbclass</filename> in the
+                    <link linkend='source-directory'>Source Directory</link>.
+                    You can also find general information on the class in the
+                    "<link linkend='ref-classes-binconfig'><filename>binconfig.bbclass</filename></link>"
+                    section.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BP'><glossterm>BP</glossterm>
+            <info>
+                BP[doc] = "The base recipe name and version but without any special recipe name suffix (i.e. -native, lib64-, and so forth). BP is comprised of ${BPN}-${PV}"
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The base recipe name and version but without any special
+                    recipe name suffix (i.e. <filename>-native</filename>, <filename>lib64-</filename>,
+                    and so forth).
+                    <filename>BP</filename> is comprised of the following:
+                    <literallayout class="monospaced">
+     ${BPN}-${PV}
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BPN'><glossterm>BPN</glossterm>
+            <info>
+                BPN[doc] = "This variable is a version of the PN variable but removes common suffixes and prefixes."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    This variable is a version of the
+                    <link linkend='var-PN'><filename>PN</filename></link>
+                    variable with common prefixes and suffixes
+                    removed, such as <filename>nativesdk-</filename>,
+                    <filename>-cross</filename>,
+                    <filename>-native</filename>, and multilib's
+                    <filename>lib64-</filename> and
+                    <filename>lib32-</filename>.
+                    The exact lists of prefixes and suffixes removed are
+                    specified by the
+                    <link linkend='var-MLPREFIX'><filename>MLPREFIX</filename></link>
+                    and
+                    <link linkend='var-SPECIAL_PKGSUFFIX'><filename>SPECIAL_PKGSUFFIX</filename></link>
+                    variables, respectively.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BUGTRACKER'><glossterm>BUGTRACKER</glossterm>
+            <info>
+                BUGTRACKER[doc] = "Specifies a URL for an upstream bug tracking website for a recipe."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies a URL for an upstream bug tracking website for
+                    a recipe.
+                    The OpenEmbedded build system does not use this variable.
+                    Rather, the variable is a useful pointer in case a bug
+                    in the software being built needs to be manually reported.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BUILD_ARCH'><glossterm>BUILD_ARCH</glossterm>
+            <info>
+                BUILD_ARCH[doc] = "The name of the building architecture (e.g. i686)."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the architecture of the build host
+                    (e.g. <filename>i686</filename>).
+                    The OpenEmbedded build system sets the value of
+                    <filename>BUILD_ARCH</filename> from the machine name
+                    reported by the <filename>uname</filename> command.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BUILD_AS_ARCH'><glossterm>BUILD_AS_ARCH</glossterm>
+            <info>
+                BUILD_AS_ARCH[doc] = "Specifies the architecture-specific assembler flags for the build host."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the architecture-specific assembler flags for
+                    the build host. By default, the value of
+                    <filename>BUILD_AS_ARCH</filename> is empty.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BUILD_CC_ARCH'><glossterm>BUILD_CC_ARCH</glossterm>
+            <info>
+                BUILD_CC_ARCH[doc] = "Specifies the architecture-specific C compiler flags for the build host."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the architecture-specific C compiler flags for
+                    the build host. By default, the value of
+                    <filename>BUILD_CC_ARCH</filename> is empty.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BUILD_CCLD'><glossterm>BUILD_CCLD</glossterm>
+            <info>
+                BUILD_CCLD[doc] = "Specifies the linker command to be used for the build host when the C compiler is being used as the linker."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the linker command to be used for the build host
+                    when the C compiler is being used as the linker. By default,
+                    <filename>BUILD_CCLD</filename> points to GCC and passes as
+                    arguments the value of
+                    <link linkend='var-BUILD_CC_ARCH'><filename>BUILD_CC_ARCH</filename></link>,
+                    assuming <filename>BUILD_CC_ARCH</filename> is set.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BUILD_CFLAGS'><glossterm>BUILD_CFLAGS</glossterm>
+            <info>
+                BUILD_CFLAGS[doc] = "Specifies the flags to pass to the C compiler when building for the build host."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the flags to pass to the C compiler when building
+                    for the build host.
+                    When building in the <filename>-native</filename> context,
+                    <link linkend='var-CFLAGS'><filename>CFLAGS</filename></link>
+                    is set to the value of this variable by default.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BUILD_CPPFLAGS'><glossterm>BUILD_CPPFLAGS</glossterm>
+            <info>
+                BUILD_CPPFLAGS[doc] = "Specifies the flags to pass to the C preprocessor (i.e. to both the C and the C++ compilers) when building for the build host."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the flags to pass to the C preprocessor
+                    (i.e. to both the C and the C++ compilers) when building
+                    for the build host.
+                    When building in the <filename>-native</filename> context,
+                    <link linkend='var-CPPFLAGS'><filename>CPPFLAGS</filename></link>
+                    is set to the value of this variable by default.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BUILD_CXXFLAGS'><glossterm>BUILD_CXXFLAGS</glossterm>
+            <info>
+                BUILD_CXXFLAGS[doc] = "Specifies the flags to pass to the C++ compiler when building for the build host."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the flags to pass to the C++ compiler when
+                    building for the build host.
+                    When building in the <filename>-native</filename> context,
+                    <link linkend='var-CXXFLAGS'><filename>CXXFLAGS</filename></link>
+                    is set to the value of this variable by default.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BUILD_FC'><glossterm>BUILD_FC</glossterm>
+            <info>
+                BUILD_FC[doc] = "Specifies the Fortran compiler command for the build host."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the Fortran compiler command for the build host.
+                    By default, <filename>BUILD_FC</filename> points to
+                    Gfortran and passes as arguments the value of
+                    <link linkend='var-BUILD_CC_ARCH'><filename>BUILD_CC_ARCH</filename></link>,
+                    assuming <filename>BUILD_CC_ARCH</filename> is set.
+               </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BUILD_LD'><glossterm>BUILD_LD</glossterm>
+            <info>
+                BUILD_LD[doc] = "Specifies the linker command for the build host."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the linker command for the build host. By default,
+                    <filename>BUILD_LD</filename> points to the GNU linker (ld)
+                    and passes as arguments the value of
+                    <link linkend='var-BUILD_LD_ARCH'><filename>BUILD_LD_ARCH</filename></link>,
+                    assuming <filename>BUILD_LD_ARCH</filename> is set.
+               </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BUILD_LD_ARCH'><glossterm>BUILD_LD_ARCH</glossterm>
+            <info>
+                BUILD_LD_ARCH[doc] = "Specifies architecture-specific linker flags for the build."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies architecture-specific linker flags for the build
+                    host. By default, the value of
+                    <filename>BUILD_LD_ARCH</filename> is empty.
+               </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BUILD_LDFLAGS'><glossterm>BUILD_LDFLAGS</glossterm>
+            <info>
+                BUILD_LDFLAGS[doc] = "Specifies the flags to pass to the linker when building for the build host."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the flags to pass to the linker when building
+                    for the build host.
+                    When building in the <filename>-native</filename> context,
+                    <link linkend='var-LDFLAGS'><filename>LDFLAGS</filename></link>
+                    is set to the value of this variable by default.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BUILD_OPTIMIZATION'><glossterm>BUILD_OPTIMIZATION</glossterm>
+            <info>
+                BUILD_OPTIMIZATION[doc] = "Specifies the optimization flags passed to the C compiler when building for the build host or the SDK."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the optimization flags passed to the C compiler
+                    when building for the build host or the SDK.
+                    The flags are passed through the
+                    <link linkend='var-BUILD_CFLAGS'><filename>BUILD_CFLAGS</filename></link>
+                    and
+                    <link linkend='var-BUILDSDK_CFLAGS'><filename>BUILDSDK_CFLAGS</filename></link>
+                    default values.
+                </para>
+
+                <para>
+                    The default value of the
+                    <filename>BUILD_OPTIMIZATION</filename> variable is
+                    "-O2 -pipe".
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BUILD_OS'><glossterm>BUILD_OS</glossterm>
+            <info>
+                BUILD_OS[doc] = "The operating system (in lower case) of the building architecture (e.g. Linux)."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the operating system in use on the build
+                    host (e.g. "linux").
+                    The OpenEmbedded build system sets the value of
+                    <filename>BUILD_OS</filename> from the OS reported by
+                    the <filename>uname</filename> command - the first word,
+                    converted to lower-case characters.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BUILD_PREFIX'><glossterm>BUILD_PREFIX</glossterm>
+            <info>
+                BUILD_PREFIX[doc] = "The toolchain binary prefix used for native recipes."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The toolchain binary prefix used for native recipes.
+                    The OpenEmbedded build system uses the
+                    <filename>BUILD_PREFIX</filename> value to set the
+                    <link linkend='var-TARGET_PREFIX'><filename>TARGET_PREFIX</filename></link>
+                    when building for <filename>native</filename> recipes.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BUILD_STRIP'><glossterm>BUILD_STRIP</glossterm>
+            <info>
+                BUILD_STRIP[doc] = "Specifies the command to be used to strip debugging symbols from binaries produced for the build host."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the command to be used to strip debugging symbols
+                    from binaries produced for the build host. By default,
+                    <filename>BUILD_STRIP</filename> points to
+                    <filename>${</filename><link linkend='var-BUILD_PREFIX'><filename>BUILD_PREFIX</filename></link><filename>}strip</filename>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BUILD_SYS'><glossterm>BUILD_SYS</glossterm>
+            <info>
+                BUILD_SYS[doc] = "The toolchain binary prefix used for native recipes."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the system, including the architecture and
+                    the operating system, to use when building for the build
+                    host (i.e. when building <filename>native</filename>
+                    recipes).
+                </para>
+
+                <para>
+                    The OpenEmbedded build system automatically sets this
+                    variable based on
+                    <link linkend='var-BUILD_ARCH'><filename>BUILD_ARCH</filename></link>,
+                    <link linkend='var-BUILD_VENDOR'><filename>BUILD_VENDOR</filename></link>,
+                    and
+                    <link linkend='var-BUILD_OS'><filename>BUILD_OS</filename></link>.
+                    You do not need to set the <filename>BUILD_SYS</filename>
+                    variable yourself.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BUILD_VENDOR'><glossterm>BUILD_VENDOR</glossterm>
+            <info>
+         BUILD_VENDOR[doc] = "The vendor name to use when building for the build host."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the vendor name to use when building for the
+                    build host.
+                    The default value is an empty string ("").
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BUILDDIR'><glossterm>BUILDDIR</glossterm>
+            <info>
+                BUILDDIR[doc] = "Points to the location of the Build Directory."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Points to the location of the
+                    <link linkend='build-directory'>Build Directory</link>.
+                    You can define this directory indirectly through the
+                    <link linkend='structure-core-script'><filename>&OE_INIT_FILE;</filename></link>
+                    script by passing in a Build Directory path when you run
+                    the script.
+                    If you run the script and do not provide a Build Directory
+                    path, the <filename>BUILDDIR</filename> defaults to
+                    <filename>build</filename> in the current directory.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BUILDHISTORY_COMMIT'><glossterm>BUILDHISTORY_COMMIT</glossterm>
+            <info>
+                BUILDHISTORY_COMMIT[doc] = "When inheriting the buildhistory class, this variable specifies whether or not to commit the build history output in a local Git repository."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When inheriting the
+                    <link linkend='ref-classes-buildhistory'><filename>buildhistory</filename></link>
+                    class, this variable specifies whether or not to commit the
+                    build history output in a local Git repository.
+                    If set to "1", this local repository will be maintained
+                    automatically by the
+                    <filename>buildhistory</filename>
+                    class and a commit will be created on every
+                    build for changes to each top-level subdirectory of the
+                    build history output (images, packages, and sdk).
+                    If you want to track changes to build history over
+                    time, you should set this value to "1".
+                </para>
+
+                <para>
+                    By default, the <filename>buildhistory</filename> class
+                    does not commit the build history output in a local
+                    Git repository:
+                    <literallayout class='monospaced'>
+     BUILDHISTORY_COMMIT ?= "0"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BUILDHISTORY_COMMIT_AUTHOR'><glossterm>BUILDHISTORY_COMMIT_AUTHOR</glossterm>
+            <info>
+                BUILDHISTORY_COMMIT_AUTHOR[doc] = "When inheriting the buildhistory class, this variable specifies the author to use for each Git commit."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When inheriting the
+                    <link linkend='ref-classes-buildhistory'><filename>buildhistory</filename></link>
+                    class, this variable specifies the author to use for each
+                    Git commit.
+                    In order for the <filename>BUILDHISTORY_COMMIT_AUTHOR</filename>
+                    variable to work, the
+                    <link linkend='var-BUILDHISTORY_COMMIT'><filename>BUILDHISTORY_COMMIT</filename></link>
+                    variable must be set to "1".
+                </para>
+
+                <para>
+                    Git requires that the value you provide for the
+                    <filename>BUILDHISTORY_COMMIT_AUTHOR</filename> variable
+                    takes the form of "name <replaceable>email@host</replaceable>".
+                    Providing an email address or host that is not valid does
+                    not produce an error.
+                </para>
+
+                <para>
+                    By default, the <filename>buildhistory</filename> class
+                    sets the variable as follows:
+                    <literallayout class='monospaced'>
+     BUILDHISTORY_COMMIT_AUTHOR ?= "buildhistory &lt;buildhistory@${DISTRO}&gt;"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BUILDHISTORY_DIR'><glossterm>BUILDHISTORY_DIR</glossterm>
+            <info>
+                BUILDHISTORY_DIR[doc] = "When inheriting the buildhistory class, this variable specifies the directory in which build history information is kept."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When inheriting the
+                    <link linkend='ref-classes-buildhistory'><filename>buildhistory</filename></link>
+                    class, this variable specifies the directory in which
+                    build history information is kept.
+                    For more information on how the variable works, see the
+                    <filename>buildhistory.class</filename>.
+                </para>
+
+                <para>
+                    By default, the <filename>buildhistory</filename> class
+                    sets the directory as follows:
+                    <literallayout class='monospaced'>
+     BUILDHISTORY_DIR ?= "${TOPDIR}/buildhistory"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BUILDHISTORY_FEATURES'><glossterm>BUILDHISTORY_FEATURES</glossterm>
+            <info>
+                BUILDHISTORY_FEATURES[doc] = "When inheriting the buildhistory class, this variable specifies the build history features to be enabled."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When inheriting the
+                    <link linkend='ref-classes-buildhistory'><filename>buildhistory</filename></link>
+                    class, this variable specifies the build history features
+                    to be enabled.
+                    For more information on how build history works, see the
+                    "<ulink url='&YOCTO_DOCS_DEV_URL;#maintaining-build-output-quality'>Maintaining Build Output Quality</ulink>"
+                    section in the Yocto Project Development Tasks Manual.
+                </para>
+
+                <para>
+                    You can specify these features in the form of a
+                    space-separated list:
+                    <itemizedlist>
+                        <listitem><para><emphasis>image:</emphasis>
+                            Analysis of the contents of images, which
+                            includes the list of installed packages among other
+                            things.
+                            </para></listitem>
+                        <listitem><para><emphasis>package:</emphasis>
+                            Analysis of the contents of individual packages.
+                            </para></listitem>
+                        <listitem><para><emphasis>sdk:</emphasis>
+                            Analysis of the contents of the software
+                            development kit (SDK).
+                            </para></listitem>
+                        <listitem><para><emphasis>task:</emphasis>
+                            Save output file signatures for
+                            <ulink url='&YOCTO_DOCS_OM_URL;#shared-state-cache'>shared state</ulink>
+                            (sstate) tasks.
+                            This saves one file per task and lists the SHA-256
+                            checksums for each file staged (i.e. the output of
+                            the task).
+                            </para></listitem>
+                    </itemizedlist>
+                </para>
+
+                <para>
+                    By default, the <filename>buildhistory</filename> class
+                    enables the following features:
+                    <literallayout class='monospaced'>
+     BUILDHISTORY_FEATURES ?= "image package sdk"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BUILDHISTORY_IMAGE_FILES'><glossterm>BUILDHISTORY_IMAGE_FILES</glossterm>
+            <info>
+                BUILDHISTORY_IMAGE_FILES[doc] = "When inheriting the buildhistory class, this variable specifies a list of paths to files copied from the image contents into the build history directory under an "image-files" directory in the directory for the image, so that you can track the contents of each file."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When inheriting the
+                    <link linkend='ref-classes-buildhistory'><filename>buildhistory</filename></link>
+                    class, this variable specifies a list of paths to files
+                    copied from the
+                    image contents into the build history directory under
+                    an "image-files" directory in the directory for
+                    the image, so that you can track the contents of each file.
+                    The default is to copy <filename>/etc/passwd</filename>
+                    and <filename>/etc/group</filename>, which allows you to
+                    monitor for changes in user and group entries.
+                    You can modify the list to include any file.
+                    Specifying an invalid path does not produce an error.
+                    Consequently, you can include files that might
+                    not always be present.
+                </para>
+
+                <para>
+                    By default, the <filename>buildhistory</filename> class
+                    provides paths to the following files:
+                    <literallayout class='monospaced'>
+     BUILDHISTORY_IMAGE_FILES ?= "/etc/passwd /etc/group"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BUILDHISTORY_PUSH_REPO'><glossterm>BUILDHISTORY_PUSH_REPO</glossterm>
+            <info>
+                BUILDHISTORY_PUSH_REPO[doc] = "When inheriting the buildhistory class, this variable optionally specifies a remote repository to which build history pushes Git changes."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When inheriting the
+                    <link linkend='ref-classes-buildhistory'><filename>buildhistory</filename></link>
+                    class, this variable optionally specifies a remote
+                    repository to which build history pushes Git changes.
+                    In order for <filename>BUILDHISTORY_PUSH_REPO</filename>
+                    to work,
+                    <link linkend='var-BUILDHISTORY_COMMIT'><filename>BUILDHISTORY_COMMIT</filename></link>
+                    must be set to "1".
+                </para>
+
+                <para>
+                    The repository should correspond to a remote
+                    address that specifies a repository as understood by
+                    Git, or alternatively to a remote name that you have
+                    set up manually using <filename>git remote</filename>
+                    within the local repository.
+                </para>
+
+                <para>
+                    By default, the <filename>buildhistory</filename> class
+                    sets the variable as follows:
+                    <literallayout class='monospaced'>
+     BUILDHISTORY_PUSH_REPO ?= ""
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BUILDSDK_CFLAGS'><glossterm>BUILDSDK_CFLAGS</glossterm>
+            <info>
+                BUILDSDK_CFLAGS[doc] = "Specifies the flags to pass to the C compiler when building for the SDK."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the flags to pass to the C compiler when building
+                    for the SDK.
+                    When building in the <filename>nativesdk-</filename>
+                    context,
+                    <link linkend='var-CFLAGS'><filename>CFLAGS</filename></link>
+                    is set to the value of this variable by default.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BUILDSDK_CPPFLAGS'><glossterm>BUILDSDK_CPPFLAGS</glossterm>
+            <info>
+                BUILDSDK_CPPFLAGS[doc] = "Specifies the flags to pass to the C pre-processor (i.e. to both the C and the C++ compilers) when building for the SDK."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the flags to pass to the C pre-processor
+                    (i.e. to both the C and the C++ compilers) when building
+                    for the SDK.
+                    When building in the <filename>nativesdk-</filename>
+                    context,
+                    <link linkend='var-CPPFLAGS'><filename>CPPFLAGS</filename></link>
+                    is set to the value of this variable by default.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BUILDSDK_CXXFLAGS'><glossterm>BUILDSDK_CXXFLAGS</glossterm>
+            <info>
+                BUILDSDK_CXXFLAGS[doc] = "Specifies the flags to pass to the C++ compiler when building for the SDK."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the flags to pass to the C++ compiler when
+                    building for the SDK.
+                    When building in the <filename>nativesdk-</filename>
+                    context,
+                    <link linkend='var-CXXFLAGS'><filename>CXXFLAGS</filename></link>
+                    is set to the value of this variable by default.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BUILDSDK_LDFLAGS'><glossterm>BUILDSDK_LDFLAGS</glossterm>
+            <info>
+                BUILDSDK_LDFLAGS[doc] = "Specifies the flags to pass to the linker when building for the SDK."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the flags to pass to the linker when building
+                    for the SDK.
+                    When building in the <filename>nativesdk-</filename>
+                    context,
+                    <link linkend='var-LDFLAGS'><filename>LDFLAGS</filename></link>
+                    is set to the value of this variable by default.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BUILDSTATS_BASE'><glossterm>BUILDSTATS_BASE</glossterm>
+            <info>
+                BUILDSTATS_BASE[doc] = "Points to the location of the directory that holds build statistics when you use and enable the buildstats class."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Points to the location of the directory that holds build
+                    statistics when you use and enable the
+                    <link linkend='ref-classes-buildstats'><filename>buildstats</filename></link>
+                    class.
+                    The <filename>BUILDSTATS_BASE</filename> directory defaults
+                    to
+                    <filename>${</filename><link linkend='var-TMPDIR'><filename>TMPDIR</filename></link><filename>}/buildstats/</filename>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-BUSYBOX_SPLIT_SUID'><glossterm>BUSYBOX_SPLIT_SUID</glossterm>
+            <info>
+                BUSYBOX_SPLIT_SUID[doc] = "For the BusyBox recipe, specifies whether to split the output executable file into two parts: one for features that require setuid root, and one for the remaining features."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    For the BusyBox recipe, specifies whether to split the
+                    output executable file into two parts: one for features
+                    that require <filename>setuid root</filename>, and one for
+                    the remaining features (i.e. those that do not require
+                    <filename>setuid root</filename>).
+                </para>
+
+                <para>
+                    The <filename>BUSYBOX_SPLIT_SUID</filename> variable
+                    defaults to "1", which results in splitting the output
+                    executable file.
+                    Set the variable to "0" to get a single output executable
+                    file.
+                </para>
+            </glossdef>
+        </glossentry>
+
+    </glossdiv>
+
+    <glossdiv id='var-glossary-c'><title>C</title>
+
+        <glossentry id='var-CACHE'><glossterm>CACHE</glossterm>
+            <info>
+                CACHE[doc]  = "The directory BitBake uses to store a cache of the metadata."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the directory BitBake uses to store a cache
+                    of the
+                    <link linkend='metadata'>Metadata</link>
+                    so it does not need to be parsed every time BitBake is
+                    started.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-CC'><glossterm>CC</glossterm>
+            <info>
+                CC[doc] = "Minimum command and arguments to run the C compiler."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The minimal command and arguments used to run the C
+                    compiler.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-CFLAGS'><glossterm>CFLAGS</glossterm>
+            <info>
+                CFLAGS[doc] = "Flags passed to the C compiler for the target system. This variable evaluates to the same as TARGET_CFLAGS."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the flags to pass to the C compiler.
+                    This variable is exported to an environment
+                    variable and thus made visible to the software being
+                    built during the compilation step.
+                </para>
+
+                <para>
+                    Default initialization for <filename>CFLAGS</filename>
+                    varies depending on what is being built:
+                    <itemizedlist>
+                        <listitem><para>
+                            <link linkend='var-TARGET_CFLAGS'><filename>TARGET_CFLAGS</filename></link>
+                            when building for the target
+                            </para></listitem>
+                        <listitem><para>
+                            <link linkend='var-BUILD_CFLAGS'><filename>BUILD_CFLAGS</filename></link>
+                            when building for the build host (i.e.
+                            <filename>-native</filename>)
+                            </para></listitem>
+                        <listitem><para>
+                            <link linkend='var-BUILDSDK_CFLAGS'><filename>BUILDSDK_CFLAGS</filename></link>
+                            when building for an SDK (i.e.
+                            <filename>nativesdk-</filename>)
+                            </para></listitem>
+                    </itemizedlist>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-CLASSOVERRIDE'><glossterm>CLASSOVERRIDE</glossterm>
+            <info>
+                CLASSOVERRIDE[doc] = "An internal variable specifying the special class override that should currently apply (e.g. "class-target", "class-native", and so forth)."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    An internal variable specifying the special class override
+                    that should currently apply (e.g. "class-target",
+                    "class-native", and so forth).
+                    The classes that use this variable (e.g.
+                    <link linkend='ref-classes-native'><filename>native</filename></link>,
+                    <link linkend='ref-classes-nativesdk'><filename>nativesdk</filename></link>,
+                    and so forth) set the variable to appropriate values.
+                    <note>
+                        <filename>CLASSOVERRIDE</filename> gets its default
+                        "class-target" value from the
+                        <filename>bitbake.conf</filename> file.
+                    </note>
+                </para>
+
+                <para>
+                    As an example, the following override allows you to install
+                    extra files, but only when building for the target:
+                    <literallayout class='monospaced'>
+     do_install_append_class-target() {
+         install my-extra-file ${D}${sysconfdir}
+     }
+                    </literallayout>
+                    Here is an example where <filename>FOO</filename>
+                    is set to "native" when building for the build host, and
+                    to "other" when not building for the build host:
+                    <literallayout class='monospaced'>
+     FOO_class-native = "native"
+     FOO = "other"
+                    </literallayout>
+                    The underlying mechanism behind
+                    <filename>CLASSOVERRIDE</filename> is simply that it is
+                    included in the default value of
+                    <link linkend='var-OVERRIDES'><filename>OVERRIDES</filename></link>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-CLEANBROKEN'><glossterm>CLEANBROKEN</glossterm>
+            <info>
+                CLEANBROKEN[doc] = "Prevents the build system from running 'make clean' during the do_configure task."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    If set to "1" within a recipe,
+                    <filename>CLEANBROKEN</filename> specifies that
+                    the <filename>make clean</filename> command does
+                    not work for the software being built.
+                    Consequently, the OpenEmbedded build system will not try
+                    to run <filename>make clean</filename> during the
+                    <link linkend='ref-tasks-configure'><filename>do_configure</filename></link>
+                    task, which is the default behavior.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-COMBINED_FEATURES'><glossterm>COMBINED_FEATURES</glossterm>
+            <info>
+                COMBINED_FEATURES[doc] = "A set of features common between MACHINE_FEATURES and DISTRO_FEATURES."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Provides a list of hardware features that are enabled in
+                    both
+                    <link linkend='var-MACHINE_FEATURES'><filename>MACHINE_FEATURES</filename></link>
+                    and
+                    <link linkend='var-DISTRO_FEATURES'><filename>DISTRO_FEATURES</filename></link>.
+                    This select list of features contains features that make
+                    sense to be controlled both at the machine and distribution
+                    configuration level.
+                    For example, the "bluetooth" feature requires hardware
+                    support but should also be optional at the distribution
+                    level, in case the hardware supports Bluetooth but you
+                    do not ever intend to use it.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-COMMON_LICENSE_DIR'><glossterm>COMMON_LICENSE_DIR</glossterm>
+            <info>
+                COMMON_LICENSE_DIR[doc] = "Points to meta/files/common-licenses in the Source Directory, which is where generic license files reside."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Points to <filename>meta/files/common-licenses</filename>
+                    in the
+                    <link linkend='source-directory'>Source Directory</link>,
+                    which is where generic license files reside.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-COMPATIBLE_HOST'><glossterm>COMPATIBLE_HOST</glossterm>
+            <info>
+                COMPATIBLE_HOST[doc] = "A regular expression that resolves to one or more hosts (when the recipe is native) or one or more targets (when the recipe is non-native) with which a recipe is compatible."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A regular expression that resolves to one or more hosts
+                    (when the recipe is native) or one or more targets (when
+                    the recipe is non-native) with which a recipe is compatible.
+                    The regular expression is matched against
+                    <link linkend="var-HOST_SYS"><filename>HOST_SYS</filename></link>.
+                    You can use the variable to stop recipes from being built
+                    for classes of systems with which the recipes are not
+                    compatible.
+                    Stopping these builds is particularly useful with kernels.
+                    The variable also helps to increase parsing speed
+                    since the build system skips parsing recipes not
+                    compatible with the current system.
+               </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-COMPATIBLE_MACHINE'><glossterm>COMPATIBLE_MACHINE</glossterm>
+            <info>
+                COMPATIBLE_MACHINE[doc] = "A regular expression that resolves to one or more target machines with which a recipe is compatible."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A regular expression that resolves to one or more
+                    target machines with which a recipe is compatible.
+                    The regular expression is matched against
+                    <link linkend="var-MACHINEOVERRIDES"><filename>MACHINEOVERRIDES</filename></link>.
+                    You can use the variable to stop recipes from being built
+                    for machines with which the recipes are not compatible.
+                    Stopping these builds is particularly useful with kernels.
+                    The variable also helps to increase parsing speed
+                    since the build system skips parsing recipes not
+                    compatible with the current machine.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-COMPLEMENTARY_GLOB'><glossterm>COMPLEMENTARY_GLOB</glossterm>
+            <info>
+                COMPLEMENTARY_GLOB[doc] = "Defines wildcards to match when installing a list of complementary packages for all the packages installed in an image."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Defines wildcards to match when installing a list of
+                    complementary packages for all the packages explicitly
+                    (or implicitly) installed in an image.
+                    <note>
+                        The <filename>COMPLEMENTARY_GLOB</filename> variable
+                        uses Unix filename pattern matching
+                        (<ulink url='https://docs.python.org/2/library/fnmatch.html#module-fnmatch'><filename>fnmatch</filename></ulink>),
+                        which is similar to the Unix style pathname pattern
+                        expansion
+                        (<ulink url='https://docs.python.org/2/library/glob.html'><filename>glob</filename></ulink>).
+                    </note>
+                    The resulting list of complementary packages is associated
+                    with an item that can be added to
+                    <link linkend='var-IMAGE_FEATURES'><filename>IMAGE_FEATURES</filename></link>.
+                    An example usage of this is the "dev-pkgs" item that when
+                    added to <filename>IMAGE_FEATURES</filename> will
+                    install -dev packages (containing headers and other
+                    development files) for every package in the image.
+                </para>
+
+                <para>
+                    To add a new feature item pointing to a wildcard, use a
+                    variable flag to specify the feature item name and
+                    use the value to specify the wildcard.
+                    Here is an example:
+                    <literallayout class='monospaced'>
+     COMPLEMENTARY_GLOB[dev-pkgs] = '*-dev'
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-COMPONENTS_DIR'><glossterm>COMPONENTS_DIR</glossterm>
+            <info>
+                COMPONENTS_DIR[doc] = "Stores sysroot components for each recipe."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Stores sysroot components for each recipe.
+                    The OpenEmbedded build system uses
+                    <filename>COMPONENTS_DIR</filename> when constructing
+                    recipe-specific sysroots for other recipes.
+                </para>
+
+                <para>
+                    The default is
+                    "<filename>${</filename><link linkend='var-STAGING_DIR'><filename>STAGING_DIR</filename></link><filename>}-components</filename>."
+                    (i.e. "<filename>${</filename><link linkend='var-TMPDIR'><filename>TMPDIR</filename></link><filename>}/sysroots-components</filename>").
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-CONF_VERSION'><glossterm>CONF_VERSION</glossterm>
+            <info>
+                CONF_VERSION[doc] = "Tracks the version of local.conf.  Increased each time build/conf/ changes incompatibly."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Tracks the version of the local configuration file
+                    (i.e. <filename>local.conf</filename>).
+                    The value for <filename>CONF_VERSION</filename>
+                    increments each time <filename>build/conf/</filename>
+                    compatibility changes.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-CONFFILES'><glossterm>CONFFILES</glossterm>
+            <info>
+                CONFFILES[doc] = "Identifies editable or configurable files that are part of a package."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Identifies editable or configurable files that are part of a package.
+                    If the Package Management System (PMS) is being used to update
+                    packages on the target system, it is possible that
+                    configuration files you have changed after the original installation
+                    and that you now want to remain unchanged are overwritten.
+                    In other words, editable files might exist in the package that you do not
+                    want reset as part of the package update process.
+                    You can use the <filename>CONFFILES</filename> variable to list the files in the
+                    package that you wish to prevent the PMS from overwriting during this update process.
+                </para>
+
+                <para>
+                    To use the <filename>CONFFILES</filename> variable, provide a package name
+                    override that identifies the resulting package.
+                    Then, provide a space-separated list of files.
+                    Here is an example:
+                    <literallayout class='monospaced'>
+     CONFFILES_${PN} += "${sysconfdir}/file1 \
+        ${sysconfdir}/file2 ${sysconfdir}/file3"
+                    </literallayout>
+                </para>
+
+                <para>
+                    A relationship exists between the <filename>CONFFILES</filename> and
+                    <filename><link linkend='var-FILES'>FILES</link></filename> variables.
+                    The files listed within <filename>CONFFILES</filename> must be a subset of
+                    the files listed within <filename>FILES</filename>.
+                    Because the configuration files you provide with <filename>CONFFILES</filename>
+                    are simply being identified so that the PMS will not overwrite them,
+                    it makes sense that
+                    the files must already be included as part of the package through the
+                    <filename>FILES</filename> variable.
+                </para>
+
+                <note>
+                    When specifying paths as part of the <filename>CONFFILES</filename> variable,
+                    it is good practice to use appropriate path variables.
+                    For example, <filename>${sysconfdir}</filename> rather than
+                    <filename>/etc</filename> or <filename>${bindir}</filename> rather
+                    than <filename>/usr/bin</filename>.
+                    You can find a list of these variables at the top of the
+                    <filename>meta/conf/bitbake.conf</filename> file in the
+                    <link linkend='source-directory'>Source Directory</link>.
+                </note>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-CONFIG_INITRAMFS_SOURCE'><glossterm>CONFIG_INITRAMFS_SOURCE</glossterm>
+            <info>
+                CONFIG_INITRAMFS_SOURCE[doc] = "Identifies the initial RAM filesystem (initramfs) source files. The OpenEmbedded build system receives and uses this kernel Kconfig variable as an environment variable."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Identifies the initial RAM filesystem (initramfs) source
+                    files.
+                    The OpenEmbedded build system receives and uses
+                    this kernel Kconfig variable as an environment variable.
+                    By default, the variable is set to null ("").
+                </para>
+
+                <para>
+                    The <filename>CONFIG_INITRAMFS_SOURCE</filename> can be
+                    either a single cpio archive with a
+                    <filename>.cpio</filename> suffix or a
+                    space-separated list of directories and files for building
+                    the initramfs image.
+                    A cpio archive should contain a filesystem archive
+                    to be used as an initramfs image.
+                    Directories should contain a filesystem layout to be
+                    included in the initramfs image.
+                    Files should contain entries according to the format
+                    described by the
+                    <filename>usr/gen_init_cpio</filename> program in the
+                    kernel tree.
+                </para>
+
+                <para>
+                    If you specify multiple directories and files, the
+                    initramfs image will be the aggregate of all of them.
+                </para>
+
+                <para>
+                    For information on creating an initramfs, see the
+                    "<ulink url='&YOCTO_DOCS_DEV_URL;#building-an-initramfs-image'>Building an Initial RAM Filesystem (initramfs) Image</ulink>"
+                    section in the Yocto Project Development Tasks Manual.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-CONFIG_SITE'><glossterm>CONFIG_SITE</glossterm>
+            <info>
+                CONFIG_SITE[doc] = "A list of files that contains autoconf test results relevant to the current build. This variable is used by the Autotools utilities when running configure."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A list of files that contains <filename>autoconf</filename> test results relevant
+                    to the current build.
+                    This variable is used by the Autotools utilities when running
+                    <filename>configure</filename>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-CONFIGURE_FLAGS'><glossterm>CONFIGURE_FLAGS</glossterm>
+            <info>
+                CONFIGURE_FLAGS[doc] = "The minimal arguments for GNU configure."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The minimal arguments for GNU configure.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-CONFLICT_DISTRO_FEATURES'><glossterm>CONFLICT_DISTRO_FEATURES</glossterm>
+            <info>
+                CONFLICT_DISTRO_FEATURES[doc] = "When a recipe inherits the distro_features_check class, this variable identifies distribution features that would be in conflict should the recipe be built."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When inheriting the
+                    <link linkend='ref-classes-distro_features_check'><filename>distro_features_check</filename></link>
+                    class, this
+                    variable identifies distribution features that would
+                    be in conflict should the recipe
+                    be built.
+                    In other words, if the
+                    <filename>CONFLICT_DISTRO_FEATURES</filename> variable
+                    lists a feature that also appears in
+                    <filename>DISTRO_FEATURES</filename> within the
+                    current configuration, an error occurs and the
+                    build stops.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-COPYLEFT_LICENSE_EXCLUDE'><glossterm>COPYLEFT_LICENSE_EXCLUDE</glossterm>
+            <info>
+                COPYLEFT_LICENSE_EXCLUDE[doc] = "Licenses to exclude in the source archived by the archiver class."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A space-separated list of licenses to exclude from the
+                    source archived by the
+                    <link linkend='ref-classes-archiver'><filename>archiver</filename></link>
+                    class.
+                    In other words, if a license in a recipe's
+                    <link linkend='var-LICENSE'><filename>LICENSE</filename></link>
+                    value is in the value of
+                    <filename>COPYLEFT_LICENSE_EXCLUDE</filename>, then its
+                    source is not archived by the class.
+                    <note>
+                        The <filename>COPYLEFT_LICENSE_EXCLUDE</filename>
+                        variable takes precedence over the
+                        <link linkend='var-COPYLEFT_LICENSE_INCLUDE'><filename>COPYLEFT_LICENSE_INCLUDE</filename></link>
+                        variable.
+                    </note>
+                    The default value, which is "CLOSED Proprietary", for
+                    <filename>COPYLEFT_LICENSE_EXCLUDE</filename> is set
+                    by the
+                    <link linkend='ref-classes-copyleft_filter'><filename>copyleft_filter</filename></link>
+                    class, which is inherited by the
+                    <filename>archiver</filename> class.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-COPYLEFT_LICENSE_INCLUDE'><glossterm>COPYLEFT_LICENSE_INCLUDE</glossterm>
+            <info>
+                COPYLEFT_LICENSE_INCLUDE[doc] = "Licenses to include in the source archived by the archiver class."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A space-separated list of licenses to include in the
+                    source archived by the
+                    <link linkend='ref-classes-archiver'><filename>archiver</filename></link>
+                    class.
+                    In other words, if a license in a recipe's
+                    <link linkend='var-LICENSE'><filename>LICENSE</filename></link>
+                    value is in the value of
+                    <filename>COPYLEFT_LICENSE_INCLUDE</filename>, then its
+                    source is archived by the class.
+                </para>
+
+                <para>
+                    The default value is set by the
+                    <link linkend='ref-classes-copyleft_filter'><filename>copyleft_filter</filename></link>
+                    class, which is inherited by the
+                    <filename>archiver</filename> class.
+                    The default value includes "GPL*", "LGPL*", and "AGPL*".
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-COPYLEFT_PN_EXCLUDE'><glossterm>COPYLEFT_PN_EXCLUDE</glossterm>
+            <info>
+                COPYLEFT_PN_EXCLUDE[doc] = "Recipes to exclude in the source archived by the archiver class."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A list of recipes to exclude in the source archived
+                    by the
+                    <link linkend='ref-classes-archiver'><filename>archiver</filename></link>
+                    class.
+                    The <filename>COPYLEFT_PN_EXCLUDE</filename> variable
+                    overrides the license inclusion and exclusion caused
+                    through the
+                    <link linkend='var-COPYLEFT_LICENSE_INCLUDE'><filename>COPYLEFT_LICENSE_INCLUDE</filename></link>
+                    and
+                    <link linkend='var-COPYLEFT_LICENSE_EXCLUDE'><filename>COPYLEFT_LICENSE_EXCLUDE</filename></link>
+                    variables, respectively.
+                </para>
+
+                <para>
+                    The default value, which is "" indicating to not explicitly
+                    exclude any recipes by name, for
+                    <filename>COPYLEFT_PN_EXCLUDE</filename> is set
+                    by the
+                    <link linkend='ref-classes-copyleft_filter'><filename>copyleft_filter</filename></link>
+                    class, which is inherited by the
+                    <filename>archiver</filename> class.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-COPYLEFT_PN_INCLUDE'><glossterm>COPYLEFT_PN_INCLUDE</glossterm>
+            <info>
+                COPYLEFT_PN_INCLUDE[doc] = "Recipes to include in the source archived by the archiver class."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A list of recipes to include in the source archived
+                    by the
+                    <link linkend='ref-classes-archiver'><filename>archiver</filename></link>
+                    class.
+                    The <filename>COPYLEFT_PN_INCLUDE</filename> variable
+                    overrides the license inclusion and exclusion caused
+                    through the
+                    <link linkend='var-COPYLEFT_LICENSE_INCLUDE'><filename>COPYLEFT_LICENSE_INCLUDE</filename></link>
+                    and
+                    <link linkend='var-COPYLEFT_LICENSE_EXCLUDE'><filename>COPYLEFT_LICENSE_EXCLUDE</filename></link>
+                    variables, respectively.
+                </para>
+
+                <para>
+                    The default value, which is "" indicating to not explicitly
+                    include any recipes by name, for
+                    <filename>COPYLEFT_PN_INCLUDE</filename> is set
+                    by the
+                    <link linkend='ref-classes-copyleft_filter'><filename>copyleft_filter</filename></link>
+                    class, which is inherited by the
+                    <filename>archiver</filename> class.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-COPYLEFT_RECIPE_TYPES'><glossterm>COPYLEFT_RECIPE_TYPES</glossterm>
+            <info>
+                COPYLEFT_RECIPE_TYPES[doc] = "Recipe types to include in the source archived by the archiver class."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A space-separated list of recipe types to include
+                    in the source archived by the
+                    <link linkend='ref-classes-archiver'><filename>archiver</filename></link>
+                    class.
+                    Recipe types are <filename>target</filename>,
+                    <filename>native</filename>,
+                    <filename>nativesdk</filename>,
+                    <filename>cross</filename>,
+                    <filename>crosssdk</filename>, and
+                    <filename>cross-canadian</filename>.
+                </para>
+
+                <para>
+                    The default value, which is "target*", for
+                    <filename>COPYLEFT_RECIPE_TYPES</filename> is set
+                    by the
+                    <link linkend='ref-classes-copyleft_filter'><filename>copyleft_filter</filename></link>
+                    class, which is inherited by the
+                    <filename>archiver</filename> class.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-COPY_LIC_DIRS'><glossterm>COPY_LIC_DIRS</glossterm>
+            <info>
+                COPY_LIC_DIRS[doc] = "If set to "1" along with the COPY_LIC_MANIFEST variable, the OpenEmbedded build system copies into the image the license files, which are located in /usr/share/common-licenses, for each package."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    If set to "1" along with the
+                    <link linkend='var-COPY_LIC_MANIFEST'><filename>COPY_LIC_MANIFEST</filename></link>
+                    variable, the OpenEmbedded build system copies
+                    into the image the license files, which are located in
+                    <filename>/usr/share/common-licenses</filename>,
+                    for each package.
+                    The license files are placed
+                    in directories within the image itself during build time.
+                    <note>
+                        The <filename>COPY_LIC_DIRS</filename> does not
+                        offer a path for adding licenses for newly installed
+                        packages to an image, which might be most suitable
+                        for read-only filesystems that cannot be upgraded.
+                        See the
+                        <link linkend='var-LICENSE_CREATE_PACKAGE'><filename>LICENSE_CREATE_PACKAGE</filename></link>
+                        variable for additional information.
+                        You can also reference the
+                        "<ulink url='&YOCTO_DOCS_DEV_URL;#providing-license-text'>Providing License Text</ulink>"
+                        section in the Yocto Project Development Tasks Manual
+                        for information on providing license text.
+                    </note>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-COPY_LIC_MANIFEST'><glossterm>COPY_LIC_MANIFEST</glossterm>
+            <info>
+                COPY_LIC_MANIFEST[doc] = "If set to "1", the OpenEmbedded build system copies the license manifest for the image to /usr/share/common-licenses/license.manifest within the image itself."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    If set to "1", the OpenEmbedded build system copies
+                    the license manifest for the image to
+                    <filename>/usr/share/common-licenses/license.manifest</filename>
+                    within the image itself during build time.
+                    <note>
+                        The <filename>COPY_LIC_MANIFEST</filename> does not
+                        offer a path for adding licenses for newly installed
+                        packages to an image, which might be most suitable
+                        for read-only filesystems that cannot be upgraded.
+                        See the
+                        <link linkend='var-LICENSE_CREATE_PACKAGE'><filename>LICENSE_CREATE_PACKAGE</filename></link>
+                        variable for additional information.
+                        You can also reference the
+                        "<ulink url='&YOCTO_DOCS_DEV_URL;#providing-license-text'>Providing License Text</ulink>"
+                        section in the Yocto Project Development Tasks Manual
+                        for information on providing license text.
+                    </note>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-CORE_IMAGE_EXTRA_INSTALL'><glossterm>CORE_IMAGE_EXTRA_INSTALL</glossterm>
+            <info>
+                CORE_IMAGE_EXTRA_INSTALL[doc] = "Specifies the list of packages to be added to the image. You should only set this variable in the conf/local.conf file in the Build Directory."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the list of packages to be added to the image.
+                    You should only set this variable in the
+                    <filename>local.conf</filename> configuration file found
+                    in the
+                    <link linkend='build-directory'>Build Directory</link>.
+                </para>
+
+                <para>
+                    This variable replaces <filename>POKY_EXTRA_INSTALL</filename>, which is no longer supported.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-COREBASE'><glossterm>COREBASE</glossterm>
+            <info>
+                COREBASE[doc] = "Specifies the parent directory of the OpenEmbedded-Core Metadata layer (i.e. meta)."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the parent directory of the OpenEmbedded-Core
+                    Metadata layer (i.e. <filename>meta</filename>).
+                </para>
+
+                <para>
+                    It is an important distinction that
+                    <filename>COREBASE</filename> points to the parent of this
+                    layer and not the layer itself.
+                    Consider an example where you have cloned the Poky Git
+                    repository and retained the <filename>poky</filename>
+                    name for your local copy of the repository.
+                    In this case, <filename>COREBASE</filename> points to
+                    the <filename>poky</filename> folder because it is the
+                    parent directory of the <filename>poky/meta</filename>
+                    layer.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-COREBASE_FILES'><glossterm>COREBASE_FILES</glossterm>
+            <info>
+                COREBASE_FILES[doc] = "Lists files from the COREBASE directory that should be copied other than the layers listed in the bblayers.conf file."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Lists files from the
+                    <link linkend='var-COREBASE'><filename>COREBASE</filename></link>
+                    directory that should be copied other than the layers
+                    listed in the <filename>bblayers.conf</filename> file.
+                    The <filename>COREBASE_FILES</filename> variable exists
+                    for the purpose of copying metadata from the
+                    OpenEmbedded build system into the extensible
+                    SDK.
+                </para>
+
+                <para>
+                    Explicitly listing files in <filename>COREBASE</filename>
+                    is needed because it typically contains build
+                    directories and other files that should not normally
+                    be copied into the extensible SDK.
+                    Consequently, the value of
+                    <filename>COREBASE_FILES</filename> is used in order to
+                    only copy the files that are actually needed.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-CPP'><glossterm>CPP</glossterm>
+            <info>
+                CPP[doc] = "Minimum command and arguments to run the C preprocessor."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The minimal command and arguments used to run the C
+                    preprocessor.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-CPPFLAGS'><glossterm>CPPFLAGS</glossterm>
+            <info>
+                CPPFLAGS[doc] = "Specifies the flags to pass to the C pre-processor (i.e. to both the C and the C++ compilers)."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the flags to pass to the C pre-processor
+                    (i.e. to both the C and the C++ compilers).
+                    This variable is exported to an environment
+                    variable and thus made visible to the software being
+                    built during the compilation step.
+                </para>
+
+                <para>
+                    Default initialization for <filename>CPPFLAGS</filename>
+                    varies depending on what is being built:
+                    <itemizedlist>
+                        <listitem><para>
+                            <link linkend='var-TARGET_CPPFLAGS'><filename>TARGET_CPPFLAGS</filename></link>
+                            when building for the target
+                            </para></listitem>
+                        <listitem><para>
+                            <link linkend='var-BUILD_CPPFLAGS'><filename>BUILD_CPPFLAGS</filename></link>
+                            when building for the build host (i.e.
+                            <filename>-native</filename>)
+                            </para></listitem>
+                        <listitem><para>
+                            <link linkend='var-BUILDSDK_CPPFLAGS'><filename>BUILDSDK_CPPFLAGS</filename></link>
+                            when building for an SDK (i.e.
+                            <filename>nativesdk-</filename>)
+                            </para></listitem>
+                    </itemizedlist>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-CROSS_COMPILE'><glossterm>CROSS_COMPILE</glossterm>
+            <info>
+                CROSS_COMPILE[doc] = "The toolchain binary prefix for the target tools."
+            </info>
+            <glossdef>
+               <para role="glossdeffirst">
+                    The toolchain binary prefix for the target tools.
+                    The <filename>CROSS_COMPILE</filename> variable is the
+                    same as the
+                    <link linkend='var-TARGET_PREFIX'><filename>TARGET_PREFIX</filename></link>
+                    variable.
+                    <note>
+                        The OpenEmbedded build system sets the
+                        <filename>CROSS_COMPILE</filename> variable only in
+                        certain contexts (e.g. when building for kernel
+                        and kernel module recipes).
+                    </note>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-CVSDIR'><glossterm>CVSDIR</glossterm>
+            <info>
+                CVSDIR[doc] = "The directory where cvs checkouts will be stored in."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The directory in which files checked out under the
+                    CVS system are stored.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-CXX'><glossterm>CXX</glossterm>
+            <info>
+                CXX[doc] = "Minimum command and arguments to run the C++ compiler."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The minimal command and arguments used to run the C++
+                    compiler.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-CXXFLAGS'><glossterm>CXXFLAGS</glossterm>
+            <info>
+                CXXFLAGS[doc] = "Specifies the flags to pass to the C++ compiler."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the flags to pass to the C++ compiler.
+                    This variable is exported to an environment
+                    variable and thus made visible to the software being
+                    built during the compilation step.
+                </para>
+
+                <para>
+                    Default initialization for <filename>CXXFLAGS</filename>
+                    varies depending on what is being built:
+                    <itemizedlist>
+                        <listitem><para>
+                            <link linkend='var-TARGET_CXXFLAGS'><filename>TARGET_CXXFLAGS</filename></link>
+                            when building for the target
+                            </para></listitem>
+                        <listitem><para>
+                            <link linkend='var-BUILD_CXXFLAGS'><filename>BUILD_CXXFLAGS</filename></link>
+                            when building for the build host (i.e.
+                            <filename>-native</filename>)
+                            </para></listitem>
+                        <listitem><para>
+                            <link linkend='var-BUILDSDK_CXXFLAGS'><filename>BUILDSDK_CXXFLAGS</filename></link>
+                            when building for an SDK (i.e.
+                            <filename>nativesdk-</filename>)
+                            </para></listitem>
+                    </itemizedlist>
+                </para>
+            </glossdef>
+        </glossentry>
+
+    </glossdiv>
+
+    <glossdiv id='var-glossary-d'><title>D</title>
+
+        <glossentry id='var-D'><glossterm>D</glossterm>
+            <info>
+                D[doc] = "The destination directory."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The destination directory.
+                    The location in the
+                    <link linkend='build-directory'>Build Directory</link>
+                    where components are installed by the
+                    <link linkend='ref-tasks-install'><filename>do_install</filename></link>
+                    task.
+                    This location defaults to:
+                    <literallayout class='monospaced'>
+     ${WORKDIR}/image
+                    </literallayout>
+                    <note><title>Caution</title>
+                        Tasks that read from or write to this directory should
+                        run under
+                        <ulink url='&YOCTO_DOCS_OM_URL;#fakeroot-and-pseudo'>fakeroot</ulink>.
+                    </note>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-DATE'><glossterm>DATE</glossterm>
+            <info>
+                DATE[doc] = "The date the build was started using YMD format."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The date the build was started.
+                    Dates appear using the year, month, and day (YMD) format
+                    (e.g. "20150209" for February 9th, 2015).
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-DATETIME'><glossterm>DATETIME</glossterm>
+            <info>
+                DATETIME[doc] = "The date and time the build was started."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The date and time on which the current build started.
+                    The format is suitable for timestamps.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-DEBIAN_NOAUTONAME'><glossterm>DEBIAN_NOAUTONAME</glossterm>
+            <info>
+                DEBIAN_NOAUTONAME[doc] = "Prevents a particular package from being renamed according to Debian package naming."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When the
+                    <link linkend='ref-classes-debian'><filename>debian</filename></link>
+                    class is inherited, which is the default behavior,
+                    <filename>DEBIAN_NOAUTONAME</filename> specifies a
+                    particular package should not be renamed according to
+                    Debian library package naming.
+                    You must use the package name as an override when you
+                    set this variable.
+                    Here is an example from the <filename>fontconfig</filename>
+                    recipe:
+                    <literallayout class='monospaced'>
+     DEBIAN_NOAUTONAME_fontconfig-utils = "1"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-DEBIANNAME'><glossterm>DEBIANNAME</glossterm>
+            <info>
+                DEBIANNAME[doc] = "Allows you to override the library name for an individual package for Debian library package renaming."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When the
+                    <link linkend='ref-classes-debian'><filename>debian</filename></link>
+                    class is inherited, which is the default behavior,
+                    <filename>DEBIANNAME</filename> allows you to override the
+                    library name for an individual package.
+                    Overriding the library name in these cases is rare.
+                    You must use the package name as an override when you
+                    set this variable.
+                    Here is an example from the <filename>dbus</filename>
+                    recipe:
+                    <literallayout class='monospaced'>
+     DEBIANNAME_${PN} = "dbus-1"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-DEBUG_BUILD'><glossterm>DEBUG_BUILD</glossterm>
+            <info>
+                DEBUG_BUILD[doc] = "Specifies to build packages with debugging information. This influences the value of the SELECTED_OPTIMIZATION variable."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies to build packages with debugging information.
+                    This influences the value of the
+                    <filename><link linkend='var-SELECTED_OPTIMIZATION'>SELECTED_OPTIMIZATION</link></filename>
+                    variable.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-DEBUG_OPTIMIZATION'><glossterm>DEBUG_OPTIMIZATION</glossterm>
+            <info>
+                DEBUG_OPTIMIZATION[doc] = "The options to pass in TARGET_CFLAGS and CFLAGS when compiling a system for debugging. This variable defaults to '-O -fno-omit-frame-pointer -g'."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The options to pass in
+                    <filename><link linkend='var-TARGET_CFLAGS'>TARGET_CFLAGS</link></filename>
+                    and <filename><link linkend='var-CFLAGS'>CFLAGS</link></filename> when compiling
+                    a system for debugging.
+                    This variable defaults to "-O -fno-omit-frame-pointer ${DEBUG_FLAGS} -pipe".
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-DEFAULT_PREFERENCE'><glossterm>DEFAULT_PREFERENCE</glossterm>
+            <info>
+                DEFAULT_PREFERENCE[doc] = "Specifies a weak bias for recipe selection priority."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies a weak bias for recipe selection priority.
+                </para>
+
+                <para>
+                    The most common usage of this is variable is to set
+                    it to "-1" within a recipe for a development version of a
+                    piece of software.
+                    Using the variable in this way causes the stable version
+                    of the recipe to build by default in the absence of
+                    <filename><link linkend='var-PREFERRED_VERSION'>PREFERRED_VERSION</link></filename>
+                    being used to build the development version.
+                </para>
+
+                <note>
+                    The bias provided by <filename>DEFAULT_PREFERENCE</filename>
+                    is weak and is overridden by
+                    <filename><link linkend='var-BBFILE_PRIORITY'>BBFILE_PRIORITY</link></filename>
+                    if that variable is different between two layers
+                    that contain different versions of the same recipe.
+                </note>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-DEFAULTTUNE'><glossterm>DEFAULTTUNE</glossterm>
+            <info>
+                DEFAULTTUNE[doc] = "The default CPU and Application Binary Interface (ABI) tunings (i.e.  the "tune") used by the OpenEmbedded build system."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The default CPU and Application Binary Interface (ABI)
+                    tunings (i.e.  the "tune") used by the OpenEmbedded build
+                    system.
+                    The <filename>DEFAULTTUNE</filename> helps define
+                    <link linkend='var-TUNE_FEATURES'><filename>TUNE_FEATURES</filename></link>.
+                </para>
+
+                <para>
+                    The default tune is either implicitly or explicitly set
+                    by the machine
+                    (<link linkend='var-MACHINE'><filename>MACHINE</filename></link>).
+                    However, you can override the setting using available tunes
+                    as defined with
+                    <link linkend='var-AVAILTUNES'><filename>AVAILTUNES</filename></link>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-DEPENDS'><glossterm>DEPENDS</glossterm>
+            <info>
+                DEPENDS[doc] = "Lists a recipe's build-time dependencies (i.e. other recipe files)."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Lists a recipe's build-time dependencies.
+                    These are dependencies on other recipes whose
+                    contents (e.g. headers and shared libraries) are needed
+                    by the recipe at build time.
+                </para>
+
+                <para>
+                    As an example, consider a recipe <filename>foo</filename>
+                    that contains the following assignment:
+                    <literallayout class='monospaced'>
+     DEPENDS = "bar"
+                    </literallayout>
+                    The practical effect of the previous assignment is that
+                    all files installed by bar will be available in the
+                    appropriate staging sysroot, given by the
+                    <link linkend='var-STAGING_DIR'><filename>STAGING_DIR*</filename></link>
+                    variables, by the time the
+                    <link linkend='ref-tasks-configure'><filename>do_configure</filename></link>
+                    task for <filename>foo</filename> runs.
+                    This mechanism is implemented by having
+                    <filename>do_configure</filename> depend on the
+                    <link linkend='ref-tasks-populate_sysroot'><filename>do_populate_sysroot</filename></link>
+                    task of each recipe listed in <filename>DEPENDS</filename>,
+                    through a
+                    <filename>[</filename><ulink url='&YOCTO_DOCS_BB_URL;#variable-flags'><filename>deptask</filename></ulink><filename>]</filename>
+                    declaration in the
+                    <link linkend='ref-classes-base'><filename>base</filename></link>
+                    class.
+                    <note>
+                        It seldom is necessary to reference, for example,
+                        <filename>STAGING_DIR_HOST</filename> explicitly.
+                        The standard classes and build-related variables are
+                        configured to automatically use the appropriate staging
+                        sysroots.
+                    </note>
+                    As another example, <filename>DEPENDS</filename> can also
+                    be used to add utilities that run on the build machine
+                    during the build.
+                    For example, a recipe that makes use of a code generator
+                    built by the recipe <filename>codegen</filename> might have
+                    the following:
+                    <literallayout class='monospaced'>
+     DEPENDS = "codegen-native"
+                    </literallayout>
+                    For more information, see the
+                    <link linkend='ref-classes-native'><filename>native</filename></link>
+                    class and the
+                    <link linkend='var-EXTRANATIVEPATH'><filename>EXTRANATIVEPATH</filename></link>
+                    variable.
+                    <note>
+                        <title>Notes</title>
+                        <itemizedlist>
+                            <listitem><para>
+                                <filename>DEPENDS</filename> is a list of
+                                recipe names.
+                                Or, to be more precise, it is a list of
+                                <link linkend='var-PROVIDES'><filename>PROVIDES</filename></link>
+                                names, which usually match recipe names.
+                                Putting a package name such as "foo-dev" in
+                                <filename>DEPENDS</filename> does not make
+                                sense.
+                                Use "foo" instead, as this will put files
+                                from all the packages that make up
+                                <filename>foo</filename>, which includes
+                                those from <filename>foo-dev</filename>, into
+                                the sysroot.
+                                </para></listitem>
+                            <listitem><para>
+                                One recipe having another recipe in
+                                <filename>DEPENDS</filename> does not by itself
+                                add any runtime dependencies between the
+                                packages produced by the two recipes.
+                                However, as explained in the
+                                "<ulink url='&YOCTO_DOCS_OM_URL;#automatically-added-runtime-dependencies'>Automatically Added Runtime Dependencies</ulink>"
+                                section in the Yocto Project Overview and
+                                Concepts Manual, runtime dependencies will
+                                often be added automatically, meaning
+                                <filename>DEPENDS</filename> alone is
+                                sufficient for most recipes.
+                                </para></listitem>
+                            <listitem><para>
+                                Counterintuitively,
+                                <filename>DEPENDS</filename> is often necessary
+                                even for recipes that install precompiled
+                                components.
+                                For example, if <filename>libfoo</filename>
+                                is a precompiled library that links against
+                                <filename>libbar</filename>, then
+                                linking against <filename>libfoo</filename>
+                                requires both <filename>libfoo</filename>
+                                and <filename>libbar</filename> to be available
+                                in the sysroot.
+                                Without a <filename>DEPENDS</filename> from the
+                                recipe that installs <filename>libfoo</filename>
+                                to the recipe that installs
+                                <filename>libbar</filename>, other recipes might
+                                fail to link against
+                                <filename>libfoo</filename>.
+                                </para></listitem>
+                        </itemizedlist>
+                    </note>
+                </para>
+
+                <para>
+                    For information on runtime dependencies, see the
+                    <link linkend='var-RDEPENDS'><filename>RDEPENDS</filename></link>
+                    variable.
+                    You can also see the
+                    "<ulink url='&YOCTO_DOCS_BB_URL;#tasks'>Tasks</ulink>" and
+                    "<ulink url='&YOCTO_DOCS_BB_URL;#dependencies'>Dependencies</ulink>"
+                    sections in the BitBake User Manual for additional
+                    information on tasks and dependencies.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-DEPLOY_DIR'><glossterm>DEPLOY_DIR</glossterm>
+            <info>
+                DEPLOY_DIR[doc] = "Points to the general area that the OpenEmbedded build system uses to place images, packages, SDKs, and other output files that are ready to be used outside of the build system."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Points to the general area that the OpenEmbedded build
+                    system uses to place images, packages, SDKs, and other output
+                    files that are ready to be used outside of the build system.
+                    By default, this directory resides within the
+                    <link linkend='build-directory'>Build Directory</link>
+                    as <filename>${TMPDIR}/deploy</filename>.
+                </para>
+
+                <para>
+                    For more information on the structure of the Build
+                    Directory, see
+                    "<link linkend='structure-build'>The Build Directory - <filename>build/</filename></link>"
+                    section.
+                    For more detail on the contents of the
+                    <filename>deploy</filename> directory, see the
+                    "<ulink url='&YOCTO_DOCS_OM_URL;#images-dev-environment'>Images</ulink>",
+                    "<ulink url='&YOCTO_DOCS_OM_URL;#package-feeds-dev-environment'>Package Feeds</ulink>",
+                    and
+                    "<ulink url='&YOCTO_DOCS_OM_URL;#sdk-dev-environment'>Application Development SDK</ulink>"
+                    sections all in the Yocto Project Overview and Concepts
+                    Manual.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-DEPLOY_DIR_DEB'><glossterm>DEPLOY_DIR_DEB</glossterm>
+            <info>
+                DEPLOY_DIR_DEB[doc] = "Points to a Debian-specific area that the OpenEmbedded build system uses to place images, packages, SDKs, and other output files that are ready to be used outside of the build system."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Points to the area that the OpenEmbedded build system uses
+                    to place Debian packages that are ready to be used outside
+                    of the build system.
+                    This variable applies only when
+                    <link linkend='var-PACKAGE_CLASSES'><filename>PACKAGE_CLASSES</filename></link>
+                    contains "package_deb".
+                </para>
+
+                <para>
+                    The BitBake configuration file initially defines the
+                    <filename>DEPLOY_DIR_DEB</filename> variable as a
+                    sub-folder of
+                    <link linkend='var-DEPLOY_DIR'><filename>DEPLOY_DIR</filename></link>:
+                    <literallayout class='monospaced'>
+     DEPLOY_DIR_DEB = "${DEPLOY_DIR}/deb"
+                    </literallayout>
+                </para>
+
+                <para>
+                    The
+                    <link linkend='ref-classes-package_deb'><filename>package_deb</filename></link>
+                    class uses the
+                    <filename>DEPLOY_DIR_DEB</filename> variable to make sure
+                    the
+                    <link linkend='ref-tasks-package_write_deb'><filename>do_package_write_deb</filename></link>
+                    task writes Debian packages into the appropriate folder.
+                    For more information on how packaging works, see the
+                    "<ulink url='&YOCTO_DOCS_OM_URL;#package-feeds-dev-environment'>Package Feeds</ulink>"
+                    section in the Yocto Project Overview and Concepts Manual.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-DEPLOY_DIR_IMAGE'><glossterm>DEPLOY_DIR_IMAGE</glossterm>
+            <info>
+                DEPLOY_DIR_IMAGE[doc] = "Points to the area that the OpenEmbedded build system uses to place images and other associated output files that are ready to be deployed onto the target machine."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Points to the area that the OpenEmbedded build system uses
+                    to place images and other associated output files that are
+                    ready to be deployed onto the target machine.
+                    The directory is machine-specific as it contains the
+                    <filename>${MACHINE}</filename> name.
+                    By default, this directory resides within the
+                    <link linkend='build-directory'>Build Directory</link>
+                    as <filename>${DEPLOY_DIR}/images/${MACHINE}/</filename>.
+                </para>
+
+                <para>
+                    For more information on the structure of the Build
+                    Directory, see
+                    "<link linkend='structure-build'>The Build Directory - <filename>build/</filename></link>"
+                    section.
+                    For more detail on the contents of the
+                    <filename>deploy</filename> directory, see the
+                    "<ulink url='&YOCTO_DOCS_OM_URL;#images-dev-environment'>Images</ulink>"
+                    and
+                    "<ulink url='&YOCTO_DOCS_OM_URL;#sdk-dev-environment'>Application Development SDK</ulink>"
+                    sections both in the Yocto Project Overview and Concepts
+                    Manual.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-DEPLOY_DIR_IPK'><glossterm>DEPLOY_DIR_IPK</glossterm>
+            <info>
+                DEPLOY_DIR_IPK[doc] = "Points to a IPK-specific area that the OpenEmbedded build system uses to place images, packages, SDKs, and other output files that are ready to be used outside of the build system."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Points to the area that the OpenEmbedded build system uses
+                    to place IPK packages that are ready to be used outside of
+                    the build system.
+                    This variable applies only when
+                    <link linkend='var-PACKAGE_CLASSES'><filename>PACKAGE_CLASSES</filename></link>
+                    contains "package_ipk".
+                </para>
+
+                <para>
+                    The BitBake configuration file initially defines this
+                    variable as a sub-folder of
+                    <link linkend='var-DEPLOY_DIR'><filename>DEPLOY_DIR</filename></link>:
+                    <literallayout class='monospaced'>
+     DEPLOY_DIR_IPK = "${DEPLOY_DIR}/ipk"
+                    </literallayout>
+                </para>
+
+                <para>
+                    The
+                    <link linkend='ref-classes-package_ipk'><filename>package_ipk</filename></link>
+                    class uses the
+                    <filename>DEPLOY_DIR_IPK</filename> variable to make sure
+                    the
+                    <link linkend='ref-tasks-package_write_ipk'><filename>do_package_write_ipk</filename></link>
+                    task writes IPK packages into the appropriate folder.
+                    For more information on how packaging works, see the
+                    "<ulink url='&YOCTO_DOCS_OM_URL;#package-feeds-dev-environment'>Package Feeds</ulink>"
+                    section in the Yocto Project Overview and Concepts Manual.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-DEPLOY_DIR_RPM'><glossterm>DEPLOY_DIR_RPM</glossterm>
+            <info>
+                DEPLOY_DIR_RPM[doc] = "Points to a RPM-specific area that the OpenEmbedded build system uses to place images, packages, SDKs, and other output files that are ready to be used outside of the build system."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Points to the area that the OpenEmbedded build system uses
+                    to place RPM packages that are ready to be used outside
+                    of the build system.
+                    This variable applies only when
+                    <link linkend='var-PACKAGE_CLASSES'><filename>PACKAGE_CLASSES</filename></link>
+                    contains "package_rpm".
+                </para>
+
+                <para>
+                    The BitBake configuration file initially defines this
+                    variable as a sub-folder of
+                    <link linkend='var-DEPLOY_DIR'><filename>DEPLOY_DIR</filename></link>:
+                    <literallayout class='monospaced'>
+     DEPLOY_DIR_RPM = "${DEPLOY_DIR}/rpm"
+                    </literallayout>
+                </para>
+
+                <para>
+                    The
+                    <link linkend='ref-classes-package_rpm'><filename>package_rpm</filename></link>
+                    class uses the
+                    <filename>DEPLOY_DIR_RPM</filename> variable to make sure
+                    the
+                    <link linkend='ref-tasks-package_write_rpm'><filename>do_package_write_rpm</filename></link>
+                    task writes RPM packages into the appropriate folder.
+                    For more information on how packaging works, see the
+                    "<ulink url='&YOCTO_DOCS_OM_URL;#package-feeds-dev-environment'>Package Feeds</ulink>"
+                    section in the Yocto Project Overview and Concepts Manual.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-DEPLOY_DIR_TAR'><glossterm>DEPLOY_DIR_TAR</glossterm>
+            <info>
+                DEPLOY_DIR_TAR[doc] = "Points to a tarball area that the OpenEmbedded build system uses to place images, packages, SDKs, and other output files that are ready to be used outside of the build system."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Points to the area that the OpenEmbedded build system uses
+                    to place tarballs that are ready to be used outside of
+                    the build system.
+                    This variable applies only when
+                    <link linkend='var-PACKAGE_CLASSES'><filename>PACKAGE_CLASSES</filename></link>
+                    contains "package_tar".
+                </para>
+
+                <para>
+                    The BitBake configuration file initially defines this
+                    variable as a sub-folder of
+                    <link linkend='var-DEPLOY_DIR'><filename>DEPLOY_DIR</filename></link>:
+                    <literallayout class='monospaced'>
+     DEPLOY_DIR_TAR = "${DEPLOY_DIR}/tar"
+                    </literallayout>
+                </para>
+
+                <para>
+                    The
+                    <link linkend='ref-classes-package_tar'><filename>package_tar</filename></link>
+                    class uses the
+                    <filename>DEPLOY_DIR_TAR</filename> variable to make sure
+                    the
+                    <link linkend='ref-tasks-package_write_tar'><filename>do_package_write_tar</filename></link>
+                    task writes TAR packages into the appropriate folder.
+                    For more information on how packaging works, see the
+                    "<ulink url='&YOCTO_DOCS_OM_URL;#package-feeds-dev-environment'>Package Feeds</ulink>"
+                    section in the Yocto Project Overview and Concepts Manual.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-DEPLOYDIR'><glossterm>DEPLOYDIR</glossterm>
+            <info>
+                DEPLOYDIR[doc] = "For recipes that inherit the deploy class, the DEPLOYDIR points to a temporary work area for deployed files."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When inheriting the
+                    <link linkend='ref-classes-deploy'><filename>deploy</filename></link>
+                    class, the <filename>DEPLOYDIR</filename> points to a
+                    temporary work area for deployed files that is set in the
+                    <filename>deploy</filename> class as follows:
+                    <literallayout class='monospaced'>
+     DEPLOYDIR = "${WORKDIR}/deploy-${<link linkend='var-PN'><filename>PN</filename></link>}"
+                    </literallayout>
+                </para>
+
+                <para>
+                    Recipes inheriting the <filename>deploy</filename> class
+                    should copy files to be deployed into
+                    <filename>DEPLOYDIR</filename>, and the class will take
+                    care of copying them into
+                    <link linkend='var-DEPLOY_DIR_IMAGE'><filename>DEPLOY_DIR_IMAGE</filename></link>
+                    afterwards.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-DESCRIPTION'><glossterm>DESCRIPTION</glossterm>
+            <info>
+                DESCRIPTION[doc] = "The package description used by package managers. If not set, DESCRIPTION takes the value of the SUMMARY variable."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The package description used by package managers.
+                    If not set, <filename>DESCRIPTION</filename> takes
+                    the value of the
+                    <link linkend='var-SUMMARY'><filename>SUMMARY</filename></link>
+                    variable.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-DISTRO'><glossterm>DISTRO</glossterm>
+            <info>
+                DISTRO[doc] = "The short name of the distribution. If the variable is blank, meta/conf/distro/defaultsetup.conf will be used."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The short name of the distribution.
+                    For information on the long name of the distribution, see
+                    the
+                    <link linkend='var-DISTRO_NAME'><filename>DISTRO_NAME</filename></link>
+                    variable.
+                </para>
+
+                <para>
+                    The <filename>DISTRO</filename> variable corresponds to a
+                    distribution configuration file whose root name is the
+                    same as the variable's argument and whose filename
+                    extension is <filename>.conf</filename>.
+                    For example, the distribution configuration file for the
+                    Poky distribution is named <filename>poky.conf</filename>
+                    and resides in the
+                    <filename>meta-poky/conf/distro</filename> directory of
+                    the
+                    <link linkend='source-directory'>Source Directory</link>.
+                </para>
+
+                <para>
+                    Within that <filename>poky.conf</filename> file, the
+                    <filename>DISTRO</filename> variable is set as follows:
+                    <literallayout class='monospaced'>
+     DISTRO = "poky"
+                    </literallayout>
+                </para>
+
+                <para>
+                    Distribution configuration files are located in a
+                    <filename>conf/distro</filename> directory within the
+                    <link linkend='metadata'>Metadata</link>
+                    that contains the distribution configuration.
+                    The value for <filename>DISTRO</filename> must not contain
+                    spaces, and is typically all lower-case.
+                    <note>
+                        If the <filename>DISTRO</filename> variable is blank,
+                        a set of default configurations are used, which are
+                        specified within
+                        <filename>meta/conf/distro/defaultsetup.conf</filename>
+                        also in the Source Directory.
+                    </note>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-DISTRO_CODENAME'><glossterm>DISTRO_CODENAME</glossterm>
+            <info>
+                DISTRO_CODENAME[doc] = "Specifies a codename for the distribution being built."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies a codename for the distribution being built.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-DISTRO_EXTRA_RDEPENDS'><glossterm>DISTRO_EXTRA_RDEPENDS</glossterm>
+            <info>
+                DISTRO_EXTRA_RDEPENDS[doc] = "Specifies a list of distro-specific packages to add to all images. The variable only applies to the images that include packagegroup-base."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies a list of distro-specific packages to add to all images.
+                    This variable takes affect through
+                    <filename>packagegroup-base</filename> so the
+                    variable only really applies to the more full-featured
+                    images that include <filename>packagegroup-base</filename>.
+                    You can use this variable to keep distro policy out of
+                    generic images.
+                    As with all other distro variables, you set this variable
+                    in the distro <filename>.conf</filename> file.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-DISTRO_EXTRA_RRECOMMENDS'><glossterm>DISTRO_EXTRA_RRECOMMENDS</glossterm>
+            <info>
+                DISTRO_EXTRA_RRECOMMENDS[doc] = "Specifies a list of distro-specific packages to add to all images if the packages exist. The list of packages are automatically installed but you can remove them."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies a list of distro-specific packages to add to all images
+                    if the packages exist.
+                    The packages might not exist or be empty (e.g. kernel modules).
+                    The list of packages are automatically installed but you can
+                    remove them.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-DISTRO_FEATURES'><glossterm>DISTRO_FEATURES</glossterm>
+            <info>
+                DISTRO_FEATURES[doc] = "The features enabled for the distribution."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The software support you want in your distribution for
+                    various features.
+                    You define your distribution features in the distribution
+                    configuration file.
+                </para>
+
+                <para>
+                    In most cases, the presence or absence of a feature in
+                    <filename>DISTRO_FEATURES</filename> is translated to the
+                    appropriate option supplied to the configure script
+                    during the
+                    <link linkend='ref-tasks-configure'><filename>do_configure</filename></link>
+                    task for recipes that optionally support the feature.
+                    For example, specifying "x11" in
+                    <filename>DISTRO_FEATURES</filename>, causes
+                    every piece of software built for the target that can
+                    optionally support X11 to have its X11 support enabled.
+                </para>
+
+                <para>
+                    Two more examples are Bluetooth and NFS support.
+                    For a more complete list of features that ships with the
+                    Yocto Project and that you can provide with this variable,
+                    see the
+                    "<link linkend='ref-features-distro'>Distro Features</link>"
+                    section.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-DISTRO_FEATURES_BACKFILL'><glossterm>DISTRO_FEATURES_BACKFILL</glossterm>
+            <info>
+                DISTRO_FEATURES_BACKFILL[doc] = "Features to be added to DISTRO_FEATURES if not also present in DISTRO_FEATURES_BACKFILL_CONSIDERED. This variable is set in the meta/conf/bitbake.conf file and it is not intended to be user-configurable."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Features to be added to
+                    <filename><link linkend='var-DISTRO_FEATURES'>DISTRO_FEATURES</link></filename>
+                    if not also present in
+                    <filename><link linkend='var-DISTRO_FEATURES_BACKFILL_CONSIDERED'>DISTRO_FEATURES_BACKFILL_CONSIDERED</link></filename>.
+                </para>
+
+                <para>
+                    This variable is set in the <filename>meta/conf/bitbake.conf</filename> file.
+                    It is not intended to be user-configurable.
+                    It is best to just reference the variable to see which distro features are
+                    being backfilled for all distro configurations.
+                    See the "<link linkend='ref-features-backfill'>Feature Backfilling</link>" section for
+                    more information.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-DISTRO_FEATURES_BACKFILL_CONSIDERED'><glossterm>DISTRO_FEATURES_BACKFILL_CONSIDERED</glossterm>
+            <info>
+                DISTRO_FEATURES_BACKFILL_CONSIDERED[doc] = "Features from DISTRO_FEATURES_BACKFILL that should not be backfilled (i.e. added to DISTRO_FEATURES) during the build."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Features from
+                    <filename><link linkend='var-DISTRO_FEATURES_BACKFILL'>DISTRO_FEATURES_BACKFILL</link></filename>
+                    that should not be backfilled (i.e. added to
+                    <filename><link linkend='var-DISTRO_FEATURES'>DISTRO_FEATURES</link></filename>)
+                    during the build.
+                    See the "<link linkend='ref-features-backfill'>Feature Backfilling</link>" section for
+                    more information.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-DISTRO_FEATURES_DEFAULT'><glossterm>DISTRO_FEATURES_DEFAULT</glossterm>
+            <info>
+                DISTRO_FEATURES_DEFAULT[doc] = "Provides the default list of distro features with the exception of any libc-specific features."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A convenience variable that gives you the default
+                    list of distro features with the exception of any
+                    features specific to the C library
+                    (<filename>libc</filename>).
+                </para>
+
+                <para>
+                    When creating a custom distribution, you might find it
+                    useful to be able to reuse the default
+                    <link linkend='var-DISTRO_FEATURES'><filename>DISTRO_FEATURES</filename></link>
+                    options without the need to write out the full set.
+                    Here is an example that uses
+                    <filename>DISTRO_FEATURES_DEFAULT</filename> from a
+                    custom distro configuration file:
+                    <literallayout class='monospaced'>
+     DISTRO_FEATURES ?= "${DISTRO_FEATURES_DEFAULT} myfeature"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-DISTRO_FEATURES_FILTER_NATIVE'><glossterm>DISTRO_FEATURES_FILTER_NATIVE</glossterm>
+            <info>
+                DISTRO_FEATURES_FILTER_NATIVE[doc] = "Specifies a list of features that if present in the target DISTRO_FEATURES value should be included in DISTRO_FEATURES when building native recipes."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies a list of features that if present in
+                    the target
+                    <link linkend='var-DISTRO_FEATURES'><filename>DISTRO_FEATURES</filename></link>
+                    value should be included in
+                    <filename>DISTRO_FEATURES</filename> when building native
+                    recipes.
+                    This variable is used in addition to the features
+                    filtered using the
+                    <link linkend='var-DISTRO_FEATURES_NATIVE'><filename>DISTRO_FEATURES_NATIVE</filename></link>
+                    variable.
+               </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-DISTRO_FEATURES_FILTER_NATIVESDK'><glossterm>DISTRO_FEATURES_FILTER_NATIVESDK</glossterm>
+            <info>
+                DISTRO_FEATURES_FILTER_NATIVESDK[doc] = "Specifies a list of features that if present in the target DISTRO_FEATURES value should be included in DISTRO_FEATURES when building nativesdk recipes."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies a list of features that if present in the target
+                    <link linkend='var-DISTRO_FEATURES'><filename>DISTRO_FEATURES</filename></link>
+                    value should be included in
+                    <filename>DISTRO_FEATURES</filename> when building
+                    nativesdk recipes.
+                    This variable is used in addition to the features
+                    filtered using the
+                    <link linkend='var-DISTRO_FEATURES_NATIVESDK'><filename>DISTRO_FEATURES_NATIVESDK</filename></link>
+                    variable.
+               </para>
+            </glossdef>
+        </glossentry>
+
+<!--
+        <glossentry id='var-DISTRO_FEATURES_LIBC'><glossterm>DISTRO_FEATURES_LIBC</glossterm>
+            <info>
+                DISTRO_FEATURES_LIBC[doc] = "Specifies the list of distro features that are specific to the C library (libc)."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A convenience variable that specifies the list of distro
+                    features that are specific to the C library
+                    (<filename>libc</filename>).
+                    Typically, these features are prefixed with "libc-" and
+                    control which features are enabled at during the build
+                    within the C library itself.
+                </para>
+            </glossdef>
+        </glossentry>
+-->
+
+        <glossentry id='var-DISTRO_FEATURES_NATIVE'><glossterm>DISTRO_FEATURES_NATIVE</glossterm>
+            <info>
+                DISTRO_FEATURES_NATIVE[doc] = "Specifies a list of features that should be included in DISTRO_FEATURES when building native recipes."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies a list of features that should be included in
+                    <link linkend='var-DISTRO_FEATURES'><filename>DISTRO_FEATURES</filename></link>
+                    when building native recipes.
+                    This variable is used in addition to the features
+                    filtered using the
+                    <link linkend='var-DISTRO_FEATURES_FILTER_NATIVE'><filename>DISTRO_FEATURES_FILTER_NATIVE</filename></link>
+                    variable.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-DISTRO_FEATURES_NATIVESDK'><glossterm>DISTRO_FEATURES_NATIVESDK</glossterm>
+            <info>
+                DISTRO_FEATURES_NATIVESDK[doc] = "Specifies a list of features that should be included in DISTRO_FEATURES when building nativesdk recipes."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies a list of features that should be included in
+                    <link linkend='var-DISTRO_FEATURES'><filename>DISTRO_FEATURES</filename></link>
+                    when building nativesdk recipes.
+                    This variable is used in addition to the features
+                    filtered using the
+                    <link linkend='var-DISTRO_FEATURES_FILTER_NATIVESDK'><filename>DISTRO_FEATURES_FILTER_NATIVESDK</filename></link>
+                    variable.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-DISTRO_NAME'><glossterm>DISTRO_NAME</glossterm>
+            <info>
+                DISTRO_NAME[doc] = "The long name of the distribution."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The long name of the distribution.
+                    For information on the short name of the distribution, see
+                    the
+                    <link linkend='var-DISTRO'><filename>DISTRO</filename></link>
+                    variable.
+                </para>
+
+                <para>
+                    The <filename>DISTRO_NAME</filename> variable corresponds
+                    to a distribution configuration file whose root name is the
+                    same as the variable's argument and whose filename
+                    extension is <filename>.conf</filename>.
+                    For example, the distribution configuration file for the
+                    Poky distribution is named <filename>poky.conf</filename>
+                    and resides in the
+                    <filename>meta-poky/conf/distro</filename> directory of
+                    the
+                    <link linkend='source-directory'>Source Directory</link>.
+                </para>
+
+                <para>
+                    Within that <filename>poky.conf</filename> file, the
+                    <filename>DISTRO_NAME</filename> variable is set as
+                    follows:
+                    <literallayout class='monospaced'>
+     DISTRO_NAME = "Poky (Yocto Project Reference Distro)"
+                    </literallayout>
+                </para>
+
+                <para>
+                    Distribution configuration files are located in a
+                    <filename>conf/distro</filename> directory within the
+                    <link linkend='metadata'>Metadata</link>
+                    that contains the distribution configuration.
+                    <note>
+                        If the <filename>DISTRO_NAME</filename> variable is
+                        blank, a set of default configurations are used, which
+                        are specified within
+                        <filename>meta/conf/distro/defaultsetup.conf</filename>
+                        also in the Source Directory.
+                    </note>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-DISTRO_VERSION'><glossterm>DISTRO_VERSION</glossterm>
+            <info>
+                DISTRO_VERSION[doc] = "The version of the distribution."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The version of the distribution.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-DISTROOVERRIDES'><glossterm>DISTROOVERRIDES</glossterm>
+            <info>
+                DISTROOVERRIDES[doc] = "A colon-separated list of overrides specific to the current distribution."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A colon-separated list of overrides specific to the
+                    current distribution.
+                    By default, this list includes the value of
+                    <link linkend='var-DISTRO'><filename>DISTRO</filename></link>.
+                </para>
+
+                <para>
+                    You can extend <filename>DISTROOVERRIDES</filename>
+                    to add extra overrides that should apply to
+                    the distribution.
+                </para>
+
+                <para>
+                    The underlying mechanism behind
+                    <filename>DISTROOVERRIDES</filename> is simply that it
+                    is included in the default value of
+                    <link linkend='var-OVERRIDES'><filename>OVERRIDES</filename></link>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-DL_DIR'><glossterm>DL_DIR</glossterm>
+            <info>
+                DL_DIR[doc] = "The central download directory used by the build process to store downloads. By default, the directory is 'downloads' in the Build Directory."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The central download directory used by the build process to
+                    store downloads.
+                    By default, <filename>DL_DIR</filename> gets files
+                    suitable for mirroring for everything except Git
+                    repositories.
+                    If you want tarballs of Git repositories, use the
+                    <link linkend='var-BB_GENERATE_MIRROR_TARBALLS'><filename>BB_GENERATE_MIRROR_TARBALLS</filename></link>
+                    variable.
+                </para>
+
+                <para>
+                    You can set this directory by defining the
+                    <filename>DL_DIR</filename> variable in the
+                    <filename>conf/local.conf</filename> file.
+                    This directory is self-maintaining and you should not have
+                    to touch it.
+                    By default, the directory is <filename>downloads</filename>
+                    in the
+                    <link linkend='build-directory'>Build Directory</link>.
+                    <literallayout class='monospaced'>
+     #DL_DIR ?= "${TOPDIR}/downloads"
+                    </literallayout>
+                    To specify a different download directory, simply remove
+                    the comment from the line and provide your directory.
+                </para>
+
+                <para>
+                    During a first build, the system downloads many different
+                    source code tarballs from various upstream projects.
+                    Downloading can take a while, particularly if your network
+                    connection is slow.
+                    Tarballs are all stored in the directory defined by
+                    <filename>DL_DIR</filename> and the build system looks there
+                    first to find source tarballs.
+                    <note>
+                        When wiping and rebuilding, you can preserve this
+                        directory to speed up this part of subsequent
+                        builds.
+                    </note>
+                </para>
+
+                <para>
+                    You can safely share this directory between multiple builds
+                    on the same development machine.
+                    For additional information on how the build process gets
+                    source files when working behind a firewall or proxy server,
+                    see this specific question in the
+                    "<link linkend='how-does-the-yocto-project-obtain-source-code-and-will-it-work-behind-my-firewall-or-proxy-server'>FAQ</link>"
+                    chapter.
+                    You can also refer to the
+                    "<ulink url='&YOCTO_WIKI_URL;/wiki/Working_Behind_a_Network_Proxy'>Working Behind a Network Proxy</ulink>"
+                    Wiki page.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-DOC_COMPRESS'><glossterm>DOC_COMPRESS</glossterm>
+            <info>
+                DOC_COMPRESS[doc] = "When inheriting the compress_doc class, this variable sets the compression policy used when the OpenEmbedded build system compresses man pages and info pages."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When inheriting the
+                    <link linkend='ref-classes-compress_doc'><filename>compress_doc</filename></link>
+                    class, this variable sets the compression policy used when
+                    the OpenEmbedded build system compresses man pages and info
+                    pages.
+                    By default, the compression method used is gz (gzip).
+                    Other policies available are xz and bz2.
+                </para>
+
+                <para>
+                    For information on policies and on how to use this
+                    variable, see the comments in the
+                    <filename>meta/classes/compress_doc.bbclass</filename> file.
+                </para>
+            </glossdef>
+        </glossentry>
+
+    </glossdiv>
+
+    <glossdiv id='var-glossary-e'><title>E</title>
+
+        <glossentry id='var-EFI_PROVIDER'><glossterm>EFI_PROVIDER</glossterm>
+            <info>
+                EFI_PROVIDER[doc] = "When building bootable images (i.e. where hddimg, iso, or wic.vmdk is in IMAGE_FSTYPES), the EFI_PROVIDER variable specifies the EFI bootloader to use."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When building bootable images (i.e. where
+                    <filename>hddimg</filename>, <filename>iso</filename>,
+                    or <filename>wic.vmdk</filename> is in
+                    <link linkend='var-IMAGE_FSTYPES'><filename>IMAGE_FSTYPES</filename></link>),
+                    the <filename>EFI_PROVIDER</filename> variable specifies
+                    the EFI bootloader to use.
+                    The default is "grub-efi", but "systemd-boot" can be used
+                    instead.
+                </para>
+
+                <para>
+                    See the
+                    <link linkend='ref-classes-systemd-boot'><filename>systemd-boot</filename></link>
+                    and
+                    <link linkend='ref-classes-image-live'><filename>image-live</filename></link>
+                    classes for more information.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-ENABLE_BINARY_LOCALE_GENERATION'><glossterm>ENABLE_BINARY_LOCALE_GENERATION</glossterm>
+            <info>
+                ENABLE_BINARY_LOCALE_GENERATION[doc] = "Controls which locales for glibc are generated during the build. The variable is useful if the target device has 64Mbytes of RAM or less."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Variable that controls which locales for
+                    <filename>glibc</filename> are generated during the
+                    build (useful if the target device has 64Mbytes
+                    of RAM or less).
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-ERR_REPORT_DIR'><glossterm>ERR_REPORT_DIR</glossterm>
+            <info>
+                ERR_REPORT_DIR[doc] = "When used with the report-error class, specifies the path used for storing the debug files created by the error reporting tool, which allows you to submit build errors you encounter to a central database."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When used with the
+                    <link linkend='ref-classes-report-error'><filename>report-error</filename></link>
+                    class, specifies the path used for storing the debug files
+                    created by the
+                    <ulink url='&YOCTO_DOCS_DEV_URL;#using-the-error-reporting-tool'>error reporting tool</ulink>,
+                    which allows you to submit build errors you encounter to a
+                    central database.
+                    By default, the value of this variable is
+                    <filename>${</filename><link linkend='var-LOG_DIR'><filename>LOG_DIR</filename></link><filename>}/error-report</filename>.
+                </para>
+
+                <para>
+                    You can set <filename>ERR_REPORT_DIR</filename> to the path
+                    you want the error reporting tool to store the debug files
+                    as follows in your <filename>local.conf</filename> file:
+                    <literallayout class='monospaced'>
+     ERR_REPORT_DIR = "<replaceable>path</replaceable>"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-ERROR_QA'><glossterm>ERROR_QA</glossterm>
+            <info>
+                ERROR_QA[doc] = "Specifies the quality assurance checks whose failures are reported as errors by the OpenEmbedded build system."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the quality assurance checks whose failures are
+                    reported as errors by the OpenEmbedded build system.
+                    You set this variable in your distribution configuration
+                    file.
+                    For a list of the checks you can control with this variable,
+                    see the
+                    "<link linkend='ref-classes-insane'><filename>insane.bbclass</filename></link>"
+                    section.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-EXCLUDE_FROM_SHLIBS'><glossterm>EXCLUDE_FROM_SHLIBS</glossterm>
+            <info>
+                EXCLUDE_FROM_SHLIBS[doc] = "Causes the OpenEmbedded build system's shared libraries resolver to exclude an entire package when scanning for shared libraries."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Triggers the OpenEmbedded build system's shared libraries
+                    resolver to exclude an entire package when scanning for
+                    shared libraries.
+                    <note>
+                        The shared libraries resolver's functionality results
+                        in part from the internal function
+                        <filename>package_do_shlibs</filename>, which is part of
+                        the
+                        <link linkend='ref-tasks-package'><filename>do_package</filename></link>
+                        task.
+                        You should be aware that the shared libraries resolver
+                        might implicitly define some dependencies between
+                        packages.
+                    </note>
+                    The <filename>EXCLUDE_FROM_SHLIBS</filename> variable is
+                    similar to the
+                    <link linkend='var-PRIVATE_LIBS'><filename>PRIVATE_LIBS</filename></link>
+                    variable, which excludes a package's particular libraries
+                    only and not the whole package.
+                </para>
+
+                <para>
+                    Use the
+                    <filename>EXCLUDE_FROM_SHLIBS</filename> variable by
+                    setting it to "1" for a particular package:
+                    <literallayout class='monospaced'>
+     EXCLUDE_FROM_SHLIBS = "1"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-EXCLUDE_FROM_WORLD'><glossterm>EXCLUDE_FROM_WORLD</glossterm>
+            <info>
+                EXCLUDE_FROM_WORLD[doc] = "Directs BitBake to exclude a recipe from world builds (i.e. bitbake world)."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Directs BitBake to exclude a recipe from world builds (i.e.
+                    <filename>bitbake world</filename>).
+                    During world builds, BitBake locates, parses and builds all
+                    recipes found in every layer exposed in the
+                    <filename>bblayers.conf</filename> configuration file.
+                </para>
+
+                <para>
+                    To exclude a recipe from a world build using this variable,
+                    set the variable to "1" in the recipe.
+                </para>
+
+                <note>
+                    Recipes added to <filename>EXCLUDE_FROM_WORLD</filename>
+                    may still be built during a world build in order to satisfy
+                    dependencies of other recipes.
+                    Adding a recipe to <filename>EXCLUDE_FROM_WORLD</filename>
+                    only ensures that the recipe is not explicitly added
+                    to the list of build targets in a world build.
+                </note>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-EXTENDPE'><glossterm>EXTENDPE</glossterm>
+            <info>
+                EXTENDPE[doc] = "Used with file and pathnames to create a prefix for a recipe's version based on the recipe's PE value. If PE is set and greater than zero for a recipe, EXTENDPE becomes that value."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Used with file and pathnames to create a prefix for a recipe's
+                    version based on the recipe's
+                    <link linkend='var-PE'><filename>PE</filename></link> value.
+                    If <filename>PE</filename> is set and greater than zero for a recipe,
+                    <filename>EXTENDPE</filename> becomes that value (e.g if
+                    <filename>PE</filename> is equal to "1" then <filename>EXTENDPE</filename>
+                    becomes "1_").
+                    If a recipe's <filename>PE</filename> is not set (the default) or is equal to
+                    zero, <filename>EXTENDPE</filename> becomes "".</para>
+                    <para>See the <link linkend='var-STAMP'><filename>STAMP</filename></link>
+                    variable for an example.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-EXTENDPKGV'><glossterm>EXTENDPKGV</glossterm>
+            <info>
+                EXTENDPKGV[doc] = "The full package version specification as it appears on the final packages produced by a recipe."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The full package version specification as it appears on the
+                    final packages produced by a recipe.
+                    The variable's value is normally used to fix a runtime
+                    dependency to the exact same version of another package
+                    in the same recipe:
+                    <literallayout class='monospaced'>
+     RDEPENDS_${PN}-additional-module = "${PN} (= ${EXTENDPKGV})"
+                    </literallayout>
+                </para>
+
+                <para>
+                    The dependency relationships are intended to force the
+                    package manager to upgrade these types of packages in
+                    lock-step.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-EXTERNAL_KERNEL_TOOLS'><glossterm>EXTERNAL_KERNEL_TOOLS</glossterm>
+            <info>
+                EXTERNAL_KERNEL_TOOLS[doc] = "Indicates kernel tools are external to the source tree."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When set, the <filename>EXTERNAL_KERNEL_TOOLS</filename>
+                    variable indicates that these tools are not in the
+                    source tree.
+                </para>
+
+                <para>
+                    When kernel tools are available in the tree, they are
+                    preferred over any externally installed tools.
+                    Setting the <filename>EXTERNAL_KERNEL_TOOLS</filename>
+                    variable tells the OpenEmbedded build system to prefer
+                    the installed external tools.
+                    See the
+                    <link linkend='ref-classes-kernel-yocto'><filename>kernel-yocto</filename></link>
+                    class in <filename>meta/classes</filename> to see how
+                    the variable is used.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-EXTERNALSRC'><glossterm>EXTERNALSRC</glossterm>
+            <info>
+                EXTERNALSRC[doc] = "If externalsrc.bbclass is inherited, this variable points to the source tree, which is outside of the OpenEmbedded build system."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When inheriting the
+                    <link linkend='ref-classes-externalsrc'><filename>externalsrc</filename></link>
+                    class, this variable points to the source tree, which is
+                    outside of the OpenEmbedded build system.
+                    When set, this variable sets the
+                    <link linkend='var-S'><filename>S</filename></link>
+                    variable, which is what the OpenEmbedded build system uses
+                    to locate unpacked recipe source code.
+                </para>
+
+                <para>
+                    For more information on
+                    <filename>externalsrc.bbclass</filename>, see the
+                    "<link linkend='ref-classes-externalsrc'><filename>externalsrc.bbclass</filename></link>"
+                    section.
+                    You can also find information on how to use this variable
+                    in the
+                    "<ulink url='&YOCTO_DOCS_DEV_URL;#building-software-from-an-external-source'>Building Software from an External Source</ulink>"
+                    section in the Yocto Project Development Tasks Manual.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-EXTERNALSRC_BUILD'><glossterm>EXTERNALSRC_BUILD</glossterm>
+            <info>
+                EXTERNALSRC_BUILD[doc] = "If externalsrc.bbclass is inherited, this variable points to the directory in which the recipe's source code is built, which is outside of the OpenEmbedded build system."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When inheriting the
+                    <link linkend='ref-classes-externalsrc'><filename>externalsrc</filename></link>
+                    class, this variable points to the directory in which the
+                    recipe's source code is built, which is outside of the
+                    OpenEmbedded build system.
+                    When set, this variable sets the
+                    <link linkend='var-B'><filename>B</filename></link>
+                    variable, which is what the OpenEmbedded build system uses
+                    to locate the Build Directory.
+                </para>
+
+                <para>
+                    For more information on
+                    <filename>externalsrc.bbclass</filename>, see the
+                    "<link linkend='ref-classes-externalsrc'><filename>externalsrc.bbclass</filename></link>"
+                    section.
+                    You can also find information on how to use this variable
+                    in the
+                    "<ulink url='&YOCTO_DOCS_DEV_URL;#building-software-from-an-external-source'>Building Software from an External Source</ulink>"
+                    section in the Yocto Project Development Tasks Manual.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-EXTRA_AUTORECONF'><glossterm>EXTRA_AUTORECONF</glossterm>
+            <info>
+                EXTRA_AUTORECONF[doc] = "Extra options passed to the autoreconf command, which is executed during do_configure."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    For recipes inheriting the
+                    <link linkend='ref-classes-autotools'><filename>autotools</filename></link>
+                    class, you can use <filename>EXTRA_AUTORECONF</filename> to
+                    specify extra options to pass to the
+                    <filename>autoreconf</filename> command that is
+                    executed during the
+                    <link linkend='ref-tasks-configure'><filename>do_configure</filename></link>
+                    task.
+                </para>
+
+                <para>
+                    The default value is "--exclude=autopoint".
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-EXTRA_IMAGE_FEATURES'><glossterm>EXTRA_IMAGE_FEATURES</glossterm>
+            <info>
+                EXTRA_IMAGE_FEATURES[doc] = "The list of additional features to include in an image. Configure this variable in the conf/local.conf file in the Build Directory."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A list of additional features to include in an image.
+                    When listing more than one feature, separate them with
+                    a space.
+                </para>
+
+                <para>
+                    Typically, you configure this variable in your
+                    <filename>local.conf</filename> file, which is found in the
+                    <link linkend='build-directory'>Build Directory</link>.
+                    Although you can use this variable from within a recipe,
+                    best practices dictate that you do not.
+                    <note>
+                        To enable primary features from within the image
+                        recipe, use the
+                        <link linkend='var-IMAGE_FEATURES'><filename>IMAGE_FEATURES</filename></link>
+                        variable.
+                    </note>
+                </para>
+
+                <para>
+                    Here are some examples of features you can add:
+                    <literallayout class='monospaced'>
+"dbg-pkgs" - Adds -dbg packages for all installed packages
+             including symbol information for debugging and
+             profiling.
+
+"debug-tweaks" - Makes an image suitable for debugging.
+                 For example, allows root logins without
+                 passwords and enables post-installation
+                 logging. See the 'allow-empty-password'
+                 and 'post-install-logging' features in
+                 the "<link linkend='ref-features-image'>Image Features</link>" section for
+                 more information.
+
+"dev-pkgs" - Adds -dev packages for all installed packages.
+             This is useful if you want to develop against
+             the libraries in the image.
+
+"read-only-rootfs" - Creates an image whose root
+                     filesystem is read-only. See the
+                     "<ulink url='&YOCTO_DOCS_DEV_URL;#creating-a-read-only-root-filesystem'>Creating a Read-Only Root Filesystem</ulink>"
+                     section in the Yocto Project
+                     Development Tasks Manual for
+                     more information
+
+"tools-debug" - Adds debugging tools such as gdb and
+                strace.
+
+"tools-sdk" - Adds development tools such as gcc, make,
+              pkgconfig and so forth.
+
+"tools-testapps" - Adds useful testing tools such as
+                   ts_print, aplay, arecord and so
+                   forth.
+
+                    </literallayout>
+                </para>
+
+                <para>
+                    For a complete list of image features that ships with the
+                    Yocto Project, see the
+                    "<link linkend="ref-features-image">Image Features</link>"
+                    section.
+                </para>
+
+                <para>
+                    For an example that shows how to customize your image by
+                    using this variable, see the
+                    "<ulink url='&YOCTO_DOCS_DEV_URL;#usingpoky-extend-customimage-imagefeatures'>Customizing Images Using Custom <filename>IMAGE_FEATURES</filename> and <filename>EXTRA_IMAGE_FEATURES</filename></ulink>"
+                    section in the Yocto Project Development Tasks Manual.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-EXTRA_IMAGECMD'><glossterm>EXTRA_IMAGECMD</glossterm>
+            <info>
+                EXTRA_IMAGECMD[doc] = "Specifies additional options for the image creation command that has been specified in IMAGE_CMD. When setting this variable, you should use an override for the associated image type."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies additional options for the image
+                    creation command that has been specified in
+                    <link linkend='var-IMAGE_CMD'><filename>IMAGE_CMD</filename></link>.
+                    When setting this variable, use an override for the
+                    associated image type.
+                    Here is an example:
+                    <literallayout class='monospaced'>
+     EXTRA_IMAGECMD_ext3 ?= "-i 4096"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-EXTRA_IMAGEDEPENDS'><glossterm>EXTRA_IMAGEDEPENDS</glossterm>
+            <info>
+                EXTRA_IMAGEDEPENDS[doc] = "A list of recipes to build that do not provide packages for installing into the root filesystem. Use this variable to list recipes that are required to build the final image, but not needed in the root filesystem."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A list of recipes to build that do not provide packages
+                    for installing into the root filesystem.
+                </para>
+
+                <para>
+                    Sometimes a recipe is required to build the final image but is not
+                    needed in the root filesystem.
+                    You can use the <filename>EXTRA_IMAGEDEPENDS</filename> variable to
+                    list these recipes and thus specify the dependencies.
+                    A typical example is a required bootloader in a machine configuration.
+                </para>
+
+                <note>
+                    To add packages to the root filesystem, see the various
+                    <filename>*<link linkend='var-RDEPENDS'>RDEPENDS</link></filename>
+                    and <filename>*<link linkend='var-RRECOMMENDS'>RRECOMMENDS</link></filename>
+                    variables.
+                </note>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-EXTRANATIVEPATH'><glossterm>EXTRANATIVEPATH</glossterm>
+            <info>
+                EXTRANATIVEPATH[doc] = "A list of subdirectories of ${STAGING_BINDIR_NATIVE} added to the beginning of the environment variable PATH."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A list of subdirectories of
+                    <filename>${</filename><link linkend='var-STAGING_BINDIR_NATIVE'><filename>STAGING_BINDIR_NATIVE</filename></link><filename>}</filename>
+                    added to the beginning of the environment variable
+                    <filename>PATH</filename>.
+                    As an example, the following prepends
+                    "${STAGING_BINDIR_NATIVE}/foo:${STAGING_BINDIR_NATIVE}/bar:"
+                    to <filename>PATH</filename>:
+                    <literallayout class='monospaced'>
+     EXTRANATIVEPATH = "foo bar"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-EXTRA_OECMAKE'><glossterm>EXTRA_OECMAKE</glossterm>
+            <info>
+                EXTRA_OECMAKE[doc] = "Additional cmake options."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Additional
+                    <ulink url='https://cmake.org/overview/'>CMake</ulink>
+                    options.
+                    See the
+                    <link linkend='ref-classes-cmake'><filename>cmake</filename></link>
+                    class for additional information.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-EXTRA_OECONF'><glossterm>EXTRA_OECONF</glossterm>
+            <info>
+                EXTRA_OECONF[doc] = "Additional configure script options."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Additional <filename>configure</filename> script options.
+                    See
+                    <link linkend='var-PACKAGECONFIG_CONFARGS'><filename>PACKAGECONFIG_CONFARGS</filename></link>
+                    for additional information on passing configure script
+                    options.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-EXTRA_OEMAKE'><glossterm>EXTRA_OEMAKE</glossterm>
+            <info>
+                EXTRA_OEMAKE[doc] = "Additional GNU make options."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Additional GNU <filename>make</filename> options.
+                </para>
+
+                <para>
+                    Because the <filename>EXTRA_OEMAKE</filename> defaults to
+                    "", you need to set the variable to specify any required
+                    GNU options.
+                </para>
+
+                <para>
+                    <link linkend='var-PARALLEL_MAKE'><filename>PARALLEL_MAKE</filename></link>
+                    and
+                    <link linkend='var-PARALLEL_MAKEINST'><filename>PARALLEL_MAKEINST</filename></link>
+                    also make use of
+                    <filename>EXTRA_OEMAKE</filename> to pass the required
+                    flags.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-EXTRA_OESCONS'><glossterm>EXTRA_OESCONS</glossterm>
+            <info>
+                EXTRA_OESCONS[doc] = "When a recipe inherits the scons class, this variable specifies additional configuration options you want to pass to the scons command line."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When inheriting the
+                    <link linkend='ref-classes-scons'><filename>scons</filename></link>
+                    class, this variable specifies additional configuration
+                    options you want to pass to the
+                    <filename>scons</filename> command line.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-EXTRA_USERS_PARAMS'><glossterm>EXTRA_USERS_PARAMS</glossterm>
+            <info>
+                EXTRA_USERS_PARAMS[doc] = "When a recipe inherits the extrausers class, this variable provides image level user and group operations."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When inheriting the
+                    <link linkend='ref-classes-extrausers'><filename>extrausers</filename></link>
+                    class, this variable provides image level user and group
+                    operations.
+                    This is a more global method of providing user and group
+                    configuration as compared to using the
+                    <link linkend='ref-classes-useradd'><filename>useradd</filename></link>
+                    class, which ties user and group configurations to a
+                    specific recipe.
+                </para>
+
+                <para>
+                    The set list of commands you can configure using the
+                    <filename>EXTRA_USERS_PARAMS</filename> is shown in the
+                    <filename>extrausers</filename> class.
+                    These commands map to the normal Unix commands of the same
+                    names:
+                    <literallayout class='monospaced'>
+     # EXTRA_USERS_PARAMS = "\
+     # useradd -p '' tester; \
+     # groupadd developers; \
+     # userdel nobody; \
+     # groupdel -g video; \
+     # groupmod -g 1020 developers; \
+     # usermod -s /bin/sh tester; \
+     # "
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+    </glossdiv>
+
+    <glossdiv id='var-glossary-f'><title>F</title>
+
+        <glossentry id='var-FEATURE_PACKAGES'><glossterm>FEATURE_PACKAGES</glossterm>
+            <info>
+                FEATURE_PACKAGES[doc] = "Defines one or more packages to include in an image when a specific item is included in IMAGE_FEATURES. When setting the value, FEATURE_PACKAGES should have the name of the feature item as an override."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Defines one or more packages to include in an image when
+                    a specific item is included in
+                    <link linkend='var-IMAGE_FEATURES'><filename>IMAGE_FEATURES</filename></link>.
+                    When setting the value, <filename>FEATURE_PACKAGES</filename>
+                    should have the name of the feature item as an override.
+                    Here is an example:
+                    <literallayout class='monospaced'>
+     FEATURE_PACKAGES_widget = "<replaceable>package1</replaceable> <replaceable>package2</replaceable>"
+                    </literallayout>
+                </para>
+
+                <para>
+                    In this example, if "widget" were added to
+                    <filename>IMAGE_FEATURES</filename>, <replaceable>package1</replaceable> and
+                    <replaceable>package2</replaceable> would be included in the image.
+                    <note>
+                        Packages installed by features defined through
+                        <filename>FEATURE_PACKAGES</filename> are often package
+                        groups.
+                        While similarly named, you should not confuse the
+                        <filename>FEATURE_PACKAGES</filename> variable with
+                        package groups, which are discussed elsewhere in the
+                        documentation.
+                    </note>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-FEED_DEPLOYDIR_BASE_URI'><glossterm>FEED_DEPLOYDIR_BASE_URI</glossterm>
+            <info>
+                FEED_DEPLOYDIR_BASE_URI[doc] = "Allow to serve ipk deploy directory as an ad hoc feed (bogofeed). Set to base URL of the directory as exported by HTTP. Set of ad hoc feed configs will be generated in the image."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Points to the base URL of the server and location within
+                    the document-root that provides the metadata and
+                    packages required by OPKG to support runtime package
+                    management of IPK packages.
+                    You set this variable in your
+                    <filename>local.conf</filename> file.
+                </para>
+
+                <para>
+                    Consider the following example:
+                    <literallayout class='monospaced'>
+     FEED_DEPLOYDIR_BASE_URI = "http://192.168.7.1/BOARD-dir"
+                    </literallayout>
+                    This example assumes you are serving your packages over
+                    HTTP and your databases are located in a directory
+                    named <filename>BOARD-dir</filename>, which is underneath
+                    your HTTP server's document-root.
+                    In this case, the OpenEmbedded build system generates a set
+                    of configuration files for you in your target that work
+                    with the feed.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-FILES'><glossterm>FILES</glossterm>
+            <info>
+                FILES[doc] = "The list of directories or files that are placed in a package."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The list of files and directories that are placed in a
+                    package.
+                    The
+                    <link linkend='var-PACKAGES'><filename>PACKAGES</filename></link>
+                    variable lists the packages generated by a recipe.
+                </para>
+
+                <para>
+                    To use the <filename>FILES</filename> variable, provide a
+                    package name override that identifies the resulting package.
+                    Then, provide a space-separated list of files or paths
+                    that identify the files you want included as part of the
+                    resulting package.
+                    Here is an example:
+                    <literallayout class='monospaced'>
+     FILES_${PN} += "${bindir}/mydir1 ${bindir}/mydir2/myfile"
+                    </literallayout>
+                    <note><title>Notes</title>
+                        <itemizedlist>
+                            <listitem><para>
+                                When specifying files or paths, you can pattern
+                                match using Python's
+                                <ulink url='https://docs.python.org/2/library/glob.html'><filename>glob</filename></ulink>
+                                syntax.
+                                For details on the syntax, see the
+                                documentation by following the previous link.
+                                </para></listitem>
+                            <listitem><para>
+                                When specifying paths as part of the
+                                <filename>FILES</filename> variable, it is
+                                good practice to use appropriate path
+                                variables.
+                                For example, use <filename>${sysconfdir}</filename>
+                                rather than <filename>/etc</filename>, or
+                                <filename>${bindir}</filename> rather than
+                                <filename>/usr/bin</filename>.
+                                You can find a list of these variables at the
+                                top of the
+                                <filename>meta/conf/bitbake.conf</filename>
+                                file in the
+                                <link linkend='source-directory'>Source Directory</link>.
+                                You will also find the default values of the
+                                various <filename>FILES_*</filename> variables
+                                in this file.
+                                </para></listitem>
+                        </itemizedlist>
+                    </note>
+                </para>
+
+                <para>
+                    If some of the files you provide with the
+                    <filename>FILES</filename> variable are editable and you
+                    know they should not be overwritten during the package
+                    update process by the Package Management System (PMS), you
+                    can identify these files so that the PMS will not
+                    overwrite them.
+                    See the
+                    <link linkend='var-CONFFILES'><filename>CONFFILES</filename></link>
+                    variable for information on how to identify these files to
+                    the PMS.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-FILES_SOLIBSDEV'><glossterm>FILES_SOLIBSDEV</glossterm>
+            <info>
+                FILES_SOLIBSDEV[doc] = "Defines the full path name of the development symbolic link (symlink) for shared libraries on the target platform."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Defines the file specification to match
+                    <link linkend='var-SOLIBSDEV'><filename>SOLIBSDEV</filename></link>.
+                    In other words, <filename>FILES_SOLIBSDEV</filename>
+                    defines the full path name of the development symbolic link
+                    (symlink) for shared libraries on the target platform.
+                </para>
+
+                <para>
+                    The following statement from the
+                    <filename>bitbake.conf</filename> shows how it is set:
+                    <literallayout class='monospaced'>
+     FILES_SOLIBSDEV ?= "${base_libdir}/lib*${SOLIBSDEV} ${libdir}/lib*${SOLIBSDEV}"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-FILESEXTRAPATHS'><glossterm>FILESEXTRAPATHS</glossterm>
+            <info>
+                FILESEXTRAPATHS[doc] = "Extends the search path the OpenEmbedded build system uses when looking for files and patches as it processes recipes and append files."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Extends the search path the OpenEmbedded build system uses
+                    when looking for files and patches as it processes recipes
+                    and append files.
+                    The default directories BitBake uses when it processes
+                    recipes are initially defined by the
+                    <link linkend='var-FILESPATH'><filename>FILESPATH</filename></link>
+                    variable.
+                    You can extend <filename>FILESPATH</filename> variable
+                    by using <filename>FILESEXTRAPATHS</filename>.
+                </para>
+
+                <para>
+                    Best practices dictate that you accomplish this by using
+                    <filename>FILESEXTRAPATHS</filename> from within a
+                    <filename>.bbappend</filename> file and that you prepend
+                    paths as follows:
+                    <literallayout class='monospaced'>
+     FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
+                    </literallayout>
+                    In the above example, the build system first looks for files
+                    in a directory that has the same name as the corresponding
+                    append file.
+                    <note>
+                        <para>When extending
+                        <filename>FILESEXTRAPATHS</filename>,
+                        be sure to use the immediate expansion
+                        (<filename>:=</filename>) operator.
+                        Immediate expansion makes sure that BitBake evaluates
+                        <link linkend='var-THISDIR'><filename>THISDIR</filename></link>
+                        at the time the directive is encountered rather than at
+                        some later time when expansion might result in a
+                        directory that does not contain the files you need.
+                        </para>
+
+                        <para>Also, include the trailing separating colon
+                        character if you are prepending.
+                        The trailing colon character is necessary because you
+                        are directing BitBake to extend the path by prepending
+                        directories to the search path.</para>
+                    </note>
+                    Here is another common use:
+                    <literallayout class='monospaced'>
+     FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
+                    </literallayout>
+                    In this example, the build system extends the
+                    <filename>FILESPATH</filename> variable to include a
+                    directory named <filename>files</filename> that is in the
+                    same directory as the corresponding append file.
+                </para>
+
+                <para>
+                    This next example specifically adds three paths:
+                    <literallayout class='monospaced'>
+     FILESEXTRAPATHS_prepend := "path_1:path_2:path_3:"
+                    </literallayout>
+                </para>
+
+                <para>
+                    A final example shows how you can extend the search path
+                    and include a
+                    <link linkend='var-MACHINE'><filename>MACHINE</filename></link>-specific
+                    override, which is useful in a BSP layer:
+                    <literallayout class='monospaced'>
+     FILESEXTRAPATHS_prepend_intel-x86-common := "${THISDIR}/${PN}:"
+                    </literallayout>
+                    The previous statement appears in the
+                    <filename>linux-yocto-dev.bbappend</filename> file, which
+                    is found in the Yocto Project
+                    <ulink url='&YOCTO_DOCS_OM_URL;#source-repositories'>Source Repositories</ulink>
+                    in
+                    <filename>meta-intel/common/recipes-kernel/linux</filename>.
+                    Here, the machine override is a special
+                    <link linkend='var-PACKAGE_ARCH'><filename>PACKAGE_ARCH</filename></link>
+                    definition for multiple <filename>meta-intel</filename>
+                    machines.
+                    <note>
+                        For a layer that supports a single BSP, the override
+                        could just be the value of <filename>MACHINE</filename>.
+                    </note>
+                </para>
+
+                <para>
+                    By prepending paths in <filename>.bbappend</filename>
+                    files, you allow multiple append files that reside in
+                    different layers but are used for the same recipe to
+                    correctly extend the path.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-FILESOVERRIDES'><glossterm>FILESOVERRIDES</glossterm>
+            <info>
+                FILESOVERRIDES[doc] = "A subset of OVERRIDES used by the OpenEmbedded build system for creating FILESPATH."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A subset of <link linkend='var-OVERRIDES'><filename>OVERRIDES</filename></link>
+                    used by the OpenEmbedded build system for creating
+                    <link linkend='var-FILESPATH'><filename>FILESPATH</filename></link>.
+                    The <filename>FILESOVERRIDES</filename> variable uses
+                    overrides to automatically extend the
+                    <link linkend='var-FILESPATH'><filename>FILESPATH</filename></link>
+                    variable.
+                    For an example of how that works, see the
+                    <link linkend='var-FILESPATH'><filename>FILESPATH</filename></link>
+                    variable description.
+                    Additionally, you find more information on how overrides
+                    are handled in the
+                    "<ulink url='&YOCTO_DOCS_BB_URL;#conditional-syntax-overrides'>Conditional Syntax (Overrides)</ulink>"
+                    section of the BitBake User Manual.
+                </para>
+
+                <para>
+                    By default, the <filename>FILESOVERRIDES</filename>
+                    variable is defined as:
+                    <literallayout class='monospaced'>
+     FILESOVERRIDES = "${TRANSLATED_TARGET_ARCH}:${MACHINEOVERRIDES}:${DISTROOVERRIDES}"
+                    </literallayout>
+
+                    <note>
+                        Do not hand-edit the <filename>FILESOVERRIDES</filename>
+                        variable.
+                        The values match up with expected overrides and are
+                        used in an expected manner by the build system.
+                    </note>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-FILESPATH'><glossterm>FILESPATH</glossterm>
+            <info>
+                FILESPATH[doc] = "The default set of directories the OpenEmbedded build system uses when searching for patches and files. It is defined in the base.bbclass class found in meta/classes in the Source Directory. Do not hand-edit the FILESPATH variable."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The default set of directories the OpenEmbedded build
+                    system uses when searching for patches and files.
+                </para>
+
+                <para>
+                    During the build process, BitBake searches each directory
+                    in <filename>FILESPATH</filename> in the specified order
+                    when looking for files and patches specified by each
+                    <filename>file://</filename> URI in a recipe's
+                    <link linkend='var-SRC_URI'><filename>SRC_URI</filename></link>
+                    statements.
+                </para>
+
+                <para>
+                    The default value for the <filename>FILESPATH</filename>
+                    variable is defined in the <filename>base.bbclass</filename>
+                    class found in <filename>meta/classes</filename> in the
+                    <link linkend='source-directory'>Source Directory</link>:
+                    <literallayout class='monospaced'>
+     FILESPATH = "${@base_set_filespath(["${FILE_DIRNAME}/${BP}", \
+        "${FILE_DIRNAME}/${BPN}", "${FILE_DIRNAME}/files"], d)}"
+                    </literallayout>
+                    The <filename>FILESPATH</filename> variable is automatically
+                    extended using the overrides from the
+                    <link linkend='var-FILESOVERRIDES'><filename>FILESOVERRIDES</filename></link>
+                    variable.
+                    <note><title>Notes</title>
+                        <itemizedlist>
+                            <listitem><para>
+                                Do not hand-edit the
+                                <filename>FILESPATH</filename> variable.
+                                If you want the build system to look in
+                                directories other than the defaults, extend the
+                                <filename>FILESPATH</filename> variable by
+                                using the
+                                <link linkend='var-FILESEXTRAPATHS'><filename>FILESEXTRAPATHS</filename></link>
+                                variable.
+                                </para></listitem>
+                            <listitem><para>
+                                Be aware that the default
+                                <filename>FILESPATH</filename> directories do
+                                not map to directories in custom layers
+                                where append files
+                                (<filename>.bbappend</filename>) are used.
+                                If you want the build system to find patches
+                                or files that reside with your append files,
+                                you need to extend the
+                                <filename>FILESPATH</filename> variable by
+                                using the <filename>FILESEXTRAPATHS</filename>
+                                variable.
+                                </para></listitem>
+                        </itemizedlist>
+                    </note>
+                </para>
+
+                <para>
+                    You can take advantage of this searching behavior in
+                    useful ways.
+                    For example, consider a case where the following
+                    directory structure exists for general and machine-specific
+                    configurations:
+                    <literallayout class='monospaced'>
+     files/defconfig
+     files/MACHINEA/defconfig
+     files/MACHINEB/defconfig
+                    </literallayout>
+                    Also in the example, the <filename>SRC_URI</filename>
+                    statement contains "file://defconfig".
+                    Given this scenario, you can set
+                    <link linkend='var-MACHINE'><filename>MACHINE</filename></link>
+                    to "MACHINEA" and cause the build system to use files
+                    from <filename>files/MACHINEA</filename>.
+                    Set <filename>MACHINE</filename> to "MACHINEB" and the
+                    build system uses files from
+                    <filename>files/MACHINEB</filename>.
+                    Finally, for any machine other than "MACHINEA" and
+                    "MACHINEB", the build system uses files from
+                    <filename>files/defconfig</filename>.
+                </para>
+
+                <para>
+                    You can find out more about the patching process in the
+                    "<ulink url='&YOCTO_DOCS_OM_URL;#patching-dev-environment'>Patching</ulink>"
+                    section in the Yocto Project Overview and Concepts Manual
+                    and the
+                    "<ulink url='&YOCTO_DOCS_DEV_URL;#new-recipe-patching-code'>Patching Code</ulink>"
+                    section in the Yocto Project Development Tasks Manual.
+                    See the
+                    <link linkend='ref-tasks-patch'><filename>do_patch</filename></link>
+                    task as well.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-FILESYSTEM_PERMS_TABLES'><glossterm>FILESYSTEM_PERMS_TABLES</glossterm>
+            <info>
+                FILESYSTEM_PERMS_TABLES[doc] = "Allows you to define your own file permissions settings table as part of your configuration for the packaging process."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Allows you to define your own file permissions settings table as part of
+                    your configuration for the packaging process.
+                    For example, suppose you need a consistent set of custom permissions for
+                    a set of groups and users across an entire work project.
+                    It is best to do this in the packages themselves but this is not always
+                    possible.
+                </para>
+
+                <para>
+                    By default, the OpenEmbedded build system uses the <filename>fs-perms.txt</filename>, which
+                    is located in the <filename>meta/files</filename> folder in the
+                    <link linkend='source-directory'>Source Directory</link>.
+                    If you create your own file permissions setting table, you should place it in your
+                    layer or the distro's layer.
+                </para>
+
+                <para>
+                    You define the <filename>FILESYSTEM_PERMS_TABLES</filename> variable in the
+                    <filename>conf/local.conf</filename> file, which is found in the
+                    <link linkend='build-directory'>Build Directory</link>, to
+                    point to your custom <filename>fs-perms.txt</filename>.
+                    You can specify more than a single file permissions setting table.
+                    The paths you specify to these files must be defined within the
+                    <link linkend='var-BBPATH'><filename>BBPATH</filename></link> variable.
+                </para>
+
+                <para>
+                    For guidance on how to create your own file permissions settings table file,
+                    examine the existing <filename>fs-perms.txt</filename>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-FIT_HASH_ALG'><glossterm>FIT_HASH_ALG</glossterm>
+            <info>
+               FIT_HASH_ALG[doc] = "Specifies the hash algorithm used in creating the FIT Image."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the hash algorithm used in creating the FIT Image.
+                    For e.g. sha256.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-FIT_SIGN_ALG'><glossterm>FIT_SIGN_ALG</glossterm>
+            <info>
+               FIT_SIGN_ALG[doc] = "Specifies the signature algorithm used in creating the FIT Image."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the signature algorithm used in creating the FIT Image.
+                    For e.g. rsa2048.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-FONT_EXTRA_RDEPENDS'><glossterm>FONT_EXTRA_RDEPENDS</glossterm>
+            <info>
+                FONT_EXTRA_RDEPENDS[doc] = "When a recipe inherits the fontcache class, this variable specifies runtime dependencies for font packages. This variable defaults to 'fontconfig-utils'."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When inheriting the
+                    <link linkend='ref-classes-fontcache'><filename>fontcache</filename></link>
+                    class, this variable specifies the runtime dependencies
+                    for font packages.
+                    By default, the <filename>FONT_EXTRA_RDEPENDS</filename>
+                    is set to "fontconfig-utils".
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-FONT_PACKAGES'><glossterm>FONT_PACKAGES</glossterm>
+            <info>
+                FONT_PACKAGES[doc] = "When a recipe inherits the fontcache class, this variable identifies packages containing font files that need to be cached by Fontconfig."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When inheriting the
+                    <link linkend='ref-classes-fontcache'><filename>fontcache</filename></link>
+                    class, this variable identifies packages containing font
+                    files that need to be cached by Fontconfig.
+                    By default, the <filename>fontcache</filename> class assumes
+                    that fonts are in the recipe's main package
+                    (i.e. <filename>${</filename><link linkend='var-PN'><filename>PN</filename></link><filename>}</filename>).
+                    Use this variable if fonts you need are in a package
+                    other than that main package.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-FORCE_RO_REMOVE'><glossterm>FORCE_RO_REMOVE</glossterm>
+            <info>
+                FORCE_RO_REMOVE[doc] = "Forces the removal of the packages listed in ROOTFS_RO_UNNEEDED during the generation of the root filesystem."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Forces the removal of the packages listed in
+                    <filename>ROOTFS_RO_UNNEEDED</filename> during the
+                    generation of the root filesystem.
+                </para>
+
+                <para>
+                    Set the variable to "1" to force the removal of these
+                    packages.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-FULL_OPTIMIZATION'><glossterm>FULL_OPTIMIZATION</glossterm>
+            <info>
+                FULL_OPTIMIZATION[doc]= "The options to pass in TARGET_CFLAGS and CFLAGS when compiling an optimized system. This variable defaults to '-fexpensive-optimizations -fomit-frame-pointer -frename-registers -O2'."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The options to pass in
+                    <filename><link linkend='var-TARGET_CFLAGS'>TARGET_CFLAGS</link></filename>
+                    and <filename><link linkend='var-CFLAGS'>CFLAGS</link></filename>
+                    when compiling an optimized system.
+                    This variable defaults to
+                    "-O2 -pipe ${DEBUG_FLAGS}".
+                </para>
+            </glossdef>
+        </glossentry>
+    </glossdiv>
+
+    <glossdiv id='var-glossary-g'><title>G</title>
+
+        <glossentry id='var-GCCPIE'><glossterm>GCCPIE</glossterm>
+            <info>
+                GCCPIE[doc] = "Enables Position Independent Executables (PIE) within the GNU C Compiler (GCC)."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Enables Position Independent Executables (PIE) within the
+                    GNU C Compiler (GCC).
+                    Enabling PIE in the GCC makes Return Oriented Programming
+                    (ROP) attacks much more difficult to
+                    execute.
+                </para>
+
+                <para>
+                    By default the <filename>security_flags.inc</filename>
+                    file enables PIE by setting the variable as follows:
+                    <literallayout class='monospaced'>
+     GCCPIE ?= "--enable-default-pie"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-GCCVERSION'><glossterm>GCCVERSION</glossterm>
+            <info>
+                GCCVERSION[doc] = "Specifies the default version of the GNU C Compiler (GCC) to use."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the default version of the GNU C Compiler (GCC)
+                    used for compilation.
+                    By default, <filename>GCCVERSION</filename> is set to
+                    "8.x" in the
+                    <filename>meta/conf/distro/include/tcmode-default.inc</filename>
+                    include file:
+                    <literallayout class='monospaced'>
+     GCCVERSION ?= "8.%"
+                    </literallayout>
+                    You can override this value by setting it in a configuration
+                    file such as the <filename>local.conf</filename>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-GDB'><glossterm>GDB</glossterm>
+            <info>
+                GDB[doc] = "The minimal command and arguments to run the GNU Debugger."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The minimal command and arguments to run the GNU Debugger.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-GITDIR'><glossterm>GITDIR</glossterm>
+            <info>
+                GITDIR[doc] = "The directory where Git clones will be stored."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The directory in which a local copy of a Git repository
+                    is stored when it is cloned.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-GLIBC_GENERATE_LOCALES'><glossterm>GLIBC_GENERATE_LOCALES</glossterm>
+            <info>
+                GLIBC_GENERATE_LOCALES[doc]= "Specifies the list of GLIBC locales to generate should you not wish to generate all LIBC locals, which can be time consuming."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the list of GLIBC locales to generate should you
+                    not wish to generate all LIBC locals, which can be time
+                    consuming.
+                    <note>
+                        If you specifically remove the locale
+                        <filename>en_US.UTF-8</filename>, you must set
+                        <link linkend='var-IMAGE_LINGUAS'><filename>IMAGE_LINGUAS</filename></link>
+                        appropriately.
+                    </note>
+                </para>
+
+                <para>
+                    You can set <filename>GLIBC_GENERATE_LOCALES</filename>
+                    in your <filename>local.conf</filename> file.
+                    By default, all locales are generated.
+                    <literallayout class='monospaced'>
+      GLIBC_GENERATE_LOCALES = "en_GB.UTF-8 en_US.UTF-8"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-GROUPADD_PARAM'><glossterm>GROUPADD_PARAM</glossterm>
+            <info>
+                GROUPADD_PARAM[doc] = "When a recipe inherits the useradd class, this variable specifies for a package what parameters should be passed to the groupadd command if you wish to add a group to the system when the package is installed."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When inheriting the
+                    <link linkend='ref-classes-useradd'><filename>useradd</filename></link>
+                    class, this variable
+                    specifies for a package what parameters should be passed
+                    to the <filename>groupadd</filename> command
+                    if you wish to add a group to the system when the package
+                    is installed.
+                </para>
+
+                <para>
+                    Here is an example from the <filename>dbus</filename>
+                    recipe:
+                    <literallayout class='monospaced'>
+     GROUPADD_PARAM_${PN} = "-r netdev"
+                    </literallayout>
+                    For information on the standard Linux shell command
+                    <filename>groupadd</filename>, see
+                    <ulink url='http://linux.die.net/man/8/groupadd'></ulink>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-GROUPMEMS_PARAM'><glossterm>GROUPMEMS_PARAM</glossterm>
+            <info>
+                GROUPMEMS_PARAM[doc] = "When a recipe inherits the useradd class, this variable specifies for a package what parameters should be passed to the groupmems command if you wish to modify the members of a group when the package is installed."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When inheriting the
+                    <link linkend='ref-classes-useradd'><filename>useradd</filename></link>
+                    class, this variable
+                    specifies for a package what parameters should be passed
+                    to the <filename>groupmems</filename> command
+                    if you wish to modify the members of a group when the
+                    package is installed.
+                </para>
+
+                <para>
+                    For information on the standard Linux shell command
+                    <filename>groupmems</filename>, see
+                    <ulink url='http://linux.die.net/man/8/groupmems'></ulink>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-GRUB_GFXSERIAL'><glossterm>GRUB_GFXSERIAL</glossterm>
+            <info>
+                GRUB_GFXSERIAL[doc] = "Configures the GNU GRand Unified Bootloader (GRUB) to have graphics and serial in the boot menu."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Configures the GNU GRand Unified Bootloader (GRUB) to have
+                    graphics and serial in the boot menu.
+                    Set this variable to "1" in your
+                    <filename>local.conf</filename> or distribution
+                    configuration file to enable graphics and serial
+                    in the menu.
+                </para>
+
+                <para>
+                    See the
+                    <link linkend='ref-classes-grub-efi'><filename>grub-efi</filename></link>
+                    class for more information on how this variable is used.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-GRUB_OPTS'><glossterm>GRUB_OPTS</glossterm>
+            <info>
+                GRUB_OPTS[doc] = "Additional options to add to the GNU GRand Unified Bootloader (GRUB) configuration."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Additional options to add to the GNU GRand Unified
+                    Bootloader (GRUB) configuration.
+                    Use a semi-colon character (<filename>;</filename>) to
+                    separate multiple options.
+                </para>
+
+                <para>
+                    The <filename>GRUB_OPTS</filename> variable is optional.
+                    See the
+                    <link linkend='ref-classes-grub-efi'><filename>grub-efi</filename></link>
+                    class for more information on how this variable is used.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-GRUB_TIMEOUT'><glossterm>GRUB_TIMEOUT</glossterm>
+            <info>
+                GRUB_TIMEOUT[doc] = "Specifies the timeout before executing the default LABEL in the GNU GRand Unified Bootloader (GRUB)."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the timeout before executing the default
+                    <filename>LABEL</filename> in the GNU GRand Unified
+                    Bootloader (GRUB).
+                </para>
+
+                <para>
+                    The <filename>GRUB_TIMEOUT</filename> variable is optional.
+                    See the
+                    <link linkend='ref-classes-grub-efi'><filename>grub-efi</filename></link>
+                    class for more information on how this variable is used.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-GTKIMMODULES_PACKAGES'><glossterm>GTKIMMODULES_PACKAGES</glossterm>
+            <info>
+                GTKIMMODULES_PACKAGES[doc] = "For recipes that inherit the gtk-immodules-cache class, this variable specifies the packages that contain the GTK+ input method modules being installed when the modules are in packages other than the main package."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When inheriting the
+                    <link linkend='ref-classes-gtk-immodules-cache'><filename>gtk-immodules-cache</filename></link>
+                    class, this variable specifies the packages that contain the
+                    GTK+ input method modules being installed when the modules
+                    are in packages other than the main package.
+                </para>
+            </glossdef>
+        </glossentry>
+
+    </glossdiv>
+
+    <glossdiv id='var-glossary-h'><title>H</title>
+
+        <glossentry id='var-HOMEPAGE'><glossterm>HOMEPAGE</glossterm>
+            <info>
+                HOMEPAGE[doc] = "Website where more information about the software the recipe is building can be found."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Website where more information about the software the recipe is building
+                    can be found.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-HOST_ARCH'><glossterm>HOST_ARCH</glossterm>
+            <info>
+                HOST_ARCH[doc] = "The name of the target architecture. Normally same as the TARGET_ARCH."
+
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The name of the target architecture, which is normally
+                    the same as
+                    <link linkend='var-TARGET_ARCH'><filename>TARGET_ARCH</filename></link>.
+                    The OpenEmbedded build system supports many
+                    architectures.
+                    Here is an example list of architectures supported.
+                    This list is by no means complete as the architecture
+                    is configurable:
+                    <literallayout class='monospaced'>
+     arm
+     i586
+     x86_64
+     powerpc
+     powerpc64
+     mips
+     mipsel
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-HOST_CC_ARCH'><glossterm>HOST_CC_ARCH</glossterm>
+            <info>
+                HOST_CC_ARCH[doc] = "The name of the host architecture. Normally same as the TARGET_CC_ARCH."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies architecture-specific compiler flags that are
+                    passed to the C compiler.
+                </para>
+
+                <para>
+                    Default initialization for <filename>HOST_CC_ARCH</filename>
+                    varies depending on what is being built:
+                    <itemizedlist>
+                        <listitem><para>
+                            <link linkend='var-TARGET_CC_ARCH'><filename>TARGET_CC_ARCH</filename></link>
+                            when building for the target
+                            </para></listitem>
+                        <listitem><para>
+                            <filename>BUILD_CC_ARCH</filename>
+                            when building for the build host (i.e.
+                            <filename>-native</filename>)
+                            </para></listitem>
+                        <listitem><para>
+                            <filename>BUILDSDK_CC_ARCH</filename>
+                            when building for an SDK (i.e.
+                            <filename>nativesdk-</filename>)
+                            </para></listitem>
+                    </itemizedlist>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-HOST_OS'><glossterm>HOST_OS</glossterm>
+            <info>
+                HOST_OS[doc] = "The name of the target operating system. Normally the same as the TARGET_OS."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the name of the target operating system, which
+                    is normally the same as the
+                    <link linkend='var-TARGET_OS'><filename>TARGET_OS</filename></link>.
+                    The variable can be set to "linux" for <filename>glibc</filename>-based systems and
+                    to "linux-musl" for <filename>musl</filename>.
+                    For ARM/EABI targets, there are also "linux-gnueabi" and
+                    "linux-musleabi" values possible.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-HOST_PREFIX'><glossterm>HOST_PREFIX</glossterm>
+            <info>
+                HOST_PREFIX[doc] = "The prefix for the cross compile toolchain. Normally same as the TARGET_PREFIX."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the prefix for the cross-compile toolchain.
+                    <filename>HOST_PREFIX</filename> is normally the same as
+                    <link linkend='var-TARGET_PREFIX'><filename>TARGET_PREFIX</filename></link>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-HOST_SYS'><glossterm>HOST_SYS</glossterm>
+            <info>
+                HOST_SYS[doc] = "Specifies the system, including the architecture and the operating system, for which the build is occurring in the context of the current recipe."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the system, including the architecture and the
+                    operating system, for which the build is occurring
+                    in the context of the current recipe.
+                </para>
+
+                <para>
+                    The OpenEmbedded build system automatically sets this
+                    variable based on
+                    <link linkend='var-HOST_ARCH'><filename>HOST_ARCH</filename></link>,
+                    <link linkend='var-HOST_VENDOR'><filename>HOST_VENDOR</filename></link>,
+                    and
+                    <link linkend='var-HOST_OS'><filename>HOST_OS</filename></link>
+                    variables.
+                    <note>
+                        You do not need to set the variable yourself.
+                    </note>
+                </para>
+
+                <para>
+                    Consider these two examples:
+                    <itemizedlist>
+                        <listitem><para>Given a native recipe on a 32-bit
+                            x86 machine running Linux, the value is
+                            "i686-linux".
+                            </para></listitem>
+                        <listitem><para>Given a recipe being built for a
+                            little-endian MIPS target running Linux,
+                            the value might be "mipsel-linux".
+                            </para></listitem>
+                    </itemizedlist>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-HOSTTOOLS'><glossterm>HOSTTOOLS</glossterm>
+            <info>
+                HOSTTOOLS[doc] = "A space-separated list (filter) of tools on the build host that should be allowed to be called from within build tasks."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A space-separated list (filter) of tools on the build host
+                    that should be allowed to be called from within build tasks.
+                    Using this filter helps reduce the possibility of host
+                    contamination.
+                    If a tool specified in the value of
+                    <filename>HOSTTOOLS</filename> is not found on the
+                    build host, the OpenEmbedded build system produces
+                    an error and the build is not started.
+                </para>
+
+                <para>
+                    For additional information, see
+                    <link linkend='var-HOSTTOOLS_NONFATAL'><filename>HOSTTOOLS_NONFATAL</filename></link>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-HOSTTOOLS_NONFATAL'><glossterm>HOSTTOOLS_NONFATAL</glossterm>
+            <info>
+                HOSTTOOLS_NONFATAL[doc] = "A space-separated list (filter) of tools on the build host that should be allowed to be called from within build tasks."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A space-separated list (filter) of tools on the build host
+                    that should be allowed to be called from within build tasks.
+                    Using this filter helps reduce the possibility of host
+                    contamination.
+                    Unlike
+                    <link linkend='var-HOSTTOOLS'><filename>HOSTTOOLS</filename></link>,
+                    the OpenEmbedded build system does not produce an error
+                    if a tool specified in the value of
+                    <filename>HOSTTOOLS_NONFATAL</filename> is not found on the
+                    build host.
+                    Thus, you can use <filename>HOSTTOOLS_NONFATAL</filename>
+                    to filter optional host tools.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-HOST_VENDOR'><glossterm>HOST_VENDOR</glossterm>
+            <info>
+                HOST_VENDOR[doc] = "The name of the vendor. Normally same as the TARGET_VENDOR."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the name of the vendor.
+                    <filename>HOST_VENDOR</filename> is normally the same as
+                    <link linkend='var-TARGET_VENDOR'><filename>TARGET_VENDOR</filename></link>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+    </glossdiv>
+
+    <glossdiv id='var-glossary-i'><title>I</title>
+
+        <glossentry id='var-ICECC_DISABLED'><glossterm>ICECC_DISABLED</glossterm>
+            <info>
+                ICECC_DISABLED[doc] = "Disables or enables the icecc (Icecream) function."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Disables or enables the <filename>icecc</filename>
+                    (Icecream) function.
+                    For more information on this function and best practices
+                    for using this variable, see the
+                    "<link linkend='ref-classes-icecc'><filename>icecc.bbclass</filename></link>"
+                    section.
+                </para>
+
+                <para>
+                    Setting this variable to "1" in your
+                    <filename>local.conf</filename> disables the function:
+                    <literallayout class='monospaced'>
+     ICECC_DISABLED ??= "1"
+                    </literallayout>
+                    To enable the function, set the variable as follows:
+                    <literallayout class='monospaced'>
+     ICECC_DISABLED = ""
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-ICECC_ENV_EXEC'><glossterm>ICECC_ENV_EXEC</glossterm>
+            <info>
+                ICECC_ENV_EXEC[doc] = "Points to the icecc-create-env script that you provide."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Points to the <filename>icecc-create-env</filename> script
+                    that you provide.
+                    This variable is used by the
+                    <link linkend='ref-classes-icecc'><filename>icecc</filename></link>
+                    class.
+                    You set this variable in your
+                    <filename>local.conf</filename> file.
+                </para>
+
+                <para>
+                    If you do not point to a script that you provide, the
+                    OpenEmbedded build system uses the default script provided
+                    by the <filename>icecc-create-env.bb</filename> recipe,
+                    which is a modified version and not the one that comes with
+                    <filename>icecc</filename>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-ICECC_PARALLEL_MAKE'><glossterm>ICECC_PARALLEL_MAKE</glossterm>
+            <info>
+                ICECC_PARALLEL_MAKE[doc] = "Extra options passed to the make command during the do_compile task that specify parallel compilation."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Extra options passed to the <filename>make</filename>
+                    command during the
+                    <link linkend='ref-tasks-compile'><filename>do_compile</filename></link>
+                    task that specify parallel compilation.
+                    This variable usually takes the form of
+                    "-j <replaceable>x</replaceable>", where
+                    <replaceable>x</replaceable> represents the maximum
+                    number of parallel threads <filename>make</filename> can
+                    run.
+                    <note>
+                        The options passed affect builds on all enabled
+                        machines on the network, which are machines running the
+                        <filename>iceccd</filename> daemon.
+                    </note>
+                </para>
+
+                <para>
+                    If your enabled machines support multiple cores,
+                    coming up with the maximum number of parallel threads
+                    that gives you the best performance could take some
+                    experimentation since machine speed, network lag,
+                    available memory, and existing machine loads can all
+                    affect build time.
+                    Consequently, unlike the
+                    <link linkend='var-PARALLEL_MAKE'><filename>PARALLEL_MAKE</filename></link>
+                    variable, there is no rule-of-thumb for setting
+                    <filename>ICECC_PARALLEL_MAKE</filename> to achieve
+                    optimal performance.
+                </para>
+
+                <para>
+                    If you do not set <filename>ICECC_PARALLEL_MAKE</filename>,
+                    the build system does not use it (i.e. the system does
+                    not detect and assign the number of cores as is done with
+                    <filename>PARALLEL_MAKE</filename>).
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-ICECC_PATH'><glossterm>ICECC_PATH</glossterm>
+            <info>
+                ICECC_PATH[doc] = "The location of the icecc binary."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The location of the <filename>icecc</filename> binary.
+                    You can set this variable in your
+                    <filename>local.conf</filename> file.
+                    If your <filename>local.conf</filename> file does not define
+                    this variable, the
+                    <link linkend='ref-classes-icecc'><filename>icecc</filename></link>
+                    class attempts to define it by locating
+                    <filename>icecc</filename> using <filename>which</filename>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-ICECC_USER_CLASS_BL'><glossterm>ICECC_USER_CLASS_BL</glossterm>
+            <info>
+                ICECC_USER_CLASS_BL[doc] = "Identifies user classes that you do not want the Icecream distributed compile support to consider."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Identifies user classes that you do not want the
+                    Icecream distributed compile support to consider.
+                    This variable is used by the
+                    <link linkend='ref-classes-icecc'><filename>icecc</filename></link>
+                    class.
+                    You set this variable in your
+                    <filename>local.conf</filename> file.
+                </para>
+
+                <para>
+                    When you list classes using this variable, you are
+                    "blacklisting" them from distributed compilation across
+                    remote hosts.
+                    Any classes you list will be distributed and compiled
+                    locally.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-ICECC_USER_PACKAGE_BL'><glossterm>ICECC_USER_PACKAGE_BL</glossterm>
+            <info>
+                ICECC_USER_PACKAGE_BL[doc] = "Identifies user recipes that you do not want the Icecream distributed compile support to consider."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Identifies user recipes that you do not want the
+                    Icecream distributed compile support to consider.
+                    This variable is used by the
+                    <link linkend='ref-classes-icecc'><filename>icecc</filename></link>
+                    class.
+                    You set this variable in your
+                    <filename>local.conf</filename> file.
+                </para>
+
+                <para>
+                    When you list packages using this variable, you are
+                    "blacklisting" them from distributed compilation across
+                    remote hosts.
+                    Any packages you list will be distributed and compiled
+                    locally.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-ICECC_USER_PACKAGE_WL'><glossterm>ICECC_USER_PACKAGE_WL</glossterm>
+            <info>
+                ICECC_USER_PACKAGE_WL[doc] = "Identifies user recipes that use an empty PARALLEL_MAKE variable that you want to force remote distributed compilation on using the Icecream distributed compile support."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Identifies user recipes that use an empty
+                    <link linkend='var-PARALLEL_MAKE'><filename>PARALLEL_MAKE</filename></link>
+                    variable that you want to force remote distributed
+                    compilation on using the Icecream distributed compile
+                    support.
+                    This variable is used by the
+                    <link linkend='ref-classes-icecc'><filename>icecc</filename></link>
+                    class.
+                    You set this variable in your
+                    <filename>local.conf</filename> file.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-IMAGE_BASENAME'><glossterm>IMAGE_BASENAME</glossterm>
+            <info>
+                IMAGE_BASENAME[doc] = "The base name of image output files."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The base name of image output files.
+                    This variable defaults to the recipe name
+                    (<filename>${</filename><link linkend='var-PN'><filename>PN</filename></link><filename>}</filename>).
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-IMAGE_BOOT_FILES'><glossterm>IMAGE_BOOT_FILES</glossterm>
+            <info>
+                IMAGE_BOOT_FILES[doc] = "A space-separated list of files from ${DEPLOY_DIR_IMAGE} to place in boot partition."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A space-separated list of files installed into the
+                    boot partition when preparing an image using the Wic tool
+                    with the <filename>bootimg-partition</filename> or <filename>bootimg-efi</filename> source
+                    plugin.
+                    By default, the files are installed under the same name as
+                    the source files.
+                    To change the installed name, separate it from the
+                    original name with a semi-colon (;).
+                    Source files need to be located in
+                    <link linkend='var-DEPLOY_DIR_IMAGE'><filename>DEPLOY_DIR_IMAGE</filename></link>.
+                    Here are two examples:
+
+                    <literallayout class="monospaced">
+     IMAGE_BOOT_FILES = "u-boot.img uImage;kernel"
+     IMAGE_BOOT_FILES = "u-boot.${UBOOT_SUFFIX} ${KERNEL_IMAGETYPE}"
+                    </literallayout>
+                </para>
+
+                <para>
+                    Alternatively, source files can be picked up using
+                    a glob pattern.
+                    In this case, the destination file must have the same name
+                    as the base name of the source file path.
+                    To install files into a directory within the
+                    target location, pass its name after a semi-colon
+                    (;).
+                    Here are two examples:
+                    <literallayout class="monospaced">
+     IMAGE_BOOT_FILES = "bcm2835-bootfiles/*"
+     IMAGE_BOOT_FILES = "bcm2835-bootfiles/*;boot/"
+                    </literallayout>
+                    The first example installs all files from
+                    <filename>${DEPLOY_DIR_IMAGE}/bcm2835-bootfiles</filename>
+                    into the root of the target partition.
+                    The second example installs the same files into a
+                    <filename>boot</filename> directory within the
+                    target partition.
+                </para>
+
+                <para>
+                    You can find information on how to use the Wic tool in the
+                    "<ulink url='&YOCTO_DOCS_DEV_URL;#creating-partitioned-images-using-wic'>Creating Partitioned Images Using Wic</ulink>"
+                    section of the Yocto Project Development Tasks Manual.
+                    Reference material for Wic is located in the
+                    "<ulink url='&YOCTO_DOCS_REF_URL;#ref-kickstart'>OpenEmbedded Kickstart (.wks) Reference</ulink>"
+                    chapter.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-IMAGE_CLASSES'><glossterm>IMAGE_CLASSES</glossterm>
+            <info>
+                IMAGE_CLASSES[doc] = "A list of classes that all images should inherit."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A list of classes that all images should inherit.
+                    You typically use this variable to specify the list of
+                    classes that register the different types of images
+                    the OpenEmbedded build system creates.
+                </para>
+
+                <para>
+                    The default value for <filename>IMAGE_CLASSES</filename> is
+                    <filename>image_types</filename>.
+                    You can set this variable in your
+                    <filename>local.conf</filename> or in a distribution
+                    configuration file.
+                </para>
+
+                <para>
+                    For more information, see
+                    <filename>meta/classes/image_types.bbclass</filename> in the
+                    <link linkend='source-directory'>Source Directory</link>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-IMAGE_CMD'><glossterm>IMAGE_CMD</glossterm>
+            <info>
+                IMAGE_CMD[doc] = "Specifies the command to create the image file for a specific image type, which corresponds to the value set set in IMAGE_FSTYPES, (e.g. ext3, btrfs, and so forth)."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the command to create the image file for a
+                    specific image type, which corresponds to the value set
+                    set in
+                    <link linkend='var-IMAGE_FSTYPES'><filename>IMAGE_FSTYPES</filename></link>,
+                    (e.g. <filename>ext3</filename>,
+                    <filename>btrfs</filename>, and so forth).
+                    When setting this variable, you should use
+                    an override for the associated type.
+                    Here is an example:
+                    <literallayout class='monospaced'>
+     IMAGE_CMD_jffs2 = "mkfs.jffs2 --root=${IMAGE_ROOTFS} \
+        --faketime --output=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 \
+        ${EXTRA_IMAGECMD}"
+                    </literallayout>
+                </para>
+
+                <para>
+                    You typically do not need to set this variable unless
+                    you are adding support for a new image type.
+                    For more examples on how to set this variable, see the
+                    <link linkend='ref-classes-image_types'><filename>image_types</filename></link>
+                    class file, which is
+                    <filename>meta/classes/image_types.bbclass</filename>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-IMAGE_DEVICE_TABLES'><glossterm>IMAGE_DEVICE_TABLES</glossterm>
+            <info>
+                IMAGE_DEVICE_TABLES[doc] = "Specifies one or more files that contain custom device tables that are passed to the makedevs command as part of creating an image."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies one or more files that contain custom device
+                    tables that are passed to the
+                    <filename>makedevs</filename> command as part of creating
+                    an image.
+                    These files list basic device nodes that should be
+                    created under <filename>/dev</filename> within the image.
+                    If <filename>IMAGE_DEVICE_TABLES</filename> is not set,
+                    <filename>files/device_table-minimal.txt</filename> is
+                    used, which is located by
+                    <link linkend='var-BBPATH'><filename>BBPATH</filename></link>.
+                    For details on how you should write device table files,
+                    see <filename>meta/files/device_table-minimal.txt</filename>
+                    as an example.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-IMAGE_FEATURES'><glossterm>IMAGE_FEATURES</glossterm>
+            <info>
+                IMAGE_FEATURES[doc] = "The primary list of features to include in an image. Configure this variable in an image recipe."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The primary list of features to include in an image.
+                    Typically, you configure this variable in an image recipe.
+                    Although you can use this variable from your
+                    <filename>local.conf</filename> file, which is found in the
+                    <link linkend='build-directory'>Build Directory</link>,
+                    best practices dictate that you do not.
+                    <note>
+                        To enable extra features from outside the image recipe,
+                        use the
+                        <filename><link linkend='var-EXTRA_IMAGE_FEATURES'>EXTRA_IMAGE_FEATURES</link></filename> variable.
+                    </note>
+                </para>
+
+                <para>
+                    For a list of image features that ships with the Yocto
+                    Project, see the
+                    "<link linkend="ref-features-image">Image Features</link>"
+                    section.
+                </para>
+
+                <para>
+                    For an example that shows how to customize your image by
+                    using this variable, see the
+                    "<ulink url='&YOCTO_DOCS_DEV_URL;#usingpoky-extend-customimage-imagefeatures'>Customizing Images Using Custom <filename>IMAGE_FEATURES</filename> and <filename>EXTRA_IMAGE_FEATURES</filename></ulink>"
+                    section in the Yocto Project Development Tasks Manual.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-IMAGE_FSTYPES'><glossterm>IMAGE_FSTYPES</glossterm>
+            <info>
+                IMAGE_FSTYPES[doc] = "Formats of root filesystem images that you want to have created."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the formats the OpenEmbedded build system uses
+                    during the build when creating the root filesystem.
+                    For example, setting <filename>IMAGE_FSTYPES</filename>
+                    as follows causes the build system to create root
+                    filesystems using two formats: <filename>.ext3</filename>
+                    and <filename>.tar.bz2</filename>:
+                    <literallayout class='monospaced'>
+     IMAGE_FSTYPES = "ext3 tar.bz2"
+                    </literallayout>
+                </para>
+
+                <para>
+                    For the complete list of supported image formats from which
+                    you can choose, see
+                    <link linkend='var-IMAGE_TYPES'><filename>IMAGE_TYPES</filename></link>.
+                </para>
+
+                <note><title>Notes</title>
+                    <itemizedlist>
+                        <listitem><para>
+                            If an image recipe uses the "inherit image" line
+                            and you are setting
+                            <filename>IMAGE_FSTYPES</filename> inside the
+                            recipe, you must set
+                            <filename>IMAGE_FSTYPES</filename> prior to
+                            using the "inherit image" line.
+                            </para></listitem>
+                        <listitem><para>
+                            Due to the way the OpenEmbedded build system
+                            processes this variable, you cannot update its
+                            contents by using <filename>_append</filename> or
+                            <filename>_prepend</filename>.
+                            You must use the <filename>+=</filename>
+                            operator to add one or more options to the
+                            <filename>IMAGE_FSTYPES</filename> variable.
+                            </para></listitem>
+                    </itemizedlist>
+                </note>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-IMAGE_INSTALL'><glossterm>IMAGE_INSTALL</glossterm>
+            <info>
+                IMAGE_INSTALL[doc] = "Used by recipes to specify the packages to install into an image through image.bbclass."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Used by recipes to specify the packages to install into an
+                    image through the
+                    <link linkend='ref-classes-image'><filename>image</filename></link>
+                    class.
+                    Use the <filename>IMAGE_INSTALL</filename> variable with
+                    care to avoid ordering issues.
+                </para>
+
+                <para>
+                    Image recipes set <filename>IMAGE_INSTALL</filename>
+                    to specify the packages to install into an image through
+                    <filename>image.bbclass</filename>.
+                    Additionally, "helper" classes such as the
+                    <link linkend='ref-classes-core-image'><filename>core-image</filename></link>
+                    class exist that can take lists used with
+                    <filename><link linkend='var-IMAGE_FEATURES'>IMAGE_FEATURES</link></filename>
+                    and turn them into auto-generated entries in
+                    <filename>IMAGE_INSTALL</filename> in addition to its
+                    default contents.
+                </para>
+
+                <para>
+                    When you use this variable, it is best to use it as follows:
+                    <literallayout class='monospaced'>
+     IMAGE_INSTALL_append = " <replaceable>package-name</replaceable>"
+                    </literallayout>
+                    Be sure to include the space between the quotation character
+                    and the start of the package name or names.
+                    <note><title>Caution</title>
+                        <itemizedlist>
+                            <listitem><para>
+                                When working with a
+                                <link linkend='images-core-image-minimal-initramfs'><filename>core-image-minimal-initramfs</filename></link>
+                                image, do not use the
+                                <filename>IMAGE_INSTALL</filename> variable to
+                                specify packages for installation.
+                                Instead, use the
+                                <link linkend='var-PACKAGE_INSTALL'><filename>PACKAGE_INSTALL</filename></link>
+                                variable, which allows the initial RAM
+                                filesystem (initramfs) recipe to use a fixed
+                                set of packages and not be affected by
+                                <filename>IMAGE_INSTALL</filename>.
+                                For information on creating an initramfs, see
+                                the
+                                "<ulink url='&YOCTO_DOCS_DEV_URL;#building-an-initramfs-image'>Building an Initial RAM Filesystem (initramfs) Image</ulink>"
+                                section in the Yocto Project Development Tasks
+                                Manual.
+                                </para></listitem>
+                            <listitem><para>
+                                Using <filename>IMAGE_INSTALL</filename> with
+                                the
+                                <ulink url='&YOCTO_DOCS_BB_URL;#appending-and-prepending'><filename>+=</filename></ulink>
+                                BitBake operator within the
+                                <filename>/conf/local.conf</filename> file or
+                                from within an image recipe is not recommended.
+                                Use of this operator in these ways can cause
+                                ordering issues.
+                                Since <filename>core-image.bbclass</filename>
+                                sets <filename>IMAGE_INSTALL</filename> to a
+                                default value using the
+                                <ulink url='&YOCTO_DOCS_BB_URL;#setting-a-default-value'><filename>?=</filename></ulink>
+                                operator, using a <filename>+=</filename>
+                                operation against
+                                <filename>IMAGE_INSTALL</filename> results in
+                                unexpected behavior when used within
+                                <filename>conf/local.conf</filename>.
+                                Furthermore, the same operation from within
+                                an image recipe may or may not succeed
+                                depending on the specific situation.
+                                In both these cases, the behavior is contrary
+                                to how most users expect the
+                                <filename>+=</filename> operator to work.
+                                </para></listitem>
+                        </itemizedlist>
+                    </note>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-IMAGE_LINGUAS'><glossterm>IMAGE_LINGUAS</glossterm>
+            <info>
+                IMAGE_LINGUAS[doc] = "Specifies the list of locales to install into the image during the root filesystem construction process."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the list of locales to install into the image
+                    during the root filesystem construction process.
+                    The OpenEmbedded build system automatically splits locale
+                    files, which are used for localization, into separate
+                    packages.
+                    Setting the <filename>IMAGE_LINGUAS</filename> variable
+                    ensures that any locale packages that correspond to packages
+                    already selected for installation into the image are also
+                    installed.
+                    Here is an example:
+                    <literallayout class='monospaced'>
+     IMAGE_LINGUAS = "pt-br de-de"
+                    </literallayout>
+                </para>
+
+                <para>
+                    In this example, the build system ensures any Brazilian
+                    Portuguese and German locale files that correspond to
+                    packages in the image are installed (i.e.
+                    <filename>*-locale-pt-br</filename>
+                    and <filename>*-locale-de-de</filename> as well as
+                    <filename>*-locale-pt</filename>
+                    and <filename>*-locale-de</filename>, since some software
+                    packages only provide locale files by language and not by
+                    country-specific language).
+                </para>
+
+                <para>
+                    See the
+                    <link linkend='var-GLIBC_GENERATE_LOCALES'><filename>GLIBC_GENERATE_LOCALES</filename></link>
+                    variable for information on generating GLIBC locales.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-IMAGE_MANIFEST'><glossterm>IMAGE_MANIFEST</glossterm>
+            <info>
+                IMAGE_MANIFEST[doc] = "The manifest file for the image. This file lists all the installed packages that make up the image."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The manifest file for the image.
+                    This file lists all the installed packages that make up
+                    the image.
+                    The file contains package information on a line-per-package
+                    basis as follows:
+                    <literallayout class='monospaced'>
+     <replaceable>packagename</replaceable> <replaceable>packagearch</replaceable> <replaceable>version</replaceable>
+                    </literallayout>
+                </para>
+
+                <para>
+                    The
+                    <link linkend='ref-classes-image'><filename>image</filename></link>
+                    class defines the manifest file as follows:
+                    <literallayout class='monospaced'>
+     IMAGE_MANIFEST = "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.manifest"
+                    </literallayout>
+                    The location is derived using the
+                    <link linkend='var-DEPLOY_DIR_IMAGE'><filename>DEPLOY_DIR_IMAGE</filename></link>
+                    and
+                    <link linkend='var-IMAGE_NAME'><filename>IMAGE_NAME</filename></link>
+                    variables.
+                    You can find information on how the image
+                    is created in the
+                    "<ulink url='&YOCTO_DOCS_OM_URL;#image-generation-dev-environment'>Image Generation</ulink>"
+                    section in the Yocto Project Overview and Concepts Manual.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-IMAGE_NAME'><glossterm>IMAGE_NAME</glossterm>
+            <info>
+                IMAGE_NAME[doc] = "The name of the output image files minus the extension."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The name of the output image files minus the extension.
+                    This variable is derived using the
+                    <link linkend='var-IMAGE_BASENAME'><filename>IMAGE_BASENAME</filename></link>,
+                    <link linkend='var-MACHINE'><filename>MACHINE</filename></link>,
+                    and
+                    <link linkend='var-DATETIME'><filename>DATETIME</filename></link>
+                    variables:
+                    <literallayout class='monospaced'>
+     IMAGE_NAME = "${IMAGE_BASENAME}-${MACHINE}-${DATETIME}"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-IMAGE_OVERHEAD_FACTOR'><glossterm>IMAGE_OVERHEAD_FACTOR</glossterm>
+            <info>
+                IMAGE_OVERHEAD_FACTOR[doc] = "Defines a multiplier that the build system applies to the initial image size for cases when the multiplier times the returned disk usage value for the image is greater than the sum of IMAGE_ROOTFS_SIZE and IMAGE_ROOTFS_EXTRA_SPACE."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Defines a multiplier that the build system applies to the initial image
+                    size for cases when the multiplier times the returned disk usage value
+                    for the image is greater than the sum of
+                    <filename><link linkend='var-IMAGE_ROOTFS_SIZE'>IMAGE_ROOTFS_SIZE</link></filename>
+                    and
+                    <filename><link linkend='var-IMAGE_ROOTFS_EXTRA_SPACE'>IMAGE_ROOTFS_EXTRA_SPACE</link></filename>.
+                    The result of the multiplier applied to the initial image size creates
+                    free disk space in the image as overhead.
+                    By default, the build process uses a multiplier of 1.3 for this variable.
+                    This default value results in 30% free disk space added to the image when this
+                    method is used to determine the final generated image size.
+                    You should be aware that post install scripts and the package management
+                    system uses disk space inside this overhead area.
+                    Consequently, the multiplier does not produce an image with
+                    all the theoretical free disk space.
+                    See <filename><link linkend='var-IMAGE_ROOTFS_SIZE'>IMAGE_ROOTFS_SIZE</link></filename>
+                    for information on how the build system determines the overall image size.
+                </para>
+
+                <para>
+                    The default 30% free disk space typically gives the image enough room to boot
+                    and allows for basic post installs while still leaving a small amount of
+                    free disk space.
+                    If 30% free space is inadequate, you can increase the default value.
+                    For example, the following setting gives you 50% free space added to the image:
+                    <literallayout class='monospaced'>
+     IMAGE_OVERHEAD_FACTOR = "1.5"
+                    </literallayout>
+                </para>
+
+                <para>
+                    Alternatively, you can ensure a specific amount of free disk space is added
+                    to the image by using the
+                    <filename><link linkend='var-IMAGE_ROOTFS_EXTRA_SPACE'>IMAGE_ROOTFS_EXTRA_SPACE</link></filename>
+                    variable.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-IMAGE_PKGTYPE'><glossterm>IMAGE_PKGTYPE</glossterm>
+            <info>
+                IMAGE_PKGTYPE[doc] = "Defines the package type (i.e. DEB, RPM, IPK, or TAR) used by the OpenEmbedded build system."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Defines the package type (i.e. DEB, RPM, IPK, or TAR) used
+                    by the OpenEmbedded build system.
+                    The variable is defined appropriately by the
+                    <link linkend='ref-classes-package_deb'><filename>package_deb</filename></link>,
+                    <link linkend='ref-classes-package_rpm'><filename>package_rpm</filename></link>,
+                    <link linkend='ref-classes-package_ipk'><filename>package_ipk</filename></link>,
+                    or
+                    <link linkend='ref-classes-package_tar'><filename>package_tar</filename></link>
+                    class.
+                    <note><title>Warning</title>
+                        The <filename>package_tar</filename> class is broken
+                        and is not supported.
+                        It is recommended that you do not use it.
+                    </note>
+                </para>
+
+                <para>
+                    The
+                    <link linkend='ref-classes-populate-sdk-*'><filename>populate_sdk_*</filename></link>
+                    and
+                    <link linkend='ref-classes-image'><filename>image</filename></link>
+                    classes use the <filename>IMAGE_PKGTYPE</filename> for
+                    packaging up images and SDKs.
+                </para>
+
+                <para>
+                    You should not set the <filename>IMAGE_PKGTYPE</filename>
+                    manually.
+                    Rather, the variable is set indirectly through the
+                    appropriate
+                    <link linkend='ref-classes-package'><filename>package_*</filename></link>
+                    class using the
+                    <link linkend='var-PACKAGE_CLASSES'><filename>PACKAGE_CLASSES</filename></link>
+                    variable.
+                    The OpenEmbedded build system uses the first package type
+                    (e.g. DEB, RPM, or IPK) that appears with the variable
+                    <note>
+                        Files using the <filename>.tar</filename> format are
+                        never used as a substitute packaging format for DEB,
+                        RPM, and IPK formatted files for your image or SDK.
+                    </note>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-IMAGE_POSTPROCESS_COMMAND'><glossterm>IMAGE_POSTPROCESS_COMMAND</glossterm>
+            <info>
+                IMAGE_POSTPROCESS_COMMAND[doc] = "Specifies a list of functions to call once the OpenEmbedded build system creates the final image output files."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies a list of functions to call once the
+                    OpenEmbedded build system creates the final image
+                    output files.
+                    You can specify functions separated by semicolons:
+                    <literallayout class='monospaced'>
+     IMAGE_POSTPROCESS_COMMAND += "<replaceable>function</replaceable>; ... "
+                    </literallayout>
+                </para>
+
+                <para>
+                    If you need to pass the root filesystem path to a command
+                    within the function, you can use
+                    <filename>${IMAGE_ROOTFS}</filename>, which points to
+                    the directory that becomes the root filesystem image.
+                    See the
+                    <link linkend='var-IMAGE_ROOTFS'><filename>IMAGE_ROOTFS</filename></link>
+                    variable for more information.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-IMAGE_PREPROCESS_COMMAND'><glossterm>IMAGE_PREPROCESS_COMMAND</glossterm>
+            <info>
+                IMAGE_PREPROCESS_COMMAND[doc] = "Specifies a list of functions to call before the OpenEmbedded build system creates the final image output files."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies a list of functions to call before the
+                    OpenEmbedded build system creates the final image
+                    output files.
+                    You can specify functions separated by semicolons:
+                    <literallayout class='monospaced'>
+     IMAGE_PREPROCESS_COMMAND += "<replaceable>function</replaceable>; ... "
+                    </literallayout>
+                </para>
+
+                <para>
+                    If you need to pass the root filesystem path to a command
+                    within the function, you can use
+                    <filename>${IMAGE_ROOTFS}</filename>, which points to
+                    the directory that becomes the root filesystem image.
+                    See the
+                    <link linkend='var-IMAGE_ROOTFS'><filename>IMAGE_ROOTFS</filename></link>
+                    variable for more information.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-IMAGE_ROOTFS'><glossterm>IMAGE_ROOTFS</glossterm>
+            <info>
+                IMAGE_ROOTFS[doc] = "The location of the root filesystem while it is under construction (i.e. during do_rootfs)."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The location of the root filesystem while it is under
+                    construction (i.e. during the
+                    <link linkend='ref-tasks-rootfs'><filename>do_rootfs</filename></link>
+                    task).
+                    This variable is not configurable.
+                    Do not change it.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-IMAGE_ROOTFS_ALIGNMENT'><glossterm>IMAGE_ROOTFS_ALIGNMENT</glossterm>
+            <info>
+                IMAGE_ROOTFS_ALIGNMENT[doc] = "Specifies the alignment for the output image file in Kbytes."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the alignment for the output image file in
+                    Kbytes.
+                    If the size of the image is not a multiple of
+                    this value, then the size is rounded up to the nearest
+                    multiple of the value.
+                    The default value is "1".
+                    See
+                    <link linkend='var-IMAGE_ROOTFS_SIZE'><filename>IMAGE_ROOTFS_SIZE</filename></link>
+                    for additional information.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-IMAGE_ROOTFS_EXTRA_SPACE'><glossterm>IMAGE_ROOTFS_EXTRA_SPACE</glossterm>
+            <info>
+                IMAGE_ROOTFS_EXTRA_SPACE[doc] = "Defines additional free disk space created in the image in Kbytes. By default, this variable is set to '0'."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Defines additional free disk space created in the image in Kbytes.
+                    By default, this variable is set to "0".
+                    This free disk space is added to the image after the build system determines
+                    the image size as described in
+                    <filename><link linkend='var-IMAGE_ROOTFS_SIZE'>IMAGE_ROOTFS_SIZE</link></filename>.
+                </para>
+
+                <para>
+                    This variable is particularly useful when you want to ensure that a
+                    specific amount of free disk space is available on a device after an image
+                    is installed and running.
+                    For example, to be sure 5 Gbytes of free disk space is available, set the
+                    variable as follows:
+                    <literallayout class='monospaced'>
+     IMAGE_ROOTFS_EXTRA_SPACE = "5242880"
+                    </literallayout>
+                </para>
+
+                <para>
+                    For example, the Yocto Project Build Appliance specifically requests 40 Gbytes
+                    of extra space with the line:
+                    <literallayout class='monospaced'>
+     IMAGE_ROOTFS_EXTRA_SPACE = "41943040"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-IMAGE_ROOTFS_SIZE'><glossterm>IMAGE_ROOTFS_SIZE</glossterm>
+            <info>
+                IMAGE_ROOTFS_SIZE[doc] = "Defines the size in Kbytes for the generated image."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Defines the size in Kbytes for the generated image.
+                    The OpenEmbedded build system determines the final size for the generated
+                    image using an algorithm that takes into account the initial disk space used
+                    for the generated image, a requested size for the image, and requested
+                    additional free disk space to be added to the image.
+                    Programatically, the build system determines the final size of the
+                    generated image as follows:
+                    <literallayout class='monospaced'>
+    if (image-du * overhead) &lt; rootfs-size:
+	internal-rootfs-size = rootfs-size + xspace
+    else:
+	internal-rootfs-size = (image-du * overhead) + xspace
+
+    where:
+
+      image-du = Returned value of the du command on
+                 the image.
+
+      overhead = IMAGE_OVERHEAD_FACTOR
+
+      rootfs-size = IMAGE_ROOTFS_SIZE
+
+      internal-rootfs-size = Initial root filesystem
+                             size before any modifications.
+
+      xspace = IMAGE_ROOTFS_EXTRA_SPACE
+                    </literallayout>
+                </para>
+
+                <para>
+                    See the <link linkend='var-IMAGE_OVERHEAD_FACTOR'><filename>IMAGE_OVERHEAD_FACTOR</filename></link>
+                    and <link linkend='var-IMAGE_ROOTFS_EXTRA_SPACE'><filename>IMAGE_ROOTFS_EXTRA_SPACE</filename></link>
+                    variables for related information.
+<!--                    In the above example, <filename>overhead</filename> is defined by the
+                    <filename><link linkend='var-IMAGE_OVERHEAD_FACTOR'>IMAGE_OVERHEAD_FACTOR</link></filename>
+                    variable, <filename>xspace</filename> is defined by the
+                    <filename><link linkend='var-IMAGE_ROOTFS_EXTRA_SPACE'>IMAGE_ROOTFS_EXTRA_SPACE</link></filename>
+                    variable, and <filename>du</filename> is the results of the disk usage command
+                    on the initially generated image. -->
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-IMAGE_TYPEDEP'><glossterm>IMAGE_TYPEDEP</glossterm>
+            <info>
+                IMAGE_TYPEDEP[doc] = "Specifies a dependency from one image type on another."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies a dependency from one image type on another.
+                    Here is an example from the
+                    <link linkend='ref-classes-image-live'><filename>image-live</filename></link>
+                    class:
+                    <literallayout class='monospaced'>
+     IMAGE_TYPEDEP_live = "ext3"
+                    </literallayout>
+                </para>
+
+                <para>
+                    In the previous example, the variable ensures that when
+                    "live" is listed with the
+                    <link linkend='var-IMAGE_FSTYPES'><filename>IMAGE_FSTYPES</filename></link>
+                    variable, the OpenEmbedded build system produces an
+                    <filename>ext3</filename> image first since one of the
+                    components of the live
+                    image is an <filename>ext3</filename>
+                    formatted partition containing the root
+                    filesystem.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-IMAGE_TYPES'><glossterm>IMAGE_TYPES</glossterm>
+            <info>
+                IMAGE_TYPES[doc] = "Specifies the complete list of supported image types by default."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the complete list of supported image types
+                    by default:
+                    <literallayout class='monospaced'>
+     btrfs
+     container
+     cpio
+     cpio.gz
+     cpio.lz4
+     cpio.lzma
+     cpio.xz
+     cramfs
+     ext2
+     ext2.bz2
+     ext2.gz
+     ext2.lzma
+     ext3
+     ext3.gz
+     ext4
+     ext4.gz
+     f2fs
+     hddimg
+     iso
+     jffs2
+     jffs2.sum
+     multiubi
+     squashfs
+     squashfs-lz4
+     squashfs-lzo
+     squashfs-xz
+     tar
+     tar.bz2
+     tar.gz
+     tar.lz4
+     tar.xz
+     tar.zst
+     ubi
+     ubifs
+     wic
+     wic.bz2
+     wic.gz
+     wic.lzma
+                    </literallayout>
+                </para>
+
+                <para>
+                    For more information about these types of images, see
+                    <filename>meta/classes/image_types*.bbclass</filename>
+                    in the
+                    <link linkend='source-directory'>Source Directory</link>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-INC_PR'><glossterm>INC_PR</glossterm>
+            <info>
+                INC_PR[doc] = "Helps define the recipe revision for recipes that share a common include file."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Helps define the recipe revision for recipes that share
+                    a common <filename>include</filename> file.
+                    You can think of this variable as part of the recipe revision
+                    as set from within an include file.
+                </para>
+
+                <para>
+                    Suppose, for example, you have a set of recipes that
+                    are used across several projects.
+                    And, within each of those recipes the revision
+                    (its <link linkend='var-PR'><filename>PR</filename></link>
+                    value) is set accordingly.
+                    In this case, when the revision of those recipes changes,
+                    the burden is on you to find all those recipes and
+                    be sure that they get changed to reflect the updated
+                    version of the recipe.
+                    In this scenario, it can get complicated when recipes
+                    that are used in many places and provide common functionality
+                    are upgraded to a new revision.
+                </para>
+
+                <para>
+                    A more efficient way of dealing with this situation is
+                    to set the <filename>INC_PR</filename> variable inside
+                    the <filename>include</filename> files that the recipes
+                    share and then expand the <filename>INC_PR</filename>
+                    variable within the recipes to help
+                    define the recipe revision.
+                </para>
+
+                <para>
+                    The following provides an example that shows how to use
+                    the <filename>INC_PR</filename> variable
+                    given a common <filename>include</filename> file that
+                    defines the variable.
+                    Once the variable is defined in the
+                    <filename>include</filename> file, you can use the
+                    variable to set the <filename>PR</filename> values in
+                    each recipe.
+                    You will notice that when you set a recipe's
+                    <filename>PR</filename> you can provide more granular
+                    revisioning by appending values to the
+                    <filename>INC_PR</filename> variable:
+                    <literallayout class='monospaced'>
+     recipes-graphics/xorg-font/xorg-font-common.inc:INC_PR = "r2"
+     recipes-graphics/xorg-font/encodings_1.0.4.bb:PR = "${INC_PR}.1"
+     recipes-graphics/xorg-font/font-util_1.3.0.bb:PR = "${INC_PR}.0"
+     recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
+                    </literallayout>
+                    The first line of the example establishes the baseline
+                    revision to be used for all recipes that use the
+                    <filename>include</filename> file.
+                    The remaining lines in the example are from individual
+                    recipes and show how the <filename>PR</filename> value
+                    is set.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-INCOMPATIBLE_LICENSE'><glossterm>INCOMPATIBLE_LICENSE</glossterm>
+            <info>
+                INCOMPATIBLE_LICENSE[doc] = "Specifies a space-separated list of license names (as they would appear in LICENSE) that should be excluded from the build."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies a space-separated list of license names
+                    (as they would appear in
+                    <link linkend='var-LICENSE'><filename>LICENSE</filename></link>)
+                    that should be excluded from the build.
+                    Recipes that provide no alternatives to listed incompatible
+                    licenses are not built.
+                    Packages that are individually licensed with the specified
+                    incompatible licenses will be deleted.
+                </para>
+
+                <note>
+                    This functionality is only regularly tested using
+                    the following setting:
+                    <literallayout class='monospaced'>
+     INCOMPATIBLE_LICENSE = "GPL-3.0 LGPL-3.0 AGPL-3.0"
+                    </literallayout>
+                    Although you can use other settings, you might be required
+                    to remove dependencies on or provide alternatives to
+                    components that are required to produce a functional system
+                    image.
+                </note>
+
+                <note><title>Tips</title>
+                    It is possible to define a list of licenses that are allowed
+                    to be used instead of the licenses that are excluded. To do
+                    this, define a
+                    variable <filename>COMPATIBLE_LICENSES</filename> with the
+                    names of the licences that are allowed. Then
+                    define <filename>INCOMPATIBLE_LICENSE</filename> as:
+                    <literallayout class='monospaced'>
+     INCOMPATIBLE_LICENSE = "${@' '.join(sorted(set(d.getVar('AVAILABLE_LICENSES').split()) - set(d.getVar('COMPATIBLE_LICENSES').split())))}"
+                    </literallayout>
+                    This will result
+                    in <filename>INCOMPATIBLE_LICENSE</filename> containing the
+                    names of all licences
+                    from <link linkend='var-AVAILABLE_LICENSES'><filename>AVAILABLE_LICENSES</filename></link>
+                    except the ones specified
+                    in <filename>COMPATIBLE_LICENSES</filename>, thus only
+                    allowing the latter licences to be used.
+                </note>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-INHERIT'><glossterm>INHERIT</glossterm>
+            <info>
+                INHERIT[doc] = "Causes the named class or classes to be inherited globally."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Causes the named class or classes to be inherited globally.
+                    Anonymous functions in the class or classes
+                    are not executed for the
+                    base configuration and in each individual recipe.
+                    The OpenEmbedded build system ignores changes to
+                    <filename>INHERIT</filename> in individual recipes.
+                </para>
+
+                <para>
+                    For more information on <filename>INHERIT</filename>, see
+                    the
+                    "<ulink url="&YOCTO_DOCS_BB_URL;#inherit-configuration-directive"><filename>INHERIT</filename> Configuration Directive</ulink>"
+                    section in the Bitbake User Manual.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-INHERIT_DISTRO'><glossterm>INHERIT_DISTRO</glossterm>
+            <info>
+                INHERIT_DISTRO[doc] = "Lists classes that will be inherited at the distribution level. It is unlikely that you want to edit this variable."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Lists classes that will be inherited at the
+                    distribution level.
+                    It is unlikely that you want to edit this variable.
+                </para>
+
+                <para>
+                    The default value of the variable is set as follows in the
+                    <filename>meta/conf/distro/defaultsetup.conf</filename>
+                    file:
+                    <literallayout class='monospaced'>
+     INHERIT_DISTRO ?= "debian devshell sstate license"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-INHIBIT_DEFAULT_DEPS'><glossterm>INHIBIT_DEFAULT_DEPS</glossterm>
+            <info>
+                INHIBIT_DEFAULT_DEPS[doc] = "Prevents the default dependencies, namely the C compiler and standard C library (libc), from being added to DEPENDS."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Prevents the default dependencies, namely the C compiler
+                    and standard C library (libc), from being added to
+                    <link linkend='var-DEPENDS'><filename>DEPENDS</filename></link>.
+                    This variable is usually used within recipes that do not
+                    require any compilation using the C compiler.
+                </para>
+
+                <para>
+                    Set the variable to "1" to prevent the default dependencies
+                    from being added.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-INHIBIT_PACKAGE_DEBUG_SPLIT'><glossterm>INHIBIT_PACKAGE_DEBUG_SPLIT</glossterm>
+            <info>
+                INHIBIT_PACKAGE_DEBUG_SPLIT[doc] = "If set to "1", prevents the OpenEmbedded build system from splitting out debug information during packaging"
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Prevents the OpenEmbedded build system from splitting
+                    out debug information during packaging.
+                    By default, the build system splits out debugging
+                    information during the
+                    <link linkend='ref-tasks-package'><filename>do_package</filename></link>
+                    task.
+                    For more information on how debug information is split out,
+                    see the
+                    <link linkend='var-PACKAGE_DEBUG_SPLIT_STYLE'><filename>PACKAGE_DEBUG_SPLIT_STYLE</filename></link>
+                    variable.
+                </para>
+
+                <para>
+                    To prevent the build system from splitting out
+                    debug information during packaging, set the
+                    <filename>INHIBIT_PACKAGE_DEBUG_SPLIT</filename> variable
+                    as follows:
+                    <literallayout class='monospaced'>
+     INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-INHIBIT_PACKAGE_STRIP'><glossterm>INHIBIT_PACKAGE_STRIP</glossterm>
+            <info>
+                INHIBIT_PACKAGE_STRIP[doc] = "If set to "1", causes the build to not strip binaries in resulting packages."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    If set to "1", causes the build to not strip binaries in
+                    resulting packages and prevents the
+                    <filename>-dbg</filename> package from containing the
+                    source files.
+                </para>
+
+                <para>
+                     By default, the OpenEmbedded build system strips
+                     binaries and puts the debugging symbols into
+                     <filename>${</filename><link linkend='var-PN'><filename>PN</filename></link><filename>}-dbg</filename>.
+                     Consequently, you should not set
+                     <filename>INHIBIT_PACKAGE_STRIP</filename> when you plan
+                     to debug in general.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-INHIBIT_SYSROOT_STRIP'><glossterm>INHIBIT_SYSROOT_STRIP</glossterm>
+            <info>
+                INHIBIT_SYSROOT_STRIP[doc] = "If set to "1", causes the build to not strip binaries in the resulting sysroot."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    If set to "1", causes the build to not strip binaries in
+                    the resulting sysroot.
+                </para>
+
+                <para>
+                    By default, the OpenEmbedded build system strips
+                    binaries in the resulting sysroot.
+                    When you specifically set the
+                    <filename>INHIBIT_SYSROOT_STRIP</filename> variable to
+                    "1" in your recipe, you inhibit this stripping.
+                </para>
+
+                <para>
+                    If you want to use this variable, include the
+                    <link linkend='ref-classes-staging'><filename>staging</filename></link>
+                    class.
+                    This class uses a <filename>sys_strip()</filename>
+                    function to test for the variable and acts accordingly.
+                    <note>
+                        Use of the <filename>INHIBIT_SYSROOT_STRIP</filename>
+                        variable occurs in rare and special circumstances.
+                        For example, suppose you are building bare-metal
+                        firmware by using an external GCC toolchain.
+                        Furthermore, even if the toolchain's binaries are
+                        strippable, other files exist that are needed for the
+                        build that are not strippable.
+                    </note>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-INITRAMFS_FSTYPES'><glossterm>INITRAMFS_FSTYPES</glossterm>
+            <info>
+                INITRAMFS_FSTYPES[doc] = "Defines the format for the output image of an initial RAM filesystem (initramfs), which is used during boot."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Defines the format for the output image of an initial
+                    RAM filesystem (initramfs), which is used during boot.
+                    Supported formats are the same as those supported by the
+                    <link linkend='var-IMAGE_FSTYPES'><filename>IMAGE_FSTYPES</filename></link>
+                    variable.
+                </para>
+
+                <para>
+                    The default value of this variable, which is set in the
+                    <filename>meta/conf/bitbake.conf</filename> configuration
+                    file in the
+                    <link linkend='source-directory'>Source Directory</link>,
+                    is "cpio.gz".
+                    The Linux kernel's initramfs mechanism, as opposed to the
+                    initial RAM filesystem
+                    <ulink url='https://en.wikipedia.org/wiki/Initrd'>initrd</ulink>
+                    mechanism, expects an optionally compressed cpio
+                    archive.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-INITRAMFS_IMAGE'><glossterm>INITRAMFS_IMAGE</glossterm>
+            <info>
+                INITRAMFS_IMAGE[doc] = "Specifies the PROVIDES name of an image recipe that is used to build an initial RAM filesystem (initramfs) image."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the
+                    <link linkend='var-PROVIDES'><filename>PROVIDES</filename></link>
+                    name of an image recipe that is used to build an initial
+                    RAM filesystem (initramfs) image.
+                    In other words, the <filename>INITRAMFS_IMAGE</filename>
+                    variable causes an additional recipe to be built as
+                    a dependency to whatever root filesystem recipe you
+                    might be using (e.g. <filename>core-image-sato</filename>).
+                    The initramfs image recipe you provide should set
+                    <link linkend='var-IMAGE_FSTYPES'><filename>IMAGE_FSTYPES</filename></link>
+                    to
+                    <link linkend='var-INITRAMFS_FSTYPES'><filename>INITRAMFS_FSTYPES</filename></link>.
+                </para>
+
+                <para>
+                    An initramfs image provides a temporary root filesystem
+                    used for early system initialization (e.g. loading of
+                    modules needed to locate and mount the "real" root
+                    filesystem).
+                    <note>
+                        See the <filename>meta/recipes-core/images/core-image-minimal-initramfs.bb</filename>
+                        recipe in the
+                        <link linkend='source-directory'>Source Directory</link>
+                        for an example initramfs recipe.
+                        To select this sample recipe as the one built
+                        to provide the initramfs image,
+                        set <filename>INITRAMFS_IMAGE</filename> to
+                        "core-image-minimal-initramfs".
+                    </note>
+                </para>
+
+                <para>
+                    You can also find more information by referencing the
+                    <filename>meta-poky/conf/local.conf.sample.extended</filename>
+                    configuration file in the Source Directory,
+                    the
+                    <link linkend='ref-classes-image'><filename>image</filename></link>
+                    class, and the
+                    <link linkend='ref-classes-kernel'><filename>kernel</filename></link>
+                    class to see how to use the
+                    <filename>INITRAMFS_IMAGE</filename> variable.
+                </para>
+
+                <para>
+                    If <filename>INITRAMFS_IMAGE</filename> is empty, which is
+                    the default, then no initramfs image is built.
+                </para>
+
+                <para>
+                    For more information, you can also see the
+                    <link linkend='var-INITRAMFS_IMAGE_BUNDLE'><filename>INITRAMFS_IMAGE_BUNDLE</filename></link>
+                    variable, which allows the generated image to be bundled
+                    inside the kernel image.
+                    Additionally, for information on creating an initramfs
+                    image, see the
+                    "<ulink url='&YOCTO_DOCS_DEV_URL;#building-an-initramfs-image'>Building an Initial RAM Filesystem (initramfs) Image</ulink>"
+                    section in the Yocto Project Development Tasks Manual.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-INITRAMFS_IMAGE_BUNDLE'><glossterm>INITRAMFS_IMAGE_BUNDLE</glossterm>
+            <info>
+                INITRAMFS_IMAGE_BUNDLE[doc] = "Controls whether or not the image recipe specified by INITRAMFS_IMAGE is run through an extra pass (do_bundle_initramfs) during kernel compilation in order to build a single binary that contains both the kernel image and the initial RAM filesystem (initramfs)."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Controls whether or not the image recipe specified by
+                    <link linkend='var-INITRAMFS_IMAGE'><filename>INITRAMFS_IMAGE</filename></link>
+                    is run through an extra pass
+                    (<link linkend='ref-tasks-bundle_initramfs'><filename>do_bundle_initramfs</filename></link>)
+                    during kernel compilation in order to build a single binary
+                    that contains both the kernel image and the initial RAM
+                    filesystem (initramfs) image.
+                    This makes use of the
+                    <link linkend='var-CONFIG_INITRAMFS_SOURCE'><filename>CONFIG_INITRAMFS_SOURCE</filename></link>
+                    kernel feature.
+                    <note>
+                        Using an extra compilation pass to bundle the initramfs
+                        avoids a circular dependency between the kernel recipe and
+                        the initramfs recipe should the initramfs include kernel
+                        modules.
+                        Should that be the case, the initramfs recipe depends on
+                        the kernel for the kernel modules, and the kernel depends
+                        on the initramfs recipe since the initramfs is bundled
+                        inside the kernel image.
+                    </note>
+                </para>
+
+                <para>
+                    The combined binary is deposited into the
+                    <filename>tmp/deploy</filename> directory, which is part
+                    of the
+                    <link linkend='build-directory'>Build Directory</link>.
+                </para>
+
+                <para>
+                    Setting the variable to "1" in a configuration file causes the
+                    OpenEmbedded build system to generate a kernel image with the
+                    initramfs specified in <filename>INITRAMFS_IMAGE</filename>
+                    bundled within:
+                    <literallayout class='monospaced'>
+     INITRAMFS_IMAGE_BUNDLE = "1"
+                    </literallayout>
+                    By default, the
+                    <link linkend='ref-classes-kernel'><filename>kernel</filename></link>
+                    class sets this variable to a null string as follows:
+                    <literallayout class='monospaced'>
+     INITRAMFS_IMAGE_BUNDLE ?= ""
+                    </literallayout>
+                    <note>
+                        You must set the
+                        <filename>INITRAMFS_IMAGE_BUNDLE</filename> variable in
+                        a configuration file.
+                        You cannot set the variable in a recipe file.
+                    </note>
+                    See the
+                    <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/poky/tree/meta-poky/conf/local.conf.sample.extended'><filename>local.conf.sample.extended</filename></ulink>
+                    file for additional information.
+                    Also, for information on creating an initramfs, see the
+                    "<ulink url='&YOCTO_DOCS_DEV_URL;#building-an-initramfs-image'>Building an Initial RAM Filesystem (initramfs) Image</ulink>"
+                    section in the Yocto Project Development Tasks Manual.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-INITRAMFS_LINK_NAME'><glossterm>INITRAMFS_LINK_NAME</glossterm>
+            <info>
+                INITRAMFS_LINK_NAME[doc] = "The link name of the initial RAM filesystem image."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The link name of the initial RAM filesystem image.
+                    This variable is set in the
+                    <filename>meta/classes/kernel-artifact-names.bbclass</filename>
+                    file as follows:
+                    <literallayout class='monospaced'>
+     INITRAMFS_LINK_NAME ?= "initramfs-${KERNEL_ARTIFACT_LINK_NAME}"
+                    </literallayout>
+                    The value of the <filename>KERNEL_ARTIFACT_LINK_NAME</filename>
+                    variable, which is set in the same file, has the following
+                    value:
+                    <literallayout class='monospaced'>
+     KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}"
+                    </literallayout>
+                </para>
+
+                <para>
+                    See the
+                    <link linkend='var-MACHINE'><filename>MACHINE</filename></link>
+                    variable for additional information.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-INITRAMFS_NAME'><glossterm>INITRAMFS_NAME</glossterm>
+            <info>
+                INITRAMFS_NAME[doc] = "The base name of the initial RAM filesystem image."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The base name of the initial RAM filesystem image.
+                    This variable is set in the
+                    <filename>meta/classes/kernel-artifact-names.bbclass</filename>
+                    file as follows:
+                    <literallayout class='monospaced'>
+     INITRAMFS_NAME ?= "initramfs-${KERNEL_ARTIFACT_NAME}"
+                    </literallayout>
+                    The value of the
+                    <link linkend='var-KERNEL_ARTIFACT_NAME'><filename>KERNEL_ARTIFACT_NAME</filename></link>
+                    variable, which is set in the same file, has the following
+                    value:
+                    <literallayout class='monospaced'>
+     KERNEL_ARTIFACT_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}${IMAGE_VERSION_SUFFIX}"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-INITRD'><glossterm>INITRD</glossterm>
+            <info>
+                INITRD[doc] = "Indicates a list of filesystem images to concatenate and use as an initial RAM disk (initrd)."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Indicates list of filesystem images to concatenate and use
+                    as an initial RAM disk (<filename>initrd</filename>).
+                </para>
+
+                <para>
+                    The <filename>INITRD</filename> variable is an optional
+                    variable used with the
+                    <link linkend='ref-classes-image-live'><filename>image-live</filename></link>
+                    class.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-INITRD_IMAGE'><glossterm>INITRD_IMAGE</glossterm>
+            <info>
+                INITRD_IMAGE[doc] = "When building a "live" bootable image (i.e. when IMAGE_FSTYPES contains "live"), INITRD_IMAGE specifies the image recipe that should be built to provide the initial RAM disk image."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When building a "live" bootable image (i.e. when
+                    <link linkend='var-IMAGE_FSTYPES'><filename>IMAGE_FSTYPES</filename></link>
+                    contains "live"), <filename>INITRD_IMAGE</filename>
+                    specifies the image recipe that should be built
+                    to provide the initial RAM disk image.
+                    The default value is "core-image-minimal-initramfs".
+                </para>
+
+                <para>
+                    See the
+                    <link linkend='ref-classes-image-live'><filename>image-live</filename></link>
+                    class for more information.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-INITSCRIPT_NAME'><glossterm>INITSCRIPT_NAME</glossterm>
+            <info>
+                INITSCRIPT_NAME[doc] = "The filename of the initialization script as installed to ${sysconfdir}/init.d."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The filename of the initialization script as installed to
+                    <filename>${sysconfdir}/init.d</filename>.
+                </para>
+
+                <para>
+                    This variable is used in recipes when using <filename>update-rc.d.bbclass</filename>.
+                    The variable is mandatory.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-INITSCRIPT_PACKAGES'><glossterm>INITSCRIPT_PACKAGES</glossterm>
+            <info>
+                INITSCRIPT_PACKAGES[doc] = "A list of the packages that contain initscripts. This variable is used in recipes when using update-rc.d.bbclass. The variable is optional and defaults to the PN variable."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A list of the packages that contain initscripts.
+                    If multiple packages are specified, you need to append the package name
+                    to the other <filename>INITSCRIPT_*</filename> as an override.
+                 </para>
+
+                 <para>
+                    This variable is used in recipes when using <filename>update-rc.d.bbclass</filename>.
+                    The variable is optional and defaults to the
+                    <link linkend='var-PN'><filename>PN</filename></link> variable.
+                </para>
+           </glossdef>
+        </glossentry>
+
+        <glossentry id='var-INITSCRIPT_PARAMS'><glossterm>INITSCRIPT_PARAMS</glossterm>
+            <info>
+                INITSCRIPT_PARAMS[doc] = "Specifies the options to pass to update-rc.d. The variable is mandatory and is used in recipes when using update-rc.d.bbclass."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the options to pass to <filename>update-rc.d</filename>.
+                    Here is an example:
+                    <literallayout class='monospaced'>
+     INITSCRIPT_PARAMS = "start 99 5 2 . stop 20 0 1 6 ."
+                    </literallayout>
+                </para>
+
+                <para>
+                    In this example, the script has a runlevel of 99,
+                    starts the script in initlevels 2 and 5, and
+                    stops the script in levels 0, 1 and 6.
+                </para>
+
+                <para>
+                    The variable's default value is "defaults", which is
+                    set in the
+                    <link linkend='ref-classes-update-rc.d'><filename>update-rc.d</filename></link>
+                    class.
+                </para>
+
+                <para>
+                    The value in
+                    <filename>INITSCRIPT_PARAMS</filename> is passed through
+                    to the <filename>update-rc.d</filename> command.
+                    For more information on valid parameters, please see the
+                    <filename>update-rc.d</filename> manual page at
+                    <ulink url='http://www.tin.org/bin/man.cgi?section=8&amp;topic=update-rc.d'></ulink>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-INSANE_SKIP'><glossterm>INSANE_SKIP</glossterm>
+            <info>
+                INSANE_SKIP[doc] = "Specifies the QA checks to skip for a specific package within a recipe."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the QA checks to skip for a specific package
+                    within a recipe.
+                    For example, to skip the check for symbolic link
+                    <filename>.so</filename> files in the main package of a
+                    recipe, add the following to the recipe.
+                    The package name override must be used, which in this
+                    example is <filename>${PN}</filename>:
+                    <literallayout class='monospaced'>
+     INSANE_SKIP_${PN} += "dev-so"
+                    </literallayout>
+                </para>
+
+                <para>
+                    See the "<link linkend='ref-classes-insane'><filename>insane.bbclass</filename></link>"
+                    section for a list of the valid QA checks you can
+                    specify using this variable.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-INSTALL_TIMEZONE_FILE'><glossterm>INSTALL_TIMEZONE_FILE</glossterm>
+            <info>
+                INSTALL_TIMEZONE_FILE[doc] = "Enables installation of the /etc/timezone file."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    By default, the <filename>tzdata</filename> recipe packages
+                    an <filename>/etc/timezone</filename> file.
+                    Set the <filename>INSTALL_TIMEZONE_FILE</filename>
+                    variable to "0" at the configuration level to disable this
+                    behavior.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-IPK_FEED_URIS'><glossterm>IPK_FEED_URIS</glossterm>
+            <info>
+                IPK_FEED_URIS[doc] = "List of ipkg feed records to put into generated image."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When the IPK backend is in use and package management
+                    is enabled on the target, you can use this variable to
+                    set up <filename>opkg</filename> in the target image
+                    to point to package feeds on a nominated server.
+                    Once the feed is established, you can perform
+                    installations or upgrades using the package manager
+                    at runtime.
+                </para>
+            </glossdef>
+        </glossentry>
+
+<!--
+        <glossentry id='var-INTERCEPT_DIR'><glossterm>INTERCEPT_DIR</glossterm>
+            <glossdef>
+                <para>
+                    An environment variable that defines the directory where
+                    post installation hooks are installed for the
+                    post install environment.
+                    This variable is fixed as follows:
+                    <literallayout class='monospaced'>
+     ${WORKDIR}/intercept_scripts
+                    </literallayout>
+                </para>
+
+                <para>
+                    After installation of a target's root filesystem,
+                    post installation scripts, which are essentially bash scripts,
+                    are all executed just a single time.
+                    Limiting execution of these scripts minimizes installation
+                    time that would be lengthened due to  certain packages
+                    triggering redundant operations.
+                    For example, consider the installation of font packages
+                    as a common example.
+                    Without limiting the execution of post installation scripts,
+                    all font directories would be rescanned to create the
+                    cache after each individual font package was installed.
+                </para>
+
+                <para>
+                    Do not edit the <filename>INTERCEPT_DIR</filename>
+                    variable.
+                </para>
+            </glossdef>
+        </glossentry>
+-->
+
+    </glossdiv>
+
+<!--            <glossdiv id='var-glossary-j'><title>J</title>-->
+<!--            </glossdiv>-->
+
+   <glossdiv id='var-glossary-k'><title>K</title>
+
+        <glossentry id='var-KARCH'><glossterm>KARCH</glossterm>
+            <info>
+                KARCH[doc] = "Defines the kernel architecture used when assembling the configuration. You define the KARCH variable in the BSP Descriptions."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Defines the kernel architecture used when assembling
+                    the configuration.
+                    Architectures supported for this release are:
+                    <literallayout class='monospaced'>
+     powerpc
+     i386
+     x86_64
+     arm
+     qemu
+     mips
+                    </literallayout>
+                </para>
+
+                <para>
+                    You define the <filename>KARCH</filename> variable in the
+                    <ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#bsp-descriptions'>BSP Descriptions</ulink>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-KBRANCH'><glossterm>KBRANCH</glossterm>
+            <info>
+                KBRANCH[doc] = "A regular expression used by the build process to explicitly identify the kernel branch that is validated, patched, and configured during a build."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A regular expression used by the build process to explicitly
+                    identify the kernel branch that is validated, patched,
+                    and configured during a build.
+                    You must set this variable to ensure the exact kernel
+                    branch you want is being used by the build process.
+                </para>
+
+                <para>
+                    Values for this variable are set in the kernel's recipe
+                    file and the kernel's append file.
+                    For example, if you are using the
+                    <filename>linux-yocto_4.12</filename> kernel, the kernel
+                    recipe file is the
+                    <filename>meta/recipes-kernel/linux/linux-yocto_4.12.bb</filename>
+                    file.
+                    <filename>KBRANCH</filename> is set as follows in that
+                    kernel recipe file:
+                    <literallayout class='monospaced'>
+     KBRANCH ?= "standard/base"
+                    </literallayout>
+                </para>
+
+                <para>
+                    This variable is also used from the kernel's append file
+                    to identify the kernel branch specific to a particular
+                    machine or target hardware.
+                    Continuing with the previous kernel example, the kernel's
+                    append file (i.e.
+                    <filename>linux-yocto_4.12.bbappend</filename>) is located
+                    in the BSP layer for a given machine.
+                    For example, the append file for the Beaglebone,
+                    EdgeRouter, and generic versions of both 32 and 64-bit IA
+                    machines (<filename>meta-yocto-bsp</filename>) is named
+                    <filename>meta-yocto-bsp/recipes-kernel/linux/linux-yocto_4.12.bbappend</filename>.
+                    Here are the related statements from that append file:
+                    <literallayout class='monospaced'>
+     KBRANCH_genericx86  = "standard/base"
+     KBRANCH_genericx86-64  = "standard/base"
+     KBRANCH_edgerouter = "standard/edgerouter"
+     KBRANCH_beaglebone = "standard/beaglebone"
+                    </literallayout>
+                        The <filename>KBRANCH</filename> statements identify
+                        the kernel branch to use when building for each
+                        supported BSP.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-KBUILD_DEFCONFIG'><glossterm>KBUILD_DEFCONFIG</glossterm>
+            <info>
+                KBUILD_DEFCONFIG[doc] = "Specifies an "in-tree" kernel configuration file for use during a kernel build."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When used with the
+                    <link linkend='ref-classes-kernel-yocto'><filename>kernel-yocto</filename></link>
+                    class, specifies an "in-tree" kernel configuration file
+                    for use during a kernel build.
+                </para>
+
+                <para>
+                    Typically, when using a <filename>defconfig</filename> to
+                    configure a kernel during a build, you place the
+                    file in your layer in the same manner as you would
+                    place patch files and configuration fragment files (i.e.
+                    "out-of-tree").
+                    However, if you want to use a <filename>defconfig</filename>
+                    file that is part of the kernel tree (i.e. "in-tree"),
+                    you can use the
+                    <filename>KBUILD_DEFCONFIG</filename> variable and append
+                    the
+                    <link linkend='var-KMACHINE'><filename>KMACHINE</filename></link>
+                    variable to point to the <filename>defconfig</filename>
+                    file.
+                </para>
+
+                <para>
+                    To use the variable, set it in the append file for your
+                    kernel recipe using the following form:
+                    <literallayout class='monospaced'>
+     KBUILD_DEFCONFIG_<replaceable>KMACHINE</replaceable> ?= <replaceable>defconfig_file</replaceable>
+                    </literallayout>
+                    Here is an example from a "raspberrypi2"
+                    <filename>KMACHINE</filename> build that uses a
+                    <filename>defconfig</filename> file named
+                    "bcm2709_defconfig":
+                    <literallayout class='monospaced'>
+     KBUILD_DEFCONFIG_raspberrypi2 = "bcm2709_defconfig"
+                    </literallayout>
+                    As an alternative, you can use the following within your
+                    append file:
+                    <literallayout class='monospaced'>
+     KBUILD_DEFCONFIG_pn-linux-yocto ?= <replaceable>defconfig_file</replaceable>
+                    </literallayout>
+                    For more information on how to use the
+                    <filename>KBUILD_DEFCONFIG</filename> variable, see the
+                    "<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#using-an-in-tree-defconfig-file'>Using an "In-Tree" <filename>defconfig</filename> File</ulink>"
+                    section in the Yocto Project Linux Kernel Development
+                    Manual.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-KERNEL_ALT_IMAGETYPE'><glossterm>KERNEL_ALT_IMAGETYPE</glossterm>
+            <info>
+                KERNEL_ALT_IMAGETYPE[doc] = "Specifies an alternate kernel image type for creation."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies an alternate kernel image type for creation in
+                    addition to the kernel image type specified using the
+                    <link linkend='var-KERNEL_IMAGETYPE'><filename>KERNEL_IMAGETYPE</filename></link>
+                    variable.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-KERNEL_ARTIFACT_NAME'><glossterm>KERNEL_ARTIFACT_NAME</glossterm>
+            <info>
+                KERNEL_ARTIFACT_NAME[doc] = "Specifies the name of all of the build artifacts."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the name of all of the build artifacts.
+                    You can change the name of the artifacts by changing the
+                    <filename>KERNEL_ARTIFACT_NAME</filename> variable.
+                </para>
+
+                <para>
+                    The value of <filename>KERNEL_ARTIFACT_NAME</filename>,
+                    which is set in the
+                    <filename> meta/classes/kernel-artifact-names.bbclass</filename>
+                    file, has the following default value:
+                    <literallayout class='monospaced'>
+     KERNEL_ARTIFACT_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}${IMAGE_VERSION_SUFFIX}"
+                    </literallayout>
+                </para>
+
+                <para>
+                    See the
+                    <link linkend='var-PKGE'><filename>PKGE</filename></link>,
+                    <link linkend='var-PKGV'><filename>PKGV</filename></link>,
+                    <link linkend='var-PKGR'><filename>PKGR</filename></link>,
+                    and
+                    <link linkend='var-MACHINE'><filename>MACHINE</filename></link>
+                    variables for additional information.
+                    <note>
+                        The <filename>IMAGE_VERSION_SUFFIX</filename> variable
+                        is set to
+                        <link linkend='var-DATETIME'><filename>DATETIME</filename></link>.
+                    </note>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-KERNEL_CLASSES'><glossterm>KERNEL_CLASSES</glossterm>
+            <info>
+                KERNEL_CLASSES[doc] = "A list of classes defining kernel image types that kernel class should inherit."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A list of classes defining kernel image types that the
+                    <link linkend='ref-classes-kernel'><filename>kernel</filename></link>
+                    class should inherit.
+                    You typically append this variable to enable extended image
+                    types.
+                    An example is the "kernel-fitimage", which enables
+                    fitImage support and resides in
+                    <filename>meta/classes/kernel-fitimage.bbclass</filename>.
+                    You can register custom kernel image types with the
+                    <filename>kernel</filename> class using this variable.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-KERNEL_DEVICETREE'><glossterm>KERNEL_DEVICETREE</glossterm>
+            <info>
+                KERNEL_DEVICETREE[doc] = "Specifies the name of the generated Linux kernel device tree (i.e. the .dtb) file."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the name of the generated Linux kernel device tree
+                    (i.e. the <filename>.dtb</filename>) file.
+                    <note>
+                        Legacy support exists for specifying the full path
+                        to the device tree.
+                        However, providing just the <filename>.dtb</filename>
+                        file is preferred.
+                    </note>
+                    In order to use this variable, the
+                    <link linkend='ref-classes-kernel-devicetree'><filename>kernel-devicetree</filename></link>
+                    class must be inherited.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-KERNEL_DTB_LINK_NAME'><glossterm>KERNEL_DTB_LINK_NAME</glossterm>
+            <info>
+                KERNEL_DTB_LINK_NAME[doc] = "The link name of the kernel device tree binary (DTB)."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The link name of the kernel device tree binary (DTB).
+                    This variable is set in the
+                    <filename>meta/classes/kernel-artifact-names.bbclass</filename>
+                    file as follows:
+                    <literallayout class='monospaced'>
+     KERNEL_DTB_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}"
+                    </literallayout>
+                    The value of the <filename>KERNEL_ARTIFACT_LINK_NAME</filename>
+                    variable, which is set in the same file, has the following
+                    value:
+                    <literallayout class='monospaced'>
+     KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}"
+                    </literallayout>
+                </para>
+
+                <para>
+                    See the
+                    <link linkend='var-MACHINE'><filename>MACHINE</filename></link>
+                    variable for additional information.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-KERNEL_DTB_NAME'><glossterm>KERNEL_DTB_NAME</glossterm>
+            <info>
+                KERNEL_DTB_NAME[doc] = "The base name of the kernel device tree binary (DTB)."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The base name of the kernel device tree binary (DTB).
+                    This variable is set in the
+                    <filename>meta/classes/kernel-artifact-names.bbclass</filename>
+                    file as follows:
+                    <literallayout class='monospaced'>
+     KERNEL_DTB_NAME ?= "${KERNEL_ARTIFACT_NAME}"
+                    </literallayout>
+                    The value of the
+                    <link linkend='var-KERNEL_ARTIFACT_NAME'><filename>KERNEL_ARTIFACT_NAME</filename></link>
+                    variable, which is set in the same file, has the following
+                    value:
+                    <literallayout class='monospaced'>
+     KERNEL_ARTIFACT_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}${IMAGE_VERSION_SUFFIX}"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-KERNEL_EXTRA_ARGS'><glossterm>KERNEL_EXTRA_ARGS</glossterm>
+            <info>
+                KERNEL_EXTRA_ARGS[doc] = "Specifies additional make command-line arguments the OpenEmbedded build system passes on when compiling the kernel."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies additional <filename>make</filename>
+                    command-line arguments the OpenEmbedded build system
+                    passes on when compiling the kernel.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-KERNEL_FEATURES'><glossterm>KERNEL_FEATURES</glossterm>
+            <info>
+                KERNEL_FEATURES[doc] = "Includes additional kernel metadata. The metadata you add through this variable includes config fragments and features descriptions."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Includes additional kernel metadata.
+                    In the OpenEmbedded build system, the default Board Support
+                    Packages (BSPs)
+                    <link linkend='metadata'>Metadata</link>
+                    is provided through
+                    the <link linkend='var-KMACHINE'><filename>KMACHINE</filename></link>
+                    and
+                    <link linkend='var-KBRANCH'><filename>KBRANCH</filename></link>
+                    variables.
+                    You can use the <filename>KERNEL_FEATURES</filename>
+                    variable from within the kernel recipe or kernel append
+                    file to further add metadata for all BSPs or specific
+                    BSPs.
+                </para>
+
+                <para>
+                    The metadata you add through this variable includes config
+                    fragments and features descriptions,
+                    which usually includes patches as well as config fragments.
+                    You typically override the
+                    <filename>KERNEL_FEATURES</filename> variable for a
+                    specific machine.
+                    In this way, you can provide validated, but optional,
+                    sets of kernel configurations and features.
+                </para>
+
+                <para>
+                    For example, the following example from the
+                    <filename>linux-yocto-rt_4.12</filename> kernel recipe
+                    adds "netfilter" and "taskstats" features to all BSPs
+                    as well as "virtio" configurations to all QEMU machines.
+                    The last two statements add specific configurations to
+                    targeted machine types:
+                    <literallayout class='monospaced'>
+     KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc features/taskstats/taskstats.scc"
+     KERNEL_FEATURES_append = " ${KERNEL_EXTRA_FEATURES}"
+     KERNEL_FEATURES_append_qemuall = " cfg/virtio.scc"
+     KERNEL_FEATURES_append_qemux86 = " cfg/sound.scc cfg/paravirt_kvm.scc"
+     KERNEL_FEATURES_append_qemux86-64 = " cfg/sound.scc"                    </literallayout></para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-KERNEL_FIT_LINK_NAME'><glossterm>KERNEL_FIT_LINK_NAME</glossterm>
+            <info>
+                KERNEL_FIT_LINK_NAME[doc] = "The link name of the kernel flattened image tree (FIT) image."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The link name of the kernel flattened image tree (FIT) image.
+                    This variable is set in the
+                    <filename>meta/classes/kernel-artifact-names.bbclass</filename>
+                    file as follows:
+                    <literallayout class='monospaced'>
+     KERNEL_FIT_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}"
+                    </literallayout>
+                    The value of the <filename>KERNEL_ARTIFACT_LINK_NAME</filename>
+                    variable, which is set in the same file, has the following
+                    value:
+                    <literallayout class='monospaced'>
+     KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}"
+                    </literallayout>
+                </para>
+
+                <para>
+                    See the
+                    <link linkend='var-MACHINE'><filename>MACHINE</filename></link>
+                    variable for additional information.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-KERNEL_FIT_NAME'><glossterm>KERNEL_FIT_NAME</glossterm>
+            <info>
+                KERNEL_FIT_NAME[doc] = "The base name of the kernel flattened image tree (FIT) image."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The base name of the kernel flattened image tree (FIT) image.
+                    This variable is set in the
+                    <filename>meta/classes/kernel-artifact-names.bbclass</filename>
+                    file as follows:
+                    <literallayout class='monospaced'>
+     KERNEL_FIT_NAME ?= "${KERNEL_ARTIFACT_NAME}"
+                    </literallayout>
+                    The value of the
+                    <link linkend='var-KERNEL_ARTIFACT_NAME'><filename>KERNEL_ARTIFACT_NAME</filename></link>
+                    variable, which is set in the same file, has the following
+                    value:
+                    <literallayout class='monospaced'>
+     KERNEL_ARTIFACT_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}${IMAGE_VERSION_SUFFIX}"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-KERNEL_IMAGE_LINK_NAME'><glossterm>KERNEL_IMAGE_LINK_NAME</glossterm>
+            <info>
+                KERNEL_IMAGE_LINK_NAME[doc] = "The link name for the kernel image."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The link name for the kernel image.
+                    This variable is set in the
+                    <filename>meta/classes/kernel-artifact-names.bbclass</filename>
+                    file as follows:
+                    <literallayout class='monospaced'>
+     KERNEL_IMAGE_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}"
+                    </literallayout>
+                    The value of the <filename>KERNEL_ARTIFACT_LINK_NAME</filename>
+                    variable, which is set in the same file, has the following
+                    value:
+                    <literallayout class='monospaced'>
+     KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}"
+                    </literallayout>
+                </para>
+
+                <para>
+                    See the
+                    <link linkend='var-MACHINE'><filename>MACHINE</filename></link>
+                    variable for additional information.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-KERNEL_IMAGE_MAXSIZE'><glossterm>KERNEL_IMAGE_MAXSIZE</glossterm>
+            <info>
+                KERNEL_IMAGE_MAXSIZE[doc] = "The maximum allowable size in kilobytes of the kernel image file."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the maximum size of the kernel image file in
+                    kilobytes.
+                    If <filename>KERNEL_IMAGE_MAXSIZE</filename> is set,
+                    the size of the kernel image file is checked against
+                    the set value during the
+                    <link linkend='ref-tasks-sizecheck'><filename>do_sizecheck</filename></link>
+                    task.
+                    The task fails if the kernel image file is larger than
+                    the setting.
+                </para>
+
+                <para>
+                    <filename>KERNEL_IMAGE_MAXSIZE</filename> is useful for
+                    target devices that have a limited amount of space in
+                    which the kernel image must be stored.
+                </para>
+
+                <para>
+                    By default, this variable is not set, which means the
+                    size of the kernel image is not checked.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-KERNEL_IMAGE_NAME'><glossterm>KERNEL_IMAGE_NAME</glossterm>
+            <info>
+                KERNEL_IMAGE_NAME[doc] = "The base name of the kernel image."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The base name of the kernel image.
+                    This variable is set in the
+                    <filename>meta/classes/kernel-artifact-names.bbclass</filename>
+                    file as follows:
+                    <literallayout class='monospaced'>
+     KERNEL_IMAGE_NAME ?= "${KERNEL_ARTIFACT_NAME}"
+                    </literallayout>
+                    The value of the
+                    <link linkend='var-KERNEL_ARTIFACT_NAME'><filename>KERNEL_ARTIFACT_NAME</filename></link>
+                    variable, which is set in the same file, has the following
+                    value:
+                    <literallayout class='monospaced'>
+     KERNEL_ARTIFACT_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}${IMAGE_VERSION_SUFFIX}"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-KERNEL_IMAGETYPE'><glossterm>KERNEL_IMAGETYPE</glossterm>
+            <info>
+                KERNEL_IMAGETYPE[doc] = "The type of kernel to build for a device, usually set by the machine configuration files and defaults to 'zImage'."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The type of kernel to build for a device, usually set by the
+                    machine configuration files and defaults to "zImage".
+                    This variable is used
+                    when building the kernel and is passed to <filename>make</filename> as the target to
+                    build.
+                </para>
+
+                <para>
+                    If you want to build an alternate kernel image type, use the
+                    <link linkend='var-KERNEL_ALT_IMAGETYPE'><filename>KERNEL_ALT_IMAGETYPE</filename></link>
+                    variable.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-KERNEL_MODULE_AUTOLOAD'><glossterm>KERNEL_MODULE_AUTOLOAD</glossterm>
+            <info>
+                KERNEL_MODULE_AUTOLOAD[doc] = "Lists kernel modules that need to be auto-loaded during boot"
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Lists kernel modules that need to be auto-loaded during
+                    boot.
+                    <note>
+                        This variable replaces the deprecated
+                        <link linkend='var-module_autoload'><filename>module_autoload</filename></link>
+                        variable.
+                    </note>
+                </para>
+
+                <para>
+                    You can use the <filename>KERNEL_MODULE_AUTOLOAD</filename>
+                    variable anywhere that it can be
+                    recognized by the kernel recipe or by an out-of-tree kernel
+                    module recipe (e.g. a machine configuration file, a
+                    distribution configuration file, an append file for the
+                    recipe, or the recipe itself).
+                </para>
+
+                <para>
+                    Specify it as follows:
+                    <literallayout class='monospaced'>
+     KERNEL_MODULE_AUTOLOAD += "<replaceable>module_name1</replaceable> <replaceable>module_name2</replaceable> <replaceable>module_name3</replaceable>"
+                    </literallayout>
+                </para>
+
+                <para>
+                    Including <filename>KERNEL_MODULE_AUTOLOAD</filename> causes
+                    the OpenEmbedded build system to populate the
+                    <filename>/etc/modules-load.d/modname.conf</filename>
+                    file with the list of modules to be auto-loaded on boot.
+                    The modules appear one-per-line in the file.
+                    Here is an example of the most common use case:
+                    <literallayout class='monospaced'>
+     KERNEL_MODULE_AUTOLOAD += "<replaceable>module_name</replaceable>"
+                    </literallayout>
+                </para>
+
+                <para>
+                    For information on how to populate the
+                    <filename>modname.conf</filename> file with
+                    <filename>modprobe.d</filename> syntax lines, see the
+                    <link linkend='var-KERNEL_MODULE_PROBECONF'><filename>KERNEL_MODULE_PROBECONF</filename></link>
+                    variable.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-KERNEL_MODULE_PROBECONF'><glossterm>KERNEL_MODULE_PROBECONF</glossterm>
+            <info>
+                KERNEL_MODULE_PROBECONF[doc] = "Lists kernel modules for which the build system expects to find module_conf_* values that specify configuration for each of the modules."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Provides a list of modules for which the OpenEmbedded
+                    build system expects to find
+                    <filename>module_conf_</filename><replaceable>modname</replaceable>
+                    values that specify configuration for each of the modules.
+                    For information on how to provide those module
+                    configurations, see the
+                    <link linkend='var-module_conf'><filename>module_conf_*</filename></link>
+                    variable.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-KERNEL_PATH'><glossterm>KERNEL_PATH</glossterm>
+            <info>
+                KERNEL_PATH[doc] = "The location of the kernel sources. This variable is set to the value of the STAGING_KERNEL_DIR within the module class (module.bbclass)."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The location of the kernel sources.
+                    This variable is set to the value of the
+                    <link linkend='var-STAGING_KERNEL_DIR'><filename>STAGING_KERNEL_DIR</filename></link>
+                    within the
+                    <link linkend='ref-classes-module'><filename>module</filename></link>
+                    class.
+                    For information on how this variable is used, see the
+                    "<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#incorporating-out-of-tree-modules'>Incorporating Out-of-Tree Modules</ulink>"
+                    section in the Yocto Project Linux Kernel Development
+                    Manual.
+                </para>
+
+                <para>
+                    To help maximize compatibility with out-of-tree drivers
+                    used to build modules, the OpenEmbedded build system also
+                    recognizes and uses the
+                    <link linkend='var-KERNEL_SRC'><filename>KERNEL_SRC</filename></link>
+                    variable, which is identical to the
+                    <filename>KERNEL_PATH</filename> variable.
+                    Both variables are common variables used by external
+                    Makefiles to point to the kernel source directory.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-KERNEL_SRC'><glossterm>KERNEL_SRC</glossterm>
+            <info>
+                KERNEL_SRC[doc] = "The location of the kernel sources. This variable is set to the value of the STAGING_KERNEL_DIR within the module class (module.bbclass)."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The location of the kernel sources.
+                    This variable is set to the value of the
+                    <link linkend='var-STAGING_KERNEL_DIR'><filename>STAGING_KERNEL_DIR</filename></link>
+                    within the
+                    <link linkend='ref-classes-module'><filename>module</filename></link>
+                    class.
+                    For information on how this variable is used, see the
+                    "<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#incorporating-out-of-tree-modules'>Incorporating Out-of-Tree Modules</ulink>"
+                    section in the Yocto Project Linux Kernel Development
+                    Manual.
+                </para>
+
+                <para>
+                    To help maximize compatibility with out-of-tree drivers
+                    used to build modules, the OpenEmbedded build system also
+                    recognizes and uses the
+                    <link linkend='var-KERNEL_PATH'><filename>KERNEL_PATH</filename></link>
+                    variable, which is identical to the
+                    <filename>KERNEL_SRC</filename> variable.
+                    Both variables are common variables used by external
+                    Makefiles to point to the kernel source directory.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-KERNEL_VERSION'><glossterm>KERNEL_VERSION</glossterm>
+            <info>
+                KERNEL_VERSION[doc] = "Specifies the version of the kernel as extracted from version.h or utsrelease.h within the kernel sources."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the version of the kernel as extracted from
+                    <filename>version.h</filename> or
+                    <filename>utsrelease.h</filename> within the kernel sources.
+                    Effects of setting this variable do not take affect until
+                    the kernel has been configured.
+                    Consequently, attempting to refer to this variable in
+                    contexts prior to configuration will not work.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-KERNELDEPMODDEPEND'><glossterm>KERNELDEPMODDEPEND</glossterm>
+            <info>
+                KERNELDEPMODDEPEND[doc] = "Specifies whether or not to use the data referenced through the PKGDATA_DIR directory."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies whether the data referenced through
+                    <link linkend='var-PKGDATA_DIR'><filename>PKGDATA_DIR</filename></link>
+                    is needed or not.
+                    The <filename>KERNELDEPMODDEPEND</filename> does not
+                    control whether or not that data exists,
+                    but simply whether or not it is used.
+                    If you do not need to use the data, set the
+                    <filename>KERNELDEPMODDEPEND</filename> variable in your
+                    <filename>initramfs</filename> recipe.
+                    Setting the variable there when the data is not needed
+                    avoids a potential dependency loop.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-KFEATURE_DESCRIPTION'><glossterm>KFEATURE_DESCRIPTION</glossterm>
+            <info>
+                KFEATURE_DESCRIPTION[doc] = "Provides a short description of a configuration fragment. You use this variable in the .scc file that describes a configuration fragment file."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Provides a short description of a configuration fragment.
+                    You use this variable in the <filename>.scc</filename>
+                    file that describes a configuration fragment file.
+                    Here is the variable used in a file named
+                    <filename>smp.scc</filename> to describe SMP being
+                    enabled:
+                    <literallayout class='monospaced'>
+     define KFEATURE_DESCRIPTION "Enable SMP"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-KMACHINE'><glossterm>KMACHINE</glossterm>
+            <info>
+                KMACHINE[doc] = "The machine as known by the kernel."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The machine as known by the kernel.
+                    Sometimes the machine name used by the kernel does not
+                    match the machine name used by the OpenEmbedded build
+                    system.
+                    For example, the machine name that the OpenEmbedded build
+                    system understands as
+                    <filename>core2-32-intel-common</filename> goes by a
+                    different name in the Linux Yocto kernel.
+                    The kernel understands that machine as
+                    <filename>intel-core2-32</filename>.
+                    For cases like these, the <filename>KMACHINE</filename>
+                    variable maps the kernel machine name to the OpenEmbedded
+                    build system machine name.
+                </para>
+
+                <para>
+                    These mappings between different names occur in the
+                    Yocto Linux Kernel's <filename>meta</filename> branch.
+                    As an example take a look in the
+                    <filename>common/recipes-kernel/linux/linux-yocto_3.19.bbappend</filename>
+                    file:
+                    <literallayout class='monospaced'>
+     LINUX_VERSION_core2-32-intel-common = "3.19.0"
+     COMPATIBLE_MACHINE_core2-32-intel-common = "${MACHINE}"
+     SRCREV_meta_core2-32-intel-common = "8897ef68b30e7426bc1d39895e71fb155d694974"
+     SRCREV_machine_core2-32-intel-common = "43b9eced9ba8a57add36af07736344dcc383f711"
+     KMACHINE_core2-32-intel-common = "intel-core2-32"
+     KBRANCH_core2-32-intel-common = "standard/base"
+     KERNEL_FEATURES_append_core2-32-intel-common = "${KERNEL_FEATURES_INTEL_COMMON}"
+                    </literallayout>
+                    The <filename>KMACHINE</filename> statement says that
+                    the kernel understands the machine name as
+                    "intel-core2-32".
+                    However, the OpenEmbedded build system understands the
+                    machine as "core2-32-intel-common".
+                </para>
+
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-KTYPE'><glossterm>KTYPE</glossterm>
+            <info>
+                KTYPE[doc] = "Defines the kernel type to be used in assembling the configuration."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Defines the kernel type to be used in assembling the
+                    configuration.
+                    The linux-yocto recipes define "standard", "tiny",
+                    and "preempt-rt" kernel types.
+                    See the
+                    "<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#kernel-types'>Kernel Types</ulink>"
+                    section in the Yocto Project Linux Kernel Development
+                    Manual for more information on kernel types.
+                </para>
+
+                <para>
+                    You define the <filename>KTYPE</filename> variable in the
+                    <ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#bsp-descriptions'>BSP Descriptions</ulink>.
+                    The value you use must match the value used for the
+                    <link linkend='var-LINUX_KERNEL_TYPE'><filename>LINUX_KERNEL_TYPE</filename></link>
+                    value used by the kernel recipe.
+                </para>
+            </glossdef>
+        </glossentry>
+   </glossdiv>
+
+    <glossdiv id='var-glossary-l'><title>L</title>
+
+        <glossentry id='var-LABELS'><glossterm>LABELS</glossterm>
+            <info>
+                LABELS[doc] = "Provides a list of targets for automatic configuration."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Provides a list of targets for automatic configuration.
+                </para>
+
+                <para>
+                    See the
+                    <link linkend='ref-classes-grub-efi'><filename>grub-efi</filename></link>
+                    class for more information on how this variable is used.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-LAYERDEPENDS'><glossterm>LAYERDEPENDS</glossterm>
+            <info>
+                LAYERDEPENDS[doc] = "Lists the layers, separated by spaces, on which this recipe depends. This variable is used in the conf/layer.conf file and must be suffixed with the name of the specific layer."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Lists the layers, separated by spaces, on which this
+                    recipe depends.
+                    Optionally, you can specify a specific layer version for a
+                    dependency by adding it to the end of the layer name.
+                    Here is an example:
+                    <literallayout class='monospaced'>
+     LAYERDEPENDS_mylayer = "anotherlayer (=3)"
+                    </literallayout>
+                    In this previous example, version 3 of "anotherlayer"
+                    is compared against
+                    <link linkend='var-LAYERVERSION'><filename>LAYERVERSION</filename></link><filename>_anotherlayer</filename>.
+                </para>
+
+                <para>
+                    An error is produced if any dependency is missing or
+                    the version numbers (if specified) do not match exactly.
+                    This variable is used in the
+                    <filename>conf/layer.conf</filename> file and must be
+                    suffixed with the name of the specific layer (e.g.
+                    <filename>LAYERDEPENDS_mylayer</filename>).
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-LAYERDIR'><glossterm>LAYERDIR</glossterm>
+            <info>
+                LAYERDIR[doc] = "When used inside the layer.conf configuration file, this variable provides the path of the current layer."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When used inside the <filename>layer.conf</filename> configuration
+                    file, this variable provides the path of the current layer.
+                    This variable is not available outside of <filename>layer.conf</filename>
+                    and references are expanded immediately when parsing of the file completes.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-LAYERRECOMMENDS'><glossterm>LAYERRECOMMENDS</glossterm>
+            <info>
+                LAYERRECOMMENDS[doc] = "Lists the layers, separated by spaces, recommended for use with this layer."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Lists the layers, separated by spaces, recommended for
+                    use with this layer.
+                </para>
+
+                <para>
+                    Optionally, you can specify a specific layer version for a
+                    recommendation by adding the version to the end of the
+                    layer name.
+                    Here is an example:
+                    <literallayout class='monospaced'>
+     LAYERRECOMMENDS_mylayer = "anotherlayer (=3)"
+                    </literallayout>
+                    In this previous example, version 3 of "anotherlayer" is
+                    compared against
+                    <filename>LAYERVERSION_anotherlayer</filename>.
+                </para>
+
+                <para>
+                    This variable is used in the
+                    <filename>conf/layer.conf</filename> file and must be
+                    suffixed with the name of the specific layer (e.g.
+                    <filename>LAYERRECOMMENDS_mylayer</filename>).
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-LAYERSERIES_COMPAT'><glossterm>LAYERSERIES_COMPAT</glossterm>
+            <info>
+                LAYERSERIES_COMPAT[doc] = "Lists the OpenEmbedded-Core versions for which a layer is compatible."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Lists the versions of the
+                    <link linkend='oe-core'>OpenEmbedded-Core</link> for which
+                    a layer is compatible.
+                    Using the <filename>LAYERSERIES_COMPAT</filename> variable
+                    allows the layer maintainer to indicate which combinations
+                    of the layer and OE-Core can be expected to work.
+                    The variable gives the system a way to detect when a layer
+                    has not been tested with new releases of OE-Core (e.g.
+                    the layer is not maintained).
+                </para>
+
+                <para>
+                    To specify the OE-Core versions for which a layer is
+                    compatible, use this variable in your layer's
+                    <filename>conf/layer.conf</filename> configuration file.
+                    For the list, use the Yocto Project
+                    <ulink url='https://wiki.yoctoproject.org/wiki/Releases'>Release Name</ulink>
+                    (e.g. &DISTRO_NAME_NO_CAP;).
+                    To specify multiple OE-Core versions for the layer,
+                    use a space-separated list:
+                    <literallayout class='monospaced'>
+     LAYERSERIES_COMPAT_<replaceable>layer_root_name</replaceable> = "&DISTRO_NAME_NO_CAP; &DISTRO_NAME_NO_CAP_MINUS_ONE;"
+                    </literallayout>
+                    <note>
+                        Setting <filename>LAYERSERIES_COMPAT</filename> is
+                        required by the Yocto Project Compatible version 2
+                        standard.
+                        The OpenEmbedded build system produces a warning if
+                        the variable is not set for any given layer.
+                    </note>
+                </para>
+
+                <para>
+                    See the
+                    "<ulink url='&YOCTO_DOCS_DEV_URL;#creating-your-own-layer'>Creating Your Own Layer</ulink>"
+                    section in the Yocto Project Development Tasks Manual.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-LAYERVERSION'><glossterm>LAYERVERSION</glossterm>
+            <info>
+                LAYERVERSION[doc] = "Optionally specifies the version of a layer as a single number. This variable is used in the conf/layer.conf file and must be suffixed with the name of the specific layer."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Optionally specifies the version of a layer as a single number.
+                    You can use this within
+                    <link linkend='var-LAYERDEPENDS'><filename>LAYERDEPENDS</filename></link>
+                    for another layer in order to depend on a specific version
+                    of the layer.
+                    This variable is used in the <filename>conf/layer.conf</filename> file
+                    and must be suffixed with the name of the specific layer (e.g.
+                    <filename>LAYERVERSION_mylayer</filename>).
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-LD'><glossterm>LD</glossterm>
+            <info>
+                LD[doc] = "Minimal command and arguments to run the linker."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The minimal command and arguments used to run the
+                    linker.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-LDFLAGS'><glossterm>LDFLAGS</glossterm>
+            <info>
+                LDFLAGS[doc] = "Specifies the flags to pass to the linker."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the flags to pass to the linker.
+                    This variable is exported to an environment
+                    variable and thus made visible to the software being
+                    built during the compilation step.
+                </para>
+
+                <para>
+                    Default initialization for <filename>LDFLAGS</filename>
+                    varies depending on what is being built:
+                    <itemizedlist>
+                        <listitem><para>
+                            <link linkend='var-TARGET_LDFLAGS'><filename>TARGET_LDFLAGS</filename></link>
+                            when building for the target
+                            </para></listitem>
+                        <listitem><para>
+                            <link linkend='var-BUILD_LDFLAGS'><filename>BUILD_LDFLAGS</filename></link>
+                            when building for the build host (i.e.
+                            <filename>-native</filename>)
+                            </para></listitem>
+                        <listitem><para>
+                            <link linkend='var-BUILDSDK_LDFLAGS'><filename>BUILDSDK_LDFLAGS</filename></link>
+                            when building for an SDK (i.e.
+                            <filename>nativesdk-</filename>)
+                            </para></listitem>
+                    </itemizedlist>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-LEAD_SONAME'><glossterm>LEAD_SONAME</glossterm>
+            <info>
+                LEAD_SONAME[doc] = "Specifies the lead (or primary) compiled library file (i.e. .so) that the debian class applies its naming policy to given a recipe that packages multiple libraries."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the lead (or primary) compiled library file
+                    (i.e. <filename>.so</filename>) that the
+                    <link linkend='ref-classes-debian'><filename>debian</filename></link>
+                    class applies its naming policy to given a recipe that
+                    packages multiple libraries.
+                </para>
+
+                <para>
+                    This variable works in conjunction with the
+                    <filename>debian</filename> class.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-LIC_FILES_CHKSUM'><glossterm>LIC_FILES_CHKSUM</glossterm>
+            <info>
+                LIC_FILES_CHKSUM[doc] = "Checksums of the license text in the recipe source code."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Checksums of the license text in the recipe source code.
+                </para>
+
+                <para>
+                    This variable tracks changes in license text of the source
+                    code files.
+                    If the license text is changed, it will trigger a build
+                    failure, which gives the developer an opportunity to review any
+                    license change.
+                </para>
+
+                <para>
+                    This variable must be defined for all recipes (unless
+                    <link linkend='var-LICENSE'><filename>LICENSE</filename></link>
+                    is set to "CLOSED").</para>
+                <para>For more information, see the
+                    "<ulink url='&YOCTO_DOCS_DEV_URL;#usingpoky-configuring-LIC_FILES_CHKSUM'>Tracking License Changes</ulink>"
+                    section in the Yocto Project Development Tasks Manual.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-LICENSE'><glossterm>LICENSE</glossterm>
+            <info>
+                LICENSE[doc] = "The list of source licenses for the recipe. The logical operators &amp;, '|', and parentheses can be used."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The list of source licenses for the recipe.
+                    Follow these rules:
+                    <itemizedlist>
+                        <listitem><para>Do not use spaces within individual
+                            license names.</para></listitem>
+                        <listitem><para>Separate license names using
+                            | (pipe) when there is a choice between licenses.
+                            </para></listitem>
+                        <listitem><para>Separate license names using
+                            &amp; (ampersand) when multiple licenses exist
+                            that cover different parts of the source.
+                            </para></listitem>
+                        <listitem><para>You can use spaces between license
+                            names.</para></listitem>
+                        <listitem><para>For standard licenses, use the names
+                            of the files in
+                            <filename>meta/files/common-licenses/</filename>
+                            or the
+                            <link linkend='var-SPDXLICENSEMAP'><filename>SPDXLICENSEMAP</filename></link>
+                            flag names defined in
+                            <filename>meta/conf/licenses.conf</filename>.
+                            </para></listitem>
+                    </itemizedlist>
+                </para>
+
+                <para>
+                    Here are some examples:
+                    <literallayout class='monospaced'>
+     LICENSE = "LGPLv2.1 | GPLv3"
+     LICENSE = "MPL-1 &amp; LGPLv2.1"
+     LICENSE = "GPLv2+"
+                    </literallayout>
+                    The first example is from the recipes for Qt, which the user
+                    may choose to distribute under either the LGPL version
+                    2.1 or GPL version 3.
+                    The second example is from Cairo where two licenses cover
+                    different parts of the source code.
+                    The final example is from <filename>sysstat</filename>,
+                    which presents a single license.
+                </para>
+
+                <para>
+                    You can also specify licenses on a per-package basis to
+                    handle situations where components of the output have
+                    different licenses.
+                    For example, a piece of software whose code is
+                    licensed under GPLv2 but has accompanying documentation
+                    licensed under the GNU Free Documentation License 1.2 could
+                    be specified as follows:
+                    <literallayout class='monospaced'>
+     LICENSE = "GFDL-1.2 &amp; GPLv2"
+     LICENSE_${PN} = "GPLv2"
+     LICENSE_${PN}-doc = "GFDL-1.2"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-LICENSE_CREATE_PACKAGE'><glossterm>LICENSE_CREATE_PACKAGE</glossterm>
+            <info>
+                LICENSE_CREATE_PACKAGE[doc] = "Creates an extra package (i.e. ${PN}-lic) for each recipe and adds that package to the RRECOMMENDS+${PN}."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                        Setting <filename>LICENSE_CREATE_PACKAGE</filename>
+                        to "1" causes the OpenEmbedded build system to create
+                        an extra package (i.e.
+                        <filename>${</filename><link linkend='var-PN'><filename>PN</filename></link><filename>}-lic</filename>)
+                        for each recipe and to add those packages to the
+                        <link linkend='var-RRECOMMENDS'><filename>RRECOMMENDS</filename></link><filename>_${PN}</filename>.
+                </para>
+
+                <para>
+                    The <filename>${PN}-lic</filename> package installs a
+                    directory in <filename>/usr/share/licenses</filename>
+                    named <filename>${PN}</filename>, which is the recipe's
+                    base name, and installs files in that directory that
+                    contain license and copyright information (i.e. copies of
+                    the appropriate license files from
+                    <filename>meta/common-licenses</filename> that match the
+                    licenses specified in the
+                    <link linkend='var-LICENSE'><filename>LICENSE</filename></link>
+                    variable of the recipe metadata and copies of files marked
+                    in
+                    <link linkend='var-LIC_FILES_CHKSUM'><filename>LIC_FILES_CHKSUM</filename></link>
+                    as containing license text).
+                </para>
+
+                <para>
+                    For related information on providing license text, see the
+                    <link linkend='var-COPY_LIC_DIRS'><filename>COPY_LIC_DIRS</filename></link>
+                    variable, the
+                    <link linkend='var-COPY_LIC_MANIFEST'><filename>COPY_LIC_MANIFEST</filename></link>
+                    variable, and the
+                    "<ulink url='&YOCTO_DOCS_DEV_URL;#providing-license-text'>Providing License Text</ulink>"
+                    section in the Yocto Project Development Tasks Manual.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-LICENSE_FLAGS'><glossterm>LICENSE_FLAGS</glossterm>
+            <info>
+                LICENSE_FLAGS[doc] = "Specifies additional flags for a recipe you must whitelist through LICENSE_FLAGS_WHITELIST in order to allow the recipe to be built."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies additional flags for a recipe you must
+                    whitelist through
+                    <link linkend='var-LICENSE_FLAGS_WHITELIST'><filename>LICENSE_FLAGS_WHITELIST</filename></link>
+                    in order to allow the recipe to be built.
+                    When providing multiple flags, separate them with
+                    spaces.
+                </para>
+
+                <para>
+                    This value is independent of
+                    <link linkend='var-LICENSE'><filename>LICENSE</filename></link>
+                    and is typically used to mark recipes that might
+                    require additional licenses in order to be used in a
+                    commercial product.
+                    For more information, see the
+                    "<ulink url='&YOCTO_DOCS_DEV_URL;#enabling-commercially-licensed-recipes'>Enabling Commercially Licensed Recipes</ulink>"
+                    section in the Yocto Project Development Tasks Manual.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-LICENSE_FLAGS_WHITELIST'><glossterm>LICENSE_FLAGS_WHITELIST</glossterm>
+            <info>
+                LICENSE_FLAGS_WHITELIST[doc] = "Lists license flags that when specified in LICENSE_FLAGS within a recipe should not prevent that recipe from being built."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Lists license flags that when specified in
+                    <link linkend='var-LICENSE_FLAGS'><filename>LICENSE_FLAGS</filename></link>
+                    within a recipe should not prevent that recipe from being
+                    built.
+                    This practice is otherwise known as "whitelisting"
+                    license flags.
+                    For more information, see the
+                    "<ulink url='&YOCTO_DOCS_DEV_URL;#enabling-commercially-licensed-recipes'>Enabling Commercially Licensed Recipes</ulink>"
+                    section in the Yocto Project Development Tasks Manual.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-LICENSE_PATH'><glossterm>LICENSE_PATH</glossterm>
+            <info>
+                LICENSE_PATH[doc] = "Path to additional licenses used during the build."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Path to additional licenses used during the build.
+                    By default, the OpenEmbedded build system uses <filename>COMMON_LICENSE_DIR</filename>
+                    to define the directory that holds common license text used during the build.
+                    The <filename>LICENSE_PATH</filename> variable allows you to extend that
+                    location to other areas that have additional licenses:
+                    <literallayout class='monospaced'>
+     LICENSE_PATH += "<replaceable>path-to-additional-common-licenses</replaceable>"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-LINUX_KERNEL_TYPE'><glossterm>LINUX_KERNEL_TYPE</glossterm>
+            <info>
+                LINUX_KERNEL_TYPE[doc] = "Defines the kernel type to be used in assembling the configuration."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Defines the kernel type to be used in assembling the
+                    configuration.
+                    The linux-yocto recipes define "standard", "tiny", and
+                    "preempt-rt" kernel types.
+                    See the
+                    "<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#kernel-types'>Kernel Types</ulink>"
+                    section in the Yocto Project Linux Kernel Development
+                    Manual for more information on kernel types.
+                </para>
+
+                <para>
+                    If you do not specify a
+                    <filename>LINUX_KERNEL_TYPE</filename>, it defaults to
+                    "standard".
+                    Together with
+                    <link linkend='var-KMACHINE'><filename>KMACHINE</filename></link>,
+                    the <filename>LINUX_KERNEL_TYPE</filename> variable
+                    defines the search
+                    arguments used by the kernel tools to find the appropriate
+                    description within the kernel
+                    <link linkend='metadata'>Metadata</link>
+                    with which to build out the sources and configuration.
+                    </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-LINUX_VERSION'><glossterm>LINUX_VERSION</glossterm>
+            <info>
+                LINUX_VERSION[doc] = "The Linux version from kernel.org on which the Linux kernel image being built using the OpenEmbedded build system is based. You define this variable in the kernel recipe."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The Linux version from <filename>kernel.org</filename>
+                    on which the Linux kernel image being built using the
+                    OpenEmbedded build system is based.
+                    You define this variable in the kernel recipe.
+                    For example, the <filename>linux-yocto-3.4.bb</filename>
+                    kernel recipe found in
+                    <filename>meta/recipes-kernel/linux</filename>
+                    defines the variables as follows:
+                    <literallayout class='monospaced'>
+     LINUX_VERSION ?= "3.4.24"
+                    </literallayout>
+                </para>
+
+                <para>
+                    The <filename>LINUX_VERSION</filename> variable is used to
+                    define <link linkend='var-PV'><filename>PV</filename></link>
+                    for the recipe:
+                    <literallayout class='monospaced'>
+     PV = "${LINUX_VERSION}+git${SRCPV}"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-LINUX_VERSION_EXTENSION'><glossterm>LINUX_VERSION_EXTENSION</glossterm>
+            <info>
+                LINUX_VERSION_EXTENSION[doc] = "A string extension compiled into the version string of the Linux kernel built with the OpenEmbedded build system. You define this variable in the kernel recipe."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A string extension compiled into the version
+                    string of the Linux kernel built with the OpenEmbedded
+                    build system.
+                    You define this variable in the kernel recipe.
+                    For example, the linux-yocto kernel recipes all define
+                    the variable as follows:
+                    <literallayout class='monospaced'>
+     LINUX_VERSION_EXTENSION ?= "-yocto-${<link linkend='var-LINUX_KERNEL_TYPE'>LINUX_KERNEL_TYPE</link>}"
+                    </literallayout>
+                </para>
+
+                <para>
+                    Defining this variable essentially sets the
+                    Linux kernel configuration item
+                    <filename>CONFIG_LOCALVERSION</filename>, which is visible
+                    through the <filename>uname</filename> command.
+                    Here is an example that shows the extension assuming it
+                    was set as previously shown:
+                    <literallayout class='monospaced'>
+     $ uname -r
+     3.7.0-rc8-custom
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-LOG_DIR'><glossterm>LOG_DIR</glossterm>
+            <info>
+                LOG_DIR[doc] = "Specifies the directory to which the OpenEmbedded build system writes overall log files. The default directory is ${TMPDIR}/log"
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the directory to which the OpenEmbedded build
+                    system writes overall log files.
+                    The default directory is <filename>${TMPDIR}/log</filename>.
+                </para>
+
+                <para>
+                    For the directory containing logs specific to each task,
+                    see the <link linkend='var-T'><filename>T</filename></link>
+                    variable.
+                </para>
+            </glossdef>
+        </glossentry>
+
+    </glossdiv>
+
+    <glossdiv id='var-glossary-m'><title>M</title>
+
+         <glossentry id='var-MACHINE'><glossterm>MACHINE</glossterm>
+            <info>
+                MACHINE[doc] = "Specifies the target device for which the image is built. You define MACHINE in the conf/local.conf file in the Build Directory."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the target device for which the image is built.
+                    You define <filename>MACHINE</filename> in the
+                    <filename>local.conf</filename> file found in the
+                    <link linkend='build-directory'>Build Directory</link>.
+                    By default, <filename>MACHINE</filename> is set to
+                    "qemux86", which is an x86-based architecture machine to
+                    be emulated using QEMU:
+                    <literallayout class='monospaced'>
+     MACHINE ?= "qemux86"
+                    </literallayout>
+                </para>
+
+                <para>
+                    The variable corresponds to a machine configuration file of the
+                    same name, through which machine-specific configurations are set.
+                    Thus, when <filename>MACHINE</filename> is set to "qemux86" there
+                    exists the corresponding <filename>qemux86.conf</filename> machine
+                    configuration file, which can be found in the
+                    <link linkend='source-directory'>Source Directory</link>
+                    in <filename>meta/conf/machine</filename>.
+                </para>
+
+                <para>
+                    The list of machines supported by the Yocto Project as
+                    shipped include the following:
+                    <literallayout class='monospaced'>
+     MACHINE ?= "qemuarm"
+     MACHINE ?= "qemuarm64"
+     MACHINE ?= "qemumips"
+     MACHINE ?= "qemumips64"
+     MACHINE ?= "qemuppc"
+     MACHINE ?= "qemux86"
+     MACHINE ?= "qemux86-64"
+     MACHINE ?= "genericx86"
+     MACHINE ?= "genericx86-64"
+     MACHINE ?= "beaglebone"
+     MACHINE ?= "edgerouter"
+                    </literallayout>
+                    The last five are Yocto Project reference hardware boards, which
+                    are provided in the <filename>meta-yocto-bsp</filename> layer.
+                    <note>Adding additional Board Support Package (BSP) layers
+                        to your configuration adds new possible settings for
+                        <filename>MACHINE</filename>.
+                    </note>
+                </para>
+            </glossdef>
+         </glossentry>
+
+         <glossentry id='var-MACHINE_ARCH'><glossterm>MACHINE_ARCH</glossterm>
+            <info>
+                MACHINE_ARCH[doc] = "Specifies the name of the machine-specific architecture. This variable is set automatically from MACHINE or TUNE_PKGARCH."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the name of the machine-specific architecture.
+                    This variable is set automatically from
+                    <link linkend='var-MACHINE'><filename>MACHINE</filename></link>
+                    or
+                    <link linkend='var-TUNE_PKGARCH'><filename>TUNE_PKGARCH</filename></link>.
+                    You should not hand-edit the
+                    <filename>MACHINE_ARCH</filename> variable.
+                </para>
+            </glossdef>
+         </glossentry>
+
+         <glossentry id='var-MACHINE_ESSENTIAL_EXTRA_RDEPENDS'><glossterm>MACHINE_ESSENTIAL_EXTRA_RDEPENDS</glossterm>
+            <info>
+                MACHINE_ESSENTIAL_EXTRA_RDEPENDS[doc] = "A list of required machine-specific packages to install as part of the image being built. Because this is a 'machine-essential' variable, the list of packages are essential for the machine to boot."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A list of required machine-specific packages to install as part of
+                    the image being built.
+                    The build process depends on these packages being present.
+                    Furthermore, because this is a "machine-essential" variable, the list of
+                    packages are essential for the machine to boot.
+                    The impact of this variable affects images based on
+                    <filename>packagegroup-core-boot</filename>,
+                    including the <filename>core-image-minimal</filename> image.
+                </para>
+
+                <para>
+                    This variable is similar to the
+                    <filename><link linkend='var-MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS'>MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS</link></filename>
+                    variable with the exception that the image being built has a build
+                    dependency on the variable's list of packages.
+                    In other words, the image will not build if a file in this list is not found.
+                </para>
+
+                <para>
+                    As an example, suppose the machine for which you are building requires
+                    <filename>example-init</filename> to be run during boot to initialize the hardware.
+                    In this case, you would use the following in the machine's
+                    <filename>.conf</filename> configuration file:
+                    <literallayout class='monospaced'>
+     MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "example-init"
+                    </literallayout>
+                </para>
+            </glossdef>
+         </glossentry>
+
+         <glossentry id='var-MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS'><glossterm>MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS</glossterm>
+            <info>
+                MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS[doc] = "A list of recommended machine-specific packages to install as part of the image being built. Because this is a 'machine-essential' variable, the list of packages are essential for the machine to boot."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A list of recommended machine-specific packages to install as part of
+                    the image being built.
+                    The build process does not depend on these packages being present.
+                    However, because this is a "machine-essential" variable, the list of
+                    packages are essential for the machine to boot.
+                    The impact of this variable affects images based on
+                    <filename>packagegroup-core-boot</filename>,
+                    including the <filename>core-image-minimal</filename> image.
+                </para>
+
+                <para>
+                    This variable is similar to the
+                    <filename><link linkend='var-MACHINE_ESSENTIAL_EXTRA_RDEPENDS'>MACHINE_ESSENTIAL_EXTRA_RDEPENDS</link></filename>
+                    variable with the exception that the image being built does not have a build
+                    dependency on the variable's list of packages.
+                    In other words, the image will still build if a package in this list is not found.
+                    Typically, this variable is used to handle essential kernel modules, whose
+                    functionality may be selected to be built into the kernel rather than as a module,
+                    in which case a package will not be produced.
+                </para>
+
+                <para>
+                    Consider an example where you have a custom kernel where a specific touchscreen
+                    driver is required for the machine to be usable.
+                    However, the driver can be built as a module or
+                    into the kernel depending on the kernel configuration.
+                    If the driver is built as a module, you want it to be installed.
+                    But, when the driver is built into the kernel, you still want the
+                    build to succeed.
+                    This variable sets up a "recommends" relationship so that in the latter case,
+                    the build will not fail due to the missing package.
+                    To accomplish this, assuming the package for the module was called
+                    <filename>kernel-module-ab123</filename>, you would use the
+                    following in the machine's <filename>.conf</filename> configuration
+                    file:
+                    <literallayout class='monospaced'>
+     MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += "kernel-module-ab123"
+                    </literallayout>
+                    <note>
+                        In this example, the
+                        <filename>kernel-module-ab123</filename> recipe
+                        needs to explicitly set its
+                        <link linkend='var-PACKAGES'><filename>PACKAGES</filename></link>
+                        variable to ensure that BitBake does not use the
+                        kernel recipe's
+                        <link linkend='var-PACKAGES_DYNAMIC'><filename>PACKAGES_DYNAMIC</filename></link>
+                        variable to satisfy the dependency.
+                    </note>
+                </para>
+
+                <para>
+                    Some examples of these machine essentials are flash, screen, keyboard, mouse,
+                    or touchscreen drivers (depending on the machine).
+                </para>
+            </glossdef>
+        </glossentry>
+
+         <glossentry id='var-MACHINE_EXTRA_RDEPENDS'><glossterm>MACHINE_EXTRA_RDEPENDS</glossterm>
+            <info>
+                MACHINE_EXTRA_RDEPENDS[doc] = "A list of machine-specific packages to install as part of the image being built that are not essential for the machine to boot. However, the build process for more fully-featured images depends on the packages being present."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A list of machine-specific packages to install as part of the
+                    image being built that are not essential for the machine to boot.
+                    However, the build process for more fully-featured images
+                    depends on the packages being present.
+                </para>
+
+                <para>
+                    This variable affects all images based on
+                    <filename>packagegroup-base</filename>, which does not include the
+                    <filename>core-image-minimal</filename> or <filename>core-image-full-cmdline</filename>
+                    images.
+                </para>
+
+                <para>
+                    The variable is similar to the
+                    <filename><link linkend='var-MACHINE_EXTRA_RRECOMMENDS'>MACHINE_EXTRA_RRECOMMENDS</link></filename>
+                    variable with the exception that the image being built has a build
+                    dependency on the variable's list of packages.
+                    In other words, the image will not build if a file in this list is not found.
+                </para>
+
+                <para>
+                    An example is a machine that has WiFi capability but is not
+                    essential for the machine to boot the image.
+                    However, if you are building a more fully-featured image, you want to enable
+                    the WiFi.
+                    The package containing the firmware for the WiFi hardware is always
+                    expected to exist, so it is acceptable for the build process to depend upon
+                    finding the package.
+                    In this case, assuming the package for the firmware was called
+                    <filename>wifidriver-firmware</filename>, you would use the following in the
+                    <filename>.conf</filename> file for the machine:
+                    <literallayout class='monospaced'>
+     MACHINE_EXTRA_RDEPENDS += "wifidriver-firmware"
+                    </literallayout>
+                </para>
+            </glossdef>
+         </glossentry>
+
+         <glossentry id='var-MACHINE_EXTRA_RRECOMMENDS'><glossterm>MACHINE_EXTRA_RRECOMMENDS</glossterm>
+            <info>
+                MACHINE_EXTRA_RRECOMMENDS[doc] = "A list of machine-specific packages to install as part of the image being built that are not essential for booting the machine. The image being built has no build dependencies on the packages in this list."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A list of machine-specific packages to install as part of the
+                    image being built that are not essential for booting the machine.
+                    The image being built has no build dependency on this list of packages.
+                </para>
+
+                <para>
+                    This variable affects only images based on
+                    <filename>packagegroup-base</filename>, which does not include the
+                    <filename>core-image-minimal</filename> or <filename>core-image-full-cmdline</filename>
+                    images.
+                </para>
+
+                <para>
+                    This variable is similar to the
+                    <filename><link linkend='var-MACHINE_EXTRA_RDEPENDS'>MACHINE_EXTRA_RDEPENDS</link></filename>
+                    variable with the exception that the image being built does not have a build
+                    dependency on the variable's list of packages.
+                    In other words, the image will build if a file in this list is not found.
+                </para>
+
+                <para>
+                    An example is a machine that has WiFi capability but is not essential
+                    For the machine to boot the image.
+                    However, if you are building a more fully-featured image, you want to enable
+                    WiFi.
+                    In this case, the package containing the WiFi kernel module will not be produced
+                    if the WiFi driver is built into the kernel, in which case you still want the
+                    build to succeed instead of failing as a result of the package not being found.
+                    To accomplish this, assuming the package for the module was called
+                    <filename>kernel-module-examplewifi</filename>, you would use the
+                    following in the <filename>.conf</filename> file for the machine:
+                    <literallayout class='monospaced'>
+     MACHINE_EXTRA_RRECOMMENDS += "kernel-module-examplewifi"
+                    </literallayout>
+                </para>
+            </glossdef>
+         </glossentry>
+
+         <glossentry id='var-MACHINE_FEATURES'><glossterm>MACHINE_FEATURES</glossterm>
+            <info>
+                MACHINE_FEATURES[doc] = "Specifies the list of hardware features the MACHINE supports."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the list of hardware features the
+                    <link linkend='var-MACHINE'><filename>MACHINE</filename></link> is capable
+                    of supporting.
+                    For related information on enabling features, see the
+                    <link linkend='var-DISTRO_FEATURES'><filename>DISTRO_FEATURES</filename></link>,
+                    <link linkend='var-COMBINED_FEATURES'><filename>COMBINED_FEATURES</filename></link>,
+                    and
+                    <link linkend='var-IMAGE_FEATURES'><filename>IMAGE_FEATURES</filename></link>
+                    variables.
+                </para>
+
+                <para>
+                    For a list of hardware features supported by the Yocto
+                    Project as shipped, see the
+                    "<link linkend='ref-features-machine'>Machine Features</link>"
+                    section.
+                </para>
+            </glossdef>
+         </glossentry>
+
+        <glossentry id='var-MACHINE_FEATURES_BACKFILL'><glossterm>MACHINE_FEATURES_BACKFILL</glossterm>
+            <info>
+                MACHINE_FEATURES_BACKFILL[doc] = "Features to be added to MACHINE_FEATURES if not also present in MACHINE_FEATURES_BACKFILL_CONSIDERED. This variable is set in the meta/conf/bitbake.conf file and is not intended to be user-configurable."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Features to be added to
+                    <filename><link linkend='var-MACHINE_FEATURES'>MACHINE_FEATURES</link></filename>
+                    if not also present in
+                    <filename><link linkend='var-MACHINE_FEATURES_BACKFILL_CONSIDERED'>MACHINE_FEATURES_BACKFILL_CONSIDERED</link></filename>.
+                </para>
+
+                <para>
+                    This variable is set in the <filename>meta/conf/bitbake.conf</filename> file.
+                    It is not intended to be user-configurable.
+                    It is best to just reference the variable to see which machine features are
+                    being backfilled for all machine configurations.
+                    See the "<link linkend='ref-features-backfill'>Feature Backfilling</link>" section for
+                    more information.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-MACHINE_FEATURES_BACKFILL_CONSIDERED'><glossterm>MACHINE_FEATURES_BACKFILL_CONSIDERED</glossterm>
+            <info>
+                MACHINE_FEATURES_BACKFILL_CONSIDERED[doc] = "Features from MACHINE_FEATURES_BACKFILL that should not be backfilled (i.e. added to MACHINE_FEATURES) during the build."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Features from
+                    <filename><link linkend='var-MACHINE_FEATURES_BACKFILL'>MACHINE_FEATURES_BACKFILL</link></filename>
+                    that should not be backfilled (i.e. added to
+                    <filename><link linkend='var-MACHINE_FEATURES'>MACHINE_FEATURES</link></filename>)
+                    during the build.
+                    See the "<link linkend='ref-features-backfill'>Feature Backfilling</link>" section for
+                    more information.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-MACHINEOVERRIDES'><glossterm>MACHINEOVERRIDES</glossterm>
+            <info>
+                MACHINEOVERRIDES[doc] = "A colon-separated list of overrides that apply to the current machine."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A colon-separated list of overrides that apply to the
+                    current machine.
+                    By default, this list includes the value of
+                    <link linkend='var-MACHINE'><filename>MACHINE</filename></link>.
+                </para>
+
+                <para>
+                    You can extend <filename>MACHINEOVERRIDES</filename>
+                    to add extra overrides that should apply to a machine.
+                    For example, all machines emulated in QEMU (e.g.
+                    <filename>qemuarm</filename>, <filename>qemux86</filename>,
+                    and so forth) include a file named
+                    <filename>meta/conf/machine/include/qemu.inc</filename>
+                    that prepends the following override to
+                    <filename>MACHINEOVERRIDES</filename>:
+                    <literallayout class='monospaced'>
+     MACHINEOVERRIDES =. "qemuall:"
+                    </literallayout>
+                    This override allows variables to be overriden for all
+                    machines emulated in QEMU, like in the following example
+                    from the <filename>connman-conf</filename> recipe:
+                    <literallayout class='monospaced'>
+     SRC_URI_append_qemuall = "file://wired.config \
+                               file://wired-setup \
+                              "
+                    </literallayout>
+                    The underlying mechanism behind
+                    <filename>MACHINEOVERRIDES</filename> is simply that it is
+                    included in the default value of
+                    <link linkend='var-OVERRIDES'><filename>OVERRIDES</filename></link>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-MAINTAINER'><glossterm>MAINTAINER</glossterm>
+            <info>
+                MAINTAINER[doc] = "The email address of the distribution maintainer."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The email address of the distribution maintainer.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-MIRRORS'><glossterm>MIRRORS</glossterm>
+            <info>
+                MIRRORS[doc] = "Specifies additional paths from which the OpenEmbedded build system gets source code."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies additional paths from which the OpenEmbedded
+                    build system gets source code.
+                    When the build system searches for source code, it first
+                    tries the local download directory.
+                    If that location fails, the build system tries locations
+                    defined by
+                    <link linkend='var-PREMIRRORS'><filename>PREMIRRORS</filename></link>,
+                    the upstream source, and then locations specified by
+                    <filename>MIRRORS</filename> in that order.
+                </para>
+
+                <para>
+                    Assuming your distribution
+                    (<link linkend='var-DISTRO'><filename>DISTRO</filename></link>)
+                    is "poky", the default value for
+                    <filename>MIRRORS</filename> is defined in the
+                    <filename>conf/distro/poky.conf</filename> file in the
+                    <filename>meta-poky</filename> Git repository.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-MLPREFIX'><glossterm>MLPREFIX</glossterm>
+            <info>
+                MLPREFIX[doc] = "Specifies a prefix has been added to PN to create a special version of a recipe or package (i.e. a Multilib version)."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies a prefix has been added to
+                    <link linkend='var-PN'><filename>PN</filename></link> to create a special version
+                    of a recipe or package (i.e. a Multilib version).
+                    The variable is used in places where the prefix needs to be
+                    added to or removed from a the name (e.g. the
+                    <link linkend='var-BPN'><filename>BPN</filename></link> variable).
+                    <filename>MLPREFIX</filename> gets set when a prefix has been
+                    added to <filename>PN</filename>.
+                    <note>
+                        The "ML" in <filename>MLPREFIX</filename> stands for
+                        "MultiLib".
+                        This representation is historical and comes from
+                        a time when <filename>nativesdk</filename> was a suffix
+                        rather than a prefix on the recipe name.
+                        When <filename>nativesdk</filename> was turned into a
+                        prefix, it made sense to set
+                        <filename>MLPREFIX</filename> for it as well.
+                    </note>
+                </para>
+
+                <para>
+                    To help understand when <filename>MLPREFIX</filename>
+                    might be needed, consider when
+                    <link linkend='var-BBCLASSEXTEND'><filename>BBCLASSEXTEND</filename></link>
+                    is used to provide a <filename>nativesdk</filename> version
+                    of a recipe in addition to the target version.
+                    If that recipe declares build-time dependencies on tasks in
+                    other recipes by using
+                    <link linkend='var-DEPENDS'><filename>DEPENDS</filename></link>,
+                    then a dependency on "foo" will automatically get rewritten
+                    to a dependency on "nativesdk-foo".
+                    However, dependencies like the following will not get
+                    rewritten automatically:
+                    <literallayout class='monospaced'>
+     do_foo[depends] += "<replaceable>recipe</replaceable>:do_foo"
+                    </literallayout>
+                    If you want such a dependency to also get transformed,
+                    you can do the following:
+                    <literallayout class='monospaced'>
+     do_foo[depends] += "${MLPREFIX}<replaceable>recipe</replaceable>:do_foo"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-module_autoload'><glossterm>module_autoload</glossterm>
+            <info>
+                module_autoload[doc] = "This variable has been replaced by the KERNEL_MODULE_AUTOLOAD variable. You should replace all occurrences of module_autoload with additions to KERNEL_MODULE_AUTOLOAD."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    This variable has been replaced by the
+                    <filename>KERNEL_MODULE_AUTOLOAD</filename> variable.
+                    You should replace all occurrences of
+                    <filename>module_autoload</filename> with additions to
+                    <filename>KERNEL_MODULE_AUTOLOAD</filename>, for example:
+                    <literallayout class='monospaced'>
+     module_autoload_rfcomm = "rfcomm"
+                    </literallayout>
+                </para>
+
+                <para>
+                    should now be replaced with:
+                    <literallayout class='monospaced'>
+     KERNEL_MODULE_AUTOLOAD += "rfcomm"
+                    </literallayout>
+                    See the
+                    <link linkend='var-KERNEL_MODULE_AUTOLOAD'><filename>KERNEL_MODULE_AUTOLOAD</filename></link>
+                    variable for more information.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-module_conf'><glossterm>module_conf</glossterm>
+            <info>
+                module_conf[doc] = "Specifies modprobe.d syntax lines for inclusion in the /etc/modprobe.d/modname.conf file."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies
+                    <ulink url='http://linux.die.net/man/5/modprobe.d'><filename>modprobe.d</filename></ulink>
+                    syntax lines for inclusion in the
+                    <filename>/etc/modprobe.d/modname.conf</filename> file.
+                </para>
+
+                <para>
+                    You can use this variable anywhere that it can be
+                    recognized by the kernel recipe or out-of-tree kernel
+                    module recipe (e.g. a machine configuration file, a
+                    distribution configuration file, an append file for the
+                    recipe, or the recipe itself).
+                    If you use this variable, you must also be sure to list
+                    the module name in the
+                    <link linkend='var-KERNEL_MODULE_AUTOLOAD'><filename>KERNEL_MODULE_AUTOLOAD</filename></link>
+                    variable.
+                </para>
+
+                <para>
+                    Here is the general syntax:
+                    <literallayout class='monospaced'>
+     module_conf_<replaceable>module_name</replaceable> = "<replaceable>modprobe.d-syntax</replaceable>"
+                    </literallayout>
+                    You must use the kernel module name override.
+                </para>
+
+                <para>
+                    Run <filename>man modprobe.d</filename> in the shell to
+                    find out more information on the exact syntax
+                    you want to provide with <filename>module_conf</filename>.
+                </para>
+
+                <para>
+                    Including <filename>module_conf</filename> causes the
+                    OpenEmbedded build system to populate the
+                    <filename>/etc/modprobe.d/modname.conf</filename>
+                    file with <filename>modprobe.d</filename> syntax lines.
+                    Here is an example that adds the options
+                    <filename>arg1</filename> and <filename>arg2</filename>
+                    to a module named <filename>mymodule</filename>:
+                    <literallayout class='monospaced'>
+     module_conf_mymodule = "options mymodule arg1=val1 arg2=val2"
+                    </literallayout>
+                </para>
+
+                <para>
+                    For information on how to specify kernel modules to
+                    auto-load on boot, see the
+                    <link linkend='var-KERNEL_MODULE_AUTOLOAD'><filename>KERNEL_MODULE_AUTOLOAD</filename></link>
+                    variable.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-MODULE_TARBALL_DEPLOY'><glossterm>MODULE_TARBALL_DEPLOY</glossterm>
+            <info>
+                MODULE_TARBALL_DEPLOY[doc] = "Controls creation of the modules-*.tgz file. Set this variable to "0" to disable creation of this file, which contains all of the kernel modules resulting from a kernel build."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Controls creation of the <filename>modules-*.tgz</filename>
+                    file.
+                    Set this variable to "0" to disable creation of this
+                    file, which contains all of the kernel modules resulting
+                    from a kernel build.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-MODULE_TARBALL_LINK_NAME'><glossterm>MODULE_TARBALL_LINK_NAME</glossterm>
+            <info>
+                MODULE_TARBALL_LINK_NAME[doc] = "The link name of the kernel module tarball."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The link name of the kernel module tarball.
+                    This variable is set in the
+                    <filename>meta/classes/kernel-artifact-names.bbclass</filename>
+                    file as follows:
+                    <literallayout class='monospaced'>
+     MODULE_TARBALL_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}"
+                    </literallayout>
+                    The value of the <filename>KERNEL_ARTIFACT_LINK_NAME</filename>
+                    variable, which is set in the same file, has the following
+                    value:
+                    <literallayout class='monospaced'>
+     KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}"
+                    </literallayout>
+                </para>
+
+                <para>
+                    See the
+                    <link linkend='var-MACHINE'><filename>MACHINE</filename></link>
+                    variable for additional information.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-MODULE_TARBALL_NAME'><glossterm>MODULE_TARBALL_NAME</glossterm>
+            <info>
+                MODULE_TARBALL_NAME[doc] = "The base name of the kernel module tarball."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The base name of the kernel module tarball.
+                    This variable is set in the
+                    <filename>meta/classes/kernel-artifact-names.bbclass</filename>
+                    file as follows:
+                    <literallayout class='monospaced'>
+     MODULE_TARBALL_NAME ?= "${KERNEL_ARTIFACT_NAME}"
+                    </literallayout>
+                    The value of the
+                    <link linkend='var-KERNEL_ARTIFACT_NAME'><filename>KERNEL_ARTIFACT_NAME</filename></link>
+                    variable, which is set in the same file, has the following
+                    value:
+                    <literallayout class='monospaced'>
+     KERNEL_ARTIFACT_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}${IMAGE_VERSION_SUFFIX}"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+<!--
+        <glossentry id='var-MULTIMACH_HOST_SYS'><glossterm>MULTIMACH_HOST_SYS</glossterm>
+            <info>
+                MULTIMACH_HOST_SYS[doc] = "Separates files for different machines such that you can build for multiple host machines using the same output directories."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+-->
+<!--
+                    Serves the same purpose as
+                    <link linkend='var-MULTIMACH_TARGET_SYS'><filename>MULTIMACH_TARGET_SYS</filename></link>,
+                    but for the "HOST" system, in situations that involve a
+                    "HOST" and a "TARGET" system.
+                    See the
+                    <link linkend='var-STAGING_DIR_TARGET'><filename>STAGING_DIR_TARGET</filename></link>
+                    variable for more information.
+                </para>
+
+                <para>
+                    The default value of this variable is:
+                    <literallayout class='monospaced'>
+     ${PACKAGE_ARCH}${HOST_VENDOR}-${HOST_OS}
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+-->
+
+        <glossentry id='var-MULTIMACH_TARGET_SYS'><glossterm>MULTIMACH_TARGET_SYS</glossterm>
+            <info>
+                MULTIMACH_TARGET_SYS[doc] = "Separates files for different machines such that you can build for multiple target machines using the same output directories."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Uniquely identifies the type of the target system for
+                    which packages are being built.
+                    This variable allows output for different types of target
+                    systems to be put into different subdirectories of the same
+                    output directory.
+                </para>
+
+                <para>
+                    The default value of this variable is:
+                    <literallayout class='monospaced'>
+     ${PACKAGE_ARCH}${TARGET_VENDOR}-${TARGET_OS}
+                    </literallayout>
+                    Some classes (e.g.
+                    <link linkend='ref-classes-cross-canadian'><filename>cross-canadian</filename></link>)
+                    modify the <filename>MULTIMACH_TARGET_SYS</filename> value.
+                </para>
+
+                <para>
+                    See the
+                    <link linkend='var-STAMP'><filename>STAMP</filename></link>
+                    variable for an example.
+                    See the
+                    <link linkend='var-STAGING_DIR_TARGET'><filename>STAGING_DIR_TARGET</filename></link>
+                    variable for more information.
+                </para>
+            </glossdef>
+        </glossentry>
+
+    </glossdiv>
+
+    <glossdiv id='var-glossary-n'><title>N</title>
+
+        <glossentry id='var-NATIVELSBSTRING'><glossterm>NATIVELSBSTRING</glossterm>
+            <info>
+                NATIVELSBSTRING[doc] = "A string identifying the host distribution."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A string identifying the host distribution.
+                    Strings consist of the host distributor ID
+                    followed by the release, as reported by the
+                    <filename>lsb_release</filename> tool
+                    or as read from <filename>/etc/lsb-release</filename>.
+                    For example, when running a build on Ubuntu 12.10, the value
+                    is "Ubuntu-12.10".
+                    If this information is unable to be determined, the value
+                    resolves to "Unknown".
+                </para>
+
+                <para>
+                    This variable is used by default to isolate native shared
+                    state packages for different distributions (e.g. to avoid
+                    problems with <filename>glibc</filename> version
+                    incompatibilities).
+                    Additionally, the variable is checked against
+                    <link linkend='var-SANITY_TESTED_DISTROS'><filename>SANITY_TESTED_DISTROS</filename></link>
+                    if that variable is set.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-NM'><glossterm>NM</glossterm>
+            <info>
+                NM[doc] = "Minimal command and arguments to run 'nm'."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The minimal command and arguments to run
+                    <filename>nm</filename>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-NO_GENERIC_LICENSE'><glossterm>NO_GENERIC_LICENSE</glossterm>
+            <info>
+                NO_GENERIC_LICENSE[doc] = "Used to allow copying a license that does not exist in common licenses."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Avoids QA errors when you use a non-common, non-CLOSED
+                    license in a recipe.
+                    Packages exist, such as the linux-firmware package, with
+                    many licenses that are not in any way common.
+                    Also, new licenses are added occasionally to avoid
+                    introducing a lot of common license files, which are only
+                    applicable to a specific package.
+                    <filename>NO_GENERIC_LICENSE</filename> is used to allow
+                    copying a license that does not exist in common licenses.
+                </para>
+
+                <para>
+                    The following example shows how to add
+                    <filename>NO_GENERIC_LICENSE</filename> to a recipe:
+                    <literallayout class='monospaced'>
+     NO_GENERIC_LICENSE[<replaceable>license_name</replaceable>] = "<replaceable>license_file_in_fetched_source</replaceable>"
+                    </literallayout>
+                    The following is an example that uses the
+                    <filename>LICENSE.Abilis.txt</filename> file as the license
+                    from the fetched source:
+                    <literallayout class='monospaced'>
+     NO_GENERIC_LICENSE[Firmware-Abilis] = "LICENSE.Abilis.txt"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-NO_RECOMMENDATIONS'><glossterm>NO_RECOMMENDATIONS</glossterm>
+            <info>
+                NO_RECOMMENDATIONS[doc] = "When set to '1', no recommended packages will be installed. Some recommended packages might be required for certain system functionality, such as kernel-modules. It is up to the user to add packages to IMAGE_INSTALL as needed."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Prevents installation of all "recommended-only" packages.
+                    Recommended-only packages are packages installed only
+                    through the
+                    <link linkend='var-RRECOMMENDS'><filename>RRECOMMENDS</filename></link>
+                    variable).
+                    Setting the <filename>NO_RECOMMENDATIONS</filename> variable
+                    to "1" turns this feature on:
+                    <literallayout class='monospaced'>
+     NO_RECOMMENDATIONS = "1"
+                    </literallayout>
+                </para>
+
+                <para>
+                    You can set this variable globally in your
+                    <filename>local.conf</filename> file or you can attach it to
+                    a specific image recipe by using the recipe name override:
+                    <literallayout class='monospaced'>
+     NO_RECOMMENDATIONS_pn-<replaceable>target_image</replaceable> = "1"
+                    </literallayout>
+                </para>
+
+                <para>
+                    It is important to realize that if you choose to not install
+                    packages using this variable and some other packages are
+                    dependent on them (i.e. listed in a recipe's
+                    <link linkend='var-RDEPENDS'><filename>RDEPENDS</filename></link>
+                    variable), the OpenEmbedded build system ignores your
+                    request and will install the packages to avoid dependency
+                    errors.
+                    <note>
+                        Some recommended packages might be required for certain
+                        system functionality, such as kernel modules.
+                        It is up to you to add packages with the
+                        <link linkend='var-IMAGE_INSTALL'><filename>IMAGE_INSTALL</filename></link>
+                        variable.
+                    </note>
+                </para>
+
+                <para>
+                    Support for this variable exists only when using the
+                    IPK and RPM packaging backend.
+                    Support does not exist for DEB.
+                </para>
+
+                <para>
+                    See the
+                    <link linkend='var-BAD_RECOMMENDATIONS'><filename>BAD_RECOMMENDATIONS</filename></link>
+                    and the
+                    <link linkend='var-PACKAGE_EXCLUDE'><filename>PACKAGE_EXCLUDE</filename></link>
+                    variables for related information.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-NOAUTOPACKAGEDEBUG'><glossterm>NOAUTOPACKAGEDEBUG</glossterm>
+            <info>
+                NOAUTOPACKAGEDEBUG[doc] = "Disables auto package from splitting .debug files."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Disables auto package from splitting
+                    <filename>.debug</filename> files. If a recipe requires
+                    <filename>FILES_${PN}-dbg</filename> to be set manually,
+                    the <filename>NOAUTOPACKAGEDEBUG</filename> can be defined
+                    allowing you to define the content of the debug package.
+                    For example:
+                    <literallayout class='monospaced'>
+     NOAUTOPACKAGEDEBUG = "1"
+     FILES_${PN}-dev = "${includedir}/${QT_DIR_NAME}/Qt/*"
+     FILES_${PN}-dbg = "/usr/src/debug/"
+     FILES_${QT_BASE_NAME}-demos-doc = "${docdir}/${QT_DIR_NAME}/qch/qt.qch"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+    </glossdiv>
+
+    <glossdiv id='var-glossary-o'><title>O</title>
+
+        <glossentry id='var-OBJCOPY'><glossterm>OBJCOPY</glossterm>
+            <info>
+                OBJCOPY[doc] = "Minimal command and arguments to run 'objcopy'."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The minimal command and arguments to run
+                    <filename>objcopy</filename>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-OBJDUMP'><glossterm>OBJDUMP</glossterm>
+            <info>
+                OBJDUMP[doc] = "Minimal command and arguments to run 'objdump'."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The minimal command and arguments to run
+                    <filename>objdump</filename>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-OE_BINCONFIG_EXTRA_MANGLE'><glossterm>OE_BINCONFIG_EXTRA_MANGLE</glossterm>
+            <info>
+                OE_BINCONFIG_EXTRA_MANGLE[doc] = "When a recipe inherits the binconfig.bbclass class, this variable specifies additional arguments passed to the "sed" command."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When inheriting the
+                    <link linkend='ref-classes-binconfig'><filename>binconfig</filename></link>
+                    class, this variable
+                    specifies additional arguments passed to the "sed" command.
+                    The sed command alters any paths in configuration scripts
+                    that have been set up during compilation.
+                    Inheriting this class results in all paths in these scripts
+                    being changed to point into the
+                    <filename>sysroots/</filename> directory so that all builds
+                    that use the script will use the correct directories
+                    for the cross compiling layout.
+                </para>
+
+                <para>
+                    See the <filename>meta/classes/binconfig.bbclass</filename>
+                    in the
+                    <link linkend='source-directory'>Source Directory</link>
+                    for details on how this class applies these additional
+                    sed command arguments.
+                    For general information on the
+                    <filename>binconfig</filename> class, see the
+                    "<link linkend='ref-classes-binconfig'><filename>binconfig.bbclass</filename></link>"
+                    section.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-OE_IMPORTS'><glossterm>OE_IMPORTS</glossterm>
+            <info>
+                OE_IMPORTS[doc] = "An internal variable used to tell the OpenEmbedded build system what Python modules to import for every Python function run by the system."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    An internal variable used to tell the OpenEmbedded build
+                    system what Python modules to import for every Python
+                    function run by the system.
+                </para>
+
+                <note>
+                    Do not set this variable.
+                    It is for internal use only.
+                </note>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-OE_INIT_ENV_SCRIPT'><glossterm>OE_INIT_ENV_SCRIPT</glossterm>
+            <info>
+                OE_INIT_ENV_SCRIPT[doc] = "The name of the build environment setup script for the purposes of setting up the environment within the extensible SDK."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The name of the build environment setup script for the
+                    purposes of setting up the environment within the
+                    extensible SDK.
+                    The default value is "oe-init-build-env".
+                </para>
+
+                <para>
+                    If you use a custom script to set up your build
+                    environment, set the
+                    <filename>OE_INIT_ENV_SCRIPT</filename> variable to its
+                    name.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-OE_TERMINAL'><glossterm>OE_TERMINAL</glossterm>
+            <info>
+                OE_TERMINAL[doc] = "Controls how the OpenEmbedded build system spawns interactive terminals on the host development system."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Controls how the OpenEmbedded build system spawns
+                    interactive terminals on the host development system
+                    (e.g. using the BitBake command with the
+                    <filename>-c devshell</filename> command-line option).
+                    For more information, see the
+                    "<ulink url='&YOCTO_DOCS_DEV_URL;#platdev-appdev-devshell'>Using a Development Shell</ulink>" section
+                    in the Yocto Project Development Tasks Manual.
+                 </para>
+
+                 <para>
+                    You can use the following values for the
+                    <filename>OE_TERMINAL</filename> variable:
+                    <literallayout class='monospaced'>
+     auto
+     gnome
+     xfce
+     rxvt
+     screen
+     konsole
+     none
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-OEROOT'><glossterm>OEROOT</glossterm>
+            <info>
+                OEROOT[doc] = "The directory from which the top-level build environment setup script is sourced."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The directory from which the top-level build environment
+                    setup script is sourced.
+                    The Yocto Project provides a top-level build environment
+                    setup script:
+                    <link linkend='structure-core-script'><filename>&OE_INIT_FILE;</filename></link>.
+                    When you run this script, the
+                    <filename>OEROOT</filename> variable resolves to the
+                    directory that contains the script.
+                </para>
+
+                <para>
+                    For additional information on how this variable is used,
+                    see the initialization script.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-OLDEST_KERNEL'><glossterm>OLDEST_KERNEL</glossterm>
+            <info>
+                OLDEST_KERNEL[doc] = "Declares the oldest version of the Linux kernel that the produced binaries must support."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Declares the oldest version of the Linux kernel that the
+                    produced binaries must support.
+                    This variable is passed into the build of the Embedded
+                    GNU C Library (<filename>glibc</filename>).
+                </para>
+
+                <para>
+                    The default for this variable comes from the
+                    <filename>meta/conf/bitbake.conf</filename> configuration
+                    file.
+                    You can override this default by setting the variable
+                    in a custom distribution configuration file.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-OVERRIDES'><glossterm>OVERRIDES</glossterm>
+            <info>
+                OVERRIDES[doc] = "A colon-separated list of overrides that currently apply."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A colon-separated list of overrides that currently apply.
+                    Overrides are a BitBake mechanism that allows variables to
+                    be selectively overridden at the end of parsing.
+                    The set of overrides in <filename>OVERRIDES</filename>
+                    represents the "state" during building, which includes
+                    the current recipe being built, the machine for which
+                    it is being built, and so forth.
+                </para>
+
+                <para>
+                    As an example, if the string "an-override" appears as an
+                    element in the colon-separated list in
+                    <filename>OVERRIDES</filename>, then the following
+                    assignment will override <filename>FOO</filename> with the
+                    value "overridden" at the end of parsing:
+                    <literallayout class='monospaced'>
+     FOO_an-override = "overridden"
+                    </literallayout>
+                    See the
+                    "<ulink url='&YOCTO_DOCS_BB_URL;#conditional-syntax-overrides'>Conditional Syntax (Overrides)</ulink>"
+                    section in the BitBake User Manual for more information on
+                    the overrides mechanism.
+                </para>
+
+                <para>
+                    The default value of <filename>OVERRIDES</filename>
+                    includes the values of the
+                    <link linkend='var-CLASSOVERRIDE'><filename>CLASSOVERRIDE</filename></link>,
+                    <link linkend='var-MACHINEOVERRIDES'><filename>MACHINEOVERRIDES</filename></link>,
+                    and
+                    <link linkend='var-DISTROOVERRIDES'><filename>DISTROOVERRIDES</filename></link>
+                    variables.
+                    Another important override included by default is
+                    <filename>pn-${PN}</filename>.
+                    This override allows variables to be set for a single
+                    recipe within configuration (<filename>.conf</filename>)
+                    files.
+                    Here is an example:
+                    <literallayout class='monospaced'>
+     FOO_pn-myrecipe = "myrecipe-specific value"
+                    </literallayout>
+                    <note><title>Tip</title>
+                        An easy way to see what overrides apply is to search for
+                        <filename>OVERRIDES</filename> in the output of the
+                        <filename>bitbake -e</filename> command.
+                        See the
+                        "<ulink url='&YOCTO_DOCS_DEV_URL;#dev-debugging-viewing-variable-values'>Viewing Variable Values</ulink>"
+                        section in the Yocto Project Development Tasks
+                        Manual for more information.
+                    </note>
+                </para>
+            </glossdef>
+        </glossentry>
+    </glossdiv>
+
+    <glossdiv id='var-glossary-p'><title>P</title>
+
+        <glossentry id='var-P'><glossterm>P</glossterm>
+            <info>
+                P[doc] = "The recipe name and version. P is comprised of ${PN}-${PV}."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The recipe name and version.
+                    <filename>P</filename> is comprised of the following:
+                    <literallayout class='monospaced'>
+     ${PN}-${PV}
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PACKAGE_ADD_METADATA'><glossterm>PACKAGE_ADD_METADATA</glossterm>
+            <info>
+                PACKAGE_ADD_METADATA[doc] = "This variable defines additional metadata to add to packages."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+<!--                <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
+                    This variable defines additional metdata to add to packages.
+                </para>
+
+                <para>
+                    You may find you need to inject additional metadata into
+                    packages. This variable allows you to do that by setting
+                    the injected data as the value. Multiple fields can be
+                    added by splitting the content with the literal separator
+                    "\n".
+                </para>
+
+                <para>
+                    The suffixes '_IPK', '_DEB', or '_RPM' can be applied to
+                    the variable to do package type specific settings. It can
+                    also be made package specific by using the package name as
+                    a suffix.
+                </para>
+
+                <para>
+                    You can find out more about applying this variable in
+                    the
+                    "<ulink url='&YOCTO_DOCS_DEV_URL;#adding-custom-metadata-to-packages'>Adding custom metadata to packages</ulink>"
+                    section in the Yocto Project Development Tasks Manual.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PACKAGE_ARCH'><glossterm>PACKAGE_ARCH</glossterm>
+            <info>
+                PACKAGE_ARCH[doc] = "The architecture of the resulting package or packages."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The architecture of the resulting package or packages.
+                </para>
+
+                <para>
+                    By default, the value of this variable is set to
+                    <link linkend='var-TUNE_PKGARCH'><filename>TUNE_PKGARCH</filename></link>
+                    when building for the target,
+                    <link linkend='var-BUILD_ARCH'><filename>BUILD_ARCH</filename></link>
+                    when building for the
+                    build host, and "${SDK_ARCH}-${SDKPKGSUFFIX}" when building
+                    for the SDK.
+                    <note>
+                        See
+                        <link linkend='var-SDK_ARCH'><filename>SDK_ARCH</filename></link>
+                        for more information.
+                    </note>
+                    However, if your recipe's output packages are built
+                    specific to the target machine rather than generally for
+                    the architecture of the machine, you should set
+                    <filename>PACKAGE_ARCH</filename> to the value of
+                    <link linkend='var-MACHINE_ARCH'><filename>MACHINE_ARCH</filename></link>
+                    in the recipe as follows:
+                    <literallayout class='monospaced'>
+     PACKAGE_ARCH = "${MACHINE_ARCH}"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PACKAGE_ARCHS'><glossterm>PACKAGE_ARCHS</glossterm>
+            <info>
+                PACKAGE_ARCHS[doc] = "A list of architectures compatible with the given target in order of priority."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies a list of architectures compatible with
+                    the target machine.
+                    This variable is set automatically and should not
+                    normally be hand-edited.
+                    Entries are separated using spaces and listed in order
+                    of priority.
+                    The default value for
+                    <filename>PACKAGE_ARCHS</filename> is "all any noarch
+                    ${PACKAGE_EXTRA_ARCHS} ${MACHINE_ARCH}".
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PACKAGE_BEFORE_PN'><glossterm>PACKAGE_BEFORE_PN</glossterm>
+            <info>
+                PACKAGE_BEFORE_PN[doc] = "Enables easily adding packages to PACKAGES before ${PN} so that the packages can pick up files that would normally be included in the default package."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Enables easily adding packages to
+                    <filename><link linkend='var-PACKAGES'>PACKAGES</link></filename>
+                    before <filename>${<link linkend='var-PN'>PN</link>}</filename>
+                    so that those added packages can pick up files that would normally be
+                    included in the default package.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PACKAGE_CLASSES'><glossterm>PACKAGE_CLASSES</glossterm>
+            <info>
+                PACKAGE_CLASSES[doc] = "This variable specifies the package manager to use when packaging data. It is set in the conf/local.conf file in the Build Directory."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    This variable, which is set in the
+                    <filename>local.conf</filename> configuration file found in
+                    the <filename>conf</filename> folder of the
+                    <link linkend='build-directory'>Build Directory</link>,
+                    specifies the package manager the OpenEmbedded build system
+                    uses when packaging data.
+                </para>
+
+                <para>
+                    You can provide one or more of the following arguments for
+                    the variable:
+                    <literallayout class='monospaced'>
+     PACKAGE_CLASSES ?= "package_rpm package_deb package_ipk package_tar"
+                    </literallayout>
+                    <note><title>Warning</title>
+                        While it is a legal option, the
+                        <filename>package_tar</filename> class has limited
+                        functionality due to no support for package
+                        dependencies by that backend.
+                        Therefore, it is recommended that you do not use it.
+                    </note>
+                    The build system uses only the first argument in the list
+                    as the package manager when creating your image or SDK.
+                    However, packages will be created using any additional
+                    packaging classes you specify.
+                    For example, if you use the following in your
+                    <filename>local.conf</filename> file:
+                    <literallayout class='monospaced'>
+     PACKAGE_CLASSES ?= "package_ipk"
+                    </literallayout>
+                    The OpenEmbedded build system uses the IPK package manager
+                    to create your image or SDK.
+                </para>
+
+                <para>
+                    For information on packaging and build performance effects
+                    as a result of the package manager in use, see the
+                    "<link linkend='ref-classes-package'><filename>package.bbclass</filename></link>"
+                    section.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PACKAGE_DEBUG_SPLIT_STYLE'><glossterm>PACKAGE_DEBUG_SPLIT_STYLE</glossterm>
+            <info>
+                PACKAGE_DEBUG_SPLIT_STYLE[doc] = "Determines how to split up the binary and debug information when creating *-dbg packages to be used with the GNU Project Debugger (GDB)."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Determines how to split up the binary and debug information
+                    when creating <filename>*-dbg</filename> packages to be
+                    used with the GNU Project Debugger (GDB).
+                </para>
+
+                <para>
+                    With the
+                    <filename>PACKAGE_DEBUG_SPLIT_STYLE</filename> variable,
+                    you can control where debug information, which can include
+                    or exclude source files, is stored:
+                    <itemizedlist>
+                        <listitem><para>
+                            ".debug": Debug symbol files are placed next
+                            to the binary in a <filename>.debug</filename>
+                            directory on the target.
+                            For example, if a binary is installed into
+                            <filename>/bin</filename>, the corresponding debug
+                            symbol files are installed in
+                            <filename>/bin/.debug</filename>.
+                            Source files are placed in
+                            <filename>/usr/src/debug</filename>.
+                            </para></listitem>
+                        <listitem><para>
+                            "debug-file-directory": Debug symbol files are
+                            placed under <filename>/usr/lib/debug</filename>
+                            on the target, and separated by the path from where
+                            the binary is installed.
+                            For example, if a binary is installed in
+                            <filename>/bin</filename>, the corresponding debug
+                            symbols are installed in
+                            <filename>/usr/lib/debug/bin</filename>.
+                            Source files are placed in
+                            <filename>/usr/src/debug</filename>.
+                            </para></listitem>
+                        <listitem><para>
+                            "debug-without-src": The same behavior as
+                            ".debug" previously described with the exception
+                            that no source files are installed.
+                            </para></listitem>.
+                        <listitem><para>
+                            "debug-with-srcpkg": The same behavior as
+                            ".debug" previously described with the exception
+                            that all source files are placed in a separate
+                            <filename>*-src</filename> pkg.
+                            This is the default behavior.
+                            </para></listitem>
+                    </itemizedlist>
+                </para>
+
+                <para>
+                    You can find out more about debugging using GDB by reading
+                    the
+                    "<ulink url='&YOCTO_DOCS_DEV_URL;#platdev-gdb-remotedebug'>Debugging With the GNU Project Debugger (GDB) Remotely</ulink>"
+                    section in the Yocto Project Development Tasks Manual.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PACKAGE_EXCLUDE_COMPLEMENTARY'><glossterm>PACKAGE_EXCLUDE_COMPLEMENTARY</glossterm>
+            <info>
+                PACKAGE_EXCLUDE_COMPLEMENTARY[doc] = "Prevents specific packages from being installed when you are installing complementary packages."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Prevents specific packages from being installed when
+                    you are installing complementary packages.
+                </para>
+
+                <para>
+                    You might find that you want to prevent installing certain
+                    packages when you are installing complementary packages.
+                    For example, if you are using
+                    <link linkend='var-IMAGE_FEATURES'><filename>IMAGE_FEATURES</filename></link>
+                    to install <filename>dev-pkgs</filename>, you might not want
+                    to install all packages from a particular multilib.
+                    If you find yourself in this situation, you can use the
+                    <filename>PACKAGE_EXCLUDE_COMPLEMENTARY</filename> variable
+                    to specify regular expressions to match the packages you
+                    want to exclude.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PACKAGE_EXCLUDE'><glossterm>PACKAGE_EXCLUDE</glossterm>
+            <info>
+                PACKAGE_EXCLUDE[doc] = "Packages to exclude from the installation. If a listed package is required, an error is generated."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Lists packages that should not be installed into an image.
+                    For example:
+                    <literallayout class='monospaced'>
+     PACKAGE_EXCLUDE = "<replaceable>package_name</replaceable> <replaceable>package_name</replaceable> <replaceable>package_name</replaceable> ..."
+                    </literallayout>
+                </para>
+
+                <para>
+                    You can set this variable globally in your
+                    <filename>local.conf</filename> file or you can attach it to
+                    a specific image recipe by using the recipe name override:
+                    <literallayout class='monospaced'>
+     PACKAGE_EXCLUDE_pn-<replaceable>target_image</replaceable> = "<replaceable>package_name</replaceable>"
+                    </literallayout>
+                </para>
+
+                <para>
+                    If you choose to not install
+                    a package using this variable and some other package is
+                    dependent on it (i.e. listed in a recipe's
+                    <link linkend='var-RDEPENDS'><filename>RDEPENDS</filename></link>
+                    variable), the OpenEmbedded build system generates a fatal
+                    installation error.
+                    Because the build system halts the process with a fatal
+                    error, you can use the variable with an iterative
+                    development process to remove specific components from a
+                    system.
+                </para>
+
+                <para>
+                    Support for this variable exists only when using the
+                    IPK and RPM packaging backend.
+                    Support does not exist for DEB.
+                </para>
+
+                <para>
+                    See the
+                    <link linkend='var-NO_RECOMMENDATIONS'><filename>NO_RECOMMENDATIONS</filename></link>
+                    and the
+                    <link linkend='var-BAD_RECOMMENDATIONS'><filename>BAD_RECOMMENDATIONS</filename></link>
+                    variables for related information.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PACKAGE_EXTRA_ARCHS'><glossterm>PACKAGE_EXTRA_ARCHS</glossterm>
+            <info>
+                PACKAGE_EXTRA_ARCHS[doc] = "Specifies the list of architectures compatible with the device CPU. This variable is useful when you build for several different devices that use miscellaneous processors."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the list of architectures compatible with the device CPU.
+                    This variable is useful when you build for several different devices that use
+                    miscellaneous processors such as XScale and ARM926-EJS.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PACKAGE_FEED_ARCHS'><glossterm>PACKAGE_FEED_ARCHS</glossterm>
+            <info>
+                PACKAGE_FEED_ARCHS[doc] = "Optionally specifies user-defined package architectures when constructing package feed URIs."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Optionally specifies the package architectures used as
+                    part of the package feed URIs during the build.
+                    When used, the <filename>PACKAGE_FEED_ARCHS</filename>
+                    variable is appended to the final package feed URI, which
+                    is constructed using the
+                    <link linkend='var-PACKAGE_FEED_URIS'><filename>PACKAGE_FEED_URIS</filename></link>
+                    and
+                    <link linkend='var-PACKAGE_FEED_BASE_PATHS'><filename>PACKAGE_FEED_BASE_PATHS</filename></link>
+                    variables.
+                    <note><title>Tip</title>
+                        You can use the <filename>PACKAGE_FEEDS_ARCHS</filename>
+                        variable to whitelist specific package architectures.
+                        If you do not need to whitelist specific architectures,
+                        which is a common case, you can omit this variable.
+                        Omitting the variable results in all available
+                        architectures for the current machine being included
+                        into remote package feeds.
+                    </note>
+                </para>
+
+                <para>
+                    Consider the following example where the
+                    <filename>PACKAGE_FEED_URIS</filename>,
+                    <filename>PACKAGE_FEED_BASE_PATHS</filename>, and
+                    <filename>PACKAGE_FEED_ARCHS</filename> variables are
+                    defined in your <filename>local.conf</filename> file:
+                    <literallayout class='monospaced'>
+     PACKAGE_FEED_URIS = "https://example.com/packagerepos/release \
+                          https://example.com/packagerepos/updates"
+     PACKAGE_FEED_BASE_PATHS = "rpm rpm-dev"
+     PACKAGE_FEED_ARCHS = "all core2-64"
+                    </literallayout>
+                    Given these settings, the resulting package feeds are
+                    as follows:
+                    <literallayout class='monospaced'>
+     https://example.com/packagerepos/release/rpm/all
+     https://example.com/packagerepos/release/rpm/core2-64
+     https://example.com/packagerepos/release/rpm-dev/all
+     https://example.com/packagerepos/release/rpm-dev/core2-64
+     https://example.com/packagerepos/updates/rpm/all
+     https://example.com/packagerepos/updates/rpm/core2-64
+     https://example.com/packagerepos/updates/rpm-dev/all
+     https://example.com/packagerepos/updates/rpm-dev/core2-64
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PACKAGE_FEED_BASE_PATHS'><glossterm>PACKAGE_FEED_BASE_PATHS</glossterm>
+            <info>
+                PACKAGE_FEED_BASE_PATHS[doc] = "Specifies base path used when constructing package feed URIs."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the base path used when constructing package feed
+                    URIs.
+                    The <filename>PACKAGE_FEED_BASE_PATHS</filename> variable
+                    makes up the middle portion of a package feed URI used
+                    by the OpenEmbedded build system.
+                    The base path lies between the
+                    <link linkend='var-PACKAGE_FEED_URIS'><filename>PACKAGE_FEED_URIS</filename></link>
+                    and
+                    <link linkend='var-PACKAGE_FEED_ARCHS'><filename>PACKAGE_FEED_ARCHS</filename></link>
+                    variables.
+                </para>
+
+                <para>
+                    Consider the following example where the
+                    <filename>PACKAGE_FEED_URIS</filename>,
+                    <filename>PACKAGE_FEED_BASE_PATHS</filename>, and
+                    <filename>PACKAGE_FEED_ARCHS</filename> variables are
+                    defined in your <filename>local.conf</filename> file:
+                    <literallayout class='monospaced'>
+     PACKAGE_FEED_URIS = "https://example.com/packagerepos/release \
+                          https://example.com/packagerepos/updates"
+     PACKAGE_FEED_BASE_PATHS = "rpm rpm-dev"
+     PACKAGE_FEED_ARCHS = "all core2-64"
+                    </literallayout>
+                    Given these settings, the resulting package feeds are
+                    as follows:
+                    <literallayout class='monospaced'>
+     https://example.com/packagerepos/release/rpm/all
+     https://example.com/packagerepos/release/rpm/core2-64
+     https://example.com/packagerepos/release/rpm-dev/all
+     https://example.com/packagerepos/release/rpm-dev/core2-64
+     https://example.com/packagerepos/updates/rpm/all
+     https://example.com/packagerepos/updates/rpm/core2-64
+     https://example.com/packagerepos/updates/rpm-dev/all
+     https://example.com/packagerepos/updates/rpm-dev/core2-64
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PACKAGE_FEED_URIS'><glossterm>PACKAGE_FEED_URIS</glossterm>
+            <info>
+                PACKAGE_FEED_URIS[doc] = "Specifies the front portion of the package feed URI used by the OpenEmbedded build system."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the front portion of the package feed URI
+                    used by the OpenEmbedded build system.
+                    Each final package feed URI is comprised of
+                    <filename>PACKAGE_FEED_URIS</filename>,
+                    <link linkend='var-PACKAGE_FEED_BASE_PATHS'><filename>PACKAGE_FEED_BASE_PATHS</filename></link>,
+                    and
+                    <link linkend='var-PACKAGE_FEED_ARCHS'><filename>PACKAGE_FEED_ARCHS</filename></link>
+                    variables.
+                </para>
+
+                <para>
+                    Consider the following example where the
+                    <filename>PACKAGE_FEED_URIS</filename>,
+                    <filename>PACKAGE_FEED_BASE_PATHS</filename>, and
+                    <filename>PACKAGE_FEED_ARCHS</filename> variables are
+                    defined in your <filename>local.conf</filename> file:
+                    <literallayout class='monospaced'>
+     PACKAGE_FEED_URIS = "https://example.com/packagerepos/release \
+                          https://example.com/packagerepos/updates"
+     PACKAGE_FEED_BASE_PATHS = "rpm rpm-dev"
+     PACKAGE_FEED_ARCHS = "all core2-64"
+                    </literallayout>
+                    Given these settings, the resulting package feeds are
+                    as follows:
+                    <literallayout class='monospaced'>
+     https://example.com/packagerepos/release/rpm/all
+     https://example.com/packagerepos/release/rpm/core2-64
+     https://example.com/packagerepos/release/rpm-dev/all
+     https://example.com/packagerepos/release/rpm-dev/core2-64
+     https://example.com/packagerepos/updates/rpm/all
+     https://example.com/packagerepos/updates/rpm/core2-64
+     https://example.com/packagerepos/updates/rpm-dev/all
+     https://example.com/packagerepos/updates/rpm-dev/core2-64
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PACKAGE_INSTALL'><glossterm>PACKAGE_INSTALL</glossterm>
+            <info>
+                PACKAGE_INSTALL[doc] = "List of the packages to be installed into the image. The variable is generally not user-defined and uses IMAGE_INSTALL as part of the list."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The final list of packages passed to the package manager
+                    for installation into the image.
+                </para>
+
+                <para>
+                    Because the package manager controls actual installation
+                    of all packages, the list of packages passed using
+                    <filename>PACKAGE_INSTALL</filename> is not the final list
+                    of packages that are actually installed.
+                    This variable is internal to the image construction
+                    code.
+                    Consequently, in general, you should use the
+                    <link linkend='var-IMAGE_INSTALL'><filename>IMAGE_INSTALL</filename></link>
+                    variable to specify packages for installation.
+                    The exception to this is when working with
+                    the
+                    <link linkend='images-core-image-minimal-initramfs'><filename>core-image-minimal-initramfs</filename></link>
+                    image.
+                    When working with an initial RAM filesystem (initramfs)
+                    image, use the <filename>PACKAGE_INSTALL</filename>
+                    variable.
+                    For information on creating an initramfs, see the
+                    "<ulink url='&YOCTO_DOCS_DEV_URL;#building-an-initramfs-image'>Building an Initial RAM Filesystem (initramfs) Image</ulink>"
+                    section in the Yocto Project Development Tasks Manual.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PACKAGE_INSTALL_ATTEMPTONLY'><glossterm>PACKAGE_INSTALL_ATTEMPTONLY</glossterm>
+            <info>
+                PACKAGE_INSTALL_ATTEMPTONLY[doc] = "List of packages attempted to be installed when creating an image. If a listed package fails to install, the build system does not generate an error. This variable is generally not user-defined."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies a list of packages the OpenEmbedded build
+                    system attempts to install when creating an image.
+                    If a listed package fails to install, the build system
+                    does not generate an error.
+                    This variable is generally not user-defined.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PACKAGE_PREPROCESS_FUNCS'><glossterm>PACKAGE_PREPROCESS_FUNCS</glossterm>
+            <info>
+                PACKAGE_PREPROCESS_FUNCS[doc] = "Specifies a list of functions run to pre-process the PKGD directory prior to splitting the files out to individual packages."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies a list of functions run to pre-process the
+                    <link linkend='var-PKGD'><filename>PKGD</filename></link>
+                    directory prior to splitting the files out to individual
+                    packages.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PACKAGE_WRITE_DEPS'><glossterm>PACKAGE_WRITE_DEPS</glossterm>
+            <info>
+                PACKAGE_WRITE_DEPS[doc] = "Specifies post-installation and pre-installation script dependencies on native/cross tools."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies a list of dependencies for post-installation and
+                    pre-installation scripts on native/cross tools.
+                    If your post-installation or pre-installation script can
+                    execute at rootfs creation time rather than on the
+                    target but depends on a native tool in order to execute,
+                    you need to list the tools in
+                    <filename>PACKAGE_WRITE_DEPS</filename>.
+                </para>
+
+                <para>
+                    For information on running post-installation scripts, see
+                    the
+                    "<ulink url='&YOCTO_DOCS_DEV_URL;#new-recipe-post-installation-scripts'>Post-Installation Scripts</ulink>"
+                    section in the Yocto Project Development Tasks Manual.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PACKAGECONFIG'><glossterm>PACKAGECONFIG</glossterm>
+            <info>
+                PACKAGECONFIG[doc] = "This variable provides a means of enabling or disabling features of a recipe on a per-recipe basis."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    This variable provides a means of enabling or disabling
+                    features of a recipe on a per-recipe basis.
+                    <filename>PACKAGECONFIG</filename> blocks are defined
+                    in recipes when you specify features and then arguments
+                    that define feature behaviors.
+                    Here is the basic block structure (broken over multiple
+                    lines for readability):
+                    <literallayout class='monospaced'>
+     PACKAGECONFIG ??= "f1 f2 f3 ..."
+     PACKAGECONFIG[f1] = "\
+                          --with-f1, \
+                          --without-f1, \
+                          build-deps-for-f1, \
+                          runtime-deps-for-f1, \
+                          runtime-recommends-for-f1, \
+                          packageconfig-conflicts-for-f1 \
+                          "
+     PACKAGECONFIG[f2] = "\
+                         ... and so on and so on ...
+                    </literallayout>
+                </para>
+
+                <para>
+                    The <filename>PACKAGECONFIG</filename>
+                    variable itself specifies a space-separated list of the
+                    features to enable.
+                    Following the features, you can determine the behavior of
+                    each feature by providing up to six order-dependent
+                    arguments, which are separated by commas.
+                    You can omit any argument you like but must retain the
+                    separating commas.
+                    The order is important and specifies the following:
+                    <orderedlist>
+                        <listitem><para>Extra arguments
+                            that should be added to the configure script
+                            argument list
+                            (<link linkend='var-EXTRA_OECONF'><filename>EXTRA_OECONF</filename></link>
+                            or
+                            <link linkend='var-PACKAGECONFIG_CONFARGS'><filename>PACKAGECONFIG_CONFARGS</filename></link>)
+                            if the feature is enabled.</para></listitem>
+                        <listitem><para>Extra arguments
+                            that should be added to <filename>EXTRA_OECONF</filename>
+                            or <filename>PACKAGECONFIG_CONFARGS</filename>
+                            if the feature is disabled.
+                            </para></listitem>
+                        <listitem><para>Additional build dependencies
+                            (<link linkend='var-DEPENDS'><filename>DEPENDS</filename></link>)
+                            that should be added if the feature is enabled.
+                            </para></listitem>
+                        <listitem><para>Additional runtime dependencies
+                            (<link linkend='var-RDEPENDS'><filename>RDEPENDS</filename></link>)
+                            that should be added if the feature is enabled.
+                            </para></listitem>
+                        <listitem><para>Additional runtime recommendations
+                            (<link linkend='var-RRECOMMENDS'><filename>RRECOMMENDS</filename></link>)
+                            that should be added if the feature is enabled.
+                            </para></listitem>
+                        <listitem><para>Any conflicting (that is, mutually
+                            exclusive) <filename>PACKAGECONFIG</filename>
+                            settings for this feature.
+                            </para></listitem>
+                    </orderedlist>
+                </para>
+
+                <para>
+                    Consider the following
+                    <filename>PACKAGECONFIG</filename> block taken from the
+                    <filename>librsvg</filename> recipe.
+                    In this example the feature is <filename>gtk</filename>,
+                    which has three arguments that determine the feature's
+                    behavior.
+                    <literallayout class='monospaced'>
+     PACKAGECONFIG[gtk] = "--with-gtk3,--without-gtk3,gtk+3"
+                    </literallayout>
+                    The <filename>--with-gtk3</filename> and
+                    <filename>gtk+3</filename> arguments apply only if
+                    the feature is enabled.
+                    In this case, <filename>--with-gtk3</filename> is
+                    added to the configure script argument list and
+                    <filename>gtk+3</filename> is added to
+                    <filename>DEPENDS</filename>.
+                    On the other hand, if the feature is disabled say through
+                    a <filename>.bbappend</filename> file in another layer, then
+                    the second argument <filename>--without-gtk3</filename> is
+                    added to the configure script instead.
+                </para>
+
+                <para>
+                    The basic <filename>PACKAGECONFIG</filename> structure
+                    previously described holds true regardless of whether you
+                    are creating a block or changing a block.
+                    When creating a block, use the structure inside your
+                    recipe.
+                </para>
+
+                <para>
+                    If you want to change an existing
+                    <filename>PACKAGECONFIG</filename> block, you can do so
+                    one of two ways:
+                    <itemizedlist>
+                        <listitem><para><emphasis>Append file:</emphasis>
+                            Create an append file named
+                            <replaceable>recipename</replaceable><filename>.bbappend</filename>
+                            in your layer and override the value of
+                            <filename>PACKAGECONFIG</filename>.
+                            You can either completely override the variable:
+                            <literallayout class='monospaced'>
+      PACKAGECONFIG = "f4 f5"
+                            </literallayout>
+                            Or, you can just append the variable:
+                            <literallayout class='monospaced'>
+     PACKAGECONFIG_append = " f4"
+                            </literallayout></para></listitem>
+                        <listitem><para><emphasis>Configuration file:</emphasis>
+                            This method is identical to changing the block
+                            through an append file except you edit your
+                            <filename>local.conf</filename> or
+                            <filename><replaceable>mydistro</replaceable>.conf</filename> file.
+                            As with append files previously described,
+                            you can either completely override the variable:
+                            <literallayout class='monospaced'>
+     PACKAGECONFIG_pn-<replaceable>recipename</replaceable> = "f4 f5"
+                            </literallayout>
+                            Or, you can just amend the variable:
+                            <literallayout class='monospaced'>
+     PACKAGECONFIG_append_pn-<replaceable>recipename</replaceable> = " f4"
+                            </literallayout></para></listitem>
+                    </itemizedlist>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PACKAGECONFIG_CONFARGS'><glossterm>PACKAGECONFIG_CONFARGS</glossterm>
+            <info>
+                PACKAGECONFIG_CONFARGS[doc] = "A space-separated list of configuration options generated from the PACKAGECONFIG setting."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A space-separated list of configuration options generated
+                    from the
+                    <link linkend='var-PACKAGECONFIG'><filename>PACKAGECONFIG</filename></link>
+                    setting.
+                </para>
+
+                <para>
+                    Classes such as
+                    <link linkend='ref-classes-autotools'><filename>autotools</filename></link>
+                    and
+                    <link linkend='ref-classes-cmake'><filename>cmake</filename></link>
+                    use <filename>PACKAGECONFIG_CONFARGS</filename> to pass
+                    <filename>PACKAGECONFIG</filename> options to
+                    <filename>configure</filename> and
+                    <filename>cmake</filename>, respectively.
+                    If you are using
+                    <filename>PACKAGECONFIG</filename> but not a class that
+                    handles the <filename>do_configure</filename> task, then
+                    you need to use
+                    <filename>PACKAGECONFIG_CONFARGS</filename> appropriately.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PACKAGEGROUP_DISABLE_COMPLEMENTARY'><glossterm>PACKAGEGROUP_DISABLE_COMPLEMENTARY</glossterm>
+            <info>
+                PACKAGEGROUP_DISABLE_COMPLEMENTARY[doc] = "Prevents automatic creation of the normal complementary packages such as -dev and -dbg in a packagegroup recipe."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    For recipes inheriting the
+                    <link linkend='ref-classes-packagegroup'><filename>packagegroup</filename></link>
+                    class, setting
+                    <filename>PACKAGEGROUP_DISABLE_COMPLEMENTARY</filename> to
+                    "1" specifies that the normal complementary packages
+                    (i.e. <filename>-dev</filename>,
+                    <filename>-dbg</filename>, and so forth) should not be
+                    automatically created by the
+                    <filename>packagegroup</filename> recipe, which is the
+                    default behavior.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PACKAGES'><glossterm>PACKAGES</glossterm>
+            <info>
+                PACKAGES[doc] = "The list of packages the recipe creates."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The list of packages the recipe creates.
+                    The default value is the following:
+                    <literallayout class='monospaced'>
+     ${PN}-dbg ${PN}-staticdev ${PN}-dev ${PN}-doc ${PN}-locale ${PACKAGE_BEFORE_PN} ${PN}
+                    </literallayout>
+                </para>
+
+                <para>
+                    During packaging, the
+                    <link linkend='ref-tasks-package'><filename>do_package</filename></link>
+                    task goes through <filename>PACKAGES</filename> and uses
+                    the
+                    <link linkend='var-FILES'><filename>FILES</filename></link>
+                    variable corresponding to each package to assign files to
+                    the package.
+                    If a file matches the <filename>FILES</filename> variable
+                    for more than one package in <filename>PACKAGES</filename>,
+                    it will be assigned to the earliest (leftmost) package.
+                </para>
+
+                <para>
+                    Packages in the variable's list that are empty (i.e. where
+                    none of the patterns in
+                    <filename>FILES_</filename><replaceable>pkg</replaceable>
+                    match any files installed by the
+                    <link linkend='ref-tasks-install'><filename>do_install</filename></link>
+                    task) are not generated, unless generation is forced through
+                    the
+                    <link linkend='var-ALLOW_EMPTY'><filename>ALLOW_EMPTY</filename></link>
+                    variable.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PACKAGES_DYNAMIC'><glossterm>PACKAGES_DYNAMIC</glossterm>
+            <info>
+                PACKAGES_DYNAMIC[doc] = "A promise that your recipe satisfies runtime dependencies for optional modules that are found in other recipes."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A promise that your recipe satisfies runtime dependencies
+                    for optional modules that are found in other recipes.
+                    <filename>PACKAGES_DYNAMIC</filename>
+                    does not actually satisfy the dependencies, it only states that
+                    they should be satisfied.
+                    For example, if a hard, runtime dependency
+                    (<link linkend='var-RDEPENDS'><filename>RDEPENDS</filename></link>)
+                    of another package is satisfied
+                    at build time through the <filename>PACKAGES_DYNAMIC</filename>
+                    variable, but a package with the module name is never actually
+                    produced, then the other package will be broken.
+                    Thus, if you attempt to include that package in an image,
+                    you will get a dependency failure from the packaging system
+                    during the
+                    <link linkend='ref-tasks-rootfs'><filename>do_rootfs</filename></link>
+                    task.
+                </para>
+
+                <para>
+                    Typically, if there is a chance that such a situation can
+                    occur and the package that is not created is valid
+                    without the dependency being satisfied, then you should use
+                    <link linkend='var-RRECOMMENDS'><filename>RRECOMMENDS</filename></link>
+                    (a soft runtime dependency) instead of
+                    <filename>RDEPENDS</filename>.
+                </para>
+
+                <para>
+                    For an example of how to use the <filename>PACKAGES_DYNAMIC</filename>
+                    variable when you are splitting packages, see the
+                    "<ulink url='&YOCTO_DOCS_DEV_URL;#handling-optional-module-packaging'>Handling Optional Module Packaging</ulink>" section
+                    in the Yocto Project Development Tasks Manual.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PACKAGESPLITFUNCS'><glossterm>PACKAGESPLITFUNCS</glossterm>
+            <info>
+                PACKAGESPLITFUNCS[doc] = "Specifies a list of functions run to perform additional splitting of files into individual packages."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies a list of functions run to perform additional
+                    splitting of files into individual packages.
+                    Recipes can either prepend to this variable or prepend
+                    to the <filename>populate_packages</filename> function
+                    in order to perform additional package splitting.
+                    In either case, the function should set
+                    <link linkend='var-PACKAGES'><filename>PACKAGES</filename></link>,
+                    <link linkend='var-FILES'><filename>FILES</filename></link>,
+                    <link linkend='var-RDEPENDS'><filename>RDEPENDS</filename></link>
+                    and other packaging variables appropriately in order to
+                    perform the desired splitting.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PARALLEL_MAKE'><glossterm>PARALLEL_MAKE</glossterm>
+            <info>
+                PARALLEL_MAKE[doc] = "Specifies extra options that are passed to the make command during the compile tasks. This variable is usually in the form -j x, where x represents the maximum number of parallel threads make can run."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Extra options passed to the <filename>make</filename>
+                    command during the
+                    <link linkend='ref-tasks-compile'><filename>do_compile</filename></link>
+                    task in order to specify parallel compilation on the local
+                    build host.
+                    This variable is usually in the form "-j <replaceable>x</replaceable>",
+                    where <replaceable>x</replaceable> represents the maximum
+                    number of parallel threads <filename>make</filename> can
+                    run.
+                    <note><title>Caution</title>
+                        In order for <filename>PARALLEL_MAKE</filename> to be
+                        effective, <filename>make</filename> must be called
+                        with
+                        <filename>${</filename><link linkend='var-EXTRA_OEMAKE'><filename>EXTRA_OEMAKE</filename></link><filename>}</filename>.
+                        An easy way to ensure this is to use the
+                        <filename>oe_runmake</filename> function.
+                    </note>
+                </para>
+
+                <para>
+                    By default, the OpenEmbedded build system automatically
+                    sets this variable to be equal to the number of cores the
+                    build system uses.
+                    <note>
+                        If the software being built experiences dependency
+                        issues during the <filename>do_compile</filename>
+                        task that result in race conditions, you can clear
+                        the <filename>PARALLEL_MAKE</filename> variable within
+                        the recipe as a workaround.
+                        For information on addressing race conditions, see the
+                        "<ulink url='&YOCTO_DOCS_DEV_URL;#debugging-parallel-make-races'>Debugging Parallel Make Races</ulink>"
+                        section in the Yocto Project Development Tasks Manual.
+                    </note>
+                    For single socket systems (i.e. one CPU), you should not
+                    have to override this variable to gain optimal parallelism
+                    during builds.
+                    However, if you have very large systems that employ
+                    multiple physical CPUs, you might want to make sure the
+                    <filename>PARALLEL_MAKE</filename> variable is not
+                    set higher than "-j 20".
+                </para>
+
+                <para>
+                    For more information on speeding up builds, see the
+                    "<ulink url='&YOCTO_DOCS_DEV_URL;#speeding-up-a-build'>Speeding Up a Build</ulink>"
+                    section in the Yocto Project Development Tasks Manual.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PARALLEL_MAKEINST'><glossterm>PARALLEL_MAKEINST</glossterm>
+            <info>
+                PARALLEL_MAKEINST[doc] = "Extra options passed to the make install command during the do_install task in order to specify parallel installation."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Extra options passed to the
+                    <filename>make install</filename> command during the
+                    <link linkend='ref-tasks-install'><filename>do_install</filename></link>
+                    task in order to specify parallel installation.
+                    This variable defaults to the value of
+                    <link linkend='var-PARALLEL_MAKE'><filename>PARALLEL_MAKE</filename></link>.
+                    <note><title>Notes and Cautions</title>
+                        <para>In order for <filename>PARALLEL_MAKEINST</filename>
+                        to be
+                        effective, <filename>make</filename> must be called
+                        with
+                        <filename>${</filename><link linkend='var-EXTRA_OEMAKE'><filename>EXTRA_OEMAKE</filename></link><filename>}</filename>.
+                        An easy way to ensure this is to use the
+                        <filename>oe_runmake</filename> function.</para>
+
+                        <para>If the software being built experiences
+                        dependency issues during the
+                        <filename>do_install</filename> task that result in
+                        race conditions, you can clear the
+                        <filename>PARALLEL_MAKEINST</filename> variable within
+                        the recipe as a workaround.
+                        For information on addressing race conditions, see the
+                        "<ulink url='&YOCTO_DOCS_DEV_URL;#debugging-parallel-make-races'>Debugging Parallel Make Races</ulink>"
+                        section in the Yocto Project Development Tasks Manual.
+                        </para>
+                    </note>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PATCHRESOLVE'><glossterm>PATCHRESOLVE</glossterm>
+            <info>
+                PATCHRESOLVE[doc] = "Enable or disable interactive patch resolution."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Determines the action to take when a patch fails.
+                    You can set this variable to one of two values: "noop" and
+                    "user".
+                </para>
+
+                <para>
+                    The default value of "noop" causes the build to simply fail
+                    when the OpenEmbedded build system cannot successfully
+                    apply a patch.
+                    Setting the value to "user" causes the build system to
+                    launch a shell and places you in the right location so that
+                    you can manually resolve the conflicts.
+                </para>
+
+                <para>
+                    Set this variable in your
+                    <filename>local.conf</filename> file.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PATCHTOOL'><glossterm>PATCHTOOL</glossterm>
+            <info>
+                PATCHTOOL[doc] = "Specifies the utility used to apply patches for a recipe during do_patch."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the utility used to apply patches for a recipe
+                    during the
+                    <link linkend='ref-tasks-patch'><filename>do_patch</filename></link>
+                    task.
+                    You can specify one of three utilities: "patch", "quilt", or
+                    "git".
+                    The default utility used is "quilt" except for the
+                    quilt-native recipe itself.
+                    Because the quilt tool is not available at the
+                    time quilt-native is being patched, it uses "patch".
+                </para>
+
+                <para>
+                    If you wish to use an alternative patching tool, set the
+                    variable in the recipe using one of the following:
+                    <literallayout class='monospaced'>
+     PATCHTOOL = "patch"
+     PATCHTOOL = "quilt"
+     PATCHTOOL = "git"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PE'><glossterm>PE</glossterm>
+            <info>
+                PE[doc] = "The epoch of the recipe. The default value is '0'. The field is used to make upgrades possible when the versioning scheme changes in some backwards incompatible way."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The epoch of the recipe.
+                    By default, this variable is unset.
+                    The variable is used to make upgrades possible when the
+                    versioning scheme changes in some backwards incompatible
+                    way.
+                </para>
+
+                <para>
+                    <filename>PE</filename> is the default value of the
+                    <link linkend='var-PKGE'><filename>PKGE</filename></link>
+                    variable.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PF'><glossterm>PF</glossterm>
+            <info>
+                PF[doc] = "Specifies the recipe or package name and includes all version and revision numbers. This variable is comprised of ${PN}-${EXTENDPE}${PV}-${PR}."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the recipe or package name and includes all version and revision
+                    numbers (i.e. <filename>glibc-2.13-r20+svnr15508/</filename> and
+                    <filename>bash-4.2-r1/</filename>).
+                    This variable is comprised of the following:
+                    <literallayout class='monospaced'>
+     ${<link linkend='var-PN'>PN</link>}-${<link linkend='var-EXTENDPE'>EXTENDPE</link>}${<link linkend='var-PV'>PV</link>}-${<link linkend='var-PR'>PR</link>}
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PIXBUF_PACKAGES'><glossterm>PIXBUF_PACKAGES</glossterm>
+            <info>
+                PIXBUF_PACKAGES[doc] = "When a recipe inherits the pixbufcache class, this variable identifies packages that contain the pixbuf loaders used with gdk-pixbuf."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When inheriting the
+                    <link linkend='ref-classes-pixbufcache'><filename>pixbufcache</filename></link>
+                    class, this variable identifies packages that contain
+                    the pixbuf loaders used with
+                    <filename>gdk-pixbuf</filename>.
+                    By default, the <filename>pixbufcache</filename> class
+                    assumes that the loaders are in the recipe's main package
+                    (i.e. <filename>${</filename><link linkend='var-PN'><filename>PN</filename></link><filename>}</filename>).
+                    Use this variable if the loaders you need are in a package
+                    other than that main package.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PKG'><glossterm>PKG</glossterm>
+            <info>
+                PKG[doc] = "The name of the resulting package created by the OpenEmbedded build system. When you use this variable, you must use a package name override."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The name of the resulting package created by the
+                    OpenEmbedded build system.
+                    <note>
+                        When using the <filename>PKG</filename> variable, you
+                        must use a package name override.
+                    </note>
+                </para>
+
+                <para>
+                    For example, when the
+                    <link linkend='ref-classes-debian'><filename>debian</filename></link>
+                    class renames the output package, it does so by setting
+                    <filename>PKG_<replaceable>packagename</replaceable></filename>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PKG_CONFIG_PATH'><glossterm>PKG_CONFIG_PATH</glossterm>
+            <info>
+                PKG_CONFIG_PATH[doc] = "Path to pkg-config files for the current build context."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The path to <filename>pkg-config</filename> files for the
+                    current build context.
+                    <filename>pkg-config</filename> reads this variable
+                    from the environment.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PKGD'><glossterm>PKGD</glossterm>
+            <info>
+                PKGD[doc] = "Points to the destination directory for files to be packaged before they are split into individual packages."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Points to the destination directory for files to be
+                    packaged before they are split into individual packages.
+                    This directory defaults to the following:
+                    <literallayout class='monospaced'>
+     ${WORKDIR}/package
+                    </literallayout>
+                </para>
+
+                <para>
+                    Do not change this default.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PKGDATA_DIR'><glossterm>PKGDATA_DIR</glossterm>
+            <info>
+                PKGDATA_DIR[doc] = "Points to a shared, global-state directory that holds data generated during the packaging process."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Points to a shared, global-state directory that holds data
+                    generated during the packaging process.
+                    During the packaging process, the
+                    <link linkend='ref-tasks-packagedata'><filename>do_packagedata</filename></link>
+                    task packages data for each recipe and installs it into
+                    this temporary, shared area.
+                    This directory defaults to the following, which you should
+                    not change:
+                    <literallayout class='monospaced'>
+     ${STAGING_DIR_HOST}/pkgdata
+                    </literallayout>
+                    For examples of how this data is used, see the
+                    "<ulink url='&YOCTO_DOCS_OM_URL;#automatically-added-runtime-dependencies'>Automatically Added Runtime Dependencies</ulink>"
+                    section in the Yocto Project Overview and Concepts Manual
+                    and the
+                    "<ulink url='&YOCTO_DOCS_DEV_URL;#viewing-package-information-with-oe-pkgdata-util'>Viewing Package Information with <filename>oe-pkgdata-util</filename></ulink>"
+                    section in the Yocto Project Development Tasks Manual.
+                    For more information on the shared, global-state directory,
+                    see
+                    <link linkend='var-STAGING_DIR_HOST'><filename>STAGING_DIR_HOST</filename></link>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PKGDEST'><glossterm>PKGDEST</glossterm>
+            <info>
+                PKGDEST[doc] = "Points to the parent directory for files to be packaged after they have been split into individual packages."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Points to the parent directory for files to be packaged
+                    after they have been split into individual packages.
+                    This directory defaults to the following:
+                    <literallayout class='monospaced'>
+     ${WORKDIR}/packages-split
+                    </literallayout>
+                </para>
+
+                <para>
+                    Under this directory, the build system creates
+                    directories for each package specified in
+                    <link linkend='var-PACKAGES'><filename>PACKAGES</filename></link>.
+                    Do not change this default.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PKGDESTWORK'><glossterm>PKGDESTWORK</glossterm>
+            <info>
+                PKGDESTWORK[doc] = "Points to a temporary work area where the do_package task saves package metadata."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Points to a temporary work area where the
+                    <link linkend='ref-tasks-package'><filename>do_package</filename></link>
+                    task saves package metadata.
+                    The <filename>PKGDESTWORK</filename> location defaults to
+                    the following:
+                    <literallayout class='monospaced'>
+     ${WORKDIR}/pkgdata
+                    </literallayout>
+                    Do not change this default.
+                </para>
+
+                <para>
+                    The
+                    <link linkend='ref-tasks-packagedata'><filename>do_packagedata</filename></link>
+                    task copies the package metadata from
+                    <filename>PKGDESTWORK</filename> to
+                    <link linkend='var-PKGDATA_DIR'><filename>PKGDATA_DIR</filename></link>
+                    to make it available globally.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PKGE'><glossterm>PKGE</glossterm>
+            <info>
+                PKGE[doc] = "The epoch of the package(s) built by the recipe."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The epoch of the package(s) built by the recipe.
+                    By default, <filename>PKGE</filename> is set to
+                    <link linkend='var-PE'><filename>PE</filename></link>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PKGR'><glossterm>PKGR</glossterm>
+            <info>
+                PKGR[doc] = "The revision of the package(s) built by the recipe."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The revision of the package(s) built by the recipe.
+                    By default, <filename>PKGR</filename> is set to
+                    <link linkend='var-PR'><filename>PR</filename></link>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PKGV'><glossterm>PKGV</glossterm>
+            <info>
+                PKGV[doc] = "The version of the package(s) built by the recipe."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The version of the package(s) built by the
+                    recipe.
+                    By default, <filename>PKGV</filename> is set to
+                    <link linkend='var-PV'><filename>PV</filename></link>.
+                 </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PN'><glossterm>PN</glossterm>
+            <info>
+                PN[doc] = "PN refers to a recipe name in the context of a file used by the OpenEmbedded build system as input to create a package."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    This variable can have two separate functions depending on the context: a recipe
+                    name or a resulting package name.
+                </para>
+
+                <para>
+                    <filename>PN</filename> refers to a recipe name in the context of a file used
+                    by the OpenEmbedded build system as input to create a package.
+                    The name is normally extracted from the recipe file name.
+                    For example, if the recipe is named
+                    <filename>expat_2.0.1.bb</filename>, then the default value of <filename>PN</filename>
+                    will be "expat".
+                </para>
+
+                <para>
+                    The variable refers to a package name in the context of a file created or produced by the
+                    OpenEmbedded build system.
+                </para>
+
+                <para>
+                    If applicable, the <filename>PN</filename> variable also contains any special
+                    suffix or prefix.
+                    For example, using <filename>bash</filename> to build packages for the native
+                    machine, <filename>PN</filename> is <filename>bash-native</filename>.
+                    Using <filename>bash</filename> to build packages for the target and for Multilib,
+                    <filename>PN</filename> would be <filename>bash</filename> and
+                    <filename>lib64-bash</filename>, respectively.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PNBLACKLIST'><glossterm>PNBLACKLIST</glossterm>
+            <info>
+                PNBLACKLIST[doc] = "Lists recipes you do not want the OpenEmbedded build system to build."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Lists recipes you do not want the OpenEmbedded build system
+                    to build.
+                    This variable works in conjunction with the
+                    <link linkend='ref-classes-blacklist'><filename>blacklist</filename></link>
+                    class, which is inherited globally.
+                </para>
+
+                <para>
+                    To prevent a recipe from being built, use the
+                    <filename>PNBLACKLIST</filename> variable in your
+                    <filename>local.conf</filename> file.
+                    Here is an example that prevents
+                    <filename>myrecipe</filename> from being built:
+                    <literallayout class='monospaced'>
+     PNBLACKLIST[myrecipe] = "Not supported by our organization."
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-POPULATE_SDK_POST_HOST_COMMAND'><glossterm>POPULATE_SDK_POST_HOST_COMMAND</glossterm>
+            <info>
+                POPULATE_SDK_POST_HOST_COMMAND[doc] = "Specifies a list of functions to call once the OpenEmbedded build system has created host part of the SDK."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies a list of functions to call once the
+                    OpenEmbedded build system has created the host part of
+                    the SDK.
+                    You can specify functions separated by semicolons:
+                    <literallayout class='monospaced'>
+     POPULATE_SDK_POST_HOST_COMMAND += "<replaceable>function</replaceable>; ... "
+                    </literallayout>
+                </para>
+
+                <para>
+                    If you need to pass the SDK path to a command
+                    within a function, you can use
+                    <filename>${SDK_DIR}</filename>, which points to
+                    the parent directory used by the OpenEmbedded build
+                    system when creating SDK output.
+                    See the
+                    <link linkend='var-SDK_DIR'><filename>SDK_DIR</filename></link>
+                    variable for more information.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-POPULATE_SDK_POST_TARGET_COMMAND'><glossterm>POPULATE_SDK_POST_TARGET_COMMAND</glossterm>
+            <info>
+                POPULATE_SDK_POST_TARGET_COMMAND[doc] = "Specifies a list of functions to call once the OpenEmbedded build system has created target part of the SDK."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies a list of functions to call once the
+                    OpenEmbedded build system has created the target part of
+                    the SDK.
+                    You can specify functions separated by semicolons:
+                    <literallayout class='monospaced'>
+     POPULATE_SDK_POST_TARGET_COMMAND += "<replaceable>function</replaceable>; ... "
+                    </literallayout>
+                </para>
+
+                <para>
+                    If you need to pass the SDK path to a command
+                    within a function, you can use
+                    <filename>${SDK_DIR}</filename>, which points to
+                    the parent directory used by the OpenEmbedded build
+                    system when creating SDK output.
+                    See the
+                    <link linkend='var-SDK_DIR'><filename>SDK_DIR</filename></link>
+                    variable for more information.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PR'><glossterm>PR</glossterm>
+            <info>
+                PR[doc] = "The revision of the recipe. The default value for this variable is 'r0'."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The revision of the recipe. The default value for this
+                    variable is "r0".
+                    Subsequent revisions of the recipe conventionally have the
+                    values "r1", "r2", and so forth.
+                    When
+                    <link linkend='var-PV'><filename>PV</filename></link>
+                    increases, <filename>PR</filename> is conventionally reset
+                    to "r0".
+                    <note>
+                        The OpenEmbedded build system does not need the aid of
+                        <filename>PR</filename> to know when to rebuild a
+                        recipe.
+                        The build system uses the task
+                        <ulink url='&YOCTO_DOCS_OM_URL;#overview-checksums'>input checksums</ulink>
+                        along with the
+                        <link linkend='structure-build-tmp-stamps'>stamp</link>
+                        and
+                        <ulink url='&YOCTO_DOCS_OM_URL;#shared-state-cache'>shared state cache</ulink>
+                        mechanisms.
+                    </note>
+                    The <filename>PR</filename> variable primarily becomes
+                    significant when a package manager dynamically installs
+                    packages on an already built image.
+                    In this case, <filename>PR</filename>, which is the default
+                    value of
+                    <link linkend='var-PKGR'><filename>PKGR</filename></link>,
+                    helps the package manager distinguish which package is the
+                    most recent one in cases where many packages have the same
+                    <filename>PV</filename> (i.e. <filename>PKGV</filename>).
+                    A component having many packages with the same
+                    <filename>PV</filename> usually means that the packages all
+                    install the same upstream version, but with later
+                    (<filename>PR</filename>) version packages including
+                    packaging fixes.
+                    <note>
+                        <filename>PR</filename> does not need to be increased
+                        for changes that do not change the package contents or
+                        metadata.
+                    </note>
+                    Because manually managing <filename>PR</filename> can be
+                    cumbersome and error-prone, an automated solution exists.
+                    See the
+                    "<ulink url='&YOCTO_DOCS_DEV_URL;#working-with-a-pr-service'>Working With a PR Service</ulink>"
+                    section in the Yocto Project Development Tasks Manual
+                    for more information.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PREFERRED_PROVIDER'><glossterm>PREFERRED_PROVIDER</glossterm>
+            <info>
+                PREFERRED_PROVIDER[doc] = "If multiple recipes provide an item, this variable determines which recipe should be given preference."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    If multiple recipes provide the same item, this variable
+                    determines which recipe is preferred and thus provides
+                    the item (i.e. the preferred provider).
+                    You should always suffix this variable with the name of the
+                    provided item.
+                    And, you should define the variable using the preferred
+                    recipe's name
+                    (<link linkend='var-PN'><filename>PN</filename></link>).
+                    Here is a common example:
+                    <literallayout class='monospaced'>
+     PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
+                    </literallayout>
+                    In the previous example, multiple recipes are providing
+                    "virtual/kernel".
+                    The <filename>PREFERRED_PROVIDER</filename> variable is
+                    set with the name (<filename>PN</filename>) of the recipe
+                    you prefer to provide "virtual/kernel".
+                </para>
+
+                <para>
+                    Following are more examples:
+                    <literallayout class='monospaced'>
+     PREFERRED_PROVIDER_virtual/xserver = "xserver-xf86"
+     PREFERRED_PROVIDER_virtual/libgl ?= "mesa"
+                    </literallayout>
+                    For more information, see the
+                    "<ulink url='&YOCTO_DOCS_DEV_URL;#metadata-virtual-providers'>Using Virtual Providers</ulink>"
+                    section in the Yocto Project Development Tasks Manual.
+                    <note>
+                        If you use a <filename>virtual/*</filename> item
+                        with <filename>PREFERRED_PROVIDER</filename>, then any
+                        recipe that
+                        <link linkend='var-PROVIDES'><filename>PROVIDES</filename></link>
+                        that item but is not selected (defined) by
+                        <filename>PREFERRED_PROVIDER</filename> is prevented
+                        from building, which is usually desirable since this
+                        mechanism is designed to select between mutually
+                        exclusive alternative providers.
+                    </note>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PREFERRED_VERSION'><glossterm>PREFERRED_VERSION</glossterm>
+            <info>
+                PREFERRED_VERSION[doc] = "If there are multiple versions of recipes available, this variable determines which recipe should be given preference."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    If multiple versions of recipes exist, this
+                    variable determines which version is given preference.
+                    You must always suffix the variable with the
+                    <link linkend='var-PN'><filename>PN</filename></link>
+                    you want to select, and you should set the
+                    <link linkend='var-PV'><filename>PV</filename></link>
+                    accordingly for precedence.
+                </para>
+
+                <para>
+                    The <filename>PREFERRED_VERSION</filename> variable
+                    supports limited wildcard use through the
+                    "<filename>%</filename>" character.
+                    You can use the character to match any number of
+                    characters, which can be useful when specifying versions
+                    that contain long revision numbers that potentially change.
+                    Here are two examples:
+                    <literallayout class='monospaced'>
+     PREFERRED_VERSION_python = "3.4.0"
+     PREFERRED_VERSION_linux-yocto = "5.0%"
+                    </literallayout>
+                    <note><title>Important</title>
+                        The use of the "<filename>%</filename>" character
+                        is limited in that it only works at the end of the
+                        string.
+                        You cannot use the wildcard character in any other
+                        location of the string.
+                    </note>
+                </para>
+
+                <para>
+                    The specified version is matched against
+                    <link linkend='var-PV'><filename>PV</filename></link>,
+                    which does not necessarily match the version part of
+                    the recipe's filename.
+                    For example, consider two recipes
+                    <filename>foo_1.2.bb</filename> and
+                    <filename>foo_git.bb</filename> where
+                    <filename>foo_git.bb</filename> contains the following
+                    assignment:
+                    <literallayout class='monospaced'>
+     PV = "1.1+git${SRCPV}"
+                    </literallayout>
+                    In this case, the correct way to select
+                    <filename>foo_git.bb</filename> is by using an
+                    assignment such as the following:
+                    <literallayout class='monospaced'>
+     PREFERRED_VERSION_foo = "1.1+git%"
+                    </literallayout>
+                    Compare that previous example against the following
+                    incorrect example, which does not work:
+                    <literallayout class='monospaced'>
+     PREFERRED_VERSION_foo = "git"
+                    </literallayout>
+                </para>
+
+                <para>
+                    Sometimes the <filename>PREFERRED_VERSION</filename>
+                    variable can be set by configuration files in a way that
+                    is hard to change.
+                    You can use
+                    <link linkend='var-OVERRIDES'><filename>OVERRIDES</filename></link>
+                    to set a machine-specific override.
+                    Here is an example:
+                    <literallayout class='monospaced'>
+     PREFERRED_VERSION_linux-yocto_qemux86 = "5.0%"
+                    </literallayout>
+                    Although not recommended, worst case, you can also use the
+                    "forcevariable" override, which is the strongest override
+                    possible.
+                    Here is an example:
+                    <literallayout class='monospaced'>
+     PREFERRED_VERSION_linux-yocto_forcevariable = "5.0%"
+                    </literallayout>
+                    <note>
+                        The <filename>_forcevariable</filename> override is
+                        not handled specially.
+                        This override only works because the default value of
+                        <filename>OVERRIDES</filename> includes
+                        "forcevariable".
+                    </note>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PREMIRRORS'><glossterm>PREMIRRORS</glossterm>
+            <info>
+                PREMIRRORS[doc] = "Specifies additional paths from which the OpenEmbedded build system gets source code."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies additional paths from which the OpenEmbedded
+                    build system gets source code.
+                    When the build system searches for source code, it first
+                    tries the local download directory.
+                    If that location fails, the build system tries locations
+                    defined by <filename>PREMIRRORS</filename>, the upstream
+                    source, and then locations specified by
+                    <link linkend='var-MIRRORS'><filename>MIRRORS</filename></link>
+                    in that order.
+                </para>
+
+                <para>
+                    Assuming your distribution
+                    (<link linkend='var-DISTRO'><filename>DISTRO</filename></link>)
+                    is "poky", the default value for
+                    <filename>PREMIRRORS</filename> is defined in the
+                    <filename>conf/distro/poky.conf</filename> file in the
+                    <filename>meta-poky</filename> Git repository.
+                </para>
+
+                <para>
+                    Typically, you could add a specific server for the
+                    build system to attempt before any others by adding
+                    something like the following to the
+                    <filename>local.conf</filename> configuration file in the
+                    <link linkend='build-directory'>Build Directory</link>:
+                    <literallayout class='monospaced'>
+     PREMIRRORS_prepend = "\
+     git://.*/.* http://www.yoctoproject.org/sources/ \n \
+     ftp://.*/.* http://www.yoctoproject.org/sources/ \n \
+     http://.*/.* http://www.yoctoproject.org/sources/ \n \
+     https://.*/.* http://www.yoctoproject.org/sources/ \n"
+                    </literallayout>
+                    These changes cause the build system to intercept
+                    Git, FTP, HTTP, and HTTPS requests and direct them to
+                    the <filename>http://</filename> sources mirror.
+                    You can use <filename>file://</filename> URLs to point
+                    to local directories or network shares as well.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PRIORITY'><glossterm>PRIORITY</glossterm>
+            <info>
+                PRIORITY[doc] = "Indicates the importance of a package.  The default value is 'optional'.  Other standard values are 'required', 'standard', and 'extra'."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Indicates the importance of a package.
+                </para>
+
+                <para>
+                    <filename>PRIORITY</filename> is considered to be part of
+                    the distribution policy because the importance of any given
+                    recipe depends on the purpose for which the distribution
+                    is being produced.
+                    Thus, <filename>PRIORITY</filename> is not normally set
+                    within recipes.
+                </para>
+
+                <para>
+                    You can set <filename>PRIORITY</filename> to "required",
+                    "standard", "extra", and "optional", which is the default.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PRIVATE_LIBS'><glossterm>PRIVATE_LIBS</glossterm>
+            <info>
+                PRIVATE_LIBS[doc] = "Specifies libraries installed within a recipe that should be ignored by the OpenEmbedded build system's shared library resolver."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies libraries installed within a recipe that
+                    should be ignored by the OpenEmbedded build system's
+                    shared library resolver.
+                    This variable is typically used when software being
+                    built by a recipe has its own private versions of a
+                    library normally provided by another recipe.
+                    In this case, you would not want the package containing
+                    the private libraries to be set as a dependency on other
+                    unrelated packages that should instead depend on the
+                    package providing the standard version of the library.
+                </para>
+
+                <para>
+                    Libraries specified in this variable should be specified
+                    by their file name.
+                    For example, from the Firefox recipe in meta-browser:
+                    <literallayout class='monospaced'>
+     PRIVATE_LIBS = "libmozjs.so \
+                     libxpcom.so \
+                     libnspr4.so \
+                     libxul.so \
+                     libmozalloc.so \
+                     libplc4.so \
+                     libplds4.so"
+                    </literallayout>
+                </para>
+
+                <para>
+                    For more information, see the
+                    "<ulink url='&YOCTO_DOCS_OM_URL;#automatically-added-runtime-dependencies'>Automatically Added Runtime Dependencies</ulink>"
+                    section in the Yocto Project Overview and Concepts Manual.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PROVIDES'><glossterm>PROVIDES</glossterm>
+            <info>
+                PROVIDES[doc] = "A list of aliases that a recipe also provides. These aliases are useful for satisfying dependencies of other recipes during the build as specified by DEPENDS."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A list of aliases by which a particular recipe can be
+                    known.
+                    By default, a recipe's own
+                    <filename><link linkend='var-PN'>PN</link></filename>
+                    is implicitly already in its <filename>PROVIDES</filename>
+                    list and therefore does not need to mention that it provides itself.
+                    If a recipe uses <filename>PROVIDES</filename>, the
+                    additional aliases are synonyms for the recipe and can
+                    be useful for satisfying dependencies of other recipes during
+                    the build as specified by
+                    <filename><link linkend='var-DEPENDS'>DEPENDS</link></filename>.
+                </para>
+
+                <para>
+                    Consider the following example
+                    <filename>PROVIDES</filename> statement from the recipe
+                    file <filename>eudev_3.2.9.bb</filename>:
+                    <literallayout class='monospaced'>
+     PROVIDES = "udev"
+                    </literallayout>
+                    The <filename>PROVIDES</filename> statement results in
+                    the "eudev" recipe also being available as simply "udev".
+
+                    <note>
+                        Given that a recipe's own recipe name is already
+                        implicitly in its own <filename>PROVIDES</filename> list,
+                        it is unnecessary to add aliases with the "+=" operator;
+                        using a simple assignment will be sufficient. In other
+                        words, while you could write:
+                        <literallayout class='monospaced'>
+     PROVIDES += "udev"
+                        </literallayout>
+                        in the above, the "+=" is overkill and unnecessary.
+                    </note>
+                </para>
+
+                <para>
+                    In addition to providing recipes under alternate names,
+                    the <filename>PROVIDES</filename> mechanism is also used
+                    to implement virtual targets.
+                    A virtual target is a name that corresponds to some
+                    particular functionality (e.g. a Linux kernel).
+                    Recipes that provide the functionality in question list the
+                    virtual target in <filename>PROVIDES</filename>.
+                    Recipes that depend on the functionality in question can
+                    include the virtual target in <filename>DEPENDS</filename>
+                    to leave the choice of provider open.
+                </para>
+
+                <para>
+                    Conventionally, virtual targets have names on the form
+                    "virtual/function" (e.g. "virtual/kernel").
+                    The slash is simply part of the name and has no
+                    syntactical significance.
+                </para>
+
+                <para>
+                    The
+                    <link linkend='var-PREFERRED_PROVIDER'><filename>PREFERRED_PROVIDER</filename></link>
+                    variable is used to select which particular recipe
+                    provides a virtual target.
+                    <note>
+                        <para>A corresponding mechanism for virtual runtime
+                        dependencies (packages) exists.
+                        However, the mechanism does not depend on any special
+                        functionality beyond ordinary variable assignments.
+                        For example,
+                        <filename>VIRTUAL-RUNTIME_dev_manager</filename>
+                        refers to the package of the component that manages
+                        the <filename>/dev</filename> directory.</para>
+
+                        <para>Setting the "preferred provider" for runtime
+                        dependencies is as simple as using the following
+                        assignment in a configuration file:</para>
+                        <literallayout class='monospaced'>
+     VIRTUAL-RUNTIME_dev_manager = "udev"
+                        </literallayout>
+                    </note>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PRSERV_HOST'><glossterm>PRSERV_HOST</glossterm>
+            <info>
+                PRSERV_HOST[doc] = "The network based PR service host and port."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The network based
+                    <link linkend='var-PR'><filename>PR</filename></link>
+                    service host and port.
+                </para>
+
+                <para>
+                    The <filename>conf/local.conf.sample.extended</filename>
+                    configuration file in the
+                    <link linkend='source-directory'>Source Directory</link>
+                    shows how the <filename>PRSERV_HOST</filename> variable is
+                    set:
+                    <literallayout class='monospaced'>
+     PRSERV_HOST = "localhost:0"
+                    </literallayout>
+                    You must set the variable if you want to automatically
+                    start a local
+                    <ulink url='&YOCTO_DOCS_DEV_URL;#working-with-a-pr-service'>PR service</ulink>.
+                    You can set <filename>PRSERV_HOST</filename> to other
+                    values to use a remote PR service.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PTEST_ENABLED'><glossterm>PTEST_ENABLED</glossterm>
+            <info>
+                PRSERV_HOST[doc] = "Specifies whether or not Package Test (ptest) functionality is enabled when building a recipe."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies whether or not
+                    <ulink url='&YOCTO_DOCS_DEV_URL;#testing-packages-with-ptest'>Package Test</ulink>
+                    (ptest) functionality is enabled when building a recipe.
+                    You should not set this variable directly.
+                    Enabling and disabling building Package Tests
+                    at build time should be done by adding "ptest" to (or
+                    removing it from)
+                    <link linkend='var-DISTRO_FEATURES'><filename>DISTRO_FEATURES</filename></link>.
+                 </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PV'><glossterm>PV</glossterm>
+            <info>
+                PV[doc] = "The version of the recipe. The version is normally extracted from the recipe filename."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The version of the recipe.
+                    The version is normally extracted from the recipe filename.
+                    For example, if the recipe is named
+                    <filename>expat_2.0.1.bb</filename>, then the default value
+                    of <filename>PV</filename> will be "2.0.1".
+                    <filename>PV</filename> is generally not overridden within
+                    a recipe unless it is building an unstable (i.e.
+                    development) version from a source code repository
+                    (e.g. Git or Subversion).
+                 </para>
+
+                 <para>
+                     <filename>PV</filename> is the default value of the
+                     <link linkend='var-PKGV'><filename>PKGV</filename></link>
+                     variable.
+                 </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PYTHON_ABI'><glossterm>PYTHON_ABI</glossterm>
+            <info>
+                PYTHON_ABI[doc] = "When used by recipes that inherit the distutils3, setuptools3, distutils, or setuptools classes, denotes the Application Binary Interface (ABI) currently in use for Python."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When used by recipes that inherit the
+                    <link linkend='ref-classes-distutils3'><filename>distutils3</filename></link>,
+                    <link linkend='ref-classes-setuptools3'><filename>setuptools3</filename></link>,
+                    <link linkend='ref-classes-distutils'><filename>distutils</filename></link>,
+                    or
+                    <link linkend='ref-classes-setuptools'><filename>setuptools</filename></link>
+                    classes, denotes the Application Binary Interface (ABI)
+                    currently in use for Python.
+                    By default, the ABI is "m".
+                    You do not have to set this variable as the OpenEmbedded
+                    build system sets it for you.
+                </para>
+
+                <para>
+                    The OpenEmbedded build system uses the ABI to construct
+                    directory names used when installing the Python headers
+                    and libraries in sysroot
+                    (e.g. <filename>.../python3.3m/...</filename>).
+                </para>
+
+                <para>
+                    Recipes that inherit the <filename>distutils</filename>
+                    class during cross-builds also use this variable to
+                    locate the headers and libraries of the appropriate Python
+                    that the extension is targeting.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-PYTHON_PN'><glossterm>PYTHON_PN</glossterm>
+            <info>
+                PYTHON_PN[doc] = "When used by recipes that inherit the distutils3, setuptools3, distutils, or setuptools classes, specifies the major Python version being built."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When used by recipes that inherit the
+                    <link linkend='ref-classes-distutils3'><filename>distutils3</filename></link>,
+                    <link linkend='ref-classes-setuptools3'><filename>setuptools3</filename></link>,
+                    <link linkend='ref-classes-distutils'><filename>distutils</filename></link>,
+                    or
+                    <link linkend='ref-classes-setuptools'><filename>setuptools</filename></link>
+                    classes, specifies the major Python version being built.
+                    For Python 3.x, <filename>PYTHON_PN</filename> would be
+                    "python3".
+                    You do not have to set this variable as the
+                    OpenEmbedded build system automatically sets it for you.
+                </para>
+
+                <para>
+                    The variable allows recipes to use common infrastructure
+                    such as the following:
+                    <literallayout class='monospaced'>
+     DEPENDS += "${PYTHON_PN}-native"
+                    </literallayout>
+                    In the previous example, the version of the dependency
+                    is <filename>PYTHON_PN</filename>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+    </glossdiv>
+
+    <glossdiv id='var-glossary-r'><title>R</title>
+
+        <glossentry id='var-RANLIB'><glossterm>RANLIB</glossterm>
+            <info>
+                RANLIB[doc] = "Minimal command and arguments to run 'ranlib'."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The minimal command and arguments to run
+                    <filename>ranlib</filename>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-RCONFLICTS'><glossterm>RCONFLICTS</glossterm>
+            <info>
+                RCONFLICTS[doc] = "The list of packages that conflict with another package. Note that the package will not be installed if the conflicting packages are not first removed."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The list of packages that conflict with packages.
+                    Note that packages will not be installed if conflicting
+                    packages are not first removed.
+                </para>
+
+                <para>
+                   Like all package-controlling variables, you must always use
+                   them in conjunction with a package name override.
+                   Here is an example:
+                   <literallayout class='monospaced'>
+     RCONFLICTS_${PN} = "<replaceable>another_conflicting_package_name</replaceable>"
+                   </literallayout>
+                </para>
+
+                <para>
+                    BitBake, which the OpenEmbedded build system uses, supports
+                    specifying versioned dependencies.
+                    Although the syntax varies depending on the packaging
+                    format, BitBake hides these differences from you.
+                    Here is the general syntax to specify versions with
+                    the <filename>RCONFLICTS</filename> variable:
+                    <literallayout class='monospaced'>
+     RCONFLICTS_${PN} = "<replaceable>package</replaceable> (<replaceable>operator</replaceable> <replaceable>version</replaceable>)"
+                    </literallayout>
+                    For <filename>operator</filename>, you can specify the
+                    following:
+                    <literallayout class='monospaced'>
+     =
+     &lt;
+     &gt;
+     &lt;=
+     &gt;=
+                    </literallayout>
+                    For example, the following sets up a dependency on version
+                    1.2 or greater of the package <filename>foo</filename>:
+                    <literallayout class='monospaced'>
+     RCONFLICTS_${PN} = "foo (>= 1.2)"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-RDEPENDS'><glossterm>RDEPENDS</glossterm>
+            <info>
+                RDEPENDS[doc] = "Lists runtime dependencies of a package."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Lists runtime dependencies of a package.
+                    These dependencies are other packages that must be
+                    installed in order for the package to function correctly.
+                    As an example, the following assignment declares that the
+                    package <filename>foo</filename> needs the packages
+                    <filename>bar</filename> and <filename>baz</filename> to
+                    be installed:
+                    <literallayout class='monospaced'>
+     RDEPENDS_foo = "bar baz"
+                    </literallayout>
+                    The most common types of package runtime dependencies are
+                    automatically detected and added.
+                    Therefore, most recipes do not need to set
+                    <filename>RDEPENDS</filename>.
+                    For more information, see the
+                    "<ulink url='&YOCTO_DOCS_OM_URL;#automatically-added-runtime-dependencies'>Automatically Added Runtime Dependencies</ulink>"
+                    section in the Yocto Project Overview and Concepts Manual.
+                </para>
+
+                <para>
+                    The practical effect of the above
+                    <filename>RDEPENDS</filename> assignment is that
+                    <filename>bar</filename> and <filename>baz</filename>
+                    will be declared as dependencies inside the package
+                    <filename>foo</filename> when it is written out by one of
+                    the
+                    <link linkend='ref-tasks-package_write_deb'><filename>do_package_write_*</filename></link>
+                    tasks.
+                    Exactly how this is done depends on which package format
+                    is used, which is determined by
+                    <link linkend='var-PACKAGE_CLASSES'><filename>PACKAGE_CLASSES</filename></link>.
+                    When the corresponding package manager installs the
+                    package, it will know to also install the packages on
+                    which it depends.
+                </para>
+
+                <para>
+                    To ensure that the packages <filename>bar</filename> and
+                    <filename>baz</filename> get built, the previous
+                    <filename>RDEPENDS</filename> assignment also causes a task
+                    dependency to be added.
+                    This dependency is from the recipe's
+                    <link linkend='ref-tasks-build'><filename>do_build</filename></link>
+                    (not to be confused with
+                    <link linkend='ref-tasks-compile'><filename>do_compile</filename></link>)
+                    task to the <filename>do_package_write_*</filename>
+                    task of the recipes that build <filename>bar</filename> and
+                    <filename>baz</filename>.
+                </para>
+
+                <para>
+                    The names of the packages you list within
+                    <filename>RDEPENDS</filename> must be the names of other
+                    packages - they cannot be recipe names.
+                    Although package names and recipe names usually match,
+                    the important point here is that you are
+                    providing package names within the
+                    <filename>RDEPENDS</filename> variable.
+                    For an example of the default list of packages created from
+                    a recipe, see the
+                    <link linkend='var-PACKAGES'><filename>PACKAGES</filename></link>
+                    variable.
+                </para>
+
+                <para>
+                    Because the <filename>RDEPENDS</filename> variable applies
+                    to packages being built, you should always use the variable
+                    in a form with an attached package name (remember that a
+                    single recipe can build multiple packages).
+                    For example, suppose you are building a development package
+                    that depends on the <filename>perl</filename> package.
+                    In this case, you would use the following
+                    <filename>RDEPENDS</filename> statement:
+                    <literallayout class='monospaced'>
+     RDEPENDS_${PN}-dev += "perl"
+                    </literallayout>
+                    In the example, the development package depends on
+                    the <filename>perl</filename> package.
+                    Thus, the <filename>RDEPENDS</filename> variable has the
+                    <filename>${PN}-dev</filename> package name as part of the
+                    variable.
+                    <note>
+                        <title>Caution</title>
+                        <filename>RDEPENDS_${PN}-dev</filename> includes
+                        <filename>${</filename><link linkend='var-PN'><filename>PN</filename></link><filename>}</filename>
+                        by default.
+                        This default is set in the BitBake configuration file
+                        (<filename>meta/conf/bitbake.conf</filename>).
+                        Be careful not to accidentally remove
+                        <filename>${PN}</filename> when modifying
+                        <filename>RDEPENDS_${PN}-dev</filename>.
+                        Use the "+=" operator rather than the "=" operator.
+                    </note>
+                </para>
+
+                <para>
+                    The package names you use with
+                    <filename>RDEPENDS</filename> must appear as they would in
+                    the <filename>PACKAGES</filename> variable.
+                    The
+                    <link linkend='var-PKG'><filename>PKG</filename></link>
+                    variable allows a different name to be used for
+                    the final package (e.g. the
+                    <link linkend='ref-classes-debian'><filename>debian</filename></link>
+                    class uses this to rename packages), but this final package
+                    name cannot be used with <filename>RDEPENDS</filename>,
+                    which makes sense as <filename>RDEPENDS</filename> is meant
+                    to be independent of the package format used.
+                </para>
+
+                <para>
+                    BitBake, which the OpenEmbedded build system uses, supports
+                    specifying versioned dependencies.
+                    Although the syntax varies depending on the packaging
+                    format, BitBake hides these differences from you.
+                    Here is the general syntax to specify versions with
+                    the <filename>RDEPENDS</filename> variable:
+                    <literallayout class='monospaced'>
+     RDEPENDS_${PN} = "<replaceable>package</replaceable> (<replaceable>operator</replaceable> <replaceable>version</replaceable>)"
+                    </literallayout>
+                    For <replaceable>operator</replaceable>, you can specify the
+                    following:
+                    <literallayout class='monospaced'>
+     =
+     &lt;
+     &gt;
+     &lt;=
+     &gt;=
+                    </literallayout>
+                    For <replaceable>version</replaceable>, provide the version
+                    number.
+                    <note><title>Tip</title>
+                        You can use
+                        <link linkend='var-EXTENDPKGV'><filename>EXTENDPKGV</filename></link>
+                        to provide a full package version specification.
+                    </note>
+                    For example, the following sets up a dependency on version
+                    1.2 or greater of the package <filename>foo</filename>:
+                    <literallayout class='monospaced'>
+     RDEPENDS_${PN} = "foo (>= 1.2)"
+                    </literallayout>
+                </para>
+
+                <para>
+                    For information on build-time dependencies, see the
+                    <link linkend='var-DEPENDS'><filename>DEPENDS</filename></link>
+                    variable.
+                    You can also see the
+                    "<ulink url='&YOCTO_DOCS_BB_URL;#tasks'>Tasks</ulink>" and
+                    "<ulink url='&YOCTO_DOCS_BB_URL;#dependencies'>Dependencies</ulink>"
+                    sections in the BitBake User Manual for additional
+                    information on tasks and dependencies.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-REQUIRED_DISTRO_FEATURES'><glossterm>REQUIRED_DISTRO_FEATURES</glossterm>
+            <info>
+                REQUIRED_DISTRO_FEATURES[doc] = "When a recipe inherits the distro_features_check class, this variable identifies distribution features that must exist in the current configuration in order for the OpenEmbedded build system to build the recipe."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When inheriting the
+                    <link linkend='ref-classes-distro_features_check'><filename>distro_features_check</filename></link>
+                    class, this
+                    variable identifies distribution features that must
+                    exist in the current configuration in order for the
+                    OpenEmbedded build system to build the recipe.
+                    In other words, if the
+                    <filename>REQUIRED_DISTRO_FEATURES</filename> variable
+                    lists a feature that does not appear in
+                    <filename>DISTRO_FEATURES</filename> within the
+                    current configuration, an error occurs and the
+                    build stops.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-RM_WORK_EXCLUDE'><glossterm>RM_WORK_EXCLUDE</glossterm>
+            <info>
+                RM_WORK_EXCLUDE[doc] = "With rm_work enabled, this variable specifies a list of packages whose work directories should not be removed."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    With <filename>rm_work</filename> enabled, this
+                    variable specifies a list of recipes whose work directories
+                    should not be removed.
+                    See the "<link linkend='ref-classes-rm-work'><filename>rm_work.bbclass</filename></link>"
+                    section for more details.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-ROOT_HOME'><glossterm>ROOT_HOME</glossterm>
+            <info>
+                ROOT_HOME[doc] = "Defines the root home directory."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Defines the root home directory.
+                    By default, this directory is set as follows in the
+                    BitBake configuration file:
+                    <literallayout class='monospaced'>
+     ROOT_HOME ??= "/home/root"
+                    </literallayout>
+                    <note>
+                        This default value is likely used because some
+                        embedded solutions prefer to have a read-only root
+                        filesystem and prefer to keep writeable data in one
+                        place.
+                    </note>
+                </para>
+
+                <para>
+                    You can override the default by setting the variable
+                    in any layer or in the <filename>local.conf</filename> file.
+                    Because the default is set using a "weak" assignment
+                    (i.e. "??="), you can use either of the following forms
+                    to define your override:
+                    <literallayout class='monospaced'>
+     ROOT_HOME = "/root"
+     ROOT_HOME ?= "/root"
+                    </literallayout>
+                    These override examples use <filename>/root</filename>,
+                    which is probably the most commonly used override.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-ROOTFS'><glossterm>ROOTFS</glossterm>
+            <info>
+                ROOTFS[doc] = "Indicates a filesystem image to include as the root filesystem."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Indicates a filesystem image to include as the root
+                    filesystem.
+                </para>
+
+                <para>
+                    The <filename>ROOTFS</filename> variable is an optional
+                    variable used with the
+                    <link linkend='ref-classes-image-live'><filename>image-live</filename></link>
+                    class.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-ROOTFS_POSTINSTALL_COMMAND'><glossterm>ROOTFS_POSTINSTALL_COMMAND</glossterm>
+            <info>
+                ROOTFS_POSTINSTALL_COMMAND[doc] = "Specifies a list of functions to call after installing packages."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies a list of functions to call after the
+                    OpenEmbedded build system has installed packages.
+                    You can specify functions separated by semicolons:
+                    <literallayout class='monospaced'>
+     ROOTFS_POSTINSTALL_COMMAND += "<replaceable>function</replaceable>; ... "
+                    </literallayout>
+                </para>
+
+                <para>
+                    If you need to pass the root filesystem path to a command
+                    within a function, you can use
+                    <filename>${IMAGE_ROOTFS}</filename>, which points to
+                    the directory that becomes the root filesystem image.
+                    See the
+                    <link linkend='var-IMAGE_ROOTFS'><filename>IMAGE_ROOTFS</filename></link>
+                    variable for more information.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-ROOTFS_POSTPROCESS_COMMAND'><glossterm>ROOTFS_POSTPROCESS_COMMAND</glossterm>
+            <info>
+                ROOTFS_POSTPROCESS_COMMAND[doc] = "Specifies a list of functions to call once the OpenEmbedded build system has created the root filesystem."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies a list of functions to call once the
+                    OpenEmbedded build system has created the root filesystem.
+                    You can specify functions separated by semicolons:
+                    <literallayout class='monospaced'>
+     ROOTFS_POSTPROCESS_COMMAND += "<replaceable>function</replaceable>; ... "
+                    </literallayout>
+                </para>
+
+                <para>
+                    If you need to pass the root filesystem path to a command
+                    within a function, you can use
+                    <filename>${IMAGE_ROOTFS}</filename>, which points to
+                    the directory that becomes the root filesystem image.
+                    See the
+                    <link linkend='var-IMAGE_ROOTFS'><filename>IMAGE_ROOTFS</filename></link>
+                    variable for more information.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-ROOTFS_POSTUNINSTALL_COMMAND'><glossterm>ROOTFS_POSTUNINSTALL_COMMAND</glossterm>
+            <info>
+                ROOTFS_POSTUNINSTALL_COMMAND[doc] = "Specifies a list of functions to call after removal of unneeded packages."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies a list of functions to call after the
+                    OpenEmbedded build system has removed unnecessary
+                    packages.
+                    When runtime package management is disabled in the
+                    image, several packages are removed including
+                    <filename>base-passwd</filename>,
+                    <filename>shadow</filename>, and
+                    <filename>update-alternatives</filename>.
+                    You can specify functions separated by semicolons:
+                    <literallayout class='monospaced'>
+     ROOTFS_POSTUNINSTALL_COMMAND += "<replaceable>function</replaceable>; ... "
+                    </literallayout>
+                </para>
+
+                <para>
+                    If you need to pass the root filesystem path to a command
+                    within a function, you can use
+                    <filename>${IMAGE_ROOTFS}</filename>, which points to
+                    the directory that becomes the root filesystem image.
+                    See the
+                    <link linkend='var-IMAGE_ROOTFS'><filename>IMAGE_ROOTFS</filename></link>
+                    variable for more information.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-ROOTFS_PREPROCESS_COMMAND'><glossterm>ROOTFS_PREPROCESS_COMMAND</glossterm>
+            <info>
+                ROOTFS_PREPROCESS_COMMAND[doc] = "Specifies a list of functions to call before the OpenEmbedded build system has created the root filesystem."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies a list of functions to call before the
+                    OpenEmbedded build system has created the root filesystem.
+                    You can specify functions separated by semicolons:
+                    <literallayout class='monospaced'>
+     ROOTFS_PREPROCESS_COMMAND += "<replaceable>function</replaceable>; ... "
+                    </literallayout>
+                </para>
+
+                <para>
+                    If you need to pass the root filesystem path to a command
+                    within a function, you can use
+                    <filename>${IMAGE_ROOTFS}</filename>, which points to
+                    the directory that becomes the root filesystem image.
+                    See the
+                    <link linkend='var-IMAGE_ROOTFS'><filename>IMAGE_ROOTFS</filename></link>
+                    variable for more information.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-RPROVIDES'><glossterm>RPROVIDES</glossterm>
+            <info>
+                RPROVIDES[doc] = "A list of package name aliases that a package also provides. These aliases are useful for satisfying runtime dependencies of other packages both during the build and on the target."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A list of package name aliases that a package also provides.
+                    These aliases are useful for satisfying runtime dependencies
+                    of other packages both during the build and on the target
+                    (as specified by
+                    <filename><link linkend='var-RDEPENDS'>RDEPENDS</link></filename>).
+                    <note>
+                        A package's own name is implicitly already in its
+                        <filename>RPROVIDES</filename> list.
+                    </note>
+                </para>
+
+                <para>
+                   As with all package-controlling variables, you must always
+                   use the variable in conjunction with a package name override.
+                   Here is an example:
+                   <literallayout class='monospaced'>
+     RPROVIDES_${PN} = "widget-abi-2"
+                   </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-RRECOMMENDS'><glossterm>RRECOMMENDS</glossterm>
+            <info>
+                RRECOMMENDS[doc] = "A list of packages that extends the usability of a package being built. The package being built does not depend on this list of packages in order to successfully build, but needs them for the extended usability."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A list of packages that extends the usability of a package
+                    being built.
+                    The package being built does not depend on this list of
+                    packages in order to successfully build, but rather
+                    uses them for extended usability.
+                    To specify runtime dependencies for packages, see the
+                    <filename><link linkend='var-RDEPENDS'>RDEPENDS</link></filename>
+                    variable.
+                </para>
+
+                <para>
+                    The package manager will automatically install the
+                    <filename>RRECOMMENDS</filename> list of packages when
+                    installing the built package.
+                    However, you can prevent listed packages from being
+                    installed by using the
+                    <link linkend='var-BAD_RECOMMENDATIONS'><filename>BAD_RECOMMENDATIONS</filename></link>,
+                    <link linkend='var-NO_RECOMMENDATIONS'><filename>NO_RECOMMENDATIONS</filename></link>,
+                    and
+                    <link linkend='var-PACKAGE_EXCLUDE'><filename>PACKAGE_EXCLUDE</filename></link>
+                    variables.
+                </para>
+
+                <para>
+                    Packages specified in
+                    <filename>RRECOMMENDS</filename> need not actually be
+                    produced.
+                    However, a recipe must exist that provides each package,
+                    either through the
+                    <link linkend='var-PACKAGES'><filename>PACKAGES</filename></link>
+                    or
+                    <link linkend='var-PACKAGES_DYNAMIC'><filename>PACKAGES_DYNAMIC</filename></link>
+                    variables or the
+                    <link linkend='var-RPROVIDES'><filename>RPROVIDES</filename></link>
+                    variable, or an error will occur during the build.
+                    If such a recipe does exist and the package is not produced,
+                    the build continues without error.
+                </para>
+
+                <para>
+                    Because the <filename>RRECOMMENDS</filename> variable
+                    applies to packages being built, you should always attach
+                    an override to the variable to specify the particular
+                    package whose usability is being extended.
+                    For example, suppose you are building a development package
+                    that is extended to support wireless functionality.
+                    In this case, you would use the following:
+                    <literallayout class='monospaced'>
+     RRECOMMENDS_${PN}-dev += "<replaceable>wireless_package_name</replaceable>"
+                    </literallayout>
+                    In the example, the package name
+                    (<filename>${<link linkend='var-PN'>PN</link>}-dev</filename>)
+                    must appear as it would in the
+                    <filename>PACKAGES</filename> namespace before any renaming
+                    of the output package by classes such as
+                    <filename>debian.bbclass</filename>.
+                </para>
+
+                <para>
+                    BitBake, which the OpenEmbedded build system uses, supports
+                    specifying versioned recommends.
+                    Although the syntax varies depending on the packaging
+                    format, BitBake hides these differences from you.
+                    Here is the general syntax to specify versions with
+                    the <filename>RRECOMMENDS</filename> variable:
+                    <literallayout class='monospaced'>
+     RRECOMMENDS_${PN} = "<replaceable>package</replaceable> (<replaceable>operator</replaceable> <replaceable>version</replaceable>)"
+                    </literallayout>
+                    For <filename>operator</filename>, you can specify the
+                    following:
+                    <literallayout class='monospaced'>
+     =
+     &lt;
+     &gt;
+     &lt;=
+     &gt;=
+                    </literallayout>
+                    For example, the following sets up a recommend on version
+                    1.2 or greater of the package <filename>foo</filename>:
+                    <literallayout class='monospaced'>
+     RRECOMMENDS_${PN} = "foo (>= 1.2)"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-RREPLACES'><glossterm>RREPLACES</glossterm>
+            <info>
+                RREPLACES[doc] = "A list of packages replaced by a package. The package manager uses this variable to determine which package should be installed to replace other package(s) during an upgrade."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A list of packages replaced by a package.
+                    The package manager uses this variable to determine which
+                    package should be installed to replace other package(s)
+                    during an upgrade.
+                    In order to also have the other package(s) removed at the
+                    same time, you must add the name of the other
+                    package to the
+                    <filename><link linkend='var-RCONFLICTS'>RCONFLICTS</link></filename> variable.
+                </para>
+
+                <para>
+                   As with all package-controlling variables, you must use
+                   this variable in conjunction with a package name
+                   override.
+                   Here is an example:
+                   <literallayout class='monospaced'>
+     RREPLACES_${PN} = "<replaceable>other_package_being_replaced</replaceable>"
+                   </literallayout>
+                </para>
+
+                <para>
+                    BitBake, which the OpenEmbedded build system uses, supports
+                    specifying versioned replacements.
+                    Although the syntax varies depending on the packaging
+                    format, BitBake hides these differences from you.
+                    Here is the general syntax to specify versions with
+                    the <filename>RREPLACES</filename> variable:
+                    <literallayout class='monospaced'>
+     RREPLACES_${PN} = "<replaceable>package</replaceable> (<replaceable>operator</replaceable> <replaceable>version</replaceable>)"
+                    </literallayout>
+                    For <filename>operator</filename>, you can specify the
+                    following:
+                    <literallayout class='monospaced'>
+     =
+     &lt;
+     &gt;
+     &lt;=
+     &gt;=
+                    </literallayout>
+                    For example, the following sets up a replacement using
+                    version 1.2 or greater of the package
+                    <filename>foo</filename>:
+                    <literallayout class='monospaced'>
+     RREPLACES_${PN} = "foo (>= 1.2)"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-RSUGGESTS'><glossterm>RSUGGESTS</glossterm>
+            <info>
+                RSUGGESTS[doc] = "A list of additional packages that you can suggest for installation by the package manager at the time a package is installed. Not all package managers support this functionality."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A list of additional packages that you can suggest for
+                    installation by the package manager at the time a package
+                    is installed.
+                    Not all package managers support this functionality.
+                </para>
+
+                <para>
+                   As with all package-controlling variables, you must always
+                   use this variable in conjunction with a package name
+                   override.
+                   Here is an example:
+                   <literallayout class='monospaced'>
+     RSUGGESTS_${PN} = "<replaceable>useful_package</replaceable> <replaceable>another_package</replaceable>"
+                   </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+    </glossdiv>
+
+    <glossdiv id='var-glossary-s'><title>S</title>
+
+        <glossentry id='var-S'><glossterm>S</glossterm>
+            <info>
+                S[doc] = "The location in the Build Directory where unpacked package source code resides."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The location in the
+                    <link linkend='build-directory'>Build Directory</link>
+                    where unpacked recipe source code resides.
+                    By default, this directory is
+                    <filename>${</filename><link linkend='var-WORKDIR'><filename>WORKDIR</filename></link><filename>}/${</filename><link linkend='var-BPN'><filename>BPN</filename></link><filename>}-${</filename><link linkend='var-PV'><filename>PV</filename></link><filename>}</filename>,
+                    where <filename>${BPN}</filename> is the base recipe name
+                    and <filename>${PV}</filename> is the recipe version.
+                    If the source tarball extracts the code to a directory
+                    named anything other than <filename>${BPN}-${PV}</filename>,
+                    or if the source code is fetched from an SCM such as
+                    Git or Subversion, then you must set <filename>S</filename>
+                    in the recipe so that the OpenEmbedded build system
+                    knows where to find the unpacked source.
+                </para>
+
+                <para>
+                    As an example, assume a
+                    <link linkend='source-directory'>Source Directory</link>
+                    top-level folder named <filename>poky</filename> and a
+                    default Build Directory at <filename>poky/build</filename>.
+                    In this case, the work directory the build system uses
+                    to keep the unpacked recipe for <filename>db</filename>
+                    is the following:
+                    <literallayout class='monospaced'>
+     poky/build/tmp/work/qemux86-poky-linux/db/5.1.19-r3/db-5.1.19
+                    </literallayout>
+                    The unpacked source code resides in the
+                    <filename>db-5.1.19</filename> folder.
+                </para>
+
+                <para>
+                    This next example assumes a Git repository.
+                    By default, Git repositories are cloned to
+                    <filename>${WORKDIR}/git</filename> during
+                    <link linkend='ref-tasks-fetch'><filename>do_fetch</filename></link>.
+                    Since this path is different from the default value of
+                    <filename>S</filename>, you must set it specifically
+                    so the source can be located:
+                    <literallayout class='monospaced'>
+     SRC_URI = "git://path/to/repo.git"
+     S = "${WORKDIR}/git"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SANITY_REQUIRED_UTILITIES'><glossterm>SANITY_REQUIRED_UTILITIES</glossterm>
+            <info>
+                SANITY_REQUIRED_UTILITIES[doc] = "Specifies a list of command-line utilities that should be checked for during the initial sanity checking process when running BitBake."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies a list of command-line utilities that should be
+                    checked for during the initial sanity checking process when
+                    running BitBake.
+                    If any of the utilities are not installed on the build host,
+                    then BitBake immediately exits with an error.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SANITY_TESTED_DISTROS'><glossterm>SANITY_TESTED_DISTROS</glossterm>
+            <info>
+                SANITY_TESTED_DISTROS[doc] = "A list of the host distribution identifiers that the build system has been tested against."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A list of the host distribution identifiers that the
+                    build system has been tested against.
+                    Identifiers consist of the host distributor ID
+                    followed by the release,
+                    as reported by the <filename>lsb_release</filename> tool
+                    or as read from <filename>/etc/lsb-release</filename>.
+                    Separate the list items with explicit newline
+                    characters (<filename>\n</filename>).
+                    If <filename>SANITY_TESTED_DISTROS</filename> is not empty
+                    and the current value of
+                    <link linkend='var-NATIVELSBSTRING'><filename>NATIVELSBSTRING</filename></link>
+                    does not appear in the list, then the build system reports
+                    a warning that indicates the current host distribution has
+                    not been tested as a build host.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SDK_ARCH'><glossterm>SDK_ARCH</glossterm>
+            <info>
+                SDK_ARCH[doc] = "The target architecture for the SDK."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The target architecture for the SDK.
+                    Typically, you do not directly set this variable.
+                    Instead, use
+                    <link linkend='var-SDKMACHINE'><filename>SDKMACHINE</filename></link>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SDK_DEPLOY'><glossterm>SDK_DEPLOY</glossterm>
+            <info>
+                SDK_DEPLOY[doc] = "The directory set up and used by the populate_sdk_base to which the SDK is deployed."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The directory set up and used by the
+                    <link linkend='ref-classes-populate-sdk'><filename>populate_sdk_base</filename></link>
+                    class to which the SDK is deployed.
+                    The <filename>populate_sdk_base</filename> class defines
+                    <filename>SDK_DEPLOY</filename> as follows:
+                    <literallayout class='monospaced'>
+     SDK_DEPLOY = "${TMPDIR}/deploy/sdk"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SDK_DIR'><glossterm>SDK_DIR</glossterm>
+            <info>
+                SDK_DIR[doc] = "The parent directory used by the OpenEmbedded build system when creating SDK output."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The parent directory used by the OpenEmbedded build system
+                    when creating SDK output.
+                    The
+                    <link linkend='ref-classes-populate-sdk-*'><filename>populate_sdk_base</filename></link>
+                    class defines the variable as follows:
+                    <literallayout class='monospaced'>
+     SDK_DIR = "${WORKDIR}/sdk"
+                    </literallayout>
+                    <note>
+                        The <filename>SDK_DIR</filename> directory is a
+                        temporary directory as it is part of
+                        <filename>WORKDIR</filename>.
+                        The final output directory is
+                        <link linkend='var-SDK_DEPLOY'><filename>SDK_DEPLOY</filename></link>.
+                    </note>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SDK_EXT_TYPE'><glossterm>SDK_EXT_TYPE</glossterm>
+            <info>
+                SDK_EXT_TYPE[doc] = "Controls whether or not shared state artifacts are copied into the extensible SDK."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Controls whether or not shared state artifacts are copied
+                    into the extensible SDK.
+                    The default value of "full" copies all of the required
+                    shared state artifacts into the extensible SDK.
+                    The value "minimal" leaves these artifacts out of the
+                    SDK.
+                    <note>
+                        If you set the variable to "minimal", you need to
+                        ensure
+                        <link linkend='var-SSTATE_MIRRORS'><filename>SSTATE_MIRRORS</filename></link>
+                        is set in the SDK's configuration to enable the
+                        artifacts to be fetched as needed.
+                    </note>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SDK_HOST_MANIFEST'><glossterm>SDK_HOST_MANIFEST</glossterm>
+            <info>
+                SDK_HOST_MANIFEST[doc] = "The manifest file for the host part of the SDK. This file lists all the installed packages that make up the host part of the SDK."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The manifest file for the host part of the SDK.
+                    This file lists all the installed packages that make up
+                    the host part of the SDK.
+                    The file contains package information on a line-per-package
+                    basis as follows:
+                    <literallayout class='monospaced'>
+     <replaceable>packagename</replaceable> <replaceable>packagearch</replaceable> <replaceable>version</replaceable>
+                    </literallayout>
+                </para>
+
+                <para>
+                    The
+                    <link linkend='ref-classes-populate-sdk-*'><filename>populate_sdk_base</filename></link>
+                    class defines the manifest file as follows:
+                    <literallayout class='monospaced'>
+     SDK_HOST_MANIFEST = "${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.host.manifest"
+                    </literallayout>
+                    The location is derived using the
+                    <link linkend='var-SDK_DEPLOY'><filename>SDK_DEPLOY</filename></link>
+                    and
+                    <link linkend='var-TOOLCHAIN_OUTPUTNAME'><filename>TOOLCHAIN_OUTPUTNAME</filename></link>
+                    variables.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SDK_INCLUDE_PKGDATA'><glossterm>SDK_INCLUDE_PKGDATA</glossterm>
+            <info>
+                SDK_INCLUDE_PKGDATA[doc] = "When set to "1", specifies to include the packagedata for all recipes in the "world" target in the extensible SDK."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When set to "1", specifies to include the packagedata for
+                    all recipes in the "world" target in the extensible SDK.
+                    Including this data allows the
+                    <filename>devtool search</filename> command to find these
+                    recipes in search results, as well as allows the
+                    <filename>devtool add</filename> command to map
+                    dependencies more effectively.
+                    <note>
+                        Enabling the <filename>SDK_INCLUDE_PKGDATA</filename>
+                        variable significantly increases build time because
+                        all of world needs to be built.
+                        Enabling the variable also slightly increases the size
+                        of the extensible SDK.
+                    </note>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SDK_INCLUDE_TOOLCHAIN'><glossterm>SDK_INCLUDE_TOOLCHAIN</glossterm>
+            <info>
+                SDK_INCLUDE_TOOLCHAIN[doc] = "When set to "1", specifies to include the toolchain in the extensible SDK."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When set to "1", specifies to include the toolchain in the
+                    extensible SDK.
+                    Including the toolchain is useful particularly when
+                    <link linkend='var-SDK_EXT_TYPE'><filename>SDK_EXT_TYPE</filename></link>
+                    is set to "minimal" to keep the SDK reasonably small
+                    but you still want to provide a usable toolchain.
+                    For example, suppose you want to use the toolchain from an
+                    IDE or from other tools and you do not
+                    want to perform additional steps to install the toolchain.
+                </para>
+
+                <para>
+                    The <filename>SDK_INCLUDE_TOOLCHAIN</filename> variable
+                    defaults to "0" if <filename>SDK_EXT_TYPE</filename>
+                    is set to "minimal", and defaults to "1" if
+                    <filename>SDK_EXT_TYPE</filename> is set to "full".
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SDK_INHERIT_BLACKLIST'><glossterm>SDK_INHERIT_BLACKLIST</glossterm>
+            <info>
+                SDK_INHERIT_BLACKLIST[doc] = "A list of classes to remove from the INHERIT value globally within the extensible SDK configuration."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A list of classes to remove from the
+                    <link linkend='var-INHERIT'><filename>INHERIT</filename></link>
+                    value globally within the extensible SDK configuration.
+                    The
+                    <link linkend='ref-classes-populate-sdk-*'><filename>populate-sdk-ext</filename></link>
+                    class sets the default value:
+                    <literallayout class='monospaced'>
+     SDK_INHERIT_BLACKLIST ?= "buildhistory icecc"
+                    </literallayout>
+                </para>
+
+                <para>
+                    Some classes are not generally applicable within
+                    the extensible SDK context.
+                    You can use this variable to disable those classes.
+                </para>
+
+                <para>
+                    For additional information on how to customize the
+                    extensible SDK's configuration, see the
+                    "<ulink url='&YOCTO_DOCS_SDK_URL;#sdk-configuring-the-extensible-sdk'>Configuring the Extensible SDK</ulink>"
+                    section in the Yocto Project Application Development and
+                    the Extensible Software Development Kit (eSDK) manual.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SDK_LOCAL_CONF_BLACKLIST'><glossterm>SDK_LOCAL_CONF_BLACKLIST</glossterm>
+            <info>
+                SDK_LOCAL_CONF_BLACKLIST[doc] = "A list of variables not allowed through from the build system configuration into the extensible SDK configuration."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A list of variables not allowed through from the
+                    OpenEmbedded build system configuration into the extensible
+                    SDK configuration.
+                    Usually, these are variables that are specific to the
+                    machine on which the build system is running and thus
+                    would be potentially problematic within the extensible SDK.
+                    </para>
+
+                    <para>By default,
+                    <filename>SDK_LOCAL_CONF_BLACKLIST</filename> is set in the
+                    <link linkend='ref-classes-populate-sdk-*'><filename>populate-sdk-ext</filename></link>
+                    class and excludes the following variables:
+                    <literallayout class='monospaced'>
+     <link linkend='var-CONF_VERSION'>CONF_VERSION</link>
+     <link linkend='var-BB_NUMBER_THREADS'>BB_NUMBER_THREADS</link>
+     <ulink url='&YOCTO_DOCS_BB_URL;#var-BB_NUMBER_PARSE_THREADS'>BB_NUMBER_PARSE_THREADS</ulink>
+     <link linkend='var-PARALLEL_MAKE'>PARALLEL_MAKE</link>
+     <link linkend='var-PRSERV_HOST'>PRSERV_HOST</link>
+     <link linkend='var-SSTATE_MIRRORS'>SSTATE_MIRRORS</link>
+     <link linkend='var-DL_DIR'>DL_DIR</link>
+     <link linkend='var-SSTATE_DIR'>SSTATE_DIR</link>
+     <link linkend='var-TMPDIR'>TMPDIR</link>
+     <link linkend='var-BB_SERVER_TIMEOUT'>BB_SERVER_TIMEOUT</link>
+                    </literallayout>
+                </para>
+
+                <para>
+                    For additional information on how to customize the
+                    extensible SDK's configuration, see the
+                    "<ulink url='&YOCTO_DOCS_SDK_URL;#sdk-configuring-the-extensible-sdk'>Configuring the Extensible SDK</ulink>"
+                    section in the Yocto Project Application Development and
+                    the Extensible Software Development Kit (eSDK) manual.
+                </para>
+
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SDK_LOCAL_CONF_WHITELIST'><glossterm>SDK_LOCAL_CONF_WHITELIST</glossterm>
+            <info>
+                SDK_LOCAL_CONF_WHITELIST[doc] = "A list of variables allowed through from the build system configuration into the extensible SDK configuration."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A list of variables allowed through from the OpenEmbedded
+                    build system configuration into the extensible SDK
+                    configuration.
+                    By default, the list of variables is empty and is set in
+                    the
+                    <link linkend='ref-classes-populate-sdk-*'><filename>populate-sdk-ext</filename></link>
+                    class.
+                </para>
+
+                <para>
+                    This list overrides the variables specified using the
+                    <link linkend='var-SDK_LOCAL_CONF_BLACKLIST'><filename>SDK_LOCAL_CONF_BLACKLIST</filename></link>
+                    variable as well as any variables identified by automatic
+                    blacklisting due to the "/" character being found at the
+                    start of the value, which is usually indicative of being a
+                    path and thus might not be valid on the system where the
+                    SDK is installed.
+                </para>
+
+                <para>
+                    For additional information on how to customize the
+                    extensible SDK's configuration, see the
+                    "<ulink url='&YOCTO_DOCS_SDK_URL;#sdk-configuring-the-extensible-sdk'>Configuring the Extensible SDK</ulink>"
+                    section in the Yocto Project Application Development and
+                    the Extensible Software Development Kit (eSDK) manual.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SDK_NAME'><glossterm>SDK_NAME</glossterm>
+            <info>
+                SDK_NAME[doc] = "The base name for SDK output files."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The base name for SDK output files.
+                    The name is derived from the
+                    <link linkend='var-DISTRO'><filename>DISTRO</filename></link>,
+                    <link linkend='var-TCLIBC'><filename>TCLIBC</filename></link>,
+                    <link linkend='var-SDK_ARCH'><filename>SDK_ARCH</filename></link>,
+                    <link linkend='var-IMAGE_BASENAME'><filename>IMAGE_BASENAME</filename></link>,
+                    and
+                    <link linkend='var-TUNE_PKGARCH'><filename>TUNE_PKGARCH</filename></link>
+                    variables:
+                    <literallayout class='monospaced'>
+     SDK_NAME = "${DISTRO}-${TCLIBC}-${SDK_ARCH}-${IMAGE_BASENAME}-${TUNE_PKGARCH}"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SDK_OS'><glossterm>SDK_OS</glossterm>
+            <info>
+                SDK_OS[doc] = "The operating system for which the SDK will be built."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the operating system for which the SDK
+                    will be built.
+                    The default value is the value of
+                    <link linkend='var-BUILD_OS'><filename>BUILD_OS</filename></link>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SDK_OUTPUT'><glossterm>SDK_OUTPUT</glossterm>
+            <info>
+                SDK_OUTPUT[doc] = "The location used by the OpenEmbedded build system when creating SDK output."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The location used by the OpenEmbedded build system when
+                    creating SDK output.
+                    The
+                    <link linkend='ref-classes-populate-sdk-*'><filename>populate_sdk_base</filename></link>
+                    class defines the variable as follows:
+                    <literallayout class='monospaced'>
+     SDK_DIR = "${WORKDIR}/sdk"
+     SDK_OUTPUT = "${SDK_DIR}/image"
+     SDK_DEPLOY = "${DEPLOY_DIR}/sdk"
+                    </literallayout>
+                    <note>
+                        The <filename>SDK_OUTPUT</filename> directory is a
+                        temporary directory as it is part of
+                        <link linkend='var-WORKDIR'><filename>WORKDIR</filename></link>
+                        by way of
+                        <link linkend='var-SDK_DIR'><filename>SDK_DIR</filename></link>.
+                        The final output directory is
+                        <link linkend='var-SDK_DEPLOY'><filename>SDK_DEPLOY</filename></link>.
+                    </note>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SDK_PACKAGE_ARCHS'><glossterm>SDK_PACKAGE_ARCHS</glossterm>
+            <info>
+                SDK_PACKAGE_ARCHS[doc] = "Specifies a list of architectures compatible with the SDK machine. This variable is set automatically and should not normally be hand-edited."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies a list of architectures compatible with
+                    the SDK machine.
+                    This variable is set automatically and should not
+                    normally be hand-edited.
+                    Entries are separated using spaces and listed in order
+                    of priority.
+                    The default value for
+                    <filename>SDK_PACKAGE_ARCHS</filename> is "all any noarch
+                    ${SDK_ARCH}-${SDKPKGSUFFIX}".
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SDK_POSTPROCESS_COMMAND'><glossterm>SDK_POSTPROCESS_COMMAND</glossterm>
+            <info>
+                SDK_POSTPROCESS_COMMAND[doc] = "Specifies a list of functions to call once the OpenEmbedded build system creates the SDK."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies a list of functions to call once the
+                    OpenEmbedded build system creates the SDK.
+                    You can specify functions separated by semicolons:
+                    <literallayout class='monospaced'>
+     SDK_POSTPROCESS_COMMAND += "<replaceable>function</replaceable>; ... "
+                    </literallayout>
+                </para>
+
+                <para>
+                    If you need to pass an SDK path to a command within a
+                    function, you can use
+                    <filename>${SDK_DIR}</filename>, which points to
+                    the parent directory used by the OpenEmbedded build system
+                    when creating SDK output.
+                    See the
+                    <link linkend='var-SDK_DIR'><filename>SDK_DIR</filename></link>
+                    variable for more information.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SDK_PREFIX'><glossterm>SDK_PREFIX</glossterm>
+            <info>
+                SDK_PREFIX[doc] = "The toolchain binary prefix used for nativesdk recipes."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The toolchain binary prefix used for
+                    <filename>nativesdk</filename> recipes.
+                    The OpenEmbedded build system uses the
+                    <filename>SDK_PREFIX</filename> value to set the
+                    <link linkend='var-TARGET_PREFIX'><filename>TARGET_PREFIX</filename></link>
+                    when building <filename>nativesdk</filename> recipes.
+                    The default value is "${SDK_SYS}-".
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SDK_RECRDEP_TASKS'><glossterm>SDK_RECRDEP_TASKS</glossterm>
+            <info>
+                SDK_RECRDEP_TASKS[doc] = "A list of shared state tasks added to the extensible SDK."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A list of shared state tasks added to the extensible SDK.
+                    By default, the following tasks are added:
+                    <literallayout class='monospaced'>
+     do_populate_lic
+     do_package_qa
+     do_populate_sysroot
+     do_deploy
+                    </literallayout>
+                    Despite the default value of "" for the
+                    <filename>SDK_RECRDEP_TASKS</filename> variable, the
+                    above four tasks are always added to the SDK.
+                    To specify tasks beyond these four, you need to use
+                    the <filename>SDK_RECRDEP_TASKS</filename> variable (e.g.
+                    you are defining additional tasks that are needed in
+                    order to build
+                    <link linkend='var-SDK_TARGETS'><filename>SDK_TARGETS</filename></link>).
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SDK_SYS'><glossterm>SDK_SYS</glossterm>
+            <info>
+                SDK_SYS[doc] = "Specifies the system, including the architecture and the operating system, for which the SDK will be built."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the system, including the architecture and the
+                    operating system, for which the SDK will be built.
+                </para>
+
+                <para>
+                    The OpenEmbedded build system automatically sets this
+                    variable based on
+                    <link linkend='var-SDK_ARCH'><filename>SDK_ARCH</filename></link>,
+                    <link linkend='var-SDK_VENDOR'><filename>SDK_VENDOR</filename></link>,
+                    and
+                    <link linkend='var-SDK_OS'><filename>SDK_OS</filename></link>.
+                    You do not need to set the <filename>SDK_SYS</filename>
+                    variable yourself.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SDK_TARGET_MANIFEST'><glossterm>SDK_TARGET_MANIFEST</glossterm>
+            <info>
+                SDK_TARGET_MANIFEST[doc] = "The manifest file for the target part of the SDK. This file lists all the installed packages that make up the target part of the SDK."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The manifest file for the target part of the SDK.
+                    This file lists all the installed packages that make up
+                    the target part of the SDK.
+                    The file contains package information on a line-per-package
+                    basis as follows:
+                    <literallayout class='monospaced'>
+     <replaceable>packagename</replaceable> <replaceable>packagearch</replaceable> <replaceable>version</replaceable>
+                    </literallayout>
+                </para>
+
+                <para>
+                    The
+                    <link linkend='ref-classes-populate-sdk-*'><filename>populate_sdk_base</filename></link>
+                    class defines the manifest file as follows:
+                    <literallayout class='monospaced'>
+     SDK_TARGET_MANIFEST = "${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.target.manifest"
+                    </literallayout>
+                    The location is derived using the
+                    <link linkend='var-SDK_DEPLOY'><filename>SDK_DEPLOY</filename></link>
+                    and
+                    <link linkend='var-TOOLCHAIN_OUTPUTNAME'><filename>TOOLCHAIN_OUTPUTNAME</filename></link>
+                    variables.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SDK_TARGETS'><glossterm>SDK_TARGETS</glossterm>
+            <info>
+                SDK_TARGETS[doc] = "A list of targets to install from shared state as part of the standard or extensible SDK installation."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A list of targets to install from shared state as part of
+                    the standard or extensible SDK installation.
+                    The default value is "${PN}" (i.e. the image from which
+                    the SDK is built).
+                </para>
+
+                <para>
+                    The <filename>SDK_TARGETS</filename> variable is an
+                    internal variable and typically would not be changed.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SDK_TITLE'><glossterm>SDK_TITLE</glossterm>
+            <info>
+                SDK_TITLE[doc] = "The title to be printed when running the SDK installer."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The title to be printed when running the SDK installer.
+                    By default, this title is based on the
+                    <link linkend='var-DISTRO_NAME'><filename>DISTRO_NAME</filename></link>
+                    or
+                    <link linkend='var-DISTRO'><filename>DISTRO</filename></link>
+                    variable and is set in the
+                    <link linkend='ref-classes-populate-sdk-*'><filename>populate_sdk_base</filename></link>
+                    class as follows:
+                    <literallayout class='monospaced'>
+     SDK_TITLE ??= "${@d.getVar('DISTRO_NAME') or d.getVar('DISTRO')} SDK"
+                    </literallayout>
+                    For the default distribution "poky",
+                    <filename>SDK_TITLE</filename> is set to
+                    "Poky (Yocto Project Reference Distro)".
+                </para>
+
+                <para>
+                    For information on how to change this default title,
+                    see the
+                    "<ulink url='&YOCTO_DOCS_SDK_URL;#sdk-changing-the-sdk-installer-title'>Changing the Extensible SDK Installer Title</ulink>"
+                    section in the Yocto Project Application Development and
+                    the Extensible Software Development Kit (eSDK) manual.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SDK_UPDATE_URL'><glossterm>SDK_UPDATE_URL</glossterm>
+            <info>
+                SDK_UPDATE_URL[doc] = "An optional URL for an update server for the extensible SDK."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    An optional URL for an update server for the extensible
+                    SDK.
+                    If set, the value is used as the default update server when
+                    running <filename>devtool sdk-update</filename> within the
+                    extensible SDK.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SDK_VENDOR'><glossterm>SDK_VENDOR</glossterm>
+            <info>
+                SDK_VENDOR[doc] = "Specifies the name of the SDK vendor."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the name of the SDK vendor.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SDK_VERSION'><glossterm>SDK_VERSION</glossterm>
+            <info>
+                SDK_VERSION[doc] = "Specifies the version for the SDK."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the version of the SDK.
+                    The distribution configuration file (e.g.
+                    <filename>/meta-poky/conf/distro/poky.conf</filename>)
+                    defines the <filename>SDK_VERSION</filename> as follows:
+                    <literallayout class='monospaced'>
+     SDK_VERSION = "${@d.getVar('DISTRO_VERSION').replace('snapshot-${DATE}','snapshot')}"
+                    </literallayout>
+                </para>
+
+                <para>
+                    For additional information, see the
+                    <link linkend='var-DISTRO_VERSION'><filename>DISTRO_VERSION</filename></link>
+                    and
+                    <link linkend='var-DATE'><filename>DATE</filename></link>
+                    variables.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SDKEXTPATH'><glossterm>SDKEXTPATH</glossterm>
+            <info>
+                SDKEXTPATH[doc] = "The default installation directory for the extensible SDK."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The default installation directory for the Extensible SDK.
+                    By default, this directory is based on the
+                    <link linkend='var-DISTRO'><filename>DISTRO</filename></link>
+                    variable and is set in the
+                    <link linkend='ref-classes-populate-sdk-*'><filename>populate_sdk_base</filename></link>
+                    class as follows:
+                    <literallayout class='monospaced'>
+     SDKEXTPATH ??= "~/${@d.getVar('DISTRO')}_sdk"
+                    </literallayout>
+                    For the default distribution "poky", the
+                    <filename>SDKEXTPATH</filename> is set to "poky_sdk".
+                </para>
+
+                <para>
+                    For information on how to change this default directory,
+                    see the
+                    "<ulink url='&YOCTO_DOCS_SDK_URL;#sdk-changing-the-default-sdk-installation-directory'>Changing the Default SDK Installation Directory</ulink>"
+                    section in the Yocto Project Application Development and
+                    the Extensible Software Development Kit (eSDK) manual.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SDKIMAGE_FEATURES'><glossterm>SDKIMAGE_FEATURES</glossterm>
+            <info>
+                SDKIMAGE_FEATURES[doc] = "Equivalent to IMAGE_FEATURES. However, this variable applies to the SDK generated from an image using the command 'bitbake -c populate_sdk imagename'."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Equivalent to
+                    <filename><link linkend='var-IMAGE_FEATURES'>IMAGE_FEATURES</link></filename>.
+                    However, this variable applies to the SDK generated from an
+                    image using the following command:
+                    <literallayout class='monospaced'>
+     $ bitbake -c populate_sdk <replaceable>imagename</replaceable>
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SDKMACHINE'><glossterm>SDKMACHINE</glossterm>
+            <info>
+                SDKMACHINE[doc] = "Specifies the architecture (i.e. i686 or x86_64) for which to build SDK items."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The machine for which the SDK is built.
+                    In other words, the SDK is built such that it
+                    runs on the target you specify with the
+                    <filename>SDKMACHINE</filename> value.
+                    The value points to a corresponding
+                    <filename>.conf</filename> file under
+                    <filename>conf/machine-sdk/</filename>.
+                </para>
+
+                <para>
+                     You can use "i686" and "x86_64" as possible values
+                     for this variable. The variable defaults to "i686"
+                     and is set in the local.conf file in the Build Directory.
+                     <literallayout class='monospaced'>
+     SDKMACHINE ?= "i686"
+                     </literallayout>
+                     <note>
+                         You cannot set the <filename>SDKMACHINE</filename>
+                         variable in your distribution configuration file.
+                         If you do, the configuration will not take affect.
+                     </note>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SDKPATH'><glossterm>SDKPATH</glossterm>
+            <info>
+                SDKPATH[doc] = "Defines the path offered to the user for installation of the SDK that is generated by the OpenEmbedded build system."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Defines the path offered to the user for installation
+                    of the SDK that is generated by the OpenEmbedded build
+                    system.
+                    The path appears as the default location for installing
+                    the SDK when you run the SDK's installation script.
+                    You can override the offered path when you run the
+                    script.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SDKTARGETSYSROOT'><glossterm>SDKTARGETSYSROOT</glossterm>
+            <info>
+                SDKTARGETSYSROOT[doc] = "Full path to the sysroot used for cross-compilation within an SDK as it will be when installed into the default SDKPATH."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The full path to the sysroot used for cross-compilation
+                    within an SDK as it will be when installed into the
+                    default
+                    <link linkend='var-SDKPATH'><filename>SDKPATH</filename></link>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SECTION'><glossterm>SECTION</glossterm>
+            <info>
+                SECTION[doc] = "The section in which packages should be categorized. Package management utilities can make use of this variable."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The section in which packages should be categorized.
+                    Package management utilities can make use of this variable.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SELECTED_OPTIMIZATION'><glossterm>SELECTED_OPTIMIZATION</glossterm>
+            <info>
+                SELECTED_OPTIMIZATION[doc] = "The variable takes the value of FULL_OPTIMIZATION unless DEBUG_BUILD = '1'. In this case, the value of DEBUG_OPTIMIZATION is used."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the optimization flags passed to the C compiler
+                    when building for the target.
+                    The flags are passed through the default value of the
+                    <link linkend='var-TARGET_CFLAGS'><filename>TARGET_CFLAGS</filename></link>
+                    variable.
+                </para>
+
+                <para>
+                    The <filename>SELECTED_OPTIMIZATION</filename> variable
+                    takes the value of
+                    <filename><link linkend='var-FULL_OPTIMIZATION'>FULL_OPTIMIZATION</link></filename>
+                    unless <filename><link linkend='var-DEBUG_BUILD'>DEBUG_BUILD</link></filename> = "1".
+                    If that is the case, the value of
+                    <filename><link linkend='var-DEBUG_OPTIMIZATION'>DEBUG_OPTIMIZATION</link></filename> is used.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SERIAL_CONSOLE'><glossterm>SERIAL_CONSOLE</glossterm>
+            <info>
+                SERIAL_CONSOLE[doc] = "Defines the serial consoles (TTYs) to enable using getty."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Defines a serial console (TTY) to enable using
+                    <ulink url='https://en.wikipedia.org/wiki/Getty_(Unix)'>getty</ulink>.
+                    Provide a value that specifies the baud rate followed by
+                    the TTY device name separated by a space.
+                    You cannot specify more than one TTY device:
+                    <literallayout class='monospaced'>
+     SERIAL_CONSOLE = "115200 ttyS0"
+                    </literallayout>
+                    <note>
+                        The <filename>SERIAL_CONSOLE</filename> variable
+                        is deprecated.
+                        Please use the
+                        <link linkend='var-SERIAL_CONSOLES'><filename>SERIAL_CONSOLES</filename></link>
+                        variable.
+                    </note>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SERIAL_CONSOLES'><glossterm>SERIAL_CONSOLES</glossterm>
+            <info>
+                SERIAL_CONSOLES[doc] = "Defines the serial consoles (TTYs) to enable using getty."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Defines a serial console (TTY) to enable using
+                    <ulink url='https://en.wikipedia.org/wiki/Getty_(Unix)'>getty</ulink>.
+                    Provide a value that specifies the baud rate followed by
+                    the TTY device name separated by a semicolon.
+                    Use spaces to separate multiple devices:
+                    <literallayout class='monospaced'>
+     SERIAL_CONSOLES = "115200;ttyS0 115200;ttyS1"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SERIAL_CONSOLES_CHECK'><glossterm>SERIAL_CONSOLES_CHECK</glossterm>
+            <info>
+                SERIAL_CONSOLES_CHECK[doc] = "Selected SERIAL_CONSOLES to check against /proc/console before enabling using getty. Supported only by SysVinit."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies serial consoles, which must be listed in
+                    <link linkend='var-SERIAL_CONSOLES'><filename>SERIAL_CONSOLES</filename></link>,
+                    to check against <filename>/proc/console</filename>
+                    before enabling them using getty.
+                    This variable allows aliasing in the format:
+                    &lt;device&gt;:&lt;alias&gt;.
+                    If a device was listed as "sclp_line0"
+                    in <filename>/dev/</filename> and "ttyS0" was listed
+                    in <filename>/proc/console</filename>, you would do the
+                    following:
+                    <literallayout class='monospaced'>
+     SERIAL_CONSOLES_CHECK = "slcp_line0:ttyS0"
+                    </literallayout>
+                    This variable is currently only supported with SysVinit
+                    (i.e. not with systemd).
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS'><glossterm>SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS</glossterm>
+            <info>
+                SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS[doc] = "A list of recipe dependencies that should not be used to determine signatures of tasks from one recipe when they depend on tasks from another recipe."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A list of recipe dependencies that should not be used to
+                    determine signatures of tasks from one recipe when they
+                    depend on tasks from another recipe.
+                    For example:
+                    <literallayout class='monospaced'>
+    SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += "intone->mplayer2"
+                    </literallayout>
+                </para>
+
+                <para>
+                    In the previous example, <filename>intone</filename>
+                    depends on <filename>mplayer2</filename>.
+                </para>
+
+                <para>
+                    You can use the special token <filename>"*"</filename> on
+                    the left-hand side of the dependency to match all
+                    recipes except the one on the right-hand side.
+                    Here is an example:
+                    <literallayout class='monospaced'>
+    SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += "*->quilt-native"
+                    </literallayout>
+                </para>
+
+                <para>
+                    In the previous example, all recipes except
+                    <filename>quilt-native</filename> ignore task
+                    signatures from the <filename>quilt-native</filename>
+                    recipe when determining their task signatures.
+                </para>
+
+                <para>
+                    Use of this variable is one mechanism to remove dependencies
+                    that affect task signatures and thus force rebuilds when a
+                    recipe changes.
+                    <note><title>Caution</title>
+                        If you add an inappropriate dependency for a recipe
+                        relationship, the software might break during
+                        runtime if the interface of the second recipe was
+                        changed after the first recipe had been built.
+                    </note>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SIGGEN_EXCLUDERECIPES_ABISAFE'><glossterm>SIGGEN_EXCLUDERECIPES_ABISAFE</glossterm>
+            <info>
+                SIGGEN_EXCLUDERECIPES_ABISAFE[doc] = "A list of recipes that are completely stable and will never change."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A list of recipes that are completely stable and will
+                    never change.
+                    The ABI for the recipes in the list are presented by
+                    output from the tasks run to build the recipe.
+                    Use of this variable is one way to remove dependencies from
+                    one recipe on another that affect task signatures and
+                    thus force rebuilds when the recipe changes.
+                    <note><title>Caution</title>
+                        If you add an inappropriate variable to this list,
+                        the software might break at runtime if the
+                        interface of the recipe was changed after the other
+                        had been built.
+                    </note>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SITEINFO_BITS'><glossterm>SITEINFO_BITS</glossterm>
+            <info>
+                SITEINFO_BITS[doc] = "Specifies the number of bits for the target system CPU."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the number of bits for the target system CPU.
+                    The value should be either "32" or "64".
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SITEINFO_ENDIANNESS'><glossterm>SITEINFO_ENDIANNESS</glossterm>
+            <info>
+                SITEINFO_ENDIANNESS[doc] = "Specifies the endian byte order of the target system. The value should be either 'le' for 'little-endian' or 'be' for 'big-endian'."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the endian byte order of the target system.
+                    The value should be either "le" for little-endian or "be" for big-endian.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SKIP_FILEDEPS'><glossterm>SKIP_FILEDEPS</glossterm>
+            <info>
+                SKIP_FILEDEPS[doc] = "Enables you to remove all files from the 'Provides' section of an RPM package."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Enables removal of all files from the "Provides" section of
+                    an RPM package.
+                    Removal of these files is required for packages containing
+                    prebuilt binaries and libraries such as
+                    <filename>libstdc++</filename> and
+                    <filename>glibc</filename>.
+                </para>
+
+                <para>
+                    To enable file removal, set the variable to "1" in your
+                    <filename>conf/local.conf</filename> configuration file
+                    in your:
+                    <link linkend='build-directory'>Build Directory</link>.
+                    <literallayout class='monospaced'>
+     SKIP_FILEDEPS = "1"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SOC_FAMILY'><glossterm>SOC_FAMILY</glossterm>
+            <info>
+                SOC_FAMILY[doc] = "Groups together machines based upon the same family of SOC (System On Chip). You typically set this variable in a common .inc file that you include in the configuration files of all the machines."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Groups together machines based upon the same family
+                    of SOC (System On Chip).
+                    You typically set this variable in a common
+                    <filename>.inc</filename> file that you include in the
+                    configuration files of all the machines.
+                    <note>
+                        You must include
+                        <filename>conf/machine/include/soc-family.inc</filename>
+                        for this variable to appear in
+                        <link linkend='var-MACHINEOVERRIDES'><filename>MACHINEOVERRIDES</filename></link>.
+                    </note>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SOLIBS'><glossterm>SOLIBS</glossterm>
+            <info>
+                SOLIBS[doc] = "Defines the suffix for shared libraries used on the target platform."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Defines the suffix for shared libraries used on the
+                    target platform.
+                    By default, this suffix is ".so.*" for all Linux-based
+                    systems and is defined in the
+                    <filename>meta/conf/bitbake.conf</filename> configuration
+                    file.
+                </para>
+
+                <para>
+                    You will see this variable referenced in the default values
+                    of <filename>FILES_${PN}</filename>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SOLIBSDEV'><glossterm>SOLIBSDEV</glossterm>
+            <info>
+                SOLIBSDEV[doc] = "Defines the suffix for the development symbolic link (symlink) for shared libraries on the target platform."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Defines the suffix for the development symbolic link
+                    (symlink) for shared libraries on the target platform.
+                    By default, this suffix is ".so" for Linux-based
+                    systems and is defined in the
+                    <filename>meta/conf/bitbake.conf</filename> configuration
+                    file.
+                </para>
+
+                <para>
+                    You will see this variable referenced in the default values
+                    of <filename>FILES_${PN}-dev</filename>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SOURCE_MIRROR_FETCH'><glossterm>SOURCE_MIRROR_FETCH</glossterm>
+            <info>
+                SOURCE_MIRROR_FETCH[doc] = "Set as part of a source mirror generation script to skip COMPATIBLE_MACHINE and COMPATIBLE_HOST checks."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When you are fetching files to create a mirror of sources
+                    (i.e. creating a source mirror), setting
+                    <filename>SOURCE_MIRROR_FETCH</filename> to "1" in your
+                    <filename>local.conf</filename> configuration file ensures
+                    the source for all recipes are fetched regardless of
+                    whether or not a recipe is compatible with the
+                    configuration.
+                    A recipe is considered incompatible with the currently
+                    configured machine when either or both the
+                    <link linkend='var-COMPATIBLE_MACHINE'><filename>COMPATIBLE_MACHINE</filename></link>
+                    variable and
+                    <link linkend='var-COMPATIBLE_HOST'><filename>COMPATIBLE_HOST</filename></link>
+                    variables specify compatibility with a machine other
+                    than that of the current machine or host.
+                    <note><title>Warning</title>
+                        Do not set the
+                        <filename>SOURCE_MIRROR_FETCH</filename> variable
+                        unless you are creating a source mirror.
+                        In other words, do not set the variable during a
+                        normal build.
+                    </note>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SOURCE_MIRROR_URL'><glossterm>SOURCE_MIRROR_URL</glossterm>
+            <info>
+                SOURCE_MIRROR_URL[doc] = "URL to source mirror that will be used before fetching from original SRC_URI."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Defines your own
+                    <link linkend='var-PREMIRRORS'><filename>PREMIRRORS</filename></link>
+                    from which to first fetch source before attempting to fetch
+                    from the upstream specified in
+                    <link linkend='var-SRC_URI'><filename>SRC_URI</filename></link>.
+                </para>
+
+                <para>
+                    To use this variable, you must globally inherit the
+                    <link linkend='ref-classes-own-mirrors'><filename>own-mirrors</filename></link>
+                    class and then provide the URL to your mirrors.
+                    Here is the general syntax:
+                    <literallayout class='monospaced'>
+     INHERIT += "own-mirrors"
+     SOURCE_MIRROR_URL = "http://<replaceable>example</replaceable>.com/<replaceable>my_source_mirror</replaceable>"
+                    </literallayout>
+                    <note>
+                        You can specify only a single URL in
+                        <filename>SOURCE_MIRROR_URL</filename>.
+                    </note>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SPDXLICENSEMAP'><glossterm>SPDXLICENSEMAP</glossterm>
+            <info>
+                SPDXLICENSEMAP[doc] = "Maps commonly used license names to their SPDX counterparts found in meta/files/common-licenses/."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Maps commonly used license names to their SPDX counterparts
+                    found in <filename>meta/files/common-licenses/</filename>.
+                    For the default <filename>SPDXLICENSEMAP</filename>
+                    mappings, see the
+                    <filename>meta/conf/licenses.conf</filename> file.
+                </para>
+
+                <para>
+                    For additional information, see the
+                    <link linkend='var-LICENSE'><filename>LICENSE</filename></link>
+                    variable.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SPECIAL_PKGSUFFIX'><glossterm>SPECIAL_PKGSUFFIX</glossterm>
+            <info>
+                SPECIAL_PKGSUFFIX[doc] = "A list of prefixes for PN used by the OpenEmbedded build system to create variants of recipes or packages. The list specifies the prefixes to strip off during certain circumstances such as the generation of the BPN variable."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A list of prefixes for <link linkend='var-PN'><filename>PN</filename></link> used by the
+                    OpenEmbedded build system to create variants of recipes or packages.
+                    The list specifies the prefixes to strip off during certain circumstances
+                    such as the generation of the <link linkend='var-BPN'><filename>BPN</filename></link> variable.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SPL_BINARY'><glossterm>SPL_BINARY</glossterm>
+            <info>
+                SPL_BINARY[doc] = "The file type of the Secondary Program Loader (SPL)."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The file type for the Secondary Program Loader (SPL).
+                    Some devices use an SPL from which to boot (e.g. the
+                    BeagleBone development board).
+                    For such cases, you can declare the file type of the
+                    SPL binary in the <filename>u-boot.inc</filename> include
+                    file, which is used in the U-Boot recipe.
+                </para>
+
+                <para>
+                    The SPL file type is set to "null" by default in the
+                    <filename>u-boot.inc</filename> file as follows:
+                    <literallayout class='monospaced'>
+     # Some versions of u-boot build an SPL (Second Program Loader) image that
+     # should be packaged along with the u-boot binary as well as placed in the
+     # deploy directory.  For those versions they can set the following variables
+     # to allow packaging the SPL.
+     SPL_BINARY ?= ""
+     SPL_BINARYNAME ?= "${@os.path.basename(d.getVar("SPL_BINARY"))}"
+     SPL_IMAGE ?= "${SPL_BINARYNAME}-${MACHINE}-${PV}-${PR}"
+     SPL_SYMLINK ?= "${SPL_BINARYNAME}-${MACHINE}"
+                    </literallayout>
+                    The <filename>SPL_BINARY</filename> variable helps form
+                    various <filename>SPL_*</filename> variables used by
+                    the OpenEmbedded build system.
+                </para>
+
+                <para>
+                    See the BeagleBone machine configuration example in the
+                    "<ulink url='&YOCTO_DOCS_BSP_URL;#creating-a-new-bsp-layer-using-the-bitbake-layers-script'>Creating a new BSP Layer Using the <filename>bitbake-layers</filename> Script</ulink>"
+                    section in the Yocto Project Board Support Package
+                    Developer's Guide for additional information.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SRC_URI'><glossterm>SRC_URI</glossterm>
+            <info>
+                SRC_URI[doc] = "The list of source files - local or remote. This variable tells the OpenEmbedded build system what bits to pull in for the build and how to pull them in."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The list of source files - local or remote.
+                    This variable tells the OpenEmbedded build system which bits
+                    to pull in for the build and how to pull them in.
+                    For example, if the recipe or append file only needs to
+                    fetch a tarball from the Internet, the recipe or
+                    append file uses a single <filename>SRC_URI</filename>
+                    entry.
+                    On the other hand, if the recipe or append file needs to
+                    fetch a tarball, apply two patches, and include a custom
+                    file, the recipe or append file would include four
+                    instances of the variable.
+                </para>
+
+                <para>
+                    The following list explains the available URI protocols.
+                    URI protocols are highly dependent on particular BitBake
+                    Fetcher submodules.
+                    Depending on the fetcher BitBake uses, various URL
+                    parameters are employed.
+                    For specifics on the supported Fetchers, see the
+                    "<ulink url='&YOCTO_DOCS_BB_URL;#bb-fetchers'>Fetchers</ulink>"
+                    section in the BitBake User Manual.
+                    <itemizedlist>
+                        <listitem><para><emphasis><filename>file://</filename> -</emphasis>
+                            Fetches files, which are usually files shipped with
+                            the
+                            <link linkend='metadata'>Metadata</link>,
+                            from the local machine (e.g.
+                            <ulink url='&YOCTO_DOCS_OM_URL;#patching-dev-environment'>patch</ulink>
+                            files).
+                            The path is relative to the
+                            <link linkend='var-FILESPATH'><filename>FILESPATH</filename></link>
+                            variable.
+                            Thus, the build system searches, in order, from the
+                            following directories, which are assumed to be a
+                            subdirectories of the directory in which the
+                            recipe file (<filename>.bb</filename>) or
+                            append file (<filename>.bbappend</filename>)
+                            resides:
+                            <itemizedlist>
+                                <listitem><para><emphasis><filename>${BPN}</filename> -</emphasis>
+                                    The base recipe name without any special
+                                    suffix or version numbers.
+                                    </para></listitem>
+                                <listitem><para><emphasis><filename>${BP}</filename> -</emphasis>
+                                    <filename>${<link linkend='var-BPN'>BPN</link>}-${PV}</filename>.
+                                    The base recipe name and version but without
+                                    any special package name suffix.
+                                    </para></listitem>
+                                <listitem><para><emphasis>files -</emphasis>
+                                    Files within a directory, which is named
+                                    <filename>files</filename> and is also
+                                    alongside the recipe or append file.
+                                    </para></listitem>
+                            </itemizedlist>
+                            <note>
+                                If you want the build system to pick up files
+                                specified through a
+                                <filename>SRC_URI</filename>
+                                statement from your append file, you need to be
+                                sure to extend the
+                                <filename>FILESPATH</filename>
+                                variable by also using the
+                                <link linkend='var-FILESEXTRAPATHS'><filename>FILESEXTRAPATHS</filename></link>
+                                variable from within your append file.
+                            </note>
+                            </para></listitem>
+                        <listitem><para><emphasis><filename>bzr://</filename> -</emphasis> Fetches files from a
+                            Bazaar revision control repository.</para></listitem>
+                        <listitem><para><emphasis><filename>git://</filename> -</emphasis> Fetches files from a
+                            Git revision control repository.</para></listitem>
+                        <listitem><para><emphasis><filename>osc://</filename> -</emphasis> Fetches files from
+                            an OSC (OpenSUSE Build service) revision control repository.</para></listitem>
+                        <listitem><para><emphasis><filename>repo://</filename> -</emphasis> Fetches files from
+                            a repo (Git) repository.</para></listitem>
+                        <listitem><para><emphasis><filename>ccrc://</filename> -</emphasis>
+                            Fetches files from a ClearCase repository.
+                            </para></listitem>
+                        <listitem><para><emphasis><filename>http://</filename> -</emphasis> Fetches files from
+                            the Internet using <filename>http</filename>.</para></listitem>
+                        <listitem><para><emphasis><filename>https://</filename> -</emphasis> Fetches files
+                            from the Internet using <filename>https</filename>.</para></listitem>
+                        <listitem><para><emphasis><filename>ftp://</filename> -</emphasis> Fetches files
+                            from the Internet using <filename>ftp</filename>.</para></listitem>
+                        <listitem><para><emphasis><filename>cvs://</filename> -</emphasis> Fetches files from
+                            a CVS revision control repository.</para></listitem>
+                        <listitem><para><emphasis><filename>hg://</filename> -</emphasis> Fetches files from
+                            a Mercurial (<filename>hg</filename>) revision control repository.</para></listitem>
+                        <listitem><para><emphasis><filename>p4://</filename> -</emphasis> Fetches files from
+                            a Perforce (<filename>p4</filename>) revision control repository.</para></listitem>
+                        <listitem><para><emphasis><filename>ssh://</filename> -</emphasis> Fetches files from
+                            a secure shell.</para></listitem>
+                        <listitem><para><emphasis><filename>svn://</filename> -</emphasis> Fetches files from
+                            a Subversion (<filename>svn</filename>) revision control repository.</para></listitem>
+                        <listitem><para><emphasis><filename>npm://</filename> -</emphasis> Fetches JavaScript
+                            modules from a registry.
+                            </para></listitem>
+                    </itemizedlist>
+                </para>
+
+                <para>
+                    Standard and recipe-specific options for <filename>SRC_URI</filename> exist.
+                    Here are standard options:
+                    <itemizedlist>
+                        <listitem><para><emphasis><filename>apply</filename> -</emphasis> Whether to apply
+                            the patch or not.
+                            The default action is to apply the patch.</para></listitem>
+                        <listitem><para><emphasis><filename>striplevel</filename> -</emphasis> Which
+                            striplevel to use when applying the patch.
+                            The default level is 1.</para></listitem>
+                        <listitem><para><emphasis><filename>patchdir</filename> -</emphasis> Specifies
+                            the directory in which the patch should be applied.
+                            The default is <filename>${</filename><link linkend='var-S'><filename>S</filename></link><filename>}</filename>.
+                            </para></listitem>
+                    </itemizedlist>
+                </para>
+
+                <para>
+                    Here are options specific to recipes building code from a revision control system:
+                    <itemizedlist>
+                        <listitem><para><emphasis><filename>mindate</filename> -</emphasis>
+                            Apply the patch only if
+                            <link linkend='var-SRCDATE'><filename>SRCDATE</filename></link>
+                            is equal to or greater than <filename>mindate</filename>.
+                            </para></listitem>
+                        <listitem><para><emphasis><filename>maxdate</filename> -</emphasis>
+                            Apply the patch only if <filename>SRCDATE</filename>
+                            is not later than <filename>maxdate</filename>.
+                            </para></listitem>
+                        <listitem><para><emphasis><filename>minrev</filename> -</emphasis>
+                            Apply the patch only if <filename>SRCREV</filename>
+                            is equal to or greater than <filename>minrev</filename>.
+                            </para></listitem>
+                        <listitem><para><emphasis><filename>maxrev</filename> -</emphasis>
+                            Apply the patch only if <filename>SRCREV</filename>
+                            is not later than <filename>maxrev</filename>.
+                            </para></listitem>
+                        <listitem><para><emphasis><filename>rev</filename> -</emphasis>
+                            Apply the patch only if <filename>SRCREV</filename>
+                            is equal to <filename>rev</filename>.
+                            </para></listitem>
+                        <listitem><para><emphasis><filename>notrev</filename> -</emphasis>
+                            Apply the patch only if <filename>SRCREV</filename>
+                            is not equal to <filename>rev</filename>.
+                            </para></listitem>
+                    </itemizedlist>
+                </para>
+
+                <para>
+                    Here are some additional options worth mentioning:
+                    <itemizedlist>
+                        <listitem><para><emphasis><filename>unpack</filename> -</emphasis> Controls
+                            whether or not to unpack the file if it is an archive.
+                            The default action is to unpack the file.</para></listitem>
+                        <listitem><para><emphasis><filename>destsuffix</filename> -</emphasis> Places the file
+                            (or extracts its contents) into the specified
+                            subdirectory of <link linkend='var-WORKDIR'><filename>WORKDIR</filename></link>
+                            when the Git fetcher is used.
+                            </para></listitem>
+                        <listitem><para><emphasis><filename>subdir</filename> -</emphasis> Places the file
+                            (or extracts its contents) into the specified
+                            subdirectory of <filename>WORKDIR</filename>
+                            when the local (<filename>file://</filename>)
+                            fetcher is used.
+                            </para></listitem>
+                        <listitem><para><emphasis><filename>localdir</filename> -</emphasis> Places the file
+                            (or extracts its contents) into the specified
+                            subdirectory of <filename>WORKDIR</filename> when
+                            the CVS fetcher is used.
+                            </para></listitem>
+                        <listitem><para><emphasis><filename>subpath</filename> -</emphasis>
+                            Limits the checkout to a specific subpath of the
+                            tree when using the Git fetcher is used.
+                            </para></listitem>
+                        <listitem><para><emphasis><filename>name</filename> -</emphasis> Specifies a
+                            name to be used for association with <filename>SRC_URI</filename> checksums
+                            when you have more than one file specified in <filename>SRC_URI</filename>.
+                            </para></listitem>
+                        <listitem><para><emphasis><filename>downloadfilename</filename> -</emphasis> Specifies
+                            the filename used when storing the downloaded file.</para></listitem>
+                    </itemizedlist>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SRC_URI_OVERRIDES_PACKAGE_ARCH'><glossterm>SRC_URI_OVERRIDES_PACKAGE_ARCH</glossterm>
+            <info>
+                SRC_URI_OVERRIDES_PACKAGE_ARCH[doc] = "By default, the OpenEmbedded build system automatically detects whether SRC_URI contains files that are machine-specific. If so, the build system automatically changes PACKAGE_ARCH. Setting this variable to '0' disables this behavior."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    By default, the OpenEmbedded build system automatically detects whether
+                    <filename><link linkend='var-SRC_URI'>SRC_URI</link></filename>
+                    contains files that are machine-specific.
+                    If so, the build system automatically changes
+                    <filename><link linkend='var-PACKAGE_ARCH'>PACKAGE_ARCH</link></filename>.
+                    Setting this variable to "0" disables this behavior.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SRCDATE'><glossterm>SRCDATE</glossterm>
+            <info>
+                SRCDATE[doc] = "The date of the source code used to build the package. This variable applies only if the source was fetched from a Source Code Manager (SCM)."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The date of the source code used to build the package.
+                    This variable applies only if the source was fetched from a Source Code Manager (SCM).
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SRCPV'><glossterm>SRCPV</glossterm>
+            <info>
+                SRCPV[doc] = "Returns the version string of the current package. This string is used to help define the value of PV."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Returns the version string of the current package.
+                    This string is used to help define the value of
+                    <link linkend='var-PV'><filename>PV</filename></link>.
+                </para>
+
+                <para>
+                    The <filename>SRCPV</filename> variable is defined in the
+                    <filename>meta/conf/bitbake.conf</filename> configuration
+                    file in the
+                    <link linkend='source-directory'>Source Directory</link>
+                    as follows:
+                    <literallayout class='monospaced'>
+     SRCPV = "${@bb.fetch2.get_srcrev(d)}"
+                    </literallayout>
+                </para>
+
+                <para>
+                    Recipes that need to define <filename>PV</filename> do so
+                    with the help of the <filename>SRCPV</filename>.
+                    For example, the <filename>ofono</filename> recipe
+                    (<filename>ofono_git.bb</filename>) located in
+                    <filename>meta/recipes-connectivity</filename> in the
+                    Source Directory defines <filename>PV</filename> as
+                    follows:
+                    <literallayout class='monospaced'>
+     PV = "0.12-git${SRCPV}"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SRCREV'><glossterm>SRCREV</glossterm>
+            <info>
+                SRCREV[doc] = "The revision of the source code used to build the package. This variable applies to Subversion, Git, Mercurial, and Bazaar only."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The revision of the source code used to build the package.
+                    This variable applies to Subversion, Git, Mercurial, and
+                    Bazaar only.
+                    Note that if you want to build a fixed revision and you
+                    want to avoid performing a query on the remote repository
+                    every time BitBake parses your recipe, you should specify
+                    a <filename>SRCREV</filename> that is a
+                    full revision identifier and not just a tag.
+                    <note>
+                        For information on limitations when inheriting the
+                        latest revision of software using
+                        <filename>SRCREV</filename>, see the
+                        <link linkend='var-AUTOREV'><filename>AUTOREV</filename></link>
+                        variable description and the
+                        "<ulink url='&YOCTO_DOCS_DEV_URL;#automatically-incrementing-a-binary-package-revision-number'>Automatically Incrementing a Binary Package Revision Number</ulink>"
+                        section, which is in the Yocto Project Development
+                        Tasks Manual.
+                    </note>
+                </para>
+
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SSTATE_DIR'><glossterm>SSTATE_DIR</glossterm>
+            <info>
+                SSTATE_DIR[doc] = "The directory for the shared state cache."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The directory for the shared state cache.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SSTATE_MIRROR_ALLOW_NETWORK'><glossterm>SSTATE_MIRROR_ALLOW_NETWORK</glossterm>
+            <info>
+                SSTATE_MIRROR_ALLOW_NETWORK[doc] = "If set to "1", allows fetches from mirrors that are specified in SSTATE_MIRRORS to work even when fetching from the network is disabled by setting BB_NO_NETWORK to "1"."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    If set to "1", allows fetches from
+                    mirrors that are specified in
+                    <link linkend='var-SSTATE_MIRRORS'><filename>SSTATE_MIRRORS</filename></link>
+                    to work even when fetching from the network is
+                    disabled by setting <filename>BB_NO_NETWORK</filename>
+                    to "1".
+                    Using the
+                    <filename>SSTATE_MIRROR_ALLOW_NETWORK</filename>
+                    variable is useful if you have set
+                    <filename>SSTATE_MIRRORS</filename> to point to an
+                    internal server for your shared state cache, but
+                    you want to disable any other fetching from the network.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SSTATE_MIRRORS'><glossterm>SSTATE_MIRRORS</glossterm>
+            <info>
+                SSTATE_MIRRORS[doc] = "Configures the OpenEmbedded build system to search other mirror locations for prebuilt cache data objects before building out the data. You can specify a filesystem directory or a remote URL such as HTTP or FTP."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Configures the OpenEmbedded build system to search other
+                    mirror locations for prebuilt cache data objects before
+                    building out the data.
+                    This variable works like fetcher
+                    <link linkend='var-MIRRORS'><filename>MIRRORS</filename></link>
+                    and <link linkend='var-PREMIRRORS'><filename>PREMIRRORS</filename></link>
+                    and points to the cache locations to check for the shared
+                    state (sstate) objects.
+                </para>
+
+                <para>
+                    You can specify a filesystem directory or a remote URL such
+                    as HTTP or FTP.
+                    The locations you specify need to contain the shared state
+                    cache (sstate-cache) results from previous builds.
+                    The sstate-cache you point to can also be from builds on
+                    other machines.
+                </para>
+
+                <para>
+                    When pointing to sstate build artifacts on another machine
+                    that uses a different GCC version for native builds,
+                    you must configure <filename>SSTATE_MIRRORS</filename>
+                    with a regular expression that maps local search paths
+                    to server paths.
+                    The paths need to take into account
+                    <link linkend='var-NATIVELSBSTRING'><filename>NATIVELSBSTRING</filename></link>
+                    set by the
+                    <link linkend='ref-classes-uninative'><filename>uninative</filename></link>
+                    class.
+                    For example, the following maps the local search path
+                    <filename>universal-4.9</filename> to the server-provided
+                    path <replaceable>server_url_sstate_path</replaceable>:
+                    <literallayout class='monospaced'>
+     SSTATE_MIRRORS ?= file://universal-4.9/(.*) http://<replaceable>server_url_sstate_path</replaceable>/universal-4.8/\1 \n
+                    </literallayout>
+                </para>
+
+                <para>
+                    If a mirror uses the same structure as
+                    <link linkend='var-SSTATE_DIR'><filename>SSTATE_DIR</filename></link>,
+                    you need to add
+                    "PATH" at the end as shown in the examples below.
+                    The build system substitutes the correct path within the
+                    directory structure.
+                    <literallayout class='monospaced'>
+     SSTATE_MIRRORS ?= "\
+     file://.* http://<replaceable>someserver</replaceable>.tld/share/sstate/PATH;downloadfilename=PATH \n \
+     file://.* file:///<replaceable>some-local-dir</replaceable>/sstate/PATH"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SSTATE_SCAN_FILES'><glossterm>SSTATE_SCAN_FILES</glossterm>
+            <info>
+                SSTATE_SCAN_FILES[doc] = "Controls the list of files the OpenEmbedded build system scans for hardcoded installation paths."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Controls the list of files the OpenEmbedded build system
+                    scans for hardcoded installation paths. The variable uses a
+                    space-separated list of filenames (not paths) with standard
+                    wildcard characters allowed.
+                </para>
+
+                <para>
+                    During a build, the OpenEmbedded build system creates a
+                    shared state (sstate) object during the first stage of
+                    preparing the sysroots. That object is scanned for
+                    hardcoded paths for original installation locations.
+                    The list of files that are scanned for paths is controlled
+                    by the <filename>SSTATE_SCAN_FILES</filename> variable.
+                    Typically, recipes add files they want to be scanned to the
+                    value of <filename>SSTATE_SCAN_FILES</filename> rather than
+                    the variable being comprehensively set. The
+                    <link linkend='ref-classes-sstate'><filename>sstate</filename></link>
+                    class specifies the default list of files.
+                </para>
+
+                <para>
+                    For details on the process, see the
+                    <link linkend='ref-classes-staging'><filename>staging</filename></link>
+                    class.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-STAGING_BASE_LIBDIR_NATIVE'><glossterm>STAGING_BASE_LIBDIR_NATIVE</glossterm>
+            <info>
+                STAGING_BASE_LIBDIR_NATIVE[doc] = "Specifies the path to the /lib subdirectory of the sysroot directory for the build host."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the path to the <filename>/lib</filename>
+                    subdirectory of the sysroot directory for the
+                    build host.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-STAGING_BASELIBDIR'><glossterm>STAGING_BASELIBDIR</glossterm>
+            <info>
+                STAGING_BASELIBDIR[doc] = "Specifies the path to the /lib subdirectory of the sysroot directory for the target for which the current recipe is being built (STAGING_DIR_HOST)."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the path to the <filename>/lib</filename>
+                    subdirectory of the sysroot directory for the target
+                    for which the current recipe is being built
+                    (<link linkend='var-STAGING_DIR_HOST'><filename>STAGING_DIR_HOST</filename></link>).
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-STAGING_BINDIR'><glossterm>STAGING_BINDIR</glossterm>
+            <info>
+                STAGING_BINDIR[doc] = "Specifies the path to the /usr/bin subdirectory of the sysroot directory for the target for which the current recipe is being built (STAGING_DIR_HOST)."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the path to the
+                    <filename>/usr/bin</filename> subdirectory of the
+                    sysroot directory for the target for which the current
+                    recipe is being built
+                    (<link linkend='var-STAGING_DIR_HOST'><filename>STAGING_DIR_HOST</filename></link>).
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-STAGING_BINDIR_CROSS'><glossterm>STAGING_BINDIR_CROSS</glossterm>
+            <info>
+                STAGING_BINDIR_CROSS[doc] = "Specifies the path to the directory containing binary configuration scripts. These scripts provide configuration information for other software that wants to make use of libraries or include files provided by the software associated with the script."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the path to the directory containing binary
+                    configuration scripts.
+                    These scripts provide configuration information for
+                    other software that wants to make use of libraries or
+                    include files provided by the software associated with
+                    the script.
+                    <note>
+                        This style of build configuration has been largely
+                        replaced by <filename>pkg-config</filename>.
+                        Consequently, if <filename>pkg-config</filename>
+                        is supported by the library to which you are linking,
+                        it is recommended you use
+                        <filename>pkg-config</filename> instead of a
+                        provided configuration script.
+                    </note>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-STAGING_BINDIR_NATIVE'><glossterm>STAGING_BINDIR_NATIVE</glossterm>
+            <info>
+                STAGING_BINDIR_NATIVE[doc] = "Specifies the path to the /usr/bin subdirectory of the sysroot directory for the build host."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the path to the
+                    <filename>/usr/bin</filename> subdirectory of the
+                    sysroot directory for the build host.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-STAGING_DATADIR'><glossterm>STAGING_DATADIR</glossterm>
+            <info>
+                STAGING_DATADIR[doc] = "Specifies the path to the /usr/share subdirectory of the sysroot directory for the target for which the current recipe is being built (STAGING_DIR_HOST)."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                     Specifies the path to the <filename>/usr/share</filename>
+                     subdirectory of the sysroot directory for the target
+                     for which the current recipe is being built
+                     (<link linkend='var-STAGING_DIR_HOST'><filename>STAGING_DIR_HOST</filename></link>).
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-STAGING_DATADIR_NATIVE'><glossterm>STAGING_DATADIR_NATIVE</glossterm>
+            <info>
+                STAGING_DATADIR_NATIVE[doc] = "Specifies the path to the /usr/share subdirectory of the sysroot directory for the build host."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the path to the <filename>/usr/share</filename>
+                    subdirectory of the sysroot directory for the build host.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-STAGING_DIR'><glossterm>STAGING_DIR</glossterm>
+            <info>
+                STAGING_DIR[doc] = "Helps construct the recipe-sysroots directory, which is used during packaging."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Helps construct the <filename>recipe-sysroots</filename>
+                    directory, which is used during packaging.
+                </para>
+
+                <para>
+                    For information on how staging for recipe-specific
+                    sysroots occurs, see the
+                    <link linkend='ref-tasks-populate_sysroot'><filename>do_populate_sysroot</filename></link>
+                    task, the
+                    "<ulink url='&YOCTO_DOCS_DEV_URL;#new-sharing-files-between-recipes'>Sharing Files Between Recipes</ulink>"
+                    section in the Yocto Project Development Tasks Manual, the
+                    "<ulink url='&YOCTO_DOCS_OM_URL;#configuration-compilation-and-staging-dev-environment'>Configuration, Compilation, and Staging</ulink>"
+                    section in the Yocto Project Overview and Concepts Manual,
+                    and the
+                    <link linkend='var-SYSROOT_DIRS'><filename>SYSROOT_DIRS</filename></link>
+                    variable.
+                    <note>
+                        Recipes should never write files directly under
+                        the <filename>STAGING_DIR</filename> directory because
+                        the OpenEmbedded build system
+                        manages the directory automatically.
+                        Instead, files should be installed to
+                        <filename>${</filename><link linkend='var-D'><filename>D</filename></link><filename>}</filename>
+                        within your recipe's
+                        <link linkend='ref-tasks-install'><filename>do_install</filename></link>
+                        task and then the OpenEmbedded build system will
+                        stage a subset of those files into the sysroot.
+                    </note>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-STAGING_DIR_HOST'><glossterm>STAGING_DIR_HOST</glossterm>
+            <info>
+                STAGING_DIR_HOST[doc] = "Specifies the path to the sysroot directory for the system that the component is built to run on."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the path to the sysroot directory for the system
+                    on which the component is built to run (the system that
+                    hosts the component).
+                    For most recipes, this sysroot is the one in which that
+                    recipe's
+                    <link linkend='ref-tasks-populate_sysroot'><filename>do_populate_sysroot</filename></link>
+                    task copies files.
+                    Exceptions include <filename>-native</filename> recipes,
+                    where the <filename>do_populate_sysroot</filename> task
+                    instead uses
+                    <link linkend='var-STAGING_DIR_NATIVE'><filename>STAGING_DIR_NATIVE</filename></link>.
+                    Depending on the type of recipe and the build target,
+                    <filename>STAGING_DIR_HOST</filename> can have the
+                    following values:
+                    <itemizedlist>
+                        <listitem><para>
+                            For recipes building for the target machine, the
+                            value is
+                            "${<link linkend='var-STAGING_DIR'>STAGING_DIR</link>}/${<link linkend='var-MACHINE'>MACHINE</link>}".
+                            </para></listitem>
+                        <listitem><para>
+                            For native recipes building for the build host, the
+                            value is empty given the assumption that when
+                            building for the build host, the build host's own
+                            directories should be used.
+                            <note>
+                                <para><filename>-native</filename> recipes are
+                                not installed into host paths like such as
+                                <filename>/usr</filename>.
+                                Rather, these recipes are installed into
+                                <filename>STAGING_DIR_NATIVE</filename>.
+                                When compiling <filename>-native</filename>
+                                recipes, standard build environment variables
+                                such as
+                                <link linkend='var-CPPFLAGS'><filename>CPPFLAGS</filename></link>
+                                and
+                                <link linkend='var-CFLAGS'><filename>CFLAGS</filename></link>
+                                are set up so that both host paths and
+                                <filename>STAGING_DIR_NATIVE</filename> are
+                                searched for libraries and headers using, for
+                                example, GCC's <filename>-isystem</filename>
+                                option.</para>
+
+                                <para>Thus, the emphasis is that the
+                                <filename>STAGING_DIR*</filename> variables
+                                should be viewed as input variables by tasks
+                                such as
+                                <link linkend='ref-tasks-configure'><filename>do_configure</filename></link>,
+                                <link linkend='ref-tasks-compile'><filename>do_compile</filename></link>,
+                                and
+                                <link linkend='ref-tasks-install'><filename>do_install</filename></link>.
+                                Having the real system root correspond to
+                                <filename>STAGING_DIR_HOST</filename> makes
+                                conceptual sense for
+                                <filename>-native</filename> recipes, as
+                                they make use of host headers and libraries.
+                                </para>
+                            </note>
+                            </para></listitem>
+                    </itemizedlist>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-STAGING_DIR_NATIVE'><glossterm>STAGING_DIR_NATIVE</glossterm>
+            <info>
+                STAGING_DIR_NATIVE[doc] = "Specifies the path to the sysroot directory used when building components that run on the build host itself."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the path to the sysroot directory used when
+                    building components that run on the build host itself.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-STAGING_DIR_TARGET'><glossterm>STAGING_DIR_TARGET</glossterm>
+            <info>
+                STAGING_DIR_TARGET[doc] = "Specifies the path to the sysroot used for the system for which the component generates code."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the path to the sysroot used for the system for
+                    which the component generates code.
+                    For components that do not generate code, which is the
+                    majority, <filename>STAGING_DIR_TARGET</filename> is set
+                    to match
+                    <link linkend='var-STAGING_DIR_HOST'><filename>STAGING_DIR_HOST</filename></link>.
+                </para>
+
+                <para>
+                    Some recipes build binaries that can run on the target
+                    system but those binaries in turn generate code for
+                    another different system (e.g. cross-canadian recipes).
+                    Using terminology from GNU, the primary system is referred
+                    to as the "HOST" and the secondary, or different, system is
+                    referred to as the "TARGET".
+                    Thus, the binaries run on the "HOST" system
+                    and generate binaries for the "TARGET" system.
+                    The <filename>STAGING_DIR_HOST</filename> variable points
+                    to the sysroot used for the "HOST" system, while
+                    <filename>STAGING_DIR_TARGET</filename>
+                    points to the sysroot used for the "TARGET" system.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-STAGING_ETCDIR_NATIVE'><glossterm>STAGING_ETCDIR_NATIVE</glossterm>
+            <info>
+                STAGING_ETCDIR_NATIVE[doc] = "Specifies the path to the /etc subdirectory of the sysroot directory for the build host."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the path to the <filename>/etc</filename>
+                    subdirectory of the sysroot directory for the
+                    build host.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-STAGING_EXECPREFIXDIR'><glossterm>STAGING_EXECPREFIXDIR</glossterm>
+            <info>
+                STAGING_EXECPREFIXDIR[doc] = "Specifies the path to the /usr subdirectory of the sysroot directory for the target for which the current recipe is being built (STAGING_DIR_HOST)."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the path to the <filename>/usr</filename>
+                    subdirectory of the sysroot directory for the target
+                    for which the current recipe is being built
+                    (<link linkend='var-STAGING_DIR_HOST'><filename>STAGING_DIR_HOST</filename></link>).
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-STAGING_INCDIR'><glossterm>STAGING_INCDIR</glossterm>
+            <info>
+                STAGING_INCDIR[doc] = "Specifies the path to the /usr/include subdirectory of the sysroot directory for the target for which the current recipe being built (STAGING_DIR_HOST)."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the path to the
+                    <filename>/usr/include</filename> subdirectory of the
+                    sysroot directory for the target for which the current
+                    recipe being built
+                    (<link linkend='var-STAGING_DIR_HOST'><filename>STAGING_DIR_HOST</filename></link>).
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-STAGING_INCDIR_NATIVE'><glossterm>STAGING_INCDIR_NATIVE</glossterm>
+            <info>
+                STAGING_INCDIR_NATIVE[doc] = "Specifies the path to the /usr/include subdirectory of the sysroot directory for the build host."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the path to the <filename>/usr/include</filename>
+                    subdirectory of the sysroot directory for the build host.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-STAGING_KERNEL_BUILDDIR'><glossterm>STAGING_KERNEL_BUILDDIR</glossterm>
+            <info>
+                STAGING_KERNEL_BUILDDIR[doc] = "Points to the directory containing the kernel build artifacts."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Points to the directory containing the kernel build
+                    artifacts.
+                    Recipes building software that needs to access kernel
+                    build artifacts
+                    (e.g. <filename>systemtap-uprobes</filename>) can look in
+                    the directory specified with the
+                    <filename>STAGING_KERNEL_BUILDDIR</filename> variable to
+                    find these artifacts after the kernel has been built.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-STAGING_KERNEL_DIR'><glossterm>STAGING_KERNEL_DIR</glossterm>
+            <info>
+                STAGING_KERNEL_DIR[doc] = "The directory with kernel headers that are required to build out-of-tree modules."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The directory with kernel headers that are required to build out-of-tree
+                    modules.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-STAGING_LIBDIR'><glossterm>STAGING_LIBDIR</glossterm>
+            <info>
+                STAGING_LIBDIR[doc] = "Specifies the path to the /usr/lib subdirectory of the sysroot directory for the target for which the current recipe is being built (STAGING_DIR_HOST)."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the path to the <filename>/usr/lib</filename>
+                    subdirectory of the sysroot directory for the target for
+                    which the current recipe is being built
+                    (<link linkend='var-STAGING_DIR_HOST'><filename>STAGING_DIR_HOST</filename></link>).
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-STAGING_LIBDIR_NATIVE'><glossterm>STAGING_LIBDIR_NATIVE</glossterm>
+            <info>
+                STAGING_LIBDIR_NATIVE[doc] = "Specifies the path to the /usr/lib subdirectory of the sysroot directory for the build host."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the path to the <filename>/usr/lib</filename>
+                    subdirectory of the sysroot directory for the build host.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-STAMP'><glossterm>STAMP</glossterm>
+            <info>
+                STAMP[doc] = "Specifies the base path used to create recipe stamp files. The path to an actual stamp file is constructed by evaluating this string and then appending additional information."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the base path used to create recipe stamp files.
+                    The path to an actual stamp file is constructed by evaluating this
+                    string and then appending additional information.
+                    Currently, the default assignment for <filename>STAMP</filename>
+                    as set in the <filename>meta/conf/bitbake.conf</filename> file
+                    is:
+                    <literallayout class='monospaced'>
+     STAMP = "${STAMPS_DIR}/${MULTIMACH_TARGET_SYS}/${PN}/${EXTENDPE}${PV}-${PR}"
+                    </literallayout>
+                </para>
+
+                <para>
+                    For information on how BitBake uses stamp files to determine
+                    if a task should be rerun, see the
+                    "<ulink url='&YOCTO_DOCS_OM_URL;#stamp-files-and-the-rerunning-of-tasks'>Stamp Files and the Rerunning of Tasks</ulink>"
+                    section in the Yocto Project Overview and Concepts Manual.
+                </para>
+
+                <para>
+                    See <link linkend='var-STAMPS_DIR'><filename>STAMPS_DIR</filename></link>,
+                    <link linkend='var-MULTIMACH_TARGET_SYS'><filename>MULTIMACH_TARGET_SYS</filename></link>,
+                    <link linkend='var-PN'><filename>PN</filename></link>,
+                    <link linkend='var-EXTENDPE'><filename>EXTENDPE</filename></link>,
+                    <link linkend='var-PV'><filename>PV</filename></link>, and
+                    <link linkend='var-PR'><filename>PR</filename></link> for related variable
+                    information.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-STAMPS_DIR'><glossterm>STAMPS_DIR</glossterm>
+            <info>
+                STAMPS_DIR[doc] = "Specifies the base directory in which the OpenEmbedded build system places stamps."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the base directory in which the OpenEmbedded
+                    build system places stamps.
+                    The default directory is
+                    <filename>${TMPDIR}/stamps</filename>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-STRIP'><glossterm>STRIP</glossterm>
+            <info>
+                STRIP[doc] = "Minimal command and arguments to run 'strip' (strip symbols)."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The minimal command and arguments to run
+                    <filename>strip</filename>, which is used to strip
+                    symbols.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SUMMARY'><glossterm>SUMMARY</glossterm>
+            <info>
+                SUMMARY[doc] = "The short (80 characters or less) summary of the binary package for packaging systems such as opkg, rpm, or dpkg. By default, SUMMARY is used to define the DESCRIPTION variable if DESCRIPTION is not set in the recipe."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The short (72 characters or less) summary of the binary package for packaging
+                    systems such as <filename>opkg</filename>, <filename>rpm</filename>, or
+                    <filename>dpkg</filename>.
+                    By default, <filename>SUMMARY</filename> is used to define
+                    the <link linkend='var-DESCRIPTION'><filename>DESCRIPTION</filename></link>
+                    variable if <filename>DESCRIPTION</filename> is not set
+                    in the recipe.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SVNDIR'><glossterm>SVNDIR</glossterm>
+            <info>
+                SVNDIR[doc] = "The directory where Subversion checkouts are stored."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The directory in which files checked out of a Subversion
+                    system are stored.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SYSLINUX_DEFAULT_CONSOLE'><glossterm>SYSLINUX_DEFAULT_CONSOLE</glossterm>
+            <info>
+                SYSLINUX_DEFAULT_CONSOLE[doc] = "Specifies the kernel boot default console."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the kernel boot default console.
+                    If you want to use a console other than the default,
+                    set this variable in your recipe as follows where "X" is
+                    the console number you want to use:
+                    <literallayout class='monospaced'>
+     SYSLINUX_DEFAULT_CONSOLE = "console=ttyX"
+                    </literallayout>
+                </para>
+
+                <para>
+                    The
+                    <link linkend='ref-classes-syslinux'><filename>syslinux</filename></link>
+                    class initially sets this variable to null but then checks
+                    for a value later.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SYSLINUX_OPTS'><glossterm>SYSLINUX_OPTS</glossterm>
+            <info>
+                SYSLINUX_OPTS[doc] = "Lists additional options to add to the syslinux file."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Lists additional options to add to the syslinux file.
+                    You need to set this variable in your recipe.
+                    If you want to list multiple options, separate the options
+                    with a semicolon character (<filename>;</filename>).
+                </para>
+
+                <para>
+                    The
+                    <link linkend='ref-classes-syslinux'><filename>syslinux</filename></link>
+                    class uses this variable to create a set of options.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SYSLINUX_SERIAL'><glossterm>SYSLINUX_SERIAL</glossterm>
+            <info>
+                SYSLINUX_SERIAL[doc] = "Specifies the alternate serial port or turns it off."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the alternate serial port or turns it off.
+                    To turn off serial, set this variable to an empty string
+                    in your recipe.
+                    The variable's default value is set in the
+                    <link linkend='ref-classes-syslinux'><filename>syslinux</filename></link>
+                    class as follows:
+                    <literallayout class='monospaced'>
+     SYSLINUX_SERIAL ?= "0 115200"
+                    </literallayout>
+                </para>
+
+                <para>
+                    The class checks for and uses the variable as needed.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SYSLINUX_SPLASH'><glossterm>SYSLINUX_SPLASH</glossterm>
+            <info>
+                SYSLINUX_SPLASH[doc] = "An .LSS file used as the background for the VGA boot menu when you use the boot menu."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    An <filename>.LSS</filename> file used as the background
+                    for the VGA boot menu when you use the boot menu.
+                    You need to set this variable in your recipe.
+                </para>
+
+                <para>
+                    The
+                    <link linkend='ref-classes-syslinux'><filename>syslinux</filename></link>
+                    class checks for this variable and if found, the
+                    OpenEmbedded build system installs the splash screen.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SYSLINUX_SERIAL_TTY'><glossterm>SYSLINUX_SERIAL_TTY</glossterm>
+            <info>
+                SYSLINUX_SERIAL_TTY[doc] = "Specifies the alternate console=tty... kernel boot argument."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the alternate console=tty... kernel boot argument.
+                    The variable's default value is set in the
+                    <link linkend='ref-classes-syslinux'><filename>syslinux</filename></link>
+                    class as follows:
+                    <literallayout class='monospaced'>
+     SYSLINUX_SERIAL_TTY ?= "console=ttyS0,115200"
+                    </literallayout>
+                </para>
+
+                <para>
+                    The class checks for and uses the variable as needed.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SYSROOT_DESTDIR'><glossterm>SYSROOT_DESTDIR</glossterm>
+            <info>
+                SYSROOT_DESTDIR[doc] = "Points to the temporary work directory (default ${WORKDIR}/sysroot-destdir) where the files populated into the sysroot are assembled during the do_populate_sysroot task."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Points to the temporary directory under the work directory
+                    (default
+                    "<filename>${</filename><link linkend='var-WORKDIR'><filename>WORKDIR</filename></link><filename>}/sysroot-destdir</filename>")
+                    where the files populated into the sysroot are assembled
+                    during the
+                    <link linkend='ref-tasks-populate_sysroot'><filename>do_populate_sysroot</filename></link>
+                    task.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SYSROOT_DIRS'><glossterm>SYSROOT_DIRS</glossterm>
+            <info>
+                SYSROOT_DIRS[doc] = "Directories that are staged into the sysroot by the do_populate_sysroot task."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Directories that are staged into the sysroot by the
+                    <link linkend='ref-tasks-populate_sysroot'><filename>do_populate_sysroot</filename></link>
+                    task.
+                    By default, the following directories are staged:
+                    <literallayout class='monospaced'>
+     SYSROOT_DIRS = " \
+         ${includedir} \
+         ${libdir} \
+         ${base_libdir} \
+         ${nonarch_base_libdir} \
+         ${datadir} \
+     "
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SYSROOT_DIRS_BLACKLIST'><glossterm>SYSROOT_DIRS_BLACKLIST</glossterm>
+            <info>
+                SYSROOT_DIRS_BLACKLIST[doc] = "Directories that are not staged into the sysroot by the do_populate_sysroot task."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Directories that are not staged into the sysroot by the
+                    <link linkend='ref-tasks-populate_sysroot'><filename>do_populate_sysroot</filename></link>
+                    task.
+                    You can use this variable to exclude certain subdirectories
+                    of directories listed in
+                    <link linkend='var-SYSROOT_DIRS'><filename>SYSROOT_DIRS</filename></link>
+                    from staging.
+                    By default, the following directories are not staged:
+                    <literallayout class='monospaced'>
+     SYSROOT_DIRS_BLACKLIST = " \
+         ${mandir} \
+         ${docdir} \
+         ${infodir} \
+         ${datadir}/locale \
+         ${datadir}/applications \
+         ${datadir}/fonts \
+         ${datadir}/pixmaps \
+     "
+                     </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SYSROOT_DIRS_NATIVE'><glossterm>SYSROOT_DIRS_NATIVE</glossterm>
+            <info>
+                SYSROOT_DIRS_NATIVE[doc] = "Extra directories staged into the sysroot by the do_populate_sysroot task for -native recipes, in addition to those specified in SYSROOT_DIRS."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Extra directories staged into the sysroot by the
+                    <link linkend='ref-tasks-populate_sysroot'><filename>do_populate_sysroot</filename></link>
+                    task for <filename>-native</filename> recipes, in addition
+                    to those specified in
+                    <link linkend='var-SYSROOT_DIRS'><filename>SYSROOT_DIRS</filename></link>.
+                    By default, the following extra directories are staged:
+                    <literallayout class='monospaced'>
+     SYSROOT_DIRS_NATIVE = " \
+         ${bindir} \
+         ${sbindir} \
+         ${base_bindir} \
+         ${base_sbindir} \
+         ${libexecdir} \
+         ${sysconfdir} \
+         ${localstatedir} \
+     "
+                    </literallayout>
+                    <note>
+                        Programs built by <filename>-native</filename> recipes
+                        run directly from the sysroot
+                        (<link linkend='var-STAGING_DIR_NATIVE'><filename>STAGING_DIR_NATIVE</filename></link>),
+                        which is why additional directories containing program
+                        executables and supporting files need to be staged.
+                    </note>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SYSROOT_PREPROCESS_FUNCS'><glossterm>SYSROOT_PREPROCESS_FUNCS</glossterm>
+            <info>
+                SYSROOT_PREPROCESS_FUNCS[doc] = "A list of functions to execute after files are staged into the sysroot. These functions are usually used to apply additional processing on the staged files, or to stage additional files."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A list of functions to execute after files are staged into
+                    the sysroot.
+                    These functions are usually used to apply additional
+                    processing on the staged files, or to stage additional
+                    files.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SYSTEMD_AUTO_ENABLE'><glossterm>SYSTEMD_AUTO_ENABLE</glossterm>
+            <info>
+                SYSTEMD_AUTO_ENABLE[doc] = "For recipes that inherit the systemd class, this variable specifies whether the specified service in SYSTEMD_SERVICE should start automatically or not."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When inheriting the
+                    <link linkend='ref-classes-systemd'><filename>systemd</filename></link>
+                    class, this variable specifies whether the specified service
+                    in
+                    <link linkend='var-SYSTEMD_SERVICE'><filename>SYSTEMD_SERVICE</filename></link>
+                    should start automatically or not.
+                    By default, the service is enabled to automatically start
+                    at boot time.
+                    The default setting is in the
+                    <link linkend='ref-classes-systemd'><filename>systemd</filename></link>
+                    class as follows:
+                    <literallayout class='monospaced'>
+     SYSTEMD_AUTO_ENABLE ??= "enable"
+                    </literallayout>
+                </para>
+
+                <para>
+                    You can disable the service by setting the variable to
+                    "disable".
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SYSTEMD_BOOT_CFG'><glossterm>SYSTEMD_BOOT_CFG</glossterm>
+            <info>
+                SYSTEMD_BOOT_CFG[doc] = "When EFI_PROVIDER is set to "systemd-boot", the SYSTEMD_BOOT_CFG variable specifies the configuration file that should be used."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When
+                    <link linkend='var-EFI_PROVIDER'><filename>EFI_PROVIDER</filename></link>
+                    is set to "systemd-boot", the
+                    <filename>SYSTEMD_BOOT_CFG</filename> variable specifies the
+                    configuration file that should be used.
+                    By default, the
+                    <link linkend='ref-classes-systemd-boot'><filename>systemd-boot</filename></link>
+                    class sets the <filename>SYSTEMD_BOOT_CFG</filename> as
+                    follows:
+                    <literallayout class='monospaced'>
+     SYSTEMD_BOOT_CFG ?= "${<link linkend='var-S'>S</link>}/loader.conf"
+                    </literallayout>
+                </para>
+
+                <para>
+                    For information on Systemd-boot, see the
+                    <ulink url='http://www.freedesktop.org/wiki/Software/systemd/systemd-boot/'>Systemd-boot documentation</ulink>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SYSTEMD_BOOT_ENTRIES'><glossterm>SYSTEMD_BOOT_ENTRIES</glossterm>
+            <info>
+                SYSTEMD_BOOT_ENTRIES[doc] = "When EFI_PROVIDER is set to "systemd-boot", the SYSTEMD_BOOT_ENTRIES variable specifies a list of entry files (*.conf) to install that contain one boot entry per file."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When
+                    <link linkend='var-EFI_PROVIDER'><filename>EFI_PROVIDER</filename></link>
+                    is set to "systemd-boot", the
+                    <filename>SYSTEMD_BOOT_ENTRIES</filename> variable specifies
+                    a list of entry files
+                    (<filename>*.conf</filename>) to install that contain
+                    one boot entry per file.
+                    By default, the
+                    <link linkend='ref-classes-systemd-boot'><filename>systemd-boot</filename></link>
+                    class sets the <filename>SYSTEMD_BOOT_ENTRIES</filename> as
+                    follows:
+                    <literallayout class='monospaced'>
+     SYSTEMD_BOOT_ENTRIES ?= ""
+                    </literallayout>
+                </para>
+
+                <para>
+                    For information on Systemd-boot, see the
+                    <ulink url='http://www.freedesktop.org/wiki/Software/systemd/systemd-boot/'>Systemd-boot documentation</ulink>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SYSTEMD_BOOT_TIMEOUT'><glossterm>SYSTEMD_BOOT_TIMEOUT</glossterm>
+            <info>
+                SYSTEMD_BOOT_TIMEOUT[doc] = "When EFI_PROVIDER is set to "systemd-boot", the SYSTEMD_BOOT_TIMEOUT variable specifies the boot menu timeout in seconds."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When
+                    <link linkend='var-EFI_PROVIDER'><filename>EFI_PROVIDER</filename></link>
+                    is set to "systemd-boot", the
+                    <filename>SYSTEMD_BOOT_TIMEOUT</filename> variable specifies
+                    the boot menu timeout in seconds.
+                    By default, the
+                    <link linkend='ref-classes-systemd-boot'><filename>systemd-boot</filename></link>
+                    class sets the <filename>SYSTEMD_BOOT_TIMEOUT</filename> as
+                    follows:
+                    <literallayout class='monospaced'>
+     SYSTEMD_BOOT_TIMEOUT ?= "10"
+                    </literallayout>
+                </para>
+
+                <para>
+                    For information on Systemd-boot, see the
+                    <ulink url='http://www.freedesktop.org/wiki/Software/systemd/systemd-boot/'>Systemd-boot documentation</ulink>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SYSTEMD_PACKAGES'><glossterm>SYSTEMD_PACKAGES</glossterm>
+            <info>
+                SYSTEMD_PACKAGES[doc] = "For recipes that inherit the systemd class, this variable locates the systemd unit files when they are not found in the main recipe's package."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When inheriting the
+                    <link linkend='ref-classes-systemd'><filename>systemd</filename></link>
+                    class, this variable locates the systemd unit files when
+                    they are not found in the main recipe's package.
+                    By default, the
+                    <filename>SYSTEMD_PACKAGES</filename> variable is set
+                    such that the systemd unit files are assumed to reside in
+                    the recipes main package:
+                    <literallayout class='monospaced'>
+     SYSTEMD_PACKAGES ?= "${PN}"
+                    </literallayout>
+                </para>
+
+                <para>
+                    If these unit files are not in this recipe's main
+                    package, you need to use
+                    <filename>SYSTEMD_PACKAGES</filename> to list the package
+                    or packages in which the build system can find the systemd
+                    unit files.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SYSTEMD_SERVICE'><glossterm>SYSTEMD_SERVICE</glossterm>
+            <info>
+                SYSTEMD_SERVICE[doc] = "For recipes that inherit the systemd class, this variable specifies the systemd service name for a package."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When inheriting the
+                    <link linkend='ref-classes-systemd'><filename>systemd</filename></link>
+                    class, this variable specifies the systemd service name for
+                    a package.
+                </para>
+
+                <para>
+                    When you specify this file in your recipe, use a package
+                    name override to indicate the package to which the value
+                    applies.
+                    Here is an example from the connman recipe:
+                    <literallayout class='monospaced'>
+     SYSTEMD_SERVICE_${PN} = "connman.service"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SYSVINIT_ENABLED_GETTYS'><glossterm>SYSVINIT_ENABLED_GETTYS</glossterm>
+            <info>
+                SYSVINIT_ENABLED_GETTYS[doc] = "Specifies which virtual terminals should run a getty, the default is '1'."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When using
+                    <ulink url='&YOCTO_DOCS_DEV_URL;#new-recipe-enabling-system-services'>SysVinit</ulink>,
+                    specifies a space-separated list of the virtual terminals
+                    that should run a
+                    <ulink url='http://en.wikipedia.org/wiki/Getty_%28Unix%29'>getty</ulink>
+                    (allowing login), assuming
+                    <link linkend='var-USE_VT'><filename>USE_VT</filename></link>
+                    is not set to "0".
+                </para>
+
+                <para>
+                    The default value for
+                    <filename>SYSVINIT_ENABLED_GETTYS</filename> is "1"
+                    (i.e. only run a getty on the first virtual terminal).
+                </para>
+            </glossdef>
+        </glossentry>
+
+    </glossdiv>
+
+    <glossdiv id='var-glossary-t'><title>T</title>
+
+        <glossentry id='var-T'><glossterm>T</glossterm>
+            <info>
+                T[doc] = "This variable points to a directory were BitBake places temporary files, which consist mostly of task logs and scripts, when building a particular recipe."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    This variable points to a directory were BitBake places
+                    temporary files, which consist mostly of task logs and
+                    scripts, when building a particular recipe.
+                    The variable is typically set as follows:
+                    <literallayout class='monospaced'>
+     T = "${WORKDIR}/temp"
+                    </literallayout>
+                </para>
+
+                <para>
+                    The <link linkend='var-WORKDIR'><filename>WORKDIR</filename></link>
+                    is the directory into which BitBake unpacks and builds the
+                    recipe.
+                    The default <filename>bitbake.conf</filename> file sets this variable.</para>
+                    <para>The <filename>T</filename> variable is not to be confused with
+                    the <link linkend='var-TMPDIR'><filename>TMPDIR</filename></link> variable,
+                    which points to the root of the directory tree where BitBake
+                    places the output of an entire build.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TARGET_ARCH'><glossterm>TARGET_ARCH</glossterm>
+            <info>
+                TARGET_ARCH[doc] = "The architecture of the device being built. The OpenEmbedded build system supports the following architectures: arm, mips, ppc, x86, x86-64."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The target machine's architecture.
+                    The OpenEmbedded build system supports many
+                    architectures.
+                    Here is an example list of architectures supported.
+                    This list is by no means complete as the architecture
+                    is configurable:
+                    <literallayout class='monospaced'>
+     arm
+     i586
+     x86_64
+     powerpc
+     powerpc64
+     mips
+     mipsel
+                    </literallayout>
+                </para>
+
+                <para>
+                    For additional information on machine architectures, see
+                    the
+                    <link linkend='var-TUNE_ARCH'><filename>TUNE_ARCH</filename></link>
+                    variable.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TARGET_AS_ARCH'><glossterm>TARGET_AS_ARCH</glossterm>
+            <info>
+                TARGET_AS_ARCH[doc] = "Specifies architecture-specific assembler flags for the target system."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies architecture-specific assembler flags for the
+                    target system.
+                    <filename>TARGET_AS_ARCH</filename> is initialized from
+                    <link linkend='var-TUNE_ASARGS'><filename>TUNE_ASARGS</filename></link>
+                    by default in the BitBake configuration file
+                    (<filename>meta/conf/bitbake.conf</filename>):
+                    <literallayout class='monospaced'>
+     TARGET_AS_ARCH = "${TUNE_ASARGS}"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TARGET_CC_ARCH'><glossterm>TARGET_CC_ARCH</glossterm>
+            <info>
+                TARGET_CC_ARCH[doc] = "Specifies architecture-specific C compiler flags for the target system."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies architecture-specific C compiler flags for the
+                    target system.
+                    <filename>TARGET_CC_ARCH</filename> is initialized from
+                    <link linkend='var-TUNE_CCARGS'><filename>TUNE_CCARGS</filename></link>
+                    by default.
+                    <note>
+                        It is a common workaround to append
+                        <link linkend='var-LDFLAGS'><filename>LDFLAGS</filename></link>
+                        to <filename>TARGET_CC_ARCH</filename>
+                        in recipes that build software for the target that
+                        would not otherwise respect the exported
+                        <filename>LDFLAGS</filename> variable.
+                    </note>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TARGET_CC_KERNEL_ARCH'><glossterm>TARGET_CC_KERNEL_ARCH</glossterm>
+            <info>
+                TARGET_CC_KERNEL_ARCH[doc] = "This is a specific kernel compiler flag for a CPU or Application Binary Interface (ABI) tune."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    This is a specific kernel compiler flag for a CPU or
+                    Application Binary Interface (ABI) tune.
+                    The flag is used rarely and only for cases where a
+                    userspace
+                    <link linkend='var-TUNE_CCARGS'><filename>TUNE_CCARGS</filename></link>
+                    is not compatible with the kernel compilation.
+                    The <filename>TARGET_CC_KERNEL_ARCH</filename> variable
+                    allows the kernel (and associated modules) to use a
+                    different configuration.
+                    See the
+                    <filename>meta/conf/machine/include/arm/feature-arm-thumb.inc</filename>
+                    file in the
+                    <link linkend='source-directory'>Source Directory</link>
+                    for an example.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TARGET_CFLAGS'><glossterm>TARGET_CFLAGS</glossterm>
+            <info>
+                TARGET_CFLAGS[doc] = "Flags passed to the C compiler for the target system. This variable evaluates to the same as CFLAGS."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the flags to pass to the C compiler when building
+                    for the target.
+                    When building in the target context,
+                    <link linkend='var-CFLAGS'><filename>CFLAGS</filename></link>
+                    is set to the value of this variable by default.
+                </para>
+
+                <para>
+                    Additionally, the SDK's environment setup script sets
+                    the <filename>CFLAGS</filename> variable in the environment
+                    to the <filename>TARGET_CFLAGS</filename> value so that
+                    executables built using the SDK also have the flags
+                    applied.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TARGET_CPPFLAGS'><glossterm>TARGET_CPPFLAGS</glossterm>
+            <info>
+                TARGET_CPPFLAGS[doc] = "Specifies the flags to pass to the C pre-processor (i.e. to both the C and the C++ compilers) when building for the target."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the flags to pass to the C pre-processor
+                    (i.e. to both the C and the C++ compilers) when building
+                    for the target.
+                    When building in the target context,
+                    <link linkend='var-CPPFLAGS'><filename>CPPFLAGS</filename></link>
+                    is set to the value of this variable by default.
+                </para>
+
+                <para>
+                    Additionally, the SDK's environment setup script sets
+                    the <filename>CPPFLAGS</filename> variable in the
+                    environment to the <filename>TARGET_CPPFLAGS</filename>
+                    value so that executables built using the SDK also have
+                    the flags applied.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TARGET_CXXFLAGS'><glossterm>TARGET_CXXFLAGS</glossterm>
+            <info>
+                TARGET_CXXFLAGS[doc] = "Specifies the flags to pass to the C++ compiler when building for the target."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the flags to pass to the C++ compiler when
+                    building for the target.
+                    When building in the target context,
+                    <link linkend='var-CXXFLAGS'><filename>CXXFLAGS</filename></link>
+                    is set to the value of this variable by default.
+                </para>
+
+                <para>
+                    Additionally, the SDK's environment setup script sets
+                    the <filename>CXXFLAGS</filename> variable in the
+                    environment to the <filename>TARGET_CXXFLAGS</filename>
+                    value so that executables built using the SDK also have
+                    the flags applied.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TARGET_FPU'><glossterm>TARGET_FPU</glossterm>
+            <info>
+                TARGET_FPU[doc] = "Specifies the method for handling FPU code. For FPU-less targets, which include most ARM CPUs, the variable must be set to 'soft'. If not, the kernel emulation gets used, which results in a performance penalty."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the method for handling FPU code.
+                    For FPU-less targets, which include most ARM CPUs, the variable must be
+                    set to "soft".
+                    If not, the kernel emulation gets used, which results in a performance penalty.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TARGET_LD_ARCH'><glossterm>TARGET_LD_ARCH</glossterm>
+            <info>
+                TARGET_LD_ARCH[doc] = "Specifies architecture-specific linker flags for the target system."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies architecture-specific linker flags for the
+                    target system.
+                    <filename>TARGET_LD_ARCH</filename> is initialized from
+                    <link linkend='var-TUNE_LDARGS'><filename>TUNE_LDARGS</filename></link>
+                    by default in the BitBake configuration file
+                    (<filename>meta/conf/bitbake.conf</filename>):
+                    <literallayout class='monospaced'>
+     TARGET_LD_ARCH = "${TUNE_LDARGS}"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TARGET_LDFLAGS'><glossterm>TARGET_LDFLAGS</glossterm>
+            <info>
+                TARGET_LDFLAGS[doc] = "Specifies the flags to pass to the linker when building for the target."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the flags to pass to the linker when building
+                    for the target.
+                    When building in the target context,
+                    <link linkend='var-LDFLAGS'><filename>LDFLAGS</filename></link>
+                    is set to the value of this variable by default.
+                </para>
+
+                <para>
+                    Additionally, the SDK's environment setup script sets
+                    the
+                    <link linkend='var-LDFLAGS'><filename>LDFLAGS</filename></link>
+                    variable in the environment to the
+                    <filename>TARGET_LDFLAGS</filename> value so that
+                    executables built using the SDK also have the flags
+                    applied.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TARGET_OS'><glossterm>TARGET_OS</glossterm>
+            <info>
+                TARGET_OS[doc] = "Specifies the target's operating system."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the target's operating system.
+                    The variable can be set to "linux" for glibc-based systems
+                    (GNU C Library) and to "linux-musl" for musl libc.
+                    For ARM/EABI targets, "linux-gnueabi" and "linux-musleabi"
+                    possible values exist.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TARGET_PREFIX'><glossterm>TARGET_PREFIX</glossterm>
+            <info>
+                TARGET_PREFIX[doc] = "The prefix used for the toolchain binary target tools."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the prefix used for the toolchain binary target
+                    tools.
+                </para>
+
+                <para>
+                    Depending on the type of recipe and the build target,
+                    <filename>TARGET_PREFIX</filename> is set as follows:
+                    <itemizedlist>
+                        <listitem><para>
+                            For recipes building for the target machine,
+                            the value is
+                            "${<link linkend='var-TARGET_SYS'>TARGET_SYS</link>}-".
+                            </para></listitem>
+                        <listitem><para>
+                            For native recipes, the build system sets the
+                            variable to the value of
+                            <filename>BUILD_PREFIX</filename>.
+                            </para></listitem>
+                        <listitem><para>
+                            For native SDK recipes
+                            (<filename>nativesdk</filename>), the
+                            build system sets the variable to the value of
+                            <filename>SDK_PREFIX</filename>.
+                            </para></listitem>
+                    </itemizedlist>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TARGET_SYS'><glossterm>TARGET_SYS</glossterm>
+            <info>
+                TARGET_SYS[doc] = "The target system is comprised of TARGET_ARCH,TARGET_VENDOR and TARGET_OS."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the system, including the architecture and the
+                    operating system, for which the build is occurring in
+                    the context of the current recipe.
+                </para>
+
+                <para>
+                    The OpenEmbedded build system automatically sets this
+                    variable based on
+                    <link linkend='var-TARGET_ARCH'><filename>TARGET_ARCH</filename></link>,
+                    <link linkend='var-TARGET_VENDOR'><filename>TARGET_VENDOR</filename></link>,
+                    and
+                    <link linkend='var-TARGET_OS'><filename>TARGET_OS</filename></link>
+                    variables.
+                    <note>
+                        You do not need to set the
+                        <filename>TARGET_SYS</filename> variable yourself.
+                    </note>
+                </para>
+
+                <para>
+                    Consider these two examples:
+                    <itemizedlist>
+                        <listitem><para>
+                            Given a native recipe on a 32-bit, x86 machine
+                            running Linux, the value is "i686-linux".
+                            </para></listitem>
+                        <listitem><para>
+                            Given a recipe being built for a little-endian,
+                            MIPS target running Linux, the value might be
+                            "mipsel-linux".
+                            </para></listitem>
+                    </itemizedlist>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TARGET_VENDOR'><glossterm>TARGET_VENDOR</glossterm>
+            <info>
+                TARGET_VENDOR[doc] = "The name of the target vendor."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the name of the target vendor.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TCLIBC'><glossterm>TCLIBC</glossterm>
+            <info>
+                TCLIBC[doc] = "Specifies GNU standard C library (libc) variant to use during the build process. You can select 'glibc', 'musl' or 'newlib'."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the GNU standard C library
+                    (<filename>libc</filename>) variant to use during the
+                    build process.
+                    This variable replaces <filename>POKYLIBC</filename>,
+                    which is no longer supported.
+                </para>
+
+                <para>
+                    You can select "glibc", "musl", "newlib", or "baremetal"
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TCLIBCAPPEND'><glossterm>TCLIBCAPPEND</glossterm>
+            <info>
+                TCLIBCAPPEND[doc] = "Specifies a suffix appended to TMPDIR that identifies the libc variant for the build."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies a suffix to be appended onto the
+                    <link linkend='var-TMPDIR'><filename>TMPDIR</filename></link>
+                    value.
+                    The suffix identifies the <filename>libc</filename> variant
+                    for building.
+                    When you are building for multiple variants with the same
+                    <link linkend='build-directory'>Build Directory</link>,
+                    this mechanism ensures that output for different
+                    <filename>libc</filename> variants is kept separate to
+                    avoid potential conflicts.
+                </para>
+
+                <para>
+                    In the <filename>defaultsetup.conf</filename> file, the
+                    default value of <filename>TCLIBCAPPEND</filename> is
+                    "-${TCLIBC}".
+                    However, distros such as poky, which normally only support
+                    one <filename>libc</filename> variant, set
+                    <filename>TCLIBCAPPEND</filename> to "" in their distro
+                    configuration file resulting in no suffix being applied.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TCMODE'><glossterm>TCMODE</glossterm>
+            <info>
+                TCMODE[doc] = "Enables an external toolchain (where provided by an additional layer) if set to a value other than 'default'."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the toolchain selector.
+                    <filename>TCMODE</filename> controls the characteristics
+                    of the generated packages and images by telling the
+                    OpenEmbedded build system which toolchain profile to use.
+                    By default, the OpenEmbedded build system builds its own
+                    internal toolchain.
+                    The variable's default value is "default", which uses
+                    that internal toolchain.
+                    <note>
+                        If <filename>TCMODE</filename> is set to a value
+                        other than "default", then it is your responsibility
+                        to ensure that the toolchain is compatible with the
+                        default toolchain.
+                        Using older or newer versions of these components
+                        might cause build problems.
+                        See the Release Notes for the Yocto Project release
+                        for the specific components with which the toolchain
+                        must be compatible.
+                        To access the Release Notes, go to the
+                        <ulink url='&YOCTO_HOME_URL;/software-overview/downloads/'>Downloads</ulink>
+                        page on the Yocto Project website and click on the
+                        "RELEASE INFORMATION" link for the appropriate
+                        release.
+                    </note>
+                </para>
+
+                <para>
+                    The <filename>TCMODE</filename> variable is similar to
+                    <link linkend='var-TCLIBC'><filename>TCLIBC</filename></link>,
+                    which controls the variant of the GNU standard C library
+                    (<filename>libc</filename>) used during the build process:
+                    <filename>glibc</filename> or <filename>musl</filename>.
+                </para>
+
+                <para>
+                    With additional layers, it is possible to use a pre-compiled
+                    external toolchain.
+                    One example is the Sourcery G++ Toolchain.
+                    The support for this toolchain resides in the separate
+                    <trademark class='registered'>Mentor Graphics</trademark>
+                    <filename>meta-sourcery</filename> layer at
+                    <ulink url='http://github.com/MentorEmbedded/meta-sourcery/'></ulink>.
+                </para>
+
+                <para>
+                    The layer's <filename>README</filename> file contains
+                    information on how to use the Sourcery G++ Toolchain as
+                    an external toolchain.
+                    In summary, you must be sure to add the layer to your
+                    <filename>bblayers.conf</filename> file in front of the
+                    <filename>meta</filename> layer and then set the
+                    <filename>EXTERNAL_TOOLCHAIN</filename>
+                    variable in your <filename>local.conf</filename> file
+                    to the location in which you installed the toolchain.
+                </para>
+
+                <para>
+                    The fundamentals used for this example apply to any
+                    external toolchain.
+                    You can use <filename>meta-sourcery</filename> as a
+                    template for adding support for other external toolchains.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TEST_EXPORT_DIR'><glossterm>TEST_EXPORT_DIR</glossterm>
+            <info>
+                TEST_EXPORT_DIR[doc] = "The location the OpenEmbedded build system uses to export tests when the TEST_EXPORT_ONLY variable is set to "1"."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The location the OpenEmbedded build system uses to export
+                    tests when the
+                    <link linkend='var-TEST_EXPORT_ONLY'><filename>TEST_EXPORT_ONLY</filename></link>
+                    variable is set to "1".
+                </para>
+
+                <para>
+                    The <filename>TEST_EXPORT_DIR</filename> variable defaults
+                    to <filename>"${TMPDIR}/testimage/${PN}"</filename>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TEST_EXPORT_ONLY'><glossterm>TEST_EXPORT_ONLY</glossterm>
+            <info>
+                TEST_EXPORT_ONLY[doc] = "Specifies to export the tests only. Set this variable to "1" if you do not want to run the tests but you want them to be exported in a manner that you to run them outside of the build system."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies to export the tests only.
+                    Set this variable to "1" if you do not want to run the
+                    tests but you want them to be exported in a manner that
+                    you to run them outside of the build system.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TEST_LOG_DIR'><glossterm>TEST_LOG_DIR</glossterm>
+            <info>
+                TEST_LOG_DIR[doc] = "Holds the SSH log and the boot log for QEMU machines. The TEST_LOG_DIR variable defaults to "${WORKDIR}/testimage"."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Holds the SSH log and the boot log for QEMU machines.
+                    The <filename>TEST_LOG_DIR</filename> variable defaults
+                    to <filename>"${WORKDIR}/testimage"</filename>.
+                    <note>
+                        Actual test results reside in the task log
+                        (<filename>log.do_testimage</filename>), which is in
+                        the <filename>${WORKDIR}/temp/</filename> directory.
+                    </note>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TEST_POWERCONTROL_CMD'><glossterm>TEST_POWERCONTROL_CMD</glossterm>
+            <info>
+                TEST_POWERCONTROL_CMD[doc] = "For automated hardware testing, specifies the command to use to control the power of the target machine under test"
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    For automated hardware testing, specifies the command to
+                    use to control the power of the target machine under test.
+                    Typically, this command would point to a script that
+                    performs the appropriate action (e.g. interacting
+                    with a web-enabled power strip).
+                    The specified command should expect to receive as the last
+                    argument "off", "on" or "cycle" specifying to power off,
+                    on, or cycle (power off and then power on) the device,
+                    respectively.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TEST_POWERCONTROL_EXTRA_ARGS'><glossterm>TEST_POWERCONTROL_EXTRA_ARGS</glossterm>
+            <info>
+                TEST_POWERCONTROL_EXTRA_ARGS[doc] = "For automated hardware testing, specifies additional arguments to pass through to the command specified in TEST_POWERCONTROL_CMD"
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    For automated hardware testing, specifies additional
+                    arguments to pass through to the command specified in
+                    <link linkend='var-TEST_POWERCONTROL_CMD'><filename>TEST_POWERCONTROL_CMD</filename></link>.
+                    Setting <filename>TEST_POWERCONTROL_EXTRA_ARGS</filename>
+                    is optional.
+                    You can use it if you wish, for example, to separate the
+                    machine-specific and non-machine-specific parts of the
+                    arguments.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TEST_QEMUBOOT_TIMEOUT'><glossterm>TEST_QEMUBOOT_TIMEOUT</glossterm>
+            <info>
+                TEST_QEMUBOOT_TIMEOUT[doc] = "The time in seconds allowed for an image to boot before automated runtime tests begin to run against an image."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The time in seconds allowed for an image to boot before
+                    automated runtime tests begin to run against an
+                    image.
+                    The default timeout period to allow the boot process to
+                    reach the login prompt is 500 seconds.
+                    You can specify a different value in the
+                    <filename>local.conf</filename> file.
+                </para>
+
+                <para>
+                    For more information on testing images, see the
+                    "<ulink url='&YOCTO_DOCS_DEV_URL;#performing-automated-runtime-testing'>Performing Automated Runtime Testing</ulink>"
+                    section in the Yocto Project Development Tasks Manual.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TEST_SERIALCONTROL_CMD'><glossterm>TEST_SERIALCONTROL_CMD</glossterm>
+            <info>
+                TEST_SERIALCONTROL_CMD[doc] = "For automated hardware testing, specifies the command to use to connect to the serial console of the target machine under test."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    For automated hardware testing, specifies the command
+                    to use to connect to the serial console of the target
+                    machine under test.
+                    This command simply needs to connect to the serial console
+                    and forward that connection to standard input and output
+                    as any normal terminal program does.
+                </para>
+
+                <para>
+                    For example, to use the Picocom terminal program on
+                    serial device <filename>/dev/ttyUSB0</filename> at
+                    115200bps, you would set the variable as follows:
+                    <literallayout class='monospaced'>
+     TEST_SERIALCONTROL_CMD = "picocom /dev/ttyUSB0 -b 115200"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TEST_SERIALCONTROL_EXTRA_ARGS'><glossterm>TEST_SERIALCONTROL_EXTRA_ARGS</glossterm>
+            <info>
+                TEST_SERIALCONTROL_EXTRA_ARGS[doc] = "For automated hardware testing, specifies additional arguments to pass through to the command specified in TEST_SERIALCONTROL_CMD."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    For automated hardware testing, specifies additional
+                    arguments to pass through to the command specified in
+                    <link linkend='var-TEST_SERIALCONTROL_CMD'><filename>TEST_SERIALCONTROL_CMD</filename></link>.
+                    Setting <filename>TEST_SERIALCONTROL_EXTRA_ARGS</filename>
+                    is optional.
+                    You can use it if you wish, for example, to separate the
+                    machine-specific and non-machine-specific parts of the
+                    command.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TEST_SERVER_IP'><glossterm>TEST_SERVER_IP</glossterm>
+            <info>
+                TEST_SERVER_IP[doc] = "The IP address of the build machine (host machine). This IP address is usually automatically detected."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The IP address of the build machine (host machine).
+                    This IP address is usually automatically detected.
+                    However, if detection fails, this variable needs to be set
+                    to the IP address of the build machine (i.e. where
+                    the build is taking place).
+                    <note>
+                        The <filename>TEST_SERVER_IP</filename> variable
+                        is only used for a small number of tests such as
+                        the "dnf" test suite, which needs to download
+                        packages from
+                        <filename>WORKDIR/oe-rootfs-repo</filename>.
+                    </note>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TEST_TARGET'><glossterm>TEST_TARGET</glossterm>
+            <info>
+                TEST_TARGET[doc] = "For automated runtime testing, specifies the method of deploying the image and running tests on the target machine."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the target controller to use when running tests
+                    against a test image.
+                    The default controller to use is "qemu":
+                    <literallayout class='monospaced'>
+     TEST_TARGET = "qemu"
+                    </literallayout>
+                </para>
+
+                <para>
+                    A target controller is a class that defines how an
+                    image gets deployed on a target and how a target is started.
+                    A layer can extend the controllers by adding a module
+                    in the layer's <filename>/lib/oeqa/controllers</filename>
+                    directory and by inheriting the
+                    <filename>BaseTarget</filename> class, which is an abstract
+                    class that cannot be used as a value of
+                    <filename>TEST_TARGET</filename>.
+                </para>
+
+                <para>
+                    You can provide the following arguments with
+                    <filename>TEST_TARGET</filename>:
+                    <itemizedlist>
+                        <listitem><para><emphasis>"qemu":</emphasis>
+                            Boots a QEMU image and runs the tests.
+                            See the
+                            "<ulink url='&YOCTO_DOCS_DEV_URL;#qemu-image-enabling-tests'>Enabling Runtime Tests on QEMU</ulink>"
+                            section in the Yocto Project Development Tasks
+                            Manual for more information.
+                            </para></listitem>
+                        <listitem><para><emphasis>"simpleremote":</emphasis>
+                            Runs the tests on target hardware that is already
+                            up and running.
+                            The hardware can be on the network or it can be
+                            a device running an image on QEMU.
+                            You must also set
+                            <link linkend='var-TEST_TARGET_IP'><filename>TEST_TARGET_IP</filename></link>
+                            when you use "simpleremote".
+                            <note>
+                                This argument is defined in
+                                <filename>meta/lib/oeqa/controllers/simpleremote.py</filename>.
+                            </note>
+                            </para></listitem>
+                    </itemizedlist>
+                </para>
+
+                <para>
+                    For information on running tests on hardware, see the
+                    "<ulink url='&YOCTO_DOCS_DEV_URL;#hardware-image-enabling-tests'>Enabling Runtime Tests on Hardware</ulink>"
+                    section in the Yocto Project Development Tasks Manual.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TEST_TARGET_IP'><glossterm>TEST_TARGET_IP</glossterm>
+            <info>
+                TEST_TARGET_IP[doc] = "The IP address of your hardware under test."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The IP address of your hardware under test.
+                    The <filename>TEST_TARGET_IP</filename> variable has no
+                    effect when
+                    <link linkend='var-TEST_TARGET'><filename>TEST_TARGET</filename></link>
+                    is set to "qemu".
+                </para>
+
+                <para>
+                    When you specify the IP address, you can also include a
+                    port.
+                    Here is an example:
+                    <literallayout class='monospaced'>
+     TEST_TARGET_IP = "192.168.1.4:2201"
+                    </literallayout>
+                    Specifying a port is useful when SSH is started on a
+                    non-standard port or in cases when your hardware under test
+                    is behind a firewall or network that is not directly
+                    accessible from your host and you need to do port address
+                    translation.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TEST_SUITES'><glossterm>TEST_SUITES</glossterm>
+            <info>
+                TEST_SUITES[doc] = "An ordered list of tests (modules) to run against an image when performing automated runtime testing."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    An ordered list of tests (modules) to run against
+                    an image when performing automated runtime testing.
+                </para>
+
+                <para>
+                    The OpenEmbedded build system provides a core set of tests
+                    that can be used against images.
+                    <note>
+                        Currently, there is only support for running these tests
+                        under QEMU.
+                    </note>
+                    Tests include <filename>ping</filename>,
+                    <filename>ssh</filename>, <filename>df</filename> among
+                    others.
+                    You can add your own tests to the list of tests by
+                    appending <filename>TEST_SUITES</filename> as follows:
+                    <literallayout class='monospaced'>
+     TEST_SUITES_append = " <replaceable>mytest</replaceable>"
+                    </literallayout>
+                    Alternatively, you can provide the "auto" option to
+                    have all applicable tests run against the image.
+                    <literallayout class='monospaced'>
+     TEST_SUITES_append = " auto"
+                    </literallayout>
+                    Using this option causes the build system to automatically
+                    run tests that are applicable to the image.
+                    Tests that are not applicable are skipped.
+                </para>
+
+                <para>
+                    The order in which tests are run is important.
+                    Tests that depend on another test must appear later in the
+                    list than the test on which they depend.
+                    For example, if you append the list of tests with two
+                    tests (<filename>test_A</filename> and
+                    <filename>test_B</filename>) where
+                    <filename>test_B</filename> is dependent on
+                    <filename>test_A</filename>, then you must order the tests
+                    as follows:
+                    <literallayout class='monospaced'>
+     TEST_SUITES = " test_A test_B"
+                    </literallayout>
+                </para>
+
+                <para>
+                    For more information on testing images, see the
+                    "<ulink url='&YOCTO_DOCS_DEV_URL;#performing-automated-runtime-testing'>Performing Automated Runtime Testing</ulink>"
+                    section in the Yocto Project Development Tasks Manual.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TESTIMAGE_AUTO'><glossterm>TESTIMAGE_AUTO</glossterm>
+            <info>
+                TESTIMAGE_AUTO[doc] = "Enables automatic testing of an image once it is built."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Automatically runs the series of automated tests for
+                    images when an image is successfully built.
+                    Setting <filename>TESTIMAGE_AUTO</filename> to "1"
+                    causes any image that successfully builds to automatically
+                    boot under QEMU.
+                    Using the variable also adds in dependencies so that any
+                    SDK for which testing is requested is automatically built
+                    first.
+                </para>
+
+                <para>
+                    These tests are written in Python making use of the
+                    <filename>unittest</filename> module, and the majority of
+                    them run commands on the target system over
+                    <filename>ssh</filename>.
+                    You can set this variable to "1" in your
+                    <filename>local.conf</filename> file in the
+                    <link linkend='build-directory'>Build Directory</link>
+                    to have the OpenEmbedded build system automatically run
+                    these tests after an image successfully builds:
+                    <literallayout class='monospaced'>
+     TESTIMAGE_AUTO = "1"
+                    </literallayout>
+                    For more information on enabling, running, and writing
+                    these tests, see the
+                    "<ulink url='&YOCTO_DOCS_DEV_URL;#performing-automated-runtime-testing'>Performing Automated Runtime Testing</ulink>"
+                    section in the Yocto Project Development Tasks Manual and
+                    the
+                    "<link linkend='ref-classes-testimage*'><filename>testimage*.bbclass</filename></link>"
+                    section.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-THISDIR'><glossterm>THISDIR</glossterm>
+            <info>
+                THISDIR[doc] = "The directory in which the file BitBake is currently parsing is located."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The directory in which the file BitBake is currently
+                    parsing is located.
+                    Do not manually set this variable.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TIME'><glossterm>TIME</glossterm>
+            <info>
+                TIME[doc] = "The time the build was started using HMS format."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The time the build was started.
+                    Times appear using the hour, minute, and second (HMS)
+                    format (e.g. "140159" for one minute and fifty-nine
+                    seconds past 1400 hours).
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TMPDIR'><glossterm>TMPDIR</glossterm>
+            <info>
+                TMPDIR[doc] = "The temporary directory the OpenEmbedded build system uses when it does its work building images. By default, the TMPDIR variable is named tmp within the Build Directory."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    This variable is the base directory the OpenEmbedded
+                    build system uses for all build output and intermediate
+                    files (other than the shared state cache).
+                    By default, the <filename>TMPDIR</filename> variable points
+                    to <filename>tmp</filename> within the
+                    <link linkend='build-directory'>Build Directory</link>.
+                </para>
+
+                <para>
+                    If you want to establish this directory in a location other
+                    than the default, you can uncomment and edit the following
+                    statement in the
+                    <filename>conf/local.conf</filename> file in the
+                    <link linkend='source-directory'>Source Directory</link>:
+                    <literallayout class='monospaced'>
+     #TMPDIR = "${TOPDIR}/tmp"
+                    </literallayout>
+                    An example use for this scenario is to set
+                    <filename>TMPDIR</filename> to a local disk, which does
+                    not use NFS, while having the Build Directory use NFS.
+                </para>
+
+                <para>
+                    The filesystem used by <filename>TMPDIR</filename> must
+                    have standard filesystem semantics (i.e. mixed-case files
+                    are unique, POSIX file locking, and persistent inodes).
+                    Due to various issues with NFS and bugs in some
+                    implementations, NFS does not meet this minimum
+                    requirement.
+                    Consequently, <filename>TMPDIR</filename> cannot be on
+                    NFS.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TOOLCHAIN_HOST_TASK'><glossterm>TOOLCHAIN_HOST_TASK</glossterm>
+            <info>
+                TOOLCHAIN_HOST_TASK[doc] = "This variable lists packages the OpenEmbedded build system uses when building an SDK, which contains a cross-development environment."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    This variable lists packages the OpenEmbedded build system
+                    uses when building an SDK, which contains a
+                    cross-development environment.
+                    The packages specified by this variable are part of the
+                    toolchain set that runs on the
+                    <link linkend='var-SDKMACHINE'><filename>SDKMACHINE</filename></link>,
+                    and each package should usually have the prefix
+                    <filename>nativesdk-</filename>.
+                    For example, consider the following command when
+                    building an SDK:
+                    <literallayout class='monospaced'>
+     $ bitbake -c populate_sdk <replaceable>imagename</replaceable>
+                    </literallayout>
+                    In this case, a default list of packages is set in this
+                    variable, but you can add additional packages to the list.
+                    See the
+                    "<ulink url='&YOCTO_DOCS_SDK_URL;#sdk-adding-individual-packages'>Adding Individual Packages to the Standard SDK</ulink>"
+                    section in the Yocto Project Application Development and
+                    the Extensible Software Development Kit (eSDK) manual
+                    for more information.
+                </para>
+
+                <para>
+                    For background information on cross-development toolchains
+                    in the Yocto Project development environment, see the
+                    "<ulink url='&YOCTO_DOCS_OM_URL;#cross-development-toolchain-generation'>Cross-Development Toolchain Generation</ulink>"
+                    section in the Yocto Project Overview and Concepts Manual.
+                    For information on setting up a cross-development
+                    environment, see the
+                    <ulink url='&YOCTO_DOCS_SDK_URL;'>Yocto Project Application Development and the Extensible Software Development Kit (eSDK)</ulink>
+                    manual.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TOOLCHAIN_OUTPUTNAME'><glossterm>TOOLCHAIN_OUTPUTNAME</glossterm>
+            <info>
+                TOOLCHAIN_OUTPUTNAME[doc] = "Defines the name used for the toolchain output."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    This variable defines the name used for the toolchain
+                    output.
+                    The
+                    <link linkend='ref-classes-populate-sdk-*'><filename>populate_sdk_base</filename></link>
+                    class sets the
+                    <filename>TOOLCHAIN_OUTPUTNAME</filename> variable as
+                    follows:
+                    <literallayout class='monospaced'>
+     TOOLCHAIN_OUTPUTNAME ?= "${SDK_NAME}-toolchain-${SDK_VERSION}"
+                    </literallayout>
+                    See the
+                    <link linkend='var-SDK_NAME'><filename>SDK_NAME</filename></link>
+                    and
+                    <link linkend='var-SDK_VERSION'><filename>SDK_VERSION</filename></link>
+                    variables for additional information.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TOOLCHAIN_TARGET_TASK'><glossterm>TOOLCHAIN_TARGET_TASK</glossterm>
+            <info>
+                TOOLCHAIN_TARGET_TASK[doc] = "This variable lists packages the OpenEmbedded build system uses when it creates the target part of an SDK, which includes libraries and headers."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    This variable lists packages the OpenEmbedded build system
+                    uses when it creates the target part of an SDK
+                    (i.e. the part built for the target hardware), which
+                    includes libraries and headers.
+                    Use this variable to add individual packages to the
+                    part of the SDK that runs on the target.
+                    See the
+                    "<ulink url='&YOCTO_DOCS_SDK_URL;#sdk-adding-individual-packages'>Adding Individual Packages to the Standard SDK</ulink>"
+                    section in the Yocto Project Application Development and
+                    the Extensible Software Development Kit (eSDK) manual for
+                    more information.
+                </para>
+
+                <para>
+                    For background information on cross-development toolchains
+                    in the Yocto Project development environment, see the
+                    "<ulink url='&YOCTO_DOCS_OM_URL;#cross-development-toolchain-generation'>Cross-Development Toolchain Generation</ulink>"
+                    section in the Yocto Project Overview and Concepts Manual.
+                    For information on setting up a cross-development
+                    environment, see the
+                    <ulink url='&YOCTO_DOCS_SDK_URL;'>Yocto Project Application Development and the Extensible Software Development Kit (eSDK)</ulink>
+                    manual.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TOPDIR'><glossterm>TOPDIR</glossterm>
+            <info>
+                TOPDIR[doc] = "The Build Directory. BitBake automatically sets this variable. The OpenEmbedded build system uses the Build Directory when building images."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The top-level
+                    <link linkend='build-directory'>Build Directory</link>.
+                    BitBake automatically sets this variable when you
+                    initialize your build environment using
+                    <link linkend='structure-core-script'><filename>&OE_INIT_FILE;</filename></link>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TRANSLATED_TARGET_ARCH'><glossterm>TRANSLATED_TARGET_ARCH</glossterm>
+            <info>
+                TRANSLATED_TARGET_ARCH[doc] = "A sanitized version of TARGET_ARCH. This variable is used where the architecture is needed in a value where underscores are not allowed."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A sanitized version of
+                    <link linkend='var-TARGET_ARCH'><filename>TARGET_ARCH</filename></link>.
+                    This variable is used where the architecture is needed in
+                    a value where underscores are not allowed, for example
+                    within package filenames.
+                    In this case, dash characters replace any underscore
+                    characters used in <filename>TARGET_ARCH</filename>.
+                </para>
+
+                <para>
+                    Do not edit this variable.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TUNE_ARCH'><glossterm>TUNE_ARCH</glossterm>
+            <info>
+                TUNE_ARCH[doc] = "The GNU canonical architecture for a specific architecture (i.e. arm, armeb, mips, mips64, and so forth)."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The GNU canonical architecture for a specific architecture
+                    (i.e. <filename>arm</filename>,
+                    <filename>armeb</filename>,
+                    <filename>mips</filename>,
+                    <filename>mips64</filename>, and so forth).
+                    BitBake uses this value to setup configuration.
+                </para>
+
+                <para>
+                    <filename>TUNE_ARCH</filename> definitions are specific to
+                    a given architecture.
+                    The definitions can be a single static definition, or
+                    can be dynamically adjusted.
+                    You can see details for a given CPU family by looking at
+                    the architecture's <filename>README</filename> file.
+                    For example, the
+                    <filename>meta/conf/machine/include/mips/README</filename>
+                    file in the
+                    <link linkend='source-directory'>Source Directory</link>
+                    provides information for <filename>TUNE_ARCH</filename>
+                    specific to the <filename>mips</filename> architecture.
+                </para>
+
+                <para>
+                    <filename>TUNE_ARCH</filename> is tied closely to
+                    <link linkend='var-TARGET_ARCH'><filename>TARGET_ARCH</filename></link>,
+                    which defines the target machine's architecture.
+                    The BitBake configuration file
+                    (<filename>meta/conf/bitbake.conf</filename>) sets
+                    <filename>TARGET_ARCH</filename> as follows:
+                    <literallayout class='monospaced'>
+     TARGET_ARCH = "${TUNE_ARCH}"
+                    </literallayout>
+                </para>
+
+                <para>
+                    The following list, which is by no means complete since
+                    architectures are configurable, shows supported machine
+                    architectures:
+                    <literallayout class='monospaced'>
+     arm
+     i586
+     x86_64
+     powerpc
+     powerpc64
+     mips
+     mipsel
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TUNE_ASARGS'><glossterm>TUNE_ASARGS</glossterm>
+            <info>
+                TUNE_ASARGS[doc] = "Specifies architecture-specific assembler flags for the target system."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies architecture-specific assembler flags for
+                    the target system.
+                    The set of flags is based on the selected tune features.
+                    <filename>TUNE_ASARGS</filename> is set using
+                    the tune include files, which are typically under
+                    <filename>meta/conf/machine/include/</filename> and are
+                    influenced through
+                    <link linkend='var-TUNE_FEATURES'><filename>TUNE_FEATURES</filename></link>.
+                    For example, the
+                    <filename>meta/conf/machine/include/x86/arch-x86.inc</filename>
+                    file defines the flags for the x86 architecture as follows:
+                    <literallayout class='monospaced'>
+     TUNE_ASARGS += "${@bb.utils.contains("TUNE_FEATURES", "mx32", "-x32", "", d)}"
+                    </literallayout>
+                    <note>
+                        Board Support Packages (BSPs) select the tune.
+                        The selected tune, in turn, affects the tune variables
+                        themselves (i.e. the tune can supply its own
+                        set of flags).
+                    </note>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TUNE_CCARGS'><glossterm>TUNE_CCARGS</glossterm>
+            <info>
+                TUNE_CCARGS[doc] = "Specifies architecture-specific C compiler flags for the target system."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies architecture-specific C compiler flags for
+                    the target system.
+                    The set of flags is based on the selected tune features.
+                    <filename>TUNE_CCARGS</filename> is set using
+                    the tune include files, which are typically under
+                    <filename>meta/conf/machine/include/</filename> and are
+                    influenced through
+                    <link linkend='var-TUNE_FEATURES'><filename>TUNE_FEATURES</filename></link>.
+                    <note>
+                        Board Support Packages (BSPs) select the tune.
+                        The selected tune, in turn, affects the tune variables
+                        themselves (i.e. the tune can supply its own
+                        set of flags).
+                    </note>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TUNE_LDARGS'><glossterm>TUNE_LDARGS</glossterm>
+            <info>
+                TUNE_LDARGS[doc] = "Specifies architecture-specific linker flags for the target system."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies architecture-specific linker flags for
+                    the target system.
+                    The set of flags is based on the selected tune features.
+                    <filename>TUNE_LDARGS</filename> is set using
+                    the tune include files, which are typically under
+                    <filename>meta/conf/machine/include/</filename> and are
+                    influenced through
+                    <link linkend='var-TUNE_FEATURES'><filename>TUNE_FEATURES</filename></link>.
+                    For example, the
+                    <filename>meta/conf/machine/include/x86/arch-x86.inc</filename>
+                    file defines the flags for the x86 architecture as follows:
+                    <literallayout class='monospaced'>
+     TUNE_LDARGS += "${@bb.utils.contains("TUNE_FEATURES", "mx32", "-m elf32_x86_64", "", d)}"
+                    </literallayout>
+                    <note>
+                        Board Support Packages (BSPs) select the tune.
+                        The selected tune, in turn, affects the tune variables
+                        themselves (i.e. the tune can supply its own
+                        set of flags).
+                    </note>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TUNE_FEATURES'><glossterm>TUNE_FEATURES</glossterm>
+            <info>
+                TUNE_FEATURES[doc] = "Features used to "tune" a compiler for optimal use given a specific processor."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Features used to "tune" a compiler for optimal use
+                    given a specific processor.
+                    The features are defined within the tune files and allow
+                    arguments (i.e. <filename>TUNE_*ARGS</filename>) to be
+                    dynamically generated based on the features.
+                </para>
+
+                <para>
+                    The OpenEmbedded build system verifies the features
+                    to be sure they are not conflicting and that they are
+                    supported.
+                </para>
+
+                <para>
+                    The BitBake configuration file
+                    (<filename>meta/conf/bitbake.conf</filename>) defines
+                    <filename>TUNE_FEATURES</filename> as follows:
+                    <literallayout class='monospaced'>
+     TUNE_FEATURES ??= "${TUNE_FEATURES_tune-${DEFAULTTUNE}}"
+                    </literallayout>
+                    See the
+                    <link linkend='var-DEFAULTTUNE'><filename>DEFAULTTUNE</filename></link>
+                    variable for more information.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TUNE_PKGARCH'><glossterm>TUNE_PKGARCH</glossterm>
+            <info>
+                TUNE_PKGARCH[doc] = "The package architecture understood by the packaging system to define the architecture, ABI, and tuning of output packages."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The package architecture understood by the packaging
+                    system to define the architecture, ABI, and tuning of
+                    output packages.
+                    The specific tune is defined using the "_tune" override
+                    as follows:
+                    <literallayout class='monospaced'>
+     TUNE_PKGARCH_tune-<replaceable>tune</replaceable> = "<replaceable>tune</replaceable>"
+                    </literallayout>
+                </para>
+
+                <para>
+                    These tune-specific package architectures are defined in
+                    the machine include files.
+                    Here is an example of the "core2-32" tuning as used
+                    in the
+                    <filename>meta/conf/machine/include/tune-core2.inc</filename>
+                    file:
+                    <literallayout class='monospaced'>
+     TUNE_PKGARCH_tune-core2-32 = "core2-32"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TUNEABI'><glossterm>TUNEABI</glossterm>
+            <info>
+                TUNEABI[doc] = "An underlying ABI used by a particular tuning in a given toolchain layer. This feature allows providers using prebuilt libraries to check compatibility of a tuning against their selection of libraries."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    An underlying Application Binary Interface (ABI) used by
+                    a particular tuning in a given toolchain layer.
+                    Providers that use prebuilt libraries can use the
+                    <filename>TUNEABI</filename>,
+                    <link linkend='var-TUNEABI_OVERRIDE'><filename>TUNEABI_OVERRIDE</filename></link>,
+                    and
+                    <link linkend='var-TUNEABI_WHITELIST'><filename>TUNEABI_WHITELIST</filename></link>
+                    variables to check compatibility of tunings against their
+                    selection of libraries.
+                </para>
+
+                <para>
+                    If <filename>TUNEABI</filename> is undefined, then every
+                    tuning is allowed.
+                    See the
+                    <link linkend='ref-classes-sanity'><filename>sanity</filename></link>
+                    class to see how the variable is used.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TUNEABI_OVERRIDE'><glossterm>TUNEABI_OVERRIDE</glossterm>
+            <info>
+                TUNEABI_OVERRIDE[doc] = "If set, ignores TUNEABI_WHITELIST."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    If set, the OpenEmbedded system ignores the
+                    <link linkend='var-TUNEABI_WHITELIST'><filename>TUNEABI_WHITELIST</filename></link>
+                    variable.
+                    Providers that use prebuilt libraries can use the
+                    <filename>TUNEABI_OVERRIDE</filename>,
+                    <filename>TUNEABI_WHITELIST</filename>,
+                    and
+                    <link linkend='var-TUNEABI'><filename>TUNEABI</filename></link>
+                    variables to check compatibility of a tuning against their
+                    selection of libraries.
+                </para>
+
+                <para>
+                    See the
+                    <link linkend='ref-classes-sanity'><filename>sanity</filename></link>
+                    class to see how the variable is used.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TUNEABI_WHITELIST'><glossterm>TUNEABI_WHITELIST</glossterm>
+            <info>
+                TUNEABI_WHITELIST[doc] = "A whitelist of permissible TUNEABI values.  If the variable is not set, all values are allowed."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A whitelist of permissible
+                    <link linkend='var-TUNEABI'><filename>TUNEABI</filename></link>
+                    values.
+                    If <filename>TUNEABI_WHITELIST</filename> is not set,
+                    all tunes are allowed.
+                    Providers that use prebuilt libraries can use the
+                    <filename>TUNEABI_WHITELIST</filename>,
+                    <link linkend='var-TUNEABI_OVERRIDE'><filename>TUNEABI_OVERRIDE</filename></link>,
+                    and <filename>TUNEABI</filename> variables to check
+                    compatibility of a tuning against their selection of
+                    libraries.
+                </para>
+
+                <para>
+                    See the
+                    <link linkend='ref-classes-sanity'><filename>sanity</filename></link>
+                    class to see how the variable is used.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TUNECONFLICTS'><glossterm>TUNECONFLICTS[<replaceable>feature</replaceable>]</glossterm>
+            <info>
+                TUNECONFLICTS[doc] = "Specifies CPU or Application Binary Interface (ABI) tuning features that conflict with specified feature."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies CPU or Application Binary Interface (ABI)
+                    tuning features that conflict with <replaceable>feature</replaceable>.
+                </para>
+
+                <para>
+                    Known tuning conflicts are specified in the machine include
+                    files in the
+                    <link linkend='source-directory'>Source Directory</link>.
+                    Here is an example from the
+                    <filename>meta/conf/machine/include/mips/arch-mips.inc</filename>
+                    include file that lists the "o32" and "n64" features as
+                    conflicting with the "n32" feature:
+                    <literallayout class='monospaced'>
+     TUNECONFLICTS[n32] = "o32 n64"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-TUNEVALID'><glossterm>TUNEVALID[<replaceable>feature</replaceable>]</glossterm>
+            <info>
+               TUNEVALID[doc] = "Descriptions, stored as flags, of valid tuning features."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies a valid CPU or Application Binary Interface (ABI)
+                    tuning feature.
+                    The specified feature is stored as a flag.
+                    Valid features are specified in the machine include files
+                    (e.g. <filename>meta/conf/machine/include/arm/arch-arm.inc</filename>).
+                    Here is an example from that file:
+                    <literallayout class='monospaced'>
+     TUNEVALID[bigendian] = "Enable big-endian mode."
+                    </literallayout>
+                </para>
+
+                <para>
+                    See the machine include files in the
+                    <link linkend='source-directory'>Source Directory</link>
+                    for these features.
+                </para>
+            </glossdef>
+        </glossentry>
+
+    </glossdiv>
+
+    <glossdiv id='var-glossary-u'><title>U</title>
+
+        <glossentry id='var-UBOOT_CONFIG'><glossterm>UBOOT_CONFIG</glossterm>
+            <info>
+               UBOOT_CONFIG[doc] = "Configures the UBOOT_MACHINE and can also define IMAGE_FSTYPES for individual cases."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Configures the
+                    <link linkend='var-UBOOT_MACHINE'><filename>UBOOT_MACHINE</filename></link>
+                    and can also define
+                    <link linkend='var-IMAGE_FSTYPES'><filename>IMAGE_FSTYPES</filename></link>
+                    for individual cases.
+                </para>
+
+                <para>
+                    Following is an example from the
+                    <filename>meta-fsl-arm</filename> layer.
+                    <literallayout class='monospaced'>
+     UBOOT_CONFIG ??= "sd"
+     UBOOT_CONFIG[sd] = "mx6qsabreauto_config,sdcard"
+     UBOOT_CONFIG[eimnor] = "mx6qsabreauto_eimnor_config"
+     UBOOT_CONFIG[nand] = "mx6qsabreauto_nand_config,ubifs"
+     UBOOT_CONFIG[spinor] = "mx6qsabreauto_spinor_config"
+                    </literallayout>
+                    In this example, "sd" is selected as the configuration
+                    of the possible four for the
+                    <filename>UBOOT_MACHINE</filename>.
+                    The "sd" configuration defines "mx6qsabreauto_config"
+                    as the value for <filename>UBOOT_MACHINE</filename>, while
+                    the "sdcard" specifies the
+                    <filename>IMAGE_FSTYPES</filename> to use for the U-boot
+                    image.
+                </para>
+
+                <para>
+                    For more information on how the
+                    <filename>UBOOT_CONFIG</filename> is handled, see the
+                    <ulink url='http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/meta/classes/uboot-config.bbclass'><filename>uboot-config</filename></ulink>
+                    class.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-UBOOT_DTB_LOADADDRESS'><glossterm>UBOOT_DTB_LOADADDRESS</glossterm>
+            <info>
+               UBOOT_DTB_LOADADDRESS[doc] = "Specifies the load address for the dtb."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the load address for the dtb image used by U-boot.
+                    During FIT image creation, the
+                    <filename>UBOOT_DTB_LOADADDRESS</filename> variable is used
+                    in <filename>kernel-fitimage</filename> class to specify the
+                    load address to be used in creating the dtb sections of
+                    Image Tree Source for the FIT image.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-UBOOT_DTBO_LOADADDRESS'><glossterm>UBOOT_DTBO_LOADADDRESS</glossterm>
+            <info>
+               UBOOT_DTBO_LOADADDRESS[doc] = "Specifies the load address for the dtbo."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the load address for the dtbo image used by U-boot.
+                    During FIT image creation, the
+                    <filename>UBOOT_DTBO_LOADADDRESS</filename> variable is used
+                    in <filename>kernel-fitimage</filename> class to specify the
+                    load address to be used in creating the dtbo sections of
+                    Image Tree Source for the FIT image.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-UBOOT_ENTRYPOINT'><glossterm>UBOOT_ENTRYPOINT</glossterm>
+            <info>
+               UBOOT_ENTRYPOINT[doc] = "Specifies the entry point for the U-Boot image."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the entry point for the U-Boot image.
+                    During U-Boot image creation, the
+                    <filename>UBOOT_ENTRYPOINT</filename> variable is passed
+                    as a command-line parameter to the
+                    <filename>uboot-mkimage</filename> utility.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-UBOOT_LOADADDRESS'><glossterm>UBOOT_LOADADDRESS</glossterm>
+            <info>
+               UBOOT_LOADADDRESS[doc] = "Specifies the load address for the U-Boot image."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the load address for the U-Boot image.
+                    During U-Boot image creation, the
+                    <filename>UBOOT_LOADADDRESS</filename> variable is passed
+                    as a command-line parameter to the
+                    <filename>uboot-mkimage</filename> utility.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-UBOOT_LOCALVERSION'><glossterm>UBOOT_LOCALVERSION</glossterm>
+            <info>
+               UBOOT_LOCALVERSION[doc] = "Appends a string to the name of the local version of the U-Boot image."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Appends a string to the name of the local version of the
+                    U-Boot image.
+                    For example, assuming the version of the U-Boot image
+                    built was "2013.10", the full version string reported by
+                    U-Boot would be "2013.10-yocto" given the following
+                    statement:
+                    <literallayout class='monospaced'>
+     UBOOT_LOCALVERSION = "-yocto"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-UBOOT_MACHINE'><glossterm>UBOOT_MACHINE</glossterm>
+            <info>
+               UBOOT_MACHINE[doc] = "Specifies the value passed on the make command line when building a U-Boot image."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the value passed on the
+                    <filename>make</filename> command line when building
+                    a U-Boot image.
+                    The value indicates the target platform configuration.
+                    You typically set this variable from the machine
+                    configuration file (i.e.
+                    <filename>conf/machine/<replaceable>machine_name</replaceable>.conf</filename>).
+                </para>
+
+                <para>
+                    Please see the "Selection of Processor Architecture and
+                    Board Type" section in the U-Boot README for valid values
+                    for this variable.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-UBOOT_MAKE_TARGET'><glossterm>UBOOT_MAKE_TARGET</glossterm>
+            <info>
+               UBOOT_MAKE_TARGET[doc] = "Specifies the target called in the Makefile."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the target called in the
+                    <filename>Makefile</filename>.
+                    The default target is "all".
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-UBOOT_MKIMAGE_DTCOPTS'><glossterm>UBOOT_MKIMAGE_DTCOPTS</glossterm>
+            <info>
+               UBOOT_MKIMAGE_DTCOPTS[doc] = "Options for the device tree compiler passed to mkimage '-D' feature."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Options for the device tree compiler passed to mkimage '-D'
+                    feature while creating FIT image in
+                    <filename>kernel-fitimage</filename> class.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-UBOOT_RD_LOADADDRESS'><glossterm>UBOOT_RD_LOADADDRESS</glossterm>
+            <info>
+               UBOOT_RD_LOADADDRESS[doc] = "Specifies the load address for the ramdisk image."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the load address for the RAM disk image.
+                    During FIT image creation, the
+                    <filename>UBOOT_RD_LOADADDRESS</filename> variable is used
+                    in <filename>kernel-fitimage</filename> class to specify the
+                    load address to be used in creating the Image Tree Source for
+                    the FIT image.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-UBOOT_RD_ENTRYPOINT'><glossterm>UBOOT_RD_ENTRYPOINT</glossterm>
+            <info>
+               UBOOT_RD_ENTRYPOINT[doc] = "Specifies the entrypoint for the ramdisk image."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the entrypoint for the RAM disk image.
+                    During FIT image creation, the
+                    <filename>UBOOT_RD_ENTRYPOINT</filename> variable is used
+                    in <filename>kernel-fitimage</filename> class to specify the
+                    entrypoint to be used in creating the Image Tree Source for
+                    the FIT image.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-UBOOT_SUFFIX'><glossterm>UBOOT_SUFFIX</glossterm>
+            <info>
+               UBOOT_SUFFIX[doc] = "Points to the generated U-Boot extension."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Points to the generated U-Boot extension.
+                    For example, <filename>u-boot.sb</filename> has a
+                    <filename>.sb</filename> extension.
+                </para>
+
+                <para>
+                    The default U-Boot extension is
+                    <filename>.bin</filename>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-UBOOT_SIGN_ENABLE'><glossterm>UBOOT_SIGN_ENABLE</glossterm>
+            <info>
+               UBOOT_SIGN_KEYDIR[doc] = "Enable signing of FIT image."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Enable signing of FIT image. The default value is "0".
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-UBOOT_SIGN_KEYDIR'><glossterm>UBOOT_SIGN_KEYDIR</glossterm>
+            <info>
+               UBOOT_SIGN_KEYDIR[doc] = "Location of the directory containing the RSA key and certificate used for signing FIT image."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Location of the directory containing the RSA key and
+                    certificate used for signing FIT image.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-UBOOT_SIGN_KEYNAME'><glossterm>UBOOT_SIGN_KEYNAME</glossterm>
+            <info>
+               UBOOT_SIGN_KEYNAME[doc] = "The name of keys used for signing U-boot FIT image"
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The name of keys used for signing U-boot FIT image stored in
+                    <filename><link linkend='var-UBOOT_SIGN_KEYDIR'>UBOOT_SIGN_KEYDIR</link></filename>
+                    directory. For e.g. dev.key key and dev.crt certificate
+                    stored in
+                    <filename><link linkend='var-UBOOT_SIGN_KEYDIR'>UBOOT_SIGN_KEYDIR</link></filename>
+                    directory will have
+                    <filename><link linkend='var-UBOOT_SIGN_KEYNAME'>UBOOT_SIGN_KEYNAME</link></filename>
+                    set to "dev".
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-UBOOT_TARGET'><glossterm>UBOOT_TARGET</glossterm>
+            <info>
+               UBOOT_TARGET[doc] = "Specifies the target used for building U-Boot."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the target used for building U-Boot.
+                    The target is passed directly as part of the "make" command
+                    (e.g. SPL and AIS).
+                    If you do not specifically set this variable, the
+                    OpenEmbedded build process passes and uses "all" for the
+                    target during the U-Boot building process.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-UNKNOWN_CONFIGURE_WHITELIST'><glossterm>UNKNOWN_CONFIGURE_WHITELIST</glossterm>
+            <info>
+               UNKNOWN_CONFIGURE_WHITELIST[doc] = "Specifies a list of options that, if reported by the configure script as being invalid, should not generate a warning during the do_configure task."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies a list of options that, if reported by the
+                    configure script as being invalid, should not generate a
+                    warning during the
+                    <link linkend='ref-tasks-configure'><filename>do_configure</filename></link>
+                    task.
+                    Normally, invalid configure options are simply not passed
+                    to the configure script (e.g. should be removed from
+                    <link linkend='var-EXTRA_OECONF'><filename>EXTRA_OECONF</filename></link>
+                    or
+                    <link linkend='var-PACKAGECONFIG_CONFARGS'><filename>PACKAGECONFIG_CONFARGS</filename></link>).
+                    However, common options, for example, exist that are passed
+                    to all configure scripts at a class level that might not
+                    be valid for some configure scripts.
+                    It follows that no benefit exists in seeing a warning about
+                    these options.
+                    For these cases, the options are added to
+                    <filename>UNKNOWN_CONFIGURE_WHITELIST</filename>.
+                </para>
+
+                <para>
+                    The configure arguments check that uses
+                    <filename>UNKNOWN_CONFIGURE_WHITELIST</filename> is part
+                    of the
+                    <link linkend='ref-classes-insane'><filename>insane</filename></link>
+                    class and is only enabled if the recipe inherits the
+                    <link linkend='ref-classes-autotools'><filename>autotools</filename></link>
+                    class.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-UPDATERCPN'><glossterm>UPDATERCPN</glossterm>
+            <info>
+               UPDATERCPN[doc] = "Specifies the package that contains the initscript that is enabled."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    For recipes inheriting the
+                    <link linkend='ref-classes-update-rc.d'><filename>update-rc.d</filename></link>
+                    class, <filename>UPDATERCPN</filename> specifies
+                    the package that contains the initscript that is
+                    enabled.
+                </para>
+
+                <para>
+                    The default value is "${PN}".
+                    Given that almost all recipes that install initscripts
+                    package them in the main package for the recipe, you
+                    rarely need to set this variable in individual recipes.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-UPSTREAM_CHECK_GITTAGREGEX'><glossterm>UPSTREAM_CHECK_GITTAGREGEX</glossterm>
+            <info>
+               UPSTREAM_CHECK_GITTAGREGEX[doc] = "Filters relevant Git tags when fetching source from an upstream Git repository."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    You can perform a per-recipe check for what the latest
+                    upstream source code version is by calling
+                    <filename>bitbake -c checkpkg</filename> <replaceable>recipe</replaceable>.
+                    If the recipe source code is provided from Git
+                    repositories, the OpenEmbedded build system determines the
+                    latest upstream version by picking the latest tag from the
+                    list of all repository tags.
+                </para>
+
+                <para>
+                    You can use the
+                    <filename>UPSTREAM_CHECK_GITTAGREGEX</filename>
+                    variable to provide a regular expression to filter only the
+                    relevant tags should the default filter not work
+                    correctly.
+                    <literallayout class='monospaced'>
+     UPSTREAM_CHECK_GITTAGREGEX = "git_tag_regex"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-UPSTREAM_CHECK_REGEX'><glossterm>UPSTREAM_CHECK_REGEX</glossterm>
+            <info>
+               UPSTREAM_CHECK_REGEX[doc] = "The regular expression the package checking system uses to parse the page pointed to by UPSTREAM_CHECK_URI."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Use the <filename>UPSTREAM_CHECK_REGEX</filename> variable
+                    to specify a different regular expression instead of the
+                    default one when the package checking system is parsing
+                    the page found using
+                    <link linkend='var-UPSTREAM_CHECK_URI'><filename>UPSTREAM_CHECK_URI</filename></link>.
+                    <literallayout class='monospaced'>
+     UPSTREAM_CHECK_REGEX = "package_regex"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-UPSTREAM_CHECK_URI'><glossterm>UPSTREAM_CHECK_URI</glossterm>
+            <info>
+               UPSTREAM_CHECK_URI[doc] = "The URL used by the package checking system to get the latest version of the package when source files are fetched from an upstream Git repository."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    You can perform a per-recipe check for what the latest
+                    upstream source code version is by calling
+                    <filename>bitbake -c checkpkg</filename> <replaceable>recipe</replaceable>.
+                    If the source code is provided from tarballs, the latest
+                    version is determined by fetching the directory listing
+                    where the tarball is and attempting to find a later tarball.
+                    When this approach does not work, you can use
+                    <filename>UPSTREAM_CHECK_URI</filename> to
+                    provide a different URI that contains the link to the
+                    latest tarball.
+                    <literallayout class='monospaced'>
+     UPSTREAM_CHECK_URI = "recipe_url"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-USE_DEVFS'><glossterm>USE_DEVFS</glossterm>
+            <info>
+               USE_DEVFS[doc] = "Determines if devtmpfs is used for /dev population."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Determines if <filename>devtmpfs</filename> is used for
+                    <filename>/dev</filename> population.
+                    The default value used for <filename>USE_DEVFS</filename>
+                    is "1" when no value is specifically set.
+                    Typically, you would set <filename>USE_DEVFS</filename>
+                    to "0" for a statically populated <filename>/dev</filename>
+                    directory.
+                </para>
+
+                <para>
+                    See the
+                    "<ulink url='&YOCTO_DOCS_DEV_URL;#selecting-dev-manager'>Selecting a Device Manager</ulink>"
+                    section in the Yocto Project Development Tasks Manual for
+                    information on how to use this variable.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-USE_VT'><glossterm>USE_VT</glossterm>
+            <info>
+               USE_VT[doc] = "When using SysVinit, determines whether or not to run a getty on any virtual terminals in order to enable logging in through those terminals."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When using
+                    <ulink url='&YOCTO_DOCS_DEV_URL;#new-recipe-enabling-system-services'>SysVinit</ulink>,
+                    determines whether or not to run a
+                    <ulink url='http://en.wikipedia.org/wiki/Getty_%28Unix%29'>getty</ulink>
+                    on any virtual terminals in order to enable logging in
+                    through those terminals.
+                </para>
+
+                <para>
+                    The default value used for <filename>USE_VT</filename>
+                    is "1" when no default value is specifically set.
+                    Typically, you would set <filename>USE_VT</filename>
+                    to "0" in the machine configuration file for machines
+                    that do not have a graphical display attached and
+                    therefore do not need virtual terminal functionality.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-USER_CLASSES'><glossterm>USER_CLASSES</glossterm>
+            <info>
+               USER_CLASSES[doc] = "List of additional classes to use when building images that enable extra features."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    A list of classes to globally inherit.
+                    These classes are used by the OpenEmbedded build system
+                    to enable extra features (e.g.
+                    <filename>buildstats</filename>,
+                    <filename>image-mklibs</filename>, and so forth).
+                </para>
+
+                <para>
+                    The default list is set in your
+                    <filename>local.conf</filename> file:
+                    <literallayout class='monospaced'>
+     USER_CLASSES ?= "buildstats image-mklibs image-prelink"
+                    </literallayout>
+                    For more information, see
+                    <filename>meta-poky/conf/local.conf.sample</filename> in
+                    the
+                    <link linkend='source-directory'>Source Directory</link>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-USERADD_ERROR_DYNAMIC'><glossterm>USERADD_ERROR_DYNAMIC</glossterm>
+            <info>
+               USERADD_ERROR_DYNAMIC[doc] = "If set to 'error', forces the OpenEmbedded build system to produce an error if the user identification (uid) and group identification (gid) values are not defined in any of the files listed in USERADD_UID_TABLES and USERADD_GID_TABLES. If set to 'warn', a warning will be issued instead."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+
+                    If set to <filename>error</filename>, forces the
+                    OpenEmbedded build system to produce an error if the user
+                    identification (<filename>uid</filename>) and group
+                    identification (<filename>gid</filename>) values are not
+                    defined in any of the files listed
+                    in <link linkend='var-USERADD_UID_TABLES'><filename>USERADD_UID_TABLES</filename></link>
+                    and <link linkend='var-USERADD_GID_TABLES'><filename>USERADD_GID_TABLES</filename></link>. If
+                    set to <filename>warn</filename>, a warning will be issued
+                    instead.
+                </para>
+
+                <para>
+                    The default behavior for the build system is to dynamically
+                    apply <filename>uid</filename> and
+                    <filename>gid</filename> values.
+                    Consequently, the <filename>USERADD_ERROR_DYNAMIC</filename>
+                    variable is by default not set.
+                    If you plan on using statically assigned
+                    <filename>gid</filename> and <filename>uid</filename>
+                    values, you should set
+                    the <filename>USERADD_ERROR_DYNAMIC</filename> variable in
+                    your <filename>local.conf</filename> file as
+                    follows:
+                    <literallayout class='monospaced'>
+     USERADD_ERROR_DYNAMIC = "error"
+                    </literallayout>
+                    Overriding the default behavior implies you are going to
+                    also take steps to set static <filename>uid</filename> and
+                    <filename>gid</filename> values through use of the
+                    <link linkend='var-USERADDEXTENSION'><filename>USERADDEXTENSION</filename></link>,
+                    <link linkend='var-USERADD_UID_TABLES'><filename>USERADD_UID_TABLES</filename></link>,
+                    and
+                    <link linkend='var-USERADD_GID_TABLES'><filename>USERADD_GID_TABLES</filename></link>
+                    variables.
+                </para>
+
+                <note>
+                    There is a difference in behavior between
+                    setting <filename>USERADD_ERROR_DYNAMIC</filename>
+                    to <filename>error</filename> and setting it
+                    to <filename>warn</filename>. When it is set
+                    to <filename>warn</filename>, the build system will report a
+                    warning for every undefined <filename>uid</filename> and
+                    <filename>gid</filename> in any recipe. But when it is set
+                    to <filename>error</filename>, it will only report errors
+                    for recipes that are actually built. This saves you from
+                    having to add static IDs for recipes that you know will
+                    never be built.
+                </note>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-USERADD_GID_TABLES'><glossterm>USERADD_GID_TABLES</glossterm>
+            <info>
+               USERADD_GID_TABLES[doc] = "Specifies a password file to use for obtaining static group identification (gid) values when the OpenEmbedded build system adds a group to the system during package installation."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies a password file to use for obtaining static
+                    group identification (<filename>gid</filename>) values
+                    when the OpenEmbedded build system adds a group to the
+                    system during package installation.
+                </para>
+
+                <para>
+                    When applying static group identification
+                    (<filename>gid</filename>) values, the OpenEmbedded build
+                    system looks in
+                    <link linkend='var-BBPATH'><filename>BBPATH</filename></link>
+                    for a <filename>files/group</filename> file and then applies
+                    those <filename>uid</filename> values.
+                    Set the variable as follows in your
+                    <filename>local.conf</filename> file:
+                    <literallayout class='monospaced'>
+     USERADD_GID_TABLES = "files/group"
+                    </literallayout>
+                </para>
+
+                <note>
+                    Setting the
+                    <link linkend='var-USERADDEXTENSION'><filename>USERADDEXTENSION</filename></link>
+                    variable to "useradd-staticids" causes the build system
+                    to use static <filename>gid</filename> values.
+                </note>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-USERADD_PACKAGES'><glossterm>USERADD_PACKAGES</glossterm>
+            <info>
+               USERADD_PACKAGES[doc] = "When a recipe inherits the useradd class, this variable specifies the individual packages within the recipe that require users and/or groups to be added."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When inheriting the
+                    <link linkend='ref-classes-useradd'><filename>useradd</filename></link>
+                    class, this variable
+                    specifies the individual packages within the recipe that
+                    require users and/or groups to be added.
+                </para>
+
+                <para>
+                    You must set this variable if the recipe inherits the
+                    class.
+                    For example, the following enables adding a user for the
+                    main package in a recipe:
+                    <literallayout class='monospaced'>
+     USERADD_PACKAGES = "${PN}"
+                    </literallayout>
+                    <note>
+                        It follows that if you are going to use the
+                        <filename>USERADD_PACKAGES</filename> variable,
+                        you need to set one or more of the
+                        <link linkend='var-USERADD_PARAM'><filename>USERADD_PARAM</filename></link>,
+                        <link linkend='var-GROUPADD_PARAM'><filename>GROUPADD_PARAM</filename></link>,
+                        or
+                        <link linkend='var-GROUPMEMS_PARAM'><filename>GROUPMEMS_PARAM</filename></link>
+                        variables.
+                    </note>
+                </para>
+
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-USERADD_PARAM'><glossterm>USERADD_PARAM</glossterm>
+            <info>
+               USERADD_PARAM[doc] = "When a recipe inherits the useradd class, this variable specifies for a package what parameters should pass to the useradd command if you add a user to the system when the package is installed."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When inheriting the
+                    <link linkend='ref-classes-useradd'><filename>useradd</filename></link>
+                    class, this variable
+                    specifies for a package what parameters should pass
+                    to the <filename>useradd</filename> command
+                    if you add a user to the system when the package
+                    is installed.
+                </para>
+
+                <para>
+                    Here is an example from the <filename>dbus</filename>
+                    recipe:
+                    <literallayout class='monospaced'>
+     USERADD_PARAM_${PN} = "--system --home ${localstatedir}/lib/dbus \
+                            --no-create-home --shell /bin/false \
+                            --user-group messagebus"
+                    </literallayout>
+                    For information on the standard Linux shell command
+                    <filename>useradd</filename>, see
+                    <ulink url='http://linux.die.net/man/8/useradd'></ulink>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-USERADD_UID_TABLES'><glossterm>USERADD_UID_TABLES</glossterm>
+            <info>
+               USERADD_UID_TABLES[doc] = "Specifies a password file to use for obtaining static user identification (uid) values when the OpenEmbedded build system adds a user to the system during package installation."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies a password file to use for obtaining static
+                    user identification (<filename>uid</filename>) values
+                    when the OpenEmbedded build system adds a user to the
+                    system during package installation.
+                </para>
+
+                <para>
+                    When applying static user identification
+                    (<filename>uid</filename>) values, the OpenEmbedded build
+                    system looks in
+                    <link linkend='var-BBPATH'><filename>BBPATH</filename></link>
+                    for a <filename>files/passwd</filename> file and then applies
+                    those <filename>uid</filename> values.
+                    Set the variable as follows in your
+                    <filename>local.conf</filename> file:
+                    <literallayout class='monospaced'>
+     USERADD_UID_TABLES = "files/passwd"
+                    </literallayout>
+                </para>
+
+                <note>
+                    Setting the
+                    <link linkend='var-USERADDEXTENSION'><filename>USERADDEXTENSION</filename></link>
+                    variable to "useradd-staticids" causes the build system
+                    to use static <filename>uid</filename> values.
+                </note>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-USERADDEXTENSION'><glossterm>USERADDEXTENSION</glossterm>
+            <info>
+               USERADDEXTENSION[doc] = "When set to 'useradd-staticids', causes the OpenEmbedded build system to base all user and group additions on a static passwd and group files found in BBPATH."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When set to "useradd-staticids", causes the
+                    OpenEmbedded build system to base all user and group
+                    additions on a static
+                    <filename>passwd</filename> and
+                    <filename>group</filename> files found in
+                    <link linkend='var-BBPATH'><filename>BBPATH</filename></link>.
+                </para>
+
+                <para>
+                    To use static user identification (<filename>uid</filename>)
+                    and group identification (<filename>gid</filename>)
+                    values, set the variable
+                    as follows in your <filename>local.conf</filename> file:
+                    <literallayout class='monospaced'>
+     USERADDEXTENSION = "useradd-staticids"
+                    </literallayout>
+                    <note>
+                        Setting this variable to use static
+                        <filename>uid</filename> and <filename>gid</filename>
+                        values causes the OpenEmbedded build system to employ
+                        the
+                        <link linkend='ref-classes-useradd'><filename>useradd-staticids</filename></link>
+                        class.
+                    </note>
+                </para>
+
+                <para>
+                    If you use static <filename>uid</filename> and
+                    <filename>gid</filename> information, you must also
+                    specify the <filename>files/passwd</filename> and
+                    <filename>files/group</filename> files by setting the
+                    <link linkend='var-USERADD_UID_TABLES'><filename>USERADD_UID_TABLES</filename></link>
+                    and
+                    <link linkend='var-USERADD_GID_TABLES'><filename>USERADD_GID_TABLES</filename></link>
+                    variables.
+                    Additionally, you should also set the
+                    <link linkend='var-USERADD_ERROR_DYNAMIC'><filename>USERADD_ERROR_DYNAMIC</filename></link>
+                    variable.
+                </para>
+            </glossdef>
+        </glossentry>
+
+    </glossdiv>
+
+    <glossdiv id='var-glossary-v'><title>V</title>
+
+        <glossentry id='var-VOLATILE_LOG_DIR'><glossterm>VOLATILE_LOG_DIR</glossterm>
+            <info>
+               VOLATILE_LOG_DIR[doc] = "Specifies the persistence of the target's /var/log directory, which is used to house postinstall target log files."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the persistence of the target's
+                    <filename>/var/log</filename> directory, which is used to
+                    house postinstall target log files.
+                </para>
+
+                <para>
+                    By default, <filename>VOLATILE_LOG_DIR</filename> is set
+                    to "yes", which means the file is not persistent.
+                    You can override this setting by setting the
+                    variable to "no" to make the log directory persistent.
+                </para>
+            </glossdef>
+        </glossentry>
+
+    </glossdiv>
+
+    <glossdiv id='var-glossary-w'><title>W</title>
+
+        <glossentry id='var-WARN_QA'><glossterm>WARN_QA</glossterm>
+            <info>
+               WARN_QA[doc] = "Specifies the quality assurance checks whose failures are reported as warnings by the OpenEmbedded build system."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the quality assurance checks whose failures are
+                    reported as warnings by the OpenEmbedded build system.
+                    You set this variable in your distribution configuration
+                    file.
+                    For a list of the checks you can control with this variable,
+                    see the
+                    "<link linkend='ref-classes-insane'><filename>insane.bbclass</filename></link>"
+                    section.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-WKS_FILE_DEPENDS'><glossterm>WKS_FILE_DEPENDS</glossterm>
+            <info>
+               WKS_FILE_DEPENDS[doc] = "Lists a recipe's build-time dependencies specific to Wic."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    When placed in the recipe that builds your image, this
+                    variable lists build-time dependencies.
+                    The <filename>WKS_FILE_DEPENDS</filename> variable is only
+                    applicable when Wic images are active (i.e. when
+                    <link linkend='var-IMAGE_FSTYPES'><filename>IMAGE_FSTYPES</filename></link>
+                    contains entries related to Wic).
+                    If your recipe does not create Wic images, the variable
+                    has no effect.
+                </para>
+
+                <para>
+                    The <filename>WKS_FILE_DEPENDS</filename> variable is
+                    similar to the
+                    <link linkend='var-DEPENDS'><filename>DEPENDS</filename></link>
+                    variable.
+                    When you use the variable in your recipe that builds the
+                    Wic image, dependencies you list in the
+                    <filename>WIC_FILE_DEPENDS</filename> variable are added to
+                    the <filename>DEPENDS</filename> variable.
+                </para>
+
+                <para>
+                    With the <filename>WKS_FILE_DEPENDS</filename> variable,
+                    you have the possibility to specify a list of additional
+                    dependencies (e.g. native tools, bootloaders, and so forth),
+                    that are required to build Wic images.
+                    Following is an example:
+                    <literallayout class='monospaced'>
+     WKS_FILE_DEPENDS = "<replaceable>some-native-tool</replaceable>"
+                    </literallayout>
+                    In the previous example,
+                    <replaceable>some-native-tool</replaceable> would be
+                    replaced with an actual native tool on which the build
+                    would depend.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-WKS_FILE'><glossterm>WKS_FILE</glossterm>
+            <info>
+               WKS_FILE[doc] = "Specifies the name of the wic kickstart file."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the location of the Wic
+                    kickstart file that is used by the OpenEmbedded build
+                    system to create a partitioned image
+                    (<replaceable>image</replaceable><filename>.wic</filename>).
+                    For information on how to create a partitioned image, see
+                    the
+                    "<ulink url='&YOCTO_DOCS_DEV_URL;#creating-partitioned-images-using-wic'>Creating Partitioned Images Using Wic</ulink>"
+                    section in the Yocto Project Development Tasks Manual.
+                    For details on the kickstart file format, see the
+                    "<link linkend='ref-kickstart'>OpenEmbedded Kickstart (<filename>.wks</filename>) Reference</link>"
+                    Chapter.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-WORKDIR'><glossterm>WORKDIR</glossterm>
+            <info>
+               WORKDIR[doc] = "The pathname of the working directory in which the OpenEmbedded build system builds a recipe. This directory is located within the TMPDIR directory structure and changes as different packages are built."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    The pathname of the work directory in which the OpenEmbedded
+                    build system builds a recipe.
+                    This directory is located within the
+                    <link linkend='var-TMPDIR'><filename>TMPDIR</filename></link>
+                    directory structure and is specific to the recipe being
+                    built and the system for which it is being built.
+                </para>
+
+                <para>
+                    The <filename>WORKDIR</filename> directory is defined as
+                    follows:
+                    <literallayout class='monospaced'>
+     ${TMPDIR}/work/${MULTIMACH_TARGET_SYS}/${PN}/${EXTENDPE}${PV}-${PR}
+                    </literallayout>
+                    The actual directory depends on several things:
+                    <itemizedlist>
+                        <listitem><filename>TMPDIR</filename>:
+                            The top-level build output directory</listitem>
+                        <listitem><link linkend='var-MULTIMACH_TARGET_SYS'><filename>MULTIMACH_TARGET_SYS</filename></link>:
+                            The target system identifier</listitem>
+                        <listitem><link linkend='var-PN'><filename>PN</filename></link>:
+                            The recipe name</listitem>
+                        <listitem><link linkend='var-EXTENDPE'><filename>EXTENDPE</filename></link>:
+                            The epoch - (if
+                            <link linkend='var-PE'><filename>PE</filename></link>
+                            is not specified, which is usually the case for most
+                            recipes, then <filename>EXTENDPE</filename> is blank)</listitem>
+                        <listitem><link linkend='var-PV'><filename>PV</filename></link>:
+                            The recipe version</listitem>
+                        <listitem><link linkend='var-PR'><filename>PR</filename></link>:
+                            The recipe revision</listitem>
+                    </itemizedlist>
+                </para>
+
+                <para>
+                    As an example, assume a Source Directory top-level folder
+                    name <filename>poky</filename>, a default Build Directory at
+                    <filename>poky/build</filename>, and a
+                    <filename>qemux86-poky-linux</filename> machine target
+                    system.
+                    Furthermore, suppose your recipe is named
+                    <filename>foo_1.3.0-r0.bb</filename>.
+                    In this case, the work directory the build system uses to
+                    build the package would be as follows:
+                    <literallayout class='monospaced'>
+     poky/build/tmp/work/qemux86-poky-linux/foo/1.3.0-r0
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+    </glossdiv>
+
+    <glossdiv id='var-glossary-x'><title>X</title>
+
+        <glossentry id='var-XSERVER'><glossterm>XSERVER</glossterm>
+            <info>
+               XSERVER[doc] = "Specifies the packages that should be installed to provide an X server and drivers for the current machine."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+                    Specifies the packages that should be installed to
+                    provide an X server and drivers for the current machine,
+                    assuming your image directly includes
+                    <filename>packagegroup-core-x11-xserver</filename> or,
+                    perhaps indirectly, includes "x11-base" in
+                    <link linkend='var-IMAGE_FEATURES'><filename>IMAGE_FEATURES</filename></link>.
+                </para>
+
+                <para>
+                    The default value of <filename>XSERVER</filename>, if not
+                    specified in the machine configuration, is
+                    "xserver-xorg xf86-video-fbdev xf86-input-evdev".
+                </para>
+            </glossdef>
+        </glossentry>
+
+    </glossdiv>
+
+<!--            <glossdiv id='var-glossary-y'><title>Y</title>-->
+<!--            </glossdiv>-->
+
+<!--            <glossdiv id='var-glossary-z'><title>Z</title>-->
+<!--            </glossdiv>-->
+
+</glossary>
+</chapter>
+<!--
+vim: expandtab tw=80 ts=4
+-->
