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