1.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
2
3******************
4Variables Glossary
5******************
6
7This chapter lists common variables used in the OpenEmbedded build
8system and gives an overview of their function and contents.
9
10:term:`A <ABIEXTENSION>` :term:`B` :term:`C <CACHE>`
11:term:`D` :term:`E <EFI_PROVIDER>` :term:`F <FEATURE_PACKAGES>`
12:term:`G <GCCPIE>` :term:`H <HOMEPAGE>` :term:`I <ICECC_DISABLED>`
13:term:`K <KARCH>` :term:`L <LABELS>` :term:`M <MACHINE>`
14:term:`N <NATIVELSBSTRING>` :term:`O <OBJCOPY>` :term:`P`
15:term:`R <RANLIB>` :term:`S` :term:`T`
16:term:`U <UBOOT_CONFIG>` :term:`V <VOLATILE_LOG_DIR>`
17:term:`W <WARN_QA>` :term:`X <XSERVER>`
18
19.. glossary::
20   :sorted:
21
22   :term:`ABIEXTENSION`
23      Extension to the Application Binary Interface (ABI) field of the GNU
24      canonical architecture name (e.g. "eabi").
25
26      ABI extensions are set in the machine include files. For example, the
27      ``meta/conf/machine/include/arm/arch-arm.inc`` file sets the
28      following extension::
29
30         ABIEXTENSION = "eabi"
31
32   :term:`ALLOW_EMPTY`
33      Specifies whether to produce an output package even if it is empty.
34      By default, BitBake does not produce empty packages. This default
35      behavior can cause issues when there is an
36      :term:`RDEPENDS` or some other hard runtime
37      requirement on the existence of the package.
38
39      Like all package-controlling variables, you must always use them in
40      conjunction with a package name override, as in::
41
42         ALLOW_EMPTY:${PN} = "1"
43         ALLOW_EMPTY:${PN}-dev = "1"
44         ALLOW_EMPTY:${PN}-staticdev = "1"
45
46   :term:`ALTERNATIVE`
47      Lists commands in a package that need an alternative binary naming
48      scheme. Sometimes the same command is provided in multiple packages.
49      When this occurs, the OpenEmbedded build system needs to use the
50      alternatives system to create a different binary naming scheme so the
51      commands can co-exist.
52
53      To use the variable, list out the package's commands that are also
54      provided by another package. For example, if the ``busybox`` package
55      has four such commands, you identify them as follows::
56
57         ALTERNATIVE:busybox = "sh sed test bracket"
58
59      For more information on the alternatives system, see the
60      ":ref:`ref-classes-update-alternatives`"
61      section.
62
63   :term:`ALTERNATIVE_LINK_NAME`
64      Used by the alternatives system to map duplicated commands to actual
65      locations. For example, if the ``bracket`` command provided by the
66      ``busybox`` package is duplicated through another package, you must
67      use the :term:`ALTERNATIVE_LINK_NAME` variable to specify the actual
68      location::
69
70         ALTERNATIVE_LINK_NAME[bracket] = "/usr/bin/["
71
72      In this example, the binary for the ``bracket`` command (i.e. ``[``)
73      from the ``busybox`` package resides in ``/usr/bin/``.
74
75      .. note::
76
77         If :term:`ALTERNATIVE_LINK_NAME` is not defined, it defaults to ``${bindir}/name``.
78
79      For more information on the alternatives system, see the
80      ":ref:`ref-classes-update-alternatives`"
81      section.
82
83   :term:`ALTERNATIVE_PRIORITY`
84      Used by the alternatives system to create default priorities for
85      duplicated commands. You can use the variable to create a single
86      default regardless of the command name or package, a default for
87      specific duplicated commands regardless of the package, or a default
88      for specific commands tied to particular packages. Here are the
89      available syntax forms::
90
91         ALTERNATIVE_PRIORITY = "priority"
92         ALTERNATIVE_PRIORITY[name] = "priority"
93         ALTERNATIVE_PRIORITY_pkg[name] = "priority"
94
95      For more information on the alternatives system, see the
96      ":ref:`ref-classes-update-alternatives`"
97      section.
98
99   :term:`ALTERNATIVE_TARGET`
100      Used by the alternatives system to create default link locations for
101      duplicated commands. You can use the variable to create a single
102      default location for all duplicated commands regardless of the
103      command name or package, a default for specific duplicated commands
104      regardless of the package, or a default for specific commands tied to
105      particular packages. Here are the available syntax forms::
106
107         ALTERNATIVE_TARGET = "target"
108         ALTERNATIVE_TARGET[name] = "target"
109         ALTERNATIVE_TARGET_pkg[name] = "target"
110
111      .. note::
112
113         If :term:`ALTERNATIVE_TARGET` is not defined, it inherits the value
114         from the :term:`ALTERNATIVE_LINK_NAME` variable.
115
116         If :term:`ALTERNATIVE_LINK_NAME` and :term:`ALTERNATIVE_TARGET` are the
117         same, the target for :term:`ALTERNATIVE_TARGET` has "``.{BPN}``"
118         appended to it.
119
120         Finally, if the file referenced has not been renamed, the
121         alternatives system will rename it to avoid the need to rename
122         alternative files in the :ref:`ref-tasks-install`
123         task while retaining support for the command if necessary.
124
125      For more information on the alternatives system, see the
126      ":ref:`ref-classes-update-alternatives`" section.
127
128   :term:`ANY_OF_DISTRO_FEATURES`
129      When inheriting the :ref:`ref-classes-features_check`
130      class, this variable identifies a list of distribution features where
131      at least one must be enabled in the current configuration in order
132      for the OpenEmbedded build system to build the recipe. In other words,
133      if none of the features listed in :term:`ANY_OF_DISTRO_FEATURES`
134      appear in :term:`DISTRO_FEATURES` within the current configuration, then
135      the recipe will be skipped, and if the build system attempts to build
136      the recipe then an error will be triggered.
137
138   :term:`APPEND`
139      An override list of append strings for each target specified with
140      :term:`LABELS`.
141
142      See the :ref:`ref-classes-grub-efi` class for more
143      information on how this variable is used.
144
145   :term:`AR`
146      The minimal command and arguments used to run ``ar``.
147
148   :term:`ARCHIVER_MODE`
149      When used with the :ref:`ref-classes-archiver` class,
150      determines the type of information used to create a released archive.
151      You can use this variable to create archives of patched source,
152      original source, configured source, and so forth by employing the
153      following variable flags (varflags)::
154
155         ARCHIVER_MODE[src] = "original"                   # Uses original (unpacked) source files.
156         ARCHIVER_MODE[src] = "patched"                    # Uses patched source files. This is the default.
157         ARCHIVER_MODE[src] = "configured"                 # Uses configured source files.
158         ARCHIVER_MODE[diff] = "1"                         # Uses patches between do_unpack and do_patch.
159         ARCHIVER_MODE[diff-exclude] ?= "file file ..."    # Lists files and directories to exclude from diff.
160         ARCHIVER_MODE[dumpdata] = "1"                     # Uses environment data.
161         ARCHIVER_MODE[recipe] = "1"                       # Uses recipe and include files.
162         ARCHIVER_MODE[srpm] = "1"                         # Uses RPM package files.
163
164      For information on how the variable works, see the
165      ``meta/classes/archiver.bbclass`` file in the :term:`Source Directory`.
166
167   :term:`AS`
168      Minimal command and arguments needed to run the assembler.
169
170   :term:`ASSUME_PROVIDED`
171      Lists recipe names (:term:`PN` values) BitBake does not
172      attempt to build. Instead, BitBake assumes these recipes have already
173      been built.
174
175      In OpenEmbedded-Core, :term:`ASSUME_PROVIDED` mostly specifies native
176      tools that should not be built. An example is ``git-native``, which
177      when specified, allows for the Git binary from the host to be used
178      rather than building ``git-native``.
179
180   :term:`ASSUME_SHLIBS`
181      Provides additional ``shlibs`` provider mapping information, which
182      adds to or overwrites the information provided automatically by the
183      system. Separate multiple entries using spaces.
184
185      As an example, use the following form to add an ``shlib`` provider of
186      shlibname in packagename with the optional version::
187
188         shlibname:packagename[_version]
189
190      Here is an example that adds a shared library named ``libEGL.so.1``
191      as being provided by the ``libegl-implementation`` package::
192
193         ASSUME_SHLIBS = "libEGL.so.1:libegl-implementation"
194
195   :term:`AUTHOR`
196      The email address used to contact the original author or authors in
197      order to send patches and forward bugs.
198
199   :term:`AUTO_LIBNAME_PKGS`
200      When the :ref:`ref-classes-debian` class is inherited,
201      which is the default behavior, :term:`AUTO_LIBNAME_PKGS` specifies which
202      packages should be checked for libraries and renamed according to
203      Debian library package naming.
204
205      The default value is "${PACKAGES}", which causes the
206      :ref:`ref-classes-debian` class to act on all packages that are
207      explicitly generated by the recipe.
208
209   :term:`AUTOREV`
210      When :term:`SRCREV` is set to the value of this variable, it specifies to
211      use the latest source revision in the repository. Here is an example::
212
213         SRCREV = "${AUTOREV}"
214
215      If you use the previous statement to retrieve the latest version of
216      software, you need to be sure :term:`PV` contains
217      ``${``\ :term:`SRCPV`\ ``}``. For example, suppose you have a kernel
218      recipe that inherits the :ref:`ref-classes-kernel` class and you
219      use the previous statement. In this example, ``${SRCPV}`` does not
220      automatically get into :term:`PV`. Consequently, you need to change
221      :term:`PV` in your recipe so that it does contain ``${SRCPV}``.
222
223      For more information see the
224      ":ref:`dev-manual/packages:automatically incrementing a package version number`"
225      section in the Yocto Project Development Tasks Manual.
226
227   :term:`AUTO_SYSLINUXMENU`
228      Enables creating an automatic menu for the syslinux bootloader. You
229      must set this variable in your recipe. The
230      :ref:`ref-classes-syslinux` class checks this variable.
231
232   :term:`AVAILTUNES`
233      The list of defined CPU and Application Binary Interface (ABI)
234      tunings (i.e. "tunes") available for use by the OpenEmbedded build
235      system.
236
237      The list simply presents the tunes that are available. Not all tunes
238      may be compatible with a particular machine configuration, or with
239      each other in a
240      :ref:`Multilib <dev-manual/libraries:combining multiple versions of library files into one image>`
241      configuration.
242
243      To add a tune to the list, be sure to append it with spaces using the
244      "+=" BitBake operator. Do not simply replace the list by using the
245      "=" operator. See the
246      ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:basic syntax`" section in the BitBake
247      User Manual for more information.
248
249   :term:`AZ_SAS`
250      Azure Storage Shared Access Signature, when using the
251      :ref:`Azure Storage fetcher (az://) <bitbake-user-manual/bitbake-user-manual-fetching:fetchers>`
252      This variable can be defined to be used by the fetcher to authenticate
253      and gain access to non-public artifacts::
254
255         AZ_SAS = ""se=2021-01-01&sp=r&sv=2018-11-09&sr=c&skoid=<skoid>&sig=<signature>""
256
257      For more information see Microsoft's Azure Storage documentation at
258      https://docs.microsoft.com/en-us/azure/storage/common/storage-sas-overview
259
260   :term:`B`
261      The directory within the :term:`Build Directory` in which the
262      OpenEmbedded build system places generated objects during a recipe's
263      build process. By default, this directory is the same as the
264      :term:`S` directory, which is defined as::
265
266         S = "${WORKDIR}/${BP}"
267
268      You can separate the (:term:`S`) directory and the directory pointed to
269      by the :term:`B` variable. Most Autotools-based recipes support
270      separating these directories. The build system defaults to using
271      separate directories for ``gcc`` and some kernel recipes.
272
273   :term:`BAD_RECOMMENDATIONS`
274      Lists "recommended-only" packages to not install. Recommended-only
275      packages are packages installed only through the
276      :term:`RRECOMMENDS` variable. You can prevent any
277      of these "recommended" packages from being installed by listing them
278      with the :term:`BAD_RECOMMENDATIONS` variable::
279
280         BAD_RECOMMENDATIONS = "package_name package_name package_name ..."
281
282      You can set this variable globally in your ``local.conf`` file or you
283      can attach it to a specific image recipe by using the recipe name
284      override::
285
286         BAD_RECOMMENDATIONS:pn-target_image = "package_name"
287
288      It is important to realize that if you choose to not install packages
289      using this variable and some other packages are dependent on them
290      (i.e. listed in a recipe's :term:`RDEPENDS`
291      variable), the OpenEmbedded build system ignores your request and
292      will install the packages to avoid dependency errors.
293
294      This variable is supported only when using the IPK and RPM
295      packaging backends. DEB is not supported.
296
297      See the :term:`NO_RECOMMENDATIONS` and the
298      :term:`PACKAGE_EXCLUDE` variables for related
299      information.
300
301   :term:`BASE_LIB`
302      The library directory name for the CPU or Application Binary
303      Interface (ABI) tune. The :term:`BASE_LIB` applies only in the Multilib
304      context. See the ":ref:`dev-manual/libraries:combining multiple versions of library files into one image`"
305      section in the Yocto Project Development Tasks Manual for information
306      on Multilib.
307
308      The :term:`BASE_LIB` variable is defined in the machine include files in
309      the :term:`Source Directory`. If Multilib is not
310      being used, the value defaults to "lib".
311
312   :term:`BASE_WORKDIR`
313      Points to the base of the work directory for all recipes. The default
314      value is "${TMPDIR}/work".
315
316   :term:`BB_ALLOWED_NETWORKS`
317      Specifies a space-delimited list of hosts that the fetcher is allowed
318      to use to obtain the required source code. Following are
319      considerations surrounding this variable:
320
321      -  This host list is only used if :term:`BB_NO_NETWORK` is either not set
322         or set to "0".
323
324      -  There is limited support for wildcard matching against the beginning of
325         host names. For example, the following setting matches
326         ``git.gnu.org``, ``ftp.gnu.org``, and ``foo.git.gnu.org``::
327
328            BB_ALLOWED_NETWORKS = "*.gnu.org"
329
330         .. note::
331
332            The use of the "``*``" character only works at the beginning of
333            a host name and it must be isolated from the remainder of the
334            host name. You cannot use the wildcard character in any other
335            location of the name or combined with the front part of the
336            name.
337
338            For example, ``*.foo.bar`` is supported, while ``*aa.foo.bar``
339            is not.
340
341      -  Mirrors not in the host list are skipped and logged in debug.
342
343      -  Attempts to access networks not in the host list cause a failure.
344
345      Using :term:`BB_ALLOWED_NETWORKS` in conjunction with
346      :term:`PREMIRRORS` is very useful. Adding the host
347      you want to use to :term:`PREMIRRORS` results in the source code being
348      fetched from an allowed location and avoids raising an error when a
349      host that is not allowed is in a :term:`SRC_URI`
350      statement. This is because the fetcher does not attempt to use the
351      host listed in :term:`SRC_URI` after a successful fetch from the
352      :term:`PREMIRRORS` occurs.
353
354   :term:`BB_BASEHASH_IGNORE_VARS`
355      See :term:`bitbake:BB_BASEHASH_IGNORE_VARS` in the BitBake manual.
356
357   :term:`BB_CACHEDIR`
358      See :term:`bitbake:BB_CACHEDIR` in the BitBake manual.
359
360   :term:`BB_CHECK_SSL_CERTS`
361      See :term:`bitbake:BB_CHECK_SSL_CERTS` in the BitBake manual.
362
363   :term:`BB_CONSOLELOG`
364      See :term:`bitbake:BB_CONSOLELOG` in the BitBake manual.
365
366   :term:`BB_CURRENTTASK`
367      See :term:`bitbake:BB_CURRENTTASK` in the BitBake manual.
368
369   :term:`BB_DANGLINGAPPENDS_WARNONLY`
370      Defines how BitBake handles situations where an append file
371      (``.bbappend``) has no corresponding recipe file (``.bb``). This
372      condition often occurs when layers get out of sync (e.g. ``oe-core``
373      bumps a recipe version and the old recipe no longer exists and the
374      other layer has not been updated to the new version of the recipe
375      yet).
376
377      The default fatal behavior is safest because it is the sane reaction
378      given something is out of sync. It is important to realize when your
379      changes are no longer being applied.
380
381      You can change the default behavior by setting this variable to "1",
382      "yes", or "true" in your ``local.conf`` file, which is located in the
383      :term:`Build Directory`: Here is an example::
384
385         BB_DANGLINGAPPENDS_WARNONLY = "1"
386
387   :term:`BB_DEFAULT_TASK`
388      See :term:`bitbake:BB_DEFAULT_TASK` in the BitBake manual.
389
390   :term:`BB_DEFAULT_UMASK`
391      See :term:`bitbake:BB_DEFAULT_UMASK` in the BitBake manual.
392
393   :term:`BB_DISKMON_DIRS`
394      Monitors disk space and available inodes during the build and allows
395      you to control the build based on these parameters.
396
397      Disk space monitoring is disabled by default. To enable monitoring,
398      add the :term:`BB_DISKMON_DIRS` variable to your ``conf/local.conf`` file
399      found in the :term:`Build Directory`. Use the
400      following form:
401
402      .. code-block:: none
403
404         BB_DISKMON_DIRS = "action,dir,threshold [...]"
405
406         where:
407
408            action is:
409               ABORT:     Immediately stop the build when
410                          a threshold is broken.
411               STOPTASKS: Stop the build after the currently
412                          executing tasks have finished when
413                          a threshold is broken.
414               WARN:      Issue a warning but continue the
415                          build when a threshold is broken.
416                          Subsequent warnings are issued as
417                          defined by the BB_DISKMON_WARNINTERVAL
418                          variable, which must be defined in
419                          the conf/local.conf file.
420
421            dir is:
422               Any directory you choose. You can specify one or
423               more directories to monitor by separating the
424               groupings with a space.  If two directories are
425               on the same device, only the first directory
426               is monitored.
427
428            threshold is:
429               Either the minimum available disk space,
430               the minimum number of free inodes, or
431               both.  You must specify at least one.  To
432               omit one or the other, simply omit the value.
433               Specify the threshold using G, M, K for Gbytes,
434               Mbytes, and Kbytes, respectively. If you do
435               not specify G, M, or K, Kbytes is assumed by
436               default.  Do not use GB, MB, or KB.
437
438      Here are some examples::
439
440         BB_DISKMON_DIRS = "ABORT,${TMPDIR},1G,100K WARN,${SSTATE_DIR},1G,100K"
441         BB_DISKMON_DIRS = "STOPTASKS,${TMPDIR},1G"
442         BB_DISKMON_DIRS = "ABORT,${TMPDIR},,100K"
443
444      The first example works only if you also provide the
445      :term:`BB_DISKMON_WARNINTERVAL`
446      variable in the ``conf/local.conf``. This example causes the build
447      system to immediately stop when either the disk space in
448      ``${TMPDIR}`` drops below 1 Gbyte or the available free inodes drops
449      below 100 Kbytes. Because two directories are provided with the
450      variable, the build system also issue a warning when the disk space
451      in the ``${SSTATE_DIR}`` directory drops below 1 Gbyte or the number
452      of free inodes drops below 100 Kbytes. Subsequent warnings are issued
453      during intervals as defined by the :term:`BB_DISKMON_WARNINTERVAL`
454      variable.
455
456      The second example stops the build after all currently executing
457      tasks complete when the minimum disk space in the ``${TMPDIR}``
458      directory drops below 1 Gbyte. No disk monitoring occurs for the free
459      inodes in this case.
460
461      The final example immediately stops the build when the number of
462      free inodes in the ``${TMPDIR}`` directory drops below 100 Kbytes. No
463      disk space monitoring for the directory itself occurs in this case.
464
465   :term:`BB_DISKMON_WARNINTERVAL`
466      Defines the disk space and free inode warning intervals. To set these
467      intervals, define the variable in your ``conf/local.conf`` file in
468      the :term:`Build Directory`.
469
470      If you are going to use the :term:`BB_DISKMON_WARNINTERVAL` variable, you
471      must also use the :term:`BB_DISKMON_DIRS`
472      variable and define its action as "WARN". During the build,
473      subsequent warnings are issued each time disk space or number of free
474      inodes further reduces by the respective interval.
475
476      If you do not provide a :term:`BB_DISKMON_WARNINTERVAL` variable and you
477      do use :term:`BB_DISKMON_DIRS` with the "WARN" action, the disk
478      monitoring interval defaults to the following::
479
480         BB_DISKMON_WARNINTERVAL = "50M,5K"
481
482      When specifying the variable in your configuration file, use the
483      following form:
484
485      .. code-block:: none
486
487         BB_DISKMON_WARNINTERVAL = "disk_space_interval,disk_inode_interval"
488
489         where:
490
491            disk_space_interval is:
492               An interval of memory expressed in either
493               G, M, or K for Gbytes, Mbytes, or Kbytes,
494               respectively. You cannot use GB, MB, or KB.
495
496            disk_inode_interval is:
497               An interval of free inodes expressed in either
498               G, M, or K for Gbytes, Mbytes, or Kbytes,
499               respectively. You cannot use GB, MB, or KB.
500
501      Here is an example::
502
503         BB_DISKMON_DIRS = "WARN,${SSTATE_DIR},1G,100K"
504         BB_DISKMON_WARNINTERVAL = "50M,5K"
505
506      These variables cause the
507      OpenEmbedded build system to issue subsequent warnings each time the
508      available disk space further reduces by 50 Mbytes or the number of
509      free inodes further reduces by 5 Kbytes in the ``${SSTATE_DIR}``
510      directory. Subsequent warnings based on the interval occur each time
511      a respective interval is reached beyond the initial warning (i.e. 1
512      Gbytes and 100 Kbytes).
513
514   :term:`BB_ENV_PASSTHROUGH`
515      See :term:`bitbake:BB_ENV_PASSTHROUGH` in the BitBake manual.
516
517   :term:`BB_ENV_PASSTHROUGH_ADDITIONS`
518      See :term:`bitbake:BB_ENV_PASSTHROUGH_ADDITIONS` in the BitBake manual.
519
520   :term:`BB_FETCH_PREMIRRORONLY`
521      See :term:`bitbake:BB_FETCH_PREMIRRORONLY` in the BitBake manual.
522
523   :term:`BB_FILENAME`
524      See :term:`bitbake:BB_FILENAME` in the BitBake manual.
525
526   :term:`BB_GENERATE_MIRROR_TARBALLS`
527      Causes tarballs of the source control repositories (e.g. Git
528      repositories), including metadata, to be placed in the
529      :term:`DL_DIR` directory.
530
531      For performance reasons, creating and placing tarballs of these
532      repositories is not the default action by the OpenEmbedded build
533      system::
534
535         BB_GENERATE_MIRROR_TARBALLS = "1"
536
537      Set this variable in your
538      ``local.conf`` file in the :term:`Build Directory`.
539
540      Once you have the tarballs containing your source files, you can
541      clean up your :term:`DL_DIR` directory by deleting any Git or other
542      source control work directories.
543
544   :term:`BB_GENERATE_SHALLOW_TARBALLS`
545      See :term:`bitbake:BB_GENERATE_SHALLOW_TARBALLS` in the BitBake manual.
546
547   :term:`BB_GIT_SHALLOW`
548      See :term:`bitbake:BB_GIT_SHALLOW` in the BitBake manual.
549
550   :term:`BB_GIT_SHALLOW_DEPTH`
551      See :term:`bitbake:BB_GIT_SHALLOW_DEPTH` in the BitBake manual.
552
553   :term:`BB_HASHCHECK_FUNCTION`
554      See :term:`bitbake:BB_HASHCHECK_FUNCTION` in the BitBake manual.
555
556   :term:`BB_HASHCONFIG_IGNORE_VARS`
557      See :term:`bitbake:BB_HASHCONFIG_IGNORE_VARS` in the BitBake manual.
558
559   :term:`BB_HASHSERVE`
560      See :term:`bitbake:BB_HASHSERVE` in the BitBake manual.
561
562   :term:`BB_HASHSERVE_UPSTREAM`
563      See :term:`bitbake:BB_HASHSERVE_UPSTREAM` in the BitBake manual.
564
565   :term:`BB_INVALIDCONF`
566      See :term:`bitbake:BB_INVALIDCONF` in the BitBake manual.
567
568   :term:`BB_LOGCONFIG`
569      See :term:`bitbake:BB_LOGCONFIG` in the BitBake manual.
570
571   :term:`BB_LOGFMT`
572      See :term:`bitbake:BB_LOGFMT` in the BitBake manual.
573
574   :term:`BB_MULTI_PROVIDER_ALLOWED`
575      See :term:`bitbake:BB_MULTI_PROVIDER_ALLOWED` in the BitBake manual.
576
577   :term:`BB_NICE_LEVEL`
578      See :term:`bitbake:BB_NICE_LEVEL` in the BitBake manual.
579
580   :term:`BB_NO_NETWORK`
581      See :term:`bitbake:BB_NO_NETWORK` in the BitBake manual.
582
583   :term:`BB_NUMBER_PARSE_THREADS`
584      See :term:`bitbake:BB_NUMBER_PARSE_THREADS` in the BitBake manual.
585
586   :term:`BB_NUMBER_THREADS`
587      The maximum number of tasks BitBake should run in parallel at any one
588      time. The OpenEmbedded build system automatically configures this
589      variable to be equal to the number of cores on the build system. For
590      example, a system with a dual core processor that also uses
591      hyper-threading causes the :term:`BB_NUMBER_THREADS` variable to default
592      to "4".
593
594      For single socket systems (i.e. one CPU), you should not have to
595      override this variable to gain optimal parallelism during builds.
596      However, if you have very large systems that employ multiple physical
597      CPUs, you might want to make sure the :term:`BB_NUMBER_THREADS` variable
598      is not set higher than "20".
599
600      For more information on speeding up builds, see the
601      ":ref:`dev-manual/speeding-up-build:speeding up a build`"
602      section in the Yocto Project Development Tasks Manual.
603
604      On the other hand, if your goal is to limit the amount of system
605      resources consumed by BitBake tasks, setting :term:`BB_NUMBER_THREADS`
606      to a number lower than the number of CPU threads in your machine
607      won't be sufficient. That's because each package will still be built
608      and installed through a number of parallel jobs specified by the
609      :term:`PARALLEL_MAKE` variable, which is by default the number of CPU
610      threads in your system, and is not impacted by the
611      :term:`BB_NUMBER_THREADS` value.
612
613      So, if you set :term:`BB_NUMBER_THREADS` to "1" but don't set
614      :term:`PARALLEL_MAKE`, most of your system resources will be consumed
615      anyway.
616
617      Therefore, if you intend to reduce the load of your build system by
618      setting :term:`BB_NUMBER_THREADS` to a relatively low value compared
619      to the number of CPU threads on your system, you should also set
620      :term:`PARALLEL_MAKE` to a similarly low value.
621
622      An alternative to using :term:`BB_NUMBER_THREADS` to keep the usage
623      of build system resources under control is to use the smarter
624      :term:`BB_PRESSURE_MAX_CPU`, :term:`BB_PRESSURE_MAX_IO` or
625      :term:`BB_PRESSURE_MAX_MEMORY` controls. They will prevent BitBake
626      from starting new tasks as long as thresholds are exceeded. Anyway,
627      as with :term:`BB_NUMBER_THREADS`, such controls won't prevent the
628      tasks already being run from using all CPU threads on the system
629      if :term:`PARALLEL_MAKE` is not set to a low value.
630
631   :term:`BB_ORIGENV`
632      See :term:`bitbake:BB_ORIGENV` in the BitBake manual.
633
634   :term:`BB_PRESERVE_ENV`
635      See :term:`bitbake:BB_PRESERVE_ENV` in the BitBake manual.
636
637   :term:`BB_PRESSURE_MAX_CPU`
638      See :term:`bitbake:BB_PRESSURE_MAX_CPU` in the BitBake manual.
639
640   :term:`BB_PRESSURE_MAX_IO`
641      See :term:`bitbake:BB_PRESSURE_MAX_IO` in the BitBake manual.
642
643   :term:`BB_PRESSURE_MAX_MEMORY`
644      See :term:`bitbake:BB_PRESSURE_MAX_MEMORY` in the BitBake manual.
645
646   :term:`BB_RUNFMT`
647      See :term:`bitbake:BB_RUNFMT` in the BitBake manual.
648
649   :term:`BB_RUNTASK`
650      See :term:`bitbake:BB_RUNTASK` in the BitBake manual.
651
652   :term:`BB_SCHEDULER`
653      See :term:`bitbake:BB_SCHEDULER` in the BitBake manual.
654
655   :term:`BB_SCHEDULERS`
656      See :term:`bitbake:BB_SCHEDULERS` in the BitBake manual.
657
658   :term:`BB_SERVER_TIMEOUT`
659      Specifies the time (in seconds) after which to unload the BitBake
660      server due to inactivity. Set :term:`BB_SERVER_TIMEOUT` to determine how
661      long the BitBake server stays resident between invocations.
662
663      For example, the following statement in your ``local.conf`` file
664      instructs the server to be unloaded after 20 seconds of inactivity::
665
666         BB_SERVER_TIMEOUT = "20"
667
668      If you want the server to never be unloaded,
669      set :term:`BB_SERVER_TIMEOUT` to "-1".
670
671   :term:`BB_SETSCENE_DEPVALID`
672      See :term:`bitbake:BB_SETSCENE_DEPVALID` in the BitBake manual.
673
674   :term:`BB_SIGNATURE_EXCLUDE_FLAGS`
675      See :term:`bitbake:BB_SIGNATURE_EXCLUDE_FLAGS` in the BitBake manual.
676
677   :term:`BB_SIGNATURE_HANDLER`
678      See :term:`bitbake:BB_SIGNATURE_HANDLER` in the BitBake manual.
679
680   :term:`BB_SRCREV_POLICY`
681      See :term:`bitbake:BB_SRCREV_POLICY` in the BitBake manual.
682
683   :term:`BB_STRICT_CHECKSUM`
684      See :term:`bitbake:BB_STRICT_CHECKSUM` in the BitBake manual.
685
686   :term:`BB_TASK_IONICE_LEVEL`
687      See :term:`bitbake:BB_TASK_IONICE_LEVEL` in the BitBake manual.
688
689   :term:`BB_TASK_NICE_LEVEL`
690      See :term:`bitbake:BB_TASK_NICE_LEVEL` in the BitBake manual.
691
692   :term:`BB_TASKHASH`
693      See :term:`bitbake:BB_TASKHASH` in the BitBake manual.
694
695   :term:`BB_VERBOSE_LOGS`
696      See :term:`bitbake:BB_VERBOSE_LOGS` in the BitBake manual.
697
698   :term:`BB_WORKERCONTEXT`
699      See :term:`bitbake:BB_WORKERCONTEXT` in the BitBake manual.
700
701   :term:`BBCLASSEXTEND`
702      Allows you to extend a recipe so that it builds variants of the
703      software. There are common variants for recipes as "natives" like
704      ``quilt-native``, which is a copy of Quilt built to run on the build
705      system; "crosses" such as ``gcc-cross``, which is a compiler built to
706      run on the build machine but produces binaries that run on the target
707      :term:`MACHINE`; ":ref:`ref-classes-nativesdk`", which
708      targets the SDK machine instead of :term:`MACHINE`; and "mulitlibs" in
709      the form "``multilib:``\ multilib_name".
710
711      To build a different variant of the recipe with a minimal amount of
712      code, it usually is as simple as adding the following to your recipe::
713
714         BBCLASSEXTEND =+ "native nativesdk"
715         BBCLASSEXTEND =+ "multilib:multilib_name"
716
717      .. note::
718
719         Internally, the :term:`BBCLASSEXTEND` mechanism generates recipe
720         variants by rewriting variable values and applying overrides such
721         as ``:class-native``. For example, to generate a native version of
722         a recipe, a :term:`DEPENDS` on "foo" is rewritten
723         to a :term:`DEPENDS` on "foo-native".
724
725         Even when using :term:`BBCLASSEXTEND`, the recipe is only parsed once.
726         Parsing once adds some limitations. For example, it is not
727         possible to include a different file depending on the variant,
728         since ``include`` statements are processed when the recipe is
729         parsed.
730
731   :term:`BBDEBUG`
732      See :term:`bitbake:BBDEBUG` in the BitBake manual.
733
734   :term:`BBFILE_COLLECTIONS`
735      Lists the names of configured layers. These names are used to find
736      the other ``BBFILE_*`` variables. Typically, each layer will append
737      its name to this variable in its ``conf/layer.conf`` file.
738
739   :term:`BBFILE_PATTERN`
740      Variable that expands to match files from
741      :term:`BBFILES` in a particular layer. This variable
742      is used in the ``conf/layer.conf`` file and must be suffixed with the
743      name of the specific layer (e.g. ``BBFILE_PATTERN_emenlow``).
744
745   :term:`BBFILE_PRIORITY`
746      Assigns the priority for recipe files in each layer.
747
748      This variable is useful in situations where the same recipe appears
749      in more than one layer. Setting this variable allows you to
750      prioritize a layer against other layers that contain the same recipe
751      --- effectively letting you control the precedence for the multiple
752      layers. The precedence established through this variable stands
753      regardless of a recipe's version (:term:`PV` variable). For
754      example, a layer that has a recipe with a higher :term:`PV` value but for
755      which the :term:`BBFILE_PRIORITY` is set to have a lower precedence still
756      has a lower precedence.
757
758      A larger value for the :term:`BBFILE_PRIORITY` variable results in a
759      higher precedence. For example, the value 6 has a higher precedence
760      than the value 5. If not specified, the :term:`BBFILE_PRIORITY` variable
761      is set based on layer dependencies (see the :term:`LAYERDEPENDS` variable
762      for more information. The default priority, if unspecified for a
763      layer with no dependencies, is the lowest defined priority + 1 (or 1
764      if no priorities are defined).
765
766      .. tip::
767
768         You can use the command ``bitbake-layers show-layers``
769         to list all configured layers along with their priorities.
770
771   :term:`BBFILES`
772      A space-separated list of recipe files BitBake uses to build
773      software.
774
775      When specifying recipe files, you can pattern match using Python's
776      `glob <https://docs.python.org/3/library/glob.html>`__ syntax.
777      For details on the syntax, see the documentation by following the
778      previous link.
779
780   :term:`BBFILES_DYNAMIC`
781      Activates content when identified layers are present. You identify
782      the layers by the collections that the layers define.
783
784      Use the :term:`BBFILES_DYNAMIC` variable to avoid ``.bbappend`` files
785      whose corresponding ``.bb`` file is in a layer that attempts to
786      modify other layers through ``.bbappend`` but does not want to
787      introduce a hard dependency on those other layers.
788
789      Use the following form for :term:`BBFILES_DYNAMIC`:
790      ``collection_name:filename_pattern``.
791
792      The following example identifies two collection names and two
793      filename patterns::
794
795         BBFILES_DYNAMIC += " \
796            clang-layer:${LAYERDIR}/bbappends/meta-clang/*/*/*.bbappend \
797            core:${LAYERDIR}/bbappends/openembedded-core/meta/*/*/*.bbappend \
798            "
799
800      This next example shows an error message that occurs because invalid
801      entries are found, which cause parsing to fail:
802
803      .. code-block:: none
804
805         ERROR: BBFILES_DYNAMIC entries must be of the form <collection name>:<filename pattern>, not:
806             /work/my-layer/bbappends/meta-security-isafw/*/*/*.bbappend
807             /work/my-layer/bbappends/openembedded-core/meta/*/*/*.bbappend
808
809   :term:`BBINCLUDED`
810      See :term:`bitbake:BBINCLUDED` in the BitBake manual.
811
812   :term:`BBINCLUDELOGS`
813      Variable that controls how BitBake displays logs on build failure.
814
815   :term:`BBINCLUDELOGS_LINES`
816      If :term:`BBINCLUDELOGS` is set, specifies the
817      maximum number of lines from the task log file to print when
818      reporting a failed task. If you do not set :term:`BBINCLUDELOGS_LINES`,
819      the entire log is printed.
820
821   :term:`BBLAYERS`
822      Lists the layers to enable during the build. This variable is defined
823      in the ``bblayers.conf`` configuration file in the :term:`Build Directory`.
824      Here is an example::
825
826         BBLAYERS = " \
827             /home/scottrif/poky/meta \
828             /home/scottrif/poky/meta-poky \
829             /home/scottrif/poky/meta-yocto-bsp \
830             /home/scottrif/poky/meta-mykernel \
831             "
832
833      This example enables four layers, one of which is a custom,
834      user-defined layer named ``meta-mykernel``.
835
836   :term:`BBLAYERS_FETCH_DIR`
837      See :term:`bitbake:BBLAYERS_FETCH_DIR` in the BitBake manual.
838
839   :term:`BBMASK`
840      Prevents BitBake from processing recipes and recipe append files.
841
842      You can use the :term:`BBMASK` variable to "hide" these ``.bb`` and
843      ``.bbappend`` files. BitBake ignores any recipe or recipe append
844      files that match any of the expressions. It is as if BitBake does not
845      see them at all. Consequently, matching files are not parsed or
846      otherwise used by BitBake.
847
848      The values you provide are passed to Python's regular expression
849      compiler. Consequently, the syntax follows Python's Regular
850      Expression (re) syntax. The expressions are compared against the full
851      paths to the files. For complete syntax information, see Python's
852      documentation at https://docs.python.org/3/library/re.html#regular-expression-syntax.
853
854      The following example uses a complete regular expression to tell
855      BitBake to ignore all recipe and recipe append files in the
856      ``meta-ti/recipes-misc/`` directory::
857
858         BBMASK = "meta-ti/recipes-misc/"
859
860      If you want to mask out multiple directories or recipes, you can
861      specify multiple regular expression fragments. This next example
862      masks out multiple directories and individual recipes::
863
864         BBMASK += "/meta-ti/recipes-misc/ meta-ti/recipes-ti/packagegroup/"
865         BBMASK += "/meta-oe/recipes-support/"
866         BBMASK += "/meta-foo/.*/openldap"
867         BBMASK += "opencv.*\.bbappend"
868         BBMASK += "lzma"
869
870      .. note::
871
872         When specifying a directory name, use the trailing slash character
873         to ensure you match just that directory name.
874
875   :term:`BBMULTICONFIG`
876      Specifies each additional separate configuration when you are
877      building targets with multiple configurations. Use this variable in
878      your ``conf/local.conf`` configuration file. Specify a
879      multiconfigname for each configuration file you are using. For
880      example, the following line specifies three configuration files::
881
882         BBMULTICONFIG = "configA configB configC"
883
884      Each configuration file you use must reside in a ``multiconfig``
885      subdirectory of a configuration directory within a layer, or
886      within the :term:`Build Directory` (e.g.
887      ``build_directory/conf/multiconfig/configA.conf`` or
888      ``mylayer/conf/multiconfig/configB.conf``).
889
890      For information on how to use :term:`BBMULTICONFIG` in an environment
891      that supports building targets with multiple configurations, see the
892      ":ref:`dev-manual/building:building images for multiple targets using multiple configurations`"
893      section in the Yocto Project Development Tasks Manual.
894
895   :term:`BBPATH`
896      See :term:`bitbake:BBPATH` in the BitBake manual.
897
898   :term:`BBSERVER`
899      If defined in the BitBake environment, :term:`BBSERVER` points to the
900      BitBake remote server.
901
902      Use the following format to export the variable to the BitBake
903      environment::
904
905         export BBSERVER=localhost:$port
906
907      By default, :term:`BBSERVER` also appears in :term:`BB_BASEHASH_IGNORE_VARS`.
908      Consequently, :term:`BBSERVER` is excluded from checksum and dependency
909      data.
910
911   :term:`BBTARGETS`
912      See :term:`bitbake:BBTARGETS` in the BitBake manual.
913
914   :term:`BINCONFIG`
915      When inheriting the :ref:`ref-classes-binconfig-disabled` class, this
916      variable specifies binary configuration scripts to disable in favor of
917      using ``pkg-config`` to query the information. The
918      :ref:`ref-classes-binconfig-disabled` class will modify the specified
919      scripts to return an error so that calls to them can be easily found
920      and replaced.
921
922      To add multiple scripts, separate them by spaces. Here is an example
923      from the ``libpng`` recipe::
924
925         BINCONFIG = "${bindir}/libpng-config ${bindir}/libpng16-config"
926
927   :term:`BINCONFIG_GLOB`
928      When inheriting the :ref:`ref-classes-binconfig` class,
929      this variable specifies a wildcard for configuration scripts that
930      need editing. The scripts are edited to correct any paths that have
931      been set up during compilation so that they are correct for use when
932      installed into the sysroot and called by the build processes of other
933      recipes.
934
935      .. note::
936
937         The :term:`BINCONFIG_GLOB` variable uses
938         `shell globbing <https://tldp.org/LDP/abs/html/globbingref.html>`__,
939         which is recognition and expansion of wildcards during pattern
940         matching. Shell globbing is very similar to
941         `fnmatch <https://docs.python.org/3/library/fnmatch.html#module-fnmatch>`__
942         and `glob <https://docs.python.org/3/library/glob.html>`__.
943
944      For more information on how this variable works, see
945      ``meta/classes-recipe/binconfig.bbclass`` in the :term:`Source Directory`.
946      You can also find general
947      information on the class in the
948      ":ref:`ref-classes-binconfig`" section.
949
950   :term:`BITBAKE_UI`
951      See :term:`bitbake:BITBAKE_UI` in the BitBake manual.
952
953   :term:`BP`
954      The base recipe name and version but without any special recipe name
955      suffix (i.e. ``-native``, ``lib64-``, and so forth). :term:`BP` is
956      comprised of the following::
957
958         ${BPN}-${PV}
959
960   :term:`BPN`
961      This variable is a version of the :term:`PN` variable with
962      common prefixes and suffixes removed, such as ``nativesdk-``,
963      ``-cross``, ``-native``, and multilib's ``lib64-`` and ``lib32-``.
964      The exact lists of prefixes and suffixes removed are specified by the
965      :term:`MLPREFIX` and
966      :term:`SPECIAL_PKGSUFFIX` variables,
967      respectively.
968
969   :term:`BUGTRACKER`
970      Specifies a URL for an upstream bug tracking website for a recipe.
971      The OpenEmbedded build system does not use this variable. Rather, the
972      variable is a useful pointer in case a bug in the software being
973      built needs to be manually reported.
974
975   :term:`BUILD_ARCH`
976      Specifies the architecture of the build host (e.g. ``i686``). The
977      OpenEmbedded build system sets the value of :term:`BUILD_ARCH` from the
978      machine name reported by the ``uname`` command.
979
980   :term:`BUILD_AS_ARCH`
981      Specifies the architecture-specific assembler flags for the build
982      host. By default, the value of :term:`BUILD_AS_ARCH` is empty.
983
984   :term:`BUILD_CC_ARCH`
985      Specifies the architecture-specific C compiler flags for the build
986      host. By default, the value of :term:`BUILD_CC_ARCH` is empty.
987
988   :term:`BUILD_CCLD`
989      Specifies the linker command to be used for the build host when the C
990      compiler is being used as the linker. By default, :term:`BUILD_CCLD`
991      points to GCC and passes as arguments the value of
992      :term:`BUILD_CC_ARCH`, assuming
993      :term:`BUILD_CC_ARCH` is set.
994
995   :term:`BUILD_CFLAGS`
996      Specifies the flags to pass to the C compiler when building for the
997      build host. When building in the ``-native`` context,
998      :term:`CFLAGS` is set to the value of this variable by
999      default.
1000
1001   :term:`BUILD_CPPFLAGS`
1002      Specifies the flags to pass to the C preprocessor (i.e. to both the C
1003      and the C++ compilers) when building for the build host. When
1004      building in the ``-native`` context, :term:`CPPFLAGS`
1005      is set to the value of this variable by default.
1006
1007   :term:`BUILD_CXXFLAGS`
1008      Specifies the flags to pass to the C++ compiler when building for the
1009      build host. When building in the ``-native`` context,
1010      :term:`CXXFLAGS` is set to the value of this variable
1011      by default.
1012
1013   :term:`BUILD_FC`
1014      Specifies the Fortran compiler command for the build host. By
1015      default, :term:`BUILD_FC` points to Gfortran and passes as arguments the
1016      value of :term:`BUILD_CC_ARCH`, assuming
1017      :term:`BUILD_CC_ARCH` is set.
1018
1019   :term:`BUILD_LD`
1020      Specifies the linker command for the build host. By default,
1021      :term:`BUILD_LD` points to the GNU linker (ld) and passes as arguments
1022      the value of :term:`BUILD_LD_ARCH`, assuming
1023      :term:`BUILD_LD_ARCH` is set.
1024
1025   :term:`BUILD_LD_ARCH`
1026      Specifies architecture-specific linker flags for the build host. By
1027      default, the value of :term:`BUILD_LD_ARCH` is empty.
1028
1029   :term:`BUILD_LDFLAGS`
1030      Specifies the flags to pass to the linker when building for the build
1031      host. When building in the ``-native`` context,
1032      :term:`LDFLAGS` is set to the value of this variable
1033      by default.
1034
1035   :term:`BUILD_OPTIMIZATION`
1036      Specifies the optimization flags passed to the C compiler when
1037      building for the build host or the SDK. The flags are passed through
1038      the :term:`BUILD_CFLAGS` and
1039      :term:`BUILDSDK_CFLAGS` default values.
1040
1041      The default value of the :term:`BUILD_OPTIMIZATION` variable is "-O2
1042      -pipe".
1043
1044   :term:`BUILD_OS`
1045      Specifies the operating system in use on the build host (e.g.
1046      "linux"). The OpenEmbedded build system sets the value of
1047      :term:`BUILD_OS` from the OS reported by the ``uname`` command --- the
1048      first word, converted to lower-case characters.
1049
1050   :term:`BUILD_PREFIX`
1051      The toolchain binary prefix used for native recipes. The OpenEmbedded
1052      build system uses the :term:`BUILD_PREFIX` value to set the
1053      :term:`TARGET_PREFIX` when building for :ref:`ref-classes-native` recipes.
1054
1055   :term:`BUILD_STRIP`
1056      Specifies the command to be used to strip debugging symbols from
1057      binaries produced for the build host. By default, :term:`BUILD_STRIP`
1058      points to
1059      ``${``\ :term:`BUILD_PREFIX`\ ``}strip``.
1060
1061   :term:`BUILD_SYS`
1062      Specifies the system, including the architecture and the operating
1063      system, to use when building for the build host (i.e. when building
1064      :ref:`ref-classes-native` recipes).
1065
1066      The OpenEmbedded build system automatically sets this variable based
1067      on :term:`BUILD_ARCH`,
1068      :term:`BUILD_VENDOR`, and
1069      :term:`BUILD_OS`. You do not need to set the
1070      :term:`BUILD_SYS` variable yourself.
1071
1072   :term:`BUILD_VENDOR`
1073      Specifies the vendor name to use when building for the build host.
1074      The default value is an empty string ("").
1075
1076   :term:`BUILDDIR`
1077      Points to the location of the :term:`Build Directory`. You can define
1078      this directory indirectly through the :ref:`structure-core-script` script
1079      by passing in a :term:`Build Directory` path when you run the script. If
1080      you run the script and do not provide a :term:`Build Directory` path, the
1081      :term:`BUILDDIR` defaults to ``build`` in the current directory.
1082
1083   :term:`BUILDHISTORY_COMMIT`
1084      When inheriting the :ref:`ref-classes-buildhistory` class, this variable
1085      specifies whether or not to commit the build history output in a local
1086      Git repository. If set to "1", this local repository will be maintained
1087      automatically by the :ref:`ref-classes-buildhistory` class and a commit
1088      will be created on every build for changes to each top-level subdirectory
1089      of the build history output (images, packages, and sdk). If you want to
1090      track changes to build history over time, you should set this value to
1091      "1".
1092
1093      By default, the :ref:`ref-classes-buildhistory` class
1094      enables committing the buildhistory output in a local Git repository::
1095
1096         BUILDHISTORY_COMMIT ?= "1"
1097
1098   :term:`BUILDHISTORY_COMMIT_AUTHOR`
1099      When inheriting the :ref:`ref-classes-buildhistory`
1100      class, this variable specifies the author to use for each Git commit.
1101      In order for the :term:`BUILDHISTORY_COMMIT_AUTHOR` variable to work, the
1102      :term:`BUILDHISTORY_COMMIT` variable must
1103      be set to "1".
1104
1105      Git requires that the value you provide for the
1106      :term:`BUILDHISTORY_COMMIT_AUTHOR` variable takes the form of "name
1107      email@host". Providing an email address or host that is not valid
1108      does not produce an error.
1109
1110      By default, the :ref:`ref-classes-buildhistory` class sets the variable
1111      as follows::
1112
1113         BUILDHISTORY_COMMIT_AUTHOR ?= "buildhistory <buildhistory@${DISTRO}>"
1114
1115   :term:`BUILDHISTORY_DIR`
1116      When inheriting the :ref:`ref-classes-buildhistory`
1117      class, this variable specifies the directory in which build history
1118      information is kept. For more information on how the variable works,
1119      see the :ref:`ref-classes-buildhistory` class.
1120
1121      By default, the :ref:`ref-classes-buildhistory` class sets the directory
1122      as follows::
1123
1124         BUILDHISTORY_DIR ?= "${TOPDIR}/buildhistory"
1125
1126   :term:`BUILDHISTORY_FEATURES`
1127      When inheriting the :ref:`ref-classes-buildhistory`
1128      class, this variable specifies the build history features to be
1129      enabled. For more information on how build history works, see the
1130      ":ref:`dev-manual/build-quality:maintaining build output quality`"
1131      section in the Yocto Project Development Tasks Manual.
1132
1133      You can specify these features in the form of a space-separated list:
1134
1135      -  *image:* Analysis of the contents of images, which includes the
1136         list of installed packages among other things.
1137
1138      -  *package:* Analysis of the contents of individual packages.
1139
1140      -  *sdk:* Analysis of the contents of the software development kit
1141         (SDK).
1142
1143      -  *task:* Save output file signatures for
1144         :ref:`shared state <overview-manual/concepts:shared state cache>`
1145         (sstate) tasks.
1146         This saves one file per task and lists the SHA-256 checksums for
1147         each file staged (i.e. the output of the task).
1148
1149      By default, the :ref:`ref-classes-buildhistory` class enables the
1150      following features::
1151
1152         BUILDHISTORY_FEATURES ?= "image package sdk"
1153
1154   :term:`BUILDHISTORY_IMAGE_FILES`
1155      When inheriting the :ref:`ref-classes-buildhistory`
1156      class, this variable specifies a list of paths to files copied from
1157      the image contents into the build history directory under an
1158      "image-files" directory in the directory for the image, so that you
1159      can track the contents of each file. The default is to copy
1160      ``/etc/passwd`` and ``/etc/group``, which allows you to monitor for
1161      changes in user and group entries. You can modify the list to include
1162      any file. Specifying an invalid path does not produce an error.
1163      Consequently, you can include files that might not always be present.
1164
1165      By default, the :ref:`ref-classes-buildhistory` class provides paths to
1166      the following files::
1167
1168         BUILDHISTORY_IMAGE_FILES ?= "/etc/passwd /etc/group"
1169
1170   :term:`BUILDHISTORY_PATH_PREFIX_STRIP`
1171      When inheriting the :ref:`ref-classes-buildhistory`
1172      class, this variable specifies a common path prefix that should be
1173      stripped off the beginning of paths in the task signature list when the
1174      ``task`` feature is active in :term:`BUILDHISTORY_FEATURES`. This can be
1175      useful when build history is populated from multiple sources that may not
1176      all use the same top level directory.
1177
1178      By default, the :ref:`ref-classes-buildhistory` class sets the variable
1179      as follows::
1180
1181         BUILDHISTORY_PATH_PREFIX_STRIP ?= ""
1182
1183      In this case, no prefixes will be stripped.
1184
1185   :term:`BUILDHISTORY_PUSH_REPO`
1186      When inheriting the :ref:`ref-classes-buildhistory` class, this variable
1187      optionally specifies a remote repository to which build history pushes
1188      Git changes. In order for :term:`BUILDHISTORY_PUSH_REPO` to work,
1189      :term:`BUILDHISTORY_COMMIT` must be set to "1".
1190
1191      The repository should correspond to a remote address that specifies a
1192      repository as understood by Git, or alternatively to a remote name
1193      that you have set up manually using ``git remote`` within the local
1194      repository.
1195
1196      By default, the :ref:`ref-classes-buildhistory` class sets the variable
1197      as follows::
1198
1199         BUILDHISTORY_PUSH_REPO ?= ""
1200
1201   :term:`BUILDNAME`
1202      See :term:`bitbake:BUILDNAME` in the BitBake manual.
1203
1204   :term:`BUILDSDK_CFLAGS`
1205      Specifies the flags to pass to the C compiler when building for the
1206      SDK. When building in the ``nativesdk-`` context,
1207      :term:`CFLAGS` is set to the value of this variable by
1208      default.
1209
1210   :term:`BUILDSDK_CPPFLAGS`
1211      Specifies the flags to pass to the C pre-processor (i.e. to both the
1212      C and the C++ compilers) when building for the SDK. When building in
1213      the ``nativesdk-`` context, :term:`CPPFLAGS` is set
1214      to the value of this variable by default.
1215
1216   :term:`BUILDSDK_CXXFLAGS`
1217      Specifies the flags to pass to the C++ compiler when building for the
1218      SDK. When building in the ``nativesdk-`` context,
1219      :term:`CXXFLAGS` is set to the value of this variable
1220      by default.
1221
1222   :term:`BUILDSDK_LDFLAGS`
1223      Specifies the flags to pass to the linker when building for the SDK.
1224      When building in the ``nativesdk-`` context,
1225      :term:`LDFLAGS` is set to the value of this variable
1226      by default.
1227
1228   :term:`BUILDSTATS_BASE`
1229      Points to the location of the directory that holds build statistics
1230      when you use and enable the :ref:`ref-classes-buildstats` class. The
1231      :term:`BUILDSTATS_BASE` directory defaults to
1232      ``${``\ :term:`TMPDIR`\ ``}/buildstats/``.
1233
1234   :term:`BUSYBOX_SPLIT_SUID`
1235      For the BusyBox recipe, specifies whether to split the output
1236      executable file into two parts: one for features that require
1237      ``setuid root``, and one for the remaining features (i.e. those that
1238      do not require ``setuid root``).
1239
1240      The :term:`BUSYBOX_SPLIT_SUID` variable defaults to "1", which results in
1241      splitting the output executable file. Set the variable to "0" to get
1242      a single output executable file.
1243
1244   :term:`BZRDIR`
1245      See :term:`bitbake:BZRDIR` in the BitBake manual.
1246
1247   :term:`CACHE`
1248      Specifies the directory BitBake uses to store a cache of the
1249      :term:`Metadata` so it does not need to be parsed every time
1250      BitBake is started.
1251
1252   :term:`CC`
1253      The minimal command and arguments used to run the C compiler.
1254
1255   :term:`CFLAGS`
1256      Specifies the flags to pass to the C compiler. This variable is
1257      exported to an environment variable and thus made visible to the
1258      software being built during the compilation step.
1259
1260      Default initialization for :term:`CFLAGS` varies depending on what is
1261      being built:
1262
1263      -  :term:`TARGET_CFLAGS` when building for the
1264         target
1265
1266      -  :term:`BUILD_CFLAGS` when building for the
1267         build host (i.e. ``-native``)
1268
1269      -  :term:`BUILDSDK_CFLAGS` when building for
1270         an SDK (i.e. ``nativesdk-``)
1271
1272   :term:`CLASSOVERRIDE`
1273      An internal variable specifying the special class override that
1274      should currently apply (e.g. "class-target", "class-native", and so
1275      forth). The classes that use this variable (e.g.
1276      :ref:`ref-classes-native`, :ref:`ref-classes-nativesdk`, and so forth)
1277      set the variable to appropriate values.
1278
1279      .. note::
1280
1281         :term:`CLASSOVERRIDE` gets its default "class-target" value from the
1282         ``bitbake.conf`` file.
1283
1284      As an example, the following override allows you to install extra
1285      files, but only when building for the target::
1286
1287         do_install:append:class-target() {
1288             install my-extra-file ${D}${sysconfdir}
1289         }
1290
1291      Here is an example where ``FOO`` is set to
1292      "native" when building for the build host, and to "other" when not
1293      building for the build host::
1294
1295         FOO:class-native = "native"
1296         FOO = "other"
1297
1298      The underlying mechanism behind :term:`CLASSOVERRIDE` is simply
1299      that it is included in the default value of
1300      :term:`OVERRIDES`.
1301
1302   :term:`CLEANBROKEN`
1303      If set to "1" within a recipe, :term:`CLEANBROKEN` specifies that the
1304      ``make clean`` command does not work for the software being built.
1305      Consequently, the OpenEmbedded build system will not try to run
1306      ``make clean`` during the :ref:`ref-tasks-configure`
1307      task, which is the default behavior.
1308
1309   :term:`COMBINED_FEATURES`
1310      Provides a list of hardware features that are enabled in both
1311      :term:`MACHINE_FEATURES` and
1312      :term:`DISTRO_FEATURES`. This select list of
1313      features contains features that make sense to be controlled both at
1314      the machine and distribution configuration level. For example, the
1315      "bluetooth" feature requires hardware support but should also be
1316      optional at the distribution level, in case the hardware supports
1317      Bluetooth but you do not ever intend to use it.
1318
1319   :term:`COMMERCIAL_AUDIO_PLUGINS`
1320      This variable is specific to the :yocto_git:`GStreamer recipes
1321      </poky/tree/meta/recipes-multimedia/gstreamer/gstreamer1.0-meta-base.bb>`.
1322      It allows to build the GStreamer `"ugly"
1323      <https://github.com/GStreamer/gst-plugins-ugly>`__  and
1324      `"bad" <https://github.com/GStreamer/gst-plugins-bad>`__ audio plugins.
1325
1326      See the :ref:`dev-manual/licenses:other variables related to commercial licenses`
1327      section for usage details.
1328
1329   :term:`COMMERCIAL_VIDEO_PLUGINS`
1330      This variable is specific to the :yocto_git:`GStreamer recipes
1331      </poky/tree/meta/recipes-multimedia/gstreamer/gstreamer1.0-meta-base.bb>`.
1332      It allows to build the GStreamer `"ugly"
1333      <https://github.com/GStreamer/gst-plugins-ugly>`__  and
1334      `"bad" <https://github.com/GStreamer/gst-plugins-bad>`__ video plugins.
1335
1336      See the :ref:`dev-manual/licenses:other variables related to commercial licenses`
1337      section for usage details.
1338
1339   :term:`COMMON_LICENSE_DIR`
1340      Points to ``meta/files/common-licenses`` in the
1341      :term:`Source Directory`, which is where generic license
1342      files reside.
1343
1344   :term:`COMPATIBLE_HOST`
1345      A regular expression that resolves to one or more hosts (when the
1346      recipe is native) or one or more targets (when the recipe is
1347      non-native) with which a recipe is compatible. The regular expression
1348      is matched against :term:`HOST_SYS`. You can use the
1349      variable to stop recipes from being built for classes of systems with
1350      which the recipes are not compatible. Stopping these builds is
1351      particularly useful with kernels. The variable also helps to increase
1352      parsing speed since the build system skips parsing recipes not
1353      compatible with the current system.
1354
1355   :term:`COMPATIBLE_MACHINE`
1356      A regular expression that resolves to one or more target machines
1357      with which a recipe is compatible. The regular expression is matched
1358      against :term:`MACHINEOVERRIDES`. You can use
1359      the variable to stop recipes from being built for machines with which
1360      the recipes are not compatible. Stopping these builds is particularly
1361      useful with kernels. The variable also helps to increase parsing
1362      speed since the build system skips parsing recipes not compatible
1363      with the current machine.
1364
1365   :term:`COMPLEMENTARY_GLOB`
1366      Defines wildcards to match when installing a list of complementary
1367      packages for all the packages explicitly (or implicitly) installed in
1368      an image.
1369
1370      The :term:`COMPLEMENTARY_GLOB` variable uses Unix filename pattern matching
1371      (`fnmatch <https://docs.python.org/3/library/fnmatch.html#module-fnmatch>`__),
1372      which is similar to the Unix style pathname pattern expansion
1373      (`glob <https://docs.python.org/3/library/glob.html>`__).
1374
1375      The resulting list of complementary packages is associated with an
1376      item that can be added to
1377      :term:`IMAGE_FEATURES`. An example usage of
1378      this is the "dev-pkgs" item that when added to :term:`IMAGE_FEATURES`
1379      will install -dev packages (containing headers and other development
1380      files) for every package in the image.
1381
1382      To add a new feature item pointing to a wildcard, use a variable flag
1383      to specify the feature item name and use the value to specify the
1384      wildcard. Here is an example::
1385
1386         COMPLEMENTARY_GLOB[dev-pkgs] = '*-dev'
1387
1388      .. note::
1389
1390         When installing complementary packages, recommends relationships
1391         (set via :term:`RRECOMMENDS`) are always ignored.
1392
1393   :term:`COMPONENTS_DIR`
1394      Stores sysroot components for each recipe. The OpenEmbedded build
1395      system uses :term:`COMPONENTS_DIR` when constructing recipe-specific
1396      sysroots for other recipes.
1397
1398      The default is
1399      "``${``\ :term:`STAGING_DIR`\ ``}-components``."
1400      (i.e.
1401      "``${``\ :term:`TMPDIR`\ ``}/sysroots-components``").
1402
1403   :term:`CONF_VERSION`
1404      Tracks the version of the local configuration file (i.e.
1405      ``local.conf``). The value for :term:`CONF_VERSION` increments each time
1406      ``build/conf/`` compatibility changes.
1407
1408   :term:`CONFFILES`
1409      Identifies editable or configurable files that are part of a package.
1410      If the Package Management System (PMS) is being used to update
1411      packages on the target system, it is possible that configuration
1412      files you have changed after the original installation and that you
1413      now want to remain unchanged are overwritten. In other words,
1414      editable files might exist in the package that you do not want reset
1415      as part of the package update process. You can use the :term:`CONFFILES`
1416      variable to list the files in the package that you wish to prevent
1417      the PMS from overwriting during this update process.
1418
1419      To use the :term:`CONFFILES` variable, provide a package name override
1420      that identifies the resulting package. Then, provide a
1421      space-separated list of files. Here is an example::
1422
1423         CONFFILES:${PN} += "${sysconfdir}/file1 \
1424             ${sysconfdir}/file2 ${sysconfdir}/file3"
1425
1426      There is a relationship between the :term:`CONFFILES` and :term:`FILES`
1427      variables. The files listed within :term:`CONFFILES` must be a subset of
1428      the files listed within :term:`FILES`. Because the configuration files
1429      you provide with :term:`CONFFILES` are simply being identified so that
1430      the PMS will not overwrite them, it makes sense that the files must
1431      already be included as part of the package through the :term:`FILES`
1432      variable.
1433
1434      .. note::
1435
1436         When specifying paths as part of the :term:`CONFFILES` variable, it is
1437         good practice to use appropriate path variables.
1438         For example, ``${sysconfdir}`` rather than ``/etc`` or ``${bindir}``
1439         rather than ``/usr/bin``. You can find a list of these variables at
1440         the top of the ``meta/conf/bitbake.conf`` file in the
1441         :term:`Source Directory`.
1442
1443   :term:`CONFIG_INITRAMFS_SOURCE`
1444      Identifies the initial RAM filesystem (:term:`Initramfs`) source files. The
1445      OpenEmbedded build system receives and uses this kernel Kconfig
1446      variable as an environment variable. By default, the variable is set
1447      to null ("").
1448
1449      The :term:`CONFIG_INITRAMFS_SOURCE` can be either a single cpio archive
1450      with a ``.cpio`` suffix or a space-separated list of directories and
1451      files for building the :term:`Initramfs` image. A cpio archive should contain
1452      a filesystem archive to be used as an :term:`Initramfs` image. Directories
1453      should contain a filesystem layout to be included in the :term:`Initramfs`
1454      image. Files should contain entries according to the format described
1455      by the ``usr/gen_init_cpio`` program in the kernel tree.
1456
1457      If you specify multiple directories and files, the :term:`Initramfs` image
1458      will be the aggregate of all of them.
1459
1460      For information on creating an :term:`Initramfs`, see the
1461      ":ref:`dev-manual/building:building an initial ram filesystem (Initramfs) image`" section
1462      in the Yocto Project Development Tasks Manual.
1463
1464   :term:`CONFIG_SITE`
1465      A list of files that contains ``autoconf`` test results relevant to
1466      the current build. This variable is used by the Autotools utilities
1467      when running ``configure``.
1468
1469   :term:`CONFIGURE_FLAGS`
1470      The minimal arguments for GNU configure.
1471
1472   :term:`CONFLICT_DISTRO_FEATURES`
1473      When inheriting the :ref:`ref-classes-features_check`
1474      class, this variable identifies distribution features that would be
1475      in conflict should the recipe be built. In other words, if the
1476      :term:`CONFLICT_DISTRO_FEATURES` variable lists a feature that also
1477      appears in :term:`DISTRO_FEATURES` within the current configuration, then
1478      the recipe will be skipped, and if the build system attempts to build
1479      the recipe then an error will be triggered.
1480
1481   :term:`CONVERSION_CMD`
1482      This variable is used for storing image conversion commands.
1483      Image conversion can convert an image into different objects like:
1484
1485      -   Compressed version of the image
1486
1487      -   Checksums for the image
1488
1489      An example of :term:`CONVERSION_CMD` from :ref:`ref-classes-image_types`
1490      class is::
1491
1492         CONVERSION_CMD:lzo = "lzop -9 ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}"
1493
1494   :term:`COPY_LIC_DIRS`
1495      If set to "1" along with the
1496      :term:`COPY_LIC_MANIFEST` variable, the
1497      OpenEmbedded build system copies into the image the license files,
1498      which are located in ``/usr/share/common-licenses``, for each
1499      package. The license files are placed in directories within the image
1500      itself during build time.
1501
1502      .. note::
1503
1504         The :term:`COPY_LIC_DIRS` does not offer a path for adding licenses for
1505         newly installed packages to an image, which might be most suitable for
1506         read-only filesystems that cannot be upgraded. See the
1507         :term:`LICENSE_CREATE_PACKAGE` variable for additional information.
1508         You can also reference the ":ref:`dev-manual/licenses:providing license text`"
1509         section in the Yocto Project Development Tasks Manual for
1510         information on providing license text.
1511
1512   :term:`COPY_LIC_MANIFEST`
1513      If set to "1", the OpenEmbedded build system copies the license
1514      manifest for the image to
1515      ``/usr/share/common-licenses/license.manifest`` within the image
1516      itself during build time.
1517
1518      .. note::
1519
1520         The :term:`COPY_LIC_MANIFEST` does not offer a path for adding licenses for
1521         newly installed packages to an image, which might be most suitable for
1522         read-only filesystems that cannot be upgraded. See the
1523         :term:`LICENSE_CREATE_PACKAGE` variable for additional information.
1524         You can also reference the ":ref:`dev-manual/licenses:providing license text`"
1525         section in the Yocto Project Development Tasks Manual for
1526         information on providing license text.
1527
1528   :term:`COPYLEFT_LICENSE_EXCLUDE`
1529      A space-separated list of licenses to exclude from the source archived by
1530      the :ref:`ref-classes-archiver` class. In other words, if a license in a
1531      recipe's :term:`LICENSE` value is in the value of
1532      :term:`COPYLEFT_LICENSE_EXCLUDE`, then its source is not archived by the
1533      class.
1534
1535      .. note::
1536
1537         The :term:`COPYLEFT_LICENSE_EXCLUDE` variable takes precedence over the
1538         :term:`COPYLEFT_LICENSE_INCLUDE` variable.
1539
1540      The default value, which is "CLOSED Proprietary", for
1541      :term:`COPYLEFT_LICENSE_EXCLUDE` is set by the
1542      :ref:`ref-classes-copyleft_filter` class, which
1543      is inherited by the :ref:`ref-classes-archiver` class.
1544
1545   :term:`COPYLEFT_LICENSE_INCLUDE`
1546      A space-separated list of licenses to include in the source archived
1547      by the :ref:`ref-classes-archiver` class. In other
1548      words, if a license in a recipe's :term:`LICENSE`
1549      value is in the value of :term:`COPYLEFT_LICENSE_INCLUDE`, then its
1550      source is archived by the class.
1551
1552      The default value is set by the :ref:`ref-classes-copyleft_filter` class,
1553      which is inherited by the :ref:`ref-classes-archiver` class. The default
1554      value includes "GPL*", "LGPL*", and "AGPL*".
1555
1556   :term:`COPYLEFT_PN_EXCLUDE`
1557      A list of recipes to exclude in the source archived by the
1558      :ref:`ref-classes-archiver` class. The :term:`COPYLEFT_PN_EXCLUDE`
1559      variable overrides the license inclusion and exclusion caused through the
1560      :term:`COPYLEFT_LICENSE_INCLUDE` and :term:`COPYLEFT_LICENSE_EXCLUDE`
1561      variables, respectively.
1562
1563      The default value, which is "" indicating to not explicitly exclude
1564      any recipes by name, for :term:`COPYLEFT_PN_EXCLUDE` is set by the
1565      :ref:`ref-classes-copyleft_filter` class, which is inherited by the
1566      :ref:`ref-classes-archiver` class.
1567
1568   :term:`COPYLEFT_PN_INCLUDE`
1569      A list of recipes to include in the source archived by the
1570      :ref:`ref-classes-archiver` class. The :term:`COPYLEFT_PN_INCLUDE`
1571      variable overrides the license inclusion and exclusion caused through the
1572      :term:`COPYLEFT_LICENSE_INCLUDE` and :term:`COPYLEFT_LICENSE_EXCLUDE`
1573      variables, respectively.
1574
1575      The default value, which is "" indicating to not explicitly include
1576      any recipes by name, for :term:`COPYLEFT_PN_INCLUDE` is set by the
1577      :ref:`ref-classes-copyleft_filter` class, which is inherited by the
1578      :ref:`ref-classes-archiver` class.
1579
1580   :term:`COPYLEFT_RECIPE_TYPES`
1581      A space-separated list of recipe types to include in the source
1582      archived by the :ref:`archiver <ref-classes-archiver>` class.
1583      Recipe types are ``target``, :ref:`ref-classes-native`,
1584      :ref:`ref-classes-nativesdk`, :ref:`ref-classes-cross`,
1585      :ref:`ref-classes-crosssdk`, and :ref:`ref-classes-cross-canadian`.
1586
1587      The default value, which is "target*", for :term:`COPYLEFT_RECIPE_TYPES`
1588      is set by the :ref:`ref-classes-copyleft_filter` class, which is
1589      inherited by the :ref:`ref-classes-archiver` class.
1590
1591   :term:`CORE_IMAGE_EXTRA_INSTALL`
1592      Specifies the list of packages to be added to the image. You should
1593      only set this variable in the ``local.conf`` configuration file found
1594      in the :term:`Build Directory`.
1595
1596      This variable replaces ``POKY_EXTRA_INSTALL``, which is no longer
1597      supported.
1598
1599   :term:`COREBASE`
1600      Specifies the parent directory of the OpenEmbedded-Core Metadata
1601      layer (i.e. ``meta``).
1602
1603      It is an important distinction that :term:`COREBASE` points to the parent
1604      of this layer and not the layer itself. Consider an example where you
1605      have cloned the Poky Git repository and retained the ``poky`` name
1606      for your local copy of the repository. In this case, :term:`COREBASE`
1607      points to the ``poky`` folder because it is the parent directory of
1608      the ``poky/meta`` layer.
1609
1610   :term:`COREBASE_FILES`
1611      Lists files from the :term:`COREBASE` directory that
1612      should be copied other than the layers listed in the
1613      ``bblayers.conf`` file. The :term:`COREBASE_FILES` variable allows
1614      to copy metadata from the OpenEmbedded build system
1615      into the extensible SDK.
1616
1617      Explicitly listing files in :term:`COREBASE` is needed because it
1618      typically contains build directories and other files that should not
1619      normally be copied into the extensible SDK. Consequently, the value
1620      of :term:`COREBASE_FILES` is used in order to only copy the files that
1621      are actually needed.
1622
1623   :term:`CPP`
1624      The minimal command and arguments used to run the C preprocessor.
1625
1626   :term:`CPPFLAGS`
1627      Specifies the flags to pass to the C pre-processor (i.e. to both the
1628      C and the C++ compilers). This variable is exported to an environment
1629      variable and thus made visible to the software being built during the
1630      compilation step.
1631
1632      Default initialization for :term:`CPPFLAGS` varies depending on what is
1633      being built:
1634
1635      -  :term:`TARGET_CPPFLAGS` when building for
1636         the target
1637
1638      -  :term:`BUILD_CPPFLAGS` when building for the
1639         build host (i.e. ``-native``)
1640
1641      -  :term:`BUILDSDK_CPPFLAGS` when building
1642         for an SDK (i.e. ``nativesdk-``)
1643
1644   :term:`CROSS_COMPILE`
1645      The toolchain binary prefix for the target tools. The
1646      :term:`CROSS_COMPILE` variable is the same as the
1647      :term:`TARGET_PREFIX` variable.
1648
1649      .. note::
1650
1651         The OpenEmbedded build system sets the :term:`CROSS_COMPILE`
1652         variable only in certain contexts (e.g. when building for kernel
1653         and kernel module recipes).
1654
1655   :term:`CVE_CHECK_IGNORE`
1656      The list of CVE IDs which are ignored. Here is
1657      an example from the :oe_layerindex:`Python3 recipe</layerindex/recipe/23823>`::
1658
1659         # This is windows only issue.
1660         CVE_CHECK_IGNORE += "CVE-2020-15523"
1661
1662   :term:`CVE_CHECK_SHOW_WARNINGS`
1663      Specifies whether or not the :ref:`ref-classes-cve-check`
1664      class should generate warning messages on the console when unpatched
1665      CVEs are found. The default is "1", but you may wish to set it to "0" if
1666      you are already examining/processing the logs after the build has
1667      completed and thus do not need the warning messages.
1668
1669   :term:`CVE_CHECK_SKIP_RECIPE`
1670      The list of package names (:term:`PN`) for which
1671      CVEs (Common Vulnerabilities and Exposures) are ignored.
1672
1673   :term:`CVE_DB_UPDATE_INTERVAL`
1674      Specifies the CVE database update interval in seconds, as used by
1675      ``cve-update-db-native``. The default value is "86400" i.e. once a day
1676      (24*60*60). If the value is set to "0" then the update will be forced
1677      every time. Alternatively, a negative value e.g. "-1" will disable
1678      updates entirely.
1679
1680   :term:`CVE_PRODUCT`
1681      In a recipe, defines the name used to match the recipe name
1682      against the name in the upstream `NIST CVE database <https://nvd.nist.gov/>`__.
1683
1684      The default is ${:term:`BPN`} (except for recipes that inherit the
1685      :ref:`ref-classes-pypi` class where it is set based upon
1686      :term:`PYPI_PACKAGE`). If it does not match the name in the NIST CVE
1687      database or matches with multiple entries in the database, the default
1688      value needs to be changed.
1689
1690      Here is an example from the :oe_layerindex:`Berkeley DB recipe </layerindex/recipe/544>`::
1691
1692         CVE_PRODUCT = "oracle_berkeley_db berkeley_db"
1693
1694      Sometimes the product name is not specific enough, for example
1695      "tar" has been matching CVEs for the GNU ``tar`` package and also
1696      the ``node-tar`` node.js extension. To avoid this problem, use the
1697      vendor name as a prefix. The syntax for this is::
1698
1699         CVE_PRODUCT = "vendor:package"
1700
1701   :term:`CVE_VERSION`
1702      In a recipe, defines the version used to match the recipe version
1703      against the version in the `NIST CVE database <https://nvd.nist.gov/>`__
1704      when usign :ref:`ref-classes-cve-check`.
1705
1706      The default is ${:term:`PV`} but if recipes use custom version numbers
1707      which do not map to upstream software component release versions and the versions
1708      used in the CVE database, then this variable can be used to set the
1709      version number for :ref:`ref-classes-cve-check`. Example::
1710
1711          CVE_VERSION = "2.39"
1712
1713   :term:`CVSDIR`
1714      The directory in which files checked out under the CVS system are
1715      stored.
1716
1717   :term:`CXX`
1718      The minimal command and arguments used to run the C++ compiler.
1719
1720   :term:`CXXFLAGS`
1721      Specifies the flags to pass to the C++ compiler. This variable is
1722      exported to an environment variable and thus made visible to the
1723      software being built during the compilation step.
1724
1725      Default initialization for :term:`CXXFLAGS` varies depending on what is
1726      being built:
1727
1728      -  :term:`TARGET_CXXFLAGS` when building for
1729         the target
1730
1731      -  :term:`BUILD_CXXFLAGS` when building for the
1732         build host (i.e. ``-native``)
1733
1734      -  :term:`BUILDSDK_CXXFLAGS` when building
1735         for an SDK (i.e. ``nativesdk-``)
1736
1737   :term:`D`
1738      The destination directory. The location in the :term:`Build Directory`
1739      where components are installed by the
1740      :ref:`ref-tasks-install` task. This location defaults
1741      to::
1742
1743         ${WORKDIR}/image
1744
1745      .. note::
1746
1747         Tasks that read from or write to this directory should run under
1748         :ref:`fakeroot <overview-manual/concepts:fakeroot and pseudo>`.
1749
1750   :term:`DATE`
1751      The date the build was started. Dates appear using the year, month,
1752      and day (YMD) format (e.g. "20150209" for February 9th, 2015).
1753
1754   :term:`DATETIME`
1755      The date and time on which the current build started. The format is
1756      suitable for timestamps.
1757
1758   :term:`DEBIAN_NOAUTONAME`
1759      When the :ref:`ref-classes-debian` class is inherited,
1760      which is the default behavior, :term:`DEBIAN_NOAUTONAME` specifies a
1761      particular package should not be renamed according to Debian library
1762      package naming. You must use the package name as an override when you
1763      set this variable. Here is an example from the ``fontconfig`` recipe::
1764
1765         DEBIAN_NOAUTONAME:fontconfig-utils = "1"
1766
1767   :term:`DEBIANNAME`
1768      When the :ref:`ref-classes-debian` class is inherited,
1769      which is the default behavior, :term:`DEBIANNAME` allows you to override
1770      the library name for an individual package. Overriding the library
1771      name in these cases is rare. You must use the package name as an
1772      override when you set this variable. Here is an example from the
1773      ``dbus`` recipe::
1774
1775         DEBIANNAME:${PN} = "dbus-1"
1776
1777   :term:`DEBUG_BUILD`
1778      Specifies to build packages with debugging information. This
1779      influences the value of the :term:`SELECTED_OPTIMIZATION` variable.
1780
1781   :term:`DEBUG_OPTIMIZATION`
1782      The options to pass in :term:`TARGET_CFLAGS` and :term:`CFLAGS` when
1783      compiling a system for debugging. This variable defaults to "-O
1784      -fno-omit-frame-pointer ${DEBUG_FLAGS} -pipe".
1785
1786   :term:`DEBUG_PREFIX_MAP`
1787      Allows to set C compiler options, such as ``-fdebug-prefix-map``,
1788      ``-fmacro-prefix-map``, and ``-ffile-prefix-map``, which allow to
1789      replace build-time paths by install-time ones in the debugging sections
1790      of binaries.  This makes compiler output files location independent,
1791      at the cost of having to pass an extra command to tell the debugger
1792      where source files are.
1793
1794      This is used by the Yocto Project to guarantee
1795      :doc:`/test-manual/reproducible-builds` even when the source code of
1796      a package uses the ``__FILE__`` or ``assert()`` macros. See the
1797      `reproducible-builds.org <https://reproducible-builds.org/docs/build-path/>`__
1798      website for details.
1799
1800      This variable is set in the ``meta/conf/bitbake.conf`` file. It is
1801      not intended to be user-configurable.
1802
1803   :term:`DEFAULT_PREFERENCE`
1804      Specifies a weak bias for recipe selection priority.
1805
1806      The most common usage of this is variable is to set it to "-1" within
1807      a recipe for a development version of a piece of software. Using the
1808      variable in this way causes the stable version of the recipe to build
1809      by default in the absence of :term:`PREFERRED_VERSION` being used to
1810      build the development version.
1811
1812      .. note::
1813
1814         The bias provided by :term:`DEFAULT_PREFERENCE` is weak and is overridden
1815         by :term:`BBFILE_PRIORITY` if that variable is different between two
1816         layers that contain different versions of the same recipe.
1817
1818   :term:`DEFAULTTUNE`
1819      The default CPU and Application Binary Interface (ABI) tunings (i.e.
1820      the "tune") used by the OpenEmbedded build system. The
1821      :term:`DEFAULTTUNE` helps define
1822      :term:`TUNE_FEATURES`.
1823
1824      The default tune is either implicitly or explicitly set by the
1825      machine (:term:`MACHINE`). However, you can override
1826      the setting using available tunes as defined with
1827      :term:`AVAILTUNES`.
1828
1829   :term:`DEPENDS`
1830      Lists a recipe's build-time dependencies. These are dependencies on
1831      other recipes whose contents (e.g. headers and shared libraries) are
1832      needed by the recipe at build time.
1833
1834      As an example, consider a recipe ``foo`` that contains the following
1835      assignment::
1836
1837          DEPENDS = "bar"
1838
1839      The practical effect of the previous assignment is that all files
1840      installed by bar will be available in the appropriate staging sysroot,
1841      given by the :term:`STAGING_DIR* <STAGING_DIR>` variables, by the time
1842      the :ref:`ref-tasks-configure` task for ``foo`` runs. This mechanism is
1843      implemented by having :ref:`ref-tasks-configure` depend on the
1844      :ref:`ref-tasks-populate_sysroot` task of each recipe listed in
1845      :term:`DEPENDS`, through a
1846      ``[``\ :ref:`deptask <bitbake-user-manual/bitbake-user-manual-metadata:variable flags>`\ ``]``
1847      declaration in the :ref:`ref-classes-base` class.
1848
1849      .. note::
1850
1851         It seldom is necessary to reference, for example, :term:`STAGING_DIR_HOST`
1852         explicitly. The standard classes and build-related variables are
1853         configured to automatically use the appropriate staging sysroots.
1854
1855      As another example, :term:`DEPENDS` can also be used to add utilities
1856      that run on the build machine during the build. For example, a recipe
1857      that makes use of a code generator built by the recipe ``codegen``
1858      might have the following::
1859
1860         DEPENDS = "codegen-native"
1861
1862      For more
1863      information, see the :ref:`ref-classes-native` class and
1864      the :term:`EXTRANATIVEPATH` variable.
1865
1866      .. note::
1867
1868         -  :term:`DEPENDS` is a list of recipe names. Or, to be more precise,
1869            it is a list of :term:`PROVIDES` names, which
1870            usually match recipe names. Putting a package name such as
1871            "foo-dev" in :term:`DEPENDS` does not make sense. Use "foo"
1872            instead, as this will put files from all the packages that make
1873            up ``foo``, which includes those from ``foo-dev``, into the
1874            sysroot.
1875
1876         -  One recipe having another recipe in :term:`DEPENDS` does not by
1877            itself add any runtime dependencies between the packages
1878            produced by the two recipes. However, as explained in the
1879            ":ref:`overview-manual/concepts:automatically added runtime dependencies`"
1880            section in the Yocto Project Overview and Concepts Manual,
1881            runtime dependencies will often be added automatically, meaning
1882            :term:`DEPENDS` alone is sufficient for most recipes.
1883
1884         -  Counterintuitively, :term:`DEPENDS` is often necessary even for
1885            recipes that install precompiled components. For example, if
1886            ``libfoo`` is a precompiled library that links against
1887            ``libbar``, then linking against ``libfoo`` requires both
1888            ``libfoo`` and ``libbar`` to be available in the sysroot.
1889            Without a :term:`DEPENDS` from the recipe that installs ``libfoo``
1890            to the recipe that installs ``libbar``, other recipes might
1891            fail to link against ``libfoo``.
1892
1893      For information on runtime dependencies, see the :term:`RDEPENDS`
1894      variable. You can also see the
1895      ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:tasks`" and
1896      ":ref:`bitbake-user-manual/bitbake-user-manual-execution:dependencies`"
1897      sections in the BitBake User Manual for additional information on tasks
1898      and dependencies.
1899
1900   :term:`DEPLOY_DIR`
1901      Points to the general area that the OpenEmbedded build system uses to
1902      place images, packages, SDKs, and other output files that are ready
1903      to be used outside of the build system. By default, this directory
1904      resides within the :term:`Build Directory` as ``${TMPDIR}/deploy``.
1905
1906      For more information on the structure of the Build Directory, see
1907      ":ref:`ref-manual/structure:the build directory --- \`\`build/\`\``" section.
1908      For more detail on the contents of the ``deploy`` directory, see the
1909      ":ref:`overview-manual/concepts:images`",
1910      ":ref:`overview-manual/concepts:package feeds`", and
1911      ":ref:`overview-manual/concepts:application development sdk`" sections all in the
1912      Yocto Project Overview and Concepts Manual.
1913
1914   :term:`DEPLOY_DIR_DEB`
1915      Points to the area that the OpenEmbedded build system uses to place
1916      Debian packages that are ready to be used outside of the build
1917      system. This variable applies only when :term:`PACKAGE_CLASSES` contains
1918      ":ref:`ref-classes-package_deb`".
1919
1920      The BitBake configuration file initially defines the
1921      :term:`DEPLOY_DIR_DEB` variable as a sub-folder of
1922      :term:`DEPLOY_DIR`::
1923
1924         DEPLOY_DIR_DEB = "${DEPLOY_DIR}/deb"
1925
1926      The :ref:`ref-classes-package_deb` class uses the
1927      :term:`DEPLOY_DIR_DEB` variable to make sure the
1928      :ref:`ref-tasks-package_write_deb` task
1929      writes Debian packages into the appropriate folder. For more
1930      information on how packaging works, see the
1931      ":ref:`overview-manual/concepts:package feeds`" section
1932      in the Yocto Project Overview and Concepts Manual.
1933
1934   :term:`DEPLOY_DIR_IMAGE`
1935      Points to the area that the OpenEmbedded build system uses to place
1936      images and other associated output files that are ready to be
1937      deployed onto the target machine. The directory is machine-specific
1938      as it contains the ``${MACHINE}`` name. By default, this directory
1939      resides within the :term:`Build Directory` as
1940      ``${DEPLOY_DIR}/images/${MACHINE}/``.
1941
1942      It must not be used directly in recipes when deploying files. Instead,
1943      it's only useful when a recipe needs to "read" a file already deployed
1944      by a dependency. So, it should be filled with the contents of
1945      :term:`DEPLOYDIR` by the :ref:`ref-classes-deploy` class or with the
1946      contents of :term:`IMGDEPLOYDIR` by the :ref:`ref-classes-image` class.
1947
1948      For more information on the structure of the :term:`Build Directory`, see
1949      ":ref:`ref-manual/structure:the build directory --- \`\`build/\`\``" section.
1950      For more detail on the contents of the ``deploy`` directory, see the
1951      ":ref:`overview-manual/concepts:images`" and
1952      ":ref:`overview-manual/concepts:application development sdk`" sections both in
1953      the Yocto Project Overview and Concepts Manual.
1954
1955   :term:`DEPLOY_DIR_IPK`
1956      Points to the area that the OpenEmbedded build system uses to place
1957      IPK packages that are ready to be used outside of the build system.
1958      This variable applies only when :term:`PACKAGE_CLASSES` contains
1959      ":ref:`ref-classes-package_ipk`".
1960
1961      The BitBake configuration file initially defines this variable as a
1962      sub-folder of :term:`DEPLOY_DIR`::
1963
1964         DEPLOY_DIR_IPK = "${DEPLOY_DIR}/ipk"
1965
1966      The :ref:`ref-classes-package_ipk` class uses the :term:`DEPLOY_DIR_IPK`
1967      variable to make sure the :ref:`ref-tasks-package_write_ipk` task
1968      writes IPK packages into the appropriate folder. For more information
1969      on how packaging works, see the
1970      ":ref:`overview-manual/concepts:package feeds`" section
1971      in the Yocto Project Overview and Concepts Manual.
1972
1973   :term:`DEPLOY_DIR_RPM`
1974      Points to the area that the OpenEmbedded build system uses to place
1975      RPM packages that are ready to be used outside of the build system.
1976      This variable applies only when :term:`PACKAGE_CLASSES` contains
1977      ":ref:`ref-classes-package_rpm`".
1978
1979      The BitBake configuration file initially defines this variable as a
1980      sub-folder of :term:`DEPLOY_DIR`::
1981
1982         DEPLOY_DIR_RPM = "${DEPLOY_DIR}/rpm"
1983
1984      The :ref:`ref-classes-package_rpm` class uses the
1985      :term:`DEPLOY_DIR_RPM` variable to make sure the
1986      :ref:`ref-tasks-package_write_rpm` task
1987      writes RPM packages into the appropriate folder. For more information
1988      on how packaging works, see the
1989      ":ref:`overview-manual/concepts:package feeds`" section
1990      in the Yocto Project Overview and Concepts Manual.
1991
1992   :term:`DEPLOYDIR`
1993      When inheriting the :ref:`ref-classes-deploy` class, the
1994      :term:`DEPLOYDIR` points to a temporary work area for deployed files that
1995      is set in the :ref:`ref-classes-deploy` class as follows::
1996
1997         DEPLOYDIR = "${WORKDIR}/deploy-${PN}"
1998
1999      Recipes inheriting the :ref:`ref-classes-deploy` class should copy files to be
2000      deployed into :term:`DEPLOYDIR`, and the class will take care of copying
2001      them into :term:`DEPLOY_DIR_IMAGE`
2002      afterwards.
2003
2004   :term:`DESCRIPTION`
2005      The package description used by package managers. If not set,
2006      :term:`DESCRIPTION` takes the value of the :term:`SUMMARY`
2007      variable.
2008
2009   :term:`DEV_PKG_DEPENDENCY`
2010      Provides an easy way for recipes to disable or adjust the runtime recommendation
2011      (:term:`RRECOMMENDS`) of the ``${PN}-dev`` package on the main
2012      (``${PN}``) package.
2013
2014   :term:`DISABLE_STATIC`
2015      Used in order to disable static linking by default (in order to save
2016      space, since static libraries are often unused in embedded systems.)
2017      The default value is " --disable-static", however it can be set to ""
2018      in order to enable static linking if desired. Certain recipes do this
2019      individually, and also there is a
2020      ``meta/conf/distro/include/no-static-libs.inc`` include file that
2021      disables static linking for a number of recipes. Some software
2022      packages or build tools (such as CMake) have explicit support for
2023      enabling / disabling static linking, and in those cases
2024      :term:`DISABLE_STATIC` is not used.
2025
2026   :term:`DISTRO`
2027      The short name of the distribution. For information on the long name
2028      of the distribution, see the :term:`DISTRO_NAME`
2029      variable.
2030
2031      The :term:`DISTRO` variable corresponds to a distribution configuration
2032      file whose root name is the same as the variable's argument and whose
2033      filename extension is ``.conf``. For example, the distribution
2034      configuration file for the Poky distribution is named ``poky.conf``
2035      and resides in the ``meta-poky/conf/distro`` directory of the
2036      :term:`Source Directory`.
2037
2038      Within that ``poky.conf`` file, the :term:`DISTRO` variable is set as
2039      follows::
2040
2041         DISTRO = "poky"
2042
2043      Distribution configuration files are located in a ``conf/distro``
2044      directory within the :term:`Metadata` that contains the
2045      distribution configuration. The value for :term:`DISTRO` must not contain
2046      spaces, and is typically all lower-case.
2047
2048      .. note::
2049
2050         If the :term:`DISTRO` variable is blank, a set of default configurations
2051         are used, which are specified within
2052         ``meta/conf/distro/defaultsetup.conf`` also in the Source Directory.
2053
2054   :term:`DISTRO_CODENAME`
2055      Specifies a codename for the distribution being built.
2056
2057   :term:`DISTRO_EXTRA_RDEPENDS`
2058      Specifies a list of distro-specific packages to add to all images.
2059      This variable takes effect through ``packagegroup-base`` so the
2060      variable only really applies to the more full-featured images that
2061      include ``packagegroup-base``. You can use this variable to keep
2062      distro policy out of generic images. As with all other distro
2063      variables, you set this variable in the distro ``.conf`` file.
2064
2065   :term:`DISTRO_EXTRA_RRECOMMENDS`
2066      Specifies a list of distro-specific packages to add to all images if
2067      the packages exist. The packages might not exist or be empty (e.g.
2068      kernel modules). The list of packages are automatically installed but
2069      you can remove them.
2070
2071   :term:`DISTRO_FEATURES`
2072      The software support you want in your distribution for various
2073      features. You define your distribution features in the distribution
2074      configuration file.
2075
2076      In most cases, the presence or absence of a feature in
2077      :term:`DISTRO_FEATURES` is translated to the appropriate option supplied
2078      to the configure script during the
2079      :ref:`ref-tasks-configure` task for recipes that
2080      optionally support the feature. For example, specifying "x11" in
2081      :term:`DISTRO_FEATURES`, causes every piece of software built for the
2082      target that can optionally support X11 to have its X11 support
2083      enabled.
2084
2085      .. note::
2086
2087         Just enabling :term:`DISTRO_FEATURES` alone doesn't
2088         enable feature support for packages. Mechanisms such as making
2089         :term:`PACKAGECONFIG` track :term:`DISTRO_FEATURES` are used
2090         to enable/disable package features.
2091
2092      Two more examples are Bluetooth and NFS support. For a more complete
2093      list of features that ships with the Yocto Project and that you can
2094      provide with this variable, see the ":ref:`ref-features-distro`" section.
2095
2096   :term:`DISTRO_FEATURES_BACKFILL`
2097      A space-separated list of features to be added to :term:`DISTRO_FEATURES`
2098      if not also present in :term:`DISTRO_FEATURES_BACKFILL_CONSIDERED`.
2099
2100      This variable is set in the ``meta/conf/bitbake.conf`` file. It is
2101      not intended to be user-configurable. It is best to just reference
2102      the variable to see which distro features are being
2103      :ref:`backfilled <ref-features-backfill>` for all distro configurations.
2104
2105   :term:`DISTRO_FEATURES_BACKFILL_CONSIDERED`
2106      A space-separated list of features from :term:`DISTRO_FEATURES_BACKFILL`
2107      that should not be :ref:`backfilled <ref-features-backfill>` (i.e. added
2108      to :term:`DISTRO_FEATURES`) during the build.
2109
2110      This corresponds to an opt-out mechanism. When new default distro
2111      features are introduced, distribution maintainers can review (`consider`)
2112      them and decide to exclude them from the
2113      :ref:`backfilled <ref-features-backfill>` features. Therefore, the
2114      combination of :term:`DISTRO_FEATURES_BACKFILL` and
2115      :term:`DISTRO_FEATURES_BACKFILL_CONSIDERED` makes it possible to
2116      add new default features without breaking existing distributions.
2117
2118
2119   :term:`DISTRO_FEATURES_DEFAULT`
2120      A convenience variable that gives you the default list of distro
2121      features with the exception of any features specific to the C library
2122      (``libc``).
2123
2124      When creating a custom distribution, you might find it useful to be
2125      able to reuse the default
2126      :term:`DISTRO_FEATURES` options without the
2127      need to write out the full set. Here is an example that uses
2128      :term:`DISTRO_FEATURES_DEFAULT` from a custom distro configuration file::
2129
2130         DISTRO_FEATURES ?= "${DISTRO_FEATURES_DEFAULT} myfeature"
2131
2132   :term:`DISTRO_FEATURES_FILTER_NATIVE`
2133      Specifies a list of features that if present in the target
2134      :term:`DISTRO_FEATURES` value should be
2135      included in :term:`DISTRO_FEATURES` when building native recipes. This
2136      variable is used in addition to the features filtered using the
2137      :term:`DISTRO_FEATURES_NATIVE`
2138      variable.
2139
2140   :term:`DISTRO_FEATURES_FILTER_NATIVESDK`
2141      Specifies a list of features that if present in the target
2142      :term:`DISTRO_FEATURES` value should be included in
2143      :term:`DISTRO_FEATURES` when building :ref:`ref-classes-nativesdk`
2144      recipes. This variable is used in addition to the features filtered using
2145      the :term:`DISTRO_FEATURES_NATIVESDK` variable.
2146
2147   :term:`DISTRO_FEATURES_NATIVE`
2148      Specifies a list of features that should be included in
2149      :term:`DISTRO_FEATURES` when building native
2150      recipes. This variable is used in addition to the features filtered
2151      using the
2152      :term:`DISTRO_FEATURES_FILTER_NATIVE`
2153      variable.
2154
2155   :term:`DISTRO_FEATURES_NATIVESDK`
2156      Specifies a list of features that should be included in
2157      :term:`DISTRO_FEATURES` when building
2158      :ref:`ref-classes-nativesdk` recipes. This variable is used
2159      in addition to the features filtered using the
2160      :term:`DISTRO_FEATURES_FILTER_NATIVESDK` variable.
2161
2162   :term:`DISTRO_NAME`
2163      The long name of the distribution. For information on the short name
2164      of the distribution, see the :term:`DISTRO` variable.
2165
2166      The :term:`DISTRO_NAME` variable corresponds to a distribution
2167      configuration file whose root name is the same as the variable's
2168      argument and whose filename extension is ``.conf``. For example, the
2169      distribution configuration file for the Poky distribution is named
2170      ``poky.conf`` and resides in the ``meta-poky/conf/distro`` directory
2171      of the :term:`Source Directory`.
2172
2173      Within that ``poky.conf`` file, the :term:`DISTRO_NAME` variable is set
2174      as follows::
2175
2176         DISTRO_NAME = "Poky (Yocto Project Reference Distro)"
2177
2178      Distribution configuration files are located in a ``conf/distro``
2179      directory within the :term:`Metadata` that contains the
2180      distribution configuration.
2181
2182      .. note::
2183
2184         If the :term:`DISTRO_NAME` variable is blank, a set of default
2185         configurations are used, which are specified within
2186         ``meta/conf/distro/defaultsetup.conf`` also in the Source Directory.
2187
2188   :term:`DISTRO_VERSION`
2189      The version of the distribution.
2190
2191   :term:`DISTROOVERRIDES`
2192      A colon-separated list of overrides specific to the current
2193      distribution. By default, this list includes the value of
2194      :term:`DISTRO`.
2195
2196      You can extend :term:`DISTROOVERRIDES` to add extra overrides that should
2197      apply to the distribution.
2198
2199      The underlying mechanism behind :term:`DISTROOVERRIDES` is simply that it
2200      is included in the default value of
2201      :term:`OVERRIDES`.
2202
2203   :term:`DL_DIR`
2204      The central download directory used by the build process to store
2205      downloads. By default, :term:`DL_DIR` gets files suitable for mirroring
2206      for everything except Git repositories. If you want tarballs of Git
2207      repositories, use the
2208      :term:`BB_GENERATE_MIRROR_TARBALLS`
2209      variable.
2210
2211      You can set this directory by defining the :term:`DL_DIR` variable in the
2212      ``conf/local.conf`` file. This directory is self-maintaining and you
2213      should not have to touch it. By default, the directory is
2214      ``downloads`` in the :term:`Build Directory`::
2215
2216         #DL_DIR ?= "${TOPDIR}/downloads"
2217
2218      To specify a different download directory,
2219      simply remove the comment from the line and provide your directory.
2220
2221      During a first build, the system downloads many different source code
2222      tarballs from various upstream projects. Downloading can take a
2223      while, particularly if your network connection is slow. Tarballs are
2224      all stored in the directory defined by :term:`DL_DIR` and the build
2225      system looks there first to find source tarballs.
2226
2227      .. note::
2228
2229         When wiping and rebuilding, you can preserve this directory to
2230         speed up this part of subsequent builds.
2231
2232      You can safely share this directory between multiple builds on the
2233      same development machine. For additional information on how the build
2234      process gets source files when working behind a firewall or proxy
2235      server, see this specific question in the ":doc:`faq`"
2236      chapter. You can also refer to the
2237      ":yocto_wiki:`Working Behind a Network Proxy </Working_Behind_a_Network_Proxy>`"
2238      Wiki page.
2239
2240   :term:`DOC_COMPRESS`
2241      When inheriting the :ref:`ref-classes-compress_doc`
2242      class, this variable sets the compression policy used when the
2243      OpenEmbedded build system compresses man pages and info pages. By
2244      default, the compression method used is gz (gzip). Other policies
2245      available are xz and bz2.
2246
2247      For information on policies and on how to use this variable, see the
2248      comments in the ``meta/classes-recipe/compress_doc.bbclass`` file.
2249
2250   :term:`DT_FILES`
2251      Space-separated list of device tree source files to compile using
2252      a recipe that inherits the :ref:`ref-classes-devicetree` class. These
2253      are relative to the :term:`DT_FILES_PATH`.
2254
2255      For convenience, both ``.dts`` and ``.dtb`` extensions can be used.
2256
2257      Use an empty string (default) to build all device tree sources within
2258      the :term:`DT_FILES_PATH` directory.
2259
2260   :term:`DT_FILES_PATH`
2261      When compiling out-of-tree device tree sources using a recipe that
2262      inherits the :ref:`ref-classes-devicetree` class, this variable specifies
2263      the path to the directory containing dts files to build.
2264
2265      Defaults to the :term:`S` directory.
2266
2267   :term:`DT_PADDING_SIZE`
2268      When inheriting the :ref:`ref-classes-devicetree` class, this variable
2269      specifies the size of padding appended to the device tree blob, used as
2270      extra space typically for additional properties during boot.
2271
2272   :term:`EFI_PROVIDER`
2273      When building bootable images (i.e. where ``hddimg``, ``iso``, or
2274      ``wic.vmdk`` is in :term:`IMAGE_FSTYPES`), the
2275      :term:`EFI_PROVIDER` variable specifies the EFI bootloader to use. The
2276      default is "grub-efi", but "systemd-boot" can be used instead.
2277
2278      See the :ref:`ref-classes-systemd-boot` and :ref:`ref-classes-image-live`
2279      classes for more information.
2280
2281   :term:`ENABLE_BINARY_LOCALE_GENERATION`
2282      Variable that controls which locales for ``glibc`` are generated
2283      during the build (useful if the target device has 64Mbytes of RAM or
2284      less).
2285
2286   :term:`ERR_REPORT_DIR`
2287      When used with the :ref:`ref-classes-report-error` class, specifies the
2288      path used for storing the debug files created by the :ref:`error reporting
2289      tool <dev-manual/error-reporting-tool:using the error reporting tool>`,
2290      which allows you to submit build errors you encounter to a central
2291      database. By default, the value of this variable is
2292      ``${``\ :term:`LOG_DIR`\ ``}/error-report``.
2293
2294      You can set :term:`ERR_REPORT_DIR` to the path you want the error
2295      reporting tool to store the debug files as follows in your
2296      ``local.conf`` file::
2297
2298         ERR_REPORT_DIR = "path"
2299
2300   :term:`ERROR_QA`
2301      Specifies the quality assurance checks whose failures are reported as
2302      errors by the OpenEmbedded build system. You set this variable in
2303      your distribution configuration file. For a list of the checks you
2304      can control with this variable, see the
2305      ":ref:`ref-classes-insane`" section.
2306
2307   :term:`ESDK_CLASS_INHERIT_DISABLE`
2308      A list of classes to remove from the :term:`INHERIT`
2309      value globally within the extensible SDK configuration. The
2310      :ref:`populate-sdk-ext <ref-classes-populate-sdk-*>` class sets the
2311      default value::
2312
2313         ESDK_CLASS_INHERIT_DISABLE ?= "buildhistory icecc"
2314
2315      Some classes are not generally applicable within the extensible SDK
2316      context. You can use this variable to disable those classes.
2317
2318      For additional information on how to customize the extensible SDK's
2319      configuration, see the
2320      ":ref:`sdk-manual/appendix-customizing:configuring the extensible sdk`"
2321      section in the Yocto Project Application Development and the
2322      Extensible Software Development Kit (eSDK) manual.
2323
2324   :term:`ESDK_LOCALCONF_ALLOW`
2325      A list of variables allowed through from the OpenEmbedded build
2326      system configuration into the extensible SDK configuration. By
2327      default, the list of variables is empty and is set in the
2328      :ref:`populate-sdk-ext <ref-classes-populate-sdk-*>` class.
2329
2330      This list overrides the variables specified using the
2331      :term:`ESDK_LOCALCONF_REMOVE` variable as well as
2332      other variables automatically added due to the "/" character
2333      being found at the start of the
2334      value, which is usually indicative of being a path and thus might not
2335      be valid on the system where the SDK is installed.
2336
2337      For additional information on how to customize the extensible SDK's
2338      configuration, see the
2339      ":ref:`sdk-manual/appendix-customizing:configuring the extensible sdk`"
2340      section in the Yocto Project Application Development and the
2341      Extensible Software Development Kit (eSDK) manual.
2342
2343   :term:`ESDK_LOCALCONF_REMOVE`
2344      A list of variables not allowed through from the OpenEmbedded build
2345      system configuration into the extensible SDK configuration. Usually,
2346      these are variables that are specific to the machine on which the
2347      build system is running and thus would be potentially problematic
2348      within the extensible SDK.
2349
2350      By default, :term:`ESDK_LOCALCONF_REMOVE` is set in the
2351      :ref:`populate-sdk-ext <ref-classes-populate-sdk-*>` class and
2352      excludes the following variables:
2353
2354      - :term:`CONF_VERSION`
2355      - :term:`BB_NUMBER_THREADS`
2356      - :term:`BB_NUMBER_PARSE_THREADS`
2357      - :term:`PARALLEL_MAKE`
2358      - :term:`PRSERV_HOST`
2359      - :term:`SSTATE_MIRRORS` :term:`DL_DIR`
2360      - :term:`SSTATE_DIR` :term:`TMPDIR`
2361      - :term:`BB_SERVER_TIMEOUT`
2362
2363      For additional information on how to customize the extensible SDK's
2364      configuration, see the
2365      ":ref:`sdk-manual/appendix-customizing:configuring the extensible sdk`"
2366      section in the Yocto Project Application Development and the
2367      Extensible Software Development Kit (eSDK) manual.
2368
2369   :term:`EXCLUDE_FROM_SHLIBS`
2370      Triggers the OpenEmbedded build system's shared libraries resolver to
2371      exclude an entire package when scanning for shared libraries.
2372
2373      .. note::
2374
2375         The shared libraries resolver's functionality results in part from
2376         the internal function ``package_do_shlibs``, which is part of the
2377         :ref:`ref-tasks-package` task. You should be aware that the shared
2378         libraries resolver might implicitly define some dependencies between
2379         packages.
2380
2381      The :term:`EXCLUDE_FROM_SHLIBS` variable is similar to the
2382      :term:`PRIVATE_LIBS` variable, which excludes a
2383      package's particular libraries only and not the whole package.
2384
2385      Use the :term:`EXCLUDE_FROM_SHLIBS` variable by setting it to "1" for a
2386      particular package::
2387
2388         EXCLUDE_FROM_SHLIBS = "1"
2389
2390   :term:`EXCLUDE_FROM_WORLD`
2391      Directs BitBake to exclude a recipe from world builds (i.e.
2392      ``bitbake world``). During world builds, BitBake locates, parses and
2393      builds all recipes found in every layer exposed in the
2394      ``bblayers.conf`` configuration file.
2395
2396      To exclude a recipe from a world build using this variable, set the
2397      variable to "1" in the recipe.
2398
2399      .. note::
2400
2401         Recipes added to :term:`EXCLUDE_FROM_WORLD` may still be built during a
2402         world build in order to satisfy dependencies of other recipes. Adding
2403         a recipe to :term:`EXCLUDE_FROM_WORLD` only ensures that the recipe is not
2404         explicitly added to the list of build targets in a world build.
2405
2406   :term:`EXTENDPE`
2407      Used with file and pathnames to create a prefix for a recipe's
2408      version based on the recipe's :term:`PE` value. If :term:`PE`
2409      is set and greater than zero for a recipe, :term:`EXTENDPE` becomes that
2410      value (e.g if :term:`PE` is equal to "1" then :term:`EXTENDPE` becomes "1").
2411      If a recipe's :term:`PE` is not set (the default) or is equal to zero,
2412      :term:`EXTENDPE` becomes "".
2413
2414      See the :term:`STAMP` variable for an example.
2415
2416   :term:`EXTENDPKGV`
2417      The full package version specification as it appears on the final
2418      packages produced by a recipe. The variable's value is normally used
2419      to fix a runtime dependency to the exact same version of another
2420      package in the same recipe::
2421
2422         RDEPENDS:${PN}-additional-module = "${PN} (= ${EXTENDPKGV})"
2423
2424      The dependency relationships are intended to force the package
2425      manager to upgrade these types of packages in lock-step.
2426
2427   :term:`EXTERNAL_KERNEL_TOOLS`
2428      When set, the :term:`EXTERNAL_KERNEL_TOOLS` variable indicates that these
2429      tools are not in the source tree.
2430
2431      When kernel tools are available in the tree, they are preferred over
2432      any externally installed tools. Setting the :term:`EXTERNAL_KERNEL_TOOLS`
2433      variable tells the OpenEmbedded build system to prefer the installed
2434      external tools. See the :ref:`ref-classes-kernel-yocto` class in
2435      ``meta/classes-recipe`` to see how the variable is used.
2436
2437   :term:`EXTERNAL_TOOLCHAIN`
2438      When you intend to use an
2439      :ref:`external toolchain <dev-manual/external-toolchain:optionally using an external toolchain>`,
2440      this variable allows to specify the directory where this toolchain was
2441      installed.
2442
2443   :term:`EXTERNALSRC`
2444      When inheriting the :ref:`ref-classes-externalsrc`
2445      class, this variable points to the source tree, which is outside of
2446      the OpenEmbedded build system. When set, this variable sets the
2447      :term:`S` variable, which is what the OpenEmbedded build
2448      system uses to locate unpacked recipe source code.
2449
2450      See the ":ref:`ref-classes-externalsrc`" section for details. You
2451      can also find information on how to use this variable in the
2452      ":ref:`dev-manual/building:building software from an external source`"
2453      section in the Yocto Project Development Tasks Manual.
2454
2455   :term:`EXTERNALSRC_BUILD`
2456      When inheriting the :ref:`ref-classes-externalsrc`
2457      class, this variable points to the directory in which the recipe's
2458      source code is built, which is outside of the OpenEmbedded build
2459      system. When set, this variable sets the :term:`B` variable,
2460      which is what the OpenEmbedded build system uses to locate the
2461      :term:`Build Directory`.
2462
2463      See the ":ref:`ref-classes-externalsrc`" section for details. You
2464      can also find information on how to use this variable in the
2465      ":ref:`dev-manual/building:building software from an external source`"
2466      section in the Yocto Project Development Tasks Manual.
2467
2468   :term:`EXTRA_AUTORECONF`
2469      For recipes inheriting the :ref:`ref-classes-autotools`
2470      class, you can use :term:`EXTRA_AUTORECONF` to specify extra options to
2471      pass to the ``autoreconf`` command that is executed during the
2472      :ref:`ref-tasks-configure` task.
2473
2474      The default value is "--exclude=autopoint".
2475
2476   :term:`EXTRA_IMAGE_FEATURES`
2477      A list of additional features to include in an image. When listing
2478      more than one feature, separate them with a space.
2479
2480      Typically, you configure this variable in your ``local.conf`` file,
2481      which is found in the :term:`Build Directory`. Although you can use this
2482      variable from within a recipe, best practices dictate that you do not.
2483
2484      .. note::
2485
2486         To enable primary features from within the image recipe, use the
2487         :term:`IMAGE_FEATURES` variable.
2488
2489      Here are some examples of features you can add:
2490
2491        - "dbg-pkgs" --- adds -dbg packages for all installed packages including
2492          symbol information for debugging and profiling.
2493
2494        - "debug-tweaks" --- makes an image suitable for debugging. For example, allows root logins without passwords and
2495          enables post-installation logging. See the 'allow-empty-password' and
2496          'post-install-logging' features in the ":ref:`ref-features-image`"
2497          section for more information.
2498        - "dev-pkgs" --- adds -dev packages for all installed packages. This is
2499          useful if you want to develop against the libraries in the image.
2500        - "read-only-rootfs" --- creates an image whose root filesystem is
2501          read-only. See the
2502          ":ref:`dev-manual/read-only-rootfs:creating a read-only root filesystem`"
2503          section in the Yocto Project Development Tasks Manual for more
2504          information
2505        - "tools-debug" --- adds debugging tools such as gdb and strace.
2506        - "tools-sdk" --- adds development tools such as gcc, make,
2507          pkgconfig and so forth.
2508        - "tools-testapps" --- adds useful testing tools
2509          such as ts_print, aplay, arecord and so forth.
2510
2511      For a complete list of image features that ships with the Yocto
2512      Project, see the ":ref:`ref-features-image`" section.
2513
2514      For an example that shows how to customize your image by using this
2515      variable, see the ":ref:`dev-manual/customizing-images:customizing images using custom \`\`image_features\`\` and \`\`extra_image_features\`\``"
2516      section in the Yocto Project Development Tasks Manual.
2517
2518   :term:`EXTRA_IMAGECMD`
2519      Specifies additional options for the image creation command that has
2520      been specified in :term:`IMAGE_CMD`. When setting
2521      this variable, use an override for the associated image type. Here is
2522      an example::
2523
2524         EXTRA_IMAGECMD:ext3 ?= "-i 4096"
2525
2526   :term:`EXTRA_IMAGEDEPENDS`
2527      A list of recipes to build that do not provide packages for
2528      installing into the root filesystem.
2529
2530      Sometimes a recipe is required to build the final image but is not
2531      needed in the root filesystem. You can use the :term:`EXTRA_IMAGEDEPENDS`
2532      variable to list these recipes and thus specify the dependencies. A
2533      typical example is a required bootloader in a machine configuration.
2534
2535      .. note::
2536
2537         To add packages to the root filesystem, see the various
2538         :term:`RDEPENDS` and :term:`RRECOMMENDS` variables.
2539
2540   :term:`EXTRA_OECMAKE`
2541      Additional `CMake <https://cmake.org/overview/>`__ options. See the
2542      :ref:`ref-classes-cmake` class for additional information.
2543
2544   :term:`EXTRA_OECONF`
2545      Additional ``configure`` script options. See
2546      :term:`PACKAGECONFIG_CONFARGS` for
2547      additional information on passing configure script options.
2548
2549   :term:`EXTRA_OEMAKE`
2550      Additional GNU ``make`` options.
2551
2552      Because the :term:`EXTRA_OEMAKE` defaults to "", you need to set the
2553      variable to specify any required GNU options.
2554
2555      :term:`PARALLEL_MAKE` and
2556      :term:`PARALLEL_MAKEINST` also make use of
2557      :term:`EXTRA_OEMAKE` to pass the required flags.
2558
2559   :term:`EXTRA_OESCONS`
2560      When inheriting the :ref:`ref-classes-scons` class, this
2561      variable specifies additional configuration options you want to pass
2562      to the ``scons`` command line.
2563
2564   :term:`EXTRA_OEMESON`
2565      Additional `Meson <https://mesonbuild.com/>`__ options. See the
2566      :ref:`ref-classes-meson` class for additional information.
2567
2568      In addition to standard Meson options, such options correspond to
2569      `Meson build options <https://mesonbuild.com/Build-options.html>`__
2570      defined in the ``meson_options.txt`` file in the sources to build.
2571      Here is an example::
2572
2573         EXTRA_OEMESON = "-Dpython=disabled -Dvalgrind=disabled"
2574
2575      Note that any custom value for the Meson ``--buildtype`` option
2576      should be set through the :term:`MESON_BUILDTYPE` variable.
2577
2578   :term:`EXTRA_USERS_PARAMS`
2579      When inheriting the :ref:`ref-classes-extrausers`
2580      class, this variable provides image level user and group operations.
2581      This is a more global method of providing user and group
2582      configuration as compared to using the
2583      :ref:`ref-classes-useradd` class, which ties user and
2584      group configurations to a specific recipe.
2585
2586      The set list of commands you can configure using the
2587      :term:`EXTRA_USERS_PARAMS` is shown in the
2588      :ref:`ref-classes-extrausers` class. These commands map to the normal
2589      Unix commands of the same names::
2590
2591         # EXTRA_USERS_PARAMS = "\
2592         # useradd -p '' tester; \
2593         # groupadd developers; \
2594         # userdel nobody; \
2595         # groupdel -g video; \
2596         # groupmod -g 1020 developers; \
2597         # usermod -s /bin/sh tester; \
2598         # "
2599
2600      Hardcoded passwords are supported via the ``-p`` parameters for
2601      ``useradd`` or ``usermod``, but only hashed.
2602
2603      Here is an example that adds two users named "tester-jim" and "tester-sue" and assigns
2604      passwords. First on host, create the (escaped) password hash::
2605
2606         printf "%q" $(mkpasswd -m sha256crypt tester01)
2607
2608      The resulting hash is set to a variable and used in ``useradd`` command parameters::
2609
2610         inherit extrausers
2611         PASSWD = "\$X\$ABC123\$A-Long-Hash"
2612         EXTRA_USERS_PARAMS = "\
2613             useradd -p '${PASSWD}' tester-jim; \
2614             useradd -p '${PASSWD}' tester-sue; \
2615             "
2616
2617      Finally, here is an example that sets the root password::
2618
2619         inherit extrausers
2620         EXTRA_USERS_PARAMS = "\
2621             usermod -p '${PASSWD}' root; \
2622             "
2623
2624      .. note::
2625
2626         From a security perspective, hardcoding a default password is not
2627         generally a good idea or even legal in some jurisdictions. It is
2628         recommended that you do not do this if you are building a production
2629         image.
2630
2631      Additionally there is a special ``passwd-expire`` command that will
2632      cause the password for a user to be expired and thus force changing it
2633      on first login, for example::
2634
2635         EXTRA_USERS_PARAMS += " useradd myuser; passwd-expire myuser;"
2636
2637      .. note::
2638
2639         At present, ``passwd-expire`` may only work for remote logins when
2640         using OpenSSH and not dropbear as an SSH server.
2641
2642   :term:`EXTRANATIVEPATH`
2643      A list of subdirectories of
2644      ``${``\ :term:`STAGING_BINDIR_NATIVE`\ ``}``
2645      added to the beginning of the environment variable ``PATH``. As an
2646      example, the following prepends
2647      "${STAGING_BINDIR_NATIVE}/foo:${STAGING_BINDIR_NATIVE}/bar:" to
2648      ``PATH``::
2649
2650         EXTRANATIVEPATH = "foo bar"
2651
2652   :term:`FAKEROOT`
2653      See :term:`bitbake:FAKEROOT` in the BitBake manual.
2654
2655   :term:`FAKEROOTBASEENV`
2656      See :term:`bitbake:FAKEROOTBASEENV` in the BitBake manual.
2657
2658   :term:`FAKEROOTCMD`
2659      See :term:`bitbake:FAKEROOTCMD` in the BitBake manual.
2660
2661   :term:`FAKEROOTDIRS`
2662      See :term:`bitbake:FAKEROOTDIRS` in the BitBake manual.
2663
2664   :term:`FAKEROOTENV`
2665      See :term:`bitbake:FAKEROOTENV` in the BitBake manual.
2666
2667   :term:`FAKEROOTNOENV`
2668      See :term:`bitbake:FAKEROOTNOENV` in the BitBake manual.
2669
2670   :term:`FEATURE_PACKAGES`
2671      Defines one or more packages to include in an image when a specific
2672      item is included in :term:`IMAGE_FEATURES`.
2673      When setting the value, :term:`FEATURE_PACKAGES` should have the name of
2674      the feature item as an override. Here is an example::
2675
2676         FEATURE_PACKAGES_widget = "package1 package2"
2677
2678      In this example, if "widget" were added to :term:`IMAGE_FEATURES`,
2679      package1 and package2 would be included in the image.
2680
2681      .. note::
2682
2683         Packages installed by features defined through :term:`FEATURE_PACKAGES`
2684         are often package groups. While similarly named, you should not
2685         confuse the :term:`FEATURE_PACKAGES` variable with package groups, which
2686         are discussed elsewhere in the documentation.
2687
2688   :term:`FEED_DEPLOYDIR_BASE_URI`
2689      Points to the base URL of the server and location within the
2690      document-root that provides the metadata and packages required by
2691      OPKG to support runtime package management of IPK packages. You set
2692      this variable in your ``local.conf`` file.
2693
2694      Consider the following example::
2695
2696         FEED_DEPLOYDIR_BASE_URI = "http://192.168.7.1/BOARD-dir"
2697
2698      This example assumes you are serving
2699      your packages over HTTP and your databases are located in a directory
2700      named ``BOARD-dir``, which is underneath your HTTP server's
2701      document-root. In this case, the OpenEmbedded build system generates
2702      a set of configuration files for you in your target that work with
2703      the feed.
2704
2705   :term:`FETCHCMD`
2706      See :term:`bitbake:FETCHCMD` in the BitBake manual.
2707
2708   :term:`FILE`
2709      See :term:`bitbake:FILE` in the BitBake manual.
2710
2711   :term:`FILES`
2712      The list of files and directories that are placed in a package. The
2713      :term:`PACKAGES` variable lists the packages
2714      generated by a recipe.
2715
2716      To use the :term:`FILES` variable, provide a package name override that
2717      identifies the resulting package. Then, provide a space-separated
2718      list of files or paths that identify the files you want included as
2719      part of the resulting package. Here is an example::
2720
2721         FILES:${PN} += "${bindir}/mydir1 ${bindir}/mydir2/myfile"
2722
2723      .. note::
2724
2725         -  When specifying files or paths, you can pattern match using
2726            Python's
2727            `glob <https://docs.python.org/3/library/glob.html>`__
2728            syntax. For details on the syntax, see the documentation by
2729            following the previous link.
2730
2731         -  When specifying paths as part of the :term:`FILES` variable, it is
2732            good practice to use appropriate path variables. For example,
2733            use ``${sysconfdir}`` rather than ``/etc``, or ``${bindir}``
2734            rather than ``/usr/bin``. You can find a list of these
2735            variables at the top of the ``meta/conf/bitbake.conf`` file in
2736            the :term:`Source Directory`. You will also
2737            find the default values of the various ``FILES:*`` variables in
2738            this file.
2739
2740      If some of the files you provide with the :term:`FILES` variable are
2741      editable and you know they should not be overwritten during the
2742      package update process by the Package Management System (PMS), you
2743      can identify these files so that the PMS will not overwrite them. See
2744      the :term:`CONFFILES` variable for information on
2745      how to identify these files to the PMS.
2746
2747   :term:`FILES_SOLIBSDEV`
2748      Defines the file specification to match
2749      :term:`SOLIBSDEV`. In other words,
2750      :term:`FILES_SOLIBSDEV` defines the full path name of the development
2751      symbolic link (symlink) for shared libraries on the target platform.
2752
2753      The following statement from the ``bitbake.conf`` shows how it is
2754      set::
2755
2756         FILES_SOLIBSDEV ?= "${base_libdir}/lib*${SOLIBSDEV} ${libdir}/lib*${SOLIBSDEV}"
2757
2758   :term:`FILESEXTRAPATHS`
2759      Extends the search path the OpenEmbedded build system uses when
2760      looking for files and patches as it processes recipes and append
2761      files. The default directories BitBake uses when it processes recipes
2762      are initially defined by the :term:`FILESPATH`
2763      variable. You can extend :term:`FILESPATH` variable by using
2764      :term:`FILESEXTRAPATHS`.
2765
2766      Best practices dictate that you accomplish this by using
2767      :term:`FILESEXTRAPATHS` from within a ``.bbappend`` file and that you
2768      prepend paths as follows::
2769
2770         FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
2771
2772      In the above example, the build system first
2773      looks for files in a directory that has the same name as the
2774      corresponding append file.
2775
2776      .. note::
2777
2778         When extending :term:`FILESEXTRAPATHS`, be sure to use the immediate
2779         expansion (``:=``) operator. Immediate expansion makes sure that
2780         BitBake evaluates :term:`THISDIR` at the time the
2781         directive is encountered rather than at some later time when
2782         expansion might result in a directory that does not contain the
2783         files you need.
2784
2785         Also, include the trailing separating colon character if you are
2786         prepending. The trailing colon character is necessary because you
2787         are directing BitBake to extend the path by prepending directories
2788         to the search path.
2789
2790      Here is another common use::
2791
2792         FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
2793
2794      In this example, the build system extends the
2795      :term:`FILESPATH` variable to include a directory named ``files`` that is
2796      in the same directory as the corresponding append file.
2797
2798      This next example specifically adds three paths::
2799
2800         FILESEXTRAPATHS:prepend := "path_1:path_2:path_3:"
2801
2802      A final example shows how you can extend the search path and include
2803      a :term:`MACHINE`-specific override, which is useful
2804      in a BSP layer::
2805
2806          FILESEXTRAPATHS:prepend:intel-x86-common := "${THISDIR}/${PN}:"
2807
2808      The previous statement appears in the
2809      ``linux-yocto-dev.bbappend`` file, which is found in the
2810      :ref:`overview-manual/development-environment:yocto project source repositories` in
2811      ``meta-intel/common/recipes-kernel/linux``. Here, the machine
2812      override is a special :term:`PACKAGE_ARCH`
2813      definition for multiple ``meta-intel`` machines.
2814
2815      .. note::
2816
2817         For a layer that supports a single BSP, the override could just be
2818         the value of :term:`MACHINE`.
2819
2820      By prepending paths in ``.bbappend`` files, you allow multiple append
2821      files that reside in different layers but are used for the same
2822      recipe to correctly extend the path.
2823
2824   :term:`FILESOVERRIDES`
2825      A subset of :term:`OVERRIDES` used by the OpenEmbedded build system for
2826      creating :term:`FILESPATH`. The :term:`FILESOVERRIDES` variable uses
2827      overrides to automatically extend the :term:`FILESPATH` variable. For an
2828      example of how that works, see the :term:`FILESPATH` variable
2829      description. Additionally, you find more information on how overrides
2830      are handled in the
2831      ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:conditional syntax (overrides)`"
2832      section of the BitBake User Manual.
2833
2834      By default, the :term:`FILESOVERRIDES` variable is defined as::
2835
2836         FILESOVERRIDES = "${TRANSLATED_TARGET_ARCH}:${MACHINEOVERRIDES}:${DISTROOVERRIDES}"
2837
2838      .. note::
2839
2840         Do not hand-edit the :term:`FILESOVERRIDES` variable. The values match up
2841         with expected overrides and are used in an expected manner by the
2842         build system.
2843
2844   :term:`FILESPATH`
2845      The default set of directories the OpenEmbedded build system uses
2846      when searching for patches and files.
2847
2848      During the build process, BitBake searches each directory in
2849      :term:`FILESPATH` in the specified order when looking for files and
2850      patches specified by each ``file://`` URI in a recipe's
2851      :term:`SRC_URI` statements.
2852
2853      The default value for the :term:`FILESPATH` variable is defined in the
2854      :ref:`ref-classes-base` class found in ``meta/classes-global`` in the
2855      :term:`Source Directory`::
2856
2857         FILESPATH = "${@base_set_filespath(["${FILE_DIRNAME}/${BP}", \
2858             "${FILE_DIRNAME}/${BPN}", "${FILE_DIRNAME}/files"], d)}"
2859
2860      The
2861      :term:`FILESPATH` variable is automatically extended using the overrides
2862      from the :term:`FILESOVERRIDES` variable.
2863
2864      .. note::
2865
2866         -  Do not hand-edit the :term:`FILESPATH` variable. If you want the
2867            build system to look in directories other than the defaults,
2868            extend the :term:`FILESPATH` variable by using the
2869            :term:`FILESEXTRAPATHS` variable.
2870
2871         -  Be aware that the default :term:`FILESPATH` directories do not map
2872            to directories in custom layers where append files
2873            (``.bbappend``) are used. If you want the build system to find
2874            patches or files that reside with your append files, you need
2875            to extend the :term:`FILESPATH` variable by using the
2876            :term:`FILESEXTRAPATHS` variable.
2877
2878      You can take advantage of this searching behavior in useful ways. For
2879      example, consider a case where there is the following directory structure
2880      for general and machine-specific configurations::
2881
2882         files/defconfig
2883         files/MACHINEA/defconfig
2884         files/MACHINEB/defconfig
2885
2886      Also in the example, the :term:`SRC_URI` statement contains
2887      "file://defconfig". Given this scenario, you can set
2888      :term:`MACHINE` to "MACHINEA" and cause the build
2889      system to use files from ``files/MACHINEA``. Set :term:`MACHINE` to
2890      "MACHINEB" and the build system uses files from ``files/MACHINEB``.
2891      Finally, for any machine other than "MACHINEA" and "MACHINEB", the
2892      build system uses files from ``files/defconfig``.
2893
2894      You can find out more about the patching process in the
2895      ":ref:`overview-manual/concepts:patching`" section
2896      in the Yocto Project Overview and Concepts Manual and the
2897      ":ref:`dev-manual/new-recipe:patching code`" section in
2898      the Yocto Project Development Tasks Manual. See the
2899      :ref:`ref-tasks-patch` task as well.
2900
2901   :term:`FILESYSTEM_PERMS_TABLES`
2902      Allows you to define your own file permissions settings table as part
2903      of your configuration for the packaging process. For example, suppose
2904      you need a consistent set of custom permissions for a set of groups
2905      and users across an entire work project. It is best to do this in the
2906      packages themselves but this is not always possible.
2907
2908      By default, the OpenEmbedded build system uses the ``fs-perms.txt``,
2909      which is located in the ``meta/files`` folder in the :term:`Source Directory`.
2910      If you create your own file
2911      permissions setting table, you should place it in your layer or the
2912      distro's layer.
2913
2914      You define the :term:`FILESYSTEM_PERMS_TABLES` variable in the
2915      ``conf/local.conf`` file, which is found in the :term:`Build Directory`,
2916      to point to your custom ``fs-perms.txt``. You can specify more than a
2917      single file permissions setting table. The paths you specify to these
2918      files must be defined within the :term:`BBPATH` variable.
2919
2920      For guidance on how to create your own file permissions settings
2921      table file, examine the existing ``fs-perms.txt``.
2922
2923   :term:`FIT_ADDRESS_CELLS`
2924      Specifies the value of the ``#address-cells`` value for the
2925      description of the FIT image.
2926
2927      The default value is set to "1" by the :ref:`ref-classes-kernel-fitimage`
2928      class, which corresponds to 32 bit addresses.
2929
2930      For platforms that need to set 64 bit addresses, for example in
2931      :term:`UBOOT_LOADADDRESS` and :term:`UBOOT_ENTRYPOINT`, you need to
2932      set this value to "2", as two 32 bit values (cells) will be needed
2933      to represent such addresses.
2934
2935      Here is an example setting "0x400000000" as a load address::
2936
2937         FIT_ADDRESS_CELLS = "2"
2938         UBOOT_LOADADDRESS= "0x04 0x00000000"
2939
2940      See `more details about #address-cells <https://elinux.org/Device_Tree_Usage#How_Addressing_Works>`__.
2941
2942   :term:`FIT_CONF_DEFAULT_DTB`
2943      Specifies the default device tree binary (dtb) file for a FIT image
2944      when multiple ones are provided.
2945
2946      This variable is used in the :ref:`ref-classes-kernel-fitimage` class.
2947
2948   :term:`FIT_DESC`
2949      Specifies the description string encoded into a FIT image. The
2950      default value is set by the :ref:`ref-classes-kernel-fitimage` class as
2951      follows::
2952
2953         FIT_DESC ?= "U-Boot fitImage for ${DISTRO_NAME}/${PV}/${MACHINE}"
2954
2955   :term:`FIT_GENERATE_KEYS`
2956      Decides whether to generate the keys for signing the FIT image if
2957      they don't already exist. The keys are created in
2958      :term:`UBOOT_SIGN_KEYDIR`. The default value is set to "0"
2959      by the :ref:`ref-classes-kernel-fitimage` class.
2960
2961   :term:`FIT_HASH_ALG`
2962      Specifies the hash algorithm used in creating the FIT Image.
2963      This variable is set by default to "sha256" by the
2964      :ref:`ref-classes-kernel-fitimage` class.
2965
2966   :term:`FIT_KERNEL_COMP_ALG`
2967      The compression algorithm to use for the kernel image inside the FIT Image.
2968      At present, the only supported values are "gzip" (default), "lzo" or "none".
2969      If you set this variable to anything other than "none" you may also need
2970      to set :term:`FIT_KERNEL_COMP_ALG_EXTENSION`.
2971
2972      This variable is used in the :ref:`ref-classes-kernel-uboot` class.
2973
2974   :term:`FIT_KERNEL_COMP_ALG_EXTENSION`
2975      File extension corresponding to :term:`FIT_KERNEL_COMP_ALG`. The default
2976      value is set ".gz" by the :ref:`ref-classes-kernel-uboot` class. If you
2977      set :term:`FIT_KERNEL_COMP_ALG` to "lzo", you may want to set this
2978      variable to ".lzo".
2979
2980   :term:`FIT_KEY_GENRSA_ARGS`
2981      Arguments to ``openssl genrsa`` for generating a RSA private key for
2982      signing the FIT image. The default value is set to "-F4" by the
2983      :ref:`ref-classes-kernel-fitimage` class.
2984
2985   :term:`FIT_KEY_REQ_ARGS`
2986      Arguments to ``openssl req`` for generating a certificate for signing
2987      the FIT image. The default value is "-batch -new" by the
2988      :ref:`ref-classes-kernel-fitimage` class, "batch" for
2989      non interactive mode and "new" for generating new keys.
2990
2991   :term:`FIT_KEY_SIGN_PKCS`
2992      Format for the public key certificate used for signing the FIT image.
2993      The default value is set to "x509" by the
2994      :ref:`ref-classes-kernel-fitimage` class.
2995
2996   :term:`FIT_SIGN_ALG`
2997      Specifies the signature algorithm used in creating the FIT Image.
2998      This variable is set by default to "rsa2048" by the
2999      :ref:`ref-classes-kernel-fitimage` class.
3000
3001   :term:`FIT_PAD_ALG`
3002      Specifies the padding algorithm used in creating the FIT Image.
3003      The default value is set to "pkcs-1.5" by the
3004      :ref:`ref-classes-kernel-fitimage` class.
3005
3006   :term:`FIT_SIGN_INDIVIDUAL`
3007      If set to "1", then the :ref:`ref-classes-kernel-fitimage`
3008      class will sign the kernel, dtb and ramdisk images individually in addition
3009      to signing the FIT image itself. This could be useful if you are
3010      intending to verify signatures in another context than booting via
3011      U-Boot.
3012
3013      This variable is set to "0" by default.
3014
3015   :term:`FIT_SIGN_NUMBITS`
3016      Size of the private key used in the FIT image, in number of bits.
3017      The default value for this variable is set to "2048"
3018      by the :ref:`ref-classes-kernel-fitimage` class.
3019
3020   :term:`FONT_EXTRA_RDEPENDS`
3021      When inheriting the :ref:`ref-classes-fontcache` class,
3022      this variable specifies the runtime dependencies for font packages.
3023      By default, the :term:`FONT_EXTRA_RDEPENDS` is set to "fontconfig-utils".
3024
3025   :term:`FONT_PACKAGES`
3026      When inheriting the :ref:`ref-classes-fontcache` class, this variable
3027      identifies packages containing font files that need to be cached by
3028      Fontconfig. By default, the :ref:`ref-classes-fontcache` class assumes
3029      that fonts are in the recipe's main package (i.e.
3030      ``${``\ :term:`PN`\ ``}``). Use this variable if fonts you
3031      need are in a package other than that main package.
3032
3033   :term:`FORCE_RO_REMOVE`
3034      Forces the removal of the packages listed in ``ROOTFS_RO_UNNEEDED``
3035      during the generation of the root filesystem.
3036
3037      Set the variable to "1" to force the removal of these packages.
3038
3039   :term:`FULL_OPTIMIZATION`
3040      The options to pass in :term:`TARGET_CFLAGS` and :term:`CFLAGS` when
3041      compiling an optimized system. This variable defaults to "-O2 -pipe
3042      ${DEBUG_FLAGS}".
3043
3044   :term:`GCCPIE`
3045      Enables Position Independent Executables (PIE) within the GNU C
3046      Compiler (GCC). Enabling PIE in the GCC makes Return Oriented
3047      Programming (ROP) attacks much more difficult to execute.
3048
3049      By default the ``security_flags.inc`` file enables PIE by setting the
3050      variable as follows::
3051
3052         GCCPIE ?= "--enable-default-pie"
3053
3054   :term:`GCCVERSION`
3055      Specifies the default version of the GNU C Compiler (GCC) used for
3056      compilation. By default, :term:`GCCVERSION` is set to "8.x" in the
3057      ``meta/conf/distro/include/tcmode-default.inc`` include file::
3058
3059         GCCVERSION ?= "8.%"
3060
3061      You can override this value by setting it in a
3062      configuration file such as the ``local.conf``.
3063
3064   :term:`GDB`
3065      The minimal command and arguments to run the GNU Debugger.
3066
3067   :term:`GIR_EXTRA_LIBS_PATH`
3068      Allows to specify an extra search path for ``.so`` files
3069      in GLib related recipes using GObject introspection,
3070      and which do not compile without this setting.
3071      See the ":ref:`dev-manual/gobject-introspection:enabling gobject introspection support`"
3072      section for details.
3073
3074   :term:`GITDIR`
3075      The directory in which a local copy of a Git repository is stored
3076      when it is cloned.
3077
3078   :term:`GITHUB_BASE_URI`
3079      When inheriting the :ref:`ref-classes-github-releases`
3080      class, specifies the base URL for fetching releases for the github
3081      project you wish to fetch sources from. The default value is as follows::
3082
3083         GITHUB_BASE_URI ?= "https://github.com/${BPN}/${BPN}/releases/"
3084
3085   :term:`GLIBC_GENERATE_LOCALES`
3086      Specifies the list of GLIBC locales to generate should you not wish
3087      to generate all LIBC locals, which can be time consuming.
3088
3089      .. note::
3090
3091         If you specifically remove the locale ``en_US.UTF-8``, you must set
3092         :term:`IMAGE_LINGUAS` appropriately.
3093
3094      You can set :term:`GLIBC_GENERATE_LOCALES` in your ``local.conf`` file.
3095      By default, all locales are generated::
3096
3097         GLIBC_GENERATE_LOCALES = "en_GB.UTF-8 en_US.UTF-8"
3098
3099   :term:`GO_IMPORT`
3100      When inheriting the :ref:`ref-classes-go` class, this mandatory variable
3101      sets the import path for the Go package that will be created for the code
3102      to build. If you have a ``go.mod`` file in the source directory, this
3103      typically matches the path in the ``module`` line in this file.
3104
3105      Other Go programs importing this package will use this path.
3106
3107      Here is an example setting from the
3108      :yocto_git:`go-helloworld_0.1.bb </poky/tree/meta/recipes-extended/go-examples/go-helloworld_0.1.bb>`
3109      recipe::
3110
3111          GO_IMPORT = "golang.org/x/example"
3112
3113   :term:`GO_INSTALL`
3114      When inheriting the :ref:`ref-classes-go` class, this optional variable
3115      specifies which packages in the sources should be compiled and
3116      installed in the Go build space by the
3117      `go install <https://go.dev/ref/mod#go-install>`__ command.
3118
3119      Here is an example setting from the
3120      :oe_git:`crucible </meta-openembedded/tree/meta-oe/recipes-support/crucible/>`
3121      recipe::
3122
3123         GO_INSTALL = "\
3124             ${GO_IMPORT}/cmd/crucible \
3125             ${GO_IMPORT}/cmd/habtool \
3126         "
3127
3128      By default, :term:`GO_INSTALL` is defined as::
3129
3130         GO_INSTALL ?= "${GO_IMPORT}/..."
3131
3132      The ``...`` wildcard means that it will catch all
3133      packages found in the sources.
3134
3135      See the :term:`GO_INSTALL_FILTEROUT` variable for
3136      filtering out unwanted packages from the ones
3137      found from the :term:`GO_INSTALL` value.
3138
3139   :term:`GO_INSTALL_FILTEROUT`
3140      When using the Go "vendor" mechanism to bring in dependencies for a Go
3141      package, the default :term:`GO_INSTALL` setting, which uses the ``...``
3142      wildcard, will include the vendored packages in the build, which produces
3143      incorrect results.
3144
3145      There are also some Go packages that are structured poorly, so that the
3146      ``...`` wildcard results in building example or test code that should not
3147      be included in the build, or could fail to build.
3148
3149      This optional variable allows for filtering out a subset of the sources.
3150      It defaults to excluding everything under the ``vendor`` subdirectory
3151      under package's main directory. This is the normal location for vendored
3152      packages, but it can be overridden by a recipe to filter out other
3153      subdirectories if needed.
3154
3155   :term:`GO_WORKDIR`
3156      When using Go Modules, the current working directory must be the directory
3157      containing the ``go.mod`` file, or one of its subdirectories. When the
3158      ``go`` tool is used, it will automatically look for the ``go.mod`` file
3159      in the Go working directory or in any parent directory, but not in
3160      subdirectories.
3161
3162      When using the :ref:`ref-classes-go-mod` class to use Go modules,
3163      the optional :term:`GO_WORKDIR` variable, defaulting to the value
3164      of :term:`GO_IMPORT`, allows to specify a different Go working directory.
3165
3166   :term:`GROUPADD_PARAM`
3167      When inheriting the :ref:`ref-classes-useradd` class,
3168      this variable specifies for a package what parameters should be
3169      passed to the ``groupadd`` command if you wish to add a group to the
3170      system when the package is installed.
3171
3172      Here is an example from the ``dbus`` recipe::
3173
3174         GROUPADD_PARAM:${PN} = "-r netdev"
3175
3176      For information on the standard Linux shell command
3177      ``groupadd``, see https://linux.die.net/man/8/groupadd.
3178
3179   :term:`GROUPMEMS_PARAM`
3180      When inheriting the :ref:`ref-classes-useradd` class,
3181      this variable specifies for a package what parameters should be
3182      passed to the ``groupmems`` command if you wish to modify the members
3183      of a group when the package is installed.
3184
3185      For information on the standard Linux shell command ``groupmems``,
3186      see https://linux.die.net/man/8/groupmems.
3187
3188   :term:`GRUB_GFXSERIAL`
3189      Configures the GNU GRand Unified Bootloader (GRUB) to have graphics
3190      and serial in the boot menu. Set this variable to "1" in your
3191      ``local.conf`` or distribution configuration file to enable graphics
3192      and serial in the menu.
3193
3194      See the :ref:`ref-classes-grub-efi` class for more
3195      information on how this variable is used.
3196
3197   :term:`GRUB_OPTS`
3198      Additional options to add to the GNU GRand Unified Bootloader (GRUB)
3199      configuration. Use a semi-colon character (``;``) to separate
3200      multiple options.
3201
3202      The :term:`GRUB_OPTS` variable is optional. See the
3203      :ref:`ref-classes-grub-efi` class for more information
3204      on how this variable is used.
3205
3206   :term:`GRUB_TIMEOUT`
3207      Specifies the timeout before executing the default ``LABEL`` in the
3208      GNU GRand Unified Bootloader (GRUB).
3209
3210      The :term:`GRUB_TIMEOUT` variable is optional. See the
3211      :ref:`ref-classes-grub-efi` class for more information
3212      on how this variable is used.
3213
3214   :term:`GTKIMMODULES_PACKAGES`
3215      When inheriting the :ref:`ref-classes-gtk-immodules-cache` class,
3216      this variable specifies the packages that contain the GTK+ input
3217      method modules being installed when the modules are in packages other
3218      than the main package.
3219
3220   :term:`HGDIR`
3221      See :term:`bitbake:HGDIR` in the BitBake manual.
3222
3223   :term:`HOMEPAGE`
3224      Website where more information about the software the recipe is
3225      building can be found.
3226
3227   :term:`HOST_ARCH`
3228      The name of the target architecture, which is normally the same as
3229      :term:`TARGET_ARCH`. The OpenEmbedded build system
3230      supports many architectures. Here is an example list of architectures
3231      supported. This list is by no means complete as the architecture is
3232      configurable:
3233
3234      - arm
3235      - i586
3236      - x86_64
3237      - powerpc
3238      - powerpc64
3239      - mips
3240      - mipsel
3241
3242   :term:`HOST_CC_ARCH`
3243      Specifies architecture-specific compiler flags that are passed to the
3244      C compiler.
3245
3246      Default initialization for :term:`HOST_CC_ARCH` varies depending on what
3247      is being built:
3248
3249      -  :term:`TARGET_CC_ARCH` when building for the
3250         target
3251
3252      -  :term:`BUILD_CC_ARCH` when building for the build host (i.e.
3253         ``-native``)
3254
3255      -  ``BUILDSDK_CC_ARCH`` when building for an SDK (i.e.
3256         ``nativesdk-``)
3257
3258   :term:`HOST_OS`
3259      Specifies the name of the target operating system, which is normally
3260      the same as the :term:`TARGET_OS`. The variable can
3261      be set to "linux" for ``glibc``-based systems and to "linux-musl" for
3262      ``musl``. For ARM/EABI targets, there are also "linux-gnueabi" and
3263      "linux-musleabi" values possible.
3264
3265   :term:`HOST_PREFIX`
3266      Specifies the prefix for the cross-compile toolchain. :term:`HOST_PREFIX`
3267      is normally the same as :term:`TARGET_PREFIX`.
3268
3269   :term:`HOST_SYS`
3270      Specifies the system, including the architecture and the operating
3271      system, for which the build is occurring in the context of the
3272      current recipe.
3273
3274      The OpenEmbedded build system automatically sets this variable based
3275      on :term:`HOST_ARCH`,
3276      :term:`HOST_VENDOR`, and
3277      :term:`HOST_OS` variables.
3278
3279      .. note::
3280
3281         You do not need to set the variable yourself.
3282
3283      Consider these two examples:
3284
3285      -  Given a native recipe on a 32-bit x86 machine running Linux, the
3286         value is "i686-linux".
3287
3288      -  Given a recipe being built for a little-endian MIPS target running
3289         Linux, the value might be "mipsel-linux".
3290
3291   :term:`HOST_VENDOR`
3292      Specifies the name of the vendor. :term:`HOST_VENDOR` is normally the
3293      same as :term:`TARGET_VENDOR`.
3294
3295   :term:`HOSTTOOLS`
3296      A space-separated list (filter) of tools on the build host that
3297      should be allowed to be called from within build tasks. Using this
3298      filter helps reduce the possibility of host contamination. If a tool
3299      specified in the value of :term:`HOSTTOOLS` is not found on the build
3300      host, the OpenEmbedded build system produces an error and the build
3301      is not started.
3302
3303      For additional information, see
3304      :term:`HOSTTOOLS_NONFATAL`.
3305
3306   :term:`HOSTTOOLS_NONFATAL`
3307      A space-separated list (filter) of tools on the build host that
3308      should be allowed to be called from within build tasks. Using this
3309      filter helps reduce the possibility of host contamination. Unlike
3310      :term:`HOSTTOOLS`, the OpenEmbedded build system
3311      does not produce an error if a tool specified in the value of
3312      :term:`HOSTTOOLS_NONFATAL` is not found on the build host. Thus, you can
3313      use :term:`HOSTTOOLS_NONFATAL` to filter optional host tools.
3314
3315   :term:`ICECC_CLASS_DISABLE`
3316      Identifies user classes that you do not want the Icecream distributed
3317      compile support to consider. This variable is used by the
3318      :ref:`ref-classes-icecc` class. You set this variable in
3319      your ``local.conf`` file.
3320
3321      When you list classes using this variable, the recipes inheriting
3322      those classes will not benefit from distributed compilation across
3323      remote hosts. Instead they will be built locally.
3324
3325   :term:`ICECC_DISABLED`
3326      Disables or enables the ``icecc`` (Icecream) function. For more
3327      information on this function and best practices for using this
3328      variable, see the ":ref:`ref-classes-icecc`"
3329      section.
3330
3331      Setting this variable to "1" in your ``local.conf`` disables the
3332      function::
3333
3334         ICECC_DISABLED ??= "1"
3335
3336      To enable the function, set the variable as follows::
3337
3338         ICECC_DISABLED = ""
3339
3340   :term:`ICECC_ENV_EXEC`
3341      Points to the ``icecc-create-env`` script that you provide. This
3342      variable is used by the :ref:`ref-classes-icecc` class. You
3343      set this variable in your ``local.conf`` file.
3344
3345      If you do not point to a script that you provide, the OpenEmbedded
3346      build system uses the default script provided by the
3347      :oe_git:`icecc-create-env_0.1.bb
3348      </openembedded-core/tree/meta/recipes-devtools/icecc-create-env/icecc-create-env_0.1.bb>`
3349      recipe, which is a modified version and not the one that comes with
3350      ``icecream``.
3351
3352   :term:`ICECC_PARALLEL_MAKE`
3353      Extra options passed to the ``make`` command during the
3354      :ref:`ref-tasks-compile` task that specify parallel
3355      compilation. This variable usually takes the form of "-j x", where x
3356      represents the maximum number of parallel threads ``make`` can run.
3357
3358      .. note::
3359
3360         The options passed affect builds on all enabled machines on the
3361         network, which are machines running the ``iceccd`` daemon.
3362
3363      If your enabled machines support multiple cores, coming up with the
3364      maximum number of parallel threads that gives you the best
3365      performance could take some experimentation since machine speed,
3366      network lag, available memory, and existing machine loads can all
3367      affect build time. Consequently, unlike the
3368      :term:`PARALLEL_MAKE` variable, there is no
3369      rule-of-thumb for setting :term:`ICECC_PARALLEL_MAKE` to achieve optimal
3370      performance.
3371
3372      If you do not set :term:`ICECC_PARALLEL_MAKE`, the build system does not
3373      use it (i.e. the system does not detect and assign the number of
3374      cores as is done with :term:`PARALLEL_MAKE`).
3375
3376   :term:`ICECC_PATH`
3377      The location of the ``icecc`` binary. You can set this variable in
3378      your ``local.conf`` file. If your ``local.conf`` file does not define
3379      this variable, the :ref:`ref-classes-icecc` class attempts
3380      to define it by locating ``icecc`` using ``which``.
3381
3382   :term:`ICECC_RECIPE_DISABLE`
3383      Identifies user recipes that you do not want the Icecream distributed
3384      compile support to consider. This variable is used by the
3385      :ref:`ref-classes-icecc` class. You set this variable in
3386      your ``local.conf`` file.
3387
3388      When you list recipes using this variable, you are excluding them
3389      from distributed compilation across remote hosts. Instead they will
3390      be built locally.
3391
3392   :term:`ICECC_RECIPE_ENABLE`
3393      Identifies user recipes that use an empty
3394      :term:`PARALLEL_MAKE` variable that you want to
3395      force remote distributed compilation on using the Icecream
3396      distributed compile support. This variable is used by the
3397      :ref:`ref-classes-icecc` class. You set this variable in
3398      your ``local.conf`` file.
3399
3400   :term:`IMAGE_BASENAME`
3401      The base name of image output files. This variable defaults to the
3402      recipe name (``${``\ :term:`PN`\ ``}``).
3403
3404   :term:`IMAGE_BOOT_FILES`
3405      A space-separated list of files installed into the boot partition
3406      when preparing an image using the Wic tool with the
3407      ``bootimg-partition`` source plugin. By default,
3408      the files are
3409      installed under the same name as the source files. To change the
3410      installed name, separate it from the original name with a semi-colon
3411      (;). Source files need to be located in
3412      :term:`DEPLOY_DIR_IMAGE`. Here are two
3413      examples::
3414
3415         IMAGE_BOOT_FILES = "u-boot.img uImage;kernel"
3416         IMAGE_BOOT_FILES = "u-boot.${UBOOT_SUFFIX} ${KERNEL_IMAGETYPE}"
3417
3418      Alternatively, source files can be picked up using a glob pattern. In
3419      this case, the destination file must have the same name as the base
3420      name of the source file path. To install files into a directory
3421      within the target location, pass its name after a semi-colon (;).
3422      Here are two examples::
3423
3424         IMAGE_BOOT_FILES = "bcm2835-bootfiles/*"
3425         IMAGE_BOOT_FILES = "bcm2835-bootfiles/*;boot/"
3426
3427      The first example
3428      installs all files from ``${DEPLOY_DIR_IMAGE}/bcm2835-bootfiles``
3429      into the root of the target partition. The second example installs
3430      the same files into a ``boot`` directory within the target partition.
3431
3432      You can find information on how to use the Wic tool in the
3433      ":ref:`dev-manual/wic:creating partitioned images using wic`"
3434      section of the Yocto Project Development Tasks Manual. Reference
3435      material for Wic is located in the
3436      ":doc:`/ref-manual/kickstart`" chapter.
3437
3438   :term:`IMAGE_BUILDINFO_FILE`
3439      When using the :ref:`ref-classes-image-buildinfo` class,
3440      specifies the file in the image to write the build information into. The
3441      default value is "``${sysconfdir}/buildinfo``".
3442
3443   :term:`IMAGE_BUILDINFO_VARS`
3444      When using the :ref:`ref-classes-image-buildinfo` class,
3445      specifies the list of variables to include in the `Build Configuration`
3446      section of the output file (as a space-separated list). Defaults to
3447      ":term:`DISTRO` :term:`DISTRO_VERSION`".
3448
3449   :term:`IMAGE_CLASSES`
3450      A list of classes that all images should inherit. This is typically used
3451      to enable functionality across all image recipes.
3452
3453      Classes specified in :term:`IMAGE_CLASSES` must be located in the
3454      ``classes-recipe/`` or ``classes/`` subdirectories.
3455
3456   :term:`IMAGE_CMD`
3457      Specifies the command to create the image file for a specific image
3458      type, which corresponds to the value set in
3459      :term:`IMAGE_FSTYPES`, (e.g. ``ext3``,
3460      ``btrfs``, and so forth). When setting this variable, you should use
3461      an override for the associated type. Here is an example::
3462
3463         IMAGE_CMD:jffs2 = "mkfs.jffs2 --root=${IMAGE_ROOTFS} --faketime \
3464             --output=${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.jffs2 \
3465             ${EXTRA_IMAGECMD}"
3466
3467      You typically do not need to set this variable unless you are adding
3468      support for a new image type. For more examples on how to set this
3469      variable, see the :ref:`ref-classes-image_types`
3470      class file, which is ``meta/classes-recipe/image_types.bbclass``.
3471
3472   :term:`IMAGE_DEVICE_TABLES`
3473      Specifies one or more files that contain custom device tables that
3474      are passed to the ``makedevs`` command as part of creating an image.
3475      These files list basic device nodes that should be created under
3476      ``/dev`` within the image. If :term:`IMAGE_DEVICE_TABLES` is not set,
3477      ``files/device_table-minimal.txt`` is used, which is located by
3478      :term:`BBPATH`. For details on how you should write
3479      device table files, see ``meta/files/device_table-minimal.txt`` as an
3480      example.
3481
3482   :term:`IMAGE_EFI_BOOT_FILES`
3483      A space-separated list of files installed into the boot partition
3484      when preparing an image using the Wic tool with the
3485      ``bootimg-efi`` source plugin. By default,
3486      the files are
3487      installed under the same name as the source files. To change the
3488      installed name, separate it from the original name with a semi-colon
3489      (;). Source files need to be located in
3490      :term:`DEPLOY_DIR_IMAGE`. Here are two
3491      examples::
3492
3493         IMAGE_EFI_BOOT_FILES = "${KERNEL_IMAGETYPE};bz2"
3494         IMAGE_EFI_BOOT_FILES = "${KERNEL_IMAGETYPE} microcode.cpio"
3495
3496      Alternatively, source files can be picked up using a glob pattern. In
3497      this case, the destination file must have the same name as the base
3498      name of the source file path. To install files into a directory
3499      within the target location, pass its name after a semi-colon (;).
3500      Here are two examples::
3501
3502         IMAGE_EFI_BOOT_FILES = "boot/loader/*"
3503         IMAGE_EFI_BOOT_FILES = "boot/loader/*;boot/"
3504
3505      The first example
3506      installs all files from ``${DEPLOY_DIR_IMAGE}/boot/loader/``
3507      into the root of the target partition. The second example installs
3508      the same files into a ``boot`` directory within the target partition.
3509
3510      You can find information on how to use the Wic tool in the
3511      ":ref:`dev-manual/wic:creating partitioned images using wic`"
3512      section of the Yocto Project Development Tasks Manual. Reference
3513      material for Wic is located in the
3514      ":doc:`/ref-manual/kickstart`" chapter.
3515
3516   :term:`IMAGE_FEATURES`
3517      The primary list of features to include in an image. Typically, you
3518      configure this variable in an image recipe. Although you can use this
3519      variable from your ``local.conf`` file, which is found in the
3520      :term:`Build Directory`, best practices dictate that you do
3521      not.
3522
3523      .. note::
3524
3525         To enable extra features from outside the image recipe, use the
3526         :term:`EXTRA_IMAGE_FEATURES` variable.
3527
3528      For a list of image features that ships with the Yocto Project, see
3529      the ":ref:`ref-features-image`" section.
3530
3531      For an example that shows how to customize your image by using this
3532      variable, see the ":ref:`dev-manual/customizing-images:customizing images using custom \`\`image_features\`\` and \`\`extra_image_features\`\``"
3533      section in the Yocto Project Development Tasks Manual.
3534
3535   :term:`IMAGE_FSTYPES`
3536      Specifies the formats the OpenEmbedded build system uses during the
3537      build when creating the root filesystem. For example, setting
3538      :term:`IMAGE_FSTYPES` as follows causes the build system to create root
3539      filesystems using two formats: ``.ext3`` and ``.tar.bz2``::
3540
3541         IMAGE_FSTYPES = "ext3 tar.bz2"
3542
3543      For the complete list of supported image formats from which you can
3544      choose, see :term:`IMAGE_TYPES`.
3545
3546      .. note::
3547
3548         -  If an image recipe uses the "inherit image" line and you are
3549            setting :term:`IMAGE_FSTYPES` inside the recipe, you must set
3550            :term:`IMAGE_FSTYPES` prior to using the "inherit image" line.
3551
3552         -  Due to the way the OpenEmbedded build system processes this
3553            variable, you cannot update its contents by using ``:append``
3554            or ``:prepend``. You must use the ``+=`` operator to add one or
3555            more options to the :term:`IMAGE_FSTYPES` variable.
3556
3557   :term:`IMAGE_INSTALL`
3558      Used by recipes to specify the packages to install into an image
3559      through the :ref:`ref-classes-image` class. Use the
3560      :term:`IMAGE_INSTALL` variable with care to avoid ordering issues.
3561
3562      Image recipes set :term:`IMAGE_INSTALL` to specify the packages to
3563      install into an image through :ref:`ref-classes-image`. Additionally,
3564      there are "helper" classes such as the :ref:`ref-classes-core-image`
3565      class which can take lists used with :term:`IMAGE_FEATURES` and turn
3566      them into auto-generated entries in :term:`IMAGE_INSTALL` in addition
3567      to its default contents.
3568
3569      When you use this variable, it is best to use it as follows::
3570
3571         IMAGE_INSTALL:append = " package-name"
3572
3573      Be sure to include the space
3574      between the quotation character and the start of the package name or
3575      names.
3576
3577      .. note::
3578
3579         -  When working with a
3580            :ref:`core-image-minimal-initramfs <ref-manual/images:images>`
3581            image, do not use the :term:`IMAGE_INSTALL` variable to specify
3582            packages for installation. Instead, use the
3583            :term:`PACKAGE_INSTALL` variable, which
3584            allows the initial RAM filesystem (:term:`Initramfs`) recipe to use a
3585            fixed set of packages and not be affected by :term:`IMAGE_INSTALL`.
3586            For information on creating an :term:`Initramfs`, see the
3587            ":ref:`dev-manual/building:building an initial ram filesystem (Initramfs) image`"
3588            section in the Yocto Project Development Tasks Manual.
3589
3590         -  Using :term:`IMAGE_INSTALL` with the
3591            :ref:`+= <bitbake-user-manual/bitbake-user-manual-metadata:appending (+=) and prepending (=+) with spaces>`
3592            BitBake operator within the ``/conf/local.conf`` file or from
3593            within an image recipe is not recommended. Use of this operator in
3594            these ways can cause ordering issues. Since
3595            :ref:`ref-classes-core-image` sets :term:`IMAGE_INSTALL` to a
3596            default value using the
3597            :ref:`?= <bitbake-user-manual/bitbake-user-manual-metadata:setting a default value (?=)>`
3598            operator, using a ``+=`` operation against :term:`IMAGE_INSTALL`
3599            results in unexpected behavior when used within
3600            ``conf/local.conf``. Furthermore, the same operation from within an
3601            image recipe may or may not succeed depending on the specific
3602            situation. In both these cases, the behavior is contrary to how
3603            most users expect the ``+=`` operator to work.
3604
3605   :term:`IMAGE_LINGUAS`
3606      Specifies the list of locales to install into the image during the
3607      root filesystem construction process. The OpenEmbedded build system
3608      automatically splits locale files, which are used for localization,
3609      into separate packages. Setting the :term:`IMAGE_LINGUAS` variable
3610      ensures that any locale packages that correspond to packages already
3611      selected for installation into the image are also installed. Here is
3612      an example::
3613
3614         IMAGE_LINGUAS = "pt-br de-de"
3615
3616      In this example, the build system ensures any Brazilian Portuguese
3617      and German locale files that correspond to packages in the image are
3618      installed (i.e. ``*-locale-pt-br`` and ``*-locale-de-de`` as well as
3619      ``*-locale-pt`` and ``*-locale-de``, since some software packages
3620      only provide locale files by language and not by country-specific
3621      language).
3622
3623      See the :term:`GLIBC_GENERATE_LOCALES`
3624      variable for information on generating GLIBC locales.
3625
3626
3627   :term:`IMAGE_LINK_NAME`
3628      The name of the output image symlink (which does not include
3629      the version part as :term:`IMAGE_NAME` does). The default value
3630      is derived using the :term:`IMAGE_BASENAME` and
3631      :term:`IMAGE_MACHINE_SUFFIX` variables::
3632
3633         IMAGE_LINK_NAME ?= "${IMAGE_BASENAME}${IMAGE_MACHINE_SUFFIX}"
3634
3635      .. note::
3636
3637         It is possible to set this to "" to disable symlink creation,
3638         however, you also need to set :term:`IMAGE_NAME` to still have
3639         a reasonable value e.g.::
3640
3641            IMAGE_LINK_NAME = ""
3642            IMAGE_NAME = "${IMAGE_BASENAME}${IMAGE_MACHINE_SUFFIX}${IMAGE_VERSION_SUFFIX}"
3643
3644   :term:`IMAGE_MACHINE_SUFFIX`
3645      Specifies the by default machine-specific suffix for image file names
3646      (before the extension). The default value is set as follows::
3647
3648         IMAGE_MACHINE_SUFFIX ??= "-${MACHINE}"
3649
3650      The default :term:`DEPLOY_DIR_IMAGE` already has a :term:`MACHINE`
3651      subdirectory, so you may find it unnecessary to also include this suffix
3652      in the name of every image file. If you prefer to remove the suffix you
3653      can set this variable to an empty string::
3654
3655         IMAGE_MACHINE_SUFFIX = ""
3656
3657      (Not to be confused with :term:`IMAGE_NAME_SUFFIX`.)
3658
3659   :term:`IMAGE_MANIFEST`
3660      The manifest file for the image. This file lists all the installed
3661      packages that make up the image. The file contains package
3662      information on a line-per-package basis as follows::
3663
3664          packagename packagearch version
3665
3666      The :ref:`rootfs-postcommands <ref-classes-rootfs*>` class defines the manifest
3667      file as follows::
3668
3669         IMAGE_MANIFEST ="${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.manifest"
3670
3671      The location is
3672      derived using the :term:`IMGDEPLOYDIR`
3673      and :term:`IMAGE_NAME` variables. You can find
3674      information on how the image is created in the ":ref:`overview-manual/concepts:image generation`"
3675      section in the Yocto Project Overview and Concepts Manual.
3676
3677   :term:`IMAGE_NAME`
3678      The name of the output image files minus the extension. By default
3679      this variable is set using the :term:`IMAGE_LINK_NAME`, and
3680      :term:`IMAGE_VERSION_SUFFIX` variables::
3681
3682         IMAGE_NAME ?= "${IMAGE_LINK_NAME}${IMAGE_VERSION_SUFFIX}"
3683
3684   :term:`IMAGE_NAME_SUFFIX`
3685      Suffix used for the image output filename --- defaults to ``".rootfs"``
3686      to distinguish the image file from other files created during image
3687      building; however if this suffix is redundant or not desired you can
3688      clear the value of this variable (set the value to ""). For example,
3689      this is typically cleared in :term:`Initramfs` image recipes.
3690
3691   :term:`IMAGE_OVERHEAD_FACTOR`
3692      Defines a multiplier that the build system applies to the initial
3693      image size for cases when the multiplier times the returned disk
3694      usage value for the image is greater than the sum of
3695      :term:`IMAGE_ROOTFS_SIZE` and :term:`IMAGE_ROOTFS_EXTRA_SPACE`. The result of
3696      the multiplier applied to the initial image size creates free disk
3697      space in the image as overhead. By default, the build process uses a
3698      multiplier of 1.3 for this variable. This default value results in
3699      30% free disk space added to the image when this method is used to
3700      determine the final generated image size. You should be aware that
3701      post install scripts and the package management system uses disk
3702      space inside this overhead area. Consequently, the multiplier does
3703      not produce an image with all the theoretical free disk space. See
3704      :term:`IMAGE_ROOTFS_SIZE` for information on how the build system
3705      determines the overall image size.
3706
3707      The default 30% free disk space typically gives the image enough room
3708      to boot and allows for basic post installs while still leaving a
3709      small amount of free disk space. If 30% free space is inadequate, you
3710      can increase the default value. For example, the following setting
3711      gives you 50% free space added to the image::
3712
3713         IMAGE_OVERHEAD_FACTOR = "1.5"
3714
3715      Alternatively, you can ensure a specific amount of free disk space is
3716      added to the image by using the :term:`IMAGE_ROOTFS_EXTRA_SPACE`
3717      variable.
3718
3719   :term:`IMAGE_PKGTYPE`
3720      Defines the package type (i.e. DEB, RPM, IPK, or TAR) used by the
3721      OpenEmbedded build system. The variable is defined appropriately by
3722      the :ref:`ref-classes-package_deb`, :ref:`ref-classes-package_rpm`,
3723      or :ref:`ref-classes-package_ipk` class.
3724
3725      The :ref:`ref-classes-populate-sdk-*` and :ref:`ref-classes-image`
3726      classes use the :term:`IMAGE_PKGTYPE` for packaging up images and SDKs.
3727
3728      You should not set the :term:`IMAGE_PKGTYPE` manually. Rather, the
3729      variable is set indirectly through the appropriate
3730      :ref:`package_* <ref-classes-package>` class using the
3731      :term:`PACKAGE_CLASSES` variable. The
3732      OpenEmbedded build system uses the first package type (e.g. DEB, RPM,
3733      or IPK) that appears with the variable
3734
3735      .. note::
3736
3737         Files using the ``.tar`` format are never used as a substitute
3738         packaging format for DEB, RPM, and IPK formatted files for your image
3739         or SDK.
3740
3741   :term:`IMAGE_POSTPROCESS_COMMAND`
3742      Specifies a list of functions to call once the OpenEmbedded build
3743      system creates the final image output files. You can specify
3744      functions separated by semicolons::
3745
3746         IMAGE_POSTPROCESS_COMMAND += "function; ... "
3747
3748      If you need to pass the root filesystem path to a command within the
3749      function, you can use ``${IMAGE_ROOTFS}``, which points to the
3750      directory that becomes the root filesystem image. See the
3751      :term:`IMAGE_ROOTFS` variable for more
3752      information.
3753
3754   :term:`IMAGE_PREPROCESS_COMMAND`
3755      Specifies a list of functions to call before the OpenEmbedded build
3756      system creates the final image output files. You can specify
3757      functions separated by semicolons::
3758
3759         IMAGE_PREPROCESS_COMMAND += "function; ... "
3760
3761      If you need to pass the root filesystem path to a command within the
3762      function, you can use ``${IMAGE_ROOTFS}``, which points to the
3763      directory that becomes the root filesystem image. See the
3764      :term:`IMAGE_ROOTFS` variable for more
3765      information.
3766
3767   :term:`IMAGE_ROOTFS`
3768      The location of the root filesystem while it is under construction
3769      (i.e. during the :ref:`ref-tasks-rootfs` task). This
3770      variable is not configurable. Do not change it.
3771
3772   :term:`IMAGE_ROOTFS_ALIGNMENT`
3773      Specifies the alignment for the output image file in Kbytes. If the
3774      size of the image is not a multiple of this value, then the size is
3775      rounded up to the nearest multiple of the value. The default value is
3776      "1". See :term:`IMAGE_ROOTFS_SIZE` for
3777      additional information.
3778
3779   :term:`IMAGE_ROOTFS_EXTRA_SPACE`
3780      Defines additional free disk space created in the image in Kbytes. By
3781      default, this variable is set to "0". This free disk space is added
3782      to the image after the build system determines the image size as
3783      described in :term:`IMAGE_ROOTFS_SIZE`.
3784
3785      This variable is particularly useful when you want to ensure that a
3786      specific amount of free disk space is available on a device after an
3787      image is installed and running. For example, to be sure 5 Gbytes of
3788      free disk space is available, set the variable as follows::
3789
3790         IMAGE_ROOTFS_EXTRA_SPACE = "5242880"
3791
3792      For example, the Yocto Project Build Appliance specifically requests
3793      40 Gbytes of extra space with the line::
3794
3795         IMAGE_ROOTFS_EXTRA_SPACE = "41943040"
3796
3797   :term:`IMAGE_ROOTFS_SIZE`
3798      Defines the size in Kbytes for the generated image. The OpenEmbedded
3799      build system determines the final size for the generated image using
3800      an algorithm that takes into account the initial disk space used for
3801      the generated image, a requested size for the image, and requested
3802      additional free disk space to be added to the image. Programatically,
3803      the build system determines the final size of the generated image as
3804      follows::
3805
3806         if (image-du * overhead) < rootfs-size:
3807             internal-rootfs-size = rootfs-size + xspace
3808         else:
3809             internal-rootfs-size = (image-du * overhead) + xspace
3810         where:
3811             image-du = Returned value of the du command on the image.
3812             overhead = IMAGE_OVERHEAD_FACTOR
3813             rootfs-size = IMAGE_ROOTFS_SIZE
3814             internal-rootfs-size = Initial root filesystem size before any modifications.
3815             xspace = IMAGE_ROOTFS_EXTRA_SPACE
3816
3817      See the :term:`IMAGE_OVERHEAD_FACTOR`
3818      and :term:`IMAGE_ROOTFS_EXTRA_SPACE`
3819      variables for related information.
3820
3821   :term:`IMAGE_TYPEDEP`
3822      Specifies a dependency from one image type on another. Here is an
3823      example from the :ref:`ref-classes-image-live` class::
3824
3825         IMAGE_TYPEDEP:live = "ext3"
3826
3827      In the previous example, the variable ensures that when "live" is
3828      listed with the :term:`IMAGE_FSTYPES` variable,
3829      the OpenEmbedded build system produces an ``ext3`` image first since
3830      one of the components of the live image is an ``ext3`` formatted
3831      partition containing the root filesystem.
3832
3833   :term:`IMAGE_TYPES`
3834      Specifies the complete list of supported image types by default:
3835
3836      - btrfs
3837      - container
3838      - cpio
3839      - cpio.gz
3840      - cpio.lz4
3841      - cpio.lzma
3842      - cpio.xz
3843      - cramfs
3844      - erofs
3845      - erofs-lz4
3846      - erofs-lz4hc
3847      - ext2
3848      - ext2.bz2
3849      - ext2.gz
3850      - ext2.lzma
3851      - ext3
3852      - ext3.gz
3853      - ext4
3854      - ext4.gz
3855      - f2fs
3856      - hddimg
3857      - iso
3858      - jffs2
3859      - jffs2.sum
3860      - multiubi
3861      - squashfs
3862      - squashfs-lz4
3863      - squashfs-lzo
3864      - squashfs-xz
3865      - tar
3866      - tar.bz2
3867      - tar.gz
3868      - tar.lz4
3869      - tar.xz
3870      - tar.zst
3871      - ubi
3872      - ubifs
3873      - wic
3874      - wic.bz2
3875      - wic.gz
3876      - wic.lzma
3877
3878      For more information about these types of images, see
3879      ``meta/classes-recipe/image_types*.bbclass`` in the :term:`Source Directory`.
3880
3881   :term:`IMAGE_VERSION_SUFFIX`
3882      Version suffix that is part of the default :term:`IMAGE_NAME` and
3883      :term:`KERNEL_ARTIFACT_NAME` values.
3884      Defaults to ``"-${DATETIME}"``, however you could set this to a
3885      version string that comes from your external build environment if
3886      desired, and this suffix would then be used consistently across
3887      the build artifacts.
3888
3889   :term:`IMGDEPLOYDIR`
3890      When inheriting the :ref:`ref-classes-image` class directly or
3891      through the :ref:`ref-classes-core-image` class, the
3892      :term:`IMGDEPLOYDIR` points to a temporary work area for deployed files
3893      that is set in the ``image`` class as follows::
3894
3895         IMGDEPLOYDIR = "${WORKDIR}/deploy-${PN}-image-complete"
3896
3897      Recipes inheriting the :ref:`ref-classes-image` class should copy
3898      files to be deployed into :term:`IMGDEPLOYDIR`, and the class will take
3899      care of copying them into :term:`DEPLOY_DIR_IMAGE` afterwards.
3900
3901   :term:`INCOMPATIBLE_LICENSE`
3902      Specifies a space-separated list of license names (as they would
3903      appear in :term:`LICENSE`) that should be excluded
3904      from the build. Recipes that provide no alternatives to listed
3905      incompatible licenses are not built. Packages that are individually
3906      licensed with the specified incompatible licenses will be deleted.
3907
3908      There is some support for wildcards in this variable's value,
3909      however it is restricted to specific licenses. Currently only
3910      these wildcards are allowed and expand as follows:
3911
3912      - ``AGPL-3.0*"``: ``AGPL-3.0-only``, ``AGPL-3.0-or-later``
3913      - ``GPL-3.0*``: ``GPL-3.0-only``, ``GPL-3.0-or-later``
3914      - ``LGPL-3.0*``: ``LGPL-3.0-only``, ``LGPL-3.0-or-later``
3915
3916      .. note::
3917
3918         This functionality is only regularly tested using the following
3919         setting::
3920
3921                 INCOMPATIBLE_LICENSE = "GPL-3.0* LGPL-3.0* AGPL-3.0*"
3922
3923
3924         Although you can use other settings, you might be required to
3925         remove dependencies on (or provide alternatives to) components that
3926         are required to produce a functional system image.
3927
3928   :term:`INCOMPATIBLE_LICENSE_EXCEPTIONS`
3929      Specifies a space-separated list of package and license pairs that
3930      are allowed to be used even if the license is specified in
3931      :term:`INCOMPATIBLE_LICENSE`. The package and license pairs are
3932      separated using a colon. Example::
3933
3934         INCOMPATIBLE_LICENSE_EXCEPTIONS = "gdbserver:GPL-3.0-only gdbserver:LGPL-3.0-only"
3935
3936   :term:`INHERIT`
3937      Causes the named class or classes to be inherited globally. Anonymous
3938      functions in the class or classes are not executed for the base
3939      configuration and in each individual recipe. The OpenEmbedded build
3940      system ignores changes to :term:`INHERIT` in individual recipes.
3941      Classes inherited using :term:`INHERIT` must be located in the
3942      ``classes-global/`` or ``classes/`` subdirectories.
3943
3944      For more information on :term:`INHERIT`, see the
3945      :ref:`bitbake-user-manual/bitbake-user-manual-metadata:\`\`inherit\`\` configuration directive`"
3946      section in the BitBake User Manual.
3947
3948   :term:`INHERIT_DISTRO`
3949      Lists classes that will be inherited at the distribution level. It is
3950      unlikely that you want to edit this variable.
3951
3952      Classes specified in :term:`INHERIT_DISTRO` must be located in the
3953      ``classes-global/`` or ``classes/`` subdirectories.
3954
3955      The default value of the variable is set as follows in the
3956      ``meta/conf/distro/defaultsetup.conf`` file::
3957
3958         INHERIT_DISTRO ?= "debian devshell sstate license"
3959
3960   :term:`INHIBIT_DEFAULT_DEPS`
3961      Prevents the default dependencies, namely the C compiler and standard
3962      C library (libc), from being added to :term:`DEPENDS`.
3963      This variable is usually used within recipes that do not require any
3964      compilation using the C compiler.
3965
3966      Set the variable to "1" to prevent the default dependencies from
3967      being added.
3968
3969   :term:`INHIBIT_PACKAGE_DEBUG_SPLIT`
3970      Prevents the OpenEmbedded build system from splitting out debug
3971      information during packaging. By default, the build system splits out
3972      debugging information during the
3973      :ref:`ref-tasks-package` task. For more information on
3974      how debug information is split out, see the
3975      :term:`PACKAGE_DEBUG_SPLIT_STYLE`
3976      variable.
3977
3978      To prevent the build system from splitting out debug information
3979      during packaging, set the :term:`INHIBIT_PACKAGE_DEBUG_SPLIT` variable as
3980      follows::
3981
3982         INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
3983
3984   :term:`INHIBIT_PACKAGE_STRIP`
3985      If set to "1", causes the build to not strip binaries in resulting
3986      packages and prevents the ``-dbg`` package from containing the source
3987      files.
3988
3989      By default, the OpenEmbedded build system strips binaries and puts
3990      the debugging symbols into ``${``\ :term:`PN`\ ``}-dbg``.
3991      Consequently, you should not set :term:`INHIBIT_PACKAGE_STRIP` when you
3992      plan to debug in general.
3993
3994   :term:`INHIBIT_SYSROOT_STRIP`
3995      If set to "1", causes the build to not strip binaries in the
3996      resulting sysroot.
3997
3998      By default, the OpenEmbedded build system strips binaries in the
3999      resulting sysroot. When you specifically set the
4000      :term:`INHIBIT_SYSROOT_STRIP` variable to "1" in your recipe, you inhibit
4001      this stripping.
4002
4003      If you want to use this variable, include the :ref:`ref-classes-staging`
4004      class. This class uses a ``sys_strip()`` function to test for the variable
4005      and acts accordingly.
4006
4007      .. note::
4008
4009         Use of the :term:`INHIBIT_SYSROOT_STRIP` variable occurs in rare and
4010         special circumstances. For example, suppose you are building
4011         bare-metal firmware by using an external GCC toolchain. Furthermore,
4012         even if the toolchain's binaries are strippable, there are other files
4013         needed for the build that are not strippable.
4014
4015   :term:`INIT_MANAGER`
4016      Specifies the system init manager to use. Available options are:
4017
4018      -  ``sysvinit``
4019      -  ``systemd``
4020      -  ``mdev-busybox``
4021
4022      With ``sysvinit``, the init manager is set to
4023      :wikipedia:`SysVinit <Init#SysV-style>`, the traditional UNIX init
4024      system. This is the default choice in the Poky distribution, together with
4025      the Udev device manager (see the ":ref:`device-manager`" section).
4026
4027      With ``systemd``, the init manager becomes :wikipedia:`systemd <Systemd>`,
4028      which comes with the :wikipedia:`udev <Udev>` device manager.
4029
4030      With ``mdev-busybox``, the init manager becomes the much simpler BusyBox
4031      init, together with the BusyBox mdev device manager. This is the simplest
4032      and lightest solution, and probably the best choice for low-end systems
4033      with a rather slow CPU and a limited amount of RAM.
4034
4035      More concretely, this is used to include
4036      ``conf/distro/include/init-manager-${INIT_MANAGER}.inc`` into the global
4037      configuration. You can have a look at the
4038      :yocto_git:`meta/conf/distro/include/init-manager-*.inc </poky/tree/meta/conf/distro/include>`
4039      files for more information, and also the ":ref:`init-manager`"
4040      section in the Yocto Project Development Tasks Manual.
4041
4042   :term:`INITRAMFS_DEPLOY_DIR_IMAGE`
4043      Indicates the deploy directory used by :ref:`ref-tasks-bundle_initramfs`
4044      where the :term:`INITRAMFS_IMAGE` will be fetched from. This variable is
4045      set by default to ``${DEPLOY_DIR_IMAGE}`` in the
4046      :ref:`ref-classes-kernel` class and it's only meant to be changed when
4047      building an :term:`Initramfs` image from a separate multiconfig via
4048      :term:`INITRAMFS_MULTICONFIG`.
4049
4050   :term:`INITRAMFS_FSTYPES`
4051      Defines the format for the output image of an initial RAM filesystem
4052      (:term:`Initramfs`), which is used during boot. Supported formats are the
4053      same as those supported by the
4054      :term:`IMAGE_FSTYPES` variable.
4055
4056      The default value of this variable, which is set in the
4057      ``meta/conf/bitbake.conf`` configuration file in the
4058      :term:`Source Directory`, is "cpio.gz". The Linux kernel's
4059      :term:`Initramfs` mechanism, as opposed to the initial RAM filesystem
4060      :wikipedia:`initrd <Initrd>` mechanism, expects
4061      an optionally compressed cpio archive.
4062
4063   :term:`INITRAMFS_IMAGE`
4064      Specifies the :term:`PROVIDES` name of an image
4065      recipe that is used to build an initial RAM filesystem (:term:`Initramfs`)
4066      image. In other words, the :term:`INITRAMFS_IMAGE` variable causes an
4067      additional recipe to be built as a dependency to whatever root
4068      filesystem recipe you might be using (e.g. ``core-image-sato``). The
4069      :term:`Initramfs` image recipe you provide should set
4070      :term:`IMAGE_FSTYPES` to
4071      :term:`INITRAMFS_FSTYPES`.
4072
4073      An :term:`Initramfs` image provides a temporary root filesystem used for
4074      early system initialization (e.g. loading of modules needed to locate
4075      and mount the "real" root filesystem).
4076
4077      .. note::
4078
4079         See the ``meta/recipes-core/images/core-image-minimal-initramfs.bb``
4080         recipe in the :term:`Source Directory`
4081         for an example :term:`Initramfs` recipe. To select this sample recipe as
4082         the one built to provide the :term:`Initramfs` image, set :term:`INITRAMFS_IMAGE`
4083         to "core-image-minimal-initramfs".
4084
4085      You can also find more information by referencing the
4086      ``meta-poky/conf/templates/default/local.conf.sample.extended``
4087      configuration file in the Source Directory, the :ref:`ref-classes-image`
4088      class, and the :ref:`ref-classes-kernel` class to see how to use the
4089      :term:`INITRAMFS_IMAGE` variable.
4090
4091      If :term:`INITRAMFS_IMAGE` is empty, which is the default, then no
4092      :term:`Initramfs` image is built.
4093
4094      For more information, you can also see the
4095      :term:`INITRAMFS_IMAGE_BUNDLE`
4096      variable, which allows the generated image to be bundled inside the
4097      kernel image. Additionally, for information on creating an :term:`Initramfs`
4098      image, see the ":ref:`dev-manual/building:building an initial ram filesystem (Initramfs) image`" section
4099      in the Yocto Project Development Tasks Manual.
4100
4101   :term:`INITRAMFS_IMAGE_BUNDLE`
4102      Controls whether or not the image recipe specified by
4103      :term:`INITRAMFS_IMAGE` is run through an
4104      extra pass
4105      (:ref:`ref-tasks-bundle_initramfs`) during
4106      kernel compilation in order to build a single binary that contains
4107      both the kernel image and the initial RAM filesystem (:term:`Initramfs`)
4108      image. This makes use of the
4109      :term:`CONFIG_INITRAMFS_SOURCE` kernel
4110      feature.
4111
4112      .. note::
4113
4114         Bundling the :term:`Initramfs` with the kernel conflates the code in the
4115         :term:`Initramfs` with the GPLv2 licensed Linux kernel binary. Thus only GPLv2
4116         compatible software may be part of a bundled :term:`Initramfs`.
4117
4118      .. note::
4119
4120         Using an extra compilation pass to bundle the :term:`Initramfs` avoids a
4121         circular dependency between the kernel recipe and the :term:`Initramfs`
4122         recipe should the :term:`Initramfs` include kernel modules. Should that be
4123         the case, the :term:`Initramfs` recipe depends on the kernel for the
4124         kernel modules, and the kernel depends on the :term:`Initramfs` recipe
4125         since the :term:`Initramfs` is bundled inside the kernel image.
4126
4127      The combined binary is deposited into the ``tmp/deploy`` directory,
4128      which is part of the :term:`Build Directory`.
4129
4130      Setting the variable to "1" in a configuration file causes the
4131      OpenEmbedded build system to generate a kernel image with the
4132      :term:`Initramfs` specified in :term:`INITRAMFS_IMAGE` bundled within::
4133
4134         INITRAMFS_IMAGE_BUNDLE = "1"
4135
4136      By default, the :ref:`ref-classes-kernel` class sets this variable to a
4137      null string as follows::
4138
4139         INITRAMFS_IMAGE_BUNDLE ?= ""
4140
4141      .. note::
4142
4143         You must set the :term:`INITRAMFS_IMAGE_BUNDLE` variable in a
4144         configuration file. You cannot set the variable in a recipe file.
4145
4146      See the
4147      :yocto_git:`local.conf.sample.extended </poky/tree/meta-poky/conf/templates/default/local.conf.sample.extended>`
4148      file for additional information. Also, for information on creating an
4149      :term:`Initramfs`, see the ":ref:`dev-manual/building:building an initial ram filesystem (Initramfs) image`" section
4150      in the Yocto Project Development Tasks Manual.
4151
4152   :term:`INITRAMFS_IMAGE_NAME`
4153
4154      This value needs to stay in sync with :term:`IMAGE_LINK_NAME`, but with
4155      :term:`INITRAMFS_IMAGE` instead of :term:`IMAGE_BASENAME`. The default value
4156      is set as follows:
4157
4158         INITRAMFS_IMAGE_NAME ?= "${@['${INITRAMFS_IMAGE}${IMAGE_MACHINE_SUFFIX}', ''][d.getVar('INITRAMFS_IMAGE') == '']}"
4159
4160      That is, if :term:`INITRAMFS_IMAGE` is set, the value of
4161      :term:`INITRAMFS_IMAGE_NAME` will be set based upon
4162      :term:`INITRAMFS_IMAGE` and :term:`IMAGE_MACHINE_SUFFIX`.
4163
4164
4165   :term:`INITRAMFS_LINK_NAME`
4166      The link name of the initial RAM filesystem image. This variable is
4167      set in the ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as
4168      follows::
4169
4170         INITRAMFS_LINK_NAME ?= "initramfs-${KERNEL_ARTIFACT_LINK_NAME}"
4171
4172      The value of the
4173      ``KERNEL_ARTIFACT_LINK_NAME`` variable, which is set in the same
4174      file, has the following value::
4175
4176         KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}"
4177
4178      See the :term:`MACHINE` variable for additional
4179      information.
4180
4181   :term:`INITRAMFS_MULTICONFIG`
4182      Defines the multiconfig to create a multiconfig dependency to be used by
4183      the :ref:`ref-classes-kernel` class.
4184
4185      This allows the kernel to bundle an :term:`INITRAMFS_IMAGE` coming from
4186      a separate multiconfig, this is meant to be used in addition to :term:`INITRAMFS_DEPLOY_DIR_IMAGE`.
4187
4188      For more information on how to bundle an :term:`Initramfs` image from a separate
4189      multiconfig see the ":ref:`dev-manual/building:Bundling an Initramfs Image From a Separate Multiconfig`"
4190      section in the Yocto Project Development Tasks Manual.
4191
4192   :term:`INITRAMFS_NAME`
4193      The base name of the initial RAM filesystem image. This variable is
4194      set in the ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as
4195      follows::
4196
4197         INITRAMFS_NAME ?= "initramfs-${KERNEL_ARTIFACT_NAME}"
4198
4199      See :term:`KERNEL_ARTIFACT_NAME` for additional information.
4200
4201   :term:`INITRD`
4202      Indicates list of filesystem images to concatenate and use as an
4203      initial RAM disk (``initrd``).
4204
4205      The :term:`INITRD` variable is an optional variable used with the
4206      :ref:`ref-classes-image-live` class.
4207
4208   :term:`INITRD_IMAGE`
4209      When building a "live" bootable image (i.e. when
4210      :term:`IMAGE_FSTYPES` contains "live"),
4211      :term:`INITRD_IMAGE` specifies the image recipe that should be built to
4212      provide the initial RAM disk image. The default value is
4213      "core-image-minimal-initramfs".
4214
4215      See the :ref:`ref-classes-image-live` class for more information.
4216
4217   :term:`INITSCRIPT_NAME`
4218      The filename of the initialization script as installed to
4219      ``${sysconfdir}/init.d``.
4220
4221      This variable is used in recipes when using :ref:`ref-classes-update-rc.d`.
4222      The variable is mandatory.
4223
4224   :term:`INITSCRIPT_PACKAGES`
4225      A list of the packages that contain initscripts. If multiple packages
4226      are specified, you need to append the package name to the other
4227      ``INITSCRIPT_*`` as an override.
4228
4229      This variable is used in recipes when using :ref:`ref-classes-update-rc.d`.
4230      The variable is optional and defaults to the :term:`PN`
4231      variable.
4232
4233   :term:`INITSCRIPT_PARAMS`
4234      Specifies the options to pass to ``update-rc.d``. Here is an example::
4235
4236         INITSCRIPT_PARAMS = "start 99 5 2 . stop 20 0 1 6 ."
4237
4238      In this example, the script has a runlevel of 99, starts the script
4239      in initlevels 2 and 5, and stops the script in levels 0, 1 and 6.
4240
4241      The variable's default value is "defaults", which is set in the
4242      :ref:`ref-classes-update-rc.d` class.
4243
4244      The value in :term:`INITSCRIPT_PARAMS` is passed through to the
4245      ``update-rc.d`` command. For more information on valid parameters,
4246      please see the ``update-rc.d`` manual page at
4247      https://manpages.debian.org/buster/init-system-helpers/update-rc.d.8.en.html
4248
4249   :term:`INSANE_SKIP`
4250      Specifies the QA checks to skip for a specific package within a
4251      recipe. For example, to skip the check for symbolic link ``.so``
4252      files in the main package of a recipe, add the following to the
4253      recipe. The package name override must be used, which in this example
4254      is ``${PN}``::
4255
4256         INSANE_SKIP:${PN} += "dev-so"
4257
4258      See the ":ref:`ref-classes-insane`" section for a
4259      list of the valid QA checks you can specify using this variable.
4260
4261   :term:`INSTALL_TIMEZONE_FILE`
4262      By default, the ``tzdata`` recipe packages an ``/etc/timezone`` file.
4263      Set the :term:`INSTALL_TIMEZONE_FILE` variable to "0" at the
4264      configuration level to disable this behavior.
4265
4266   :term:`IPK_FEED_URIS`
4267      When the IPK backend is in use and package management is enabled on
4268      the target, you can use this variable to set up ``opkg`` in the
4269      target image to point to package feeds on a nominated server. Once
4270      the feed is established, you can perform installations or upgrades
4271      using the package manager at runtime.
4272
4273   :term:`KARCH`
4274      Defines the kernel architecture used when assembling the
4275      configuration. Architectures supported for this release are:
4276
4277      - powerpc
4278      - i386
4279      - x86_64
4280      - arm
4281      - qemu
4282      - mips
4283
4284      You define the :term:`KARCH` variable in the :ref:`kernel-dev/advanced:bsp descriptions`.
4285
4286   :term:`KBRANCH`
4287      A regular expression used by the build process to explicitly identify
4288      the kernel branch that is validated, patched, and configured during a
4289      build. You must set this variable to ensure the exact kernel branch
4290      you want is being used by the build process.
4291
4292      Values for this variable are set in the kernel's recipe file and the
4293      kernel's append file. For example, if you are using the
4294      ``linux-yocto_4.12`` kernel, the kernel recipe file is the
4295      ``meta/recipes-kernel/linux/linux-yocto_4.12.bb`` file. :term:`KBRANCH`
4296      is set as follows in that kernel recipe file::
4297
4298         KBRANCH ?= "standard/base"
4299
4300      This variable is also used from the kernel's append file to identify
4301      the kernel branch specific to a particular machine or target
4302      hardware. Continuing with the previous kernel example, the kernel's
4303      append file (i.e. ``linux-yocto_4.12.bbappend``) is located in the
4304      BSP layer for a given machine. For example, the append file for the
4305      Beaglebone, EdgeRouter, and generic versions of both 32 and 64-bit IA
4306      machines (``meta-yocto-bsp``) is named
4307      ``meta-yocto-bsp/recipes-kernel/linux/linux-yocto_4.12.bbappend``.
4308      Here are the related statements from that append file::
4309
4310         KBRANCH:genericx86 = "standard/base"
4311         KBRANCH:genericx86-64 = "standard/base"
4312         KBRANCH:edgerouter = "standard/edgerouter"
4313         KBRANCH:beaglebone = "standard/beaglebone"
4314
4315      The :term:`KBRANCH` statements
4316      identify the kernel branch to use when building for each supported
4317      BSP.
4318
4319   :term:`KBUILD_DEFCONFIG`
4320      When used with the :ref:`ref-classes-kernel-yocto`
4321      class, specifies an "in-tree" kernel configuration file for use
4322      during a kernel build.
4323
4324      Typically, when using a ``defconfig`` to configure a kernel during a
4325      build, you place the file in your layer in the same manner as you
4326      would place patch files and configuration fragment files (i.e.
4327      "out-of-tree"). However, if you want to use a ``defconfig`` file that
4328      is part of the kernel tree (i.e. "in-tree"), you can use the
4329      :term:`KBUILD_DEFCONFIG` variable and append the
4330      :term:`KMACHINE` variable to point to the
4331      ``defconfig`` file.
4332
4333      To use the variable, set it in the append file for your kernel recipe
4334      using the following form::
4335
4336         KBUILD_DEFCONFIG:<machine> ?= "defconfig_file"
4337
4338      Here is an example from a "raspberrypi2" :term:`MACHINE` build that uses
4339      a ``defconfig`` file named "bcm2709_defconfig"::
4340
4341         KBUILD_DEFCONFIG:raspberrypi2 = "bcm2709_defconfig"
4342
4343      As an alternative, you can use the following within your append file::
4344
4345         KBUILD_DEFCONFIG:pn-linux-yocto ?= "defconfig_file"
4346
4347      For more
4348      information on how to use the :term:`KBUILD_DEFCONFIG` variable, see the
4349      ":ref:`kernel-dev/common:using an "in-tree" \`\`defconfig\`\` file`"
4350      section in the Yocto Project Linux Kernel Development Manual.
4351
4352   :term:`KCONFIG_MODE`
4353      When used with the :ref:`ref-classes-kernel-yocto`
4354      class, specifies the kernel configuration values to use for options
4355      not specified in the provided ``defconfig`` file. Valid options are::
4356
4357         KCONFIG_MODE = "alldefconfig"
4358         KCONFIG_MODE = "allnoconfig"
4359
4360      In ``alldefconfig`` mode the options not explicitly specified will be
4361      assigned their Kconfig default value. In ``allnoconfig`` mode the
4362      options not explicitly specified will be disabled in the kernel
4363      config.
4364
4365      In case :term:`KCONFIG_MODE` is not set the behaviour will depend on where
4366      the ``defconfig`` file is coming from. An "in-tree" ``defconfig`` file
4367      will be handled in ``alldefconfig`` mode, a ``defconfig`` file placed
4368      in ``${WORKDIR}`` through a meta-layer will be handled in
4369      ``allnoconfig`` mode.
4370
4371      An "in-tree" ``defconfig`` file can be selected via the
4372      :term:`KBUILD_DEFCONFIG` variable. :term:`KCONFIG_MODE` does not need to
4373      be explicitly set.
4374
4375      A ``defconfig`` file compatible with ``allnoconfig`` mode can be
4376      generated by copying the ``.config`` file from a working Linux kernel
4377      build, renaming it to ``defconfig`` and placing it into the Linux
4378      kernel ``${WORKDIR}`` through your meta-layer. :term:`KCONFIG_MODE` does
4379      not need to be explicitly set.
4380
4381      A ``defconfig`` file compatible with ``alldefconfig`` mode can be
4382      generated using the
4383      :ref:`ref-tasks-savedefconfig`
4384      task and placed into the Linux kernel ``${WORKDIR}`` through your
4385      meta-layer. Explicitely set :term:`KCONFIG_MODE`::
4386
4387         KCONFIG_MODE = "alldefconfig"
4388
4389   :term:`KERNEL_ALT_IMAGETYPE`
4390      Specifies an alternate kernel image type for creation in addition to
4391      the kernel image type specified using the :term:`KERNEL_IMAGETYPE` and
4392      :term:`KERNEL_IMAGETYPES` variables.
4393
4394   :term:`KERNEL_ARTIFACT_NAME`
4395      Specifies the name of all of the build artifacts. You can change the
4396      name of the artifacts by changing the :term:`KERNEL_ARTIFACT_NAME`
4397      variable.
4398
4399      The value of :term:`KERNEL_ARTIFACT_NAME`, which is set in the
4400      ``meta/classes-recipe/kernel-artifact-names.bbclass`` file, has the
4401      following default value::
4402
4403         KERNEL_ARTIFACT_NAME ?= "${PKGE}-${PKGV}-${PKGR}${IMAGE_MACHINE_SUFFIX}${IMAGE_VERSION_SUFFIX}"
4404
4405      See the :term:`PKGE`, :term:`PKGV`, :term:`PKGR`, :term:`IMAGE_MACHINE_SUFFIX`
4406      and :term:`IMAGE_VERSION_SUFFIX` variables for additional information.
4407
4408   :term:`KERNEL_CLASSES`
4409      A list of classes defining kernel image types that the
4410      :ref:`ref-classes-kernel` class should inherit. You typically
4411      append this variable to enable extended image types. An example is
4412      ":ref:`ref-classes-kernel-fitimage`", which enables
4413      FIT image support and resides in ``meta/classes-recipe/kernel-fitimage.bbclass``.
4414      You can register custom kernel image types with the
4415      :ref:`ref-classes-kernel` class using this variable.
4416
4417   :term:`KERNEL_DANGLING_FEATURES_WARN_ONLY`
4418      When kernel configuration fragments are missing for some
4419      :term:`KERNEL_FEATURES` specified by layers or BSPs,
4420      building and configuring the kernel stops with an error.
4421
4422      You can turn these errors into warnings by setting the
4423      following in ``conf/local.conf``::
4424
4425         KERNEL_DANGLING_FEATURES_WARN_ONLY = "1"
4426
4427      You will still be warned that runtime issues may occur,
4428      but at least the kernel configuration and build process will
4429      be allowed to continue.
4430
4431   :term:`KERNEL_DEBUG_TIMESTAMPS`
4432      If set to "1", enables timestamping functionality during building
4433      the kernel. The default is "0" to disable this for reproducibility
4434      reasons.
4435
4436   :term:`KERNEL_DEPLOY_DEPEND`
4437      Provides a means of controlling the dependency of an image recipe
4438      on the kernel. The default value is "virtual/kernel:do_deploy",
4439      however for a small initramfs image or other images that do not
4440      need the kernel, this can be set to "" in the image recipe.
4441
4442   :term:`KERNEL_DEVICETREE`
4443      Specifies the name of the generated Linux kernel device tree (i.e.
4444      the ``.dtb``) file.
4445
4446      .. note::
4447
4448         There is legacy support for specifying the full path to the device
4449         tree. However, providing just the ``.dtb`` file is preferred.
4450
4451      In order to use this variable, the :ref:`ref-classes-kernel-devicetree`
4452      class must be inherited.
4453
4454   :term:`KERNEL_DEVICETREE_BUNDLE`
4455      When set to "1", this variable allows to bundle the Linux kernel
4456      and the Device Tree Binary together in a single file.
4457
4458      This feature is currently only supported on the "arm" (32 bit)
4459      architecture.
4460
4461      This variable is set to "0" by default by the
4462      :ref:`ref-classes-kernel-devicetree` class.
4463
4464   :term:`KERNEL_DTB_LINK_NAME`
4465      The link name of the kernel device tree binary (DTB). This variable
4466      is set in the ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as
4467      follows::
4468
4469         KERNEL_DTB_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}"
4470
4471      The
4472      value of the ``KERNEL_ARTIFACT_LINK_NAME`` variable, which is set in
4473      the same file, has the following value::
4474
4475         KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}"
4476
4477      See the :term:`MACHINE` variable for additional
4478      information.
4479
4480   :term:`KERNEL_DTB_NAME`
4481      The base name of the kernel device tree binary (DTB). This variable
4482      is set in the ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as
4483      follows::
4484
4485         KERNEL_DTB_NAME ?= "${KERNEL_ARTIFACT_NAME}"
4486
4487      See :term:`KERNEL_ARTIFACT_NAME` for additional information.
4488
4489   :term:`KERNEL_DTBDEST`
4490      This variable, used by the :ref:`ref-classes-kernel-devicetree`
4491      class, allows to change the installation directory of the DTB
4492      (Device Tree Binary) files.
4493
4494      It is set by default to "${KERNEL_IMAGEDEST}" by the
4495      :ref:`ref-classes-kernel` class.
4496
4497   :term:`KERNEL_DTBVENDORED`
4498      This variable, used by the :ref:`ref-classes-kernel-devicetree`,
4499      allows to ignore vendor subdirectories when installing DTB
4500      (Device Tree Binary) files, when it is set to "false".
4501
4502      To keep vendor subdirectories, set this variable to "true".
4503
4504      It is set by default to "false" by the :ref:`ref-classes-kernel` class.
4505
4506   :term:`KERNEL_DTC_FLAGS`
4507      Specifies the ``dtc`` flags that are passed to the Linux kernel build
4508      system when generating the device trees (via ``DTC_FLAGS`` environment
4509      variable).
4510
4511      In order to use this variable, the :ref:`ref-classes-kernel-devicetree`
4512      class must be inherited.
4513
4514   :term:`KERNEL_EXTRA_ARGS`
4515      Specifies additional ``make`` command-line arguments the OpenEmbedded
4516      build system passes on when compiling the kernel.
4517
4518   :term:`KERNEL_FEATURES`
4519      Includes additional kernel metadata. In the OpenEmbedded build
4520      system, the default Board Support Packages (BSPs)
4521      :term:`Metadata` is provided through the
4522      :term:`KMACHINE` and :term:`KBRANCH`
4523      variables. You can use the :term:`KERNEL_FEATURES` variable from within
4524      the kernel recipe or kernel append file to further add metadata for
4525      all BSPs or specific BSPs.
4526
4527      The metadata you add through this variable includes config fragments
4528      and features descriptions, which usually includes patches as well as
4529      config fragments. You typically override the :term:`KERNEL_FEATURES`
4530      variable for a specific machine. In this way, you can provide
4531      validated, but optional, sets of kernel configurations and features.
4532
4533      For example, the following example from the ``linux-yocto-rt_4.12``
4534      kernel recipe adds "netfilter" and "taskstats" features to all BSPs
4535      as well as "virtio" configurations to all QEMU machines. The last two
4536      statements add specific configurations to targeted machine types::
4537
4538         KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc features/taskstats/taskstats.scc"
4539         KERNEL_FEATURES:append = " ${KERNEL_EXTRA_FEATURES}"
4540         KERNEL_FEATURES:append:qemuall = " cfg/virtio.scc"
4541         KERNEL_FEATURES:append:qemux86 = "  cfg/sound.scc cfg/paravirt_kvm.scc"
4542         KERNEL_FEATURES:append:qemux86-64 = " cfg/sound.scc"
4543
4544   :term:`KERNEL_FIT_LINK_NAME`
4545      The link name of the kernel flattened image tree (FIT) image. This
4546      variable is set in the ``meta/classes-recipe/kernel-artifact-names.bbclass``
4547      file as follows::
4548
4549         KERNEL_FIT_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}"
4550
4551      The value of the
4552      ``KERNEL_ARTIFACT_LINK_NAME`` variable, which is set in the same
4553      file, has the following value::
4554
4555         KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}"
4556
4557      See the :term:`MACHINE` variable for additional
4558      information.
4559
4560   :term:`KERNEL_FIT_NAME`
4561      The base name of the kernel flattened image tree (FIT) image. This
4562      variable is set in the ``meta/classes-recipe/kernel-artifact-names.bbclass``
4563      file as follows::
4564
4565         KERNEL_FIT_NAME ?= "${KERNEL_ARTIFACT_NAME}"
4566
4567      See :term:`KERNEL_ARTIFACT_NAME` for additional information.
4568
4569   :term:`KERNEL_IMAGE_LINK_NAME`
4570      The link name for the kernel image. This variable is set in the
4571      ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as follows::
4572
4573         KERNEL_IMAGE_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}"
4574
4575      The value of
4576      the ``KERNEL_ARTIFACT_LINK_NAME`` variable, which is set in the same
4577      file, has the following value::
4578
4579         KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}"
4580
4581      See the :term:`MACHINE` variable for additional
4582      information.
4583
4584   :term:`KERNEL_IMAGE_MAXSIZE`
4585      Specifies the maximum size of the kernel image file in kilobytes. If
4586      :term:`KERNEL_IMAGE_MAXSIZE` is set, the size of the kernel image file is
4587      checked against the set value during the
4588      :ref:`ref-tasks-sizecheck` task. The task fails if
4589      the kernel image file is larger than the setting.
4590
4591      :term:`KERNEL_IMAGE_MAXSIZE` is useful for target devices that have a
4592      limited amount of space in which the kernel image must be stored.
4593
4594      By default, this variable is not set, which means the size of the
4595      kernel image is not checked.
4596
4597   :term:`KERNEL_IMAGE_NAME`
4598      The base name of the kernel image. This variable is set in the
4599      ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as follows::
4600
4601         KERNEL_IMAGE_NAME ?= "${KERNEL_ARTIFACT_NAME}"
4602
4603      See :term:`KERNEL_ARTIFACT_NAME` for additional information.
4604
4605   :term:`KERNEL_IMAGETYPE`
4606      The type of kernel to build for a device, usually set by the machine
4607      configuration files and defaults to "zImage". This variable is used
4608      when building the kernel and is passed to ``make`` as the target to
4609      build.
4610
4611      To build additional kernel image types, use :term:`KERNEL_IMAGETYPES`.
4612
4613   :term:`KERNEL_IMAGETYPES`
4614      Lists additional types of kernel images to build for a device in addition
4615      to image type specified in :term:`KERNEL_IMAGETYPE`. Usually set by the
4616      machine configuration files.
4617
4618   :term:`KERNEL_MODULE_AUTOLOAD`
4619      Lists kernel modules that need to be auto-loaded during boot.
4620
4621      .. note::
4622
4623         This variable replaces the deprecated :term:`module_autoload`
4624         variable.
4625
4626      You can use the :term:`KERNEL_MODULE_AUTOLOAD` variable anywhere that it
4627      can be recognized by the kernel recipe or by an out-of-tree kernel
4628      module recipe (e.g. a machine configuration file, a distribution
4629      configuration file, an append file for the recipe, or the recipe
4630      itself).
4631
4632      Specify it as follows::
4633
4634         KERNEL_MODULE_AUTOLOAD += "module_name1 module_name2 module_name3"
4635
4636      Including :term:`KERNEL_MODULE_AUTOLOAD` causes the OpenEmbedded build
4637      system to populate the ``/etc/modules-load.d/modname.conf`` file with
4638      the list of modules to be auto-loaded on boot. The modules appear
4639      one-per-line in the file. Here is an example of the most common use
4640      case::
4641
4642         KERNEL_MODULE_AUTOLOAD += "module_name"
4643
4644      For information on how to populate the ``modname.conf`` file with
4645      ``modprobe.d`` syntax lines, see the :term:`KERNEL_MODULE_PROBECONF` variable.
4646
4647   :term:`KERNEL_MODULE_PROBECONF`
4648      Provides a list of modules for which the OpenEmbedded build system
4649      expects to find ``module_conf_``\ modname values that specify
4650      configuration for each of the modules. For information on how to
4651      provide those module configurations, see the
4652      :term:`module_conf_* <module_conf>` variable.
4653
4654   :term:`KERNEL_PACKAGE_NAME`
4655      Specifies the base name of the kernel packages, such as "kernel"
4656      in the kernel packages such as "kernel-modules", "kernel-image" and
4657      "kernel-dbg".
4658
4659      The default value for this variable is set to "kernel" by the
4660      :ref:`ref-classes-kernel` class.
4661
4662   :term:`KERNEL_PATH`
4663      The location of the kernel sources. This variable is set to the value
4664      of the :term:`STAGING_KERNEL_DIR` within the :ref:`ref-classes-module`
4665      class. For information on how this variable is used, see the
4666      ":ref:`kernel-dev/common:incorporating out-of-tree modules`"
4667      section in the Yocto Project Linux Kernel Development Manual.
4668
4669      To help maximize compatibility with out-of-tree drivers used to build
4670      modules, the OpenEmbedded build system also recognizes and uses the
4671      :term:`KERNEL_SRC` variable, which is identical to
4672      the :term:`KERNEL_PATH` variable. Both variables are common variables
4673      used by external Makefiles to point to the kernel source directory.
4674
4675   :term:`KERNEL_SRC`
4676      The location of the kernel sources. This variable is set to the value
4677      of the :term:`STAGING_KERNEL_DIR` within the :ref:`ref-classes-module`
4678      class. For information on how this variable is used, see the
4679      ":ref:`kernel-dev/common:incorporating out-of-tree modules`"
4680      section in the Yocto Project Linux Kernel Development Manual.
4681
4682      To help maximize compatibility with out-of-tree drivers used to build
4683      modules, the OpenEmbedded build system also recognizes and uses the
4684      :term:`KERNEL_PATH` variable, which is identical
4685      to the :term:`KERNEL_SRC` variable. Both variables are common variables
4686      used by external Makefiles to point to the kernel source directory.
4687
4688   :term:`KERNEL_VERSION`
4689      Specifies the version of the kernel as extracted from ``version.h``
4690      or ``utsrelease.h`` within the kernel sources. Effects of setting
4691      this variable do not take effect until the kernel has been
4692      configured. Consequently, attempting to refer to this variable in
4693      contexts prior to configuration will not work.
4694
4695   :term:`KERNELDEPMODDEPEND`
4696      Specifies whether the data referenced through
4697      :term:`PKGDATA_DIR` is needed or not.
4698      :term:`KERNELDEPMODDEPEND` does not control whether or not that data
4699      exists, but simply whether or not it is used. If you do not need to
4700      use the data, set the :term:`KERNELDEPMODDEPEND` variable in your
4701      :term:`Initramfs` recipe. Setting the variable there when the data is not
4702      needed avoids a potential dependency loop.
4703
4704   :term:`KFEATURE_DESCRIPTION`
4705      Provides a short description of a configuration fragment. You use
4706      this variable in the ``.scc`` file that describes a configuration
4707      fragment file. Here is the variable used in a file named ``smp.scc``
4708      to describe SMP being enabled::
4709
4710          define KFEATURE_DESCRIPTION "Enable SMP"
4711
4712   :term:`KMACHINE`
4713      The machine as known by the kernel. Sometimes the machine name used
4714      by the kernel does not match the machine name used by the
4715      OpenEmbedded build system. For example, the machine name that the
4716      OpenEmbedded build system understands as ``core2-32-intel-common``
4717      goes by a different name in the Linux Yocto kernel. The kernel
4718      understands that machine as ``intel-core2-32``. For cases like these,
4719      the :term:`KMACHINE` variable maps the kernel machine name to the
4720      OpenEmbedded build system machine name.
4721
4722      These mappings between different names occur in the Yocto Linux
4723      Kernel's ``meta`` branch. As an example take a look in the
4724      ``common/recipes-kernel/linux/linux-yocto_3.19.bbappend`` file::
4725
4726         LINUX_VERSION:core2-32-intel-common = "3.19.0"
4727         COMPATIBLE_MACHINE:core2-32-intel-common = "${MACHINE}"
4728         SRCREV_meta:core2-32-intel-common = "8897ef68b30e7426bc1d39895e71fb155d694974"
4729         SRCREV_machine:core2-32-intel-common = "43b9eced9ba8a57add36af07736344dcc383f711"
4730         KMACHINE:core2-32-intel-common = "intel-core2-32"
4731         KBRANCH:core2-32-intel-common = "standard/base"
4732         KERNEL_FEATURES:append:core2-32-intel-common = " ${KERNEL_FEATURES_INTEL_COMMON}"
4733
4734      The :term:`KMACHINE` statement says
4735      that the kernel understands the machine name as "intel-core2-32".
4736      However, the OpenEmbedded build system understands the machine as
4737      "core2-32-intel-common".
4738
4739   :term:`KTYPE`
4740      Defines the kernel type to be used in assembling the configuration.
4741      The linux-yocto recipes define "standard", "tiny", and "preempt-rt"
4742      kernel types. See the ":ref:`kernel-dev/advanced:kernel types`"
4743      section in the
4744      Yocto Project Linux Kernel Development Manual for more information on
4745      kernel types.
4746
4747      You define the :term:`KTYPE` variable in the
4748      :ref:`kernel-dev/advanced:bsp descriptions`. The
4749      value you use must match the value used for the
4750      :term:`LINUX_KERNEL_TYPE` value used by the
4751      kernel recipe.
4752
4753   :term:`LABELS`
4754      Provides a list of targets for automatic configuration.
4755
4756      See the :ref:`ref-classes-grub-efi` class for more
4757      information on how this variable is used.
4758
4759   :term:`LAYERDEPENDS`
4760      Lists the layers, separated by spaces, on which this recipe depends.
4761      Optionally, you can specify a specific layer version for a dependency
4762      by adding it to the end of the layer name. Here is an example::
4763
4764         LAYERDEPENDS_mylayer = "anotherlayer (=3)"
4765
4766      In this previous example,
4767      version 3 of "anotherlayer" is compared against
4768      :term:`LAYERVERSION`\ ``_anotherlayer``.
4769
4770      An error is produced if any dependency is missing or the version
4771      numbers (if specified) do not match exactly. This variable is used in
4772      the ``conf/layer.conf`` file and must be suffixed with the name of
4773      the specific layer (e.g. ``LAYERDEPENDS_mylayer``).
4774
4775   :term:`LAYERDIR`
4776      When used inside the ``layer.conf`` configuration file, this variable
4777      provides the path of the current layer. This variable is not
4778      available outside of ``layer.conf`` and references are expanded
4779      immediately when parsing of the file completes.
4780
4781   :term:`LAYERDIR_RE`
4782      See :term:`bitbake:LAYERDIR_RE` in the BitBake manual.
4783
4784   :term:`LAYERRECOMMENDS`
4785      Lists the layers, separated by spaces, recommended for use with this
4786      layer.
4787
4788      Optionally, you can specify a specific layer version for a
4789      recommendation by adding the version to the end of the layer name.
4790      Here is an example::
4791
4792         LAYERRECOMMENDS_mylayer = "anotherlayer (=3)"
4793
4794      In this previous example, version 3 of "anotherlayer" is compared
4795      against ``LAYERVERSION_anotherlayer``.
4796
4797      This variable is used in the ``conf/layer.conf`` file and must be
4798      suffixed with the name of the specific layer (e.g.
4799      ``LAYERRECOMMENDS_mylayer``).
4800
4801   :term:`LAYERSERIES_COMPAT`
4802      See :term:`bitbake:LAYERSERIES_COMPAT` in the BitBake manual.
4803
4804   :term:`LAYERVERSION`
4805      Optionally specifies the version of a layer as a single number. You
4806      can use this within :term:`LAYERDEPENDS` for
4807      another layer in order to depend on a specific version of the layer.
4808      This variable is used in the ``conf/layer.conf`` file and must be
4809      suffixed with the name of the specific layer (e.g.
4810      ``LAYERVERSION_mylayer``).
4811
4812   :term:`LD`
4813      The minimal command and arguments used to run the linker.
4814
4815   :term:`LDFLAGS`
4816      Specifies the flags to pass to the linker. This variable is exported
4817      to an environment variable and thus made visible to the software
4818      being built during the compilation step.
4819
4820      Default initialization for :term:`LDFLAGS` varies depending on what is
4821      being built:
4822
4823      -  :term:`TARGET_LDFLAGS` when building for the
4824         target
4825
4826      -  :term:`BUILD_LDFLAGS` when building for the
4827         build host (i.e. ``-native``)
4828
4829      -  :term:`BUILDSDK_LDFLAGS` when building for
4830         an SDK (i.e. ``nativesdk-``)
4831
4832   :term:`LEAD_SONAME`
4833      Specifies the lead (or primary) compiled library file (i.e. ``.so``)
4834      that the :ref:`ref-classes-debian` class applies its
4835      naming policy to given a recipe that packages multiple libraries.
4836
4837      This variable works in conjunction with the :ref:`ref-classes-debian`
4838      class.
4839
4840   :term:`LIC_FILES_CHKSUM`
4841      Checksums of the license text in the recipe source code.
4842
4843      This variable tracks changes in license text of the source code
4844      files. If the license text is changed, it will trigger a build
4845      failure, which gives the developer an opportunity to review any
4846      license change.
4847
4848      This variable must be defined for all recipes (unless
4849      :term:`LICENSE` is set to "CLOSED").
4850
4851      For more information, see the ":ref:`dev-manual/licenses:tracking license changes`"
4852      section in the Yocto Project Development Tasks Manual.
4853
4854   :term:`LICENSE`
4855      The list of source licenses for the recipe. Follow these rules:
4856
4857      -  Do not use spaces within individual license names.
4858
4859      -  Separate license names using \| (pipe) when there is a choice
4860         between licenses.
4861
4862      -  Separate license names using & (ampersand) when there are
4863         multiple licenses for different parts of the source.
4864
4865      -  You can use spaces between license names.
4866
4867      -  For standard licenses, use the names of the files in
4868         ``meta/files/common-licenses/`` or the
4869         :term:`SPDXLICENSEMAP` flag names defined in
4870         ``meta/conf/licenses.conf``.
4871
4872      Here are some examples::
4873
4874         LICENSE = "LGPL-2.1-only | GPL-3.0-only"
4875         LICENSE = "MPL-1.0 & LGPL-2.1-only"
4876         LICENSE = "GPL-2.0-or-later"
4877
4878      The first example is from the
4879      recipes for Qt, which the user may choose to distribute under either
4880      the LGPL version 2.1 or GPL version 3. The second example is from
4881      Cairo where two licenses cover different parts of the source code.
4882      The final example is from ``sysstat``, which presents a single
4883      license.
4884
4885      You can also specify licenses on a per-package basis to handle
4886      situations where components of the output have different licenses.
4887      For example, a piece of software whose code is licensed under GPLv2
4888      but has accompanying documentation licensed under the GNU Free
4889      Documentation License 1.2 could be specified as follows::
4890
4891         LICENSE = "GFDL-1.2 & GPL-2.0-only"
4892         LICENSE:${PN} = "GPL-2.0.only"
4893         LICENSE:${PN}-doc = "GFDL-1.2"
4894
4895   :term:`LICENSE_CREATE_PACKAGE`
4896      Setting :term:`LICENSE_CREATE_PACKAGE` to "1" causes the OpenEmbedded
4897      build system to create an extra package (i.e.
4898      ``${``\ :term:`PN`\ ``}-lic``) for each recipe and to add
4899      those packages to the
4900      :term:`RRECOMMENDS`\ ``:${PN}``.
4901
4902      The ``${PN}-lic`` package installs a directory in
4903      ``/usr/share/licenses`` named ``${PN}``, which is the recipe's base
4904      name, and installs files in that directory that contain license and
4905      copyright information (i.e. copies of the appropriate license files
4906      from ``meta/common-licenses`` that match the licenses specified in
4907      the :term:`LICENSE` variable of the recipe metadata
4908      and copies of files marked in
4909      :term:`LIC_FILES_CHKSUM` as containing
4910      license text).
4911
4912      For related information on providing license text, see the
4913      :term:`COPY_LIC_DIRS` variable, the
4914      :term:`COPY_LIC_MANIFEST` variable, and the
4915      ":ref:`dev-manual/licenses:providing license text`"
4916      section in the Yocto Project Development Tasks Manual.
4917
4918   :term:`LICENSE_FLAGS`
4919      Specifies additional flags for a recipe you must allow through
4920      :term:`LICENSE_FLAGS_ACCEPTED` in
4921      order for the recipe to be built. When providing multiple flags,
4922      separate them with spaces.
4923
4924      This value is independent of :term:`LICENSE` and is
4925      typically used to mark recipes that might require additional licenses
4926      in order to be used in a commercial product. For more information,
4927      see the
4928      ":ref:`dev-manual/licenses:enabling commercially licensed recipes`"
4929      section in the Yocto Project Development Tasks Manual.
4930
4931   :term:`LICENSE_FLAGS_ACCEPTED`
4932      Lists license flags that when specified in
4933      :term:`LICENSE_FLAGS` within a recipe should not
4934      prevent that recipe from being built.  For more information, see the
4935      ":ref:`dev-manual/licenses:enabling commercially licensed recipes`"
4936      section in the Yocto Project Development Tasks Manual.
4937
4938   :term:`LICENSE_PATH`
4939      Path to additional licenses used during the build. By default, the
4940      OpenEmbedded build system uses :term:`COMMON_LICENSE_DIR` to define the
4941      directory that holds common license text used during the build. The
4942      :term:`LICENSE_PATH` variable allows you to extend that location to other
4943      areas that have additional licenses::
4944
4945         LICENSE_PATH += "path-to-additional-common-licenses"
4946
4947   :term:`LINUX_KERNEL_TYPE`
4948      Defines the kernel type to be used in assembling the configuration.
4949      The linux-yocto recipes define "standard", "tiny", and "preempt-rt"
4950      kernel types. See the ":ref:`kernel-dev/advanced:kernel types`"
4951      section in the
4952      Yocto Project Linux Kernel Development Manual for more information on
4953      kernel types.
4954
4955      If you do not specify a :term:`LINUX_KERNEL_TYPE`, it defaults to
4956      "standard". Together with :term:`KMACHINE`, the
4957      :term:`LINUX_KERNEL_TYPE` variable defines the search arguments used by
4958      the kernel tools to find the appropriate description within the
4959      kernel :term:`Metadata` with which to build out the sources
4960      and configuration.
4961
4962   :term:`LINUX_VERSION`
4963      The Linux version from ``kernel.org`` on which the Linux kernel image
4964      being built using the OpenEmbedded build system is based. You define
4965      this variable in the kernel recipe. For example, the
4966      ``linux-yocto-3.4.bb`` kernel recipe found in
4967      ``meta/recipes-kernel/linux`` defines the variables as follows::
4968
4969         LINUX_VERSION ?= "3.4.24"
4970
4971      The :term:`LINUX_VERSION` variable is used to define :term:`PV`
4972      for the recipe::
4973
4974         PV = "${LINUX_VERSION}+git${SRCPV}"
4975
4976   :term:`LINUX_VERSION_EXTENSION`
4977      A string extension compiled into the version string of the Linux
4978      kernel built with the OpenEmbedded build system. You define this
4979      variable in the kernel recipe. For example, the linux-yocto kernel
4980      recipes all define the variable as follows::
4981
4982         LINUX_VERSION_EXTENSION ?= "-yocto-${LINUX_KERNEL_TYPE}"
4983
4984      Defining this variable essentially sets the Linux kernel
4985      configuration item ``CONFIG_LOCALVERSION``, which is visible through
4986      the ``uname`` command. Here is an example that shows the extension
4987      assuming it was set as previously shown::
4988
4989         $ uname -r
4990         3.7.0-rc8-custom
4991
4992   :term:`LOG_DIR`
4993      Specifies the directory to which the OpenEmbedded build system writes
4994      overall log files. The default directory is ``${TMPDIR}/log``.
4995
4996      For the directory containing logs specific to each task, see the
4997      :term:`T` variable.
4998
4999   :term:`MACHINE`
5000      Specifies the target device for which the image is built. You define
5001      :term:`MACHINE` in the ``local.conf`` file found in the
5002      :term:`Build Directory`. By default, :term:`MACHINE` is set to
5003      "qemux86", which is an x86-based architecture machine to be emulated
5004      using QEMU::
5005
5006         MACHINE ?= "qemux86"
5007
5008      The variable corresponds to a machine configuration file of the same
5009      name, through which machine-specific configurations are set. Thus,
5010      when :term:`MACHINE` is set to "qemux86", the corresponding
5011      ``qemux86.conf`` machine configuration file can be found in
5012      the :term:`Source Directory` in
5013      ``meta/conf/machine``.
5014
5015      The list of machines supported by the Yocto Project as shipped
5016      include the following::
5017
5018         MACHINE ?= "qemuarm"
5019         MACHINE ?= "qemuarm64"
5020         MACHINE ?= "qemumips"
5021         MACHINE ?= "qemumips64"
5022         MACHINE ?= "qemuppc"
5023         MACHINE ?= "qemux86"
5024         MACHINE ?= "qemux86-64"
5025         MACHINE ?= "genericx86"
5026         MACHINE ?= "genericx86-64"
5027         MACHINE ?= "beaglebone"
5028         MACHINE ?= "edgerouter"
5029
5030      The last five are Yocto Project reference hardware
5031      boards, which are provided in the ``meta-yocto-bsp`` layer.
5032
5033      .. note::
5034
5035         Adding additional Board Support Package (BSP) layers to your
5036         configuration adds new possible settings for :term:`MACHINE`.
5037
5038   :term:`MACHINE_ARCH`
5039      Specifies the name of the machine-specific architecture. This
5040      variable is set automatically from :term:`MACHINE` or
5041      :term:`TUNE_PKGARCH`. You should not hand-edit
5042      the :term:`MACHINE_ARCH` variable.
5043
5044   :term:`MACHINE_ESSENTIAL_EXTRA_RDEPENDS`
5045      A list of required machine-specific packages to install as part of
5046      the image being built. The build process depends on these packages
5047      being present. Furthermore, because this is a "machine-essential"
5048      variable, the list of packages are essential for the machine to boot.
5049      The impact of this variable affects images based on
5050      ``packagegroup-core-boot``, including the ``core-image-minimal``
5051      image.
5052
5053      This variable is similar to the
5054      :term:`MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS` variable with the exception
5055      that the image being built has a build dependency on the variable's
5056      list of packages. In other words, the image will not build if a file
5057      in this list is not found.
5058
5059      As an example, suppose the machine for which you are building
5060      requires ``example-init`` to be run during boot to initialize the
5061      hardware. In this case, you would use the following in the machine's
5062      ``.conf`` configuration file::
5063
5064         MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "example-init"
5065
5066   :term:`MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS`
5067      A list of recommended machine-specific packages to install as part of
5068      the image being built. The build process does not depend on these
5069      packages being present. However, because this is a
5070      "machine-essential" variable, the list of packages are essential for
5071      the machine to boot. The impact of this variable affects images based
5072      on ``packagegroup-core-boot``, including the ``core-image-minimal``
5073      image.
5074
5075      This variable is similar to the :term:`MACHINE_ESSENTIAL_EXTRA_RDEPENDS`
5076      variable with the exception that the image being built does not have
5077      a build dependency on the variable's list of packages. In other
5078      words, the image will still build if a package in this list is not
5079      found. Typically, this variable is used to handle essential kernel
5080      modules, whose functionality may be selected to be built into the
5081      kernel rather than as a module, in which case a package will not be
5082      produced.
5083
5084      Consider an example where you have a custom kernel where a specific
5085      touchscreen driver is required for the machine to be usable. However,
5086      the driver can be built as a module or into the kernel depending on
5087      the kernel configuration. If the driver is built as a module, you
5088      want it to be installed. But, when the driver is built into the
5089      kernel, you still want the build to succeed. This variable sets up a
5090      "recommends" relationship so that in the latter case, the build will
5091      not fail due to the missing package. To accomplish this, assuming the
5092      package for the module was called ``kernel-module-ab123``, you would
5093      use the following in the machine's ``.conf`` configuration file::
5094
5095         MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += "kernel-module-ab123"
5096
5097      .. note::
5098
5099         In this example, the ``kernel-module-ab123`` recipe needs to
5100         explicitly set its :term:`PACKAGES` variable to ensure that BitBake
5101         does not use the kernel recipe's :term:`PACKAGES_DYNAMIC` variable to
5102         satisfy the dependency.
5103
5104      Some examples of these machine essentials are flash, screen,
5105      keyboard, mouse, or touchscreen drivers (depending on the machine).
5106
5107   :term:`MACHINE_EXTRA_RDEPENDS`
5108      A list of machine-specific packages to install as part of the image
5109      being built that are not essential for the machine to boot. However,
5110      the build process for more fully-featured images depends on the
5111      packages being present.
5112
5113      This variable affects all images based on ``packagegroup-base``,
5114      which does not include the ``core-image-minimal`` or
5115      ``core-image-full-cmdline`` images.
5116
5117      The variable is similar to the :term:`MACHINE_EXTRA_RRECOMMENDS` variable
5118      with the exception that the image being built has a build dependency
5119      on the variable's list of packages. In other words, the image will
5120      not build if a file in this list is not found.
5121
5122      An example is a machine that has WiFi capability but is not essential
5123      for the machine to boot the image. However, if you are building a
5124      more fully-featured image, you want to enable the WiFi. The package
5125      containing the firmware for the WiFi hardware is always expected to
5126      exist, so it is acceptable for the build process to depend upon
5127      finding the package. In this case, assuming the package for the
5128      firmware was called ``wifidriver-firmware``, you would use the
5129      following in the ``.conf`` file for the machine::
5130
5131         MACHINE_EXTRA_RDEPENDS += "wifidriver-firmware"
5132
5133   :term:`MACHINE_EXTRA_RRECOMMENDS`
5134      A list of machine-specific packages to install as part of the image
5135      being built that are not essential for booting the machine. The image
5136      being built has no build dependency on this list of packages.
5137
5138      This variable affects only images based on ``packagegroup-base``,
5139      which does not include the ``core-image-minimal`` or
5140      ``core-image-full-cmdline`` images.
5141
5142      This variable is similar to the :term:`MACHINE_EXTRA_RDEPENDS` variable
5143      with the exception that the image being built does not have a build
5144      dependency on the variable's list of packages. In other words, the
5145      image will build if a file in this list is not found.
5146
5147      An example is a machine that has WiFi capability but is not essential
5148      For the machine to boot the image. However, if you are building a
5149      more fully-featured image, you want to enable WiFi. In this case, the
5150      package containing the WiFi kernel module will not be produced if the
5151      WiFi driver is built into the kernel, in which case you still want
5152      the build to succeed instead of failing as a result of the package
5153      not being found. To accomplish this, assuming the package for the
5154      module was called ``kernel-module-examplewifi``, you would use the
5155      following in the ``.conf`` file for the machine::
5156
5157         MACHINE_EXTRA_RRECOMMENDS += "kernel-module-examplewifi"
5158
5159   :term:`MACHINE_FEATURES`
5160      Specifies the list of hardware features the
5161      :term:`MACHINE` is capable of supporting. For related
5162      information on enabling features, see the
5163      :term:`DISTRO_FEATURES`,
5164      :term:`COMBINED_FEATURES`, and
5165      :term:`IMAGE_FEATURES` variables.
5166
5167      For a list of hardware features supported by the Yocto Project as
5168      shipped, see the ":ref:`ref-features-machine`" section.
5169
5170   :term:`MACHINE_FEATURES_BACKFILL`
5171      A list of space-separated features to be added to
5172      :term:`MACHINE_FEATURES` if not also present in
5173      :term:`MACHINE_FEATURES_BACKFILL_CONSIDERED`.
5174
5175      This variable is set in the ``meta/conf/bitbake.conf`` file. It is not
5176      intended to be user-configurable. It is best to just reference the
5177      variable to see which machine features are being
5178      :ref:`backfilled <ref-features-backfill>` for all machine configurations.
5179
5180   :term:`MACHINE_FEATURES_BACKFILL_CONSIDERED`
5181      A list of space-separated features from :term:`MACHINE_FEATURES_BACKFILL`
5182      that should not be :ref:`backfilled <ref-features-backfill>` (i.e. added
5183      to :term:`MACHINE_FEATURES`) during the build.
5184
5185      This corresponds to an opt-out mechanism. When new default machine
5186      features are introduced, machine definition maintainers can review
5187      (`consider`) them and decide to exclude them from the
5188      :ref:`backfilled <ref-features-backfill>` features. Therefore, the
5189      combination of :term:`MACHINE_FEATURES_BACKFILL` and
5190      :term:`MACHINE_FEATURES_BACKFILL_CONSIDERED` makes it possible to
5191      add new default features without breaking existing machine definitions.
5192
5193   :term:`MACHINEOVERRIDES`
5194      A colon-separated list of overrides that apply to the current
5195      machine. By default, this list includes the value of
5196      :term:`MACHINE`.
5197
5198      You can extend :term:`MACHINEOVERRIDES` to add extra overrides that
5199      should apply to a machine. For example, all machines emulated in QEMU
5200      (e.g. ``qemuarm``, ``qemux86``, and so forth) include a file named
5201      ``meta/conf/machine/include/qemu.inc`` that prepends the following
5202      override to :term:`MACHINEOVERRIDES`::
5203
5204         MACHINEOVERRIDES =. "qemuall:"
5205
5206      This
5207      override allows variables to be overridden for all machines emulated
5208      in QEMU, like in the following example from the ``connman-conf``
5209      recipe::
5210
5211         SRC_URI:append:qemuall = " file://wired.config \
5212             file://wired-setup \
5213             "
5214
5215      The underlying mechanism behind
5216      :term:`MACHINEOVERRIDES` is simply that it is included in the default
5217      value of :term:`OVERRIDES`.
5218
5219   :term:`MAINTAINER`
5220      The email address of the distribution maintainer.
5221
5222   :term:`MESON_BUILDTYPE`
5223      Value of the Meson ``--buildtype`` argument used by the
5224      :ref:`ref-classes-meson` class. It defaults to ``debug`` if
5225      :term:`DEBUG_BUILD` is set to "1", and ``plain`` otherwise.
5226
5227      See `Meson build options <https://mesonbuild.com/Builtin-options.html>`__
5228      for the values you could set in a recipe. Values such as ``plain``,
5229      ``debug``, ``debugoptimized``, ``release`` and ``minsize`` allow
5230      you to specify the inclusion of debugging symbols and the compiler
5231      optimizations (none, performance or size).
5232
5233   :term:`METADATA_BRANCH`
5234      The branch currently checked out for the OpenEmbedded-Core layer (path
5235      determined by :term:`COREBASE`).
5236
5237   :term:`METADATA_REVISION`
5238      The revision currently checked out for the OpenEmbedded-Core layer (path
5239      determined by :term:`COREBASE`).
5240
5241   :term:`MIME_XDG_PACKAGES`
5242      The current implementation of the :ref:`ref-classes-mime-xdg`
5243      class cannot detect ``.desktop`` files installed through absolute
5244      symbolic links. Use this setting to make the class create post-install
5245      and post-remove scripts for these packages anyway, to invoke the
5246      ``update-destop-database`` command.
5247
5248   :term:`MIRRORS`
5249      Specifies additional paths from which the OpenEmbedded build system
5250      gets source code. When the build system searches for source code, it
5251      first tries the local download directory. If that location fails, the
5252      build system tries locations defined by
5253      :term:`PREMIRRORS`, the upstream source, and then
5254      locations specified by :term:`MIRRORS` in that order.
5255
5256      Assuming your distribution (:term:`DISTRO`) is "poky",
5257      the default value for :term:`MIRRORS` is defined in the
5258      ``conf/distro/poky.conf`` file in the ``meta-poky`` Git repository.
5259
5260   :term:`MLPREFIX`
5261      Specifies a prefix has been added to :term:`PN` to create a
5262      special version of a recipe or package (i.e. a Multilib version). The
5263      variable is used in places where the prefix needs to be added to or
5264      removed from a name (e.g. the :term:`BPN` variable).
5265      :term:`MLPREFIX` gets set when a prefix has been added to :term:`PN`.
5266
5267      .. note::
5268
5269         The "ML" in :term:`MLPREFIX` stands for "MultiLib". This representation
5270         is historical and comes from a time when ":ref:`ref-classes-nativesdk`"
5271         was a suffix rather than a prefix on the recipe name. When
5272         ":ref:`ref-classes-nativesdk`" was turned into a prefix, it made sense
5273         to set :term:`MLPREFIX` for it as well.
5274
5275      To help understand when :term:`MLPREFIX` might be needed, consider when
5276      :term:`BBCLASSEXTEND` is used to provide a :ref:`ref-classes-nativesdk`
5277      version of a recipe in addition to the target version. If that recipe
5278      declares build-time dependencies on tasks in other recipes by using
5279      :term:`DEPENDS`, then a dependency on "foo" will automatically get
5280      rewritten to a dependency on "nativesdk-foo". However, dependencies like
5281      the following will not get rewritten automatically::
5282
5283         do_foo[depends] += "recipe:do_foo"
5284
5285      If you want such a dependency to also get transformed, you can do the
5286      following::
5287
5288         do_foo[depends] += "${MLPREFIX}recipe:do_foo"
5289
5290   :term:`module_autoload`
5291      This variable has been replaced by the :term:`KERNEL_MODULE_AUTOLOAD`
5292      variable. You should replace all occurrences of :term:`module_autoload`
5293      with additions to :term:`KERNEL_MODULE_AUTOLOAD`, for example::
5294
5295         module_autoload_rfcomm = "rfcomm"
5296
5297      should now be replaced with::
5298
5299         KERNEL_MODULE_AUTOLOAD += "rfcomm"
5300
5301      See the :term:`KERNEL_MODULE_AUTOLOAD` variable for more information.
5302
5303   :term:`module_conf`
5304      Specifies `modprobe.d <https://linux.die.net/man/5/modprobe.d>`__
5305      syntax lines for inclusion in the ``/etc/modprobe.d/modname.conf``
5306      file.
5307
5308      You can use this variable anywhere that it can be recognized by the
5309      kernel recipe or out-of-tree kernel module recipe (e.g. a machine
5310      configuration file, a distribution configuration file, an append file
5311      for the recipe, or the recipe itself). If you use this variable, you
5312      must also be sure to list the module name in the
5313      :term:`KERNEL_MODULE_PROBECONF`
5314      variable.
5315
5316      Here is the general syntax::
5317
5318         module_conf_module_name = "modprobe.d-syntax"
5319
5320      You must use the kernel module name override.
5321
5322      Run ``man modprobe.d`` in the shell to find out more information on
5323      the exact syntax you want to provide with :term:`module_conf`.
5324
5325      Including :term:`module_conf` causes the OpenEmbedded build system to
5326      populate the ``/etc/modprobe.d/modname.conf`` file with
5327      ``modprobe.d`` syntax lines. Here is an example that adds the options
5328      ``arg1`` and ``arg2`` to a module named ``mymodule``::
5329
5330         module_conf_mymodule = "options mymodule arg1=val1 arg2=val2"
5331
5332      For information on how to specify kernel modules to auto-load on
5333      boot, see the :term:`KERNEL_MODULE_AUTOLOAD` variable.
5334
5335   :term:`MODULE_TARBALL_DEPLOY`
5336      Controls creation of the ``modules-*.tgz`` file. Set this variable to
5337      "0" to disable creation of this file, which contains all of the
5338      kernel modules resulting from a kernel build.
5339
5340   :term:`MODULE_TARBALL_LINK_NAME`
5341      The link name of the kernel module tarball. This variable is set in
5342      the ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as follows::
5343
5344         MODULE_TARBALL_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}"
5345
5346      The value
5347      of the ``KERNEL_ARTIFACT_LINK_NAME`` variable, which is set in the
5348      same file, has the following value::
5349
5350         KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}"
5351
5352      See the :term:`MACHINE` variable for additional information.
5353
5354   :term:`MODULE_TARBALL_NAME`
5355      The base name of the kernel module tarball. This variable is set in
5356      the ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as follows::
5357
5358         MODULE_TARBALL_NAME ?= "${KERNEL_ARTIFACT_NAME}"
5359
5360      See :term:`KERNEL_ARTIFACT_NAME` for additional information.
5361
5362   :term:`MOUNT_BASE`
5363      On non-systemd systems (where ``udev-extraconf`` is being used),
5364      specifies the base directory for auto-mounting filesystems. The
5365      default value is "/run/media".
5366
5367   :term:`MULTIMACH_TARGET_SYS`
5368      Uniquely identifies the type of the target system for which packages
5369      are being built. This variable allows output for different types of
5370      target systems to be put into different subdirectories of the same
5371      output directory.
5372
5373      The default value of this variable is::
5374
5375         ${PACKAGE_ARCH}${TARGET_VENDOR}-${TARGET_OS}
5376
5377      Some classes (e.g.  :ref:`ref-classes-cross-canadian`) modify the
5378      :term:`MULTIMACH_TARGET_SYS` value.
5379
5380      See the :term:`STAMP` variable for an example. See the
5381      :term:`STAGING_DIR_TARGET` variable for more information.
5382
5383   :term:`NATIVELSBSTRING`
5384      A string identifying the host distribution. Strings consist of the
5385      host distributor ID followed by the release, as reported by the
5386      ``lsb_release`` tool or as read from ``/etc/lsb-release``. For
5387      example, when running a build on Ubuntu 12.10, the value is
5388      "Ubuntu-12.10". If this information is unable to be determined, the
5389      value resolves to "Unknown".
5390
5391      This variable is used by default to isolate native shared state
5392      packages for different distributions (e.g. to avoid problems with
5393      ``glibc`` version incompatibilities). Additionally, the variable is
5394      checked against
5395      :term:`SANITY_TESTED_DISTROS` if that
5396      variable is set.
5397
5398   :term:`NM`
5399      The minimal command and arguments to run ``nm``.
5400
5401   :term:`NO_GENERIC_LICENSE`
5402      Avoids QA errors when you use a non-common, non-CLOSED license in a
5403      recipe. There are packages, such as the linux-firmware package, with many
5404      licenses that are not in any way common. Also, new licenses are added
5405      occasionally to avoid introducing a lot of common license files,
5406      which are only applicable to a specific package.
5407      :term:`NO_GENERIC_LICENSE` is used to allow copying a license that does
5408      not exist in common licenses.
5409
5410      The following example shows how to add :term:`NO_GENERIC_LICENSE` to a
5411      recipe::
5412
5413         NO_GENERIC_LICENSE[license_name] = "license_file_in_fetched_source"
5414
5415      Here is an example that
5416      uses the ``LICENSE.Abilis.txt`` file as the license from the fetched
5417      source::
5418
5419         NO_GENERIC_LICENSE[Firmware-Abilis] = "LICENSE.Abilis.txt"
5420
5421   :term:`NO_RECOMMENDATIONS`
5422      Prevents installation of all "recommended-only" packages.
5423      Recommended-only packages are packages installed only through the
5424      :term:`RRECOMMENDS` variable). Setting the
5425      :term:`NO_RECOMMENDATIONS` variable to "1" turns this feature on::
5426
5427         NO_RECOMMENDATIONS = "1"
5428
5429      You can set this variable globally in your ``local.conf`` file or you
5430      can attach it to a specific image recipe by using the recipe name
5431      override::
5432
5433         NO_RECOMMENDATIONS:pn-target_image = "1"
5434
5435      It is important to realize that if you choose to not install packages
5436      using this variable and some other packages are dependent on them
5437      (i.e. listed in a recipe's :term:`RDEPENDS`
5438      variable), the OpenEmbedded build system ignores your request and
5439      will install the packages to avoid dependency errors.
5440
5441      .. note::
5442
5443         Some recommended packages might be required for certain system
5444         functionality, such as kernel modules. It is up to you to add
5445         packages with the :term:`IMAGE_INSTALL` variable.
5446
5447      This variable is only supported when using the IPK and RPM
5448      packaging backends. DEB is not supported.
5449
5450      See the :term:`BAD_RECOMMENDATIONS` and
5451      the :term:`PACKAGE_EXCLUDE` variables for
5452      related information.
5453
5454   :term:`NOAUTOPACKAGEDEBUG`
5455      Disables auto package from splitting ``.debug`` files. If a recipe
5456      requires ``FILES:${PN}-dbg`` to be set manually, the
5457      :term:`NOAUTOPACKAGEDEBUG` can be defined allowing you to define the
5458      content of the debug package. For example::
5459
5460         NOAUTOPACKAGEDEBUG = "1"
5461         FILES:${PN}-dev = "${includedir}/${QT_DIR_NAME}/Qt/*"
5462         FILES:${PN}-dbg = "/usr/src/debug/"
5463         FILES:${QT_BASE_NAME}-demos-doc = "${docdir}/${QT_DIR_NAME}/qch/qt.qch"
5464
5465   :term:`NON_MULTILIB_RECIPES`
5466      A list of recipes that should not be built for multilib. OE-Core's
5467      ``multilib.conf`` file defines a reasonable starting point for this
5468      list with::
5469
5470         NON_MULTILIB_RECIPES = "grub grub-efi make-mod-scripts ovmf u-boot"
5471
5472   :term:`OBJCOPY`
5473      The minimal command and arguments to run ``objcopy``.
5474
5475   :term:`OBJDUMP`
5476      The minimal command and arguments to run ``objdump``.
5477
5478   :term:`OE_BINCONFIG_EXTRA_MANGLE`
5479      When inheriting the :ref:`ref-classes-binconfig` class,
5480      this variable specifies additional arguments passed to the "sed"
5481      command. The sed command alters any paths in configuration scripts
5482      that have been set up during compilation. Inheriting this class
5483      results in all paths in these scripts being changed to point into the
5484      ``sysroots/`` directory so that all builds that use the script will
5485      use the correct directories for the cross compiling layout.
5486
5487      See the ``meta/classes-recipe/binconfig.bbclass`` in the
5488      :term:`Source Directory` for details on how this class
5489      applies these additional sed command arguments.
5490
5491   :term:`OECMAKE_GENERATOR`
5492      A variable for the :ref:`ref-classes-cmake` class, allowing to choose
5493      which back-end will be generated by CMake to build an application.
5494
5495      By default, this variable is set to ``Ninja``, which is faster than GNU
5496      make, but if building is broken with Ninja, a recipe can use this
5497      variable to use GNU make instead::
5498
5499         OECMAKE_GENERATOR = "Unix Makefiles"
5500
5501   :term:`OE_IMPORTS`
5502      An internal variable used to tell the OpenEmbedded build system what
5503      Python modules to import for every Python function run by the system.
5504
5505      .. note::
5506
5507         Do not set this variable. It is for internal use only.
5508
5509   :term:`OE_INIT_ENV_SCRIPT`
5510      The name of the build environment setup script for the purposes of
5511      setting up the environment within the extensible SDK. The default
5512      value is "oe-init-build-env".
5513
5514      If you use a custom script to set up your build environment, set the
5515      :term:`OE_INIT_ENV_SCRIPT` variable to its name.
5516
5517   :term:`OE_TERMINAL`
5518      Controls how the OpenEmbedded build system spawns interactive
5519      terminals on the host development system (e.g. using the BitBake
5520      command with the ``-c devshell`` command-line option). For more
5521      information, see the ":ref:`dev-manual/development-shell:using a development shell`" section in
5522      the Yocto Project Development Tasks Manual.
5523
5524      You can use the following values for the :term:`OE_TERMINAL` variable:
5525
5526      - auto
5527      - gnome
5528      - xfce
5529      - rxvt
5530      - screen
5531      - konsole
5532      - none
5533
5534   :term:`OEROOT`
5535      The directory from which the top-level build environment setup script
5536      is sourced. The Yocto Project provides a top-level build environment
5537      setup script: :ref:`structure-core-script`. When you run this
5538      script, the :term:`OEROOT` variable resolves to the directory that
5539      contains the script.
5540
5541      For additional information on how this variable is used, see the
5542      initialization script.
5543
5544   :term:`OLDEST_KERNEL`
5545      Declares the oldest version of the Linux kernel that the produced
5546      binaries must support. This variable is passed into the build of the
5547      Embedded GNU C Library (``glibc``).
5548
5549      The default for this variable comes from the
5550      ``meta/conf/bitbake.conf`` configuration file. You can override this
5551      default by setting the variable in a custom distribution
5552      configuration file.
5553
5554   :term:`OVERLAYFS_ETC_DEVICE`
5555      When the :ref:`ref-classes-overlayfs-etc` class is
5556      inherited, specifies the device to be mounted for the read/write
5557      layer of ``/etc``. There is no default, so you must set this if you
5558      wish to enable :ref:`ref-classes-overlayfs-etc`, for
5559      example, assuming ``/dev/mmcblk0p2`` was the desired device::
5560
5561         OVERLAYFS_ETC_DEVICE = "/dev/mmcblk0p2"
5562
5563   :term:`OVERLAYFS_ETC_EXPOSE_LOWER`
5564      When the :ref:`ref-classes-overlayfs-etc` class is
5565      inherited, if set to "1" then a read-only access to the original
5566      ``/etc`` content will be provided as a ``lower/`` subdirectory of
5567      :term:`OVERLAYFS_ETC_MOUNT_POINT`. The default value is "0".
5568
5569   :term:`OVERLAYFS_ETC_FSTYPE`
5570      When the :ref:`ref-classes-overlayfs-etc` class is
5571      inherited, specifies the file system type for the read/write
5572      layer of ``/etc``. There is no default, so you must set this if you
5573      wish to enable :ref:`ref-classes-overlayfs-etc`,
5574      for example, assuming the file system is ext4::
5575
5576         OVERLAYFS_ETC_FSTYPE = "ext4"
5577
5578   :term:`OVERLAYFS_ETC_MOUNT_OPTIONS`
5579      When the :ref:`ref-classes-overlayfs-etc` class is
5580      inherited, specifies the mount options for the read-write layer.
5581      The default value is "defaults".
5582
5583   :term:`OVERLAYFS_ETC_MOUNT_POINT`
5584      When the :ref:`ref-classes-overlayfs-etc` class is
5585      inherited, specifies the parent mount path for the filesystem layers.
5586      There is no default, so you must set this if you wish to enable
5587      :ref:`ref-classes-overlayfs-etc`, for example if the desired path is
5588      "/data"::
5589
5590         OVERLAYFS_ETC_MOUNT_POINT = "/data"
5591
5592   :term:`OVERLAYFS_ETC_USE_ORIG_INIT_NAME`
5593      When the :ref:`ref-classes-overlayfs-etc` class is inherited, controls
5594      how the generated init will be named. For more information, see the
5595      :ref:`ref-classes-overlayfs-etc` class documentation. The default value
5596      is "1".
5597
5598   :term:`OVERLAYFS_MOUNT_POINT`
5599      When inheriting the :ref:`ref-classes-overlayfs` class,
5600      specifies mount point(s) to be used. For example::
5601
5602         OVERLAYFS_MOUNT_POINT[data] = "/data"
5603
5604      The assumes you have a ``data.mount`` systemd unit defined elsewhere in
5605      your BSP (e.g. in ``systemd-machine-units`` recipe) and it is installed
5606      into the image. For more information see :ref:`ref-classes-overlayfs`.
5607
5608      .. note::
5609
5610         Although the :ref:`ref-classes-overlayfs` class is
5611         inherited by individual recipes, :term:`OVERLAYFS_MOUNT_POINT`
5612         should be set in your machine configuration.
5613
5614   :term:`OVERLAYFS_QA_SKIP`
5615      When inheriting the :ref:`ref-classes-overlayfs` class,
5616      provides the ability to disable QA checks for particular overlayfs
5617      mounts. For example::
5618
5619         OVERLAYFS_QA_SKIP[data] = "mount-configured"
5620
5621      .. note::
5622
5623         Although the :ref:`ref-classes-overlayfs` class is
5624         inherited by individual recipes, :term:`OVERLAYFS_QA_SKIP`
5625         should be set in your machine configuration.
5626
5627   :term:`OVERLAYFS_WRITABLE_PATHS`
5628      When inheriting the :ref:`ref-classes-overlayfs` class,
5629      specifies writable paths used at runtime for the recipe. For
5630      example::
5631
5632         OVERLAYFS_WRITABLE_PATHS[data] = "/usr/share/my-custom-application"
5633
5634   :term:`OVERRIDES`
5635      A colon-separated list of overrides that currently apply. Overrides
5636      are a BitBake mechanism that allows variables to be selectively
5637      overridden at the end of parsing. The set of overrides in
5638      :term:`OVERRIDES` represents the "state" during building, which includes
5639      the current recipe being built, the machine for which it is being
5640      built, and so forth.
5641
5642      As an example, if the string "an-override" appears as an element in
5643      the colon-separated list in :term:`OVERRIDES`, then the following
5644      assignment will override ``FOO`` with the value "overridden" at the
5645      end of parsing::
5646
5647         FOO:an-override = "overridden"
5648
5649      See the
5650      ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:conditional syntax (overrides)`"
5651      section in the BitBake User Manual for more information on the
5652      overrides mechanism.
5653
5654      The default value of :term:`OVERRIDES` includes the values of the
5655      :term:`CLASSOVERRIDE`,
5656      :term:`MACHINEOVERRIDES`, and
5657      :term:`DISTROOVERRIDES` variables. Another
5658      important override included by default is ``pn-${PN}``. This override
5659      allows variables to be set for a single recipe within configuration
5660      (``.conf``) files. Here is an example::
5661
5662         FOO:pn-myrecipe = "myrecipe-specific value"
5663
5664      .. note::
5665
5666         An easy way to see what overrides apply is to search for :term:`OVERRIDES`
5667         in the output of the ``bitbake -e`` command. See the
5668         ":ref:`dev-manual/debugging:viewing variable values`" section in the Yocto
5669         Project Development Tasks Manual for more information.
5670
5671   :term:`P`
5672      The recipe name and version. :term:`P` is comprised of the following::
5673
5674         ${PN}-${PV}
5675
5676   :term:`P4DIR`
5677      See :term:`bitbake:P4DIR` in the BitBake manual.
5678
5679   :term:`PACKAGE_ADD_METADATA`
5680      This variable defines additional metadata to add to packages.
5681
5682      You may find you need to inject additional metadata into packages.
5683      This variable allows you to do that by setting the injected data as
5684      the value. Multiple fields can be added by splitting the content with
5685      the literal separator "\n".
5686
5687      The suffixes '_IPK', '_DEB', or '_RPM' can be applied to the variable
5688      to do package type specific settings. It can also be made package
5689      specific by using the package name as a suffix.
5690
5691      You can find out more about applying this variable in the
5692      ":ref:`dev-manual/packages:adding custom metadata to packages`"
5693      section in the Yocto Project Development Tasks Manual.
5694
5695   :term:`PACKAGE_ARCH`
5696      The architecture of the resulting package or packages.
5697
5698      By default, the value of this variable is set to
5699      :term:`TUNE_PKGARCH` when building for the
5700      target, :term:`BUILD_ARCH` when building for the
5701      build host, and "${SDK_ARCH}-${SDKPKGSUFFIX}" when building for the
5702      SDK.
5703
5704      .. note::
5705
5706         See :term:`SDK_ARCH` for more information.
5707
5708      However, if your recipe's output packages are built specific to the
5709      target machine rather than generally for the architecture of the
5710      machine, you should set :term:`PACKAGE_ARCH` to the value of
5711      :term:`MACHINE_ARCH` in the recipe as follows::
5712
5713         PACKAGE_ARCH = "${MACHINE_ARCH}"
5714
5715   :term:`PACKAGE_ARCHS`
5716      Specifies a list of architectures compatible with the target machine.
5717      This variable is set automatically and should not normally be
5718      hand-edited. Entries are separated using spaces and listed in order
5719      of priority. The default value for :term:`PACKAGE_ARCHS` is "all any
5720      noarch ${PACKAGE_EXTRA_ARCHS} ${MACHINE_ARCH}".
5721
5722   :term:`PACKAGE_BEFORE_PN`
5723      Enables easily adding packages to :term:`PACKAGES` before ``${PN}`` so
5724      that those added packages can pick up files that would normally be
5725      included in the default package.
5726
5727   :term:`PACKAGE_CLASSES`
5728      This variable, which is set in the ``local.conf`` configuration file
5729      found in the ``conf`` folder of the
5730      :term:`Build Directory`, specifies the package manager the
5731      OpenEmbedded build system uses when packaging data.
5732
5733      You can provide one or more of the following arguments for the
5734      variable::
5735
5736         PACKAGE_CLASSES ?= "package_rpm package_deb package_ipk"
5737
5738      The build system uses only the first argument in the list as the
5739      package manager when creating your image or SDK. However, packages
5740      will be created using any additional packaging classes you specify.
5741      For example, if you use the following in your ``local.conf`` file::
5742
5743         PACKAGE_CLASSES ?= "package_ipk"
5744
5745      The OpenEmbedded build system uses
5746      the IPK package manager to create your image or SDK.
5747
5748      For information on packaging and build performance effects as a
5749      result of the package manager in use, see the
5750      ":ref:`ref-classes-package`" section.
5751
5752   :term:`PACKAGE_DEBUG_SPLIT_STYLE`
5753      Determines how to split up and package debug and source information
5754      when creating debugging packages to be used with the GNU Project
5755      Debugger (GDB). In general, based on the value of this variable,
5756      you can combine the source and debug info in a single package,
5757      you can break out the source into a separate package that can be
5758      installed independently, or you can choose to not have the source
5759      packaged at all.
5760
5761      The possible values of :term:`PACKAGE_DEBUG_SPLIT_STYLE` variable:
5762
5763      -  "``.debug``": All debugging and source info is placed in a single
5764         ``*-dbg`` package; debug symbol files are placed next to the
5765         binary in a ``.debug`` directory so that, if a binary is installed
5766         into ``/bin``, the corresponding debug symbol file is installed
5767         in ``/bin/.debug``. Source files are installed in the same ``*-dbg``
5768         package under ``/usr/src/debug``.
5769
5770      -  "``debug-file-directory``": As above, all debugging and source info
5771         is placed in a single ``*-dbg`` package; debug symbol files are
5772         placed entirely under the directory ``/usr/lib/debug`` and separated
5773         by the path from where the binary is installed, so that if a binary
5774         is installed in ``/bin``, the corresponding debug symbols are installed
5775         in ``/usr/lib/debug/bin``, and so on. As above, source is installed
5776         in the same package under ``/usr/src/debug``.
5777
5778      -  "``debug-with-srcpkg``": Debugging info is placed in the standard
5779         ``*-dbg`` package as with the ``.debug`` value, while source is
5780         placed in a separate ``*-src`` package, which can be installed
5781         independently.  This is the default setting for this variable,
5782         as defined in Poky's ``bitbake.conf`` file.
5783
5784      -  "``debug-without-src``": The same behavior as with the ``.debug``
5785         setting, but no source is packaged at all.
5786
5787      .. note::
5788
5789         Much of the above package splitting can be overridden via
5790         use of the :term:`INHIBIT_PACKAGE_DEBUG_SPLIT` variable.
5791
5792      You can find out more about debugging using GDB by reading the
5793      ":ref:`dev-manual/debugging:debugging with the gnu project debugger (gdb) remotely`" section
5794      in the Yocto Project Development Tasks Manual.
5795
5796   :term:`PACKAGE_EXCLUDE`
5797      Lists packages that should not be installed into an image. For
5798      example::
5799
5800         PACKAGE_EXCLUDE = "package_name package_name package_name ..."
5801
5802      You can set this variable globally in your ``local.conf`` file or you
5803      can attach it to a specific image recipe by using the recipe name
5804      override::
5805
5806         PACKAGE_EXCLUDE:pn-target_image = "package_name"
5807
5808      If you choose to not install a package using this variable and some
5809      other package is dependent on it (i.e. listed in a recipe's
5810      :term:`RDEPENDS` variable), the OpenEmbedded build
5811      system generates a fatal installation error. Because the build system
5812      halts the process with a fatal error, you can use the variable with
5813      an iterative development process to remove specific components from a
5814      system.
5815
5816      This variable is supported only when using the IPK and RPM
5817      packaging backends. DEB is not supported.
5818
5819      See the :term:`NO_RECOMMENDATIONS` and the
5820      :term:`BAD_RECOMMENDATIONS` variables for
5821      related information.
5822
5823   :term:`PACKAGE_EXCLUDE_COMPLEMENTARY`
5824      Prevents specific packages from being installed when you are
5825      installing complementary packages.
5826
5827      You might find that you want to prevent installing certain packages
5828      when you are installing complementary packages. For example, if you
5829      are using :term:`IMAGE_FEATURES` to install
5830      ``dev-pkgs``, you might not want to install all packages from a
5831      particular multilib. If you find yourself in this situation, you can
5832      use the :term:`PACKAGE_EXCLUDE_COMPLEMENTARY` variable to specify regular
5833      expressions to match the packages you want to exclude.
5834
5835   :term:`PACKAGE_EXTRA_ARCHS`
5836      Specifies the list of architectures compatible with the device CPU.
5837      This variable is useful when you build for several different devices
5838      that use miscellaneous processors such as XScale and ARM926-EJS.
5839
5840   :term:`PACKAGE_FEED_ARCHS`
5841      Optionally specifies the package architectures used as part of the
5842      package feed URIs during the build. When used, the
5843      :term:`PACKAGE_FEED_ARCHS` variable is appended to the final package feed
5844      URI, which is constructed using the
5845      :term:`PACKAGE_FEED_URIS` and
5846      :term:`PACKAGE_FEED_BASE_PATHS`
5847      variables.
5848
5849      .. note::
5850
5851         You can use the :term:`PACKAGE_FEED_ARCHS`
5852         variable to allow specific package architectures. If you do
5853         not need to allow specific architectures, which is a common
5854         case, you can omit this variable. Omitting the variable results in
5855         all available architectures for the current machine being included
5856         into remote package feeds.
5857
5858      Consider the following example where the :term:`PACKAGE_FEED_URIS`,
5859      :term:`PACKAGE_FEED_BASE_PATHS`, and :term:`PACKAGE_FEED_ARCHS` variables are
5860      defined in your ``local.conf`` file::
5861
5862         PACKAGE_FEED_URIS = "https://example.com/packagerepos/release \
5863                              https://example.com/packagerepos/updates"
5864         PACKAGE_FEED_BASE_PATHS = "rpm rpm-dev"
5865         PACKAGE_FEED_ARCHS = "all core2-64"
5866
5867      Given these settings, the resulting package feeds are as follows:
5868
5869      .. code-block:: none
5870
5871         https://example.com/packagerepos/release/rpm/all
5872         https://example.com/packagerepos/release/rpm/core2-64
5873         https://example.com/packagerepos/release/rpm-dev/all
5874         https://example.com/packagerepos/release/rpm-dev/core2-64
5875         https://example.com/packagerepos/updates/rpm/all
5876         https://example.com/packagerepos/updates/rpm/core2-64
5877         https://example.com/packagerepos/updates/rpm-dev/all
5878         https://example.com/packagerepos/updates/rpm-dev/core2-64
5879
5880   :term:`PACKAGE_FEED_BASE_PATHS`
5881      Specifies the base path used when constructing package feed URIs. The
5882      :term:`PACKAGE_FEED_BASE_PATHS` variable makes up the middle portion of a
5883      package feed URI used by the OpenEmbedded build system. The base path
5884      lies between the :term:`PACKAGE_FEED_URIS`
5885      and :term:`PACKAGE_FEED_ARCHS` variables.
5886
5887      Consider the following example where the :term:`PACKAGE_FEED_URIS`,
5888      :term:`PACKAGE_FEED_BASE_PATHS`, and :term:`PACKAGE_FEED_ARCHS` variables are
5889      defined in your ``local.conf`` file::
5890
5891         PACKAGE_FEED_URIS = "https://example.com/packagerepos/release \
5892                              https://example.com/packagerepos/updates"
5893         PACKAGE_FEED_BASE_PATHS = "rpm rpm-dev"
5894         PACKAGE_FEED_ARCHS = "all core2-64"
5895
5896      Given these settings, the resulting package feeds are as follows:
5897
5898      .. code-block:: none
5899
5900         https://example.com/packagerepos/release/rpm/all
5901         https://example.com/packagerepos/release/rpm/core2-64
5902         https://example.com/packagerepos/release/rpm-dev/all
5903         https://example.com/packagerepos/release/rpm-dev/core2-64
5904         https://example.com/packagerepos/updates/rpm/all
5905         https://example.com/packagerepos/updates/rpm/core2-64
5906         https://example.com/packagerepos/updates/rpm-dev/all
5907         https://example.com/packagerepos/updates/rpm-dev/core2-64
5908
5909   :term:`PACKAGE_FEED_URIS`
5910      Specifies the front portion of the package feed URI used by the
5911      OpenEmbedded build system. Each final package feed URI is comprised
5912      of :term:`PACKAGE_FEED_URIS`,
5913      :term:`PACKAGE_FEED_BASE_PATHS`, and
5914      :term:`PACKAGE_FEED_ARCHS` variables.
5915
5916      Consider the following example where the :term:`PACKAGE_FEED_URIS`,
5917      :term:`PACKAGE_FEED_BASE_PATHS`, and :term:`PACKAGE_FEED_ARCHS` variables are
5918      defined in your ``local.conf`` file::
5919
5920         PACKAGE_FEED_URIS = "https://example.com/packagerepos/release \
5921                              https://example.com/packagerepos/updates"
5922         PACKAGE_FEED_BASE_PATHS = "rpm rpm-dev"
5923         PACKAGE_FEED_ARCHS = "all core2-64"
5924
5925      Given these settings, the resulting package feeds are as follows:
5926
5927      .. code-block:: none
5928
5929         https://example.com/packagerepos/release/rpm/all
5930         https://example.com/packagerepos/release/rpm/core2-64
5931         https://example.com/packagerepos/release/rpm-dev/all
5932         https://example.com/packagerepos/release/rpm-dev/core2-64
5933         https://example.com/packagerepos/updates/rpm/all
5934         https://example.com/packagerepos/updates/rpm/core2-64
5935         https://example.com/packagerepos/updates/rpm-dev/all
5936         https://example.com/packagerepos/updates/rpm-dev/core2-64
5937
5938   :term:`PACKAGE_INSTALL`
5939      The final list of packages passed to the package manager for
5940      installation into the image.
5941
5942      Because the package manager controls actual installation of all
5943      packages, the list of packages passed using :term:`PACKAGE_INSTALL` is
5944      not the final list of packages that are actually installed. This
5945      variable is internal to the image construction code. Consequently, in
5946      general, you should use the
5947      :term:`IMAGE_INSTALL` variable to specify
5948      packages for installation. The exception to this is when working with
5949      the :ref:`core-image-minimal-initramfs <ref-manual/images:images>`
5950      image. When working with an initial RAM filesystem (:term:`Initramfs`) image,
5951      use the :term:`PACKAGE_INSTALL` variable. For information on creating an
5952      :term:`Initramfs`, see the ":ref:`dev-manual/building:building an initial ram filesystem (Initramfs) image`" section
5953      in the Yocto Project Development Tasks Manual.
5954
5955   :term:`PACKAGE_INSTALL_ATTEMPTONLY`
5956      Specifies a list of packages the OpenEmbedded build system attempts
5957      to install when creating an image. If a listed package fails to
5958      install, the build system does not generate an error. This variable
5959      is generally not user-defined.
5960
5961   :term:`PACKAGE_PREPROCESS_FUNCS`
5962      Specifies a list of functions run to pre-process the
5963      :term:`PKGD` directory prior to splitting the files out
5964      to individual packages.
5965
5966   :term:`PACKAGE_WRITE_DEPS`
5967      Specifies a list of dependencies for post-installation and
5968      pre-installation scripts on native/cross tools. If your
5969      post-installation or pre-installation script can execute at root filesystem
5970      creation time rather than on the target but depends on a native tool
5971      in order to execute, you need to list the tools in
5972      :term:`PACKAGE_WRITE_DEPS`.
5973
5974      For information on running post-installation scripts, see the
5975      ":ref:`dev-manual/new-recipe:post-installation scripts`"
5976      section in the Yocto Project Development Tasks Manual.
5977
5978   :term:`PACKAGECONFIG`
5979      This variable provides a means of enabling or disabling features of a
5980      recipe on a per-recipe basis. :term:`PACKAGECONFIG` blocks are defined in
5981      recipes when you specify features and then arguments that define
5982      feature behaviors. Here is the basic block structure (broken over
5983      multiple lines for readability)::
5984
5985         PACKAGECONFIG ??= "f1 f2 f3 ..."
5986         PACKAGECONFIG[f1] = "\
5987             --with-f1, \
5988             --without-f1, \
5989             build-deps-for-f1, \
5990             runtime-deps-for-f1, \
5991             runtime-recommends-for-f1, \
5992             packageconfig-conflicts-for-f1"
5993         PACKAGECONFIG[f2] = "\
5994              ... and so on and so on ...
5995
5996      The :term:`PACKAGECONFIG` variable itself specifies a space-separated
5997      list of the features to enable. Following the features, you can
5998      determine the behavior of each feature by providing up to six
5999      order-dependent arguments, which are separated by commas. You can
6000      omit any argument you like but must retain the separating commas. The
6001      order is important and specifies the following:
6002
6003      #. Extra arguments that should be added to the configure script
6004         argument list (:term:`EXTRA_OECONF` or
6005         :term:`PACKAGECONFIG_CONFARGS`) if
6006         the feature is enabled.
6007
6008      #. Extra arguments that should be added to :term:`EXTRA_OECONF` or
6009         :term:`PACKAGECONFIG_CONFARGS` if the feature is disabled.
6010
6011      #. Additional build dependencies (:term:`DEPENDS`)
6012         that should be added if the feature is enabled.
6013
6014      #. Additional runtime dependencies (:term:`RDEPENDS`)
6015         that should be added if the feature is enabled.
6016
6017      #. Additional runtime recommendations
6018         (:term:`RRECOMMENDS`) that should be added if
6019         the feature is enabled.
6020
6021      #. Any conflicting (that is, mutually exclusive) :term:`PACKAGECONFIG`
6022         settings for this feature.
6023
6024      Consider the following :term:`PACKAGECONFIG` block taken from the
6025      ``librsvg`` recipe. In this example the feature is ``gtk``, which has
6026      three arguments that determine the feature's behavior::
6027
6028         PACKAGECONFIG[gtk] = "--with-gtk3,--without-gtk3,gtk+3"
6029
6030      The
6031      ``--with-gtk3`` and ``gtk+3`` arguments apply only if the feature is
6032      enabled. In this case, ``--with-gtk3`` is added to the configure
6033      script argument list and ``gtk+3`` is added to :term:`DEPENDS`. On the
6034      other hand, if the feature is disabled say through a ``.bbappend``
6035      file in another layer, then the second argument ``--without-gtk3`` is
6036      added to the configure script instead.
6037
6038      The basic :term:`PACKAGECONFIG` structure previously described holds true
6039      regardless of whether you are creating a block or changing a block.
6040      When creating a block, use the structure inside your recipe.
6041
6042      If you want to change an existing :term:`PACKAGECONFIG` block, you can do
6043      so one of two ways:
6044
6045      -  *Append file:* Create an append file named
6046         ``recipename.bbappend`` in your layer and override the value of
6047         :term:`PACKAGECONFIG`. You can either completely override the
6048         variable::
6049
6050            PACKAGECONFIG = "f4 f5"
6051
6052         Or, you can just append the variable::
6053
6054            PACKAGECONFIG:append = " f4"
6055
6056      -  *Configuration file:* This method is identical to changing the
6057         block through an append file except you edit your ``local.conf``
6058         or ``mydistro.conf`` file. As with append files previously
6059         described, you can either completely override the variable::
6060
6061            PACKAGECONFIG:pn-recipename = "f4 f5"
6062
6063         Or, you can just amend the variable::
6064
6065            PACKAGECONFIG:append:pn-recipename = " f4"
6066
6067   :term:`PACKAGECONFIG_CONFARGS`
6068      A space-separated list of configuration options generated from the
6069      :term:`PACKAGECONFIG` setting.
6070
6071      Classes such as :ref:`ref-classes-autotools` and :ref:`ref-classes-cmake`
6072      use :term:`PACKAGECONFIG_CONFARGS` to pass :term:`PACKAGECONFIG` options
6073      to ``configure`` and ``cmake``, respectively. If you are using
6074      :term:`PACKAGECONFIG` but not a class that handles the
6075      :ref:`ref-tasks-configure` task, then you need to use
6076      :term:`PACKAGECONFIG_CONFARGS` appropriately.
6077
6078   :term:`PACKAGEGROUP_DISABLE_COMPLEMENTARY`
6079      For recipes inheriting the :ref:`ref-classes-packagegroup` class, setting
6080      :term:`PACKAGEGROUP_DISABLE_COMPLEMENTARY` to "1" specifies that the
6081      normal complementary packages (i.e. ``-dev``, ``-dbg``, and so forth)
6082      should not be automatically created by the ``packagegroup`` recipe,
6083      which is the default behavior.
6084
6085   :term:`PACKAGES`
6086      The list of packages the recipe creates. The default value is the
6087      following::
6088
6089         ${PN}-src ${PN}-dbg ${PN}-staticdev ${PN}-dev ${PN}-doc ${PN}-locale ${PACKAGE_BEFORE_PN} ${PN}
6090
6091      During packaging, the :ref:`ref-tasks-package` task
6092      goes through :term:`PACKAGES` and uses the :term:`FILES`
6093      variable corresponding to each package to assign files to the
6094      package. If a file matches the :term:`FILES` variable for more than one
6095      package in :term:`PACKAGES`, it will be assigned to the earliest
6096      (leftmost) package.
6097
6098      Packages in the variable's list that are empty (i.e. where none of
6099      the patterns in ``FILES:``\ pkg match any files installed by the
6100      :ref:`ref-tasks-install` task) are not generated,
6101      unless generation is forced through the
6102      :term:`ALLOW_EMPTY` variable.
6103
6104   :term:`PACKAGES_DYNAMIC`
6105      A promise that your recipe satisfies runtime dependencies for
6106      optional modules that are found in other recipes.
6107      :term:`PACKAGES_DYNAMIC` does not actually satisfy the dependencies, it
6108      only states that they should be satisfied. For example, if a hard,
6109      runtime dependency (:term:`RDEPENDS`) of another
6110      package is satisfied at build time through the :term:`PACKAGES_DYNAMIC`
6111      variable, but a package with the module name is never actually
6112      produced, then the other package will be broken. Thus, if you attempt
6113      to include that package in an image, you will get a dependency
6114      failure from the packaging system during the
6115      :ref:`ref-tasks-rootfs` task.
6116
6117      Typically, if there is a chance that such a situation can occur and
6118      the package that is not created is valid without the dependency being
6119      satisfied, then you should use :term:`RRECOMMENDS`
6120      (a soft runtime dependency) instead of :term:`RDEPENDS`.
6121
6122      For an example of how to use the :term:`PACKAGES_DYNAMIC` variable when
6123      you are splitting packages, see the
6124      ":ref:`dev-manual/packages:handling optional module packaging`"
6125      section in the Yocto Project Development Tasks Manual.
6126
6127   :term:`PACKAGESPLITFUNCS`
6128      Specifies a list of functions run to perform additional splitting of
6129      files into individual packages. Recipes can either prepend to this
6130      variable or prepend to the ``populate_packages`` function in order to
6131      perform additional package splitting. In either case, the function
6132      should set :term:`PACKAGES`,
6133      :term:`FILES`, :term:`RDEPENDS` and
6134      other packaging variables appropriately in order to perform the
6135      desired splitting.
6136
6137   :term:`PARALLEL_MAKE`
6138
6139      Extra options passed to the build tool command (``make``,
6140      ``ninja`` or more specific build engines, like the Go language one)
6141      during the :ref:`ref-tasks-compile` task, to specify parallel compilation
6142      on the local build host. This variable is usually in the form "-j x",
6143      where x represents the maximum number of parallel threads such engines
6144      can run.
6145
6146      .. note::
6147
6148         For software compiled by ``make``, in order for :term:`PARALLEL_MAKE`
6149         to be effective, ``make`` must be called with
6150         ``${``\ :term:`EXTRA_OEMAKE`\ ``}``. An easy
6151         way to ensure this is to use the ``oe_runmake`` function.
6152
6153      By default, the OpenEmbedded build system automatically sets this
6154      variable to be equal to the number of cores the build system uses.
6155
6156      .. note::
6157
6158         If the software being built experiences dependency issues during
6159         the :ref:`ref-tasks-compile` task that result in race conditions, you can clear
6160         the :term:`PARALLEL_MAKE` variable within the recipe as a workaround. For
6161         information on addressing race conditions, see the
6162         ":ref:`dev-manual/debugging:debugging parallel make races`"
6163         section in the Yocto Project Development Tasks Manual.
6164
6165      For single socket systems (i.e. one CPU), you should not have to
6166      override this variable to gain optimal parallelism during builds.
6167      However, if you have very large systems that employ multiple physical
6168      CPUs, you might want to make sure the :term:`PARALLEL_MAKE` variable is
6169      not set higher than "-j 20".
6170
6171      For more information on speeding up builds, see the
6172      ":ref:`dev-manual/speeding-up-build:speeding up a build`"
6173      section in the Yocto Project Development Tasks Manual.
6174
6175   :term:`PARALLEL_MAKEINST`
6176      Extra options passed to the build tool install command
6177      (``make install``, ``ninja install`` or more specific ones)
6178      during the :ref:`ref-tasks-install` task in order to specify
6179      parallel installation. This variable defaults to the value of
6180      :term:`PARALLEL_MAKE`.
6181
6182      .. note::
6183
6184         For software compiled by ``make``, in order for :term:`PARALLEL_MAKEINST`
6185         to be effective, ``make`` must be called with
6186         ``${``\ :term:`EXTRA_OEMAKE`\ ``}``. An easy
6187         way to ensure this is to use the ``oe_runmake`` function.
6188
6189         If the software being built experiences dependency issues during
6190         the :ref:`ref-tasks-install` task that result in race conditions, you can
6191         clear the :term:`PARALLEL_MAKEINST` variable within the recipe as a
6192         workaround. For information on addressing race conditions, see the
6193         ":ref:`dev-manual/debugging:debugging parallel make races`"
6194         section in the Yocto Project Development Tasks Manual.
6195
6196   :term:`PATCHRESOLVE`
6197      Determines the action to take when a patch fails. You can set this
6198      variable to one of two values: "noop" and "user".
6199
6200      The default value of "noop" causes the build to simply fail when the
6201      OpenEmbedded build system cannot successfully apply a patch. Setting
6202      the value to "user" causes the build system to launch a shell and
6203      places you in the right location so that you can manually resolve the
6204      conflicts.
6205
6206      Set this variable in your ``local.conf`` file.
6207
6208   :term:`PATCHTOOL`
6209      Specifies the utility used to apply patches for a recipe during the
6210      :ref:`ref-tasks-patch` task. You can specify one of
6211      three utilities: "patch", "quilt", or "git". The default utility used
6212      is "quilt" except for the quilt-native recipe itself. Because the
6213      quilt tool is not available at the time quilt-native is being
6214      patched, it uses "patch".
6215
6216      If you wish to use an alternative patching tool, set the variable in
6217      the recipe using one of the following::
6218
6219         PATCHTOOL = "patch"
6220         PATCHTOOL = "quilt"
6221         PATCHTOOL = "git"
6222
6223   :term:`PE`
6224      The epoch of the recipe. By default, this variable is unset. The
6225      variable is used to make upgrades possible when the versioning scheme
6226      changes in some backwards incompatible way.
6227
6228      :term:`PE` is the default value of the :term:`PKGE` variable.
6229
6230   :term:`PEP517_WHEEL_PATH`
6231      When used by recipes that inherit the :ref:`ref-classes-python_pep517`
6232      class, denotes the path to ``dist/`` (short for distribution) where the
6233      binary archive ``wheel`` is built.
6234
6235   :term:`PERSISTENT_DIR`
6236      See :term:`bitbake:PERSISTENT_DIR` in the BitBake manual.
6237
6238   :term:`PF`
6239      Specifies the recipe or package name and includes all version and
6240      revision numbers (i.e. ``glibc-2.13-r20+svnr15508/`` and
6241      ``bash-4.2-r1/``). This variable is comprised of the following:
6242      ${:term:`PN`}-${:term:`EXTENDPE`}${:term:`PV`}-${:term:`PR`}
6243
6244   :term:`PIXBUF_PACKAGES`
6245      When inheriting the :ref:`ref-classes-pixbufcache`
6246      class, this variable identifies packages that contain the pixbuf
6247      loaders used with ``gdk-pixbuf``. By default, the
6248      :ref:`ref-classes-pixbufcache` class assumes that
6249      the loaders are in the recipe's main package (i.e.
6250      ``${``\ :term:`PN`\ ``}``). Use this variable if the
6251      loaders you need are in a package other than that main package.
6252
6253   :term:`PKG`
6254      The name of the resulting package created by the OpenEmbedded build
6255      system.
6256
6257      .. note::
6258
6259         When using the :term:`PKG` variable, you must use a package name override.
6260
6261      For example, when the :ref:`ref-classes-debian` class renames the output
6262      package, it does so by setting ``PKG:packagename``.
6263
6264   :term:`PKG_CONFIG_PATH`
6265      The path to ``pkg-config`` files for the current build context.
6266      ``pkg-config`` reads this variable from the environment.
6267
6268   :term:`PKGD`
6269      Points to the destination directory for files to be packaged before
6270      they are split into individual packages. This directory defaults to
6271      the following::
6272
6273         ${WORKDIR}/package
6274
6275      Do not change this default.
6276
6277   :term:`PKGDATA_DIR`
6278      Points to a shared, global-state directory that holds data generated
6279      during the packaging process. During the packaging process, the
6280      :ref:`ref-tasks-packagedata` task packages data
6281      for each recipe and installs it into this temporary, shared area.
6282      This directory defaults to the following, which you should not
6283      change::
6284
6285         ${STAGING_DIR_HOST}/pkgdata
6286
6287      For examples of how this data is used, see the
6288      ":ref:`overview-manual/concepts:automatically added runtime dependencies`"
6289      section in the Yocto Project Overview and Concepts Manual and the
6290      ":ref:`dev-manual/debugging:viewing package information with \`\`oe-pkgdata-util\`\``"
6291      section in the Yocto Project Development Tasks Manual. For more
6292      information on the shared, global-state directory, see
6293      :term:`STAGING_DIR_HOST`.
6294
6295   :term:`PKGDEST`
6296      Points to the parent directory for files to be packaged after they
6297      have been split into individual packages. This directory defaults to
6298      the following::
6299
6300         ${WORKDIR}/packages-split
6301
6302      Under this directory, the build system creates directories for each
6303      package specified in :term:`PACKAGES`. Do not change
6304      this default.
6305
6306   :term:`PKGDESTWORK`
6307      Points to a temporary work area where the
6308      :ref:`ref-tasks-package` task saves package metadata.
6309      The :term:`PKGDESTWORK` location defaults to the following::
6310
6311         ${WORKDIR}/pkgdata
6312
6313      Do not change this default.
6314
6315      The :ref:`ref-tasks-packagedata` task copies the
6316      package metadata from :term:`PKGDESTWORK` to
6317      :term:`PKGDATA_DIR` to make it available globally.
6318
6319   :term:`PKGE`
6320      The epoch of the package(s) built by the recipe. By default, :term:`PKGE`
6321      is set to :term:`PE`.
6322
6323   :term:`PKGR`
6324      The revision of the package(s) built by the recipe. By default,
6325      :term:`PKGR` is set to :term:`PR`.
6326
6327   :term:`PKGV`
6328      The version of the package(s) built by the recipe. By default,
6329      :term:`PKGV` is set to :term:`PV`.
6330
6331   :term:`PN`
6332      This variable can have two separate functions depending on the
6333      context: a recipe name or a resulting package name.
6334
6335      :term:`PN` refers to a recipe name in the context of a file used by the
6336      OpenEmbedded build system as input to create a package. The name is
6337      normally extracted from the recipe file name. For example, if the
6338      recipe is named ``expat_2.0.1.bb``, then the default value of :term:`PN`
6339      will be "expat".
6340
6341      The variable refers to a package name in the context of a file
6342      created or produced by the OpenEmbedded build system.
6343
6344      If applicable, the :term:`PN` variable also contains any special suffix
6345      or prefix. For example, using ``bash`` to build packages for the
6346      native machine, :term:`PN` is ``bash-native``. Using ``bash`` to build
6347      packages for the target and for Multilib, :term:`PN` would be ``bash``
6348      and ``lib64-bash``, respectively.
6349
6350   :term:`POPULATE_SDK_POST_HOST_COMMAND`
6351      Specifies a list of functions to call once the OpenEmbedded build
6352      system has created the host part of the SDK. You can specify
6353      functions separated by semicolons::
6354
6355          POPULATE_SDK_POST_HOST_COMMAND += "function; ... "
6356
6357      If you need to pass the SDK path to a command within a function, you
6358      can use ``${SDK_DIR}``, which points to the parent directory used by
6359      the OpenEmbedded build system when creating SDK output. See the
6360      :term:`SDK_DIR` variable for more information.
6361
6362   :term:`POPULATE_SDK_POST_TARGET_COMMAND`
6363      Specifies a list of functions to call once the OpenEmbedded build
6364      system has created the target part of the SDK. You can specify
6365      functions separated by semicolons::
6366
6367         POPULATE_SDK_POST_TARGET_COMMAND += "function; ... "
6368
6369      If you need to pass the SDK path to a command within a function, you
6370      can use ``${SDK_DIR}``, which points to the parent directory used by
6371      the OpenEmbedded build system when creating SDK output. See the
6372      :term:`SDK_DIR` variable for more information.
6373
6374   :term:`PR`
6375      The revision of the recipe. The default value for this variable is
6376      "r0". Subsequent revisions of the recipe conventionally have the
6377      values "r1", "r2", and so forth. When :term:`PV` increases,
6378      :term:`PR` is conventionally reset to "r0".
6379
6380      .. note::
6381
6382         The OpenEmbedded build system does not need the aid of :term:`PR`
6383         to know when to rebuild a recipe. The build system uses the task
6384         :ref:`input checksums <overview-manual/concepts:checksums (signatures)>` along with the
6385         :ref:`stamp <structure-build-tmp-stamps>` and
6386         :ref:`overview-manual/concepts:shared state cache`
6387         mechanisms.
6388
6389      The :term:`PR` variable primarily becomes significant when a package
6390      manager dynamically installs packages on an already built image. In
6391      this case, :term:`PR`, which is the default value of
6392      :term:`PKGR`, helps the package manager distinguish which
6393      package is the most recent one in cases where many packages have the
6394      same :term:`PV` (i.e. :term:`PKGV`). A component having many packages with
6395      the same :term:`PV` usually means that the packages all install the same
6396      upstream version, but with later (:term:`PR`) version packages including
6397      packaging fixes.
6398
6399      .. note::
6400
6401         :term:`PR` does not need to be increased for changes that do not change the
6402         package contents or metadata.
6403
6404      Because manually managing :term:`PR` can be cumbersome and error-prone,
6405      an automated solution exists. See the
6406      ":ref:`dev-manual/packages:working with a pr service`" section
6407      in the Yocto Project Development Tasks Manual for more information.
6408
6409   :term:`PREFERRED_PROVIDER`
6410      If multiple recipes provide the same item, this variable determines
6411      which recipe is preferred and thus provides the item (i.e. the
6412      preferred provider). You should always suffix this variable with the
6413      name of the provided item. And, you should define the variable using
6414      the preferred recipe's name (:term:`PN`). Here is a common
6415      example::
6416
6417         PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
6418
6419      In the previous example, multiple recipes are providing "virtual/kernel".
6420      The :term:`PREFERRED_PROVIDER` variable is set with the name (:term:`PN`) of
6421      the recipe you prefer to provide "virtual/kernel".
6422
6423      Following are more examples::
6424
6425         PREFERRED_PROVIDER_virtual/xserver = "xserver-xf86"
6426         PREFERRED_PROVIDER_virtual/libgl ?= "mesa"
6427
6428      For more
6429      information, see the ":ref:`dev-manual/new-recipe:using virtual providers`"
6430      section in the Yocto Project Development Tasks Manual.
6431
6432      .. note::
6433
6434         If you use a ``virtual/\*`` item with :term:`PREFERRED_PROVIDER`, then any
6435         recipe that :term:`PROVIDES` that item but is not selected (defined)
6436         by :term:`PREFERRED_PROVIDER` is prevented from building, which is usually
6437         desirable since this mechanism is designed to select between mutually
6438         exclusive alternative providers.
6439
6440   :term:`PREFERRED_PROVIDERS`
6441      See :term:`bitbake:PREFERRED_PROVIDERS` in the BitBake manual.
6442
6443   :term:`PREFERRED_VERSION`
6444      If there are multiple versions of a recipe available, this variable
6445      determines which version should be given preference. You must always
6446      suffix the variable with the :term:`PN` you want to select (`python` in
6447      the first example below), and you should specify the :term:`PV`
6448      accordingly (`3.4.0` in the example).
6449
6450      The :term:`PREFERRED_VERSION` variable supports limited wildcard use
6451      through the "``%``" character. You can use the character to match any
6452      number of characters, which can be useful when specifying versions
6453      that contain long revision numbers that potentially change. Here are
6454      two examples::
6455
6456         PREFERRED_VERSION_python = "3.4.0"
6457         PREFERRED_VERSION_linux-yocto = "5.0%"
6458
6459      .. note::
6460
6461         The use of the "%" character is limited in that it only works at the end of the
6462         string. You cannot use the wildcard character in any other
6463         location of the string.
6464
6465      The specified version is matched against :term:`PV`, which
6466      does not necessarily match the version part of the recipe's filename.
6467      For example, consider two recipes ``foo_1.2.bb`` and ``foo_git.bb``
6468      where ``foo_git.bb`` contains the following assignment::
6469
6470         PV = "1.1+git${SRCPV}"
6471
6472      In this case, the correct way to select
6473      ``foo_git.bb`` is by using an assignment such as the following::
6474
6475         PREFERRED_VERSION_foo = "1.1+git%"
6476
6477      Compare that previous example
6478      against the following incorrect example, which does not work::
6479
6480         PREFERRED_VERSION_foo = "git"
6481
6482      Sometimes the :term:`PREFERRED_VERSION` variable can be set by
6483      configuration files in a way that is hard to change. You can use
6484      :term:`OVERRIDES` to set a machine-specific
6485      override. Here is an example::
6486
6487         PREFERRED_VERSION_linux-yocto:qemux86 = "5.0%"
6488
6489      Although not recommended, worst case, you can also use the
6490      "forcevariable" override, which is the strongest override possible.
6491      Here is an example::
6492
6493         PREFERRED_VERSION_linux-yocto:forcevariable = "5.0%"
6494
6495      .. note::
6496
6497         The ``:forcevariable`` override is not handled specially. This override
6498         only works because the default value of :term:`OVERRIDES` includes "forcevariable".
6499
6500      If a recipe with the specified version is not available, a warning
6501      message will be shown. See :term:`REQUIRED_VERSION` if you want this
6502      to be an error instead.
6503
6504   :term:`PREMIRRORS`
6505      Specifies additional paths from which the OpenEmbedded build system
6506      gets source code. When the build system searches for source code, it
6507      first tries the local download directory. If that location fails, the
6508      build system tries locations defined by :term:`PREMIRRORS`, the upstream
6509      source, and then locations specified by
6510      :term:`MIRRORS` in that order.
6511
6512      Assuming your distribution (:term:`DISTRO`) is "poky",
6513      the default value for :term:`PREMIRRORS` is defined in the
6514      ``conf/distro/poky.conf`` file in the ``meta-poky`` Git repository.
6515
6516      Typically, you could add a specific server for the build system to
6517      attempt before any others by adding something like the following to
6518      the ``local.conf`` configuration file in the
6519      :term:`Build Directory`::
6520
6521         PREMIRRORS:prepend = "\
6522             git://.*/.* &YOCTO_DL_URL;/mirror/sources/ \
6523             ftp://.*/.* &YOCTO_DL_URL;/mirror/sources/ \
6524             http://.*/.* &YOCTO_DL_URL;/mirror/sources/ \
6525             https://.*/.* &YOCTO_DL_URL;/mirror/sources/"
6526
6527      These changes cause the
6528      build system to intercept Git, FTP, HTTP, and HTTPS requests and
6529      direct them to the ``http://`` sources mirror. You can use
6530      ``file://`` URLs to point to local directories or network shares as
6531      well.
6532
6533   :term:`PRIORITY`
6534      Indicates the importance of a package.
6535
6536      :term:`PRIORITY` is considered to be part of the distribution policy
6537      because the importance of any given recipe depends on the purpose for
6538      which the distribution is being produced. Thus, :term:`PRIORITY` is not
6539      normally set within recipes.
6540
6541      You can set :term:`PRIORITY` to "required", "standard", "extra", and
6542      "optional", which is the default.
6543
6544   :term:`PRIVATE_LIBS`
6545      Specifies libraries installed within a recipe that should be ignored
6546      by the OpenEmbedded build system's shared library resolver. This
6547      variable is typically used when software being built by a recipe has
6548      its own private versions of a library normally provided by another
6549      recipe. In this case, you would not want the package containing the
6550      private libraries to be set as a dependency on other unrelated
6551      packages that should instead depend on the package providing the
6552      standard version of the library.
6553
6554      Libraries specified in this variable should be specified by their
6555      file name. For example, from the Firefox recipe in meta-browser::
6556
6557         PRIVATE_LIBS = "libmozjs.so \
6558                         libxpcom.so \
6559                         libnspr4.so \
6560                         libxul.so \
6561                         libmozalloc.so \
6562                         libplc4.so \
6563                         libplds4.so"
6564
6565      For more information, see the
6566      ":ref:`overview-manual/concepts:automatically added runtime dependencies`"
6567      section in the Yocto Project Overview and Concepts Manual.
6568
6569   :term:`PROVIDES`
6570      A list of aliases by which a particular recipe can be known. By
6571      default, a recipe's own :term:`PN` is implicitly already in its
6572      :term:`PROVIDES` list and therefore does not need to mention that it
6573      provides itself. If a recipe uses :term:`PROVIDES`, the additional
6574      aliases are synonyms for the recipe and can be useful for satisfying
6575      dependencies of other recipes during the build as specified by
6576      :term:`DEPENDS`.
6577
6578      Consider the following example :term:`PROVIDES` statement from the recipe
6579      file ``eudev_3.2.9.bb``::
6580
6581         PROVIDES += "udev"
6582
6583      The :term:`PROVIDES` statement
6584      results in the "eudev" recipe also being available as simply "udev".
6585
6586      .. note::
6587
6588         A recipe's own recipe name (:term:`PN`) is always implicitly prepended
6589         to :term:`PROVIDES`, so while using "+=" in the above example may not be
6590         strictly necessary it is recommended to avoid confusion.
6591
6592      In addition to providing recipes under alternate names, the
6593      :term:`PROVIDES` mechanism is also used to implement virtual targets. A
6594      virtual target is a name that corresponds to some particular
6595      functionality (e.g. a Linux kernel). Recipes that provide the
6596      functionality in question list the virtual target in :term:`PROVIDES`.
6597      Recipes that depend on the functionality in question can include the
6598      virtual target in :term:`DEPENDS` to leave the choice of provider open.
6599
6600      Conventionally, virtual targets have names on the form
6601      "virtual/function" (e.g. "virtual/kernel"). The slash is simply part
6602      of the name and has no syntactical significance.
6603
6604      The :term:`PREFERRED_PROVIDER` variable is
6605      used to select which particular recipe provides a virtual target.
6606
6607      .. note::
6608
6609         A corresponding mechanism for virtual runtime dependencies
6610         (packages) exists. However, the mechanism does not depend on any
6611         special functionality beyond ordinary variable assignments. For
6612         example, ``VIRTUAL-RUNTIME_dev_manager`` refers to the package of
6613         the component that manages the ``/dev`` directory.
6614
6615         Setting the "preferred provider" for runtime dependencies is as
6616         simple as using the following assignment in a configuration file::
6617
6618                 VIRTUAL-RUNTIME_dev_manager = "udev"
6619
6620
6621   :term:`PRSERV_HOST`
6622      The network based :term:`PR` service host and port.
6623
6624      The ``conf/templates/default/local.conf.sample.extended`` configuration
6625      file in the :term:`Source Directory` shows how the :term:`PRSERV_HOST`
6626      variable is set::
6627
6628         PRSERV_HOST = "localhost:0"
6629
6630      You must
6631      set the variable if you want to automatically start a local :ref:`PR
6632      service <dev-manual/packages:working with a pr service>`. You can
6633      set :term:`PRSERV_HOST` to other values to use a remote PR service.
6634
6635
6636   :term:`PSEUDO_IGNORE_PATHS`
6637      A comma-separated (without spaces) list of path prefixes that should be ignored
6638      by pseudo when monitoring and recording file operations, in order to avoid
6639      problems with files being written to outside of the pseudo context and
6640      reduce pseudo's overhead. A path is ignored if it matches any prefix in the list
6641      and can include partial directory (or file) names.
6642
6643
6644   :term:`PTEST_ENABLED`
6645      Specifies whether or not :ref:`Package
6646      Test <dev-manual/packages:testing packages with ptest>` (ptest)
6647      functionality is enabled when building a recipe. You should not set
6648      this variable directly. Enabling and disabling building Package Tests
6649      at build time should be done by adding "ptest" to (or removing it
6650      from) :term:`DISTRO_FEATURES`.
6651
6652   :term:`PV`
6653      The version of the recipe. The version is normally extracted from the
6654      recipe filename. For example, if the recipe is named
6655      ``expat_2.0.1.bb``, then the default value of :term:`PV` will be "2.0.1".
6656      :term:`PV` is generally not overridden within a recipe unless it is
6657      building an unstable (i.e. development) version from a source code
6658      repository (e.g. Git or Subversion).
6659
6660      :term:`PV` is the default value of the :term:`PKGV` variable.
6661
6662   :term:`PYPI_PACKAGE`
6663      When inheriting the :ref:`ref-classes-pypi` class, specifies the
6664      `PyPI <https://pypi.org/>`__ package name to be built. The default value
6665      is set based upon :term:`BPN` (stripping any "python-" or "python3-"
6666      prefix off if present), however for some packages it will need to be set
6667      explicitly if that will not match the package name (e.g. where the
6668      package name has a prefix, underscores, uppercase letters etc.)
6669
6670   :term:`PYTHON_ABI`
6671      When used by recipes that inherit the :ref:`ref-classes-setuptools3`
6672      class, denotes the Application Binary Interface (ABI) currently in use
6673      for Python. By default, the ABI is "m". You do not have to set this
6674      variable as the OpenEmbedded build system sets it for you.
6675
6676      The OpenEmbedded build system uses the ABI to construct directory
6677      names used when installing the Python headers and libraries in
6678      sysroot (e.g. ``.../python3.3m/...``).
6679
6680   :term:`PYTHON_PN`
6681      When used by recipes that inherit the :ref:`ref-classes-setuptools3`
6682      class, specifies the major Python version being built. For Python 3.x,
6683      :term:`PYTHON_PN` would be "python3". You do not have to set this
6684      variable as the OpenEmbedded build system automatically sets it for you.
6685
6686      The variable allows recipes to use common infrastructure such as the
6687      following::
6688
6689         DEPENDS += "${PYTHON_PN}-native"
6690
6691      In the previous example,
6692      the version of the dependency is :term:`PYTHON_PN`.
6693
6694   :term:`QA_EMPTY_DIRS`
6695      Specifies a list of directories that are expected to be empty when
6696      packaging; if ``empty-dirs`` appears in :term:`ERROR_QA` or
6697      :term:`WARN_QA` these will be checked and an error or warning
6698      (respectively) will be produced.
6699
6700      The default :term:`QA_EMPTY_DIRS` value is set in
6701      :ref:`insane.bbclass <ref-classes-insane>`.
6702
6703   :term:`QA_EMPTY_DIRS_RECOMMENDATION`
6704      Specifies a recommendation for why a directory must be empty,
6705      which will be included in the error message if a specific directory
6706      is found to contain files. Must be overridden with the directory
6707      path to match on.
6708
6709      If no recommendation is specified for a directory, then the default
6710      "but it is expected to be empty" will be used.
6711
6712      An example message shows if files were present in '/dev'::
6713
6714         QA_EMPTY_DIRS_RECOMMENDATION:/dev = "but all devices must be created at runtime"
6715
6716   :term:`RANLIB`
6717      The minimal command and arguments to run ``ranlib``.
6718
6719   :term:`RCONFLICTS`
6720      The list of packages that conflict with packages. Note that packages
6721      will not be installed if conflicting packages are not first removed.
6722
6723      Like all package-controlling variables, you must always use them in
6724      conjunction with a package name override. Here is an example::
6725
6726         RCONFLICTS:${PN} = "another_conflicting_package_name"
6727
6728      BitBake, which the OpenEmbedded build system uses, supports
6729      specifying versioned dependencies. Although the syntax varies
6730      depending on the packaging format, BitBake hides these differences
6731      from you. Here is the general syntax to specify versions with the
6732      :term:`RCONFLICTS` variable::
6733
6734         RCONFLICTS:${PN} = "package (operator version)"
6735
6736      For ``operator``, you can specify the following:
6737
6738      - =
6739      - <
6740      - >
6741      - <=
6742      - >=
6743
6744      For example, the following sets up a dependency on version 1.2 or
6745      greater of the package ``foo``::
6746
6747         RCONFLICTS:${PN} = "foo (>= 1.2)"
6748
6749   :term:`RDEPENDS`
6750      Lists runtime dependencies of a package. These dependencies are other
6751      packages that must be installed in order for the package to function
6752      correctly. As an example, the following assignment declares that the
6753      package ``foo`` needs the packages ``bar`` and ``baz`` to be
6754      installed::
6755
6756         RDEPENDS:foo = "bar baz"
6757
6758      The most common types of package
6759      runtime dependencies are automatically detected and added. Therefore,
6760      most recipes do not need to set :term:`RDEPENDS`. For more information,
6761      see the
6762      ":ref:`overview-manual/concepts:automatically added runtime dependencies`"
6763      section in the Yocto Project Overview and Concepts Manual.
6764
6765      The practical effect of the above :term:`RDEPENDS` assignment is that
6766      ``bar`` and ``baz`` will be declared as dependencies inside the
6767      package ``foo`` when it is written out by one of the
6768      :ref:`do_package_write_* <ref-tasks-package_write_deb>` tasks.
6769      Exactly how this is done depends on which package format is used,
6770      which is determined by
6771      :term:`PACKAGE_CLASSES`. When the
6772      corresponding package manager installs the package, it will know to
6773      also install the packages on which it depends.
6774
6775      To ensure that the packages ``bar`` and ``baz`` get built, the
6776      previous :term:`RDEPENDS` assignment also causes a task dependency to be
6777      added. This dependency is from the recipe's
6778      :ref:`ref-tasks-build` (not to be confused with
6779      :ref:`ref-tasks-compile`) task to the
6780      :ref:`do_package_write_* <ref-tasks-package_write_deb>` task of the recipes that build ``bar`` and
6781      ``baz``.
6782
6783      The names of the packages you list within :term:`RDEPENDS` must be the
6784      names of other packages --- they cannot be recipe names. Although
6785      package names and recipe names usually match, the important point
6786      here is that you are providing package names within the :term:`RDEPENDS`
6787      variable. For an example of the default list of packages created from
6788      a recipe, see the :term:`PACKAGES` variable.
6789
6790      Because the :term:`RDEPENDS` variable applies to packages being built,
6791      you should always use the variable in a form with an attached package
6792      name (remember that a single recipe can build multiple packages). For
6793      example, suppose you are building a development package that depends
6794      on the ``perl`` package. In this case, you would use the following
6795      :term:`RDEPENDS` statement::
6796
6797         RDEPENDS:${PN}-dev += "perl"
6798
6799      In the example,
6800      the development package depends on the ``perl`` package. Thus, the
6801      :term:`RDEPENDS` variable has the ``${PN}-dev`` package name as part of
6802      the variable.
6803
6804      .. note::
6805
6806         ``RDEPENDS:${PN}-dev`` includes ``${``\ :term:`PN`\ ``}``
6807         by default. This default is set in the BitBake configuration file
6808         (``meta/conf/bitbake.conf``). Be careful not to accidentally remove
6809         ``${PN}`` when modifying ``RDEPENDS:${PN}-dev``. Use the "+=" operator
6810         rather than the "=" operator.
6811
6812      The package names you use with :term:`RDEPENDS` must appear as they would
6813      in the :term:`PACKAGES` variable. The :term:`PKG` variable
6814      allows a different name to be used for the final package (e.g. the
6815      :ref:`ref-classes-debian` class uses this to rename
6816      packages), but this final package name cannot be used with
6817      :term:`RDEPENDS`, which makes sense as :term:`RDEPENDS` is meant to be
6818      independent of the package format used.
6819
6820      BitBake, which the OpenEmbedded build system uses, supports
6821      specifying versioned dependencies. Although the syntax varies
6822      depending on the packaging format, BitBake hides these differences
6823      from you. Here is the general syntax to specify versions with the
6824      :term:`RDEPENDS` variable::
6825
6826         RDEPENDS:${PN} = "package (operator version)"
6827
6828      For ``operator``, you can specify the following:
6829
6830      - =
6831      - <
6832      - >
6833      - <=
6834      - >=
6835
6836      For version, provide the version number.
6837
6838      .. note::
6839
6840         You can use :term:`EXTENDPKGV` to provide a full package version
6841         specification.
6842
6843      For example, the following sets up a dependency on version 1.2 or
6844      greater of the package ``foo``::
6845
6846         RDEPENDS:${PN} = "foo (>= 1.2)"
6847
6848      For information on build-time dependencies, see the :term:`DEPENDS`
6849      variable. You can also see the
6850      ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:tasks`" and
6851      ":ref:`bitbake-user-manual/bitbake-user-manual-execution:dependencies`" sections in the
6852      BitBake User Manual for additional information on tasks and dependencies.
6853
6854   :term:`RECIPE_NO_UPDATE_REASON`
6855      If a recipe should not be replaced by a more recent upstream version,
6856      putting the reason why in this variable in a recipe allows
6857      ``devtool check-upgrade-status`` command to display it, as explained
6858      in the ":ref:`ref-manual/devtool-reference:checking on the upgrade status of a recipe`"
6859      section.
6860
6861   :term:`REPODIR`
6862      See :term:`bitbake:REPODIR` in the BitBake manual.
6863
6864   :term:`REQUIRED_DISTRO_FEATURES`
6865      When inheriting the :ref:`ref-classes-features_check`
6866      class, this variable identifies distribution features that must exist
6867      in the current configuration in order for the OpenEmbedded build
6868      system to build the recipe. In other words, if the
6869      :term:`REQUIRED_DISTRO_FEATURES` variable lists a feature that does not
6870      appear in :term:`DISTRO_FEATURES` within the current configuration, then
6871      the recipe will be skipped, and if the build system attempts to build
6872      the recipe then an error will be triggered.
6873
6874   :term:`REQUIRED_VERSION`
6875      If there are multiple versions of a recipe available, this variable
6876      determines which version should be given preference.
6877      :term:`REQUIRED_VERSION` works in exactly the same manner as
6878      :term:`PREFERRED_VERSION`, except that if the specified version is not
6879      available then an error message is shown and the build fails
6880      immediately.
6881
6882      If both :term:`REQUIRED_VERSION` and :term:`PREFERRED_VERSION` are set
6883      for the same recipe, the :term:`REQUIRED_VERSION` value applies.
6884
6885   :term:`RM_WORK_EXCLUDE`
6886      With :ref:`ref-classes-rm-work` enabled, this variable
6887      specifies a list of recipes whose work directories should not be removed.
6888      See the ":ref:`ref-classes-rm-work`" section for more details.
6889
6890   :term:`ROOT_HOME`
6891      Defines the root home directory. By default, this directory is set as
6892      follows in the BitBake configuration file::
6893
6894         ROOT_HOME ??= "/home/root"
6895
6896      .. note::
6897
6898         This default value is likely used because some embedded solutions
6899         prefer to have a read-only root filesystem and prefer to keep
6900         writeable data in one place.
6901
6902      You can override the default by setting the variable in any layer or
6903      in the ``local.conf`` file. Because the default is set using a "weak"
6904      assignment (i.e. "??="), you can use either of the following forms to
6905      define your override::
6906
6907         ROOT_HOME = "/root"
6908         ROOT_HOME ?= "/root"
6909
6910      These
6911      override examples use ``/root``, which is probably the most commonly
6912      used override.
6913
6914   :term:`ROOTFS`
6915      Indicates a filesystem image to include as the root filesystem.
6916
6917      The :term:`ROOTFS` variable is an optional variable used with the
6918      :ref:`ref-classes-image-live` class.
6919
6920   :term:`ROOTFS_POSTINSTALL_COMMAND`
6921      Specifies a list of functions to call after the OpenEmbedded build
6922      system has installed packages. You can specify functions separated by
6923      semicolons::
6924
6925         ROOTFS_POSTINSTALL_COMMAND += "function; ... "
6926
6927      If you need to pass the root filesystem path to a command within a
6928      function, you can use ``${IMAGE_ROOTFS}``, which points to the
6929      directory that becomes the root filesystem image. See the
6930      :term:`IMAGE_ROOTFS` variable for more
6931      information.
6932
6933   :term:`ROOTFS_POSTPROCESS_COMMAND`
6934      Specifies a list of functions to call once the OpenEmbedded build
6935      system has created the root filesystem. You can specify functions
6936      separated by semicolons::
6937
6938         ROOTFS_POSTPROCESS_COMMAND += "function; ... "
6939
6940      If you need to pass the root filesystem path to a command within a
6941      function, you can use ``${IMAGE_ROOTFS}``, which points to the
6942      directory that becomes the root filesystem image. See the
6943      :term:`IMAGE_ROOTFS` variable for more
6944      information.
6945
6946   :term:`ROOTFS_POSTUNINSTALL_COMMAND`
6947      Specifies a list of functions to call after the OpenEmbedded build
6948      system has removed unnecessary packages. When runtime package
6949      management is disabled in the image, several packages are removed
6950      including ``base-passwd``, ``shadow``, and ``update-alternatives``.
6951      You can specify functions separated by semicolons::
6952
6953         ROOTFS_POSTUNINSTALL_COMMAND += "function; ... "
6954
6955      If you need to pass the root filesystem path to a command within a
6956      function, you can use ``${IMAGE_ROOTFS}``, which points to the
6957      directory that becomes the root filesystem image. See the
6958      :term:`IMAGE_ROOTFS` variable for more
6959      information.
6960
6961   :term:`ROOTFS_PREPROCESS_COMMAND`
6962      Specifies a list of functions to call before the OpenEmbedded build
6963      system has created the root filesystem. You can specify functions
6964      separated by semicolons::
6965
6966         ROOTFS_PREPROCESS_COMMAND += "function; ... "
6967
6968      If you need to pass the root filesystem path to a command within a
6969      function, you can use ``${IMAGE_ROOTFS}``, which points to the
6970      directory that becomes the root filesystem image. See the
6971      :term:`IMAGE_ROOTFS` variable for more
6972      information.
6973
6974   :term:`RPROVIDES`
6975      A list of package name aliases that a package also provides. These
6976      aliases are useful for satisfying runtime dependencies of other
6977      packages both during the build and on the target (as specified by
6978      :term:`RDEPENDS`).
6979
6980      .. note::
6981
6982         A package's own name is implicitly already in its :term:`RPROVIDES` list.
6983
6984      As with all package-controlling variables, you must always use the
6985      variable in conjunction with a package name override. Here is an
6986      example::
6987
6988         RPROVIDES:${PN} = "widget-abi-2"
6989
6990   :term:`RRECOMMENDS`
6991      A list of packages that extends the usability of a package being
6992      built. The package being built does not depend on this list of
6993      packages in order to successfully build, but rather uses them for
6994      extended usability. To specify runtime dependencies for packages, see
6995      the :term:`RDEPENDS` variable.
6996
6997      The package manager will automatically install the :term:`RRECOMMENDS`
6998      list of packages when installing the built package. However, you can
6999      prevent listed packages from being installed by using the
7000      :term:`BAD_RECOMMENDATIONS`,
7001      :term:`NO_RECOMMENDATIONS`, and
7002      :term:`PACKAGE_EXCLUDE` variables.
7003
7004      Packages specified in :term:`RRECOMMENDS` need not actually be produced.
7005      However, there must be a recipe providing each package, either
7006      through the :term:`PACKAGES` or
7007      :term:`PACKAGES_DYNAMIC` variables or the
7008      :term:`RPROVIDES` variable, or an error will occur
7009      during the build. If such a recipe does exist and the package is not
7010      produced, the build continues without error.
7011
7012      Because the :term:`RRECOMMENDS` variable applies to packages being built,
7013      you should always attach an override to the variable to specify the
7014      particular package whose usability is being extended. For example,
7015      suppose you are building a development package that is extended to
7016      support wireless functionality. In this case, you would use the
7017      following::
7018
7019         RRECOMMENDS:${PN}-dev += "wireless_package_name"
7020
7021      In the
7022      example, the package name (``${PN}-dev``) must appear as it would in
7023      the :term:`PACKAGES` namespace before any renaming of the output package
7024      by classes such as :ref:`ref-classes-debian`.
7025
7026      BitBake, which the OpenEmbedded build system uses, supports
7027      specifying versioned recommends. Although the syntax varies depending
7028      on the packaging format, BitBake hides these differences from you.
7029      Here is the general syntax to specify versions with the
7030      :term:`RRECOMMENDS` variable::
7031
7032         RRECOMMENDS:${PN} = "package (operator version)"
7033
7034      For ``operator``, you can specify the following:
7035
7036      - =
7037      - <
7038      - >
7039      - <=
7040      - >=
7041
7042      For example, the following sets up a recommend on version 1.2 or
7043      greater of the package ``foo``::
7044
7045         RRECOMMENDS:${PN} = "foo (>= 1.2)"
7046
7047   :term:`RREPLACES`
7048      A list of packages replaced by a package. The package manager uses
7049      this variable to determine which package should be installed to
7050      replace other package(s) during an upgrade. In order to also have the
7051      other package(s) removed at the same time, you must add the name of
7052      the other package to the :term:`RCONFLICTS` variable.
7053
7054      As with all package-controlling variables, you must use this variable
7055      in conjunction with a package name override. Here is an example::
7056
7057         RREPLACES:${PN} = "other_package_being_replaced"
7058
7059      BitBake, which the OpenEmbedded build system uses, supports
7060      specifying versioned replacements. Although the syntax varies
7061      depending on the packaging format, BitBake hides these differences
7062      from you. Here is the general syntax to specify versions with the
7063      :term:`RREPLACES` variable::
7064
7065         RREPLACES:${PN} = "package (operator version)"
7066
7067      For ``operator``, you can specify the following:
7068
7069      - =
7070      - <
7071      - >
7072      - <=
7073      - >=
7074
7075      For example, the following sets up a replacement using version 1.2
7076      or greater of the package ``foo``::
7077
7078          RREPLACES:${PN} = "foo (>= 1.2)"
7079
7080   :term:`RSUGGESTS`
7081      A list of additional packages that you can suggest for installation
7082      by the package manager at the time a package is installed. Not all
7083      package managers support this functionality.
7084
7085      As with all package-controlling variables, you must always use this
7086      variable in conjunction with a package name override. Here is an
7087      example::
7088
7089         RSUGGESTS:${PN} = "useful_package another_package"
7090
7091   :term:`RUST_CHANNEL`
7092      Specifies which version of Rust to build - "stable", "beta" or "nightly".
7093      The default value is "stable". Set this at your own risk, as values other
7094      than "stable" are not guaranteed to work at a given time.
7095
7096   :term:`S`
7097      The location in the :term:`Build Directory` where
7098      unpacked recipe source code resides. By default, this directory is
7099      ``${``\ :term:`WORKDIR`\ ``}/${``\ :term:`BPN`\ ``}-${``\ :term:`PV`\ ``}``,
7100      where ``${BPN}`` is the base recipe name and ``${PV}`` is the recipe
7101      version. If the source tarball extracts the code to a directory named
7102      anything other than ``${BPN}-${PV}``, or if the source code is
7103      fetched from an SCM such as Git or Subversion, then you must set
7104      :term:`S` in the recipe so that the OpenEmbedded build system knows where
7105      to find the unpacked source.
7106
7107      As an example, assume a :term:`Source Directory`
7108      top-level folder named ``poky`` and a default :term:`Build Directory` at
7109      ``poky/build``. In this case, the work directory the build system
7110      uses to keep the unpacked recipe for ``db`` is the following::
7111
7112         poky/build/tmp/work/qemux86-poky-linux/db/5.1.19-r3/db-5.1.19
7113
7114      The unpacked source code resides in the ``db-5.1.19`` folder.
7115
7116      This next example assumes a Git repository. By default, Git
7117      repositories are cloned to ``${WORKDIR}/git`` during
7118      :ref:`ref-tasks-fetch`. Since this path is different
7119      from the default value of :term:`S`, you must set it specifically so the
7120      source can be located::
7121
7122         SRC_URI = "git://path/to/repo.git;branch=main"
7123         S = "${WORKDIR}/git"
7124
7125   :term:`SANITY_REQUIRED_UTILITIES`
7126      Specifies a list of command-line utilities that should be checked for
7127      during the initial sanity checking process when running BitBake. If
7128      any of the utilities are not installed on the build host, then
7129      BitBake immediately exits with an error.
7130
7131   :term:`SANITY_TESTED_DISTROS`
7132      A list of the host distribution identifiers that the build system has
7133      been tested against. Identifiers consist of the host distributor ID
7134      followed by the release, as reported by the ``lsb_release`` tool or
7135      as read from ``/etc/lsb-release``. Separate the list items with
7136      explicit newline characters (``\n``). If :term:`SANITY_TESTED_DISTROS` is
7137      not empty and the current value of
7138      :term:`NATIVELSBSTRING` does not appear in the
7139      list, then the build system reports a warning that indicates the
7140      current host distribution has not been tested as a build host.
7141
7142   :term:`SDK_ARCH`
7143      The target architecture for the SDK. Typically, you do not directly
7144      set this variable. Instead, use :term:`SDKMACHINE`.
7145
7146   :term:`SDK_ARCHIVE_TYPE`
7147      Specifies the type of archive to create for the SDK. Valid values:
7148
7149      - ``tar.xz`` (default)
7150      - ``zip``
7151
7152      Only one archive type can be specified.
7153
7154   :term:`SDK_BUILDINFO_FILE`
7155      When using the :ref:`ref-classes-image-buildinfo` class,
7156      specifies the file in the SDK to write the build information into. The
7157      default value is "``/buildinfo``".
7158
7159   :term:`SDK_CUSTOM_TEMPLATECONF`
7160      When building the extensible SDK, if :term:`SDK_CUSTOM_TEMPLATECONF` is set to
7161      "1" and a ``conf/templateconf.cfg`` file exists in the :term:`Build Directory`
7162      (:term:`TOPDIR`) then this will be copied into the SDK.
7163
7164   :term:`SDK_DEPLOY`
7165      The directory set up and used by the
7166      :ref:`populate_sdk_base <ref-classes-populate-sdk>` class to which the
7167      SDK is deployed. The :ref:`populate_sdk_base <ref-classes-populate-sdk>`
7168      class defines :term:`SDK_DEPLOY` as follows::
7169
7170         SDK_DEPLOY = "${TMPDIR}/deploy/sdk"
7171
7172   :term:`SDK_DIR`
7173      The parent directory used by the OpenEmbedded build system when
7174      creating SDK output. The
7175      :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class defines
7176      the variable as follows::
7177
7178         SDK_DIR = "${WORKDIR}/sdk"
7179
7180      .. note::
7181
7182         The :term:`SDK_DIR` directory is a temporary directory as it is part of
7183         :term:`WORKDIR`. The final output directory is :term:`SDK_DEPLOY`.
7184
7185   :term:`SDK_EXT_TYPE`
7186      Controls whether or not shared state artifacts are copied into the
7187      extensible SDK. The default value of "full" copies all of the
7188      required shared state artifacts into the extensible SDK. The value
7189      "minimal" leaves these artifacts out of the SDK.
7190
7191      .. note::
7192
7193         If you set the variable to "minimal", you need to ensure
7194         :term:`SSTATE_MIRRORS` is set in the SDK's configuration to enable the
7195         artifacts to be fetched as needed.
7196
7197   :term:`SDK_HOST_MANIFEST`
7198      The manifest file for the host part of the SDK. This file lists all
7199      the installed packages that make up the host part of the SDK. The
7200      file contains package information on a line-per-package basis as
7201      follows::
7202
7203         packagename packagearch version
7204
7205      The :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class
7206      defines the manifest file as follows::
7207
7208         SDK_HOST_MANIFEST = "${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.host.manifest"
7209
7210      The location is derived using the :term:`SDK_DEPLOY` and
7211      :term:`TOOLCHAIN_OUTPUTNAME` variables.
7212
7213   :term:`SDK_INCLUDE_PKGDATA`
7214      When set to "1", specifies to include the packagedata for all recipes
7215      in the "world" target in the extensible SDK. Including this data
7216      allows the ``devtool search`` command to find these recipes in search
7217      results, as well as allows the ``devtool add`` command to map
7218      dependencies more effectively.
7219
7220      .. note::
7221
7222         Enabling the :term:`SDK_INCLUDE_PKGDATA`
7223         variable significantly increases build time because all of world
7224         needs to be built. Enabling the variable also slightly increases
7225         the size of the extensible SDK.
7226
7227   :term:`SDK_INCLUDE_TOOLCHAIN`
7228      When set to "1", specifies to include the toolchain in the extensible
7229      SDK. Including the toolchain is useful particularly when
7230      :term:`SDK_EXT_TYPE` is set to "minimal" to keep
7231      the SDK reasonably small but you still want to provide a usable
7232      toolchain. For example, suppose you want to use the toolchain from an
7233      IDE or from other tools and you do not want to perform additional
7234      steps to install the toolchain.
7235
7236      The :term:`SDK_INCLUDE_TOOLCHAIN` variable defaults to "0" if
7237      :term:`SDK_EXT_TYPE` is set to "minimal", and defaults to "1" if
7238      :term:`SDK_EXT_TYPE` is set to "full".
7239
7240   :term:`SDK_NAME`
7241      The base name for SDK output files. The name is derived from the
7242      :term:`DISTRO`, :term:`TCLIBC`,
7243      :term:`SDK_ARCH`,
7244      :term:`IMAGE_BASENAME`, and
7245      :term:`TUNE_PKGARCH` variables::
7246
7247         SDK_NAME = "${DISTRO}-${TCLIBC}-${SDK_ARCH}-${IMAGE_BASENAME}-${TUNE_PKGARCH}"
7248
7249   :term:`SDK_OS`
7250      Specifies the operating system for which the SDK will be built. The
7251      default value is the value of :term:`BUILD_OS`.
7252
7253   :term:`SDK_OUTPUT`
7254      The location used by the OpenEmbedded build system when creating SDK
7255      output. The :ref:`populate_sdk_base <ref-classes-populate-sdk-*>`
7256      class defines the variable as follows::
7257
7258         SDK_DIR = "${WORKDIR}/sdk"
7259         SDK_OUTPUT = "${SDK_DIR}/image"
7260         SDK_DEPLOY = "${DEPLOY_DIR}/sdk"
7261
7262      .. note::
7263
7264         The :term:`SDK_OUTPUT` directory is a temporary directory as it is part of
7265         :term:`WORKDIR` by way of :term:`SDK_DIR`. The final output directory is
7266         :term:`SDK_DEPLOY`.
7267
7268   :term:`SDK_PACKAGE_ARCHS`
7269      Specifies a list of architectures compatible with the SDK machine.
7270      This variable is set automatically and should not normally be
7271      hand-edited. Entries are separated using spaces and listed in order
7272      of priority. The default value for :term:`SDK_PACKAGE_ARCHS` is "all any
7273      noarch ${SDK_ARCH}-${SDKPKGSUFFIX}".
7274
7275   :term:`SDK_POSTPROCESS_COMMAND`
7276      Specifies a list of functions to call once the OpenEmbedded build
7277      system creates the SDK. You can specify functions separated by
7278      semicolons: SDK_POSTPROCESS_COMMAND += "function; ... "
7279
7280      If you need to pass an SDK path to a command within a function, you
7281      can use ``${SDK_DIR}``, which points to the parent directory used by
7282      the OpenEmbedded build system when creating SDK output. See the
7283      :term:`SDK_DIR` variable for more information.
7284
7285   :term:`SDK_PREFIX`
7286      The toolchain binary prefix used for
7287      :ref:`ref-classes-nativesdk` recipes. The
7288      OpenEmbedded build system uses the :term:`SDK_PREFIX` value to set the
7289      :term:`TARGET_PREFIX` when building
7290      ``nativesdk`` recipes. The default value is "${SDK_SYS}-".
7291
7292   :term:`SDK_RECRDEP_TASKS`
7293      A list of shared state tasks added to the extensible SDK. By default,
7294      the following tasks are added:
7295
7296      - :ref:`ref-tasks-populate_lic`
7297      - :ref:`ref-tasks-package_qa`
7298      - :ref:`ref-tasks-populate_sysroot`
7299      - :ref:`ref-tasks-deploy`
7300
7301      Despite the default value of "" for the
7302      :term:`SDK_RECRDEP_TASKS` variable, the above four tasks are always added
7303      to the SDK. To specify tasks beyond these four, you need to use the
7304      :term:`SDK_RECRDEP_TASKS` variable (e.g. you are defining additional
7305      tasks that are needed in order to build
7306      :term:`SDK_TARGETS`).
7307
7308   :term:`SDK_SYS`
7309      Specifies the system, including the architecture and the operating
7310      system, for which the SDK will be built.
7311
7312      The OpenEmbedded build system automatically sets this variable based
7313      on :term:`SDK_ARCH`,
7314      :term:`SDK_VENDOR`, and
7315      :term:`SDK_OS`. You do not need to set the :term:`SDK_SYS`
7316      variable yourself.
7317
7318   :term:`SDK_TARGET_MANIFEST`
7319      The manifest file for the target part of the SDK. This file lists all
7320      the installed packages that make up the target part of the SDK. The
7321      file contains package information on a line-per-package basis as
7322      follows::
7323
7324         packagename packagearch version
7325
7326      The :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class
7327      defines the manifest file as follows::
7328
7329         SDK_TARGET_MANIFEST = "${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.target.manifest"
7330
7331      The location is derived using the :term:`SDK_DEPLOY` and
7332      :term:`TOOLCHAIN_OUTPUTNAME` variables.
7333
7334   :term:`SDK_TARGETS`
7335      A list of targets to install from shared state as part of the
7336      standard or extensible SDK installation. The default value is "${PN}"
7337      (i.e. the image from which the SDK is built).
7338
7339      The :term:`SDK_TARGETS` variable is an internal variable and typically
7340      would not be changed.
7341
7342   :term:`SDK_TITLE`
7343      The title to be printed when running the SDK installer. By default,
7344      this title is based on the :term:`DISTRO_NAME` or
7345      :term:`DISTRO` variable and is set in the
7346      :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class as
7347      follows::
7348
7349         SDK_TITLE ??= "${@d.getVar('DISTRO_NAME') or d.getVar('DISTRO')} SDK"
7350
7351      For the default distribution "poky",
7352      :term:`SDK_TITLE` is set to "Poky (Yocto Project Reference Distro)".
7353
7354      For information on how to change this default title, see the
7355      ":ref:`sdk-manual/appendix-customizing:changing the extensible sdk installer title`"
7356      section in the Yocto Project Application Development and the
7357      Extensible Software Development Kit (eSDK) manual.
7358
7359   :term:`SDK_TOOLCHAIN_LANGS`
7360      Specifies programming languages to support in the SDK, as a
7361      space-separated list. Currently supported items are ``rust`` and ``go``.
7362
7363   :term:`SDK_UPDATE_URL`
7364      An optional URL for an update server for the extensible SDK. If set,
7365      the value is used as the default update server when running
7366      ``devtool sdk-update`` within the extensible SDK.
7367
7368   :term:`SDK_VENDOR`
7369      Specifies the name of the SDK vendor.
7370
7371   :term:`SDK_VERSION`
7372      Specifies the version of the SDK. The Poky distribution configuration file
7373      (``/meta-poky/conf/distro/poky.conf``) sets the default
7374      :term:`SDK_VERSION` as follows::
7375
7376         SDK_VERSION = "${@d.getVar('DISTRO_VERSION').replace('snapshot-${METADATA_REVISION}', 'snapshot')}"
7377
7378      For additional information, see the
7379      :term:`DISTRO_VERSION` and
7380      :term:`METADATA_REVISION` variables.
7381
7382   :term:`SDK_ZIP_OPTIONS`
7383      Specifies extra options to pass to the ``zip`` command when zipping the SDK
7384      (i.e. when :term:`SDK_ARCHIVE_TYPE` is set to "zip"). The default value is
7385      "-y".
7386
7387   :term:`SDKEXTPATH`
7388      The default installation directory for the Extensible SDK. By
7389      default, this directory is based on the :term:`DISTRO`
7390      variable and is set in the
7391      :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class as
7392      follows::
7393
7394         SDKEXTPATH ??= "~/${@d.getVar('DISTRO')}_sdk"
7395
7396      For the
7397      default distribution "poky", the :term:`SDKEXTPATH` is set to "poky_sdk".
7398
7399      For information on how to change this default directory, see the
7400      ":ref:`sdk-manual/appendix-customizing:changing the default sdk installation directory`"
7401      section in the Yocto Project Application Development and the
7402      Extensible Software Development Kit (eSDK) manual.
7403
7404   :term:`SDKIMAGE_FEATURES`
7405      Equivalent to :term:`IMAGE_FEATURES`. However, this variable applies to
7406      the SDK generated from an image using the following command::
7407
7408         $ bitbake -c populate_sdk imagename
7409
7410   :term:`SDKMACHINE`
7411      The machine for which the SDK is built. In other words, the SDK is built
7412      such that it runs on the target you specify with the :term:`SDKMACHINE`
7413      value. The value points to a corresponding ``.conf`` file under
7414      ``conf/machine-sdk/`` in the enabled layers, for example ``aarch64``,
7415      ``i586``, ``i686``, ``ppc64``, ``ppc64le``, and ``x86_64`` are
7416      :oe_git:`available in OpenEmbedded-Core </openembedded-core/tree/meta/conf/machine-sdk>`.
7417
7418      The variable defaults to :term:`BUILD_ARCH` so that SDKs are built for the
7419      architecture of the build machine.
7420
7421      .. note::
7422
7423         You cannot set the :term:`SDKMACHINE`
7424         variable in your distribution configuration file. If you do, the
7425         configuration will not take effect.
7426
7427   :term:`SDKPATH`
7428      Defines the path offered to the user for installation of the SDK that
7429      is generated by the OpenEmbedded build system. The path appears as
7430      the default location for installing the SDK when you run the SDK's
7431      installation script. You can override the offered path when you run
7432      the script.
7433
7434   :term:`SDKTARGETSYSROOT`
7435      The full path to the sysroot used for cross-compilation within an SDK
7436      as it will be when installed into the default
7437      :term:`SDKPATH`.
7438
7439   :term:`SECTION`
7440      The section in which packages should be categorized. Package
7441      management utilities can make use of this variable.
7442
7443   :term:`SELECTED_OPTIMIZATION`
7444      Specifies the optimization flags passed to the C compiler when
7445      building for the target. The flags are passed through the default
7446      value of the :term:`TARGET_CFLAGS` variable.
7447
7448      The :term:`SELECTED_OPTIMIZATION` variable takes the value of
7449      :term:`FULL_OPTIMIZATION` unless :term:`DEBUG_BUILD` = "1", in which
7450      case the value of :term:`DEBUG_OPTIMIZATION` is used.
7451
7452   :term:`SERIAL_CONSOLES`
7453      Defines a serial console (TTY) to enable using
7454      :wikipedia:`getty <Getty_(Unix)>`. Provide a value that specifies the
7455      baud rate followed by the TTY device name separated by a semicolon.
7456      Use spaces to separate multiple devices::
7457
7458         SERIAL_CONSOLES = "115200;ttyS0 115200;ttyS1"
7459
7460   :term:`SERIAL_CONSOLES_CHECK`
7461      Specifies serial consoles, which must be listed in
7462      :term:`SERIAL_CONSOLES`, to check against
7463      ``/proc/console`` before enabling them using getty. This variable
7464      allows aliasing in the format: <device>:<alias>. If a device was
7465      listed as "sclp_line0" in ``/dev/`` and "ttyS0" was listed in
7466      ``/proc/console``, you would do the following::
7467
7468         SERIAL_CONSOLES_CHECK = "slcp_line0:ttyS0"
7469
7470      This variable is currently only supported with SysVinit (i.e. not
7471      with systemd). Note that :term:`SERIAL_CONSOLES_CHECK` also requires
7472      ``/etc/inittab`` to be writable when used with SysVinit. This makes it
7473      incompatible with customizations such as the following::
7474
7475         EXTRA_IMAGE_FEATURES += "read-only-rootfs"
7476
7477   :term:`SETUPTOOLS_BUILD_ARGS`
7478      When used by recipes that inherit the :ref:`ref-classes-setuptools3`
7479      class, this variable can be used to specify additional arguments to be
7480      passed to ``setup.py build`` in the ``setuptools3_do_compile()`` task.
7481
7482   :term:`SETUPTOOLS_INSTALL_ARGS`
7483      When used by recipes that inherit the :ref:`ref-classes-setuptools3`
7484      class, this variable can be used to specify additional arguments to be
7485      passed to ``setup.py install`` in the ``setuptools3_do_install()`` task.
7486
7487   :term:`SETUPTOOLS_SETUP_PATH`
7488      When used by recipes that inherit the :ref:`ref-classes-setuptools3`
7489      class, this variable should be used to specify the directory in which
7490      the ``setup.py`` file is located if it is not at the root of the source
7491      tree (as specified by :term:`S`). For example, in a recipe where the
7492      sources are fetched from a Git repository and ``setup.py`` is in a
7493      ``python/pythonmodule`` subdirectory, you would have this::
7494
7495         S = "${WORKDIR}/git"
7496         SETUPTOOLS_SETUP_PATH = "${S}/python/pythonmodule"
7497
7498   :term:`SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS`
7499      A list of recipe dependencies that should not be used to determine
7500      signatures of tasks from one recipe when they depend on tasks from
7501      another recipe. For example::
7502
7503         SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += "intone->mplayer2"
7504
7505      In the previous example, ``intone`` depends on ``mplayer2``.
7506
7507      You can use the special token ``"*"`` on the left-hand side of the
7508      dependency to match all recipes except the one on the right-hand
7509      side. Here is an example::
7510
7511         SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += "*->quilt-native"
7512
7513      In the previous example, all recipes except ``quilt-native`` ignore
7514      task signatures from the ``quilt-native`` recipe when determining
7515      their task signatures.
7516
7517      Use of this variable is one mechanism to remove dependencies that
7518      affect task signatures and thus force rebuilds when a recipe changes.
7519
7520      .. note::
7521
7522         If you add an inappropriate dependency for a recipe relationship,
7523         the software might break during runtime if the interface of the
7524         second recipe was changed after the first recipe had been built.
7525
7526   :term:`SIGGEN_EXCLUDERECIPES_ABISAFE`
7527      A list of recipes that are completely stable and will never change.
7528      The ABI for the recipes in the list are presented by output from the
7529      tasks run to build the recipe. Use of this variable is one way to
7530      remove dependencies from one recipe on another that affect task
7531      signatures and thus force rebuilds when the recipe changes.
7532
7533      .. note::
7534
7535         If you add an inappropriate variable to this list, the software
7536         might break at runtime if the interface of the recipe was changed
7537         after the other had been built.
7538
7539   :term:`SITEINFO_BITS`
7540      Specifies the number of bits for the target system CPU. The value
7541      should be either "32" or "64".
7542
7543   :term:`SITEINFO_ENDIANNESS`
7544      Specifies the endian byte order of the target system. The value
7545      should be either "le" for little-endian or "be" for big-endian.
7546
7547   :term:`SKIP_FILEDEPS`
7548      Enables removal of all files from the "Provides" section of an RPM
7549      package. Removal of these files is required for packages containing
7550      prebuilt binaries and libraries such as ``libstdc++`` and ``glibc``.
7551
7552      To enable file removal, set the variable to "1" in your
7553      ``conf/local.conf`` configuration file in your:
7554      :term:`Build Directory`::
7555
7556         SKIP_FILEDEPS = "1"
7557
7558   :term:`SKIP_RECIPE`
7559      Used to prevent the OpenEmbedded build system from building a given
7560      recipe. Specify the :term:`PN` value as a variable flag (``varflag``)
7561      and provide a reason, which will be reported when attempting to
7562      build the recipe.
7563
7564      To prevent a recipe from being built, use the :term:`SKIP_RECIPE`
7565      variable in your ``local.conf`` file or distribution configuration.
7566      Here is an example which prevents ``myrecipe`` from being built::
7567
7568         SKIP_RECIPE[myrecipe] = "Not supported by our organization."
7569
7570   :term:`SOC_FAMILY`
7571      Groups together machines based upon the same family of SOC (System On
7572      Chip). You typically set this variable in a common ``.inc`` file that
7573      you include in the configuration files of all the machines.
7574
7575      .. note::
7576
7577         You must include ``conf/machine/include/soc-family.inc`` for this
7578         variable to appear in :term:`MACHINEOVERRIDES`.
7579
7580   :term:`SOLIBS`
7581      Defines the suffix for shared libraries used on the target platform.
7582      By default, this suffix is ".so.*" for all Linux-based systems and is
7583      defined in the ``meta/conf/bitbake.conf`` configuration file.
7584
7585      You will see this variable referenced in the default values of
7586      ``FILES:${PN}``.
7587
7588   :term:`SOLIBSDEV`
7589      Defines the suffix for the development symbolic link (symlink) for
7590      shared libraries on the target platform. By default, this suffix is
7591      ".so" for Linux-based systems and is defined in the
7592      ``meta/conf/bitbake.conf`` configuration file.
7593
7594      You will see this variable referenced in the default values of
7595      ``FILES:${PN}-dev``.
7596
7597   :term:`SOURCE_DATE_EPOCH`
7598      This defines a date expressed in number of seconds since
7599      the UNIX EPOCH (01 Jan 1970 00:00:00 UTC), which is used by
7600      multiple build systems to force a timestamp in built binaries.
7601      Many upstream projects already support this variable.
7602
7603      You will find more details in the `official specifications
7604      <https://reproducible-builds.org/specs/source-date-epoch/>`__.
7605
7606      A value for each recipe is computed from the sources by
7607      :oe_git:`meta/lib/oe/reproducible.py </openembedded-core/tree/meta/lib/oe/reproducible.py>`.
7608
7609      If a recipe wishes to override the default behavior, it should set its
7610      own :term:`SOURCE_DATE_EPOCH` value::
7611
7612          SOURCE_DATE_EPOCH = "1613559011"
7613
7614   :term:`SOURCE_MIRROR_FETCH`
7615      When you are fetching files to create a mirror of sources (i.e.
7616      creating a source mirror), setting :term:`SOURCE_MIRROR_FETCH` to "1" in
7617      your ``local.conf`` configuration file ensures the source for all
7618      recipes are fetched regardless of whether or not a recipe is
7619      compatible with the configuration. A recipe is considered
7620      incompatible with the currently configured machine when either or
7621      both the :term:`COMPATIBLE_MACHINE`
7622      variable and :term:`COMPATIBLE_HOST` variables
7623      specify compatibility with a machine other than that of the current
7624      machine or host.
7625
7626      .. note::
7627
7628         Do not set the :term:`SOURCE_MIRROR_FETCH`
7629         variable unless you are creating a source mirror. In other words,
7630         do not set the variable during a normal build.
7631
7632   :term:`SOURCE_MIRROR_URL`
7633      Defines your own :term:`PREMIRRORS` from which to
7634      first fetch source before attempting to fetch from the upstream
7635      specified in :term:`SRC_URI`.
7636
7637      To use this variable, you must globally inherit the
7638      :ref:`ref-classes-own-mirrors` class and then provide
7639      the URL to your mirrors. Here is the general syntax::
7640
7641         INHERIT += "own-mirrors"
7642         SOURCE_MIRROR_URL = "http://example.com/my_source_mirror"
7643
7644      .. note::
7645
7646         You can specify only a single URL in :term:`SOURCE_MIRROR_URL`.
7647
7648   :term:`SPDX_ARCHIVE_PACKAGED`
7649      This option allows to add to :term:`SPDX` output compressed archives
7650      of the files in the generated target packages.
7651
7652      Such archives are available in
7653      ``tmp/deploy/spdx/MACHINE/packages/packagename.tar.zst``
7654      under the :term:`Build Directory`.
7655
7656      Enable this option as follows::
7657
7658         SPDX_ARCHIVE_PACKAGED = "1"
7659
7660      According to our tests on release 4.1 "langdale", building
7661      ``core-image-minimal`` for the ``qemux86-64`` machine, enabling this
7662      option multiplied the size of the ``tmp/deploy/spdx`` directory by a
7663      factor of 13 (+1.6 GiB for this image), compared to just using the
7664      :ref:`ref-classes-create-spdx` class with no option.
7665
7666      Note that this option doesn't increase the size of :term:`SPDX`
7667      files in ``tmp/deploy/images/MACHINE``.
7668
7669   :term:`SPDX_ARCHIVE_SOURCES`
7670      This option allows to add to :term:`SPDX` output compressed archives
7671      of the sources for packages installed on the target. It currently
7672      only works when :term:`SPDX_INCLUDE_SOURCES` is set.
7673
7674      This is one way of fulfilling "source code access" license
7675      requirements.
7676
7677      Such source archives are available in
7678      ``tmp/deploy/spdx/MACHINE/recipes/recipe-packagename.tar.zst``
7679      under the :term:`Build Directory`.
7680
7681      Enable this option as follows::
7682
7683         SPDX_INCLUDE_SOURCES = "1"
7684         SPDX_ARCHIVE_SOURCES = "1"
7685
7686      According to our tests on release 4.1 "langdale", building
7687      ``core-image-minimal`` for the ``qemux86-64`` machine, enabling
7688      these options multiplied the size of the ``tmp/deploy/spdx``
7689      directory by a factor of 11 (+1.4 GiB for this image),
7690      compared to just using the :ref:`ref-classes-create-spdx`
7691      class with no option.
7692
7693      Note that using this option only marginally increases the size
7694      of the :term:`SPDX` output in ``tmp/deploy/images/MACHINE/``
7695      (+ 0.07\% with the tested image), compared to just enabling
7696      :term:`SPDX_INCLUDE_SOURCES`.
7697
7698   :term:`SPDX_CUSTOM_ANNOTATION_VARS`
7699      This option allows to associate `SPDX annotations
7700      <https://spdx.github.io/spdx-spec/v2.3/annotations/>`__ to a recipe,
7701      using the values of variables in the recipe::
7702
7703         ANNOTATION1 = "First annotation for recipe"
7704         ANNOTATION2 = "Second annotation for recipe"
7705         SPDX_CUSTOM_ANNOTATION_VARS = "ANNOTATION1 ANNOTATION2"
7706
7707      This will add a new block to the recipe ``.sdpx.json`` output::
7708
7709         "annotations": [
7710           {
7711             "annotationDate": "2023-04-18T08:32:12Z",
7712             "annotationType": "OTHER",
7713             "annotator": "Tool: oe-spdx-creator - 1.0",
7714             "comment": "ANNOTATION1=First annotation for recipe"
7715           },
7716           {
7717             "annotationDate": "2023-04-18T08:32:12Z",
7718             "annotationType": "OTHER",
7719             "annotator": "Tool: oe-spdx-creator - 1.0",
7720             "comment": "ANNOTATION2=Second annotation for recipe"
7721           }
7722         ],
7723
7724   :term:`SPDX_INCLUDE_SOURCES`
7725      This option allows to add a description of the source files used to build
7726      the host tools and the target packages, to the ``spdx.json`` files in
7727      ``tmp/deploy/spdx/MACHINE/recipes/`` under the :term:`Build Directory`.
7728      As a consequence, the ``spdx.json`` files under the ``by-namespace`` and
7729      ``packages`` subdirectories in ``tmp/deploy/spdx/MACHINE`` are also
7730      modified to include references to such source file descriptions.
7731
7732      Enable this option as follows::
7733
7734         SPDX_INCLUDE_SOURCES = "1"
7735
7736      According to our tests on release 4.1 "langdale", building
7737      ``core-image-minimal`` for the ``qemux86-64`` machine, enabling
7738      this option multiplied the total size of the ``tmp/deploy/spdx``
7739      directory by a factor of 3  (+291 MiB for this image),
7740      and the size of the ``IMAGE-MACHINE.spdx.tar.zst`` in
7741      ``tmp/deploy/images/MACHINE`` by a factor of 130 (+15 MiB for this
7742      image), compared to just using the :ref:`ref-classes-create-spdx` class
7743      with no option.
7744
7745   :term:`SPDX_PRETTY`
7746      This option makes the SPDX output more human-readable, using
7747      identation and newlines, instead of the default output in a
7748      single line::
7749
7750         SPDX_PRETTY = "1"
7751
7752      The generated SPDX files are approximately 20% bigger, but
7753      this option is recommended if you want to inspect the SPDX
7754      output files with a text editor.
7755
7756   :term:`SPDXLICENSEMAP`
7757      Maps commonly used license names to their SPDX counterparts found in
7758      ``meta/files/common-licenses/``. For the default :term:`SPDXLICENSEMAP`
7759      mappings, see the ``meta/conf/licenses.conf`` file.
7760
7761      For additional information, see the :term:`LICENSE`
7762      variable.
7763
7764   :term:`SPECIAL_PKGSUFFIX`
7765      A list of prefixes for :term:`PN` used by the OpenEmbedded
7766      build system to create variants of recipes or packages. The list
7767      specifies the prefixes to strip off during certain circumstances such
7768      as the generation of the :term:`BPN` variable.
7769
7770   :term:`SPL_BINARY`
7771      The file type for the Secondary Program Loader (SPL). Some devices
7772      use an SPL from which to boot (e.g. the BeagleBone development
7773      board). For such cases, you can declare the file type of the SPL
7774      binary in the ``u-boot.inc`` include file, which is used in the
7775      U-Boot recipe.
7776
7777      The SPL file type is set to "null" by default in the ``u-boot.inc``
7778      file as follows::
7779
7780         # Some versions of u-boot build an SPL (Second Program Loader) image that
7781         # should be packaged along with the u-boot binary as well as placed in the
7782         # deploy directory. For those versions they can set the following variables
7783         # to allow packaging the SPL.
7784         SPL_BINARY ?= ""
7785         SPL_BINARYNAME ?= "${@os.path.basename(d.getVar("SPL_BINARY"))}"
7786         SPL_IMAGE ?= "${SPL_BINARYNAME}-${MACHINE}-${PV}-${PR}"
7787         SPL_SYMLINK ?= "${SPL_BINARYNAME}-${MACHINE}"
7788
7789      The :term:`SPL_BINARY` variable helps form
7790      various ``SPL_*`` variables used by the OpenEmbedded build system.
7791
7792      See the BeagleBone machine configuration example in the
7793      ":ref:`dev-manual/layers:adding a layer using the \`\`bitbake-layers\`\` script`"
7794      section in the Yocto Project Board Support Package Developer's Guide
7795      for additional information.
7796
7797   :term:`SPL_MKIMAGE_DTCOPTS`
7798      Options for the device tree compiler passed to ``mkimage -D`` feature
7799      while creating a FIT image with the :ref:`ref-classes-uboot-sign`
7800      class. If :term:`SPL_MKIMAGE_DTCOPTS` is not set then the
7801      :ref:`ref-classes-uboot-sign` class will not pass the ``-D`` option
7802      to ``mkimage``.
7803
7804      The default value is set to "" by the :ref:`ref-classes-uboot-config`
7805      class.
7806
7807   :term:`SPL_SIGN_ENABLE`
7808      Enable signing of the U-Boot FIT image. The default value is "0".
7809      This variable is used by the :ref:`ref-classes-uboot-sign` class.
7810
7811   :term:`SPL_SIGN_KEYDIR`
7812      Location of the directory containing the RSA key and certificate used for
7813      signing the U-Boot FIT image, used by the :ref:`ref-classes-uboot-sign`
7814      class.
7815
7816   :term:`SPL_SIGN_KEYNAME`
7817      The name of keys used by the :ref:`ref-classes-kernel-fitimage` class
7818      for signing U-Boot FIT image stored in the :term:`SPL_SIGN_KEYDIR`
7819      directory. If we have for example a ``dev.key`` key and a ``dev.crt``
7820      certificate stored in the :term:`SPL_SIGN_KEYDIR` directory, you will
7821      have to set :term:`SPL_SIGN_KEYNAME` to ``dev``.
7822
7823   :term:`SPLASH`
7824      This variable, used by the :ref:`ref-classes-image` class, allows
7825      to choose splashscreen applications. Set it to the names of packages
7826      for such applications to use. This variable is set by default to
7827      ``psplash``.
7828
7829   :term:`SPLASH_IMAGES`
7830      This variable, used by the ``psplash`` recipe, allows to customize
7831      the default splashscreen image.
7832
7833      Specified images in PNG format are converted to ``.h`` files by the recipe,
7834      and are included in the ``psplash`` binary, so you won't find them in
7835      the root filesystem.
7836
7837      To make such a change, it is recommended to customize the
7838      ``psplash`` recipe in a custom layer. Here is an example structure for
7839      an ``ACME`` board::
7840
7841          meta-acme/recipes-core/psplash
7842          ├── files
7843          │   └── logo-acme.png
7844          └── psplash_%.bbappend
7845
7846      And here are the contents of the ``psplash_%.bbappend`` file in
7847      this example::
7848
7849          SPLASH_IMAGES = "file://logo-acme.png;outsuffix=default"
7850          FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
7851
7852      You could even add specific configuration options for ``psplash``,
7853      for example::
7854
7855          EXTRA_OECONF += "--disable-startup-msg --enable-img-fullscreen"
7856
7857      For information on append files, see the
7858      ":ref:`dev-manual/layers:appending other layers metadata with your layer`"
7859      section.
7860
7861   :term:`SRCREV_FORMAT`
7862      See :term:`bitbake:SRCREV_FORMAT` in the BitBake manual.
7863
7864   :term:`SRC_URI`
7865
7866      See the BitBake manual for the initial description for this variable:
7867      :term:`bitbake:SRC_URI`.
7868
7869      The following features are added by OpenEmbedded and the Yocto Project.
7870
7871      There are standard and recipe-specific options. Here are standard ones:
7872
7873      -  ``apply`` --- whether to apply the patch or not. The default
7874         action is to apply the patch.
7875
7876      -  ``striplevel`` --- which striplevel to use when applying the
7877         patch. The default level is 1.
7878
7879      -  ``patchdir`` --- specifies the directory in which the patch should
7880         be applied. The default is ``${``\ :term:`S`\ ``}``.
7881
7882      Here are options specific to recipes building code from a revision
7883      control system:
7884
7885      -  ``mindate`` --- apply the patch only if
7886         :term:`SRCDATE` is equal to or greater than
7887         ``mindate``.
7888
7889      -  ``maxdate`` --- apply the patch only if :term:`SRCDATE` is not later
7890         than ``maxdate``.
7891
7892      -  ``minrev`` --- apply the patch only if :term:`SRCREV` is equal to or
7893         greater than ``minrev``.
7894
7895      -  ``maxrev`` --- apply the patch only if :term:`SRCREV` is not later
7896         than ``maxrev``.
7897
7898      -  ``rev`` --- apply the patch only if :term:`SRCREV` is equal to
7899         ``rev``.
7900
7901      -  ``notrev`` --- apply the patch only if :term:`SRCREV` is not equal to
7902         ``rev``.
7903
7904      .. note::
7905
7906         If you want the build system to pick up files specified through
7907         a :term:`SRC_URI` statement from your append file, you need to be
7908         sure to extend the :term:`FILESPATH` variable by also using the
7909         :term:`FILESEXTRAPATHS` variable from within your append file.
7910
7911   :term:`SRC_URI_OVERRIDES_PACKAGE_ARCH`
7912      By default, the OpenEmbedded build system automatically detects
7913      whether :term:`SRC_URI` contains files that are machine-specific. If so,
7914      the build system automatically changes :term:`PACKAGE_ARCH`. Setting this
7915      variable to "0" disables this behavior.
7916
7917   :term:`SRCDATE`
7918      The date of the source code used to build the package. This variable
7919      applies only if the source was fetched from a Source Code Manager
7920      (SCM).
7921
7922   :term:`SRCPV`
7923      Returns the version string of the current package. This string is
7924      used to help define the value of :term:`PV`.
7925
7926      The :term:`SRCPV` variable is defined in the ``meta/conf/bitbake.conf``
7927      configuration file in the :term:`Source Directory` as
7928      follows::
7929
7930         SRCPV = "${@bb.fetch2.get_srcrev(d)}"
7931
7932      Recipes that need to define :term:`PV` do so with the help of the
7933      :term:`SRCPV`. For example, the ``ofono`` recipe (``ofono_git.bb``)
7934      located in ``meta/recipes-connectivity`` in the Source Directory
7935      defines :term:`PV` as follows::
7936
7937         PV = "0.12-git${SRCPV}"
7938
7939   :term:`SRCREV`
7940      The revision of the source code used to build the package. This
7941      variable applies to Subversion, Git, Mercurial, and Bazaar only. Note
7942      that if you want to build a fixed revision and you want to avoid
7943      performing a query on the remote repository every time BitBake parses
7944      your recipe, you should specify a :term:`SRCREV` that is a full revision
7945      identifier and not just a tag.
7946
7947      .. note::
7948
7949         For information on limitations when inheriting the latest revision
7950         of software using :term:`SRCREV`, see the :term:`AUTOREV` variable
7951         description and the
7952         ":ref:`dev-manual/packages:automatically incrementing a package version number`"
7953         section, which is in the Yocto Project Development Tasks Manual.
7954
7955   :term:`SRCTREECOVEREDTASKS`
7956      A list of tasks that are typically not relevant (and therefore skipped)
7957      when building using the :ref:`ref-classes-externalsrc`
7958      class. The default value as set in that class file is the set of tasks
7959      that are rarely needed when using external source::
7960
7961         SRCTREECOVEREDTASKS ?= "do_patch do_unpack do_fetch"
7962
7963      The notable exception is when processing external kernel source as
7964      defined in the :ref:`ref-classes-kernel-yocto` class file (formatted for
7965      aesthetics)::
7966
7967         SRCTREECOVEREDTASKS += "\
7968           do_validate_branches \
7969           do_kernel_configcheck \
7970           do_kernel_checkout \
7971           do_fetch \
7972           do_unpack \
7973           do_patch \
7974         "
7975
7976      See the associated :term:`EXTERNALSRC` and :term:`EXTERNALSRC_BUILD`
7977      variables for more information.
7978
7979   :term:`SSTATE_DIR`
7980      The directory for the shared state cache.
7981
7982   :term:`SSTATE_EXCLUDEDEPS_SYSROOT`
7983      This variable allows to specify indirect dependencies to exclude
7984      from sysroots, for example to avoid the situations when a dependency on
7985      any ``-native`` recipe will pull in all dependencies of that recipe
7986      in the recipe sysroot. This behaviour might not always be wanted,
7987      for example when that ``-native`` recipe depends on build tools
7988      that are not relevant for the current recipe.
7989
7990      This way, irrelevant dependencies are ignored, which could have
7991      prevented the reuse of prebuilt artifacts stored in the Shared
7992      State Cache.
7993
7994      :term:`SSTATE_EXCLUDEDEPS_SYSROOT` is evaluated as two regular
7995      expressions of recipe and dependency to ignore. An example
7996      is the rule in :oe_git:`meta/conf/layer.conf </openembedded-core/tree/meta/conf/layer.conf>`::
7997
7998         # Nothing needs to depend on libc-initial
7999         # base-passwd/shadow-sysroot don't need their dependencies
8000         SSTATE_EXCLUDEDEPS_SYSROOT += "\
8001             .*->.*-initial.* \
8002             .*(base-passwd|shadow-sysroot)->.* \
8003         "
8004
8005      The ``->`` substring represents the dependency between
8006      the two regular expressions.
8007
8008   :term:`SSTATE_MIRROR_ALLOW_NETWORK`
8009      If set to "1", allows fetches from mirrors that are specified in
8010      :term:`SSTATE_MIRRORS` to work even when
8011      fetching from the network is disabled by setting :term:`BB_NO_NETWORK` to
8012      "1". Using the :term:`SSTATE_MIRROR_ALLOW_NETWORK` variable is useful if
8013      you have set :term:`SSTATE_MIRRORS` to point to an internal server for
8014      your shared state cache, but you want to disable any other fetching
8015      from the network.
8016
8017   :term:`SSTATE_MIRRORS`
8018      Configures the OpenEmbedded build system to search other mirror
8019      locations for prebuilt cache data objects before building out the
8020      data. This variable works like fetcher :term:`MIRRORS`
8021      and :term:`PREMIRRORS` and points to the cache
8022      locations to check for the shared state (sstate) objects.
8023
8024      You can specify a filesystem directory or a remote URL such as HTTP
8025      or FTP. The locations you specify need to contain the shared state
8026      cache (sstate-cache) results from previous builds. The sstate-cache
8027      you point to can also be from builds on other machines.
8028
8029      When pointing to sstate build artifacts on another machine that uses
8030      a different GCC version for native builds, you must configure
8031      :term:`SSTATE_MIRRORS` with a regular expression that maps local search
8032      paths to server paths. The paths need to take into account
8033      :term:`NATIVELSBSTRING` set by the :ref:`ref-classes-uninative` class.
8034      For example, the following maps the local search path ``universal-4.9``
8035      to the server-provided path server_url_sstate_path::
8036
8037         SSTATE_MIRRORS ?= "file://universal-4.9/(.*) https://server_url_sstate_path/universal-4.8/\1"
8038
8039      If a mirror uses the same structure as
8040      :term:`SSTATE_DIR`, you need to add "PATH" at the
8041      end as shown in the examples below. The build system substitutes the
8042      correct path within the directory structure::
8043
8044         SSTATE_MIRRORS ?= "\
8045             file://.* https://someserver.tld/share/sstate/PATH;downloadfilename=PATH \
8046             file://.* file:///some-local-dir/sstate/PATH"
8047
8048   :term:`SSTATE_SCAN_FILES`
8049      Controls the list of files the OpenEmbedded build system scans for
8050      hardcoded installation paths. The variable uses a space-separated
8051      list of filenames (not paths) with standard wildcard characters
8052      allowed.
8053
8054      During a build, the OpenEmbedded build system creates a shared state
8055      (sstate) object during the first stage of preparing the sysroots.
8056      That object is scanned for hardcoded paths for original installation
8057      locations. The list of files that are scanned for paths is controlled
8058      by the :term:`SSTATE_SCAN_FILES` variable. Typically, recipes add files
8059      they want to be scanned to the value of :term:`SSTATE_SCAN_FILES` rather
8060      than the variable being comprehensively set. The
8061      :ref:`ref-classes-sstate` class specifies the default list of files.
8062
8063      For details on the process, see the :ref:`ref-classes-staging` class.
8064
8065   :term:`STAGING_BASE_LIBDIR_NATIVE`
8066      Specifies the path to the ``/lib`` subdirectory of the sysroot
8067      directory for the build host.
8068
8069   :term:`STAGING_BASELIBDIR`
8070      Specifies the path to the ``/lib`` subdirectory of the sysroot
8071      directory for the target for which the current recipe is being built
8072      (:term:`STAGING_DIR_HOST`).
8073
8074   :term:`STAGING_BINDIR`
8075      Specifies the path to the ``/usr/bin`` subdirectory of the sysroot
8076      directory for the target for which the current recipe is being built
8077      (:term:`STAGING_DIR_HOST`).
8078
8079   :term:`STAGING_BINDIR_CROSS`
8080      Specifies the path to the directory containing binary configuration
8081      scripts. These scripts provide configuration information for other
8082      software that wants to make use of libraries or include files
8083      provided by the software associated with the script.
8084
8085      .. note::
8086
8087         This style of build configuration has been largely replaced by
8088         ``pkg-config``. Consequently, if ``pkg-config`` is supported by the
8089         library to which you are linking, it is recommended you use
8090         ``pkg-config`` instead of a provided configuration script.
8091
8092   :term:`STAGING_BINDIR_NATIVE`
8093      Specifies the path to the ``/usr/bin`` subdirectory of the sysroot
8094      directory for the build host.
8095
8096   :term:`STAGING_DATADIR`
8097      Specifies the path to the ``/usr/share`` subdirectory of the sysroot
8098      directory for the target for which the current recipe is being built
8099      (:term:`STAGING_DIR_HOST`).
8100
8101   :term:`STAGING_DATADIR_NATIVE`
8102      Specifies the path to the ``/usr/share`` subdirectory of the sysroot
8103      directory for the build host.
8104
8105   :term:`STAGING_DIR`
8106      Helps construct the ``recipe-sysroots`` directory, which is used
8107      during packaging.
8108
8109      For information on how staging for recipe-specific sysroots occurs,
8110      see the :ref:`ref-tasks-populate_sysroot`
8111      task, the ":ref:`sdk-manual/extensible:sharing files between recipes`"
8112      section in the Yocto Project Development Tasks Manual, the
8113      ":ref:`overview-manual/concepts:configuration, compilation, and staging`"
8114      section in the Yocto Project Overview and Concepts Manual, and the
8115      :term:`SYSROOT_DIRS` variable.
8116
8117      .. note::
8118
8119         Recipes should never write files directly under the :term:`STAGING_DIR`
8120         directory because the OpenEmbedded build system manages the
8121         directory automatically. Instead, files should be installed to
8122         ``${``\ :term:`D`\ ``}`` within your recipe's :ref:`ref-tasks-install`
8123         task and then the OpenEmbedded build system will stage a subset of
8124         those files into the sysroot.
8125
8126   :term:`STAGING_DIR_HOST`
8127      Specifies the path to the sysroot directory for the system on which
8128      the component is built to run (the system that hosts the component).
8129      For most recipes, this sysroot is the one in which that recipe's
8130      :ref:`ref-tasks-populate_sysroot` task copies
8131      files. Exceptions include ``-native`` recipes, where the
8132      :ref:`ref-tasks-populate_sysroot` task instead uses
8133      :term:`STAGING_DIR_NATIVE`. Depending on
8134      the type of recipe and the build target, :term:`STAGING_DIR_HOST` can
8135      have the following values:
8136
8137      -  For recipes building for the target machine, the value is
8138         "${:term:`STAGING_DIR`}/${:term:`MACHINE`}".
8139
8140      -  For native recipes building for the build host, the value is empty
8141         given the assumption that when building for the build host, the
8142         build host's own directories should be used.
8143
8144         .. note::
8145
8146            ``-native`` recipes are not installed into host paths like such
8147            as ``/usr``. Rather, these recipes are installed into
8148            :term:`STAGING_DIR_NATIVE`. When compiling ``-native`` recipes,
8149            standard build environment variables such as
8150            :term:`CPPFLAGS` and
8151            :term:`CFLAGS` are set up so that both host paths
8152            and :term:`STAGING_DIR_NATIVE` are searched for libraries and
8153            headers using, for example, GCC's ``-isystem`` option.
8154
8155            Thus, the emphasis is that the ``STAGING_DIR*`` variables
8156            should be viewed as input variables by tasks such as
8157            :ref:`ref-tasks-configure`,
8158            :ref:`ref-tasks-compile`, and
8159            :ref:`ref-tasks-install`. Having the real system
8160            root correspond to :term:`STAGING_DIR_HOST` makes conceptual sense
8161            for ``-native`` recipes, as they make use of host headers and
8162            libraries.
8163
8164   :term:`STAGING_DIR_NATIVE`
8165      Specifies the path to the sysroot directory used when building
8166      components that run on the build host itself.
8167
8168   :term:`STAGING_DIR_TARGET`
8169      Specifies the path to the sysroot used for the system for which the
8170      component generates code. For components that do not generate code,
8171      which is the majority, :term:`STAGING_DIR_TARGET` is set to match
8172      :term:`STAGING_DIR_HOST`.
8173
8174      Some recipes build binaries that can run on the target system but those
8175      binaries in turn generate code for another different system (e.g.
8176      :ref:`ref-classes-cross-canadian` recipes). Using terminology from GNU,
8177      the primary system is referred to as the "HOST" and the secondary, or
8178      different, system is referred to as the "TARGET". Thus, the binaries
8179      run on the "HOST" system and generate binaries for the "TARGET"
8180      system. The :term:`STAGING_DIR_HOST` variable points to the sysroot used
8181      for the "HOST" system, while :term:`STAGING_DIR_TARGET` points to the
8182      sysroot used for the "TARGET" system.
8183
8184   :term:`STAGING_ETCDIR_NATIVE`
8185      Specifies the path to the ``/etc`` subdirectory of the sysroot
8186      directory for the build host.
8187
8188   :term:`STAGING_EXECPREFIXDIR`
8189      Specifies the path to the ``/usr`` subdirectory of the sysroot
8190      directory for the target for which the current recipe is being built
8191      (:term:`STAGING_DIR_HOST`).
8192
8193   :term:`STAGING_INCDIR`
8194      Specifies the path to the ``/usr/include`` subdirectory of the
8195      sysroot directory for the target for which the current recipe being
8196      built (:term:`STAGING_DIR_HOST`).
8197
8198   :term:`STAGING_INCDIR_NATIVE`
8199      Specifies the path to the ``/usr/include`` subdirectory of the
8200      sysroot directory for the build host.
8201
8202   :term:`STAGING_KERNEL_BUILDDIR`
8203      Points to the directory containing the kernel build artifacts.
8204      Recipes building software that needs to access kernel build artifacts
8205      (e.g. ``systemtap-uprobes``) can look in the directory specified with
8206      the :term:`STAGING_KERNEL_BUILDDIR` variable to find these artifacts
8207      after the kernel has been built.
8208
8209   :term:`STAGING_KERNEL_DIR`
8210      The directory with kernel headers that are required to build
8211      out-of-tree modules.
8212
8213   :term:`STAGING_LIBDIR`
8214      Specifies the path to the ``/usr/lib`` subdirectory of the sysroot
8215      directory for the target for which the current recipe is being built
8216      (:term:`STAGING_DIR_HOST`).
8217
8218   :term:`STAGING_LIBDIR_NATIVE`
8219      Specifies the path to the ``/usr/lib`` subdirectory of the sysroot
8220      directory for the build host.
8221
8222   :term:`STAMP`
8223      Specifies the base path used to create recipe stamp files. The path
8224      to an actual stamp file is constructed by evaluating this string and
8225      then appending additional information. Currently, the default
8226      assignment for :term:`STAMP` as set in the ``meta/conf/bitbake.conf``
8227      file is::
8228
8229         STAMP = "${STAMPS_DIR}/${MULTIMACH_TARGET_SYS}/${PN}/${EXTENDPE}${PV}-${PR}"
8230
8231      For information on how BitBake uses stamp files to determine if a
8232      task should be rerun, see the
8233      ":ref:`overview-manual/concepts:stamp files and the rerunning of tasks`"
8234      section in the Yocto Project Overview and Concepts Manual.
8235
8236      See :term:`STAMPS_DIR`,
8237      :term:`MULTIMACH_TARGET_SYS`,
8238      :term:`PN`, :term:`EXTENDPE`,
8239      :term:`PV`, and :term:`PR` for related variable
8240      information.
8241
8242   :term:`STAMPCLEAN`
8243      See :term:`bitbake:STAMPCLEAN` in the BitBake manual.
8244
8245   :term:`STAMPS_DIR`
8246      Specifies the base directory in which the OpenEmbedded build system
8247      places stamps. The default directory is ``${TMPDIR}/stamps``.
8248
8249   :term:`STRIP`
8250      The minimal command and arguments to run ``strip``, which is used to
8251      strip symbols.
8252
8253   :term:`SUMMARY`
8254      The short (72 characters or less) summary of the binary package for
8255      packaging systems such as ``opkg``, ``rpm``, or ``dpkg``. By default,
8256      :term:`SUMMARY` is used to define the
8257      :term:`DESCRIPTION` variable if :term:`DESCRIPTION` is
8258      not set in the recipe.
8259
8260   :term:`SVNDIR`
8261      The directory in which files checked out of a Subversion system are
8262      stored.
8263
8264   :term:`SYSLINUX_DEFAULT_CONSOLE`
8265      Specifies the kernel boot default console. If you want to use a
8266      console other than the default, set this variable in your recipe as
8267      follows where "X" is the console number you want to use::
8268
8269         SYSLINUX_DEFAULT_CONSOLE = "console=ttyX"
8270
8271      The :ref:`ref-classes-syslinux` class initially sets
8272      this variable to null but then checks for a value later.
8273
8274   :term:`SYSLINUX_OPTS`
8275      Lists additional options to add to the syslinux file. You need to set
8276      this variable in your recipe. If you want to list multiple options,
8277      separate the options with a semicolon character (``;``).
8278
8279      The :ref:`ref-classes-syslinux` class uses this variable
8280      to create a set of options.
8281
8282   :term:`SYSLINUX_SERIAL`
8283      Specifies the alternate serial port or turns it off. To turn off
8284      serial, set this variable to an empty string in your recipe. The
8285      variable's default value is set in the
8286      :ref:`ref-classes-syslinux` class as follows::
8287
8288         SYSLINUX_SERIAL ?= "0 115200"
8289
8290      The class checks for and uses the variable as needed.
8291
8292   :term:`SYSLINUX_SERIAL_TTY`
8293      Specifies the alternate console=tty... kernel boot argument. The
8294      variable's default value is set in the :ref:`ref-classes-syslinux`
8295      class as follows::
8296
8297         SYSLINUX_SERIAL_TTY ?= "console=ttyS0,115200"
8298
8299      The class checks for and uses the variable as needed.
8300
8301   :term:`SYSLINUX_SPLASH`
8302      An ``.LSS`` file used as the background for the VGA boot menu when
8303      you use the boot menu. You need to set this variable in your recipe.
8304
8305      The :ref:`ref-classes-syslinux` class checks for this
8306      variable and if found, the OpenEmbedded build system installs the
8307      splash screen.
8308
8309   :term:`SYSROOT_DESTDIR`
8310      Points to the temporary directory under the work directory (default
8311      "``${``\ :term:`WORKDIR`\ ``}/sysroot-destdir``")
8312      where the files populated into the sysroot are assembled during the
8313      :ref:`ref-tasks-populate_sysroot` task.
8314
8315   :term:`SYSROOT_DIRS`
8316      Directories that are staged into the sysroot by the
8317      :ref:`ref-tasks-populate_sysroot` task. By
8318      default, the following directories are staged::
8319
8320         SYSROOT_DIRS = " \
8321             ${includedir} \
8322             ${libdir} \
8323             ${base_libdir} \
8324             ${nonarch_base_libdir} \
8325             ${datadir} \
8326             /sysroot-only \
8327             "
8328
8329   :term:`SYSROOT_DIRS_IGNORE`
8330      Directories that are not staged into the sysroot by the
8331      :ref:`ref-tasks-populate_sysroot` task. You
8332      can use this variable to exclude certain subdirectories of
8333      directories listed in :term:`SYSROOT_DIRS` from
8334      staging. By default, the following directories are not staged::
8335
8336         SYSROOT_DIRS_IGNORE = " \
8337             ${mandir} \
8338             ${docdir} \
8339             ${infodir} \
8340             ${datadir}/X11/locale \
8341             ${datadir}/applications \
8342             ${datadir}/bash-completion \
8343             ${datadir}/fonts \
8344             ${datadir}/gtk-doc/html \
8345             ${datadir}/installed-tests \
8346             ${datadir}/locale \
8347             ${datadir}/pixmaps \
8348             ${datadir}/terminfo \
8349             ${libdir}/${BPN}/ptest \
8350             "
8351
8352   :term:`SYSROOT_DIRS_NATIVE`
8353      Extra directories staged into the sysroot by the
8354      :ref:`ref-tasks-populate_sysroot` task for
8355      ``-native`` recipes, in addition to those specified in
8356      :term:`SYSROOT_DIRS`. By default, the following
8357      extra directories are staged::
8358
8359         SYSROOT_DIRS_NATIVE = " \
8360             ${bindir} \
8361             ${sbindir} \
8362             ${base_bindir} \
8363             ${base_sbindir} \
8364             ${libexecdir} \
8365             ${sysconfdir} \
8366             ${localstatedir} \
8367             "
8368
8369      .. note::
8370
8371         Programs built by ``-native`` recipes run directly from the sysroot
8372         (:term:`STAGING_DIR_NATIVE`), which is why additional directories
8373         containing program executables and supporting files need to be staged.
8374
8375   :term:`SYSROOT_PREPROCESS_FUNCS`
8376      A list of functions to execute after files are staged into the
8377      sysroot. These functions are usually used to apply additional
8378      processing on the staged files, or to stage additional files.
8379
8380   :term:`SYSTEMD_AUTO_ENABLE`
8381      When inheriting the :ref:`ref-classes-systemd` class,
8382      this variable specifies whether the specified service in
8383      :term:`SYSTEMD_SERVICE` should start
8384      automatically or not. By default, the service is enabled to
8385      automatically start at boot time. The default setting is in the
8386      :ref:`ref-classes-systemd` class as follows::
8387
8388         SYSTEMD_AUTO_ENABLE ??= "enable"
8389
8390      You can disable the service by setting the variable to "disable".
8391
8392   :term:`SYSTEMD_BOOT_CFG`
8393      When :term:`EFI_PROVIDER` is set to
8394      "systemd-boot", the :term:`SYSTEMD_BOOT_CFG` variable specifies the
8395      configuration file that should be used. By default, the
8396      :ref:`ref-classes-systemd-boot` class sets the
8397      :term:`SYSTEMD_BOOT_CFG` as follows::
8398
8399         SYSTEMD_BOOT_CFG ?= "${S}/loader.conf"
8400
8401      For information on Systemd-boot, see the `Systemd-boot
8402      documentation <https://www.freedesktop.org/wiki/Software/systemd/systemd-boot/>`__.
8403
8404   :term:`SYSTEMD_BOOT_ENTRIES`
8405      When :term:`EFI_PROVIDER` is set to
8406      "systemd-boot", the :term:`SYSTEMD_BOOT_ENTRIES` variable specifies a
8407      list of entry files (``*.conf``) to install that contain one boot
8408      entry per file. By default, the :ref:`ref-classes-systemd-boot` class
8409      sets the :term:`SYSTEMD_BOOT_ENTRIES` as follows::
8410
8411          SYSTEMD_BOOT_ENTRIES ?= ""
8412
8413      For information on Systemd-boot, see the `Systemd-boot
8414      documentation <https://www.freedesktop.org/wiki/Software/systemd/systemd-boot/>`__.
8415
8416   :term:`SYSTEMD_BOOT_TIMEOUT`
8417      When :term:`EFI_PROVIDER` is set to
8418      "systemd-boot", the :term:`SYSTEMD_BOOT_TIMEOUT` variable specifies the
8419      boot menu timeout in seconds. By default, the
8420      :ref:`ref-classes-systemd-boot` class sets the
8421      :term:`SYSTEMD_BOOT_TIMEOUT` as follows::
8422
8423         SYSTEMD_BOOT_TIMEOUT ?= "10"
8424
8425      For information on Systemd-boot, see the `Systemd-boot
8426      documentation <https://www.freedesktop.org/wiki/Software/systemd/systemd-boot/>`__.
8427
8428   :term:`SYSTEMD_DEFAULT_TARGET`
8429
8430      This variable allows to set the default unit that systemd starts at bootup.
8431      Usually, this is either ``multi-user.target`` or ``graphical.target``.
8432      This works by creating a ``default.target`` symbolic link to the chosen systemd
8433      target file.
8434
8435      See `systemd's documentation
8436      <https://www.freedesktop.org/software/systemd/man/systemd.special.html>`__
8437      for details.
8438
8439      For example, this variable is used in the :oe_git:`core-image-minimal-xfce.bb
8440      </meta-openembedded/tree/meta-xfce/recipes-core/images/core-image-minimal-xfce.bb>`
8441      recipe::
8442
8443          SYSTEMD_DEFAULT_TARGET = "graphical.target"
8444
8445   :term:`SYSTEMD_PACKAGES`
8446      When inheriting the :ref:`ref-classes-systemd` class,
8447      this variable locates the systemd unit files when they are not found
8448      in the main recipe's package. By default, the :term:`SYSTEMD_PACKAGES`
8449      variable is set such that the systemd unit files are assumed to
8450      reside in the recipes main package::
8451
8452         SYSTEMD_PACKAGES ?= "${PN}"
8453
8454      If these unit files are not in this recipe's main package, you need
8455      to use :term:`SYSTEMD_PACKAGES` to list the package or packages in which
8456      the build system can find the systemd unit files.
8457
8458   :term:`SYSTEMD_SERVICE`
8459      When inheriting the :ref:`ref-classes-systemd` class,
8460      this variable specifies the systemd service name for a package.
8461
8462      Multiple services can be specified, each one separated by a space.
8463
8464      When you specify this file in your recipe, use a package name
8465      override to indicate the package to which the value applies. Here is
8466      an example from the connman recipe::
8467
8468         SYSTEMD_SERVICE:${PN} = "connman.service"
8469
8470      The package overrides that can be specified are directly related to the value of
8471      :term:`SYSTEMD_PACKAGES`. Overrides not included in :term:`SYSTEMD_PACKAGES`
8472      will be silently ignored.
8473
8474   :term:`SYSVINIT_ENABLED_GETTYS`
8475      When using :ref:`SysVinit <dev-manual/new-recipe:enabling system services>`,
8476      specifies a space-separated list of the virtual terminals that should
8477      run a :wikipedia:`getty <Getty_(Unix)>` (allowing login), assuming
8478      :term:`USE_VT` is not set to "0".
8479
8480      The default value for :term:`SYSVINIT_ENABLED_GETTYS` is "1" (i.e. only
8481      run a getty on the first virtual terminal).
8482
8483   :term:`T`
8484      This variable points to a directory were BitBake places temporary
8485      files, which consist mostly of task logs and scripts, when building a
8486      particular recipe. The variable is typically set as follows::
8487
8488         T = "${WORKDIR}/temp"
8489
8490      The :term:`WORKDIR` is the directory into which
8491      BitBake unpacks and builds the recipe. The default ``bitbake.conf``
8492      file sets this variable.
8493
8494      The :term:`T` variable is not to be confused with the
8495      :term:`TMPDIR` variable, which points to the root of
8496      the directory tree where BitBake places the output of an entire
8497      build.
8498
8499   :term:`TARGET_ARCH`
8500      The target machine's architecture. The OpenEmbedded build system
8501      supports many architectures. Here is an example list of architectures
8502      supported. This list is by no means complete as the architecture is
8503      configurable:
8504
8505      - arm
8506      - i586
8507      - x86_64
8508      - powerpc
8509      - powerpc64
8510      - mips
8511      - mipsel
8512
8513      For additional information on machine architectures, see the
8514      :term:`TUNE_ARCH` variable.
8515
8516   :term:`TARGET_AS_ARCH`
8517      Specifies architecture-specific assembler flags for the target
8518      system. :term:`TARGET_AS_ARCH` is initialized from
8519      :term:`TUNE_ASARGS` by default in the BitBake
8520      configuration file (``meta/conf/bitbake.conf``)::
8521
8522         TARGET_AS_ARCH = "${TUNE_ASARGS}"
8523
8524   :term:`TARGET_CC_ARCH`
8525      Specifies architecture-specific C compiler flags for the target
8526      system. :term:`TARGET_CC_ARCH` is initialized from
8527      :term:`TUNE_CCARGS` by default.
8528
8529      .. note::
8530
8531         It is a common workaround to append :term:`LDFLAGS` to
8532         :term:`TARGET_CC_ARCH` in recipes that build software for the target that
8533         would not otherwise respect the exported :term:`LDFLAGS` variable.
8534
8535   :term:`TARGET_CC_KERNEL_ARCH`
8536      This is a specific kernel compiler flag for a CPU or Application
8537      Binary Interface (ABI) tune. The flag is used rarely and only for
8538      cases where a userspace :term:`TUNE_CCARGS` is not
8539      compatible with the kernel compilation. The :term:`TARGET_CC_KERNEL_ARCH`
8540      variable allows the kernel (and associated modules) to use a
8541      different configuration. See the
8542      ``meta/conf/machine/include/arm/feature-arm-thumb.inc`` file in the
8543      :term:`Source Directory` for an example.
8544
8545   :term:`TARGET_CFLAGS`
8546      Specifies the flags to pass to the C compiler when building for the
8547      target. When building in the target context,
8548      :term:`CFLAGS` is set to the value of this variable by
8549      default.
8550
8551      Additionally, the SDK's environment setup script sets the :term:`CFLAGS`
8552      variable in the environment to the :term:`TARGET_CFLAGS` value so that
8553      executables built using the SDK also have the flags applied.
8554
8555   :term:`TARGET_CPPFLAGS`
8556      Specifies the flags to pass to the C pre-processor (i.e. to both the
8557      C and the C++ compilers) when building for the target. When building
8558      in the target context, :term:`CPPFLAGS` is set to the
8559      value of this variable by default.
8560
8561      Additionally, the SDK's environment setup script sets the
8562      :term:`CPPFLAGS` variable in the environment to the :term:`TARGET_CPPFLAGS`
8563      value so that executables built using the SDK also have the flags
8564      applied.
8565
8566   :term:`TARGET_CXXFLAGS`
8567      Specifies the flags to pass to the C++ compiler when building for the
8568      target. When building in the target context,
8569      :term:`CXXFLAGS` is set to the value of this variable
8570      by default.
8571
8572      Additionally, the SDK's environment setup script sets the
8573      :term:`CXXFLAGS` variable in the environment to the :term:`TARGET_CXXFLAGS`
8574      value so that executables built using the SDK also have the flags
8575      applied.
8576
8577   :term:`TARGET_FPU`
8578      Specifies the method for handling FPU code. For FPU-less targets,
8579      which include most ARM CPUs, the variable must be set to "soft". If
8580      not, the kernel emulation gets used, which results in a performance
8581      penalty.
8582
8583   :term:`TARGET_LD_ARCH`
8584      Specifies architecture-specific linker flags for the target system.
8585      :term:`TARGET_LD_ARCH` is initialized from
8586      :term:`TUNE_LDARGS` by default in the BitBake
8587      configuration file (``meta/conf/bitbake.conf``)::
8588
8589         TARGET_LD_ARCH = "${TUNE_LDARGS}"
8590
8591   :term:`TARGET_LDFLAGS`
8592      Specifies the flags to pass to the linker when building for the
8593      target. When building in the target context,
8594      :term:`LDFLAGS` is set to the value of this variable
8595      by default.
8596
8597      Additionally, the SDK's environment setup script sets the
8598      :term:`LDFLAGS` variable in the environment to the
8599      :term:`TARGET_LDFLAGS` value so that executables built using the SDK also
8600      have the flags applied.
8601
8602   :term:`TARGET_OS`
8603      Specifies the target's operating system. The variable can be set to
8604      "linux" for glibc-based systems (GNU C Library) and to "linux-musl"
8605      for musl libc. For ARM/EABI targets, the possible values are
8606      "linux-gnueabi" and "linux-musleabi".
8607
8608   :term:`TARGET_PREFIX`
8609      Specifies the prefix used for the toolchain binary target tools.
8610
8611      Depending on the type of recipe and the build target,
8612      :term:`TARGET_PREFIX` is set as follows:
8613
8614      -  For recipes building for the target machine, the value is
8615         "${:term:`TARGET_SYS`}-".
8616
8617      -  For native recipes, the build system sets the variable to the
8618         value of :term:`BUILD_PREFIX`.
8619
8620      -  For native SDK recipes (:ref:`ref-classes-nativesdk`),
8621         the build system sets the variable to the value of :term:`SDK_PREFIX`.
8622
8623   :term:`TARGET_SYS`
8624      Specifies the system, including the architecture and the operating
8625      system, for which the build is occurring in the context of the
8626      current recipe.
8627
8628      The OpenEmbedded build system automatically sets this variable based
8629      on :term:`TARGET_ARCH`,
8630      :term:`TARGET_VENDOR`, and
8631      :term:`TARGET_OS` variables.
8632
8633      .. note::
8634
8635         You do not need to set the :term:`TARGET_SYS` variable yourself.
8636
8637      Consider these two examples:
8638
8639      -  Given a native recipe on a 32-bit, x86 machine running Linux, the
8640         value is "i686-linux".
8641
8642      -  Given a recipe being built for a little-endian, MIPS target
8643         running Linux, the value might be "mipsel-linux".
8644
8645   :term:`TARGET_VENDOR`
8646      Specifies the name of the target vendor.
8647
8648   :term:`TCLIBC`
8649      Specifies the GNU standard C library (``libc``) variant to use during
8650      the build process.
8651
8652      You can select "glibc", "musl", "newlib", or "baremetal".
8653
8654   :term:`TCLIBCAPPEND`
8655      Specifies a suffix to be appended onto the :term:`TMPDIR` value. The
8656      suffix identifies the ``libc`` variant for building. When you are
8657      building for multiple variants with the same :term:`Build Directory`,
8658      this mechanism ensures that output for different ``libc`` variants is
8659      kept separate to avoid potential conflicts.
8660
8661      In the ``defaultsetup.conf`` file, the default value of
8662      :term:`TCLIBCAPPEND` is "-${TCLIBC}". However, distros such as poky,
8663      which normally only support one ``libc`` variant, set
8664      :term:`TCLIBCAPPEND` to "" in their distro configuration file resulting
8665      in no suffix being applied.
8666
8667   :term:`TCMODE`
8668      Specifies the toolchain selector. :term:`TCMODE` controls the
8669      characteristics of the generated packages and images by telling the
8670      OpenEmbedded build system which toolchain profile to use. By default,
8671      the OpenEmbedded build system builds its own internal toolchain. The
8672      variable's default value is "default", which uses that internal
8673      toolchain.
8674
8675      .. note::
8676
8677         If :term:`TCMODE` is set to a value other than "default", then it is your
8678         responsibility to ensure that the toolchain is compatible with the
8679         default toolchain. Using older or newer versions of these
8680         components might cause build problems. See
8681         :doc:`Release Information </migration-guides/index>` for your
8682         version of the Yocto Project, to find the specific components with
8683         which the toolchain must be compatible.
8684
8685      The :term:`TCMODE` variable is similar to :term:`TCLIBC`,
8686      which controls the variant of the GNU standard C library (``libc``)
8687      used during the build process: ``glibc`` or ``musl``.
8688
8689      With additional layers, it is possible to use a pre-compiled external
8690      toolchain. One example is the Sourcery G++ Toolchain. The support for
8691      this toolchain resides in the separate Mentor Graphics
8692      ``meta-sourcery`` layer at
8693      https://github.com/MentorEmbedded/meta-sourcery/.
8694
8695      The layer's ``README`` file contains information on how to use the
8696      Sourcery G++ Toolchain as an external toolchain. You will have to
8697      add the layer to your ``bblayers.conf`` file and then set the
8698      :term:`EXTERNAL_TOOLCHAIN` variable in your ``local.conf`` file to
8699      the location of the toolchain.
8700
8701      The fundamentals used for this example apply to any external
8702      toolchain. You can use ``meta-sourcery`` as a template for adding
8703      support for other external toolchains.
8704
8705      In addition to toolchain configuration, you will also need a
8706      corresponding toolchain recipe file. This recipe file needs to package
8707      up any pre-built objects in the toolchain such as ``libgcc``,
8708      ``libstdcc++``, any locales, and ``libc``.
8709
8710   :term:`TC_CXX_RUNTIME`
8711      Specifies the C/C++ STL and runtime variant to use during
8712      the build process. Default value is 'gnu'
8713
8714      You can select "gnu", "llvm", or "android".
8715
8716   :term:`TEMPLATECONF`
8717      Specifies the directory used by the build system to find templates
8718      from which to build the ``bblayers.conf`` and ``local.conf`` files.
8719      Use this variable if you wish to customize such files, and the default
8720      BitBake targets shown when sourcing the ``oe-init-build-env`` script.
8721
8722      For details, see the
8723      :ref:`dev-manual/custom-template-configuration-directory:creating a custom template configuration directory`
8724      section in the Yocto Project Development Tasks manual.
8725
8726      .. note::
8727
8728         You must set this variable in the external environment in order
8729         for it to work.
8730
8731   :term:`TEST_EXPORT_DIR`
8732      The location the OpenEmbedded build system uses to export tests when
8733      the :term:`TEST_EXPORT_ONLY` variable is set
8734      to "1".
8735
8736      The :term:`TEST_EXPORT_DIR` variable defaults to
8737      ``"${TMPDIR}/testimage/${PN}"``.
8738
8739   :term:`TEST_EXPORT_ONLY`
8740      Specifies to export the tests only. Set this variable to "1" if you
8741      do not want to run the tests but you want them to be exported in a
8742      manner that you to run them outside of the build system.
8743
8744   :term:`TEST_LOG_DIR`
8745      Holds the SSH log and the boot log for QEMU machines. The
8746      :term:`TEST_LOG_DIR` variable defaults to ``"${WORKDIR}/testimage"``.
8747
8748      .. note::
8749
8750         Actual test results reside in the task log (``log.do_testimage``),
8751         which is in the ``${WORKDIR}/temp/`` directory.
8752
8753   :term:`TEST_POWERCONTROL_CMD`
8754      For automated hardware testing, specifies the command to use to
8755      control the power of the target machine under test. Typically, this
8756      command would point to a script that performs the appropriate action
8757      (e.g. interacting with a web-enabled power strip). The specified
8758      command should expect to receive as the last argument "off", "on" or
8759      "cycle" specifying to power off, on, or cycle (power off and then
8760      power on) the device, respectively.
8761
8762   :term:`TEST_POWERCONTROL_EXTRA_ARGS`
8763      For automated hardware testing, specifies additional arguments to
8764      pass through to the command specified in
8765      :term:`TEST_POWERCONTROL_CMD`. Setting
8766      :term:`TEST_POWERCONTROL_EXTRA_ARGS` is optional. You can use it if you
8767      wish, for example, to separate the machine-specific and
8768      non-machine-specific parts of the arguments.
8769
8770   :term:`TEST_QEMUBOOT_TIMEOUT`
8771      The time in seconds allowed for an image to boot before automated
8772      runtime tests begin to run against an image. The default timeout
8773      period to allow the boot process to reach the login prompt is 500
8774      seconds. You can specify a different value in the ``local.conf``
8775      file.
8776
8777      For more information on testing images, see the
8778      ":ref:`dev-manual/runtime-testing:performing automated runtime testing`"
8779      section in the Yocto Project Development Tasks Manual.
8780
8781   :term:`TEST_SERIALCONTROL_CMD`
8782      For automated hardware testing, specifies the command to use to
8783      connect to the serial console of the target machine under test. This
8784      command simply needs to connect to the serial console and forward
8785      that connection to standard input and output as any normal terminal
8786      program does.
8787
8788      For example, to use the Picocom terminal program on serial device
8789      ``/dev/ttyUSB0`` at 115200bps, you would set the variable as follows::
8790
8791         TEST_SERIALCONTROL_CMD = "picocom /dev/ttyUSB0 -b 115200"
8792
8793   :term:`TEST_SERIALCONTROL_EXTRA_ARGS`
8794      For automated hardware testing, specifies additional arguments to
8795      pass through to the command specified in
8796      :term:`TEST_SERIALCONTROL_CMD`. Setting
8797      :term:`TEST_SERIALCONTROL_EXTRA_ARGS` is optional. You can use it if you
8798      wish, for example, to separate the machine-specific and
8799      non-machine-specific parts of the command.
8800
8801   :term:`TEST_SERVER_IP`
8802      The IP address of the build machine (host machine). This IP address
8803      is usually automatically detected. However, if detection fails, this
8804      variable needs to be set to the IP address of the build machine (i.e.
8805      where the build is taking place).
8806
8807      .. note::
8808
8809         The :term:`TEST_SERVER_IP` variable is only used for a small number of
8810         tests such as the "dnf" test suite, which needs to download packages
8811         from ``WORKDIR/oe-rootfs-repo``.
8812
8813   :term:`TEST_SUITES`
8814      An ordered list of tests (modules) to run against an image when
8815      performing automated runtime testing.
8816
8817      The OpenEmbedded build system provides a core set of tests that can
8818      be used against images.
8819
8820      .. note::
8821
8822         Currently, there is only support for running these tests under
8823         QEMU.
8824
8825      Tests include ``ping``, ``ssh``, ``df`` among others. You can add
8826      your own tests to the list of tests by appending :term:`TEST_SUITES` as
8827      follows::
8828
8829         TEST_SUITES:append = " mytest"
8830
8831      Alternatively, you can
8832      provide the "auto" option to have all applicable tests run against
8833      the image::
8834
8835         TEST_SUITES:append = " auto"
8836
8837      Using this option causes the
8838      build system to automatically run tests that are applicable to the
8839      image. Tests that are not applicable are skipped.
8840
8841      The order in which tests are run is important. Tests that depend on
8842      another test must appear later in the list than the test on which
8843      they depend. For example, if you append the list of tests with two
8844      tests (``test_A`` and ``test_B``) where ``test_B`` is dependent on
8845      ``test_A``, then you must order the tests as follows::
8846
8847         TEST_SUITES = "test_A test_B"
8848
8849      For more information on testing images, see the
8850      ":ref:`dev-manual/runtime-testing:performing automated runtime testing`"
8851      section in the Yocto Project Development Tasks Manual.
8852
8853   :term:`TEST_TARGET`
8854      Specifies the target controller to use when running tests against a
8855      test image. The default controller to use is "qemu"::
8856
8857         TEST_TARGET = "qemu"
8858
8859      A target controller is a class that defines how an image gets
8860      deployed on a target and how a target is started. A layer can extend
8861      the controllers by adding a module in the layer's
8862      ``/lib/oeqa/controllers`` directory and by inheriting the
8863      ``BaseTarget`` class, which is an abstract class that cannot be used
8864      as a value of :term:`TEST_TARGET`.
8865
8866      You can provide the following arguments with :term:`TEST_TARGET`:
8867
8868      -  *"qemu":* Boots a QEMU image and runs the tests. See the
8869         ":ref:`dev-manual/runtime-testing:enabling runtime tests on qemu`" section
8870         in the Yocto Project Development Tasks Manual for more
8871         information.
8872
8873      -  *"simpleremote":* Runs the tests on target hardware that is
8874         already up and running. The hardware can be on the network or it
8875         can be a device running an image on QEMU. You must also set
8876         :term:`TEST_TARGET_IP` when you use
8877         "simpleremote".
8878
8879         .. note::
8880
8881            This argument is defined in
8882            ``meta/lib/oeqa/controllers/simpleremote.py``.
8883
8884      For information on running tests on hardware, see the
8885      ":ref:`dev-manual/runtime-testing:enabling runtime tests on hardware`"
8886      section in the Yocto Project Development Tasks Manual.
8887
8888   :term:`TEST_TARGET_IP`
8889      The IP address of your hardware under test. The :term:`TEST_TARGET_IP`
8890      variable has no effect when :term:`TEST_TARGET` is
8891      set to "qemu".
8892
8893      When you specify the IP address, you can also include a port. Here is
8894      an example::
8895
8896         TEST_TARGET_IP = "192.168.1.4:2201"
8897
8898      Specifying a port is
8899      useful when SSH is started on a non-standard port or in cases when
8900      your hardware under test is behind a firewall or network that is not
8901      directly accessible from your host and you need to do port address
8902      translation.
8903
8904   :term:`TESTIMAGE_AUTO`
8905      Automatically runs the series of automated tests for images when an
8906      image is successfully built. Setting :term:`TESTIMAGE_AUTO` to "1" causes
8907      any image that successfully builds to automatically boot under QEMU.
8908      Using the variable also adds in dependencies so that any SDK for
8909      which testing is requested is automatically built first.
8910
8911      These tests are written in Python making use of the ``unittest``
8912      module, and the majority of them run commands on the target system
8913      over ``ssh``. You can set this variable to "1" in your ``local.conf``
8914      file in the :term:`Build Directory` to have the
8915      OpenEmbedded build system automatically run these tests after an
8916      image successfully builds:
8917
8918         TESTIMAGE_AUTO = "1"
8919
8920      For more information
8921      on enabling, running, and writing these tests, see the
8922      ":ref:`dev-manual/runtime-testing:performing automated runtime testing`"
8923      section in the Yocto Project Development Tasks Manual and the
8924      ":ref:`ref-classes-testimage`" section.
8925
8926   :term:`THISDIR`
8927      The directory in which the file BitBake is currently parsing is
8928      located. Do not manually set this variable.
8929
8930   :term:`TIME`
8931      The time the build was started. Times appear using the hour, minute,
8932      and second (HMS) format (e.g. "140159" for one minute and fifty-nine
8933      seconds past 1400 hours).
8934
8935   :term:`TMPDIR`
8936      This variable is the base directory the OpenEmbedded build system
8937      uses for all build output and intermediate files (other than the
8938      shared state cache). By default, the :term:`TMPDIR` variable points to
8939      ``tmp`` within the :term:`Build Directory`.
8940
8941      If you want to establish this directory in a location other than the
8942      default, you can uncomment and edit the following statement in the
8943      ``conf/local.conf`` file in the :term:`Source Directory`::
8944
8945         #TMPDIR = "${TOPDIR}/tmp"
8946
8947      An example use for this scenario is to set :term:`TMPDIR` to a local disk,
8948      which does not use NFS, while having the :term:`Build Directory` use NFS.
8949
8950      The filesystem used by :term:`TMPDIR` must have standard filesystem
8951      semantics (i.e. mixed-case files are unique, POSIX file locking, and
8952      persistent inodes). Due to various issues with NFS and bugs in some
8953      implementations, NFS does not meet this minimum requirement.
8954      Consequently, :term:`TMPDIR` cannot be on NFS.
8955
8956   :term:`TOOLCHAIN_HOST_TASK`
8957      This variable lists packages the OpenEmbedded build system uses when
8958      building an SDK, which contains a cross-development environment. The
8959      packages specified by this variable are part of the toolchain set
8960      that runs on the :term:`SDKMACHINE`, and each
8961      package should usually have the prefix ``nativesdk-``. For example,
8962      consider the following command when building an SDK::
8963
8964         $ bitbake -c populate_sdk imagename
8965
8966      In this case, a default list of packages is
8967      set in this variable, but you can add additional packages to the
8968      list. See the
8969      ":ref:`sdk-manual/appendix-customizing-standard:adding individual packages to the standard sdk`" section
8970      in the Yocto Project Application Development and the Extensible
8971      Software Development Kit (eSDK) manual for more information.
8972
8973      For background information on cross-development toolchains in the
8974      Yocto Project development environment, see the
8975      ":ref:`sdk-manual/intro:the cross-development toolchain`"
8976      section in the Yocto Project Overview and Concepts Manual. For
8977      information on setting up a cross-development environment, see the
8978      :doc:`/sdk-manual/index` manual.
8979
8980      Note that this variable applies to building an SDK, not an eSDK,
8981      in which case the :term:`TOOLCHAIN_HOST_TASK_ESDK` setting should be
8982      used instead.
8983
8984   :term:`TOOLCHAIN_HOST_TASK_ESDK`
8985      This variable allows to extend what is installed in the host
8986      portion of an eSDK. This is similar to :term:`TOOLCHAIN_HOST_TASK`
8987      applying to SDKs.
8988
8989   :term:`TOOLCHAIN_OUTPUTNAME`
8990      This variable defines the name used for the toolchain output. The
8991      :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class sets
8992      the :term:`TOOLCHAIN_OUTPUTNAME` variable as follows::
8993
8994         TOOLCHAIN_OUTPUTNAME ?= "${SDK_NAME}-toolchain-${SDK_VERSION}"
8995
8996      See
8997      the :term:`SDK_NAME` and
8998      :term:`SDK_VERSION` variables for additional
8999      information.
9000
9001   :term:`TOOLCHAIN_TARGET_TASK`
9002      This variable lists packages the OpenEmbedded build system uses when
9003      it creates the target part of an SDK (i.e. the part built for the
9004      target hardware), which includes libraries and headers. Use this
9005      variable to add individual packages to the part of the SDK that runs
9006      on the target. See the
9007      ":ref:`sdk-manual/appendix-customizing-standard:adding individual packages to the standard sdk`" section
9008      in the Yocto Project Application Development and the Extensible
9009      Software Development Kit (eSDK) manual for more information.
9010
9011      For background information on cross-development toolchains in the
9012      Yocto Project development environment, see the
9013      ":ref:`sdk-manual/intro:the cross-development toolchain`"
9014      section in the Yocto Project Overview and Concepts Manual. For
9015      information on setting up a cross-development environment, see the
9016      :doc:`/sdk-manual/index` manual.
9017
9018   :term:`TOPDIR`
9019      See :term:`bitbake:TOPDIR` in the BitBake manual.
9020
9021   :term:`TRANSLATED_TARGET_ARCH`
9022      A sanitized version of :term:`TARGET_ARCH`. This
9023      variable is used where the architecture is needed in a value where
9024      underscores are not allowed, for example within package filenames. In
9025      this case, dash characters replace any underscore characters used in
9026      :term:`TARGET_ARCH`.
9027
9028      Do not edit this variable.
9029
9030   :term:`TUNE_ARCH`
9031      The GNU canonical architecture for a specific architecture (i.e.
9032      ``arm``, ``armeb``, ``mips``, ``mips64``, and so forth). BitBake uses
9033      this value to setup configuration.
9034
9035      :term:`TUNE_ARCH` definitions are specific to a given architecture. The
9036      definitions can be a single static definition, or can be dynamically
9037      adjusted. You can see details for a given CPU family by looking at
9038      the architecture's ``README`` file. For example, the
9039      ``meta/conf/machine/include/mips/README`` file in the
9040      :term:`Source Directory` provides information for
9041      :term:`TUNE_ARCH` specific to the ``mips`` architecture.
9042
9043      :term:`TUNE_ARCH` is tied closely to
9044      :term:`TARGET_ARCH`, which defines the target
9045      machine's architecture. The BitBake configuration file
9046      (``meta/conf/bitbake.conf``) sets :term:`TARGET_ARCH` as follows::
9047
9048         TARGET_ARCH = "${TUNE_ARCH}"
9049
9050      The following list, which is by no means complete since architectures
9051      are configurable, shows supported machine architectures:
9052
9053      - arm
9054      - i586
9055      - x86_64
9056      - powerpc
9057      - powerpc64
9058      - mips
9059      - mipsel
9060
9061   :term:`TUNE_ASARGS`
9062      Specifies architecture-specific assembler flags for the target
9063      system. The set of flags is based on the selected tune features.
9064      :term:`TUNE_ASARGS` is set using the tune include files, which are
9065      typically under ``meta/conf/machine/include/`` and are influenced
9066      through :term:`TUNE_FEATURES`. For example, the
9067      ``meta/conf/machine/include/x86/arch-x86.inc`` file defines the flags
9068      for the x86 architecture as follows::
9069
9070         TUNE_ASARGS += "${@bb.utils.contains("TUNE_FEATURES", "mx32", "-x32", "", d)}"
9071
9072      .. note::
9073
9074         Board Support Packages (BSPs) select the tune. The selected tune,
9075         in turn, affects the tune variables themselves (i.e. the tune can
9076         supply its own set of flags).
9077
9078   :term:`TUNE_CCARGS`
9079      Specifies architecture-specific C compiler flags for the target
9080      system. The set of flags is based on the selected tune features.
9081      :term:`TUNE_CCARGS` is set using the tune include files, which are
9082      typically under ``meta/conf/machine/include/`` and are influenced
9083      through :term:`TUNE_FEATURES`.
9084
9085      .. note::
9086
9087         Board Support Packages (BSPs) select the tune. The selected tune,
9088         in turn, affects the tune variables themselves (i.e. the tune can
9089         supply its own set of flags).
9090
9091   :term:`TUNE_FEATURES`
9092      Features used to "tune" a compiler for optimal use given a specific
9093      processor. The features are defined within the tune files and allow
9094      arguments (i.e. ``TUNE_*ARGS``) to be dynamically generated based on
9095      the features.
9096
9097      The OpenEmbedded build system verifies the features to be sure they
9098      are not conflicting and that they are supported.
9099
9100      The BitBake configuration file (``meta/conf/bitbake.conf``) defines
9101      :term:`TUNE_FEATURES` as follows::
9102
9103         TUNE_FEATURES ??= "${TUNE_FEATURES:tune-${DEFAULTTUNE}}"
9104
9105      See the :term:`DEFAULTTUNE` variable for more information.
9106
9107   :term:`TUNE_LDARGS`
9108      Specifies architecture-specific linker flags for the target system.
9109      The set of flags is based on the selected tune features.
9110      :term:`TUNE_LDARGS` is set using the tune include files, which are
9111      typically under ``meta/conf/machine/include/`` and are influenced
9112      through :term:`TUNE_FEATURES`. For example, the
9113      ``meta/conf/machine/include/x86/arch-x86.inc`` file defines the flags
9114      for the x86 architecture as follows::
9115
9116         TUNE_LDARGS += "${@bb.utils.contains("TUNE_FEATURES", "mx32", "-m elf32_x86_64", "", d)}"
9117
9118      .. note::
9119
9120         Board Support Packages (BSPs) select the tune. The selected tune,
9121         in turn, affects the tune variables themselves (i.e. the tune can
9122         supply its own set of flags).
9123
9124   :term:`TUNE_PKGARCH`
9125      The package architecture understood by the packaging system to define
9126      the architecture, ABI, and tuning of output packages. The specific
9127      tune is defined using the "_tune" override as follows::
9128
9129         TUNE_PKGARCH:tune-tune = "tune"
9130
9131      These tune-specific package architectures are defined in the machine
9132      include files. Here is an example of the "core2-32" tuning as used in
9133      the ``meta/conf/machine/include/x86/tune-core2.inc`` file::
9134
9135         TUNE_PKGARCH:tune-core2-32 = "core2-32"
9136
9137   :term:`TUNECONFLICTS[feature]`
9138      Specifies CPU or Application Binary Interface (ABI) tuning features
9139      that conflict with feature.
9140
9141      Known tuning conflicts are specified in the machine include files in
9142      the :term:`Source Directory`. Here is an example from
9143      the ``meta/conf/machine/include/mips/arch-mips.inc`` include file
9144      that lists the "o32" and "n64" features as conflicting with the "n32"
9145      feature::
9146
9147         TUNECONFLICTS[n32] = "o32 n64"
9148
9149   :term:`TUNEVALID[feature]`
9150      Specifies a valid CPU or Application Binary Interface (ABI) tuning
9151      feature. The specified feature is stored as a flag. Valid features
9152      are specified in the machine include files (e.g.
9153      ``meta/conf/machine/include/arm/arch-arm.inc``). Here is an example
9154      from that file::
9155
9156         TUNEVALID[bigendian] = "Enable big-endian mode."
9157
9158      See the machine include files in the :term:`Source Directory`
9159      for these features.
9160
9161   :term:`UBOOT_CONFIG`
9162      Configures the :term:`UBOOT_MACHINE` and can
9163      also define :term:`IMAGE_FSTYPES` for individual
9164      cases.
9165
9166      Following is an example from the ``meta-fsl-arm`` layer. ::
9167
9168         UBOOT_CONFIG ??= "sd"
9169         UBOOT_CONFIG[sd] = "mx6qsabreauto_config,sdcard"
9170         UBOOT_CONFIG[eimnor] = "mx6qsabreauto_eimnor_config"
9171         UBOOT_CONFIG[nand] = "mx6qsabreauto_nand_config,ubifs"
9172         UBOOT_CONFIG[spinor] = "mx6qsabreauto_spinor_config"
9173
9174      In this example, "sd" is selected as the configuration of the possible four for the
9175      :term:`UBOOT_MACHINE`. The "sd" configuration defines
9176      "mx6qsabreauto_config" as the value for :term:`UBOOT_MACHINE`, while the
9177      "sdcard" specifies the :term:`IMAGE_FSTYPES` to use for the U-Boot image.
9178
9179      For more information on how the :term:`UBOOT_CONFIG` is handled, see the
9180      :ref:`ref-classes-uboot-config` class.
9181
9182   :term:`UBOOT_DTB_LOADADDRESS`
9183      Specifies the load address for the dtb image used by U-Boot. During FIT
9184      image creation, the :term:`UBOOT_DTB_LOADADDRESS` variable is used in
9185      :ref:`ref-classes-kernel-fitimage` class to specify the load address to be
9186      used in creating the dtb sections of Image Tree Source for the FIT image.
9187
9188   :term:`UBOOT_DTBO_LOADADDRESS`
9189      Specifies the load address for the dtbo image used by U-Boot.  During FIT
9190      image creation, the :term:`UBOOT_DTBO_LOADADDRESS` variable is used in
9191      :ref:`ref-classes-kernel-fitimage` class to specify the load address to be
9192      used in creating the dtbo sections of Image Tree Source for the FIT image.
9193
9194   :term:`UBOOT_ENTRYPOINT`
9195      Specifies the entry point for the U-Boot image. During U-Boot image
9196      creation, the :term:`UBOOT_ENTRYPOINT` variable is passed as a
9197      command-line parameter to the ``uboot-mkimage`` utility.
9198
9199      To pass a 64 bit address for FIT image creation, you will need to set:
9200      -  The :term:`FIT_ADDRESS_CELLS` variable for FIT image creation.
9201      -  The :term:`UBOOT_FIT_ADDRESS_CELLS` variable for U-Boot FIT image creation.
9202
9203      This variable is used by the :ref:`ref-classes-kernel-fitimage`,
9204      :ref:`ref-classes-kernel-uimage`, :ref:`ref-classes-kernel`,
9205      :ref:`ref-classes-uboot-config` and :ref:`ref-classes-uboot-sign`
9206      classes.
9207
9208   :term:`UBOOT_FIT_ADDRESS_CELLS`
9209      Specifies the value of the ``#address-cells`` value for the
9210      description of the U-Boot FIT image.
9211
9212      The default value is set to "1" by the :ref:`ref-classes-uboot-sign`
9213      class, which corresponds to 32 bit addresses.
9214
9215      For platforms that need to set 64 bit addresses in
9216      :term:`UBOOT_LOADADDRESS` and :term:`UBOOT_ENTRYPOINT`, you need to
9217      set this value to "2", as two 32 bit values (cells) will be needed
9218      to represent such addresses.
9219
9220      Here is an example setting "0x400000000" as a load address::
9221
9222         UBOOT_FIT_ADDRESS_CELLS = "2"
9223         UBOOT_LOADADDRESS= "0x04 0x00000000"
9224
9225      See `more details about #address-cells <https://elinux.org/Device_Tree_Usage#How_Addressing_Works>`__.
9226
9227   :term:`UBOOT_FIT_DESC`
9228      Specifies the description string encoded into a U-Boot fitImage. The default
9229      value is set by the :ref:`ref-classes-uboot-sign` class as follows::
9230
9231         UBOOT_FIT_DESC ?= "U-Boot fitImage for ${DISTRO_NAME}/${PV}/${MACHINE}"
9232
9233   :term:`UBOOT_FIT_GENERATE_KEYS`
9234      Decides whether to generate the keys for signing the U-Boot fitImage if
9235      they don't already exist. The keys are created in :term:`SPL_SIGN_KEYDIR`.
9236      The default value is "0".
9237
9238      Enable this as follows::
9239
9240         UBOOT_FIT_GENERATE_KEYS = "1"
9241
9242      This variable is used in the :ref:`ref-classes-uboot-sign` class.
9243
9244   :term:`UBOOT_FIT_HASH_ALG`
9245      Specifies the hash algorithm used in creating the U-Boot FIT Image.
9246      It is set by default to ``sha256`` by the :ref:`ref-classes-uboot-sign`
9247      class.
9248
9249   :term:`UBOOT_FIT_KEY_GENRSA_ARGS`
9250      Arguments to ``openssl genrsa`` for generating a RSA private key for
9251      signing the U-Boot FIT image. The default value of this variable
9252      is set to "-F4" by the :ref:`ref-classes-uboot-sign` class.
9253
9254   :term:`UBOOT_FIT_KEY_REQ_ARGS`
9255      Arguments to ``openssl req`` for generating a certificate for signing
9256      the U-Boot FIT image. The default value is "-batch -new" by the
9257      :ref:`ref-classes-uboot-sign` class, "batch" for
9258      non interactive mode and "new" for generating new keys.
9259
9260   :term:`UBOOT_FIT_KEY_SIGN_PKCS`
9261      Format for the public key certificate used for signing the U-Boot FIT
9262      image. The default value is set to "x509" by the
9263      :ref:`ref-classes-uboot-sign` class.
9264
9265   :term:`UBOOT_FIT_SIGN_ALG`
9266      Specifies the signature algorithm used in creating the U-Boot FIT Image.
9267      This variable is set by default to "rsa2048" by the
9268      :ref:`ref-classes-uboot-sign` class.
9269
9270   :term:`UBOOT_FIT_SIGN_NUMBITS`
9271      Size of the private key used in signing the U-Boot FIT image, in number
9272      of bits. The default value for this variable is set to "2048"
9273      by the :ref:`ref-classes-uboot-sign` class.
9274
9275   :term:`UBOOT_FITIMAGE_ENABLE`
9276      This variable allows to generate a FIT image for U-Boot, which is one
9277      of the ways to implement a verified boot process.
9278
9279      Its default value is "0", so set it to "1" to enable this functionality::
9280
9281         UBOOT_FITIMAGE_ENABLE = "1"
9282
9283      See the :ref:`ref-classes-uboot-sign` class for details.
9284
9285   :term:`UBOOT_LOADADDRESS`
9286      Specifies the load address for the U-Boot image. During U-Boot image
9287      creation, the :term:`UBOOT_LOADADDRESS` variable is passed as a
9288      command-line parameter to the ``uboot-mkimage`` utility.
9289
9290      To pass a 64 bit address, you will also need to set:
9291
9292      -  The :term:`FIT_ADDRESS_CELLS` variable for FIT image creation.
9293      -  The :term:`UBOOT_FIT_ADDRESS_CELLS` variable for U-Boot FIT image creation.
9294
9295      This variable is used by the :ref:`ref-classes-kernel-fitimage`,
9296      :ref:`ref-classes-kernel-uimage`, :ref:`ref-classes-kernel`,
9297      :ref:`ref-classes-uboot-config` and :ref:`ref-classes-uboot-sign`
9298      classes.
9299
9300   :term:`UBOOT_LOCALVERSION`
9301      Appends a string to the name of the local version of the U-Boot
9302      image. For example, assuming the version of the U-Boot image built
9303      was "2013.10", the full version string reported by U-Boot would be
9304      "2013.10-yocto" given the following statement::
9305
9306         UBOOT_LOCALVERSION = "-yocto"
9307
9308   :term:`UBOOT_MACHINE`
9309      Specifies the value passed on the ``make`` command line when building
9310      a U-Boot image. The value indicates the target platform
9311      configuration. You typically set this variable from the machine
9312      configuration file (i.e. ``conf/machine/machine_name.conf``).
9313
9314      Please see the "Selection of Processor Architecture and Board Type"
9315      section in the U-Boot README for valid values for this variable.
9316
9317   :term:`UBOOT_MAKE_TARGET`
9318      Specifies the target called in the ``Makefile``. The default target
9319      is "all".
9320
9321   :term:`UBOOT_MKIMAGE`
9322      Specifies the name of the mkimage command as used by the
9323      :ref:`ref-classes-kernel-fitimage` class to assemble
9324      the FIT image. This can be used to substitute an alternative command, wrapper
9325      script or function if desired. The default is "uboot-mkimage".
9326
9327   :term:`UBOOT_MKIMAGE_DTCOPTS`
9328      Options for the device tree compiler passed to ``mkimage -D`` feature
9329      while creating a FIT image with the :ref:`ref-classes-kernel-fitimage`
9330      class. If :term:`UBOOT_MKIMAGE_DTCOPTS` is not set then the
9331      :ref:`ref-classes-kernel-fitimage` class will not pass the ``-D`` option
9332      to ``mkimage``.
9333
9334      This variable is also used by the :ref:`ref-classes-uboot-sign` class.
9335
9336   :term:`UBOOT_MKIMAGE_KERNEL_TYPE`
9337      Specifies the type argument for the kernel as passed to ``uboot-mkimage``.
9338      The default value is "kernel".
9339
9340   :term:`UBOOT_MKIMAGE_SIGN`
9341      Specifies the name of the mkimage command as used by the
9342      :ref:`ref-classes-kernel-fitimage` class to sign
9343      the FIT image after it has been assembled (if enabled). This can be used
9344      to substitute an alternative command, wrapper script or function if
9345      desired. The default is "${:term:`UBOOT_MKIMAGE`}".
9346
9347   :term:`UBOOT_MKIMAGE_SIGN_ARGS`
9348      Optionally specifies additional arguments for the
9349      :ref:`ref-classes-kernel-fitimage` class to pass to the
9350      mkimage command when signing the FIT image.
9351
9352   :term:`UBOOT_RD_ENTRYPOINT`
9353      Specifies the entrypoint for the RAM disk image. During FIT image
9354      creation, the :term:`UBOOT_RD_ENTRYPOINT` variable is used in
9355      :ref:`ref-classes-kernel-fitimage` class to specify the entrypoint to be
9356      used in creating the Image Tree Source for the FIT image.
9357
9358   :term:`UBOOT_RD_LOADADDRESS`
9359      Specifies the load address for the RAM disk image. During FIT image
9360      creation, the :term:`UBOOT_RD_LOADADDRESS` variable is used in
9361      :ref:`ref-classes-kernel-fitimage` class to specify the load address to
9362      be used in creating the Image Tree Source for the FIT image.
9363
9364   :term:`UBOOT_SIGN_ENABLE`
9365      Enable signing of FIT image. The default value is "0".
9366
9367      This variable is used by the :ref:`ref-classes-kernel-fitimage`,
9368      :ref:`ref-classes-uboot-config` and :ref:`ref-classes-uboot-sign`
9369      classes.
9370
9371   :term:`UBOOT_SIGN_KEYDIR`
9372      Location of the directory containing the RSA key and certificate used for
9373      signing FIT image, used by the :ref:`ref-classes-kernel-fitimage` and
9374      :ref:`ref-classes-uboot-sign` classes.
9375
9376   :term:`UBOOT_SIGN_KEYNAME`
9377      The name of keys used by the :ref:`ref-classes-kernel-fitimage` class
9378      for signing U-Boot FIT image stored in the :term:`UBOOT_SIGN_KEYDIR`
9379      directory. If we have for example a ``dev.key`` key and a ``dev.crt``
9380      certificate stored in the :term:`UBOOT_SIGN_KEYDIR` directory, you will
9381      have to set :term:`UBOOT_SIGN_KEYNAME` to ``dev``.
9382
9383   :term:`UBOOT_SUFFIX`
9384      Points to the generated U-Boot extension. For example, ``u-boot.sb``
9385      has a ``.sb`` extension.
9386
9387      The default U-Boot extension is ``.bin``
9388
9389   :term:`UBOOT_TARGET`
9390      Specifies the target used for building U-Boot. The target is passed
9391      directly as part of the "make" command (e.g. SPL and AIS). If you do
9392      not specifically set this variable, the OpenEmbedded build process
9393      passes and uses "all" for the target during the U-Boot building
9394      process.
9395
9396   :term:`UNKNOWN_CONFIGURE_OPT_IGNORE`
9397      Specifies a list of options that, if reported by the configure script
9398      as being invalid, should not generate a warning during the
9399      :ref:`ref-tasks-configure` task. Normally, invalid
9400      configure options are simply not passed to the configure script (e.g.
9401      should be removed from :term:`EXTRA_OECONF` or
9402      :term:`PACKAGECONFIG_CONFARGS`).
9403      However, there are common options that are passed to all
9404      configure scripts at a class level, but might not be valid for some
9405      configure scripts. Therefore warnings about these options are useless.
9406      For these cases, the options are added to :term:`UNKNOWN_CONFIGURE_OPT_IGNORE`.
9407
9408      The configure arguments check that uses
9409      :term:`UNKNOWN_CONFIGURE_OPT_IGNORE` is part of the
9410      :ref:`ref-classes-insane` class and is only enabled if the
9411      recipe inherits the :ref:`ref-classes-autotools` class.
9412
9413   :term:`UPDATERCPN`
9414      For recipes inheriting the
9415      :ref:`ref-classes-update-rc.d` class, :term:`UPDATERCPN`
9416      specifies the package that contains the initscript that is enabled.
9417
9418      The default value is "${PN}". Given that almost all recipes that
9419      install initscripts package them in the main package for the recipe,
9420      you rarely need to set this variable in individual recipes.
9421
9422   :term:`UPSTREAM_CHECK_COMMITS`
9423      You can perform a per-recipe check for what the latest upstream
9424      source code version is by calling ``devtool latest-version recipe``. If
9425      the recipe source code is provided from Git repositories, but
9426      releases are not identified by Git tags, set :term:`UPSTREAM_CHECK_COMMITS`
9427      to ``1`` in the recipe, and the OpenEmbedded build system
9428      will compare the latest commit with the one currently specified
9429      by the recipe (:term:`SRCREV`)::
9430
9431         UPSTREAM_CHECK_COMMITS = "1"
9432
9433   :term:`UPSTREAM_CHECK_GITTAGREGEX`
9434      You can perform a per-recipe check for what the latest upstream
9435      source code version is by calling ``devtool latest-version recipe``. If
9436      the recipe source code is provided from Git repositories, the
9437      OpenEmbedded build system determines the latest upstream version by
9438      picking the latest tag from the list of all repository tags.
9439
9440      You can use the :term:`UPSTREAM_CHECK_GITTAGREGEX` variable to provide a
9441      regular expression to filter only the relevant tags should the
9442      default filter not work correctly::
9443
9444         UPSTREAM_CHECK_GITTAGREGEX = "git_tag_regex"
9445
9446   :term:`UPSTREAM_CHECK_REGEX`
9447      Use the :term:`UPSTREAM_CHECK_REGEX` variable to specify a different
9448      regular expression instead of the default one when the package
9449      checking system is parsing the page found using
9450      :term:`UPSTREAM_CHECK_URI`::
9451
9452         UPSTREAM_CHECK_REGEX = "package_regex"
9453
9454   :term:`UPSTREAM_CHECK_URI`
9455      You can perform a per-recipe check for what the latest upstream
9456      source code version is by calling ``devtool latest-version recipe``. If
9457      the source code is provided from tarballs, the latest version is
9458      determined by fetching the directory listing where the tarball is and
9459      attempting to find a later tarball. When this approach does not work,
9460      you can use :term:`UPSTREAM_CHECK_URI` to provide a different URI that
9461      contains the link to the latest tarball::
9462
9463         UPSTREAM_CHECK_URI = "recipe_url"
9464
9465   :term:`UPSTREAM_VERSION_UNKNOWN`
9466      You can perform a per-recipe check for what the latest upstream
9467      source code version is by calling ``devtool latest-version recipe``.
9468      If no combination of the :term:`UPSTREAM_CHECK_URI`, :term:`UPSTREAM_CHECK_REGEX`,
9469      :term:`UPSTREAM_CHECK_GITTAGREGEX` and :term:`UPSTREAM_CHECK_COMMITS` variables in
9470      the recipe allows to determine what the latest upstream version is,
9471      you can set :term:`UPSTREAM_VERSION_UNKNOWN` to ``1`` in the recipe
9472      to acknowledge that the check cannot be performed::
9473
9474         UPSTREAM_VERSION_UNKNOWN = "1"
9475
9476   :term:`USE_DEVFS`
9477      Determines if ``devtmpfs`` is used for ``/dev`` population. The
9478      default value used for :term:`USE_DEVFS` is "1" when no value is
9479      specifically set. Typically, you would set :term:`USE_DEVFS` to "0" for a
9480      statically populated ``/dev`` directory.
9481
9482      See the ":ref:`dev-manual/device-manager:selecting a device manager`" section in
9483      the Yocto Project Development Tasks Manual for information on how to
9484      use this variable.
9485
9486   :term:`USE_VT`
9487      When using
9488      :ref:`SysVinit <dev-manual/new-recipe:enabling system services>`,
9489      determines whether or not to run a :wikipedia:`getty <Getty_(Unix)>`
9490      on any virtual terminals in order to enable logging in through those
9491      terminals.
9492
9493      The default value used for :term:`USE_VT` is "1" when no default value is
9494      specifically set. Typically, you would set :term:`USE_VT` to "0" in the
9495      machine configuration file for machines that do not have a graphical
9496      display attached and therefore do not need virtual terminal
9497      functionality.
9498
9499   :term:`USER_CLASSES`
9500      A list of classes to globally inherit. These classes are used by the
9501      OpenEmbedded build system to enable extra features.
9502
9503      Classes inherited using :term:`USER_CLASSES` must be located in the
9504      ``classes-global/`` or ``classes/`` subdirectories.
9505
9506      The default list is set in your ``local.conf`` file::
9507
9508         USER_CLASSES ?= "buildstats"
9509
9510      For more information, see
9511      ``meta-poky/conf/templates/default/local.conf.sample`` in the
9512      :term:`Source Directory`.
9513
9514   :term:`USERADD_ERROR_DYNAMIC`
9515      If set to ``error``, forces the OpenEmbedded build system to produce
9516      an error if the user identification (``uid``) and group
9517      identification (``gid``) values are not defined in any of the files
9518      listed in :term:`USERADD_UID_TABLES` and
9519      :term:`USERADD_GID_TABLES`. If set to
9520      ``warn``, a warning will be issued instead.
9521
9522      The default behavior for the build system is to dynamically apply
9523      ``uid`` and ``gid`` values. Consequently, the
9524      :term:`USERADD_ERROR_DYNAMIC` variable is by default not set. If you plan
9525      on using statically assigned ``gid`` and ``uid`` values, you should
9526      set the :term:`USERADD_ERROR_DYNAMIC` variable in your ``local.conf``
9527      file as follows::
9528
9529         USERADD_ERROR_DYNAMIC = "error"
9530
9531      Overriding the
9532      default behavior implies you are going to also take steps to set
9533      static ``uid`` and ``gid`` values through use of the
9534      :term:`USERADDEXTENSION`,
9535      :term:`USERADD_UID_TABLES`, and
9536      :term:`USERADD_GID_TABLES` variables.
9537
9538      .. note::
9539
9540         There is a difference in behavior between setting
9541         :term:`USERADD_ERROR_DYNAMIC` to ``error`` and setting it to ``warn``.
9542         When it is set to ``warn``, the build system will report a warning for
9543         every undefined ``uid`` and ``gid`` in any recipe. But when it is set
9544         to ``error``, it will only report errors for recipes that are actually
9545         built.
9546         This saves you from having to add static IDs for recipes that you
9547         know will never be built.
9548
9549   :term:`USERADD_GID_TABLES`
9550      Specifies a password file to use for obtaining static group
9551      identification (``gid``) values when the OpenEmbedded build system
9552      adds a group to the system during package installation.
9553
9554      When applying static group identification (``gid``) values, the
9555      OpenEmbedded build system looks in :term:`BBPATH` for a
9556      ``files/group`` file and then applies those ``uid`` values. Set the
9557      variable as follows in your ``local.conf`` file::
9558
9559
9560         USERADD_GID_TABLES = "files/group"
9561
9562      .. note::
9563
9564         Setting the :term:`USERADDEXTENSION` variable to "useradd-staticids"
9565         causes the build system to use static ``gid`` values.
9566
9567   :term:`USERADD_PACKAGES`
9568      When inheriting the :ref:`ref-classes-useradd` class,
9569      this variable specifies the individual packages within the recipe
9570      that require users and/or groups to be added.
9571
9572      You must set this variable if the recipe inherits the class. For
9573      example, the following enables adding a user for the main package in
9574      a recipe::
9575
9576         USERADD_PACKAGES = "${PN}"
9577
9578      .. note::
9579
9580         It follows that if you are going to use the :term:`USERADD_PACKAGES`
9581         variable, you need to set one or more of the :term:`USERADD_PARAM`,
9582         :term:`GROUPADD_PARAM`, or :term:`GROUPMEMS_PARAM` variables.
9583
9584   :term:`USERADD_PARAM`
9585      When inheriting the :ref:`ref-classes-useradd` class,
9586      this variable specifies for a package what parameters should pass to
9587      the ``useradd`` command if you add a user to the system when the
9588      package is installed.
9589
9590      Here is an example from the ``dbus`` recipe::
9591
9592         USERADD_PARAM:${PN} = "--system --home ${localstatedir}/lib/dbus \
9593                                --no-create-home --shell /bin/false \
9594                                --user-group messagebus"
9595
9596      For information on the
9597      standard Linux shell command ``useradd``, see
9598      https://linux.die.net/man/8/useradd.
9599
9600   :term:`USERADD_UID_TABLES`
9601      Specifies a password file to use for obtaining static user
9602      identification (``uid``) values when the OpenEmbedded build system
9603      adds a user to the system during package installation.
9604
9605      When applying static user identification (``uid``) values, the
9606      OpenEmbedded build system looks in :term:`BBPATH` for a
9607      ``files/passwd`` file and then applies those ``uid`` values. Set the
9608      variable as follows in your ``local.conf`` file::
9609
9610         USERADD_UID_TABLES = "files/passwd"
9611
9612      .. note::
9613
9614         Setting the :term:`USERADDEXTENSION` variable to "useradd-staticids"
9615         causes the build system to use static ``uid`` values.
9616
9617   :term:`USERADDEXTENSION`
9618      When set to "useradd-staticids", causes the OpenEmbedded build system
9619      to base all user and group additions on a static ``passwd`` and
9620      ``group`` files found in :term:`BBPATH`.
9621
9622      To use static user identification (``uid``) and group identification
9623      (``gid``) values, set the variable as follows in your ``local.conf``
9624      file: USERADDEXTENSION = "useradd-staticids"
9625
9626      .. note::
9627
9628         Setting this variable to use static ``uid`` and ``gid``
9629         values causes the OpenEmbedded build system to employ the
9630         :ref:`ref-classes-useradd` class.
9631
9632      If you use static ``uid`` and ``gid`` information, you must also
9633      specify the ``files/passwd`` and ``files/group`` files by setting the
9634      :term:`USERADD_UID_TABLES` and
9635      :term:`USERADD_GID_TABLES` variables.
9636      Additionally, you should also set the
9637      :term:`USERADD_ERROR_DYNAMIC` variable.
9638
9639   :term:`VOLATILE_LOG_DIR`
9640      Specifies the persistence of the target's ``/var/log`` directory,
9641      which is used to house postinstall target log files.
9642
9643      By default, :term:`VOLATILE_LOG_DIR` is set to "yes", which means the
9644      file is not persistent. You can override this setting by setting the
9645      variable to "no" to make the log directory persistent.
9646
9647   :term:`VOLATILE_TMP_DIR`
9648      Specifies the persistence of the target's ``/tmp`` directory.
9649
9650      By default, :term:`VOLATILE_TMP_DIR` is set to "yes", in which case
9651      ``/tmp`` links to a directory which resides in RAM in a ``tmpfs``
9652      filesystem.
9653
9654      If instead, you want the ``/tmp`` directory to be persistent, set the
9655      variable to "no" to make it a regular directory in the root filesystem.
9656
9657      This supports both sysvinit and systemd based systems.
9658
9659   :term:`WARN_QA`
9660      Specifies the quality assurance checks whose failures are reported as
9661      warnings by the OpenEmbedded build system. You set this variable in
9662      your distribution configuration file. For a list of the checks you
9663      can control with this variable, see the
9664      ":ref:`ref-classes-insane`" section.
9665
9666   :term:`WATCHDOG_TIMEOUT`
9667      Specifies the timeout in seconds used by the ``watchdog`` recipe and
9668      also by ``systemd`` during reboot. The default is 60 seconds.
9669
9670   :term:`WIRELESS_DAEMON`
9671      For ``connman`` and ``packagegroup-base``, specifies the wireless
9672      daemon to use. The default is "wpa-supplicant" (note that the value
9673      uses a dash and not an underscore).
9674
9675   :term:`WKS_FILE`
9676      Specifies the location of the Wic kickstart file that is used by the
9677      OpenEmbedded build system to create a partitioned image
9678      (``image.wic``). For information on how to create a partitioned
9679      image, see the
9680      ":ref:`dev-manual/wic:creating partitioned images using wic`"
9681      section in the Yocto Project Development Tasks Manual. For details on
9682      the kickstart file format, see the ":doc:`/ref-manual/kickstart`" Chapter.
9683
9684   :term:`WKS_FILE_DEPENDS`
9685      When placed in the recipe that builds your image, this variable lists
9686      build-time dependencies. The :term:`WKS_FILE_DEPENDS` variable is only
9687      applicable when Wic images are active (i.e. when
9688      :term:`IMAGE_FSTYPES` contains entries related
9689      to Wic). If your recipe does not create Wic images, the variable has
9690      no effect.
9691
9692      The :term:`WKS_FILE_DEPENDS` variable is similar to the
9693      :term:`DEPENDS` variable. When you use the variable in
9694      your recipe that builds the Wic image, dependencies you list in the
9695      :term:`WKS_FILE_DEPENDS` variable are added to the :term:`DEPENDS` variable.
9696
9697      With the :term:`WKS_FILE_DEPENDS` variable, you have the possibility to
9698      specify a list of additional dependencies (e.g. native tools,
9699      bootloaders, and so forth), that are required to build Wic images.
9700      Following is an example::
9701
9702         WKS_FILE_DEPENDS = "some-native-tool"
9703
9704      In the
9705      previous example, some-native-tool would be replaced with an actual
9706      native tool on which the build would depend.
9707
9708   :term:`WKS_FILES`
9709      Specifies a list of candidate Wic kickstart files to be used by the
9710      OpenEmbedded build system to create a partitioned image. Only the
9711      first one that is found, from left to right, will be used.
9712
9713      This is only useful when there are multiple ``.wks`` files that can be
9714      used to produce an image. A typical case is when multiple layers are
9715      used for different hardware platforms, each supplying a different
9716      ``.wks`` file. In this case, you specify all possible ones through
9717      :term:`WKS_FILES`.
9718
9719      If only one ``.wks`` file is used, set :term:`WKS_FILE` instead.
9720
9721   :term:`WORKDIR`
9722      The pathname of the work directory in which the OpenEmbedded build
9723      system builds a recipe. This directory is located within the
9724      :term:`TMPDIR` directory structure and is specific to
9725      the recipe being built and the system for which it is being built.
9726
9727      The :term:`WORKDIR` directory is defined as follows::
9728
9729         ${TMPDIR}/work/${MULTIMACH_TARGET_SYS}/${PN}/${EXTENDPE}${PV}-${PR}
9730
9731      The actual directory depends on several things:
9732
9733      -  :term:`TMPDIR`: The top-level build output directory
9734      -  :term:`MULTIMACH_TARGET_SYS`: The target system identifier
9735      -  :term:`PN`: The recipe name
9736      -  :term:`EXTENDPE`: The epoch --- if :term:`PE` is not specified, which
9737         is usually the case for most recipes, then :term:`EXTENDPE` is blank.
9738      -  :term:`PV`: The recipe version
9739      -  :term:`PR`: The recipe revision
9740
9741      As an example, assume a Source Directory top-level folder name
9742      ``poky``, a default :term:`Build Directory` at ``poky/build``, and a
9743      ``qemux86-poky-linux`` machine target system. Furthermore, suppose
9744      your recipe is named ``foo_1.3.0-r0.bb``. In this case, the work
9745      directory the build system uses to build the package would be as
9746      follows::
9747
9748         poky/build/tmp/work/qemux86-poky-linux/foo/1.3.0-r0
9749
9750   :term:`XSERVER`
9751      Specifies the packages that should be installed to provide an X
9752      server and drivers for the current machine, assuming your image
9753      directly includes ``packagegroup-core-x11-xserver`` or, perhaps
9754      indirectly, includes "x11-base" in
9755      :term:`IMAGE_FEATURES`.
9756
9757      The default value of :term:`XSERVER`, if not specified in the machine
9758      configuration, is "xserver-xorg xf86-video-fbdev xf86-input-evdev".
9759
9760   :term:`XZ_THREADS`
9761      Specifies the number of parallel threads that should be used when
9762      using xz compression.
9763
9764      By default this scales with core count, but is never set less than 2
9765      to ensure that multi-threaded mode is always used so that the output
9766      file contents are deterministic. Builds will work with a value of 1
9767      but the output will differ compared to the output from the compression
9768      generated when more than one thread is used.
9769
9770      On systems where many tasks run in parallel, setting a limit to this
9771      can be helpful in controlling system resource usage.
9772
9773   :term:`XZ_MEMLIMIT`
9774      Specifies the maximum memory the xz compression should use as a percentage
9775      of system memory. If unconstrained the xz compressor can use large amounts of
9776      memory and become problematic with parallelism elsewhere in the build.
9777      "50%" has been found to be a good value.
9778
9779   :term:`ZSTD_THREADS`
9780      Specifies the number of parallel threads that should be used when
9781      using ZStandard compression.
9782
9783      By default this scales with core count, but is never set less than 2
9784      to ensure that multi-threaded mode is always used so that the output
9785      file contents are deterministic. Builds will work with a value of 1
9786      but the output will differ compared to the output from the compression
9787      generated when more than one thread is used.
9788
9789      On systems where many tasks run in parallel, setting a limit to this
9790      can be helpful in controlling system resource usage.
9791