blob: 9fe744aff5309fa793d9011d9e48440ff3e90859 [file] [log] [blame]
<!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 = "${DE