xref: /openbmc/openbmc/poky/documentation/ref-manual/variables.rst (revision c9537f57ab488bf5d90132917b0184e2527970a5)
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 <FAKEROOT>`
12:term:`G <GCCPIE>` :term:`H <HGDIR>` :term:`I <ICECC_CLASS_DISABLE>`
13:term:`K <KARCH>` :term:`L <LABELS>` :term:`M <MACHINE>`
14:term:`N <NATIVELSBSTRING>` :term:`O <OBJCOPY>` :term:`P`
15:term:`Q <QA_EMPTY_DIRS>` :term:`R <RANLIB>` :term:`S` :term:`T`
16:term:`U <UBOOT_BINARY>` :term:`V <VIRTUAL-RUNTIME>`
17:term:`W <WARN_QA>` :term:`X <XSERVER>` :term:`Z <ZSTD_THREADS>`
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 :manpage:`ar <ar(1)>`.
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 :manpage:`assembler
169      <as(1)>`.
170
171   :term:`ASSUME_PROVIDED`
172      Lists recipe names (:term:`PN` values) BitBake does not
173      attempt to build. Instead, BitBake assumes these recipes have already
174      been built.
175
176      In OpenEmbedded-Core, :term:`ASSUME_PROVIDED` mostly specifies native
177      tools that should not be built. An example is ``git-native``, which
178      when specified, allows for the Git binary from the host to be used
179      rather than building ``git-native``.
180
181   :term:`ASSUME_SHLIBS`
182      Provides additional ``shlibs`` provider mapping information, which
183      adds to or overwrites the information provided automatically by the
184      system. Separate multiple entries using spaces.
185
186      As an example, use the following form to add an ``shlib`` provider of
187      shlibname in packagename with the optional version::
188
189         shlibname:packagename[_version]
190
191      Here is an example that adds a shared library named ``libEGL.so.1``
192      as being provided by the ``libegl-implementation`` package::
193
194         ASSUME_SHLIBS = "libEGL.so.1:libegl-implementation"
195
196   :term:`AUTO_LIBNAME_PKGS`
197      When the :ref:`ref-classes-debian` class is inherited,
198      which is the default behavior, :term:`AUTO_LIBNAME_PKGS` specifies which
199      packages should be checked for libraries and renamed according to
200      Debian library package naming.
201
202      The default value is "${PACKAGES}", which causes the
203      :ref:`ref-classes-debian` class to act on all packages that are
204      explicitly generated by the recipe.
205
206   :term:`AUTOREV`
207      When :term:`SRCREV` is set to the value of this variable, it specifies to
208      use the latest source revision in the repository. Here is an example::
209
210         SRCREV = "${AUTOREV}"
211
212      If you use the previous statement to retrieve the latest version of
213      software, you need to make sure :term:`PV` contains the ``+`` sign so
214      :term:`bitbake` includes source control information to :term:`PKGV` when
215      packaging the recipe. For example::
216
217         PV = "6.10.y+git"
218
219      For more information see the
220      ":ref:`dev-manual/packages:automatically incrementing a package version number`"
221      section in the Yocto Project Development Tasks Manual.
222
223   :term:`AUTO_SYSLINUXMENU`
224      Enables creating an automatic menu for the syslinux bootloader. You
225      must set this variable in your recipe. The
226      :ref:`ref-classes-syslinux` class checks this variable.
227
228   :term:`AUTOTOOLS_SCRIPT_PATH`
229      When using the :ref:`ref-classes-autotools` class, the
230      :term:`AUTOTOOLS_SCRIPT_PATH` variable stores the location of the
231      different scripts used by the Autotools build system. The default
232      value for this variable is :term:`S`.
233
234   :term:`AVAILTUNES`
235      The list of defined CPU and Application Binary Interface (ABI)
236      tunings (i.e. "tunes") available for use by the OpenEmbedded build
237      system.
238
239      The list simply presents the tunes that are available. Not all tunes
240      may be compatible with a particular machine configuration, or with
241      each other in a
242      :ref:`Multilib <dev-manual/libraries:combining multiple versions of library files into one image>`
243      configuration.
244
245      To add a tune to the list, be sure to append it with spaces using the
246      "+=" BitBake operator. Do not simply replace the list by using the
247      "=" operator. See the
248      ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:basic syntax`" section in the BitBake
249      User Manual for more information.
250
251   :term:`AZ_SAS`
252      Azure Storage Shared Access Signature, when using the
253      :ref:`Azure Storage fetcher (az://) <bitbake-user-manual/bitbake-user-manual-fetching:fetchers>`
254      This variable can be defined to be used by the fetcher to authenticate
255      and gain access to non-public artifacts::
256
257         AZ_SAS = ""se=2021-01-01&sp=r&sv=2018-11-09&sr=c&skoid=<skoid>&sig=<signature>""
258
259      For more information see Microsoft's Azure Storage documentation at
260      https://docs.microsoft.com/en-us/azure/storage/common/storage-sas-overview
261
262   :term:`B`
263      The directory within the :term:`Build Directory` in which the
264      OpenEmbedded build system places generated objects during a recipe's
265      build process. By default, this directory is the same as the
266      :term:`S` directory, which is defined as::
267
268         S = "${WORKDIR}/${BP}"
269
270      You can separate the (:term:`S`) directory and the directory pointed to
271      by the :term:`B` variable. Most Autotools-based recipes support
272      separating these directories. The build system defaults to using
273      separate directories for ``gcc`` and some kernel recipes.
274
275   :term:`BAD_RECOMMENDATIONS`
276      Lists "recommended-only" packages to not install. Recommended-only
277      packages are packages installed only through the
278      :term:`RRECOMMENDS` variable. You can prevent any
279      of these "recommended" packages from being installed by listing them
280      with the :term:`BAD_RECOMMENDATIONS` variable::
281
282         BAD_RECOMMENDATIONS = "package_name package_name package_name ..."
283
284      You can set this variable globally in your ``local.conf`` file or you
285      can attach it to a specific image recipe by using the recipe name
286      override::
287
288         BAD_RECOMMENDATIONS:pn-target_image = "package_name"
289
290      It is important to realize that if you choose to not install packages
291      using this variable and some other packages are dependent on them
292      (i.e. listed in a recipe's :term:`RDEPENDS`
293      variable), the OpenEmbedded build system ignores your request and
294      will install the packages to avoid dependency errors.
295
296      This variable is supported only when using the IPK and RPM
297      packaging backends. DEB is not supported.
298
299      See the :term:`NO_RECOMMENDATIONS` and the
300      :term:`PACKAGE_EXCLUDE` variables for related
301      information.
302
303   :term:`BAREBOX_BINARY`
304      When using the :ref:`ref-classes-barebox` class, this variable allows you
305      to specify a particular binary that should be deployed and installed.
306
307      The barebox build system can build multiple barebox binaries at once.
308      By default, all built binaries will be deployed and installed under their
309      original name.
310
311      Here is an example usage of this variable::
312
313         BAREBOX_BINARY = "barebox-boundarydevices-imx6dl-nitrogen6x-1g.img"
314
315   :term:`BAREBOX_CONFIG`
316      When using the :ref:`ref-classes-barebox` class, this variable allows you
317      to specify the name of the barebox defconfig to build.
318      The name must be a defconfig file known to the barebox build environment.
319      This variable is mainly useful for generic use cases where a dedicated
320      configuration is not required.
321      The :ref:`ref-classes-barebox` class itself already sets it for some QEMU
322      machines::
323
324         BAREBOX_CONFIG:qemuarm = "multi_v7_defconfig"
325         BAREBOX_CONFIG:qemuarm64 = "multi_v8_defconfig"
326         BAREBOX_CONFIG:qemux86-64 = "efi_defconfig"
327
328      Except for these, the default value of :term:`BAREBOX_CONFIG` is empty.
329      For more information on how to provide a barebox configuration, see the
330      :ref:`ref-classes-barebox` class.
331
332   :term:`BASE_LIB`
333      The library directory name for the CPU or Application Binary
334      Interface (ABI) tune. The :term:`BASE_LIB` applies only in the Multilib
335      context. See the ":ref:`dev-manual/libraries:combining multiple versions of library files into one image`"
336      section in the Yocto Project Development Tasks Manual for information
337      on Multilib.
338
339      The :term:`BASE_LIB` variable is defined in the machine include files in
340      the :term:`Source Directory`. If Multilib is not
341      being used, the value defaults to "lib".
342
343   :term:`BASE_WORKDIR`
344      Points to the base of the work directory for all recipes. The default
345      value is "${TMPDIR}/work".
346
347   :term:`BB_ALLOWED_NETWORKS`
348      Specifies a space-delimited list of hosts that the fetcher is allowed
349      to use to obtain the required source code. Here are
350      considerations surrounding this variable:
351
352      -  This host list is only used if :term:`BB_NO_NETWORK` is either not set
353         or set to "0".
354
355      -  There is limited support for wildcard matching against the beginning of
356         host names. For example, the following setting matches
357         ``git.gnu.org``, ``ftp.gnu.org``, and ``foo.git.gnu.org``::
358
359            BB_ALLOWED_NETWORKS = "*.gnu.org"
360
361         .. note::
362
363            The use of the "``*``" character only works at the beginning of
364            a host name and it must be isolated from the remainder of the
365            host name. You cannot use the wildcard character in any other
366            location of the name or combined with the front part of the
367            name.
368
369            For example, ``*.foo.bar`` is supported, while ``*aa.foo.bar``
370            is not.
371
372      -  Mirrors not in the host list are skipped and logged in debug.
373
374      -  Attempts to access networks not in the host list cause a failure.
375
376      Using :term:`BB_ALLOWED_NETWORKS` in conjunction with
377      :term:`PREMIRRORS` is very useful. Adding the host
378      you want to use to :term:`PREMIRRORS` results in the source code being
379      fetched from an allowed location and avoids raising an error when a
380      host that is not allowed is in a :term:`SRC_URI`
381      statement. This is because the fetcher does not attempt to use the
382      host listed in :term:`SRC_URI` after a successful fetch from the
383      :term:`PREMIRRORS` occurs.
384
385   :term:`BB_BASEHASH_IGNORE_VARS`
386      See :term:`bitbake:BB_BASEHASH_IGNORE_VARS` in the BitBake manual.
387
388   :term:`BB_CACHEDIR`
389      See :term:`bitbake:BB_CACHEDIR` in the BitBake manual.
390
391   :term:`BB_CHECK_SSL_CERTS`
392      See :term:`bitbake:BB_CHECK_SSL_CERTS` in the BitBake manual.
393
394   :term:`BB_CONSOLELOG`
395      See :term:`bitbake:BB_CONSOLELOG` in the BitBake manual.
396
397   :term:`BB_CURRENTTASK`
398      See :term:`bitbake:BB_CURRENTTASK` in the BitBake manual.
399
400   :term:`BB_CURRENT_MC`
401      See :term:`bitbake:BB_CURRENT_MC` in the BitBake manual.
402
403   :term:`BB_DEFAULT_TASK`
404      See :term:`bitbake:BB_DEFAULT_TASK` in the BitBake manual.
405
406   :term:`BB_DEFAULT_UMASK`
407      See :term:`bitbake:BB_DEFAULT_UMASK` in the BitBake manual.
408
409   :term:`BB_DISKMON_DIRS`
410      Monitors disk space and available inodes during the build and allows
411      you to control the build based on these parameters.
412
413      Disk space monitoring is disabled by default. To enable monitoring,
414      add the :term:`BB_DISKMON_DIRS` variable to your ``conf/local.conf`` file
415      found in the :term:`Build Directory`. Use the
416      following form:
417
418      .. code-block:: none
419
420         BB_DISKMON_DIRS = "action,dir,threshold [...]"
421
422         where:
423
424            action is:
425               ABORT:     Immediately stop the build when
426                          a threshold is broken.
427               STOPTASKS: Stop the build after the currently
428                          executing tasks have finished when
429                          a threshold is broken.
430               WARN:      Issue a warning but continue the
431                          build when a threshold is broken.
432                          Subsequent warnings are issued as
433                          defined by the BB_DISKMON_WARNINTERVAL
434                          variable, which must be defined in
435                          the conf/local.conf file.
436
437            dir is:
438               Any directory you choose. You can specify one or
439               more directories to monitor by separating the
440               groupings with a space.  If two directories are
441               on the same device, only the first directory
442               is monitored.
443
444            threshold is:
445               Either the minimum available disk space,
446               the minimum number of free inodes, or
447               both.  You must specify at least one.  To
448               omit one or the other, simply omit the value.
449               Specify the threshold using G, M, K for Gbytes,
450               Mbytes, and Kbytes, respectively. If you do
451               not specify G, M, or K, Kbytes is assumed by
452               default.  Do not use GB, MB, or KB.
453
454      Here are some examples::
455
456         BB_DISKMON_DIRS = "ABORT,${TMPDIR},1G,100K WARN,${SSTATE_DIR},1G,100K"
457         BB_DISKMON_DIRS = "STOPTASKS,${TMPDIR},1G"
458         BB_DISKMON_DIRS = "ABORT,${TMPDIR},,100K"
459
460      The first example works only if you also provide the
461      :term:`BB_DISKMON_WARNINTERVAL`
462      variable in the ``conf/local.conf``. This example causes the build
463      system to immediately stop when either the disk space in
464      ``${TMPDIR}`` drops below 1 Gbyte or the available free inodes drops
465      below 100 Kbytes. Because two directories are provided with the
466      variable, the build system also issue a warning when the disk space
467      in the ``${SSTATE_DIR}`` directory drops below 1 Gbyte or the number
468      of free inodes drops below 100 Kbytes. Subsequent warnings are issued
469      during intervals as defined by the :term:`BB_DISKMON_WARNINTERVAL`
470      variable.
471
472      The second example stops the build after all currently executing
473      tasks complete when the minimum disk space in the ``${TMPDIR}``
474      directory drops below 1 Gbyte. No disk monitoring occurs for the free
475      inodes in this case.
476
477      The final example immediately stops the build when the number of
478      free inodes in the ``${TMPDIR}`` directory drops below 100 Kbytes. No
479      disk space monitoring for the directory itself occurs in this case.
480
481   :term:`BB_DISKMON_WARNINTERVAL`
482      Defines the disk space and free inode warning intervals. To set these
483      intervals, define the variable in your ``conf/local.conf`` file in
484      the :term:`Build Directory`.
485
486      If you are going to use the :term:`BB_DISKMON_WARNINTERVAL` variable, you
487      must also use the :term:`BB_DISKMON_DIRS`
488      variable and define its action as "WARN". During the build,
489      subsequent warnings are issued each time disk space or number of free
490      inodes further reduces by the respective interval.
491
492      If you do not provide a :term:`BB_DISKMON_WARNINTERVAL` variable and you
493      do use :term:`BB_DISKMON_DIRS` with the "WARN" action, the disk
494      monitoring interval defaults to the following::
495
496         BB_DISKMON_WARNINTERVAL = "50M,5K"
497
498      When specifying the variable in your configuration file, use the
499      following form:
500
501      .. code-block:: none
502
503         BB_DISKMON_WARNINTERVAL = "disk_space_interval,disk_inode_interval"
504
505         where:
506
507            disk_space_interval is:
508               An interval of memory expressed in either
509               G, M, or K for Gbytes, Mbytes, or Kbytes,
510               respectively. You cannot use GB, MB, or KB.
511
512            disk_inode_interval is:
513               An interval of free inodes expressed in either
514               G, M, or K for Gbytes, Mbytes, or Kbytes,
515               respectively. You cannot use GB, MB, or KB.
516
517      Here is an example::
518
519         BB_DISKMON_DIRS = "WARN,${SSTATE_DIR},1G,100K"
520         BB_DISKMON_WARNINTERVAL = "50M,5K"
521
522      These variables cause the
523      OpenEmbedded build system to issue subsequent warnings each time the
524      available disk space further reduces by 50 Mbytes or the number of
525      free inodes further reduces by 5 Kbytes in the ``${SSTATE_DIR}``
526      directory. Subsequent warnings based on the interval occur each time
527      a respective interval is reached beyond the initial warning (i.e. 1
528      Gbytes and 100 Kbytes).
529
530   :term:`BB_ENV_PASSTHROUGH`
531      See :term:`bitbake:BB_ENV_PASSTHROUGH` in the BitBake manual.
532
533   :term:`BB_ENV_PASSTHROUGH_ADDITIONS`
534      See :term:`bitbake:BB_ENV_PASSTHROUGH_ADDITIONS` in the BitBake manual.
535
536   :term:`BB_FETCH_PREMIRRORONLY`
537      See :term:`bitbake:BB_FETCH_PREMIRRORONLY` in the BitBake manual.
538
539   :term:`BB_FILENAME`
540      See :term:`bitbake:BB_FILENAME` in the BitBake manual.
541
542   :term:`BB_GENERATE_MIRROR_TARBALLS`
543      Causes tarballs of the source control repositories (e.g. Git
544      repositories), including metadata, to be placed in the
545      :term:`DL_DIR` directory.
546
547      For performance reasons, creating and placing tarballs of these
548      repositories is not the default action by the OpenEmbedded build
549      system::
550
551         BB_GENERATE_MIRROR_TARBALLS = "1"
552
553      Set this variable in your
554      ``local.conf`` file in the :term:`Build Directory`.
555
556      Once you have the tarballs containing your source files, you can
557      clean up your :term:`DL_DIR` directory by deleting any Git or other
558      source control work directories.
559
560   :term:`BB_GENERATE_SHALLOW_TARBALLS`
561      See :term:`bitbake:BB_GENERATE_SHALLOW_TARBALLS` in the BitBake manual.
562
563   :term:`BB_GIT_SHALLOW`
564      See :term:`bitbake:BB_GIT_SHALLOW` in the BitBake manual.
565
566   :term:`BB_GIT_SHALLOW_DEPTH`
567      See :term:`bitbake:BB_GIT_SHALLOW_DEPTH` in the BitBake manual.
568
569   :term:`BB_HASHCHECK_FUNCTION`
570      See :term:`bitbake:BB_HASHCHECK_FUNCTION` in the BitBake manual.
571
572   :term:`BB_HASHCONFIG_IGNORE_VARS`
573      See :term:`bitbake:BB_HASHCONFIG_IGNORE_VARS` in the BitBake manual.
574
575   :term:`BB_HASHSERVE`
576      See :term:`bitbake:BB_HASHSERVE` in the BitBake manual.
577
578   :term:`BB_HASHSERVE_UPSTREAM`
579      See :term:`bitbake:BB_HASHSERVE_UPSTREAM` in the BitBake manual.
580
581   :term:`BB_INVALIDCONF`
582      See :term:`bitbake:BB_INVALIDCONF` in the BitBake manual.
583
584   :term:`BB_LOADFACTOR_MAX`
585      The system load threshold above which BitBake will stop runnig extra
586      tasks.
587
588   :term:`BB_LOGCONFIG`
589      See :term:`bitbake:BB_LOGCONFIG` in the BitBake manual.
590
591   :term:`BB_LOGFMT`
592      See :term:`bitbake:BB_LOGFMT` in the BitBake manual.
593
594   :term:`BB_MULTI_PROVIDER_ALLOWED`
595      See :term:`bitbake:BB_MULTI_PROVIDER_ALLOWED` in the BitBake manual.
596
597   :term:`BB_NICE_LEVEL`
598      See :term:`bitbake:BB_NICE_LEVEL` in the BitBake manual.
599
600   :term:`BB_NO_NETWORK`
601      See :term:`bitbake:BB_NO_NETWORK` in the BitBake manual.
602
603   :term:`BB_NUMBER_PARSE_THREADS`
604      See :term:`bitbake:BB_NUMBER_PARSE_THREADS` in the BitBake manual.
605
606   :term:`BB_NUMBER_THREADS`
607      The maximum number of tasks BitBake should run in parallel at any one
608      time. The OpenEmbedded build system automatically configures this
609      variable to be equal to the number of cores on the build system. For
610      example, a system with a dual core processor that also uses
611      hyper-threading causes the :term:`BB_NUMBER_THREADS` variable to default
612      to "4".
613
614      For single socket systems (i.e. one CPU), you should not have to
615      override this variable to gain optimal parallelism during builds.
616      However, if you have very large systems that employ multiple physical
617      CPUs, you might want to make sure the :term:`BB_NUMBER_THREADS` variable
618      is not set higher than "20".
619
620      For more information on speeding up builds, see the
621      ":ref:`dev-manual/speeding-up-build:speeding up a build`"
622      section in the Yocto Project Development Tasks Manual.
623
624      On the other hand, if your goal is to limit the amount of system
625      resources consumed by BitBake tasks, setting :term:`BB_NUMBER_THREADS`
626      to a number lower than the number of CPU threads in your machine
627      won't be sufficient. That's because each package will still be built
628      and installed through a number of parallel jobs specified by the
629      :term:`PARALLEL_MAKE` variable, which is by default the number of CPU
630      threads in your system, and is not impacted by the
631      :term:`BB_NUMBER_THREADS` value.
632
633      So, if you set :term:`BB_NUMBER_THREADS` to "1" but don't set
634      :term:`PARALLEL_MAKE`, most of your system resources will be consumed
635      anyway.
636
637      Therefore, if you intend to reduce the load of your build system by
638      setting :term:`BB_NUMBER_THREADS` to a relatively low value compared
639      to the number of CPU threads on your system, you should also set
640      :term:`PARALLEL_MAKE` to a similarly low value.
641
642      An alternative to using :term:`BB_NUMBER_THREADS` to keep the usage
643      of build system resources under control is to use the smarter
644      :term:`BB_PRESSURE_MAX_CPU`, :term:`BB_PRESSURE_MAX_IO` or
645      :term:`BB_PRESSURE_MAX_MEMORY` controls. They will prevent BitBake
646      from starting new tasks as long as thresholds are exceeded. Anyway,
647      as with :term:`BB_NUMBER_THREADS`, such controls won't prevent the
648      tasks already being run from using all CPU threads on the system
649      if :term:`PARALLEL_MAKE` is not set to a low value.
650
651   :term:`BB_ORIGENV`
652      See :term:`bitbake:BB_ORIGENV` in the BitBake manual.
653
654   :term:`BB_PRESERVE_ENV`
655      See :term:`bitbake:BB_PRESERVE_ENV` in the BitBake manual.
656
657   :term:`BB_PRESSURE_MAX_CPU`
658      See :term:`bitbake:BB_PRESSURE_MAX_CPU` in the BitBake manual.
659
660   :term:`BB_PRESSURE_MAX_IO`
661      See :term:`bitbake:BB_PRESSURE_MAX_IO` in the BitBake manual.
662
663   :term:`BB_PRESSURE_MAX_MEMORY`
664      See :term:`bitbake:BB_PRESSURE_MAX_MEMORY` in the BitBake manual.
665
666   :term:`BB_RUNFMT`
667      See :term:`bitbake:BB_RUNFMT` in the BitBake manual.
668
669   :term:`BB_RUNTASK`
670      See :term:`bitbake:BB_RUNTASK` in the BitBake manual.
671
672   :term:`BB_SCHEDULER`
673      See :term:`bitbake:BB_SCHEDULER` in the BitBake manual.
674
675   :term:`BB_SCHEDULERS`
676      See :term:`bitbake:BB_SCHEDULERS` in the BitBake manual.
677
678   :term:`BB_SERVER_TIMEOUT`
679      Specifies the time (in seconds) after which to unload the BitBake
680      server due to inactivity. Set :term:`BB_SERVER_TIMEOUT` to determine how
681      long the BitBake server stays resident between invocations.
682
683      For example, the following statement in your ``local.conf`` file
684      instructs the server to be unloaded after 20 seconds of inactivity::
685
686         BB_SERVER_TIMEOUT = "20"
687
688      If you want the server to never be unloaded,
689      set :term:`BB_SERVER_TIMEOUT` to "-1".
690
691   :term:`BB_SETSCENE_DEPVALID`
692      See :term:`bitbake:BB_SETSCENE_DEPVALID` in the BitBake manual.
693
694   :term:`BB_SIGNATURE_EXCLUDE_FLAGS`
695      See :term:`bitbake:BB_SIGNATURE_EXCLUDE_FLAGS` in the BitBake manual.
696
697   :term:`BB_SIGNATURE_HANDLER`
698      See :term:`bitbake:BB_SIGNATURE_HANDLER` in the BitBake manual.
699
700   :term:`BB_SRCREV_POLICY`
701      See :term:`bitbake:BB_SRCREV_POLICY` in the BitBake manual.
702
703   :term:`BB_STRICT_CHECKSUM`
704      See :term:`bitbake:BB_STRICT_CHECKSUM` in the BitBake manual.
705
706   :term:`BB_TASK_IONICE_LEVEL`
707      See :term:`bitbake:BB_TASK_IONICE_LEVEL` in the BitBake manual.
708
709   :term:`BB_TASK_NICE_LEVEL`
710      See :term:`bitbake:BB_TASK_NICE_LEVEL` in the BitBake manual.
711
712   :term:`BB_TASKHASH`
713      See :term:`bitbake:BB_TASKHASH` in the BitBake manual.
714
715   :term:`BB_USE_HOME_NPMRC`
716      See :term:`bitbake:BB_USE_HOME_NPMRC` in the BitBake manual.
717
718   :term:`BB_VERBOSE_LOGS`
719      See :term:`bitbake:BB_VERBOSE_LOGS` in the BitBake manual.
720
721   :term:`BB_WORKERCONTEXT`
722      See :term:`bitbake:BB_WORKERCONTEXT` in the BitBake manual.
723
724   :term:`BBCLASSEXTEND`
725      Allows you to extend a recipe so that it builds variants of the
726      software. There are common variants for recipes as "natives" like
727      ``quilt-native``, which is a copy of Quilt built to run on the build
728      system; "crosses" such as ``gcc-cross``, which is a compiler built to
729      run on the build machine but produces binaries that run on the target
730      :term:`MACHINE`; ":ref:`ref-classes-nativesdk`", which
731      targets the SDK machine instead of :term:`MACHINE`; and "mulitlibs" in
732      the form "``multilib:``\ multilib_name".
733
734      To build a different variant of the recipe with a minimal amount of
735      code, it usually is as simple as adding the following to your recipe::
736
737         BBCLASSEXTEND =+ "native nativesdk"
738         BBCLASSEXTEND =+ "multilib:multilib_name"
739
740      .. note::
741
742         Internally, the :term:`BBCLASSEXTEND` mechanism generates recipe
743         variants by rewriting variable values and applying overrides such
744         as ``:class-native``. For example, to generate a native version of
745         a recipe, a :term:`DEPENDS` on "foo" is rewritten
746         to a :term:`DEPENDS` on "foo-native".
747
748         Even when using :term:`BBCLASSEXTEND`, the recipe is only parsed once.
749         Parsing once adds some limitations. For example, it is not
750         possible to include a different file depending on the variant,
751         since ``include`` statements are processed when the recipe is
752         parsed.
753
754   :term:`BBDEBUG`
755      See :term:`bitbake:BBDEBUG` in the BitBake manual.
756
757   :term:`BBFILE_COLLECTIONS`
758      Lists the names of configured layers. These names are used to find
759      the other ``BBFILE_*`` variables. Typically, each layer will append
760      its name to this variable in its ``conf/layer.conf`` file.
761
762   :term:`BBFILE_PATTERN`
763      Variable that expands to match files from
764      :term:`BBFILES` in a particular layer. This variable
765      is used in the ``conf/layer.conf`` file and must be suffixed with the
766      name of the specific layer (e.g. ``BBFILE_PATTERN_emenlow``).
767
768   :term:`BBFILE_PRIORITY`
769      Assigns the priority for recipe files in each layer.
770
771      This variable is useful in situations where the same recipe appears
772      in more than one layer. Setting this variable allows you to
773      prioritize a layer against other layers that contain the same recipe
774      --- effectively letting you control the precedence for the multiple
775      layers. The precedence established through this variable stands
776      regardless of a recipe's version (:term:`PV` variable). For
777      example, a layer that has a recipe with a higher :term:`PV` value but for
778      which the :term:`BBFILE_PRIORITY` is set to have a lower precedence still
779      has a lower precedence.
780
781      A larger value for the :term:`BBFILE_PRIORITY` variable results in a
782      higher precedence. For example, the value 6 has a higher precedence
783      than the value 5. If not specified, the :term:`BBFILE_PRIORITY` variable
784      is set based on layer dependencies (see the :term:`LAYERDEPENDS` variable
785      for more information. The default priority, if unspecified for a
786      layer with no dependencies, is the lowest defined priority + 1 (or 1
787      if no priorities are defined).
788
789      .. tip::
790
791         You can use the command ``bitbake-layers show-layers``
792         to list all configured layers along with their priorities.
793
794   :term:`BBFILES`
795      A space-separated list of recipe files BitBake uses to build
796      software.
797
798      When specifying recipe files, you can pattern match using Python's
799      `glob <https://docs.python.org/3/library/glob.html>`__ syntax.
800      For details on the syntax, see the documentation by following the
801      previous link.
802
803   :term:`BBFILES_DYNAMIC`
804      Activates content when identified layers are present. You identify
805      the layers by the collections that the layers define.
806
807      Use the :term:`BBFILES_DYNAMIC` variable to avoid ``.bbappend`` files
808      whose corresponding ``.bb`` file is in a layer that attempts to
809      modify other layers through ``.bbappend`` but does not want to
810      introduce a hard dependency on those other layers.
811
812      Use the following form for :term:`BBFILES_DYNAMIC`:
813      ``collection_name:filename_pattern``.
814
815      The following example identifies two collection names and two
816      filename patterns::
817
818         BBFILES_DYNAMIC += " \
819            clang-layer:${LAYERDIR}/bbappends/meta-clang/*/*/*.bbappend \
820            core:${LAYERDIR}/bbappends/openembedded-core/meta/*/*/*.bbappend \
821            "
822
823      This next example shows an error message that occurs because invalid
824      entries are found, which cause parsing to fail:
825
826      .. code-block:: none
827
828         ERROR: BBFILES_DYNAMIC entries must be of the form <collection name>:<filename pattern>, not:
829             /work/my-layer/bbappends/meta-security-isafw/*/*/*.bbappend
830             /work/my-layer/bbappends/openembedded-core/meta/*/*/*.bbappend
831
832   :term:`BBINCLUDED`
833      See :term:`bitbake:BBINCLUDED` in the BitBake manual.
834
835   :term:`BBINCLUDELOGS`
836      Variable that controls how BitBake displays logs on build failure.
837
838   :term:`BBINCLUDELOGS_LINES`
839      If :term:`BBINCLUDELOGS` is set, specifies the
840      maximum number of lines from the task log file to print when
841      reporting a failed task. If you do not set :term:`BBINCLUDELOGS_LINES`,
842      the entire log is printed.
843
844   :term:`BBLAYERS`
845      Lists the layers to enable during the build. This variable is defined
846      in the ``bblayers.conf`` configuration file in the :term:`Build Directory`.
847      Here is an example::
848
849         BBLAYERS = " \
850             /home/scottrif/poky/meta \
851             /home/scottrif/poky/meta-poky \
852             /home/scottrif/poky/meta-yocto-bsp \
853             /home/scottrif/poky/meta-mykernel \
854             "
855
856      This example enables four layers, one of which is a custom,
857      user-defined layer named ``meta-mykernel``.
858
859   :term:`BBLAYERS_FETCH_DIR`
860      See :term:`bitbake:BBLAYERS_FETCH_DIR` in the BitBake manual.
861
862   :term:`BBMASK`
863      Prevents BitBake from processing recipes and recipe append files.
864
865      You can use the :term:`BBMASK` variable to "hide" these ``.bb`` and
866      ``.bbappend`` files. BitBake ignores any recipe or recipe append
867      files that match any of the expressions. It is as if BitBake does not
868      see them at all. Consequently, matching files are not parsed or
869      otherwise used by BitBake.
870
871      The values you provide are passed to Python's regular expression
872      compiler. Consequently, the syntax follows Python's Regular
873      Expression (re) syntax. The expressions are compared against the full
874      paths to the files. For complete syntax information, see Python's
875      documentation at https://docs.python.org/3/library/re.html#regular-expression-syntax.
876
877      The following example uses a complete regular expression to tell
878      BitBake to ignore all recipe and recipe append files in the
879      ``meta-ti/recipes-misc/`` directory::
880
881         BBMASK = "meta-ti/recipes-misc/"
882
883      If you want to mask out multiple directories or recipes, you can
884      specify multiple regular expression fragments. This next example
885      masks out multiple directories and individual recipes::
886
887         BBMASK += "/meta-ti/recipes-misc/ meta-ti/recipes-ti/packagegroup/"
888         BBMASK += "/meta-oe/recipes-support/"
889         BBMASK += "/meta-foo/.*/openldap"
890         BBMASK += "opencv.*\.bbappend"
891         BBMASK += "lzma"
892
893      .. note::
894
895         When specifying a directory name, use the trailing slash character
896         to ensure you match just that directory name.
897
898   :term:`BBMULTICONFIG`
899      Specifies each additional separate configuration when you are
900      building targets with multiple configurations. Use this variable in
901      your ``conf/local.conf`` configuration file. Specify a
902      multiconfigname for each configuration file you are using. For
903      example, the following line specifies three configuration files::
904
905         BBMULTICONFIG = "configA configB configC"
906
907      Each configuration file you use must reside in a ``multiconfig``
908      subdirectory of a configuration directory within a layer, or
909      within the :term:`Build Directory` (e.g.
910      ``build_directory/conf/multiconfig/configA.conf`` or
911      ``mylayer/conf/multiconfig/configB.conf``).
912
913      For information on how to use :term:`BBMULTICONFIG` in an environment
914      that supports building targets with multiple configurations, see the
915      ":ref:`dev-manual/building:building images for multiple targets using multiple configurations`"
916      section in the Yocto Project Development Tasks Manual.
917
918   :term:`BBPATH`
919      See :term:`bitbake:BBPATH` in the BitBake manual.
920
921   :term:`BBSERVER`
922      If defined in the BitBake environment, :term:`BBSERVER` points to the
923      BitBake remote server.
924
925      Use the following format to export the variable to the BitBake
926      environment::
927
928         export BBSERVER=localhost:$port
929
930      By default, :term:`BBSERVER` also appears in :term:`BB_BASEHASH_IGNORE_VARS`.
931      Consequently, :term:`BBSERVER` is excluded from checksum and dependency
932      data.
933
934   :term:`BBTARGETS`
935      See :term:`bitbake:BBTARGETS` in the BitBake manual.
936
937   :term:`BINCONFIG`
938      When inheriting the :ref:`ref-classes-binconfig-disabled` class, this
939      variable specifies binary configuration scripts to disable in favor of
940      using ``pkg-config`` to query the information. The
941      :ref:`ref-classes-binconfig-disabled` class will modify the specified
942      scripts to return an error so that calls to them can be easily found
943      and replaced.
944
945      To add multiple scripts, separate them by spaces. Here is an example
946      from the ``libpng`` recipe::
947
948         BINCONFIG = "${bindir}/libpng-config ${bindir}/libpng16-config"
949
950   :term:`BINCONFIG_GLOB`
951      When inheriting the :ref:`ref-classes-binconfig` class,
952      this variable specifies a wildcard for configuration scripts that
953      need editing. The scripts are edited to correct any paths that have
954      been set up during compilation so that they are correct for use when
955      installed into the sysroot and called by the build processes of other
956      recipes.
957
958      .. note::
959
960         The :term:`BINCONFIG_GLOB` variable uses
961         `shell globbing <https://tldp.org/LDP/abs/html/globbingref.html>`__,
962         which is recognition and expansion of wildcards during pattern
963         matching. Shell globbing is very similar to
964         `fnmatch <https://docs.python.org/3/library/fnmatch.html#module-fnmatch>`__
965         and `glob <https://docs.python.org/3/library/glob.html>`__.
966
967      For more information on how this variable works, see
968      ``meta/classes-recipe/binconfig.bbclass`` in the :term:`Source Directory`.
969      You can also find general
970      information on the class in the
971      ":ref:`ref-classes-binconfig`" section.
972
973   :term:`BITBAKE_UI`
974      See :term:`bitbake:BITBAKE_UI` in the BitBake manual.
975
976   :term:`BP`
977      The base recipe name and version but without any special recipe name
978      suffix (i.e. ``-native``, ``lib64-``, and so forth). :term:`BP` is
979      comprised of the following::
980
981         ${BPN}-${PV}
982
983   :term:`BPN`
984      This variable is a version of the :term:`PN` variable with
985      common prefixes and suffixes removed, such as ``nativesdk-``,
986      ``-cross``, ``-native``, and multilib's ``lib64-`` and ``lib32-``.
987      The exact lists of prefixes and suffixes removed are specified by the
988      :term:`MLPREFIX` and
989      :term:`SPECIAL_PKGSUFFIX` variables,
990      respectively.
991
992   :term:`BUGTRACKER`
993      Specifies a URL for an upstream bug tracking website for a recipe.
994      The OpenEmbedded build system does not use this variable. Rather, the
995      variable is a useful pointer in case a bug in the software being
996      built needs to be manually reported.
997
998   :term:`BUILD_AR`
999      Specifies the architecture-specific :manpage:`archiver <ar(1)>` for the
1000      build host, and its default definition is derived in part from
1001      :term:`BUILD_PREFIX`::
1002
1003         BUILD_AR = "${BUILD_PREFIX}ar"
1004
1005      When building a :ref:`ref-classes-native` recipe, :term:`AR` is set to the
1006      value of this variable by default.
1007
1008      The :term:`BUILD_AR` variable should not be set manually, and is rarely
1009      used in recipes as :term:`AR` contains the appropriate value depending on
1010      the context (native or target recipes). Exception be made for target
1011      recipes that need to use the :manpage:`archiver <ar(1)>` from the build
1012      host at some point during the build.
1013
1014   :term:`BUILD_ARCH`
1015      Specifies the architecture of the build host (e.g. ``i686``). The
1016      OpenEmbedded build system sets the value of :term:`BUILD_ARCH` from the
1017      machine name reported by the ``uname`` command.
1018
1019   :term:`BUILD_AS`
1020      Specifies the architecture-specific :manpage:`assembler <as(1)>` for the
1021      build host, and its default definition is derived in part from
1022      :term:`BUILD_PREFIX`::
1023
1024         BUILD_AS = "${BUILD_PREFIX}as ${BUILD_AS_ARCH}"
1025
1026      When building a :ref:`ref-classes-native` recipe, :term:`AS` is set to the
1027      value of this variable by default.
1028
1029      The :term:`BUILD_AS` variable should not be set manually, and is rarely
1030      used in recipes as :term:`AS` contains the appropriate value depending on
1031      the context (native or target recipes). Exception be made for target
1032      recipes that need to use the :manpage:`assembler <as(1)>` from the build
1033      host at some point during the build.
1034
1035   :term:`BUILD_AS_ARCH`
1036      Specifies the architecture-specific assembler flags for the build
1037      host. By default, the value of :term:`BUILD_AS_ARCH` is empty.
1038
1039   :term:`BUILD_CC`
1040      Specifies the architecture-specific C compiler for the build host,
1041      and its default definition is derived in part from :term:`BUILD_PREFIX`
1042      and :term:`BUILD_CC_ARCH`::
1043
1044         BUILD_CC = "${CCACHE}${BUILD_PREFIX}gcc ${BUILD_CC_ARCH}"
1045
1046      When building a :ref:`ref-classes-native` recipe, :term:`CC` is set to the
1047      value of this variable by default.
1048
1049      The :term:`BUILD_CC` variable should not be set manually, and is rarely
1050      used in recipes as :term:`CC` contains the appropriate value depending on
1051      the context (native or target recipes). Exception be made for target
1052      recipes that need to use the compiler from the build host at some point
1053      during the build.
1054
1055   :term:`BUILD_CC_ARCH`
1056      Specifies the architecture-specific C compiler flags for the build
1057      host. By default, the value of :term:`BUILD_CC_ARCH` is empty.
1058
1059   :term:`BUILD_CCLD`
1060      Specifies the :manpage:`linker <ld(1)>` command to be used for the build
1061      host when the C compiler is being used as the linker, and its default
1062      definition is derived in part from :term:`BUILD_PREFIX` and
1063      :term:`BUILD_CC_ARCH`::
1064
1065         BUILD_CCLD = "${BUILD_PREFIX}gcc ${BUILD_CC_ARCH}"
1066
1067      When building a :ref:`ref-classes-native` recipe, :term:`CCLD` is set to
1068      the value of this variable by default.
1069
1070      The :term:`BUILD_CCLD` variable should not be set manually, and is rarely
1071      used in recipes as :term:`CCLD` contains the appropriate value depending on
1072      the context (native or target recipes). Exception be made for target
1073      recipes that need to use the :manpage:`linker <ld(1)>` from the build host
1074      at some point during the build.
1075
1076   :term:`BUILD_CFLAGS`
1077      Specifies the flags to pass to the C compiler when building for the
1078      build host. When building a :ref:`ref-classes-native` recipe,
1079      :term:`CFLAGS` is set to the value of this variable by
1080      default.
1081
1082   :term:`BUILD_CPP`
1083      Specifies the C preprocessor command (to both the C and the C++ compilers)
1084      when building for the build host, and its default definition is derived in
1085      part from :term:`BUILD_PREFIX` and :term:`BUILD_CC_ARCH`::
1086
1087         BUILD_CPP = "${BUILD_PREFIX}gcc ${BUILD_CC_ARCH} -E"
1088
1089      When building a :ref:`ref-classes-native` recipe, :term:`CPP` is set to
1090      the value of this variable by default.
1091
1092      The :term:`BUILD_CPP` variable should not be set manually, and is rarely
1093      used in recipes as :term:`CPP` contains the appropriate value depending on
1094      the context (native or target recipes). Exception be made for target
1095      recipes that need to use the preprocessor from the build host at some
1096      point during the build.
1097
1098   :term:`BUILD_CPPFLAGS`
1099      Specifies the flags to pass to the C preprocessor (i.e. to both the C
1100      and the C++ compilers) when building for the build host. When
1101      building in the ``-native`` context, :term:`CPPFLAGS`
1102      is set to the value of this variable by default.
1103
1104   :term:`BUILD_CXX`
1105      Specifies the architecture-specific C++ compiler for the build host,
1106      and its default definition is derived in part from :term:`BUILD_PREFIX`
1107      and :term:`BUILD_CC_ARCH`::
1108
1109         BUILD_CXX = "${CCACHE}${BUILD_PREFIX}g++ ${BUILD_CC_ARCH}"
1110
1111      When building a :ref:`ref-classes-native` recipe, :term:`CXX` is set to
1112      the value of this variable by default.
1113
1114      The :term:`BUILD_CXX` variable should not be set manually, and is rarely
1115      used in recipes as :term:`CXX` contains the appropriate value depending on
1116      the context (native or target recipes). Exception be made for target
1117      recipes that need to use the C++ compiler from the build host at some
1118      point during the build.
1119
1120   :term:`BUILD_CXXFLAGS`
1121      Specifies the flags to pass to the C++ compiler when building for the
1122      build host. When building a :ref:`ref-classes-native` recipe,
1123      :term:`CXXFLAGS` is set to the value of this variable
1124      by default.
1125
1126   :term:`BUILD_FC`
1127      Specifies the Fortran compiler command for the build host, and its default
1128      definition is derived in part from :term:`BUILD_PREFIX` and
1129      :term:`BUILD_CC_ARCH`::
1130
1131         BUILD_FC = "${BUILD_PREFIX}gfortran ${BUILD_CC_ARCH}"
1132
1133      When building a :ref:`ref-classes-native` recipe, :term:`FC` is set to the
1134      value of this variable by default.
1135
1136      The :term:`BUILD_FC` variable should not be set manually, and is rarely
1137      used in recipes as :term:`FC` contains the appropriate value depending on
1138      the context (native or target recipes). Exception be made for target
1139      recipes that need to use the Fortran compiler from the build host at some
1140      point during the build.
1141
1142   :term:`BUILD_LD`
1143      Specifies the linker command for the build host, and its default
1144      definition is derived in part from :term:`BUILD_PREFIX` and
1145      :term:`BUILD_LD_ARCH`::
1146
1147         BUILD_LD = "${BUILD_PREFIX}ld ${BUILD_LD_ARCH}"
1148
1149      When building a :ref:`ref-classes-native` recipe, :term:`LD` is set to the
1150      value of this variable by default.
1151
1152      The :term:`BUILD_LD` variable should not be set manually, and is rarely
1153      used in recipes as :term:`LD` contains the appropriate value depending on
1154      the context (native or target recipes). Exception be made for target
1155      recipes that need to use the linker from the build host at some point
1156      during the build.
1157
1158   :term:`BUILD_LD_ARCH`
1159      Specifies architecture-specific linker flags for the build host. By
1160      default, the value of :term:`BUILD_LD_ARCH` is empty.
1161
1162   :term:`BUILD_LDFLAGS`
1163      Specifies the flags to pass to the linker when building for the build
1164      host. When building a :ref:`ref-classes-native` recipe,
1165      :term:`LDFLAGS` is set to the value of this variable
1166      by default.
1167
1168   :term:`BUILD_NM`
1169      Specifies the architecture-specific utility to list symbols from object
1170      files for the build host, and its default definition is derived in part
1171      from :term:`BUILD_PREFIX`::
1172
1173         BUILD_NM = "${BUILD_PREFIX}nm"
1174
1175      When building a :ref:`ref-classes-native` recipe, :term:`NM` is set to the
1176      value of this variable by default.
1177
1178      The :term:`BUILD_NM` variable should not be set manually, and is rarely
1179      used in recipes as :term:`NM` contains the appropriate value depending on
1180      the context (native or target recipes). Exception be made for target
1181      recipes that need to use the utility from the build host at some point
1182      during the build.
1183
1184   :term:`BUILD_OBJCOPY`
1185      Specifies the architecture-specific utility to copy object files for the
1186      build host, and its default definition is derived in part from
1187      :term:`BUILD_PREFIX`::
1188
1189         BUILD_OBJCOPY = "${BUILD_PREFIX}objcopy"
1190
1191      When building a :ref:`ref-classes-native` recipe, :term:`OBJCOPY` is set
1192      to the value of this variable by default.
1193
1194      The :term:`BUILD_OBJCOPY` variable should not be set manually, and is
1195      rarely used in recipes as :term:`OBJCOPY` contains the appropriate value
1196      depending on the context (native or target recipes). Exception be made for
1197      target recipes that need to use the utility from the build host at some
1198      point during the build.
1199
1200   :term:`BUILD_OBJDUMP`
1201      Specifies the architecture-specific utility to display object files
1202      information for the build host, and its default definition is derived in
1203      part from :term:`BUILD_PREFIX`::
1204
1205         BUILD_OBJDUMP = "${BUILD_PREFIX}objdump"
1206
1207      When building a :ref:`ref-classes-native` recipe, :term:`OBJDUMP` is set
1208      to the value of this variable by default.
1209
1210      The :term:`BUILD_OBJDUMP` variable should not be set manually, and is
1211      rarely used in recipes as :term:`OBJDUMP` contains the appropriate value
1212      depending on the context (native or target recipes). Exception be made for
1213      target recipes that need to use the utility from the build host at some
1214      point during the build.
1215
1216   :term:`BUILD_OPTIMIZATION`
1217      Specifies the optimization flags passed to the C compiler when
1218      building for the build host or the SDK. The flags are passed through
1219      the :term:`BUILD_CFLAGS` and
1220      :term:`BUILDSDK_CFLAGS` default values.
1221
1222      The default value of the :term:`BUILD_OPTIMIZATION` variable is "-O2
1223      -pipe".
1224
1225   :term:`BUILD_OS`
1226      Specifies the operating system in use on the build host (e.g.
1227      "linux"). The OpenEmbedded build system sets the value of
1228      :term:`BUILD_OS` from the OS reported by the ``uname`` command --- the
1229      first word, converted to lower-case characters.
1230
1231   :term:`BUILD_PREFIX`
1232      The toolchain binary prefix used for native recipes. The OpenEmbedded
1233      build system uses the :term:`BUILD_PREFIX` value to set the
1234      :term:`TARGET_PREFIX` when building for :ref:`ref-classes-native` recipes.
1235
1236   :term:`BUILD_RANLIB`
1237      Specifies the architecture-specific utility to generate indexes for
1238      archives for the build host, and its default definition is derived in part
1239      from :term:`BUILD_PREFIX`::
1240
1241         BUILD_RANLIB = "${BUILD_PREFIX}ranlib -D"
1242
1243      When building a :ref:`ref-classes-native` recipe, :term:`RANLIB` is set to
1244      the value of this variable by default.
1245
1246      The :term:`BUILD_RANLIB` variable should not be set manually, and is
1247      rarely used in recipes as :term:`RANLIB` contains the appropriate value
1248      depending on the context (native or target recipes). Exception be made for
1249      target recipes that need to use the utility from the build host at some
1250      point during the build.
1251
1252   :term:`BUILD_READELF`
1253      Specifies the architecture-specific utility to display information about
1254      ELF files for the build host, and its default definition is derived in
1255      part from :term:`BUILD_PREFIX`::
1256
1257         BUILD_READELF = "${BUILD_PREFIX}readelf"
1258
1259      When building a :ref:`ref-classes-native` recipe, :term:`READELF` is set
1260      to the value of this variable by default.
1261
1262      The :term:`BUILD_READELF` variable should not be set manually, and is
1263      rarely used in recipes as :term:`READELF` contains the appropriate value
1264      depending on the context (native or target recipes). Exception be made for
1265      target recipes that need to use the utility from the build host at some
1266      point during the build.
1267
1268   :term:`BUILD_STRIP`
1269      Specifies the command to be used to strip debugging symbols from binaries
1270      produced for the build host, and its default definition is derived in part
1271      from :term:`BUILD_PREFIX`::
1272
1273         BUILD_STRIP = "${BUILD_PREFIX}strip"
1274
1275      When building a :ref:`ref-classes-native` recipe, :term:`STRIP` is set to
1276      the value of this variable by default.
1277
1278      The :term:`BUILD_STRIP` variable should not be set manually, and is
1279      rarely used in recipes as :term:`STRIP` contains the appropriate value
1280      depending on the context (native or target recipes). Exception be made for
1281      target recipes that need to use the utility from the build host at some
1282      point during the build.
1283
1284   :term:`BUILD_SYS`
1285      Specifies the system, including the architecture and the operating
1286      system, to use when building for the build host (i.e. when building
1287      :ref:`ref-classes-native` recipes).
1288
1289      The OpenEmbedded build system automatically sets this variable based
1290      on :term:`BUILD_ARCH`,
1291      :term:`BUILD_VENDOR`, and
1292      :term:`BUILD_OS`. You do not need to set the
1293      :term:`BUILD_SYS` variable yourself.
1294
1295   :term:`BUILD_VENDOR`
1296      Specifies the vendor name to use when building for the build host.
1297      The default value is an empty string ("").
1298
1299   :term:`BUILDDIR`
1300      Points to the location of the :term:`Build Directory`. You can define
1301      this directory indirectly through the :ref:`structure-core-script` script
1302      by passing in a :term:`Build Directory` path when you run the script. If
1303      you run the script and do not provide a :term:`Build Directory` path, the
1304      :term:`BUILDDIR` defaults to ``build`` in the current directory.
1305
1306   :term:`BUILDHISTORY_COMMIT`
1307      When inheriting the :ref:`ref-classes-buildhistory` class, this variable
1308      specifies whether or not to commit the build history output in a local
1309      Git repository. If set to "1", this local repository will be maintained
1310      automatically by the :ref:`ref-classes-buildhistory` class and a commit
1311      will be created on every build for changes to each top-level subdirectory
1312      of the build history output (images, packages, and sdk). If you want to
1313      track changes to build history over time, you should set this value to
1314      "1".
1315
1316      By default, the :ref:`ref-classes-buildhistory` class
1317      enables committing the buildhistory output in a local Git repository::
1318
1319         BUILDHISTORY_COMMIT ?= "1"
1320
1321   :term:`BUILDHISTORY_COMMIT_AUTHOR`
1322      When inheriting the :ref:`ref-classes-buildhistory`
1323      class, this variable specifies the author to use for each Git commit.
1324      In order for the :term:`BUILDHISTORY_COMMIT_AUTHOR` variable to work, the
1325      :term:`BUILDHISTORY_COMMIT` variable must
1326      be set to "1".
1327
1328      Git requires that the value you provide for the
1329      :term:`BUILDHISTORY_COMMIT_AUTHOR` variable takes the form of "name
1330      email@host". Providing an email address or host that is not valid
1331      does not produce an error.
1332
1333      By default, the :ref:`ref-classes-buildhistory` class sets the variable
1334      as follows::
1335
1336         BUILDHISTORY_COMMIT_AUTHOR ?= "buildhistory <buildhistory@${DISTRO}>"
1337
1338   :term:`BUILDHISTORY_DIR`
1339      When inheriting the :ref:`ref-classes-buildhistory`
1340      class, this variable specifies the directory in which build history
1341      information is kept. For more information on how the variable works,
1342      see the :ref:`ref-classes-buildhistory` class.
1343
1344      By default, the :ref:`ref-classes-buildhistory` class sets the directory
1345      as follows::
1346
1347         BUILDHISTORY_DIR ?= "${TOPDIR}/buildhistory"
1348
1349   :term:`BUILDHISTORY_FEATURES`
1350      When inheriting the :ref:`ref-classes-buildhistory`
1351      class, this variable specifies the build history features to be
1352      enabled. For more information on how build history works, see the
1353      ":ref:`dev-manual/build-quality:maintaining build output quality`"
1354      section in the Yocto Project Development Tasks Manual.
1355
1356      You can specify these features in the form of a space-separated list:
1357
1358      -  *image:* Analysis of the contents of images, which includes the
1359         list of installed packages among other things.
1360
1361      -  *package:* Analysis of the contents of individual packages.
1362
1363      -  *sdk:* Analysis of the contents of the software development kit
1364         (SDK).
1365
1366      -  *task:* Save output file signatures for
1367         :ref:`shared state <overview-manual/concepts:shared state cache>`
1368         (sstate) tasks.
1369         This saves one file per task and lists the SHA-256 checksums for
1370         each file staged (i.e. the output of the task).
1371
1372      By default, the :ref:`ref-classes-buildhistory` class enables the
1373      following features::
1374
1375         BUILDHISTORY_FEATURES ?= "image package sdk"
1376
1377   :term:`BUILDHISTORY_IMAGE_FILES`
1378      When inheriting the :ref:`ref-classes-buildhistory`
1379      class, this variable specifies a list of paths to files copied from
1380      the image contents into the build history directory under an
1381      "image-files" directory in the directory for the image, so that you
1382      can track the contents of each file. The default is to copy
1383      ``/etc/passwd`` and ``/etc/group``, which allows you to monitor for
1384      changes in user and group entries. You can modify the list to include
1385      any file. Specifying an invalid path does not produce an error.
1386      Consequently, you can include files that might not always be present.
1387
1388      By default, the :ref:`ref-classes-buildhistory` class provides paths to
1389      the following files::
1390
1391         BUILDHISTORY_IMAGE_FILES ?= "/etc/passwd /etc/group"
1392
1393   :term:`BUILDHISTORY_PATH_PREFIX_STRIP`
1394      When inheriting the :ref:`ref-classes-buildhistory`
1395      class, this variable specifies a common path prefix that should be
1396      stripped off the beginning of paths in the task signature list when the
1397      ``task`` feature is active in :term:`BUILDHISTORY_FEATURES`. This can be
1398      useful when build history is populated from multiple sources that may not
1399      all use the same top level directory.
1400
1401      By default, the :ref:`ref-classes-buildhistory` class sets the variable
1402      as follows::
1403
1404         BUILDHISTORY_PATH_PREFIX_STRIP ?= ""
1405
1406      In this case, no prefixes will be stripped.
1407
1408   :term:`BUILDHISTORY_PUSH_REPO`
1409      When inheriting the :ref:`ref-classes-buildhistory` class, this variable
1410      optionally specifies a remote repository to which build history pushes
1411      Git changes. In order for :term:`BUILDHISTORY_PUSH_REPO` to work,
1412      :term:`BUILDHISTORY_COMMIT` must be set to "1".
1413
1414      The repository should correspond to a remote address that specifies a
1415      repository as understood by Git, or alternatively to a remote name
1416      that you have set up manually using ``git remote`` within the local
1417      repository.
1418
1419      By default, the :ref:`ref-classes-buildhistory` class sets the variable
1420      as follows::
1421
1422         BUILDHISTORY_PUSH_REPO ?= ""
1423
1424   :term:`BUILDNAME`
1425      See :term:`bitbake:BUILDNAME` in the BitBake manual.
1426
1427   :term:`BUILDSDK_CFLAGS`
1428      Specifies the flags to pass to the C compiler when building for the
1429      SDK. When building in the ``nativesdk-`` context,
1430      :term:`CFLAGS` is set to the value of this variable by
1431      default.
1432
1433   :term:`BUILDSDK_CPPFLAGS`
1434      Specifies the flags to pass to the C pre-processor (i.e. to both the
1435      C and the C++ compilers) when building for the SDK. When building in
1436      the ``nativesdk-`` context, :term:`CPPFLAGS` is set
1437      to the value of this variable by default.
1438
1439   :term:`BUILDSDK_CXXFLAGS`
1440      Specifies the flags to pass to the C++ compiler when building for the
1441      SDK. When building in the ``nativesdk-`` context,
1442      :term:`CXXFLAGS` is set to the value of this variable
1443      by default.
1444
1445   :term:`BUILDSDK_LDFLAGS`
1446      Specifies the flags to pass to the linker when building for the SDK.
1447      When building in the ``nativesdk-`` context,
1448      :term:`LDFLAGS` is set to the value of this variable
1449      by default.
1450
1451   :term:`BUILDSTATS_BASE`
1452      Points to the location of the directory that holds build statistics
1453      when you use and enable the :ref:`ref-classes-buildstats` class. The
1454      :term:`BUILDSTATS_BASE` directory defaults to
1455      ``${``\ :term:`TMPDIR`\ ``}/buildstats/``.
1456
1457   :term:`BUSYBOX_SPLIT_SUID`
1458      For the BusyBox recipe, specifies whether to split the output
1459      executable file into two parts: one for features that require
1460      ``setuid root``, and one for the remaining features (i.e. those that
1461      do not require ``setuid root``).
1462
1463      The :term:`BUSYBOX_SPLIT_SUID` variable defaults to "1", which results in
1464      splitting the output executable file. Set the variable to "0" to get
1465      a single output executable file.
1466
1467   :term:`BZRDIR`
1468      See :term:`bitbake:BZRDIR` in the BitBake manual.
1469
1470   :term:`CACHE`
1471      Specifies the directory BitBake uses to store a cache of the
1472      :term:`Metadata` so it does not need to be parsed every time
1473      BitBake is started.
1474
1475   :term:`CARGO_INSTALL_LIBRARIES`
1476      When inheriting the :ref:`ref-classes-cargo` class, the variable
1477      :term:`CARGO_INSTALL_LIBRARIES` can be set to a non-empty value by
1478      individual recipes to enable the installation of the libraries the
1479      recipe has built in ``${B}/target/${CARGO_TARGET_SUBDIR}`` (files ending
1480      with ``.so`` or ``.rlib``). By default this variable is not defined and
1481      libraries are not installed, to replicate the behavior of the ``cargo
1482      install`` command.
1483
1484   :term:`CC`
1485      The minimal command and arguments used to run the C compiler.
1486
1487   :term:`CCLD`
1488      The minimal command and arguments used to run the linker when the C
1489      compiler is being used as the linker.
1490
1491   :term:`CFLAGS`
1492      Specifies the flags to pass to the C compiler. This variable is
1493      exported to an environment variable and thus made visible to the
1494      software being built during the compilation step.
1495
1496      Default initialization for :term:`CFLAGS` varies depending on what is
1497      being built:
1498
1499      -  :term:`TARGET_CFLAGS` when building for the
1500         target
1501
1502      -  :term:`BUILD_CFLAGS` when building for the
1503         build host (i.e. ``-native``)
1504
1505      -  :term:`BUILDSDK_CFLAGS` when building for
1506         an SDK (i.e. ``nativesdk-``)
1507
1508   :term:`CHECKLAYER_REQUIRED_TESTS`
1509      The :term:`CHECKLAYER_REQUIRED_TESTS` variable lists the QA tests that are
1510      required to be enabled to pass the Yocto Project Compatible status for a
1511      layer. It is meant to be a read-only variable and any change to the
1512      variable may be done with the approval of the :oe_wiki:`Technical Steering
1513      Committee (TSC) </TSC>`.
1514
1515      For more information on the Yocto Project Compatible status, see
1516      the :ref:`dev-manual/layers:Making Sure Your Layer is Compatible With
1517      Yocto Project` section of the Yocto Project Development Manual.
1518
1519   :term:`CLASSOVERRIDE`
1520      An internal variable specifying the special class override that
1521      should currently apply (e.g. "class-target", "class-native", and so
1522      forth). The classes that use this variable (e.g.
1523      :ref:`ref-classes-native`, :ref:`ref-classes-nativesdk`, and so forth)
1524      set the variable to appropriate values.
1525
1526      .. note::
1527
1528         :term:`CLASSOVERRIDE` gets its default "class-target" value from the
1529         ``bitbake.conf`` file.
1530
1531      As an example, the following override allows you to install extra
1532      files, but only when building for the target::
1533
1534         do_install:append:class-target() {
1535             install my-extra-file ${D}${sysconfdir}
1536         }
1537
1538      Here is an example where ``FOO`` is set to
1539      "native" when building for the build host, and to "other" when not
1540      building for the build host::
1541
1542         FOO:class-native = "native"
1543         FOO = "other"
1544
1545      The underlying mechanism behind :term:`CLASSOVERRIDE` is simply
1546      that it is included in the default value of
1547      :term:`OVERRIDES`.
1548
1549   :term:`CLEANBROKEN`
1550      If set to "1" within a recipe, :term:`CLEANBROKEN` specifies that the
1551      ``make clean`` command does not work for the software being built.
1552      Consequently, the OpenEmbedded build system will not try to run
1553      ``make clean`` during the :ref:`ref-tasks-configure`
1554      task, which is the default behavior.
1555
1556   :term:`COMBINED_FEATURES`
1557      Provides a list of hardware features that are enabled in both
1558      :term:`MACHINE_FEATURES` and
1559      :term:`DISTRO_FEATURES`. This select list of
1560      features contains features that make sense to be controlled both at
1561      the machine and distribution configuration level. For example, the
1562      "bluetooth" feature requires hardware support but should also be
1563      optional at the distribution level, in case the hardware supports
1564      Bluetooth but you do not ever intend to use it.
1565
1566   :term:`COMMERCIAL_AUDIO_PLUGINS`
1567      This variable is specific to the :yocto_git:`GStreamer recipes
1568      </poky/tree/meta/recipes-multimedia/gstreamer/gstreamer1.0-meta-base.bb>`.
1569      It allows to build the GStreamer `"ugly"
1570      <https://github.com/GStreamer/gst-plugins-ugly>`__ and
1571      `"bad" <https://github.com/GStreamer/gst-plugins-bad>`__ audio plugins.
1572
1573      See the :ref:`dev-manual/licenses:other variables related to commercial licenses`
1574      section for usage details.
1575
1576   :term:`COMMERCIAL_VIDEO_PLUGINS`
1577      This variable is specific to the :yocto_git:`GStreamer recipes
1578      </poky/tree/meta/recipes-multimedia/gstreamer/gstreamer1.0-meta-base.bb>`.
1579      It allows to build the GStreamer `"ugly"
1580      <https://github.com/GStreamer/gst-plugins-ugly>`__ and
1581      `"bad" <https://github.com/GStreamer/gst-plugins-bad>`__ video plugins.
1582
1583      See the :ref:`dev-manual/licenses:other variables related to commercial licenses`
1584      section for usage details.
1585
1586   :term:`COMMON_LICENSE_DIR`
1587      Points to ``meta/files/common-licenses`` in the
1588      :term:`Source Directory`, which is where generic license
1589      files reside.
1590
1591   :term:`COMPATIBLE_HOST`
1592      A regular expression that resolves to one or more hosts (when the
1593      recipe is native) or one or more targets (when the recipe is
1594      non-native) with which a recipe is compatible. The regular expression
1595      is matched against :term:`HOST_SYS`. You can use the
1596      variable to stop recipes from being built for classes of systems with
1597      which the recipes are not compatible. Stopping these builds is
1598      particularly useful with kernels. The variable also helps to increase
1599      parsing speed since the build system skips parsing recipes not
1600      compatible with the current system.
1601
1602   :term:`COMPATIBLE_MACHINE`
1603      A regular expression that resolves to one or more target machines
1604      with which a recipe is compatible. The regular expression is matched
1605      against :term:`MACHINEOVERRIDES`. You can use
1606      the variable to stop recipes from being built for machines with which
1607      the recipes are not compatible. Stopping these builds is particularly
1608      useful with kernels. The variable also helps to increase parsing
1609      speed since the build system skips parsing recipes not compatible
1610      with the current machine.
1611
1612      If one wants to have a recipe only available for some architectures
1613      (here ``aarch64`` and ``mips64``), the following can be used::
1614
1615         COMPATIBLE_MACHINE = "^$"
1616         COMPATIBLE_MACHINE:arch64 = "^(aarch64)$"
1617         COMPATIBLE_MACHINE:mips64 = "^(mips64)$"
1618
1619      The first line means "match all machines whose :term:`MACHINEOVERRIDES`
1620      contains the empty string", which will always be none.
1621
1622      The second is for matching all machines whose :term:`MACHINEOVERRIDES`
1623      contains one override which is exactly ``aarch64``.
1624
1625      The third is for matching all machines whose :term:`MACHINEOVERRIDES`
1626      contains one override which is exactly ``mips64``.
1627
1628      The same could be achieved with::
1629
1630         COMPATIBLE_MACHINE = "^(aarch64|mips64)$"
1631
1632      .. note::
1633
1634         When :term:`COMPATIBLE_MACHINE` is set in a recipe inherits from
1635         native, the recipe is always skipped. All native recipes must be
1636         entirely target independent and should not rely on :term:`MACHINE`.
1637
1638   :term:`COMPLEMENTARY_GLOB`
1639      Defines wildcards to match when installing a list of complementary
1640      packages for all the packages explicitly (or implicitly) installed in
1641      an image.
1642
1643      The :term:`COMPLEMENTARY_GLOB` variable uses Unix filename pattern matching
1644      (`fnmatch <https://docs.python.org/3/library/fnmatch.html#module-fnmatch>`__),
1645      which is similar to the Unix style pathname pattern expansion
1646      (`glob <https://docs.python.org/3/library/glob.html>`__).
1647
1648      The resulting list of complementary packages is associated with an
1649      item that can be added to
1650      :term:`IMAGE_FEATURES`. An example usage of
1651      this is the "dev-pkgs" item that when added to :term:`IMAGE_FEATURES`
1652      will install -dev packages (containing headers and other development
1653      files) for every package in the image.
1654
1655      To add a new feature item pointing to a wildcard, use a variable flag
1656      to specify the feature item name and use the value to specify the
1657      wildcard. Here is an example::
1658
1659         COMPLEMENTARY_GLOB[dev-pkgs] = '*-dev'
1660
1661      .. note::
1662
1663         When installing complementary packages, recommends relationships
1664         (set via :term:`RRECOMMENDS`) are always ignored.
1665
1666   :term:`COMPONENTS_DIR`
1667      Stores sysroot components for each recipe. The OpenEmbedded build
1668      system uses :term:`COMPONENTS_DIR` when constructing recipe-specific
1669      sysroots for other recipes.
1670
1671      The default is
1672      "``${``\ :term:`STAGING_DIR`\ ``}-components``."
1673      (i.e.
1674      "``${``\ :term:`TMPDIR`\ ``}/sysroots-components``").
1675
1676   :term:`CONF_VERSION`
1677      Tracks the version of the local configuration file (i.e.
1678      ``local.conf``). The value for :term:`CONF_VERSION` increments each time
1679      ``build/conf/`` compatibility changes.
1680
1681   :term:`CONFFILES`
1682      Identifies editable or configurable files that are part of a package.
1683      If the Package Management System (PMS) is being used to update
1684      packages on the target system, it is possible that configuration
1685      files you have changed after the original installation and that you
1686      now want to remain unchanged are overwritten. In other words,
1687      editable files might exist in the package that you do not want reset
1688      as part of the package update process. You can use the :term:`CONFFILES`
1689      variable to list the files in the package that you wish to prevent
1690      the PMS from overwriting during this update process.
1691
1692      To use the :term:`CONFFILES` variable, provide a package name override
1693      that identifies the resulting package. Then, provide a
1694      space-separated list of files. Here is an example::
1695
1696         CONFFILES:${PN} += "${sysconfdir}/file1 \
1697             ${sysconfdir}/file2 ${sysconfdir}/file3"
1698
1699      There is a relationship between the :term:`CONFFILES` and :term:`FILES`
1700      variables. The files listed within :term:`CONFFILES` must be a subset of
1701      the files listed within :term:`FILES`. Because the configuration files
1702      you provide with :term:`CONFFILES` are simply being identified so that
1703      the PMS will not overwrite them, it makes sense that the files must
1704      already be included as part of the package through the :term:`FILES`
1705      variable.
1706
1707      .. note::
1708
1709         When specifying paths as part of the :term:`CONFFILES` variable, it is
1710         good practice to use appropriate path variables.
1711         For example, ``${sysconfdir}`` rather than ``/etc`` or ``${bindir}``
1712         rather than ``/usr/bin``. You can find a list of these variables at
1713         the top of the ``meta/conf/bitbake.conf`` file in the
1714         :term:`Source Directory`.
1715
1716   :term:`CONFIG_INITRAMFS_SOURCE`
1717      Identifies the initial RAM filesystem (:term:`Initramfs`) source files. The
1718      OpenEmbedded build system receives and uses this kernel Kconfig
1719      variable as an environment variable. By default, the variable is set
1720      to null ("").
1721
1722      The :term:`CONFIG_INITRAMFS_SOURCE` can be either a single cpio archive
1723      with a ``.cpio`` suffix or a space-separated list of directories and
1724      files for building the :term:`Initramfs` image. A cpio archive should contain
1725      a filesystem archive to be used as an :term:`Initramfs` image. Directories
1726      should contain a filesystem layout to be included in the :term:`Initramfs`
1727      image. Files should contain entries according to the format described
1728      by the ``usr/gen_init_cpio`` program in the kernel tree.
1729
1730      If you specify multiple directories and files, the :term:`Initramfs` image
1731      will be the aggregate of all of them.
1732
1733      For information on creating an :term:`Initramfs`, see the
1734      ":ref:`dev-manual/building:building an initial ram filesystem (Initramfs) image`" section
1735      in the Yocto Project Development Tasks Manual.
1736
1737   :term:`CONFIG_SITE`
1738      A list of files that contains ``autoconf`` test results relevant to
1739      the current build. This variable is used by the Autotools utilities
1740      when running ``configure``.
1741
1742   :term:`CONFIGURE_FLAGS`
1743      The minimal arguments for GNU configure.
1744
1745   :term:`CONFIGURE_SCRIPT`
1746      When using the :ref:`ref-classes-autotools` class, the
1747      :term:`CONFIGURE_SCRIPT` variable stores the location of the ``configure``
1748      script for the Autotools build system. The default definition for this
1749      variable is::
1750
1751         CONFIGURE_SCRIPT ?= "${AUTOTOOLS_SCRIPT_PATH}/configure"
1752
1753      Where :term:`AUTOTOOLS_SCRIPT_PATH` is the location of the of the
1754      Autotools build system scripts, which defaults to :term:`S`.
1755
1756   :term:`CONFLICT_DISTRO_FEATURES`
1757      When inheriting the :ref:`ref-classes-features_check`
1758      class, this variable identifies distribution features that would be
1759      in conflict should the recipe be built. In other words, if the
1760      :term:`CONFLICT_DISTRO_FEATURES` variable lists a feature that also
1761      appears in :term:`DISTRO_FEATURES` within the current configuration, then
1762      the recipe will be skipped, and if the build system attempts to build
1763      the recipe then an error will be triggered.
1764
1765   :term:`CONVERSION_CMD`
1766      This variable is used for storing image conversion commands.
1767      Image conversion can convert an image into different objects like:
1768
1769      -   Compressed version of the image
1770
1771      -   Checksums for the image
1772
1773      An example of :term:`CONVERSION_CMD` from :ref:`ref-classes-image_types`
1774      class is::
1775
1776         CONVERSION_CMD:lzo = "lzop -9 ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}"
1777
1778   :term:`COPY_LIC_DIRS`
1779      If set to "1" along with the
1780      :term:`COPY_LIC_MANIFEST` variable, the
1781      OpenEmbedded build system copies into the image the license files,
1782      which are located in ``/usr/share/common-licenses``, for each
1783      package. The license files are placed in directories within the image
1784      itself during build time.
1785
1786      .. note::
1787
1788         The :term:`COPY_LIC_DIRS` does not offer a path for adding licenses for
1789         newly installed packages to an image, which might be most suitable for
1790         read-only filesystems that cannot be upgraded. See the
1791         :term:`LICENSE_CREATE_PACKAGE` variable for additional information.
1792         You can also reference the ":ref:`dev-manual/licenses:providing license text`"
1793         section in the Yocto Project Development Tasks Manual for
1794         information on providing license text.
1795
1796   :term:`COPY_LIC_MANIFEST`
1797      If set to "1", the OpenEmbedded build system copies the license
1798      manifest for the image to
1799      ``/usr/share/common-licenses/license.manifest`` within the image
1800      itself during build time.
1801
1802      .. note::
1803
1804         The :term:`COPY_LIC_MANIFEST` does not offer a path for adding licenses for
1805         newly installed packages to an image, which might be most suitable for
1806         read-only filesystems that cannot be upgraded. See the
1807         :term:`LICENSE_CREATE_PACKAGE` variable for additional information.
1808         You can also reference the ":ref:`dev-manual/licenses:providing license text`"
1809         section in the Yocto Project Development Tasks Manual for
1810         information on providing license text.
1811
1812   :term:`COPYLEFT_LICENSE_EXCLUDE`
1813      A space-separated list of licenses to exclude from the source archived by
1814      the :ref:`ref-classes-archiver` class. In other words, if a license in a
1815      recipe's :term:`LICENSE` value is in the value of
1816      :term:`COPYLEFT_LICENSE_EXCLUDE`, then its source is not archived by the
1817      class.
1818
1819      .. note::
1820
1821         The :term:`COPYLEFT_LICENSE_EXCLUDE` variable takes precedence over the
1822         :term:`COPYLEFT_LICENSE_INCLUDE` variable.
1823
1824      The default value, which is "CLOSED Proprietary", for
1825      :term:`COPYLEFT_LICENSE_EXCLUDE` is set by the
1826      :ref:`ref-classes-copyleft_filter` class, which
1827      is inherited by the :ref:`ref-classes-archiver` class.
1828
1829   :term:`COPYLEFT_LICENSE_INCLUDE`
1830      A space-separated list of licenses to include in the source archived
1831      by the :ref:`ref-classes-archiver` class. In other
1832      words, if a license in a recipe's :term:`LICENSE`
1833      value is in the value of :term:`COPYLEFT_LICENSE_INCLUDE`, then its
1834      source is archived by the class.
1835
1836      The default value is set by the :ref:`ref-classes-copyleft_filter` class,
1837      which is inherited by the :ref:`ref-classes-archiver` class. The default
1838      value includes "GPL*", "LGPL*", and "AGPL*".
1839
1840   :term:`COPYLEFT_PN_EXCLUDE`
1841      A list of recipes to exclude in the source archived by the
1842      :ref:`ref-classes-archiver` class. The :term:`COPYLEFT_PN_EXCLUDE`
1843      variable overrides the license inclusion and exclusion caused through the
1844      :term:`COPYLEFT_LICENSE_INCLUDE` and :term:`COPYLEFT_LICENSE_EXCLUDE`
1845      variables, respectively.
1846
1847      The default value, which is "" indicating to not explicitly exclude
1848      any recipes by name, for :term:`COPYLEFT_PN_EXCLUDE` is set by the
1849      :ref:`ref-classes-copyleft_filter` class, which is inherited by the
1850      :ref:`ref-classes-archiver` class.
1851
1852   :term:`COPYLEFT_PN_INCLUDE`
1853      A list of recipes to include in the source archived by the
1854      :ref:`ref-classes-archiver` class. The :term:`COPYLEFT_PN_INCLUDE`
1855      variable overrides the license inclusion and exclusion caused through the
1856      :term:`COPYLEFT_LICENSE_INCLUDE` and :term:`COPYLEFT_LICENSE_EXCLUDE`
1857      variables, respectively.
1858
1859      The default value, which is "" indicating to not explicitly include
1860      any recipes by name, for :term:`COPYLEFT_PN_INCLUDE` is set by the
1861      :ref:`ref-classes-copyleft_filter` class, which is inherited by the
1862      :ref:`ref-classes-archiver` class.
1863
1864   :term:`COPYLEFT_RECIPE_TYPES`
1865      A space-separated list of recipe types to include in the source
1866      archived by the :ref:`archiver <ref-classes-archiver>` class.
1867      Recipe types are ``target``, :ref:`ref-classes-native`,
1868      :ref:`ref-classes-nativesdk`, :ref:`ref-classes-cross`,
1869      :ref:`ref-classes-crosssdk`, and :ref:`ref-classes-cross-canadian`.
1870
1871      The default value, which is "target*", for :term:`COPYLEFT_RECIPE_TYPES`
1872      is set by the :ref:`ref-classes-copyleft_filter` class, which is
1873      inherited by the :ref:`ref-classes-archiver` class.
1874
1875   :term:`CORE_IMAGE_EXTRA_INSTALL`
1876      Specifies the list of packages to be added to the image. You should
1877      only set this variable in the ``local.conf`` configuration file found
1878      in the :term:`Build Directory`.
1879
1880      This variable replaces ``POKY_EXTRA_INSTALL``, which is no longer
1881      supported.
1882
1883   :term:`COREBASE`
1884      Specifies the parent directory of the OpenEmbedded-Core Metadata
1885      layer (i.e. ``meta``).
1886
1887      It is an important distinction that :term:`COREBASE` points to the parent
1888      of this layer and not the layer itself. Consider an example where you
1889      have cloned the Poky Git repository and retained the ``poky`` name
1890      for your local copy of the repository. In this case, :term:`COREBASE`
1891      points to the ``poky`` folder because it is the parent directory of
1892      the ``poky/meta`` layer.
1893
1894   :term:`COREBASE_FILES`
1895      Lists files from the :term:`COREBASE` directory that
1896      should be copied other than the layers listed in the
1897      ``bblayers.conf`` file. The :term:`COREBASE_FILES` variable allows
1898      to copy metadata from the OpenEmbedded build system
1899      into the extensible SDK.
1900
1901      Explicitly listing files in :term:`COREBASE` is needed because it
1902      typically contains build directories and other files that should not
1903      normally be copied into the extensible SDK. Consequently, the value
1904      of :term:`COREBASE_FILES` is used in order to only copy the files that
1905      are actually needed.
1906
1907   :term:`CPP`
1908      The minimal command and arguments used to run the C preprocessor.
1909
1910   :term:`CPPFLAGS`
1911      Specifies the flags to pass to the C pre-processor (i.e. to both the
1912      C and the C++ compilers). This variable is exported to an environment
1913      variable and thus made visible to the software being built during the
1914      compilation step.
1915
1916      Default initialization for :term:`CPPFLAGS` varies depending on what is
1917      being built:
1918
1919      -  :term:`TARGET_CPPFLAGS` when building for
1920         the target
1921
1922      -  :term:`BUILD_CPPFLAGS` when building for the
1923         build host (i.e. ``-native``)
1924
1925      -  :term:`BUILDSDK_CPPFLAGS` when building
1926         for an SDK (i.e. ``nativesdk-``)
1927
1928   :term:`CROSS_COMPILE`
1929      The toolchain binary prefix for the target tools. The
1930      :term:`CROSS_COMPILE` variable is the same as the
1931      :term:`TARGET_PREFIX` variable.
1932
1933      .. note::
1934
1935         The OpenEmbedded build system sets the :term:`CROSS_COMPILE`
1936         variable only in certain contexts (e.g. when building for kernel
1937         and kernel module recipes).
1938
1939   :term:`CVE_CHECK_CREATE_MANIFEST`
1940      Specifies whether to create a CVE manifest to place in the deploy
1941      directory. The default is "1".
1942
1943   :term:`CVE_CHECK_IGNORE`
1944      This variable is deprecated and should be replaced by :term:`CVE_STATUS`.
1945
1946   :term:`CVE_CHECK_MANIFEST_JSON`
1947      Specifies the path to the CVE manifest in JSON format. See
1948      :term:`CVE_CHECK_CREATE_MANIFEST`.
1949
1950   :term:`CVE_CHECK_MANIFEST_JSON_SUFFIX`
1951      Allows to modify the JSON manifest suffix. See
1952      :term:`CVE_CHECK_MANIFEST_JSON`.
1953
1954   :term:`CVE_CHECK_REPORT_PATCHED`
1955      Specifies whether or not the :ref:`ref-classes-cve-check`
1956      class should report patched or ignored CVEs. The default is "1", but you
1957      may wish to set it to "0" if you do not need patched or ignored CVEs in
1958      the logs.
1959
1960   :term:`CVE_CHECK_SHOW_WARNINGS`
1961      Specifies whether or not the :ref:`ref-classes-cve-check`
1962      class should generate warning messages on the console when unpatched
1963      CVEs are found. The default is "1", but you may wish to set it to "0" if
1964      you are already examining/processing the logs after the build has
1965      completed and thus do not need the warning messages.
1966
1967   :term:`CVE_CHECK_SKIP_RECIPE`
1968      The list of package names (:term:`PN`) for which
1969      CVEs (Common Vulnerabilities and Exposures) are ignored.
1970
1971   :term:`CVE_DB_INCR_UPDATE_AGE_THRES`
1972      Specifies the maximum age of the CVE database in seconds for an
1973      incremental update (instead of a full-download). Use "0" to force a
1974      full-download.
1975
1976   :term:`CVE_DB_UPDATE_INTERVAL`
1977      Specifies the CVE database update interval in seconds, as used by
1978      ``cve-update-db-native``. The default value is "86400" i.e. once a day
1979      (24*60*60). If the value is set to "0" then the update will be forced
1980      every time. Alternatively, a negative value e.g. "-1" will disable
1981      updates entirely.
1982
1983   :term:`CVE_PRODUCT`
1984      In a recipe, defines the name used to match the recipe name
1985      against the name in the upstream `NIST CVE database <https://nvd.nist.gov/>`__.
1986
1987      The default is ${:term:`BPN`} (except for recipes that inherit the
1988      :ref:`ref-classes-pypi` class where it is set based upon
1989      :term:`PYPI_PACKAGE`). If it does not match the name in the NIST CVE
1990      database or matches with multiple entries in the database, the default
1991      value needs to be changed.
1992
1993      Here is an example from the :oe_layerindex:`Berkeley DB recipe </layerindex/recipe/544>`::
1994
1995         CVE_PRODUCT = "oracle_berkeley_db berkeley_db"
1996
1997      Sometimes the product name is not specific enough, for example
1998      "tar" has been matching CVEs for the GNU ``tar`` package and also
1999      the ``node-tar`` node.js extension. To avoid this problem, use the
2000      vendor name as a prefix. The syntax for this is::
2001
2002         CVE_PRODUCT = "vendor:package"
2003
2004   :term:`CVE_STATUS`
2005      The CVE ID which is patched or should be ignored. Here is
2006      an example from the :oe_layerindex:`Python3 recipe</layerindex/recipe/23823>`::
2007
2008         CVE_STATUS[CVE-2020-15523] = "not-applicable-platform: Issue only applies on Windows"
2009
2010      It has the format "reason: description" and the description is optional.
2011      The Reason is mapped to the final CVE state by mapping via
2012      :term:`CVE_CHECK_STATUSMAP`. See :ref:`dev-manual/vulnerabilities:fixing vulnerabilities in recipes`
2013      for details.
2014
2015   :term:`CVE_STATUS_GROUPS`
2016      If there are many CVEs with the same status and reason, they can by simplified by using this
2017      variable instead of many similar lines with :term:`CVE_STATUS`::
2018
2019         CVE_STATUS_GROUPS = "CVE_STATUS_WIN CVE_STATUS_PATCHED"
2020
2021         CVE_STATUS_WIN = "CVE-1234-0001 CVE-1234-0002"
2022         CVE_STATUS_WIN[status] = "not-applicable-platform: Issue only applies on Windows"
2023         CVE_STATUS_PATCHED = "CVE-1234-0003 CVE-1234-0004"
2024         CVE_STATUS_PATCHED[status] = "fixed-version: Fixed externally"
2025
2026   :term:`CVE_CHECK_STATUSMAP`
2027      Mapping variable for all possible reasons of :term:`CVE_STATUS`:
2028      ``Patched``, ``Unpatched`` and ``Ignored``.
2029      See :ref:`ref-classes-cve-check` or ``meta/conf/cve-check-map.conf`` for more details::
2030
2031         CVE_CHECK_STATUSMAP[cpe-incorrect] = "Ignored"
2032
2033   :term:`CVE_VERSION`
2034      In a recipe, defines the version used to match the recipe version
2035      against the version in the `NIST CVE database <https://nvd.nist.gov/>`__
2036      when usign :ref:`ref-classes-cve-check`.
2037
2038      The default is ${:term:`PV`} but if recipes use custom version numbers
2039      which do not map to upstream software component release versions and the versions
2040      used in the CVE database, then this variable can be used to set the
2041      version number for :ref:`ref-classes-cve-check`. Example::
2042
2043          CVE_VERSION = "2.39"
2044
2045   :term:`CVSDIR`
2046      The directory in which files checked out under the CVS system are
2047      stored.
2048
2049   :term:`CXX`
2050      The minimal command and arguments used to run the C++ compiler.
2051
2052   :term:`CXXFLAGS`
2053      Specifies the flags to pass to the C++ compiler. This variable is
2054      exported to an environment variable and thus made visible to the
2055      software being built during the compilation step.
2056
2057      Default initialization for :term:`CXXFLAGS` varies depending on what is
2058      being built:
2059
2060      -  :term:`TARGET_CXXFLAGS` when building for
2061         the target
2062
2063      -  :term:`BUILD_CXXFLAGS` when building for the
2064         build host (i.e. ``-native``)
2065
2066      -  :term:`BUILDSDK_CXXFLAGS` when building
2067         for an SDK (i.e. ``nativesdk-``)
2068
2069   :term:`D`
2070      The destination directory. The location in the :term:`Build Directory`
2071      where components are installed by the
2072      :ref:`ref-tasks-install` task. This location defaults
2073      to::
2074
2075         ${WORKDIR}/image
2076
2077      .. note::
2078
2079         Tasks that read from or write to this directory should run under
2080         :ref:`fakeroot <overview-manual/concepts:fakeroot and pseudo>`.
2081
2082   :term:`DATE`
2083      The date the build was started. Dates appear using the year, month,
2084      and day (YMD) format (e.g. "20150209" for February 9th, 2015).
2085
2086   :term:`DATETIME`
2087      The date and time on which the current build started. The format is
2088      suitable for timestamps.
2089
2090   :term:`DEBIAN_NOAUTONAME`
2091      When the :ref:`ref-classes-debian` class is inherited,
2092      which is the default behavior, :term:`DEBIAN_NOAUTONAME` specifies a
2093      particular package should not be renamed according to Debian library
2094      package naming. You must use the package name as an override when you
2095      set this variable. Here is an example from the ``fontconfig`` recipe::
2096
2097         DEBIAN_NOAUTONAME:fontconfig-utils = "1"
2098
2099   :term:`DEBIANNAME`
2100      When the :ref:`ref-classes-debian` class is inherited,
2101      which is the default behavior, :term:`DEBIANNAME` allows you to override
2102      the library name for an individual package. Overriding the library
2103      name in these cases is rare. You must use the package name as an
2104      override when you set this variable. Here is an example from the
2105      ``dbus`` recipe::
2106
2107         DEBIANNAME:${PN} = "dbus-1"
2108
2109   :term:`DEBUG_BUILD`
2110      Specifies to build packages with debugging information. This
2111      influences the value of the :term:`SELECTED_OPTIMIZATION` variable.
2112
2113   :term:`DEBUG_OPTIMIZATION`
2114      The options to pass in :term:`TARGET_CFLAGS` and :term:`CFLAGS` when
2115      compiling a system for debugging. This variable defaults to "-O
2116      -fno-omit-frame-pointer ${DEBUG_FLAGS} -pipe".
2117
2118   :term:`DEBUG_PREFIX_MAP`
2119      Allows to set C compiler options, such as ``-fdebug-prefix-map``,
2120      ``-fmacro-prefix-map``, and ``-ffile-prefix-map``, which allow to
2121      replace build-time paths by install-time ones in the debugging sections
2122      of binaries.  This makes compiler output files location independent,
2123      at the cost of having to pass an extra command to tell the debugger
2124      where source files are.
2125
2126      This is used by the Yocto Project to guarantee
2127      :doc:`/test-manual/reproducible-builds` even when the source code of
2128      a package uses the ``__FILE__`` or ``assert()`` macros. See the
2129      `reproducible-builds.org <https://reproducible-builds.org/docs/build-path/>`__
2130      website for details.
2131
2132      This variable is set in the ``meta/conf/bitbake.conf`` file. It is
2133      not intended to be user-configurable.
2134
2135   :term:`DEFAULT_PREFERENCE`
2136      Specifies a weak bias for recipe selection priority.
2137
2138      The most common usage of this is variable is to set it to "-1" within
2139      a recipe for a development version of a piece of software. Using the
2140      variable in this way causes the stable version of the recipe to build
2141      by default in the absence of :term:`PREFERRED_VERSION` being used to
2142      build the development version.
2143
2144      .. note::
2145
2146         The bias provided by :term:`DEFAULT_PREFERENCE` is weak and is overridden
2147         by :term:`BBFILE_PRIORITY` if that variable is different between two
2148         layers that contain different versions of the same recipe.
2149
2150   :term:`DEFAULT_TIMEZONE`
2151      Specifies the time zone set in the image.
2152
2153      This variable causes the ``tzdata`` package to configure
2154      ``${sysconfdir}/localtime`` accordingly. Valid values are all files
2155      found in ``/usr/share/zoneinfo`` like ``CET`` or ``Asia/Baku``.
2156
2157   :term:`DEFAULTTUNE`
2158      The default CPU and Application Binary Interface (ABI) tunings (i.e.
2159      the "tune") used by the OpenEmbedded build system. The
2160      :term:`DEFAULTTUNE` helps define
2161      :term:`TUNE_FEATURES`.
2162
2163      The default tune is either implicitly or explicitly set by the
2164      machine (:term:`MACHINE`). However, you can override
2165      the setting using available tunes as defined with
2166      :term:`AVAILTUNES`.
2167
2168   :term:`DEPENDS`
2169      Lists a recipe's build-time dependencies. These are dependencies on
2170      other recipes whose contents (e.g. headers and shared libraries) are
2171      needed by the recipe at build time.
2172
2173      As an example, consider a recipe ``foo`` that contains the following
2174      assignment::
2175
2176          DEPENDS = "bar"
2177
2178      The practical effect of the previous assignment is that all files
2179      installed by bar will be available in the appropriate staging sysroot,
2180      given by the :term:`STAGING_DIR* <STAGING_DIR>` variables, by the time
2181      the :ref:`ref-tasks-configure` task for ``foo`` runs. This mechanism is
2182      implemented by having :ref:`ref-tasks-configure` depend on the
2183      :ref:`ref-tasks-populate_sysroot` task of each recipe listed in
2184      :term:`DEPENDS`, through a
2185      ``[``\ :ref:`deptask <bitbake-user-manual/bitbake-user-manual-metadata:variable flags>`\ ``]``
2186      declaration in the :ref:`ref-classes-base` class.
2187
2188      .. note::
2189
2190         It seldom is necessary to reference, for example, :term:`STAGING_DIR_HOST`
2191         explicitly. The standard classes and build-related variables are
2192         configured to automatically use the appropriate staging sysroots.
2193
2194      As another example, :term:`DEPENDS` can also be used to add utilities
2195      that run on the build machine during the build. For example, a recipe
2196      that makes use of a code generator built by the recipe ``codegen``
2197      might have the following::
2198
2199         DEPENDS = "codegen-native"
2200
2201      For more
2202      information, see the :ref:`ref-classes-native` class and
2203      the :term:`EXTRANATIVEPATH` variable.
2204
2205      .. note::
2206
2207         -  :term:`DEPENDS` is a list of recipe names. Or, to be more precise,
2208            it is a list of :term:`PROVIDES` names, which
2209            usually match recipe names. Putting a package name such as
2210            "foo-dev" in :term:`DEPENDS` does not make sense. Use "foo"
2211            instead, as this will put files from all the packages that make
2212            up ``foo``, which includes those from ``foo-dev``, into the
2213            sysroot.
2214
2215         -  One recipe having another recipe in :term:`DEPENDS` does not by
2216            itself add any runtime dependencies between the packages
2217            produced by the two recipes. However, as explained in the
2218            ":ref:`overview-manual/concepts:automatically added runtime dependencies`"
2219            section in the Yocto Project Overview and Concepts Manual,
2220            runtime dependencies will often be added automatically, meaning
2221            :term:`DEPENDS` alone is sufficient for most recipes.
2222
2223         -  Counterintuitively, :term:`DEPENDS` is often necessary even for
2224            recipes that install precompiled components. For example, if
2225            ``libfoo`` is a precompiled library that links against
2226            ``libbar``, then linking against ``libfoo`` requires both
2227            ``libfoo`` and ``libbar`` to be available in the sysroot.
2228            Without a :term:`DEPENDS` from the recipe that installs ``libfoo``
2229            to the recipe that installs ``libbar``, other recipes might
2230            fail to link against ``libfoo``.
2231
2232      For information on runtime dependencies, see the :term:`RDEPENDS`
2233      variable. You can also see the
2234      ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:tasks`" and
2235      ":ref:`bitbake-user-manual/bitbake-user-manual-execution:dependencies`"
2236      sections in the BitBake User Manual for additional information on tasks
2237      and dependencies.
2238
2239   :term:`DEPLOY_DIR`
2240      Points to the general area that the OpenEmbedded build system uses to
2241      place images, packages, SDKs, and other output files that are ready
2242      to be used outside of the build system. By default, this directory
2243      resides within the :term:`Build Directory` as ``${TMPDIR}/deploy``.
2244
2245      For more information on the structure of the Build Directory, see
2246      ":ref:`ref-manual/structure:the build directory --- ``build/```" section.
2247      For more detail on the contents of the ``deploy`` directory, see the
2248      ":ref:`overview-manual/concepts:images`",
2249      ":ref:`overview-manual/concepts:package feeds`", and
2250      ":ref:`overview-manual/concepts:application development sdk`" sections all in the
2251      Yocto Project Overview and Concepts Manual.
2252
2253   :term:`DEPLOY_DIR_DEB`
2254      Points to the area that the OpenEmbedded build system uses to place
2255      Debian packages that are ready to be used outside of the build
2256      system. This variable applies only when :term:`PACKAGE_CLASSES` contains
2257      ":ref:`ref-classes-package_deb`".
2258
2259      The BitBake configuration file initially defines the
2260      :term:`DEPLOY_DIR_DEB` variable as a sub-folder of
2261      :term:`DEPLOY_DIR`::
2262
2263         DEPLOY_DIR_DEB = "${DEPLOY_DIR}/deb"
2264
2265      The :ref:`ref-classes-package_deb` class uses the
2266      :term:`DEPLOY_DIR_DEB` variable to make sure the
2267      :ref:`ref-tasks-package_write_deb` task
2268      writes Debian packages into the appropriate folder. For more
2269      information on how packaging works, see the
2270      ":ref:`overview-manual/concepts:package feeds`" section
2271      in the Yocto Project Overview and Concepts Manual.
2272
2273   :term:`DEPLOY_DIR_IMAGE`
2274      Points to the area that the OpenEmbedded build system uses to place
2275      images and other associated output files that are ready to be
2276      deployed onto the target machine. The directory is machine-specific
2277      as it contains the ``${MACHINE}`` name. By default, this directory
2278      resides within the :term:`Build Directory` as
2279      ``${DEPLOY_DIR}/images/${MACHINE}/``.
2280
2281      It must not be used directly in recipes when deploying files. Instead,
2282      it's only useful when a recipe needs to "read" a file already deployed
2283      by a dependency. So, it should be filled with the contents of
2284      :term:`DEPLOYDIR` by the :ref:`ref-classes-deploy` class or with the
2285      contents of :term:`IMGDEPLOYDIR` by the :ref:`ref-classes-image` class.
2286
2287      For more information on the structure of the :term:`Build Directory`, see
2288      ":ref:`ref-manual/structure:the build directory --- ``build/```" section.
2289      For more detail on the contents of the ``deploy`` directory, see the
2290      ":ref:`overview-manual/concepts:images`" and
2291      ":ref:`overview-manual/concepts:application development sdk`" sections both in
2292      the Yocto Project Overview and Concepts Manual.
2293
2294   :term:`DEPLOY_DIR_IPK`
2295      Points to the area that the OpenEmbedded build system uses to place
2296      IPK packages that are ready to be used outside of the build system.
2297      This variable applies only when :term:`PACKAGE_CLASSES` contains
2298      ":ref:`ref-classes-package_ipk`".
2299
2300      The BitBake configuration file initially defines this variable as a
2301      sub-folder of :term:`DEPLOY_DIR`::
2302
2303         DEPLOY_DIR_IPK = "${DEPLOY_DIR}/ipk"
2304
2305      The :ref:`ref-classes-package_ipk` class uses the :term:`DEPLOY_DIR_IPK`
2306      variable to make sure the :ref:`ref-tasks-package_write_ipk` task
2307      writes IPK packages into the appropriate folder. For more information
2308      on how packaging works, see the
2309      ":ref:`overview-manual/concepts:package feeds`" section
2310      in the Yocto Project Overview and Concepts Manual.
2311
2312   :term:`DEPLOY_DIR_RPM`
2313      Points to the area that the OpenEmbedded build system uses to place
2314      RPM packages that are ready to be used outside of the build system.
2315      This variable applies only when :term:`PACKAGE_CLASSES` contains
2316      ":ref:`ref-classes-package_rpm`".
2317
2318      The BitBake configuration file initially defines this variable as a
2319      sub-folder of :term:`DEPLOY_DIR`::
2320
2321         DEPLOY_DIR_RPM = "${DEPLOY_DIR}/rpm"
2322
2323      The :ref:`ref-classes-package_rpm` class uses the
2324      :term:`DEPLOY_DIR_RPM` variable to make sure the
2325      :ref:`ref-tasks-package_write_rpm` task
2326      writes RPM packages into the appropriate folder. For more information
2327      on how packaging works, see the
2328      ":ref:`overview-manual/concepts:package feeds`" section
2329      in the Yocto Project Overview and Concepts Manual.
2330
2331   :term:`DEPLOYDIR`
2332      When inheriting the :ref:`ref-classes-deploy` class, the
2333      :term:`DEPLOYDIR` points to a temporary work area for deployed files that
2334      is set in the :ref:`ref-classes-deploy` class as follows::
2335
2336         DEPLOYDIR = "${WORKDIR}/deploy-${PN}"
2337
2338      Recipes inheriting the :ref:`ref-classes-deploy` class should copy files to be
2339      deployed into :term:`DEPLOYDIR`, and the class will take care of copying
2340      them into :term:`DEPLOY_DIR_IMAGE`
2341      afterwards.
2342
2343   :term:`DESCRIPTION`
2344      The package description used by package managers. If not set,
2345      :term:`DESCRIPTION` takes the value of the :term:`SUMMARY`
2346      variable.
2347
2348   :term:`DEV_PKG_DEPENDENCY`
2349      Provides an easy way for recipes to disable or adjust the runtime recommendation
2350      (:term:`RRECOMMENDS`) of the ``${PN}-dev`` package on the main
2351      (``${PN}``) package.
2352
2353   :term:`DISABLE_STATIC`
2354      Used in order to disable static linking by default (in order to save
2355      space, since static libraries are often unused in embedded systems.)
2356      The default value is " --disable-static", however it can be set to ""
2357      in order to enable static linking if desired. Certain recipes do this
2358      individually, and also there is a
2359      ``meta/conf/distro/include/no-static-libs.inc`` include file that
2360      disables static linking for a number of recipes. Some software
2361      packages or build tools (such as CMake) have explicit support for
2362      enabling / disabling static linking, and in those cases
2363      :term:`DISABLE_STATIC` is not used.
2364
2365   :term:`DISTRO`
2366      The short name of the distribution. For information on the long name
2367      of the distribution, see the :term:`DISTRO_NAME`
2368      variable.
2369
2370      The :term:`DISTRO` variable corresponds to a distribution configuration
2371      file whose root name is the same as the variable's argument and whose
2372      filename extension is ``.conf``. For example, the distribution
2373      configuration file for the Poky distribution is named ``poky.conf``
2374      and resides in the ``meta-poky/conf/distro`` directory of the
2375      :term:`Source Directory`.
2376
2377      Within that ``poky.conf`` file, the :term:`DISTRO` variable is set as
2378      follows::
2379
2380         DISTRO = "poky"
2381
2382      Distribution configuration files are located in a ``conf/distro``
2383      directory within the :term:`Metadata` that contains the
2384      distribution configuration. The value for :term:`DISTRO` must not contain
2385      spaces, and is typically all lower-case.
2386
2387      .. note::
2388
2389         If the :term:`DISTRO` variable is blank, a set of default configurations
2390         are used, which are specified within
2391         ``meta/conf/distro/defaultsetup.conf`` also in the Source Directory.
2392
2393   :term:`DISTRO_CODENAME`
2394      Specifies a codename for the distribution being built.
2395
2396   :term:`DISTRO_EXTRA_RDEPENDS`
2397      Specifies a list of distro-specific packages to add to all images.
2398      This variable takes effect through ``packagegroup-base`` so the
2399      variable only really applies to the more full-featured images that
2400      include ``packagegroup-base``. You can use this variable to keep
2401      distro policy out of generic images. As with all other distro
2402      variables, you set this variable in the distro ``.conf`` file.
2403
2404   :term:`DISTRO_EXTRA_RRECOMMENDS`
2405      Specifies a list of distro-specific packages to add to all images if
2406      the packages exist. The packages might not exist or be empty (e.g.
2407      kernel modules). The list of packages are automatically installed but
2408      you can remove them.
2409
2410   :term:`DISTRO_FEATURES`
2411      The software support you want in your distribution for various
2412      features. You define your distribution features in the distribution
2413      configuration file.
2414
2415      In most cases, the presence or absence of a feature in
2416      :term:`DISTRO_FEATURES` is translated to the appropriate option supplied
2417      to the configure script during the
2418      :ref:`ref-tasks-configure` task for recipes that
2419      optionally support the feature. For example, specifying "x11" in
2420      :term:`DISTRO_FEATURES`, causes every piece of software built for the
2421      target that can optionally support X11 to have its X11 support
2422      enabled.
2423
2424      .. note::
2425
2426         Just enabling :term:`DISTRO_FEATURES` alone doesn't
2427         enable feature support for packages. Mechanisms such as making
2428         :term:`PACKAGECONFIG` track :term:`DISTRO_FEATURES` are used
2429         to enable/disable package features.
2430
2431      Two more examples are Bluetooth and NFS support. For a more complete
2432      list of features that ships with the Yocto Project and that you can
2433      provide with this variable, see the ":ref:`ref-features-distro`" section.
2434
2435   :term:`DISTRO_FEATURES_BACKFILL`
2436      A space-separated list of features to be added to :term:`DISTRO_FEATURES`
2437      if not also present in :term:`DISTRO_FEATURES_BACKFILL_CONSIDERED`.
2438
2439      This variable is set in the ``meta/conf/bitbake.conf`` file. It is
2440      not intended to be user-configurable. It is best to just reference
2441      the variable to see which distro features are being
2442      :ref:`backfilled <ref-features-backfill>` for all distro configurations.
2443
2444   :term:`DISTRO_FEATURES_BACKFILL_CONSIDERED`
2445      A space-separated list of features from :term:`DISTRO_FEATURES_BACKFILL`
2446      that should not be :ref:`backfilled <ref-features-backfill>` (i.e. added
2447      to :term:`DISTRO_FEATURES`) during the build.
2448
2449      This corresponds to an opt-out mechanism. When new default distro
2450      features are introduced, distribution maintainers can review (`consider`)
2451      them and decide to exclude them from the
2452      :ref:`backfilled <ref-features-backfill>` features. Therefore, the
2453      combination of :term:`DISTRO_FEATURES_BACKFILL` and
2454      :term:`DISTRO_FEATURES_BACKFILL_CONSIDERED` makes it possible to
2455      add new default features without breaking existing distributions.
2456
2457
2458   :term:`DISTRO_FEATURES_DEFAULT`
2459      A convenience variable that gives you the default list of distro
2460      features with the exception of any features specific to the C library
2461      (``libc``).
2462
2463      When creating a custom distribution, you might find it useful to be
2464      able to reuse the default
2465      :term:`DISTRO_FEATURES` options without the
2466      need to write out the full set. Here is an example that uses
2467      :term:`DISTRO_FEATURES_DEFAULT` from a custom distro configuration file::
2468
2469         DISTRO_FEATURES ?= "${DISTRO_FEATURES_DEFAULT} myfeature"
2470
2471   :term:`DISTRO_FEATURES_FILTER_NATIVE`
2472      Specifies a list of features that if present in the target
2473      :term:`DISTRO_FEATURES` value should be
2474      included in :term:`DISTRO_FEATURES` when building native recipes. This
2475      variable is used in addition to the features filtered using the
2476      :term:`DISTRO_FEATURES_NATIVE`
2477      variable.
2478
2479   :term:`DISTRO_FEATURES_FILTER_NATIVESDK`
2480      Specifies a list of features that if present in the target
2481      :term:`DISTRO_FEATURES` value should be included in
2482      :term:`DISTRO_FEATURES` when building :ref:`ref-classes-nativesdk`
2483      recipes. This variable is used in addition to the features filtered using
2484      the :term:`DISTRO_FEATURES_NATIVESDK` variable.
2485
2486   :term:`DISTRO_FEATURES_NATIVE`
2487      Specifies a list of features that should be included in
2488      :term:`DISTRO_FEATURES` when building native
2489      recipes. This variable is used in addition to the features filtered
2490      using the
2491      :term:`DISTRO_FEATURES_FILTER_NATIVE`
2492      variable.
2493
2494   :term:`DISTRO_FEATURES_NATIVESDK`
2495      Specifies a list of features that should be included in
2496      :term:`DISTRO_FEATURES` when building
2497      :ref:`ref-classes-nativesdk` recipes. This variable is used
2498      in addition to the features filtered using the
2499      :term:`DISTRO_FEATURES_FILTER_NATIVESDK` variable.
2500
2501   :term:`DISTRO_NAME`
2502      The long name of the distribution. For information on the short name
2503      of the distribution, see the :term:`DISTRO` variable.
2504
2505      The :term:`DISTRO_NAME` variable corresponds to a distribution
2506      configuration file whose root name is the same as the variable's
2507      argument and whose filename extension is ``.conf``. For example, the
2508      distribution configuration file for the Poky distribution is named
2509      ``poky.conf`` and resides in the ``meta-poky/conf/distro`` directory
2510      of the :term:`Source Directory`.
2511
2512      Within that ``poky.conf`` file, the :term:`DISTRO_NAME` variable is set
2513      as follows::
2514
2515         DISTRO_NAME = "Poky (Yocto Project Reference Distro)"
2516
2517      Distribution configuration files are located in a ``conf/distro``
2518      directory within the :term:`Metadata` that contains the
2519      distribution configuration.
2520
2521      .. note::
2522
2523         If the :term:`DISTRO_NAME` variable is blank, a set of default
2524         configurations are used, which are specified within
2525         ``meta/conf/distro/defaultsetup.conf`` also in the Source Directory.
2526
2527   :term:`DISTRO_VERSION`
2528      The version of the distribution.
2529
2530   :term:`DISTROOVERRIDES`
2531      A colon-separated list of overrides specific to the current
2532      distribution. By default, this list includes the value of
2533      :term:`DISTRO`.
2534
2535      You can extend :term:`DISTROOVERRIDES` to add extra overrides that should
2536      apply to the distribution.
2537
2538      The underlying mechanism behind :term:`DISTROOVERRIDES` is simply that it
2539      is included in the default value of
2540      :term:`OVERRIDES`.
2541
2542      Here is an example from :yocto_git:`meta-poky/conf/distro/poky-tiny.conf
2543      </poky/tree/meta-poky/conf/distro/poky-tiny.conf>`::
2544
2545         DISTROOVERRIDES = "poky:poky-tiny"
2546
2547   :term:`DL_DIR`
2548      The central download directory used by the build process to store
2549      downloads. By default, :term:`DL_DIR` gets files suitable for mirroring
2550      for everything except Git repositories. If you want tarballs of Git
2551      repositories, use the
2552      :term:`BB_GENERATE_MIRROR_TARBALLS`
2553      variable.
2554
2555      You can set this directory by defining the :term:`DL_DIR` variable in the
2556      ``conf/local.conf`` file. This directory is self-maintaining and you
2557      should not have to touch it. By default, the directory is
2558      ``downloads`` in the :term:`Build Directory`::
2559
2560         #DL_DIR ?= "${TOPDIR}/downloads"
2561
2562      To specify a different download directory,
2563      simply remove the comment from the line and provide your directory.
2564
2565      During a first build, the system downloads many different source code
2566      tarballs from various upstream projects. Downloading can take a
2567      while, particularly if your network connection is slow. Tarballs are
2568      all stored in the directory defined by :term:`DL_DIR` and the build
2569      system looks there first to find source tarballs.
2570
2571      .. note::
2572
2573         When wiping and rebuilding, you can preserve this directory to
2574         speed up this part of subsequent builds.
2575
2576      You can safely share this directory between multiple builds on the
2577      same development machine. For additional information on how the build
2578      process gets source files when working behind a firewall or proxy
2579      server, see this specific question in the ":doc:`faq`"
2580      chapter. You can also refer to the
2581      ":yocto_wiki:`Working Behind a Network Proxy </Working_Behind_a_Network_Proxy>`"
2582      Wiki page.
2583
2584   :term:`DOC_COMPRESS`
2585      When inheriting the :ref:`ref-classes-compress_doc`
2586      class, this variable sets the compression policy used when the
2587      OpenEmbedded build system compresses manual and info pages. By
2588      default, the compression method used is gz (gzip). Other policies
2589      available are xz and bz2.
2590
2591      For information on policies and on how to use this variable, see the
2592      comments in the ``meta/classes-recipe/compress_doc.bbclass`` file.
2593
2594   :term:`DT_FILES`
2595      Space-separated list of device tree source files to compile using
2596      a recipe that inherits the :ref:`ref-classes-devicetree` class. These
2597      are relative to the :term:`DT_FILES_PATH`.
2598
2599      For convenience, both ``.dts`` and ``.dtb`` extensions can be used.
2600
2601      Use an empty string (default) to build all device tree sources within
2602      the :term:`DT_FILES_PATH` directory.
2603
2604   :term:`DT_FILES_PATH`
2605      When compiling out-of-tree device tree sources using a recipe that
2606      inherits the :ref:`ref-classes-devicetree` class, this variable specifies
2607      the path to the directory containing dts files to build.
2608
2609      Defaults to the :term:`S` directory.
2610
2611   :term:`DT_PADDING_SIZE`
2612      When inheriting the :ref:`ref-classes-devicetree` class, this variable
2613      specifies the size of padding appended to the device tree blob, used as
2614      extra space typically for additional properties during boot.
2615
2616   :term:`EFI_ARCH`
2617      The CPU architecture name within EFI standard. Set in
2618      :oe_git:`meta/conf/image-uefi.conf
2619      <openembedded-core/tree/meta/conf/image-uefi.conf>`.
2620
2621   :term:`EFI_PROVIDER`
2622      When building bootable images (i.e. where ``hddimg``, ``iso``, or
2623      ``wic.vmdk`` is in :term:`IMAGE_FSTYPES`), the
2624      :term:`EFI_PROVIDER` variable specifies the EFI bootloader to use. The
2625      default is "grub-efi", but "systemd-boot" can be used instead.
2626
2627      See the :ref:`ref-classes-systemd-boot` and :ref:`ref-classes-image-live`
2628      classes for more information.
2629
2630   :term:`EFI_UKI_DIR`
2631      The primary place for the UKI image inside the EFI System Partition.
2632
2633   :term:`EFI_UKI_PATH`
2634      The path for the UKI image inside the root filesystem.
2635
2636   :term:`ENABLE_BINARY_LOCALE_GENERATION`
2637      Variable that controls which locales for ``glibc`` are generated
2638      during the build (useful if the target device has 64Mbytes of RAM or
2639      less).
2640
2641   :term:`ERR_REPORT_DIR`
2642      When used with the :ref:`ref-classes-report-error` class, specifies the
2643      path used for storing the debug files created by the :ref:`error reporting
2644      tool <dev-manual/error-reporting-tool:using the error reporting tool>`,
2645      which allows you to submit build errors you encounter to a central
2646      database. By default, the value of this variable is
2647      ``${``\ :term:`LOG_DIR`\ ``}/error-report``.
2648
2649      You can set :term:`ERR_REPORT_DIR` to the path you want the error
2650      reporting tool to store the debug files as follows in your
2651      ``local.conf`` file::
2652
2653         ERR_REPORT_DIR = "path"
2654
2655   :term:`ERROR_QA`
2656      Specifies the quality assurance checks whose failures are reported as
2657      errors by the OpenEmbedded build system. You set this variable in
2658      your distribution configuration file. For a list of the checks you
2659      can control with this variable, see the
2660      ":ref:`ref-classes-insane`" section.
2661
2662   :term:`ESDK_CLASS_INHERIT_DISABLE`
2663      A list of classes to remove from the :term:`INHERIT`
2664      value globally within the extensible SDK configuration. The
2665      :ref:`populate-sdk-ext <ref-classes-populate-sdk-*>` class sets the
2666      default value::
2667
2668         ESDK_CLASS_INHERIT_DISABLE ?= "buildhistory icecc"
2669
2670      Some classes are not generally applicable within the extensible SDK
2671      context. You can use this variable to disable those classes.
2672
2673      For additional information on how to customize the extensible SDK's
2674      configuration, see the
2675      ":ref:`sdk-manual/appendix-customizing:configuring the extensible sdk`"
2676      section in the Yocto Project Application Development and the
2677      Extensible Software Development Kit (eSDK) manual.
2678
2679   :term:`ESDK_LOCALCONF_ALLOW`
2680      A list of variables allowed through from the OpenEmbedded build
2681      system configuration into the extensible SDK configuration. By
2682      default, the list of variables is empty and is set in the
2683      :ref:`populate-sdk-ext <ref-classes-populate-sdk-*>` class.
2684
2685      This list overrides the variables specified using the
2686      :term:`ESDK_LOCALCONF_REMOVE` variable as well as
2687      other variables automatically added due to the "/" character
2688      being found at the start of the
2689      value, which is usually indicative of being a path and thus might not
2690      be valid on the system where the SDK is installed.
2691
2692      For additional information on how to customize the extensible SDK's
2693      configuration, see the
2694      ":ref:`sdk-manual/appendix-customizing:configuring the extensible sdk`"
2695      section in the Yocto Project Application Development and the
2696      Extensible Software Development Kit (eSDK) manual.
2697
2698   :term:`ESDK_LOCALCONF_REMOVE`
2699      A list of variables not allowed through from the OpenEmbedded build
2700      system configuration into the extensible SDK configuration. Usually,
2701      these are variables that are specific to the machine on which the
2702      build system is running and thus would be potentially problematic
2703      within the extensible SDK.
2704
2705      By default, :term:`ESDK_LOCALCONF_REMOVE` is set in the
2706      :ref:`populate-sdk-ext <ref-classes-populate-sdk-*>` class and
2707      excludes the following variables:
2708
2709      - :term:`CONF_VERSION`
2710      - :term:`BB_NUMBER_THREADS`
2711      - :term:`BB_NUMBER_PARSE_THREADS`
2712      - :term:`PARALLEL_MAKE`
2713      - :term:`PRSERV_HOST`
2714      - :term:`SSTATE_MIRRORS` :term:`DL_DIR`
2715      - :term:`SSTATE_DIR` :term:`TMPDIR`
2716      - :term:`BB_SERVER_TIMEOUT`
2717
2718      For additional information on how to customize the extensible SDK's
2719      configuration, see the
2720      ":ref:`sdk-manual/appendix-customizing:configuring the extensible sdk`"
2721      section in the Yocto Project Application Development and the
2722      Extensible Software Development Kit (eSDK) manual.
2723
2724   :term:`EXCLUDE_FROM_SHLIBS`
2725      Triggers the OpenEmbedded build system's shared libraries resolver to
2726      exclude an entire package when scanning for shared libraries.
2727
2728      .. note::
2729
2730         The shared libraries resolver's functionality results in part from
2731         the internal function ``package_do_shlibs``, which is part of the
2732         :ref:`ref-tasks-package` task. You should be aware that the shared
2733         libraries resolver might implicitly define some dependencies between
2734         packages.
2735
2736      The :term:`EXCLUDE_FROM_SHLIBS` variable is similar to the
2737      :term:`PRIVATE_LIBS` variable, which excludes a
2738      package's particular libraries only and not the whole package.
2739
2740      Use the :term:`EXCLUDE_FROM_SHLIBS` variable by setting it to "1" for a
2741      particular package::
2742
2743         EXCLUDE_FROM_SHLIBS = "1"
2744
2745   :term:`EXCLUDE_FROM_WORLD`
2746      Directs BitBake to exclude a recipe from world builds (i.e.
2747      ``bitbake world``). During world builds, BitBake locates, parses and
2748      builds all recipes found in every layer exposed in the
2749      ``bblayers.conf`` configuration file.
2750
2751      To exclude a recipe from a world build using this variable, set the
2752      variable to "1" in the recipe.
2753
2754      .. note::
2755
2756         Recipes added to :term:`EXCLUDE_FROM_WORLD` may still be built during a
2757         world build in order to satisfy dependencies of other recipes. Adding
2758         a recipe to :term:`EXCLUDE_FROM_WORLD` only ensures that the recipe is not
2759         explicitly added to the list of build targets in a world build.
2760
2761   :term:`EXTENDPE`
2762      Used with file and pathnames to create a prefix for a recipe's
2763      version based on the recipe's :term:`PE` value. If :term:`PE`
2764      is set and greater than zero for a recipe, :term:`EXTENDPE` becomes that
2765      value (e.g if :term:`PE` is equal to "1" then :term:`EXTENDPE` becomes "1").
2766      If a recipe's :term:`PE` is not set (the default) or is equal to zero,
2767      :term:`EXTENDPE` becomes "".
2768
2769      See the :term:`STAMP` variable for an example.
2770
2771   :term:`EXTENDPKGV`
2772      The full package version specification as it appears on the final
2773      packages produced by a recipe. The variable's value is normally used
2774      to fix a runtime dependency to the exact same version of another
2775      package in the same recipe::
2776
2777         RDEPENDS:${PN}-additional-module = "${PN} (= ${EXTENDPKGV})"
2778
2779      The dependency relationships are intended to force the package
2780      manager to upgrade these types of packages in lock-step.
2781
2782   :term:`EXTERNAL_KERNEL_TOOLS`
2783      When set, the :term:`EXTERNAL_KERNEL_TOOLS` variable indicates that these
2784      tools are not in the source tree.
2785
2786      When kernel tools are available in the tree, they are preferred over
2787      any externally installed tools. Setting the :term:`EXTERNAL_KERNEL_TOOLS`
2788      variable tells the OpenEmbedded build system to prefer the installed
2789      external tools. See the :ref:`ref-classes-kernel-yocto` class in
2790      ``meta/classes-recipe`` to see how the variable is used.
2791
2792   :term:`EXTERNAL_KERNEL_DEVICETREE`
2793      When inheriting :ref:`ref-classes-kernel-fitimage` and a
2794      :term:`PREFERRED_PROVIDER` for ``virtual/dtb`` set to ``devicetree``, the
2795      variable :term:`EXTERNAL_KERNEL_DEVICETREE` can be used to specify a
2796      directory containing one or more compiled device tree or device tree
2797      overlays to use.
2798
2799   :term:`KERNEL_LOCALVERSION`
2800      This variable allows to append a string to the version
2801      of the kernel image. This corresponds to the ``CONFIG_LOCALVERSION``
2802      kernel configuration parameter.
2803
2804      Using this variable is only useful when you are using a kernel recipe
2805      inheriting the :ref:`ref-classes-kernel` class, and which doesn't
2806      already set a local version. Therefore, setting this variable has no
2807      impact on ``linux-yocto`` kernels.
2808
2809   :term:`EXTERNAL_TOOLCHAIN`
2810      When you intend to use an
2811      :ref:`external toolchain <dev-manual/external-toolchain:optionally using an external toolchain>`,
2812      this variable allows to specify the directory where this toolchain was
2813      installed.
2814
2815   :term:`EXTERNALSRC`
2816      When inheriting the :ref:`ref-classes-externalsrc`
2817      class, this variable points to the source tree, which is outside of
2818      the OpenEmbedded build system. When set, this variable sets the
2819      :term:`S` variable, which is what the OpenEmbedded build
2820      system uses to locate unpacked recipe source code.
2821
2822      See the ":ref:`ref-classes-externalsrc`" section for details. You
2823      can also find information on how to use this variable in the
2824      ":ref:`dev-manual/building:building software from an external source`"
2825      section in the Yocto Project Development Tasks Manual.
2826
2827   :term:`EXTERNALSRC_BUILD`
2828      When inheriting the :ref:`ref-classes-externalsrc`
2829      class, this variable points to the directory in which the recipe's
2830      source code is built, which is outside of the OpenEmbedded build
2831      system. When set, this variable sets the :term:`B` variable,
2832      which is what the OpenEmbedded build system uses to locate the
2833      :term:`Build Directory`.
2834
2835      See the ":ref:`ref-classes-externalsrc`" section for details. You
2836      can also find information on how to use this variable in the
2837      ":ref:`dev-manual/building:building software from an external source`"
2838      section in the Yocto Project Development Tasks Manual.
2839
2840   :term:`EXTRA_AUTORECONF`
2841      For recipes inheriting the :ref:`ref-classes-autotools`
2842      class, you can use :term:`EXTRA_AUTORECONF` to specify extra options to
2843      pass to the ``autoreconf`` command that is executed during the
2844      :ref:`ref-tasks-configure` task.
2845
2846      The default value is "--exclude=autopoint".
2847
2848   :term:`EXTRA_IMAGE_FEATURES`
2849      A list of additional features to include in an image. When listing
2850      more than one feature, separate them with a space.
2851
2852      Typically, you configure this variable in your ``local.conf`` file,
2853      which is found in the :term:`Build Directory`. Although you can use this
2854      variable from within a recipe, best practices dictate that you do not.
2855
2856      .. note::
2857
2858         To enable primary features from within the image recipe, use the
2859         :term:`IMAGE_FEATURES` variable.
2860
2861      Here are some examples of features you can add:
2862
2863        - "dbg-pkgs" --- adds -dbg packages for all installed packages including
2864          symbol information for debugging and profiling.
2865
2866        - "empty-root-password" --- This feature can be used if you want to
2867          allow root login with an empty password.
2868        - "allow-empty-password" --- Allows Dropbear and OpenSSH to accept
2869          logins from accounts having an empty password string.
2870        - "allow-root-login" --- Allows Dropbear and OpenSSH to accept root logins.
2871        - "post-install-logging" --- Enables logging postinstall script runs to
2872          the ``/var/log/postinstall.log`` file on first boot of the image on
2873          the target system.
2874        - "dev-pkgs" --- adds -dev packages for all installed packages. This is
2875          useful if you want to develop against the libraries in the image.
2876        - "read-only-rootfs" --- creates an image whose root filesystem is
2877          read-only. See the
2878          ":ref:`dev-manual/read-only-rootfs:creating a read-only root filesystem`"
2879          section in the Yocto Project Development Tasks Manual for more
2880          information
2881        - "tools-debug" --- adds debugging tools such as gdb and strace.
2882        - "tools-sdk" --- adds development tools such as gcc, make,
2883          pkgconfig and so forth.
2884        - "tools-testapps" --- adds useful testing tools
2885          such as ts_print, aplay, arecord and so forth.
2886
2887      For a complete list of image features that ships with the Yocto
2888      Project, see the ":ref:`ref-features-image`" section.
2889
2890      For an example that shows how to customize your image by using this
2891      variable, see the ":ref:`dev-manual/customizing-images:customizing images using custom \`\`image_features\`\` and \`\`extra_image_features\`\``"
2892      section in the Yocto Project Development Tasks Manual.
2893
2894   :term:`EXTRA_IMAGECMD`
2895      Specifies additional options for the image creation command that has
2896      been specified in :term:`IMAGE_CMD`. When setting
2897      this variable, use an override for the associated image type. Here is
2898      an example::
2899
2900         EXTRA_IMAGECMD:ext3 ?= "-i 4096"
2901
2902   :term:`EXTRA_IMAGEDEPENDS`
2903      A list of recipes to build that do not provide packages for
2904      installing into the root filesystem.
2905
2906      Sometimes a recipe is required to build the final image but is not
2907      needed in the root filesystem. You can use the :term:`EXTRA_IMAGEDEPENDS`
2908      variable to list these recipes and thus specify the dependencies. A
2909      typical example is a required bootloader in a machine configuration.
2910
2911      .. note::
2912
2913         To add packages to the root filesystem, see the various
2914         :term:`RDEPENDS` and :term:`RRECOMMENDS` variables.
2915
2916   :term:`EXTRA_OECMAKE`
2917      Additional `CMake <https://cmake.org/overview/>`__ options. See the
2918      :ref:`ref-classes-cmake` class for additional information.
2919
2920   :term:`EXTRA_OECONF`
2921      Additional ``configure`` script options. See
2922      :term:`PACKAGECONFIG_CONFARGS` for
2923      additional information on passing configure script options.
2924
2925   :term:`EXTRA_OEMAKE`
2926      Additional GNU ``make`` options.
2927
2928      Because the :term:`EXTRA_OEMAKE` defaults to "", you need to set the
2929      variable to specify any required GNU options.
2930
2931      :term:`PARALLEL_MAKE` and
2932      :term:`PARALLEL_MAKEINST` also make use of
2933      :term:`EXTRA_OEMAKE` to pass the required flags.
2934
2935   :term:`EXTRA_OESCONS`
2936      When inheriting the :ref:`ref-classes-scons` class, this
2937      variable specifies additional configuration options you want to pass
2938      to the ``scons`` command line.
2939
2940   :term:`EXTRA_OEMESON`
2941      Additional `Meson <https://mesonbuild.com/>`__ options. See the
2942      :ref:`ref-classes-meson` class for additional information.
2943
2944      In addition to standard Meson options, such options correspond to
2945      `Meson build options <https://mesonbuild.com/Build-options.html>`__
2946      defined in the ``meson_options.txt`` file in the sources to build.
2947      Here is an example::
2948
2949         EXTRA_OEMESON = "-Dpython=disabled -Dvalgrind=disabled"
2950
2951      Note that any custom value for the Meson ``--buildtype`` option
2952      should be set through the :term:`MESON_BUILDTYPE` variable.
2953
2954   :term:`EXTRA_USERS_PARAMS`
2955      When inheriting the :ref:`ref-classes-extrausers`
2956      class, this variable provides image level user and group operations.
2957      This is a more global method of providing user and group
2958      configuration as compared to using the
2959      :ref:`ref-classes-useradd` class, which ties user and
2960      group configurations to a specific recipe.
2961
2962      The set list of commands you can configure using the
2963      :term:`EXTRA_USERS_PARAMS` is shown in the
2964      :ref:`ref-classes-extrausers` class. These commands map to the normal
2965      Unix commands of the same names::
2966
2967         # EXTRA_USERS_PARAMS = "\
2968         # useradd -p '' tester; \
2969         # groupadd developers; \
2970         # userdel nobody; \
2971         # groupdel -g video; \
2972         # groupmod -g 1020 developers; \
2973         # usermod -s /bin/sh tester; \
2974         # "
2975
2976      Hardcoded passwords are supported via the ``-p`` parameters for
2977      ``useradd`` or ``usermod``, but only hashed.
2978
2979      Here is an example that adds two users named "tester-jim" and "tester-sue" and assigns
2980      passwords. First on host, create the (escaped) password hash::
2981
2982         printf "%q" $(mkpasswd -m sha256crypt tester01)
2983
2984      The resulting hash is set to a variable and used in ``useradd`` command parameters::
2985
2986         inherit extrausers
2987         PASSWD = "\$X\$ABC123\$A-Long-Hash"
2988         EXTRA_USERS_PARAMS = "\
2989             useradd -p '${PASSWD}' tester-jim; \
2990             useradd -p '${PASSWD}' tester-sue; \
2991             "
2992
2993      Finally, here is an example that sets the root password::
2994
2995         inherit extrausers
2996         EXTRA_USERS_PARAMS = "\
2997             usermod -p '${PASSWD}' root; \
2998             "
2999
3000      .. note::
3001
3002         From a security perspective, hardcoding a default password is not
3003         generally a good idea or even legal in some jurisdictions. It is
3004         recommended that you do not do this if you are building a production
3005         image.
3006
3007      Additionally there is a special ``passwd-expire`` command that will
3008      cause the password for a user to be expired and thus force changing it
3009      on first login, for example::
3010
3011         EXTRA_USERS_PARAMS += " useradd myuser; passwd-expire myuser;"
3012
3013      .. note::
3014
3015         At present, ``passwd-expire`` may only work for remote logins when
3016         using OpenSSH and not dropbear as an SSH server.
3017
3018   :term:`EXTRANATIVEPATH`
3019      A list of subdirectories of
3020      ``${``\ :term:`STAGING_BINDIR_NATIVE`\ ``}``
3021      added to the beginning of the environment variable ``PATH``. As an
3022      example, the following prepends
3023      "${STAGING_BINDIR_NATIVE}/foo:${STAGING_BINDIR_NATIVE}/bar:" to
3024      ``PATH``::
3025
3026         EXTRANATIVEPATH = "foo bar"
3027
3028   :term:`FAKEROOT`
3029      See :term:`bitbake:FAKEROOT` in the BitBake manual.
3030
3031   :term:`FAKEROOTBASEENV`
3032      See :term:`bitbake:FAKEROOTBASEENV` in the BitBake manual.
3033
3034   :term:`FAKEROOTCMD`
3035      See :term:`bitbake:FAKEROOTCMD` in the BitBake manual.
3036
3037   :term:`FAKEROOTDIRS`
3038      See :term:`bitbake:FAKEROOTDIRS` in the BitBake manual.
3039
3040   :term:`FAKEROOTENV`
3041      See :term:`bitbake:FAKEROOTENV` in the BitBake manual.
3042
3043   :term:`FAKEROOTNOENV`
3044      See :term:`bitbake:FAKEROOTNOENV` in the BitBake manual.
3045
3046   :term:`FC`
3047      The minimal command and arguments used to run the Fortran compiler.
3048
3049   :term:`FEATURE_PACKAGES`
3050      Defines one or more packages to include in an image when a specific
3051      item is included in :term:`IMAGE_FEATURES`.
3052      When setting the value, :term:`FEATURE_PACKAGES` should have the name of
3053      the feature item as an override. Here is an example::
3054
3055         FEATURE_PACKAGES_widget = "package1 package2"
3056
3057      In this example, if "widget" were added to :term:`IMAGE_FEATURES`,
3058      package1 and package2 would be included in the image.
3059
3060      .. note::
3061
3062         Packages installed by features defined through :term:`FEATURE_PACKAGES`
3063         are often package groups. While similarly named, you should not
3064         confuse the :term:`FEATURE_PACKAGES` variable with package groups, which
3065         are discussed elsewhere in the documentation.
3066
3067   :term:`FEED_DEPLOYDIR_BASE_URI`
3068      Points to the base URL of the server and location within the
3069      document-root that provides the metadata and packages required by
3070      OPKG to support runtime package management of IPK packages. You set
3071      this variable in your ``local.conf`` file.
3072
3073      Consider the following example::
3074
3075         FEED_DEPLOYDIR_BASE_URI = "http://192.168.7.1/BOARD-dir"
3076
3077      This example assumes you are serving
3078      your packages over HTTP and your databases are located in a directory
3079      named ``BOARD-dir``, which is underneath your HTTP server's
3080      document-root. In this case, the OpenEmbedded build system generates
3081      a set of configuration files for you in your target that work with
3082      the feed.
3083
3084   :term:`FETCHCMD`
3085      See :term:`bitbake:FETCHCMD` in the BitBake manual.
3086
3087   :term:`FILE`
3088      See :term:`bitbake:FILE` in the BitBake manual.
3089
3090   :term:`FILES`
3091      The list of files and directories that are placed in a package. The
3092      :term:`PACKAGES` variable lists the packages
3093      generated by a recipe.
3094
3095      To use the :term:`FILES` variable, provide a package name override that
3096      identifies the resulting package. Then, provide a space-separated
3097      list of files or paths that identify the files you want included as
3098      part of the resulting package. Here is an example::
3099
3100         FILES:${PN} += "${bindir}/mydir1 ${bindir}/mydir2/myfile"
3101
3102      .. note::
3103
3104         -  When specifying files or paths, you can pattern match using
3105            Python's
3106            `glob <https://docs.python.org/3/library/glob.html>`__
3107            syntax. For details on the syntax, see the documentation by
3108            following the previous link.
3109
3110         -  When specifying paths as part of the :term:`FILES` variable, it is
3111            good practice to use appropriate path variables. For example,
3112            use ``${sysconfdir}`` rather than ``/etc``, or ``${bindir}``
3113            rather than ``/usr/bin``. You can find a list of these
3114            variables at the top of the ``meta/conf/bitbake.conf`` file in
3115            the :term:`Source Directory`. You will also
3116            find the default values of the various ``FILES:*`` variables in
3117            this file.
3118
3119      If some of the files you provide with the :term:`FILES` variable are
3120      editable and you know they should not be overwritten during the
3121      package update process by the Package Management System (PMS), you
3122      can identify these files so that the PMS will not overwrite them. See
3123      the :term:`CONFFILES` variable for information on
3124      how to identify these files to the PMS.
3125
3126   :term:`FILES_SOLIBSDEV`
3127      Defines the file specification to match
3128      :term:`SOLIBSDEV`. In other words,
3129      :term:`FILES_SOLIBSDEV` defines the full path name of the development
3130      symbolic link (symlink) for shared libraries on the target platform.
3131
3132      The following statement from the ``bitbake.conf`` shows how it is
3133      set::
3134
3135         FILES_SOLIBSDEV ?= "${base_libdir}/lib*${SOLIBSDEV} ${libdir}/lib*${SOLIBSDEV}"
3136
3137   :term:`FILESEXTRAPATHS`
3138      A colon-separated list to extend the search path the OpenEmbedded build
3139      system uses when looking for files and patches as it processes recipes
3140      and append files. The default directories BitBake uses when it processes
3141      recipes are initially defined by the :term:`FILESPATH` variable. You can
3142      extend :term:`FILESPATH` variable by using :term:`FILESEXTRAPATHS`.
3143
3144      Best practices dictate that you accomplish this by using
3145      :term:`FILESEXTRAPATHS` from within a ``.bbappend`` file and that you
3146      prepend paths as follows::
3147
3148         FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
3149
3150      In the above example, the build system first
3151      looks for files in a directory that has the same name as the
3152      corresponding append file.
3153
3154      .. note::
3155
3156         When extending :term:`FILESEXTRAPATHS`, be sure to use the immediate
3157         expansion (``:=``) operator. Immediate expansion makes sure that
3158         BitBake evaluates :term:`THISDIR` at the time the
3159         directive is encountered rather than at some later time when
3160         expansion might result in a directory that does not contain the
3161         files you need.
3162
3163         Also, include the trailing separating colon character if you are
3164         prepending. The trailing colon character is necessary because you
3165         are directing BitBake to extend the path by prepending directories
3166         to the search path.
3167
3168      Here is another common use::
3169
3170         FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
3171
3172      In this example, the build system extends the
3173      :term:`FILESPATH` variable to include a directory named ``files`` that is
3174      in the same directory as the corresponding append file.
3175
3176      This next example specifically adds three paths::
3177
3178         FILESEXTRAPATHS:prepend := "path_1:path_2:path_3:"
3179
3180      A final example shows how you can extend the search path and include
3181      a :term:`MACHINE`-specific override, which is useful
3182      in a BSP layer::
3183
3184          FILESEXTRAPATHS:prepend:intel-x86-common := "${THISDIR}/${PN}:"
3185
3186      The previous statement appears in the
3187      ``linux-yocto-dev.bbappend`` file, which is found in the
3188      :ref:`overview-manual/development-environment:yocto project source repositories` in
3189      ``meta-intel/common/recipes-kernel/linux``. Here, the machine
3190      override is a special :term:`PACKAGE_ARCH`
3191      definition for multiple ``meta-intel`` machines.
3192
3193      .. note::
3194
3195         For a layer that supports a single BSP, the override could just be
3196         the value of :term:`MACHINE`.
3197
3198      By prepending paths in ``.bbappend`` files, you allow multiple append
3199      files that reside in different layers but are used for the same
3200      recipe to correctly extend the path.
3201
3202   :term:`FILESOVERRIDES`
3203      A colon-separated list to specify a subset of :term:`OVERRIDES` used by
3204      the OpenEmbedded build system for creating :term:`FILESPATH`. The
3205      :term:`FILESOVERRIDES` variable uses overrides to automatically extend
3206      the :term:`FILESPATH` variable. For an example of how that works, see the
3207      :term:`FILESPATH` variable description. Additionally, you find more
3208      information on how overrides are handled in the
3209      ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:conditional syntax (overrides)`"
3210      section of the BitBake User Manual.
3211
3212      By default, the :term:`FILESOVERRIDES` variable is defined as::
3213
3214         FILESOVERRIDES = "${TRANSLATED_TARGET_ARCH}:${MACHINEOVERRIDES}:${DISTROOVERRIDES}"
3215
3216      .. note::
3217
3218         Do not hand-edit the :term:`FILESOVERRIDES` variable. The values match up
3219         with expected overrides and are used in an expected manner by the
3220         build system.
3221
3222   :term:`FILESPATH`
3223      A colon-separated list specifying the default set of directories the
3224      OpenEmbedded build system uses when searching for patches and files.
3225
3226      During the build process, BitBake searches each directory in
3227      :term:`FILESPATH` in the specified order when looking for files and
3228      patches specified by each ``file://`` URI in a recipe's
3229      :term:`SRC_URI` statements.
3230
3231      The default value for the :term:`FILESPATH` variable is defined in the
3232      :ref:`ref-classes-base` class found in ``meta/classes-global`` in the
3233      :term:`Source Directory`::
3234
3235         FILESPATH = "${@base_set_filespath(["${FILE_DIRNAME}/${BP}", \
3236             "${FILE_DIRNAME}/${BPN}", "${FILE_DIRNAME}/files"], d)}"
3237
3238      The
3239      :term:`FILESPATH` variable is automatically extended using the overrides
3240      from the :term:`FILESOVERRIDES` variable.
3241
3242      .. note::
3243
3244         -  Do not hand-edit the :term:`FILESPATH` variable. If you want the
3245            build system to look in directories other than the defaults,
3246            extend the :term:`FILESPATH` variable by using the
3247            :term:`FILESEXTRAPATHS` variable.
3248
3249         -  Be aware that the default :term:`FILESPATH` directories do not map
3250            to directories in custom layers where append files
3251            (``.bbappend``) are used. If you want the build system to find
3252            patches or files that reside with your append files, you need
3253            to extend the :term:`FILESPATH` variable by using the
3254            :term:`FILESEXTRAPATHS` variable.
3255
3256      You can take advantage of this searching behavior in useful ways. For
3257      example, consider a case where there is the following directory structure
3258      for general and machine-specific configurations::
3259
3260         files/defconfig
3261         files/MACHINEA/defconfig
3262         files/MACHINEB/defconfig
3263
3264      Also in the example, the :term:`SRC_URI` statement contains
3265      "file://defconfig". Given this scenario, you can set
3266      :term:`MACHINE` to "MACHINEA" and cause the build
3267      system to use files from ``files/MACHINEA``. Set :term:`MACHINE` to
3268      "MACHINEB" and the build system uses files from ``files/MACHINEB``.
3269      Finally, for any machine other than "MACHINEA" and "MACHINEB", the
3270      build system uses files from ``files/defconfig``.
3271
3272      You can find out more about the patching process in the
3273      ":ref:`overview-manual/concepts:patching`" section
3274      in the Yocto Project Overview and Concepts Manual and the
3275      ":ref:`dev-manual/new-recipe:patching code`" section in
3276      the Yocto Project Development Tasks Manual. See the
3277      :ref:`ref-tasks-patch` task as well.
3278
3279   :term:`FILESYSTEM_PERMS_TABLES`
3280      Allows you to define your own file permissions settings tables as part
3281      of your configuration for the packaging process. For example, suppose
3282      you need a consistent set of custom permissions for a set of groups
3283      and users across an entire work project. It is best to do this in the
3284      packages themselves but this is not always possible.
3285
3286      By default, the OpenEmbedded build system uses the ``fs-perms.txt``,
3287      ``fs-perms-volatile-log.txt`` and ``fs-perms-volatile-tmp.txt`` which are
3288      located in the ``meta/files`` folder in the :term:`Source Directory`. If
3289      you create your own permission setting table files, you should place
3290      those in your layer.
3291
3292      You can override the value of :term:`FILESYSTEM_PERMS_TABLES` variable
3293      in your distribution configuration file to point to your custom
3294      permission table files. You can specify one or more file permissions
3295      setting tables. The paths that you specify to these files must be defined
3296      within the :term:`BBPATH` variable.
3297
3298      In order to disable the volatile log, which is enabled by default, one
3299      can remove the ``files/fs-perms-volatile-log.txt`` value from
3300      ``FILESYSTEM_PERMS_TABLES``. Similarly, in order to disable the volatile
3301      tmp, one can remove the ``files/fs-perms-volatile-tmp.txt`` value.
3302
3303      For guidance on how to define your own file permissions settings
3304      tables, examine the existing ``fs-perms.txt``,
3305      ``fs-perms-volatile-log.txt`` and ``fs-perms-volatile-tmp.txt`` files.
3306
3307   :term:`FIRMWARE_COMPRESSION`
3308      The :term:`FIRMWARE_COMPRESSION` allows compressing the firmware provided
3309      by the ``linux-firmware`` recipe. The default value of this variable is an
3310      empty string (no compression), and the possible values it can take are
3311      ``xz`` and ``zst``. This can allow significant disk space savings.
3312
3313      For this to work, the Linux Kernel requires the
3314      ``CONFIG_FW_LOADER_COMPRESS_XZ`` or ``CONFIG_FW_LOADER_COMPRESS_ZSTD``
3315      configuration options to be set.
3316
3317   :term:`FIT_ADDRESS_CELLS`
3318      Specifies the value of the ``#address-cells`` value for the
3319      description of the FIT image.
3320
3321      The default value is set to "1" by the :ref:`ref-classes-kernel-fitimage`
3322      class, which corresponds to 32 bit addresses.
3323
3324      For platforms that need to set 64 bit addresses, for example in
3325      :term:`UBOOT_LOADADDRESS` and :term:`UBOOT_ENTRYPOINT`, you need to
3326      set this value to "2", as two 32 bit values (cells) will be needed
3327      to represent such addresses.
3328
3329      Here is an example setting "0x400000000" as a load address::
3330
3331         FIT_ADDRESS_CELLS = "2"
3332         UBOOT_LOADADDRESS= "0x04 0x00000000"
3333
3334      See `more details about #address-cells <https://elinux.org/Device_Tree_Usage#How_Addressing_Works>`__.
3335
3336   :term:`FIT_CONF_DEFAULT_DTB`
3337      Specifies the default device tree binary (dtb) file for a FIT image
3338      when multiple ones are provided.
3339
3340      This variable is used in the :ref:`ref-classes-kernel-fitimage` class.
3341
3342   :term:`FIT_DESC`
3343      Specifies the description string encoded into a FIT image. The
3344      default value is set by the :ref:`ref-classes-kernel-fitimage` class as
3345      follows::
3346
3347         FIT_DESC ?= "U-Boot fitImage for ${DISTRO_NAME}/${PV}/${MACHINE}"
3348
3349   :term:`FIT_GENERATE_KEYS`
3350      Decides whether to generate the keys for signing the FIT image if
3351      they don't already exist. The keys are created in
3352      :term:`UBOOT_SIGN_KEYDIR`. The default value is set to "0"
3353      by the :ref:`ref-classes-kernel-fitimage` class.
3354
3355   :term:`FIT_HASH_ALG`
3356      Specifies the hash algorithm used in creating the FIT Image.
3357      This variable is set by default to "sha256" by the
3358      :ref:`ref-classes-kernel-fitimage` class.
3359
3360   :term:`FIT_KERNEL_COMP_ALG`
3361      The compression algorithm to use for the kernel image inside the FIT Image.
3362      At present, the only supported values are "gzip" (default), "lzo" or "none".
3363      If you set this variable to anything other than "none" you may also need
3364      to set :term:`FIT_KERNEL_COMP_ALG_EXTENSION`.
3365
3366      This variable is used in the :ref:`ref-classes-kernel-uboot` class.
3367
3368   :term:`FIT_KERNEL_COMP_ALG_EXTENSION`
3369      File extension corresponding to :term:`FIT_KERNEL_COMP_ALG`. The default
3370      value is set ".gz" by the :ref:`ref-classes-kernel-uboot` class. If you
3371      set :term:`FIT_KERNEL_COMP_ALG` to "lzo", you may want to set this
3372      variable to ".lzo".
3373
3374   :term:`FIT_KEY_GENRSA_ARGS`
3375      Arguments to ``openssl genrsa`` for generating a RSA private key for
3376      signing the FIT image. The default value is set to "-F4" by the
3377      :ref:`ref-classes-kernel-fitimage` class.
3378
3379   :term:`FIT_KEY_REQ_ARGS`
3380      Arguments to ``openssl req`` for generating a certificate for signing
3381      the FIT image. The default value is "-batch -new" by the
3382      :ref:`ref-classes-kernel-fitimage` class, "batch" for
3383      non interactive mode and "new" for generating new keys.
3384
3385   :term:`FIT_KEY_SIGN_PKCS`
3386      Format for the public key certificate used for signing the FIT image.
3387      The default value is set to "x509" by the
3388      :ref:`ref-classes-kernel-fitimage` class.
3389
3390   :term:`FIT_SIGN_ALG`
3391      Specifies the signature algorithm used in creating the FIT Image.
3392      This variable is set by default to "rsa2048" by the
3393      :ref:`ref-classes-kernel-fitimage` class.
3394
3395   :term:`FIT_PAD_ALG`
3396      Specifies the padding algorithm used in creating the FIT Image.
3397      The default value is set to "pkcs-1.5" by the
3398      :ref:`ref-classes-kernel-fitimage` class.
3399
3400   :term:`FIT_SIGN_INDIVIDUAL`
3401      If set to "1", the :ref:`ref-classes-kernel-fitimage` class signs each
3402      image node individually, including the kernel, DTB, RAM disk, and any
3403      other image types present in the FIT image, in addition to signing the
3404      configuration nodes.
3405      This can be useful if you need to verify signatures outside of the
3406      U-Boot boot process. By default, this variable is set to "0".
3407
3408      If :term:`UBOOT_SIGN_ENABLE` is set to "1" and
3409      :term:`FIT_SIGN_INDIVIDUAL` remains at its default value of "0", only the
3410      configuration nodes are signed. Since configuration nodes include hashes
3411      of their referenced image nodes, the integrity of the entire FIT image is
3412      ensured as long as the image nodes are loaded via the configuration nodes
3413      and the hashes of the image nodes are checked. That's usually the case.
3414
3415      Enabling :term:`FIT_SIGN_INDIVIDUAL` typically increases complexity for
3416      little benefit. There might be exceptions such as image nodes that are
3417      not referenced by any configuration node or loaded directly for whatever
3418      reason.
3419      For most use cases, setting this variable to "0" provides sufficient
3420      security.
3421
3422      For further details, refer to the official U-Boot documentation:
3423      `U-Boot fit signature <https://docs.u-boot.org/en/latest/usage/fit/signature.html>`__
3424      and more specifically at:
3425      `U-Boot signed configurations <https://docs.u-boot.org/en/latest/usage/fit/signature.html#signed-configurations>`__.
3426
3427      Signing only the image nodes is intentionally not implemented by
3428      :term:`OpenEmbedded-Core (OE-Core)`, as it is vulnerable to mix-and-match
3429      attacks.
3430
3431   :term:`FIT_SIGN_NUMBITS`
3432      Size of the private key used in the FIT image, in number of bits.
3433      The default value for this variable is set to "2048"
3434      by the :ref:`ref-classes-kernel-fitimage` class.
3435
3436   :term:`FIT_UBOOT_ENV`
3437      This variable allows to add a U-Boot script as a text file to the
3438      FIT image. Such a script can be sourced from the U-Boot shell.
3439
3440      When inheriting the :ref:`ref-classes-kernel-fitimage` class a
3441      script file should be included in the :term:`SRC_URI` of the Linux
3442      kernel recipe.
3443
3444      Example:
3445
3446      -  Add a script ``boot.cmd`` to the Linux kernel recipe::
3447
3448            FIT_UBOOT_ENV = "boot.cmd"
3449            SRC_URI += "file://${FIT_UBOOT_ENV}"
3450
3451      -  Use the script file from the U-Boot shell. The name of the script in
3452         FIT image is ``bootscr-${FIT_UBOOT_ENV}``. This example loads the FIT
3453         image from a TFTP server::
3454
3455            tftp $loadaddr $fit_tftp_path
3456            source $loadaddr#bootscr-boot.cmd
3457
3458      More information can be found in the official U-Boot documentation:
3459      `U-Boot source command <https://docs.u-boot.org/en/latest/usage/cmd/source.html#fit-image.f>`__
3460
3461   :term:`FONT_EXTRA_RDEPENDS`
3462      When inheriting the :ref:`ref-classes-fontcache` class,
3463      this variable specifies the runtime dependencies for font packages.
3464      By default, the :term:`FONT_EXTRA_RDEPENDS` is set to "fontconfig-utils".
3465
3466   :term:`FONT_PACKAGES`
3467      When inheriting the :ref:`ref-classes-fontcache` class, this variable
3468      identifies packages containing font files that need to be cached by
3469      Fontconfig. By default, the :ref:`ref-classes-fontcache` class assumes
3470      that fonts are in the recipe's main package (i.e.
3471      ``${``\ :term:`PN`\ ``}``). Use this variable if fonts you
3472      need are in a package other than that main package.
3473
3474   :term:`FORCE_RO_REMOVE`
3475      Forces the removal of the packages listed in ``ROOTFS_RO_UNNEEDED``
3476      during the generation of the root filesystem.
3477
3478      Set the variable to "1" to force the removal of these packages.
3479
3480   :term:`FULL_OPTIMIZATION`
3481      The options to pass in :term:`TARGET_CFLAGS` and :term:`CFLAGS` when
3482      compiling an optimized system. This variable defaults to "-O2 -pipe
3483      ${DEBUG_FLAGS}".
3484
3485   :term:`GCCPIE`
3486      Enables Position Independent Executables (PIE) within the GNU C
3487      Compiler (GCC). Enabling PIE in the GCC makes Return Oriented
3488      Programming (ROP) attacks much more difficult to execute.
3489
3490      By default the ``security_flags.inc`` file enables PIE by setting the
3491      variable as follows::
3492
3493         GCCPIE ?= "--enable-default-pie"
3494
3495   :term:`GCCVERSION`
3496      Specifies the default version of the GNU C Compiler (GCC) used for
3497      compilation. By default, :term:`GCCVERSION` is set to "8.x" in the
3498      ``meta/conf/distro/include/tcmode-default.inc`` include file::
3499
3500         GCCVERSION ?= "8.%"
3501
3502      You can override this value by setting it in a
3503      configuration file such as the ``local.conf``.
3504
3505   :term:`GDB`
3506      The minimal command and arguments to run the GNU Debugger.
3507
3508   :term:`GIR_EXTRA_LIBS_PATH`
3509      Allows to specify an extra search path for ``.so`` files
3510      in GLib related recipes using GObject introspection,
3511      and which do not compile without this setting.
3512      See the ":ref:`dev-manual/gobject-introspection:enabling gobject introspection support`"
3513      section for details.
3514
3515   :term:`GITDIR`
3516      The directory in which a local copy of a Git repository is stored
3517      when it is cloned.
3518
3519   :term:`GITHUB_BASE_URI`
3520      When inheriting the :ref:`ref-classes-github-releases`
3521      class, specifies the base URL for fetching releases for the github
3522      project you wish to fetch sources from. The default value is as follows::
3523
3524         GITHUB_BASE_URI ?= "https://github.com/${BPN}/${BPN}/releases/"
3525
3526   :term:`GLIBC_GENERATE_LOCALES`
3527      Specifies the list of GLIBC locales to generate should you not wish
3528      to generate all LIBC locals, which can be time consuming.
3529
3530      .. note::
3531
3532         If you specifically remove the locale ``en_US.UTF-8``, you must set
3533         :term:`IMAGE_LINGUAS` appropriately.
3534
3535      You can set :term:`GLIBC_GENERATE_LOCALES` in your ``local.conf`` file.
3536      By default, all locales are generated::
3537
3538         GLIBC_GENERATE_LOCALES = "en_GB.UTF-8 en_US.UTF-8"
3539
3540   :term:`GO_IMPORT`
3541      When inheriting the :ref:`ref-classes-go` class, this mandatory variable
3542      sets the import path for the Go package that will be created for the code
3543      to build. If you have a ``go.mod`` file in the source directory, this
3544      typically matches the path in the ``module`` line in this file.
3545
3546      Other Go programs importing this package will use this path.
3547
3548      Here is an example setting from the
3549      :yocto_git:`go-helloworld_0.1.bb </poky/tree/meta/recipes-extended/go-examples/go-helloworld_0.1.bb>`
3550      recipe::
3551
3552          GO_IMPORT = "golang.org/x/example"
3553
3554   :term:`GO_INSTALL`
3555      When inheriting the :ref:`ref-classes-go` class, this optional variable
3556      specifies which packages in the sources should be compiled and
3557      installed in the Go build space by the
3558      `go install <https://go.dev/ref/mod#go-install>`__ command.
3559
3560      Here is an example setting from the
3561      :oe_git:`crucible </meta-openembedded/tree/meta-oe/recipes-support/crucible/>`
3562      recipe::
3563
3564         GO_INSTALL = "\
3565             ${GO_IMPORT}/cmd/crucible \
3566             ${GO_IMPORT}/cmd/habtool \
3567         "
3568
3569      By default, :term:`GO_INSTALL` is defined as::
3570
3571         GO_INSTALL ?= "${GO_IMPORT}/..."
3572
3573      The ``...`` wildcard means that it will catch all
3574      packages found in the sources.
3575
3576      See the :term:`GO_INSTALL_FILTEROUT` variable for
3577      filtering out unwanted packages from the ones
3578      found from the :term:`GO_INSTALL` value.
3579
3580   :term:`GO_INSTALL_FILTEROUT`
3581      When using the Go "vendor" mechanism to bring in dependencies for a Go
3582      package, the default :term:`GO_INSTALL` setting, which uses the ``...``
3583      wildcard, will include the vendored packages in the build, which produces
3584      incorrect results.
3585
3586      There are also some Go packages that are structured poorly, so that the
3587      ``...`` wildcard results in building example or test code that should not
3588      be included in the build, or could fail to build.
3589
3590      This optional variable allows for filtering out a subset of the sources.
3591      It defaults to excluding everything under the ``vendor`` subdirectory
3592      under package's main directory. This is the normal location for vendored
3593      packages, but it can be overridden by a recipe to filter out other
3594      subdirectories if needed.
3595
3596   :term:`GO_WORKDIR`
3597      When using Go Modules, the current working directory must be the directory
3598      containing the ``go.mod`` file, or one of its subdirectories. When the
3599      ``go`` tool is used, it will automatically look for the ``go.mod`` file
3600      in the Go working directory or in any parent directory, but not in
3601      subdirectories.
3602
3603      When using the :ref:`ref-classes-go-mod` class to use Go modules,
3604      the optional :term:`GO_WORKDIR` variable, defaulting to the value
3605      of :term:`GO_IMPORT`, allows to specify a different Go working directory.
3606
3607   :term:`GROUPADD_PARAM`
3608      When inheriting the :ref:`ref-classes-useradd` class,
3609      this variable specifies for a package what parameters should be
3610      passed to the ``groupadd`` command if you wish to add a group to the
3611      system when the package is installed.
3612
3613      Here is an example from the ``dbus`` recipe::
3614
3615         GROUPADD_PARAM:${PN} = "-r netdev"
3616
3617      More than one group can be added by separating each set of different
3618      groups' parameters with a semicolon.
3619
3620      Here is an example adding multiple groups from the ``useradd-example.bb``
3621      file in the ``meta-skeleton`` layer::
3622
3623         GROUPADD_PARAM:${PN} = "-g 880 group1; -g 890 group2"
3624
3625      For information on the standard Linux shell command
3626      ``groupadd``, see https://linux.die.net/man/8/groupadd.
3627
3628   :term:`GROUPMEMS_PARAM`
3629      When inheriting the :ref:`ref-classes-useradd` class,
3630      this variable specifies for a package what parameters should be
3631      passed to the ``groupmems`` command if you wish to modify the members
3632      of a group when the package is installed.
3633
3634      For information on the standard Linux shell command ``groupmems``,
3635      see https://linux.die.net/man/8/groupmems.
3636
3637   :term:`GRUB_GFXSERIAL`
3638      Configures the GNU GRand Unified Bootloader (GRUB) to have graphics
3639      and serial in the boot menu. Set this variable to "1" in your
3640      ``local.conf`` or distribution configuration file to enable graphics
3641      and serial in the menu.
3642
3643      See the :ref:`ref-classes-grub-efi` class for more
3644      information on how this variable is used.
3645
3646   :term:`GRUB_MKIMAGE_OPTS`
3647      This variable controls additional options passed to the ``grub-mkimage``
3648      command in the GNU GRand Unified Bootloader (GRUB) recipe during the
3649      ``do_mkimage`` task.
3650
3651   :term:`GRUB_OPTS`
3652      Additional options to add to the GNU GRand Unified Bootloader (GRUB)
3653      configuration. Use a semi-colon character (``;``) to separate
3654      multiple options.
3655
3656      The :term:`GRUB_OPTS` variable is optional. See the
3657      :ref:`ref-classes-grub-efi` class for more information
3658      on how this variable is used.
3659
3660   :term:`GRUB_TIMEOUT`
3661      Specifies the timeout before executing the default ``LABEL`` in the
3662      GNU GRand Unified Bootloader (GRUB).
3663
3664      The :term:`GRUB_TIMEOUT` variable is optional. See the
3665      :ref:`ref-classes-grub-efi` class for more information
3666      on how this variable is used.
3667
3668   :term:`GRUB_TITLE`
3669      Specifies custom titles for GRUB labels defined in  :term:`LABELS`. See
3670      the :ref:`ref-classes-grub-efi` class for more information on how this
3671      variable is used.
3672
3673   :term:`GTKIMMODULES_PACKAGES`
3674      When inheriting the :ref:`ref-classes-gtk-immodules-cache` class,
3675      this variable specifies the packages that contain the GTK+ input
3676      method modules being installed when the modules are in packages other
3677      than the main package.
3678
3679   :term:`HGDIR`
3680      See :term:`bitbake:HGDIR` in the BitBake manual.
3681
3682   :term:`HOMEPAGE`
3683      Website where more information about the software the recipe is
3684      building can be found.
3685
3686   :term:`HOST_ARCH`
3687      The name of the target architecture, which is normally the same as
3688      :term:`TARGET_ARCH`. The OpenEmbedded build system
3689      supports many architectures. Here is an example list of architectures
3690      supported. This list is by no means complete as the architecture is
3691      configurable:
3692
3693      - arm
3694      - i586
3695      - x86_64
3696      - powerpc
3697      - powerpc64
3698      - mips
3699      - mipsel
3700
3701   :term:`HOST_AS_ARCH`
3702      Specifies architecture-specific assembler flags.
3703
3704      Default initialization for :term:`HOST_AS_ARCH` varies depending on what
3705      is being built:
3706
3707      -  :term:`TARGET_AS_ARCH` when building for the
3708         target
3709
3710      -  :term:`BUILD_AS_ARCH` when building for the build host (i.e.
3711         ``-native``)
3712
3713      -  :term:`SDK_AS_ARCH` when building for an SDK (i.e. ``nativesdk-``)
3714
3715   :term:`HOST_CC_ARCH`
3716      Specifies architecture-specific compiler flags that are passed to the
3717      C compiler.
3718
3719      Default initialization for :term:`HOST_CC_ARCH` varies depending on what
3720      is being built:
3721
3722      -  :term:`TARGET_CC_ARCH` when building for the
3723         target
3724
3725      -  :term:`BUILD_CC_ARCH` when building for the build host (i.e.
3726         ``-native``)
3727
3728      -  :term:`SDK_CC_ARCH` when building for an SDK (i.e. ``nativesdk-``)
3729
3730   :term:`HOST_LD_ARCH`
3731      Specifies architecture-specific linker flags.
3732
3733      Default initialization for :term:`HOST_LD_ARCH` varies depending on what
3734      is being built:
3735
3736      -  :term:`TARGET_LD_ARCH` when building for the target
3737
3738      -  :term:`BUILD_LD_ARCH` when building for the build host (i.e.
3739         ``-native``)
3740
3741      -  :term:`SDK_LD_ARCH` when building for an SDK (i.e. ``nativesdk-``)
3742
3743   :term:`HOST_OS`
3744      Specifies the name of the target operating system, which is normally
3745      the same as the :term:`TARGET_OS`. The variable can
3746      be set to "linux" for ``glibc``-based systems and to "linux-musl" for
3747      ``musl``. For ARM/EABI targets, there are also "linux-gnueabi" and
3748      "linux-musleabi" values possible.
3749
3750   :term:`HOST_PREFIX`
3751      Specifies the prefix for the cross-compile toolchain. :term:`HOST_PREFIX`
3752      is normally the same as :term:`TARGET_PREFIX`.
3753
3754   :term:`HOST_SYS`
3755      Specifies the system, including the architecture and the operating
3756      system, for which the build is occurring in the context of the
3757      current recipe.
3758
3759      The OpenEmbedded build system automatically sets this variable based
3760      on :term:`HOST_ARCH`,
3761      :term:`HOST_VENDOR`, and
3762      :term:`HOST_OS` variables.
3763
3764      .. note::
3765
3766         You do not need to set the variable yourself.
3767
3768      Consider these two examples:
3769
3770      -  Given a native recipe on a 32-bit x86 machine running Linux, the
3771         value is "i686-linux".
3772
3773      -  Given a recipe being built for a little-endian MIPS target running
3774         Linux, the value might be "mipsel-linux".
3775
3776   :term:`HOST_VENDOR`
3777      Specifies the name of the vendor. :term:`HOST_VENDOR` is normally the
3778      same as :term:`TARGET_VENDOR`.
3779
3780   :term:`HOSTTOOLS`
3781      A space-separated list (filter) of tools on the build host that
3782      should be allowed to be called from within build tasks. Using this
3783      filter helps reduce the possibility of host contamination. If a tool
3784      specified in the value of :term:`HOSTTOOLS` is not found on the build
3785      host, the OpenEmbedded build system produces an error and the build
3786      is not started.
3787
3788      For additional information, see
3789      :term:`HOSTTOOLS_NONFATAL`.
3790
3791   :term:`HOSTTOOLS_NONFATAL`
3792      A space-separated list (filter) of tools on the build host that
3793      should be allowed to be called from within build tasks. Using this
3794      filter helps reduce the possibility of host contamination. Unlike
3795      :term:`HOSTTOOLS`, the OpenEmbedded build system
3796      does not produce an error if a tool specified in the value of
3797      :term:`HOSTTOOLS_NONFATAL` is not found on the build host. Thus, you can
3798      use :term:`HOSTTOOLS_NONFATAL` to filter optional host tools.
3799
3800   :term:`ICECC_CLASS_DISABLE`
3801      Identifies user classes that you do not want the Icecream distributed
3802      compile support to consider. This variable is used by the
3803      :ref:`ref-classes-icecc` class. You set this variable in
3804      your ``local.conf`` file.
3805
3806      When you list classes using this variable, the recipes inheriting
3807      those classes will not benefit from distributed compilation across
3808      remote hosts. Instead they will be built locally.
3809
3810   :term:`ICECC_DISABLED`
3811      Disables or enables the ``icecc`` (Icecream) function. For more
3812      information on this function and best practices for using this
3813      variable, see the ":ref:`ref-classes-icecc`"
3814      section.
3815
3816      Setting this variable to "1" in your ``local.conf`` disables the
3817      function::
3818
3819         ICECC_DISABLED ??= "1"
3820
3821      To enable the function, set the variable as follows::
3822
3823         ICECC_DISABLED = ""
3824
3825   :term:`ICECC_ENV_EXEC`
3826      Points to the ``icecc-create-env`` script that you provide. This
3827      variable is used by the :ref:`ref-classes-icecc` class. You
3828      set this variable in your ``local.conf`` file.
3829
3830      If you do not point to a script that you provide, the OpenEmbedded
3831      build system uses the default script provided by the
3832      :oe_git:`icecc-create-env_0.1.bb
3833      </openembedded-core/tree/meta/recipes-devtools/icecc-create-env/icecc-create-env_0.1.bb>`
3834      recipe, which is a modified version and not the one that comes with
3835      ``icecream``.
3836
3837   :term:`ICECC_PARALLEL_MAKE`
3838      Extra options passed to the ``make`` command during the
3839      :ref:`ref-tasks-compile` task that specify parallel
3840      compilation. This variable usually takes the form of "-j x", where x
3841      represents the maximum number of parallel threads ``make`` can run.
3842
3843      .. note::
3844
3845         The options passed affect builds on all enabled machines on the
3846         network, which are machines running the ``iceccd`` daemon.
3847
3848      If your enabled machines support multiple cores, coming up with the
3849      maximum number of parallel threads that gives you the best
3850      performance could take some experimentation since machine speed,
3851      network lag, available memory, and existing machine loads can all
3852      affect build time. Consequently, unlike the
3853      :term:`PARALLEL_MAKE` variable, there is no
3854      rule-of-thumb for setting :term:`ICECC_PARALLEL_MAKE` to achieve optimal
3855      performance.
3856
3857      If you do not set :term:`ICECC_PARALLEL_MAKE`, the build system does not
3858      use it (i.e. the system does not detect and assign the number of
3859      cores as is done with :term:`PARALLEL_MAKE`).
3860
3861   :term:`ICECC_PATH`
3862      The location of the ``icecc`` binary. You can set this variable in
3863      your ``local.conf`` file. If your ``local.conf`` file does not define
3864      this variable, the :ref:`ref-classes-icecc` class attempts
3865      to define it by locating ``icecc`` using ``which``.
3866
3867   :term:`ICECC_RECIPE_DISABLE`
3868      Identifies user recipes that you do not want the Icecream distributed
3869      compile support to consider. This variable is used by the
3870      :ref:`ref-classes-icecc` class. You set this variable in
3871      your ``local.conf`` file.
3872
3873      When you list recipes using this variable, you are excluding them
3874      from distributed compilation across remote hosts. Instead they will
3875      be built locally.
3876
3877   :term:`ICECC_RECIPE_ENABLE`
3878      Identifies user recipes that use an empty
3879      :term:`PARALLEL_MAKE` variable that you want to
3880      force remote distributed compilation on using the Icecream
3881      distributed compile support. This variable is used by the
3882      :ref:`ref-classes-icecc` class. You set this variable in
3883      your ``local.conf`` file.
3884
3885   :term:`IMAGE_BASENAME`
3886      The base name of image output files. This variable defaults to the
3887      recipe name (``${``\ :term:`PN`\ ``}``).
3888
3889   :term:`IMAGE_BOOT_FILES`
3890      A space-separated list of files installed into the boot partition
3891      when preparing an image using the Wic tool with the
3892      ``bootimg-partition`` source plugin. By default,
3893      the files are
3894      installed under the same name as the source files. To change the
3895      installed name, separate it from the original name with a semi-colon
3896      (;). Source files need to be located in
3897      :term:`DEPLOY_DIR_IMAGE`. Here are two
3898      examples::
3899
3900         IMAGE_BOOT_FILES = "u-boot.img uImage;kernel"
3901         IMAGE_BOOT_FILES = "u-boot.${UBOOT_SUFFIX} ${KERNEL_IMAGETYPE}"
3902
3903      Alternatively, source files can be picked up using a glob pattern. In
3904      this case, the destination file must have the same name as the base
3905      name of the source file path. To install files into a directory
3906      within the target location, pass its name after a semi-colon (;).
3907      Here are two examples::
3908
3909         IMAGE_BOOT_FILES = "bcm2835-bootfiles/*"
3910         IMAGE_BOOT_FILES = "bcm2835-bootfiles/*;boot/"
3911
3912      The first example
3913      installs all files from ``${DEPLOY_DIR_IMAGE}/bcm2835-bootfiles``
3914      into the root of the target partition. The second example installs
3915      the same files into a ``boot`` directory within the target partition.
3916
3917      You can find information on how to use the Wic tool in the
3918      ":ref:`dev-manual/wic:creating partitioned images using wic`"
3919      section of the Yocto Project Development Tasks Manual. Reference
3920      material for Wic is located in the
3921      ":doc:`/ref-manual/kickstart`" chapter.
3922
3923   :term:`IMAGE_BUILDINFO_FILE`
3924      When using the :ref:`ref-classes-image-buildinfo` class,
3925      specifies the file in the image to write the build information into. The
3926      default value is "``${sysconfdir}/buildinfo``".
3927
3928   :term:`IMAGE_BUILDINFO_VARS`
3929      When using the :ref:`ref-classes-image-buildinfo` class,
3930      specifies the list of variables to include in the `Build Configuration`
3931      section of the output file (as a space-separated list). Defaults to
3932      ":term:`DISTRO` :term:`DISTRO_VERSION`".
3933
3934   :term:`IMAGE_CLASSES`
3935      A list of classes that all images should inherit. This is typically used
3936      to enable functionality across all image recipes.
3937
3938      Classes specified in :term:`IMAGE_CLASSES` must be located in the
3939      ``classes-recipe/`` or ``classes/`` subdirectories.
3940
3941   :term:`IMAGE_CMD`
3942      Specifies the command to create the image file for a specific image
3943      type, which corresponds to the value set in
3944      :term:`IMAGE_FSTYPES`, (e.g. ``ext3``,
3945      ``btrfs``, and so forth). When setting this variable, you should use
3946      an override for the associated type. Here is an example::
3947
3948         IMAGE_CMD:jffs2 = "mkfs.jffs2 --root=${IMAGE_ROOTFS} --faketime \
3949             --output=${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.jffs2 \
3950             ${EXTRA_IMAGECMD}"
3951
3952      You typically do not need to set this variable unless you are adding
3953      support for a new image type. For more examples on how to set this
3954      variable, see the :ref:`ref-classes-image_types`
3955      class file, which is ``meta/classes-recipe/image_types.bbclass``.
3956
3957   :term:`IMAGE_DEVICE_TABLES`
3958      Specifies one or more files that contain custom device tables that
3959      are passed to the ``makedevs`` command as part of creating an image.
3960      These files list basic device nodes that should be created under
3961      ``/dev`` within the image. If :term:`IMAGE_DEVICE_TABLES` is not set,
3962      ``files/device_table-minimal.txt`` is used, which is located by
3963      :term:`BBPATH`. For details on how you should write
3964      device table files, see ``meta/files/device_table-minimal.txt`` as an
3965      example.
3966
3967   :term:`IMAGE_EFI_BOOT_FILES`
3968      A space-separated list of files installed into the boot partition
3969      when preparing an image using the Wic tool with the
3970      ``bootimg-efi`` source plugin. By default,
3971      the files are
3972      installed under the same name as the source files. To change the
3973      installed name, separate it from the original name with a semi-colon
3974      (;). Source files need to be located in
3975      :term:`DEPLOY_DIR_IMAGE`. Here are two
3976      examples::
3977
3978         IMAGE_EFI_BOOT_FILES = "${KERNEL_IMAGETYPE};bz2"
3979         IMAGE_EFI_BOOT_FILES = "${KERNEL_IMAGETYPE} microcode.cpio"
3980
3981      Alternatively, source files can be picked up using a glob pattern. In
3982      this case, the destination file must have the same name as the base
3983      name of the source file path. To install files into a directory
3984      within the target location, pass its name after a semi-colon (;).
3985      Here are two examples::
3986
3987         IMAGE_EFI_BOOT_FILES = "boot/loader/*"
3988         IMAGE_EFI_BOOT_FILES = "boot/loader/*;boot/"
3989
3990      The first example
3991      installs all files from ``${DEPLOY_DIR_IMAGE}/boot/loader/``
3992      into the root of the target partition. The second example installs
3993      the same files into a ``boot`` directory within the target partition.
3994
3995      You can find information on how to use the Wic tool in the
3996      ":ref:`dev-manual/wic:creating partitioned images using wic`"
3997      section of the Yocto Project Development Tasks Manual. Reference
3998      material for Wic is located in the
3999      ":doc:`/ref-manual/kickstart`" chapter.
4000
4001   :term:`IMAGE_FEATURES`
4002      The primary list of features to include in an image. Typically, you
4003      configure this variable in an image recipe. Although you can use this
4004      variable from your ``local.conf`` file, which is found in the
4005      :term:`Build Directory`, best practices dictate that you do
4006      not.
4007
4008      .. note::
4009
4010         To enable extra features from outside the image recipe, use the
4011         :term:`EXTRA_IMAGE_FEATURES` variable.
4012
4013      For a list of image features that ships with the Yocto Project, see
4014      the ":ref:`ref-features-image`" section.
4015
4016      For an example that shows how to customize your image by using this
4017      variable, see the ":ref:`dev-manual/customizing-images:customizing images using custom \`\`image_features\`\` and \`\`extra_image_features\`\``"
4018      section in the Yocto Project Development Tasks Manual.
4019
4020   :term:`IMAGE_FSTYPES`
4021      Specifies the formats the OpenEmbedded build system uses during the
4022      build when creating the root filesystem. For example, setting
4023      :term:`IMAGE_FSTYPES` as follows causes the build system to create root
4024      filesystems using two formats: ``.ext3`` and ``.tar.bz2``::
4025
4026         IMAGE_FSTYPES = "ext3 tar.bz2"
4027
4028      For the complete list of supported image formats from which you can
4029      choose, see :term:`IMAGE_TYPES`.
4030
4031      .. note::
4032
4033         -  If an image recipe uses the "inherit image" line and you are
4034            setting :term:`IMAGE_FSTYPES` inside the recipe, you must set
4035            :term:`IMAGE_FSTYPES` prior to using the "inherit image" line.
4036
4037         -  Due to the way the OpenEmbedded build system processes this
4038            variable, you cannot update its contents by using ``:append``
4039            or ``:prepend``. You must use the ``+=`` operator to add one or
4040            more options to the :term:`IMAGE_FSTYPES` variable.
4041
4042   :term:`IMAGE_INSTALL`
4043      Used by recipes to specify the packages to install into an image
4044      through the :ref:`ref-classes-image` class. Use the
4045      :term:`IMAGE_INSTALL` variable with care to avoid ordering issues.
4046
4047      Image recipes set :term:`IMAGE_INSTALL` to specify the packages to
4048      install into an image through :ref:`ref-classes-image`. Additionally,
4049      there are "helper" classes such as the :ref:`ref-classes-core-image`
4050      class which can take lists used with :term:`IMAGE_FEATURES` and turn
4051      them into auto-generated entries in :term:`IMAGE_INSTALL` in addition
4052      to its default contents.
4053
4054      When you use this variable, it is best to use it as follows::
4055
4056         IMAGE_INSTALL:append = " package-name"
4057
4058      Be sure to include the space
4059      between the quotation character and the start of the package name or
4060      names.
4061
4062      .. note::
4063
4064         -  When working with a
4065            :ref:`core-image-minimal-initramfs <ref-manual/images:images>`
4066            image, do not use the :term:`IMAGE_INSTALL` variable to specify
4067            packages for installation. Instead, use the
4068            :term:`PACKAGE_INSTALL` variable, which
4069            allows the initial RAM filesystem (:term:`Initramfs`) recipe to use a
4070            fixed set of packages and not be affected by :term:`IMAGE_INSTALL`.
4071            For information on creating an :term:`Initramfs`, see the
4072            ":ref:`dev-manual/building:building an initial ram filesystem (Initramfs) image`"
4073            section in the Yocto Project Development Tasks Manual.
4074
4075         -  Using :term:`IMAGE_INSTALL` with the
4076            :ref:`+= <bitbake-user-manual/bitbake-user-manual-metadata:appending (+=) and prepending (=+) with spaces>`
4077            BitBake operator within the ``/conf/local.conf`` file or from
4078            within an image recipe is not recommended. Use of this operator in
4079            these ways can cause ordering issues. Since
4080            :ref:`ref-classes-core-image` sets :term:`IMAGE_INSTALL` to a
4081            default value using the
4082            :ref:`?= <bitbake-user-manual/bitbake-user-manual-metadata:setting a default value (?=)>`
4083            operator, using a ``+=`` operation against :term:`IMAGE_INSTALL`
4084            results in unexpected behavior when used within
4085            ``conf/local.conf``. Furthermore, the same operation from within an
4086            image recipe may or may not succeed depending on the specific
4087            situation. In both these cases, the behavior is contrary to how
4088            most users expect the ``+=`` operator to work.
4089
4090   :term:`IMAGE_LINGUAS`
4091      Specifies the list of locales to install into the image during the
4092      root filesystem construction process. The OpenEmbedded build system
4093      automatically splits locale files, which are used for localization,
4094      into separate packages. Setting the :term:`IMAGE_LINGUAS` variable
4095      ensures that any locale packages that correspond to packages already
4096      selected for installation into the image are also installed. Here is
4097      an example::
4098
4099         IMAGE_LINGUAS = "pt-br de-de"
4100
4101      In this example, the build system ensures any Brazilian Portuguese
4102      and German locale files that correspond to packages in the image are
4103      installed (i.e. ``*-locale-pt-br`` and ``*-locale-de-de`` as well as
4104      ``*-locale-pt`` and ``*-locale-de``, since some software packages
4105      only provide locale files by language and not by country-specific
4106      language).
4107
4108      See the :term:`GLIBC_GENERATE_LOCALES`
4109      variable for information on generating GLIBC locales.
4110
4111
4112   :term:`IMAGE_LINK_NAME`
4113      The name of the output image symlink (which does not include
4114      the version part as :term:`IMAGE_NAME` does). The default value
4115      is derived using the :term:`IMAGE_BASENAME` and
4116      :term:`IMAGE_MACHINE_SUFFIX` variables::
4117
4118         IMAGE_LINK_NAME ?= "${IMAGE_BASENAME}${IMAGE_MACHINE_SUFFIX}"
4119
4120      .. note::
4121
4122         It is possible to set this to "" to disable symlink creation,
4123         however, you also need to set :term:`IMAGE_NAME` to still have
4124         a reasonable value e.g.::
4125
4126            IMAGE_LINK_NAME = ""
4127            IMAGE_NAME = "${IMAGE_BASENAME}${IMAGE_MACHINE_SUFFIX}${IMAGE_VERSION_SUFFIX}"
4128
4129   :term:`IMAGE_MACHINE_SUFFIX`
4130      Specifies the by default machine-specific suffix for image file names
4131      (before the extension). The default value is set as follows::
4132
4133         IMAGE_MACHINE_SUFFIX ??= "-${MACHINE}"
4134
4135      The default :term:`DEPLOY_DIR_IMAGE` already has a :term:`MACHINE`
4136      subdirectory, so you may find it unnecessary to also include this suffix
4137      in the name of every image file. If you prefer to remove the suffix you
4138      can set this variable to an empty string::
4139
4140         IMAGE_MACHINE_SUFFIX = ""
4141
4142      (Not to be confused with :term:`IMAGE_NAME_SUFFIX`.)
4143
4144   :term:`IMAGE_MANIFEST`
4145      The manifest file for the image. This file lists all the installed
4146      packages that make up the image. The file contains package
4147      information on a line-per-package basis as follows::
4148
4149          packagename packagearch version
4150
4151      The :ref:`rootfs-postcommands <ref-classes-rootfs*>` class defines the manifest
4152      file as follows::
4153
4154         IMAGE_MANIFEST ="${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.manifest"
4155
4156      The location is
4157      derived using the :term:`IMGDEPLOYDIR`
4158      and :term:`IMAGE_NAME` variables. You can find
4159      information on how the image is created in the ":ref:`overview-manual/concepts:image generation`"
4160      section in the Yocto Project Overview and Concepts Manual.
4161
4162   :term:`IMAGE_NAME`
4163      The name of the output image files minus the extension. By default
4164      this variable is set using the :term:`IMAGE_LINK_NAME`, and
4165      :term:`IMAGE_VERSION_SUFFIX` variables::
4166
4167         IMAGE_NAME ?= "${IMAGE_LINK_NAME}${IMAGE_VERSION_SUFFIX}"
4168
4169   :term:`IMAGE_NAME_SUFFIX`
4170      Suffix used for the image output filename --- defaults to ``".rootfs"``
4171      to distinguish the image file from other files created during image
4172      building; however if this suffix is redundant or not desired you can
4173      clear the value of this variable (set the value to ""). For example,
4174      this is typically cleared in :term:`Initramfs` image recipes.
4175
4176   :term:`IMAGE_OUTPUT_MANIFEST`
4177      When inheriting the :ref:`ref-classes-image` class directly or through the
4178      :ref:`ref-classes-core-image` class, the :term:`IMAGE_OUTPUT_MANIFEST`
4179      points to a manifest ``json`` file that lists what images were created by
4180      various image creation tasks (as defined by the :term:`IMAGE_FSTYPES`
4181      variable). It is set in the :ref:`ref-classes-image` class as follows::
4182
4183          IMAGE_OUTPUT_MANIFEST = "${IMAGE_OUTPUT_MANIFEST_DIR}/manifest.json"
4184
4185   :term:`IMAGE_OUTPUT_MANIFEST_DIR`
4186      When inheriting the :ref:`ref-classes-image` class directly or through the
4187      :ref:`ref-classes-core-image` class, the :term:`IMAGE_OUTPUT_MANIFEST_DIR` points to
4188      a directory that stores a manifest ``json`` file that lists what
4189      images were created by various image creation tasks (as defined by the
4190      :term:`IMAGE_FSTYPES` variable). It is set in the :ref:`ref-classes-image`
4191      class as follows::
4192
4193          IMAGE_OUTPUT_MANIFEST_DIR = "${WORKDIR}/deploy-image-output-manifest"
4194
4195   :term:`IMAGE_OVERHEAD_FACTOR`
4196      Defines a multiplier that the build system applies to the initial
4197      image size for cases when the multiplier times the returned disk
4198      usage value for the image is greater than the sum of
4199      :term:`IMAGE_ROOTFS_SIZE` and :term:`IMAGE_ROOTFS_EXTRA_SPACE`. The result of
4200      the multiplier applied to the initial image size creates free disk
4201      space in the image as overhead. By default, the build process uses a
4202      multiplier of 1.3 for this variable. This default value results in
4203      30% free disk space added to the image when this method is used to
4204      determine the final generated image size. You should be aware that
4205      post install scripts and the package management system uses disk
4206      space inside this overhead area. Consequently, the multiplier does
4207      not produce an image with all the theoretical free disk space. See
4208      :term:`IMAGE_ROOTFS_SIZE` for information on how the build system
4209      determines the overall image size.
4210
4211      The default 30% free disk space typically gives the image enough room
4212      to boot and allows for basic post installs while still leaving a
4213      small amount of free disk space. If 30% free space is inadequate, you
4214      can increase the default value. For example, the following setting
4215      gives you 50% free space added to the image::
4216
4217         IMAGE_OVERHEAD_FACTOR = "1.5"
4218
4219      Alternatively, you can ensure a specific amount of free disk space is
4220      added to the image by using the :term:`IMAGE_ROOTFS_EXTRA_SPACE`
4221      variable.
4222
4223   :term:`IMAGE_PKGTYPE`
4224      Defines the package type (i.e. DEB, RPM, IPK, or TAR) used by the
4225      OpenEmbedded build system. The variable is defined appropriately by
4226      the :ref:`ref-classes-package_deb`, :ref:`ref-classes-package_rpm`,
4227      or :ref:`ref-classes-package_ipk` class.
4228
4229      The :ref:`ref-classes-populate-sdk-*` and :ref:`ref-classes-image`
4230      classes use the :term:`IMAGE_PKGTYPE` for packaging up images and SDKs.
4231
4232      You should not set the :term:`IMAGE_PKGTYPE` manually. Rather, the
4233      variable is set indirectly through the appropriate
4234      :ref:`package_* <ref-classes-package>` class using the
4235      :term:`PACKAGE_CLASSES` variable. The
4236      OpenEmbedded build system uses the first package type (e.g. DEB, RPM,
4237      or IPK) that appears with the variable
4238
4239      .. note::
4240
4241         Files using the ``.tar`` format are never used as a substitute
4242         packaging format for DEB, RPM, and IPK formatted files for your image
4243         or SDK.
4244
4245   :term:`IMAGE_POSTPROCESS_COMMAND`
4246      Specifies a list of functions to call once the OpenEmbedded build
4247      system creates the final image output files. You can specify
4248      functions separated by spaces::
4249
4250         IMAGE_POSTPROCESS_COMMAND += "function"
4251
4252      If you need to pass the root filesystem path to a command within the
4253      function, you can use ``${IMAGE_ROOTFS}``, which points to the
4254      directory that becomes the root filesystem image. See the
4255      :term:`IMAGE_ROOTFS` variable for more
4256      information.
4257
4258   :term:`IMAGE_PREPROCESS_COMMAND`
4259      Specifies a list of functions to call before the OpenEmbedded build
4260      system creates the final image output files. You can specify
4261      functions separated by spaces::
4262
4263         IMAGE_PREPROCESS_COMMAND += "function"
4264
4265      If you need to pass the root filesystem path to a command within the
4266      function, you can use ``${IMAGE_ROOTFS}``, which points to the
4267      directory that becomes the root filesystem image. See the
4268      :term:`IMAGE_ROOTFS` variable for more
4269      information.
4270
4271   :term:`IMAGE_ROOTFS`
4272      The location of the root filesystem while it is under construction
4273      (i.e. during the :ref:`ref-tasks-rootfs` task). This
4274      variable is not configurable. Do not change it.
4275
4276   :term:`IMAGE_ROOTFS_ALIGNMENT`
4277      Specifies the alignment for the output image file in Kbytes. If the
4278      size of the image is not a multiple of this value, then the size is
4279      rounded up to the nearest multiple of the value. The default value is
4280      "1". See :term:`IMAGE_ROOTFS_SIZE` for
4281      additional information.
4282
4283   :term:`IMAGE_ROOTFS_EXTRA_SPACE`
4284      Defines additional free disk space created in the image in Kbytes. By
4285      default, this variable is set to "0". This free disk space is added
4286      to the image after the build system determines the image size as
4287      described in :term:`IMAGE_ROOTFS_SIZE`.
4288
4289      This variable is particularly useful when you want to ensure that a
4290      specific amount of free disk space is available on a device after an
4291      image is installed and running. For example, to be sure 5 Gbytes of
4292      free disk space is available, set the variable as follows::
4293
4294         IMAGE_ROOTFS_EXTRA_SPACE = "5242880"
4295
4296      For example, the Yocto Project Build Appliance specifically requests
4297      40 Gbytes of extra space with the line::
4298
4299         IMAGE_ROOTFS_EXTRA_SPACE = "41943040"
4300
4301   :term:`IMAGE_ROOTFS_MAXSIZE`
4302      Defines the maximum allowed size of the generated image in kilobytes.
4303      The build will fail if the generated image size exceeds this value.
4304
4305      The generated image size undergoes several calculation steps before being
4306      compared to :term:`IMAGE_ROOTFS_MAXSIZE`.
4307      In the first step, the size of the directory pointed to by :term:`IMAGE_ROOTFS`
4308      is calculated.
4309      In the second step, the result from the first step is multiplied
4310      by :term:`IMAGE_OVERHEAD_FACTOR`.
4311      In the third step, the result from the second step is compared with
4312      :term:`IMAGE_ROOTFS_SIZE`. The larger value of these is added to
4313      :term:`IMAGE_ROOTFS_EXTRA_SPACE`.
4314      In the fourth step, the result from the third step is checked for
4315      a decimal part. If it has one, it is rounded up to the next integer.
4316      If it does not, it is simply converted into an integer.
4317      In the fifth step, the :term:`IMAGE_ROOTFS_ALIGNMENT` is added to the result
4318      from the fourth step and "1" is subtracted.
4319      In the sixth step, the remainder of the division between the result
4320      from the fifth step and :term:`IMAGE_ROOTFS_ALIGNMENT` is subtracted from the
4321      result of the fifth step. In this way, the result from the fourth step is
4322      rounded up to the nearest multiple of :term:`IMAGE_ROOTFS_ALIGNMENT`.
4323
4324      Thus, if the :term:`IMAGE_ROOTFS_MAXSIZE` is set, is compared with the result
4325      of the above calculations and is independent of the final image type.
4326      No default value is set for :term:`IMAGE_ROOTFS_MAXSIZE`.
4327
4328      It's a good idea to set this variable for images that need to fit on a limited
4329      space (e.g. SD card, a fixed-size partition, ...).
4330
4331   :term:`IMAGE_ROOTFS_SIZE`
4332      Defines the size in Kbytes for the generated image. The OpenEmbedded
4333      build system determines the final size for the generated image using
4334      an algorithm that takes into account the initial disk space used for
4335      the generated image, a requested size for the image, and requested
4336      additional free disk space to be added to the image. Programatically,
4337      the build system determines the final size of the generated image as
4338      follows::
4339
4340         if (image-du * overhead) < rootfs-size:
4341             internal-rootfs-size = rootfs-size + xspace
4342         else:
4343             internal-rootfs-size = (image-du * overhead) + xspace
4344         where:
4345             image-du = Returned value of the du command on the image.
4346             overhead = IMAGE_OVERHEAD_FACTOR
4347             rootfs-size = IMAGE_ROOTFS_SIZE
4348             internal-rootfs-size = Initial root filesystem size before any modifications.
4349             xspace = IMAGE_ROOTFS_EXTRA_SPACE
4350
4351      See the :term:`IMAGE_OVERHEAD_FACTOR`
4352      and :term:`IMAGE_ROOTFS_EXTRA_SPACE`
4353      variables for related information.
4354
4355   :term:`IMAGE_TYPEDEP`
4356      Specifies a dependency from one image type on another. Here is an
4357      example from the :ref:`ref-classes-image-live` class::
4358
4359         IMAGE_TYPEDEP:live = "ext3"
4360
4361      In the previous example, the variable ensures that when "live" is
4362      listed with the :term:`IMAGE_FSTYPES` variable,
4363      the OpenEmbedded build system produces an ``ext3`` image first since
4364      one of the components of the live image is an ``ext3`` formatted
4365      partition containing the root filesystem.
4366
4367   :term:`IMAGE_TYPES`
4368      Specifies the complete list of supported image types by default:
4369
4370      - btrfs
4371      - container
4372      - cpio
4373      - cpio.gz
4374      - cpio.lz4
4375      - cpio.lzma
4376      - cpio.xz
4377      - cramfs
4378      - erofs
4379      - erofs-lz4
4380      - erofs-lz4hc
4381      - ext2
4382      - ext2.bz2
4383      - ext2.gz
4384      - ext2.lzma
4385      - ext3
4386      - ext3.gz
4387      - ext4
4388      - ext4.gz
4389      - f2fs
4390      - hddimg
4391      - iso
4392      - jffs2
4393      - jffs2.sum
4394      - multiubi
4395      - squashfs
4396      - squashfs-lz4
4397      - squashfs-lzo
4398      - squashfs-xz
4399      - tar
4400      - tar.bz2
4401      - tar.gz
4402      - tar.lz4
4403      - tar.xz
4404      - tar.zst
4405      - ubi
4406      - ubifs
4407      - wic
4408      - wic.bz2
4409      - wic.gz
4410      - wic.lzma
4411      - wic.zst
4412
4413      For more information about these types of images, see
4414      ``meta/classes-recipe/image_types*.bbclass`` in the :term:`Source Directory`.
4415
4416   :term:`IMAGE_VERSION_SUFFIX`
4417      Version suffix that is part of the default :term:`IMAGE_NAME` and
4418      :term:`KERNEL_ARTIFACT_NAME` values.
4419      Defaults to ``"-${DATETIME}"``, however you could set this to a
4420      version string that comes from your external build environment if
4421      desired, and this suffix would then be used consistently across
4422      the build artifacts.
4423
4424   :term:`IMGDEPLOYDIR`
4425      When inheriting the :ref:`ref-classes-image` class directly or
4426      through the :ref:`ref-classes-core-image` class, the
4427      :term:`IMGDEPLOYDIR` points to a temporary work area for deployed files
4428      that is set in the ``image`` class as follows::
4429
4430         IMGDEPLOYDIR = "${WORKDIR}/deploy-${PN}-image-complete"
4431
4432      Recipes inheriting the :ref:`ref-classes-image` class should copy
4433      files to be deployed into :term:`IMGDEPLOYDIR`, and the class will take
4434      care of copying them into :term:`DEPLOY_DIR_IMAGE` afterwards.
4435
4436   :term:`IMGMANIFESTDIR`
4437      When inheriting the :ref:`ref-classes-image` class directly or through the
4438      :ref:`ref-classes-core-image` class, the :term:`IMGMANIFESTDIR` setting
4439      points to a temporary area that stores manifest ``json`` files, that list
4440      what images were created by various images creation tasks (as defined by
4441      the :term:`IMAGE_FSTYPES` variable). It is set in the
4442      :ref:`ref-classes-image` class as follows::
4443
4444          IMGMANIFESTDIR = "${WORKDIR}/image-task-manifest"
4445
4446   :term:`INCOMPATIBLE_LICENSE`
4447      Specifies a space-separated list of license names (as they would
4448      appear in :term:`LICENSE`) that should be excluded
4449      from the build (if set globally), or from an image (if set locally
4450      in an image recipe).
4451
4452      When the variable is set globally, recipes that provide no alternatives to listed
4453      incompatible licenses are not built. Packages that are individually
4454      licensed with the specified incompatible licenses will be deleted.
4455      Most of the time this does not allow a feasible build (because it becomes impossible
4456      to satisfy build time dependencies), so the recommended way to
4457      implement license restrictions is to set the variable in specific
4458      image recipes where the restrictions must apply. That way there
4459      are no build time restrictions, but the license check is still
4460      performed when the image's filesystem is assembled from packages.
4461
4462      There is some support for wildcards in this variable's value,
4463      however it is restricted to specific licenses. Currently only
4464      these wildcards are allowed and expand as follows:
4465
4466      - ``AGPL-3.0*"``: ``AGPL-3.0-only``, ``AGPL-3.0-or-later``
4467      - ``GPL-3.0*``: ``GPL-3.0-only``, ``GPL-3.0-or-later``
4468      - ``LGPL-3.0*``: ``LGPL-3.0-only``, ``LGPL-3.0-or-later``
4469
4470      .. note::
4471
4472         This functionality is only regularly tested using the following
4473         setting::
4474
4475                 INCOMPATIBLE_LICENSE = "GPL-3.0* LGPL-3.0* AGPL-3.0*"
4476
4477
4478         Although you can use other settings, you might be required to
4479         remove dependencies on (or provide alternatives to) components that
4480         are required to produce a functional system image.
4481
4482   :term:`INCOMPATIBLE_LICENSE_EXCEPTIONS`
4483      Specifies a space-separated list of package and license pairs that
4484      are allowed to be used even if the license is specified in
4485      :term:`INCOMPATIBLE_LICENSE`. The package and license pairs are
4486      separated using a colon. Example::
4487
4488         INCOMPATIBLE_LICENSE_EXCEPTIONS = "gdbserver:GPL-3.0-only gdbserver:LGPL-3.0-only"
4489
4490   :term:`INHERIT`
4491      Causes the named class or classes to be inherited globally. Anonymous
4492      functions in the class or classes are not executed for the base
4493      configuration and in each individual recipe. The OpenEmbedded build
4494      system ignores changes to :term:`INHERIT` in individual recipes.
4495      Classes inherited using :term:`INHERIT` must be located in the
4496      ``classes-global/`` or ``classes/`` subdirectories.
4497
4498      For more information on :term:`INHERIT`, see the
4499      :ref:`bitbake-user-manual/bitbake-user-manual-metadata:\`\`inherit\`\` configuration directive`"
4500      section in the BitBake User Manual.
4501
4502   :term:`INHERIT_DISTRO`
4503      Lists classes that will be inherited at the distribution level. It is
4504      unlikely that you want to edit this variable.
4505
4506      Classes specified in :term:`INHERIT_DISTRO` must be located in the
4507      ``classes-global/`` or ``classes/`` subdirectories.
4508
4509      The default value of the variable is set as follows in the
4510      ``meta/conf/distro/defaultsetup.conf`` file::
4511
4512         INHERIT_DISTRO ?= "debian devshell sstate license remove-libtool create-spdx"
4513
4514   :term:`INHIBIT_AUTOTOOLS_DEPS`
4515      Prevents the :ref:`ref-classes-autotools` class from automatically adding
4516      its default build-time dependencies.
4517
4518      When a recipe inherits the :ref:`ref-classes-autotools` class, several
4519      native cross tools such as ``autoconf-native``, ``automake-native``,
4520      ``libtool-native``, ``libtool-cross`` are added to :term:`DEPENDS` to
4521      support the ``autotools`` build process.
4522
4523      To prevent the build system from adding these dependencies automatically,
4524      set the :term:`INHIBIT_AUTOTOOLS_DEPS` variable as follows::
4525
4526         INHIBIT_AUTOTOOLS_DEPS = "1"
4527
4528      By default, the value of :term:`INHIBIT_AUTOTOOLS_DEPS` is empty. Setting
4529      it to "0" does not disable inhibition. Only the empty string will disable
4530      inhibition.
4531
4532   :term:`INHIBIT_DEFAULT_DEPS`
4533      Prevents the default dependencies, namely the C compiler and standard
4534      C library (libc), from being added to :term:`DEPENDS`.
4535      This variable is usually used within recipes that do not require any
4536      compilation using the C compiler.
4537
4538      Set the variable to "1" to prevent the default dependencies from
4539      being added.
4540
4541   :term:`INHIBIT_DEFAULT_RUST_DEPS`
4542      Prevents the :ref:`ref-classes-rust` class from automatically adding
4543      its default build-time dependencies.
4544
4545      When a recipe inherits the :ref:`ref-classes-rust` class, several
4546      tools such as ``rust-native`` and ``${RUSTLIB_DEP}`` (only added when cross-compiling) are added
4547      to :term:`DEPENDS` to support the ``rust`` build process.
4548
4549      To prevent the build system from adding these dependencies automatically,
4550      set the :term:`INHIBIT_DEFAULT_RUST_DEPS` variable as follows::
4551
4552         INHIBIT_DEFAULT_RUST_DEPS = "1"
4553
4554      By default, the value of :term:`INHIBIT_DEFAULT_RUST_DEPS` is empty. Setting
4555      it to "0" does not disable inhibition. Only the empty string will disable
4556      inhibition.
4557
4558   :term:`INHIBIT_PACKAGE_DEBUG_SPLIT`
4559      Prevents the OpenEmbedded build system from splitting out debug
4560      information during packaging. By default, the build system splits out
4561      debugging information during the
4562      :ref:`ref-tasks-package` task. For more information on
4563      how debug information is split out, see the
4564      :term:`PACKAGE_DEBUG_SPLIT_STYLE`
4565      variable.
4566
4567      To prevent the build system from splitting out debug information
4568      during packaging, set the :term:`INHIBIT_PACKAGE_DEBUG_SPLIT` variable as
4569      follows::
4570
4571         INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
4572
4573   :term:`INHIBIT_PACKAGE_STRIP`
4574      If set to "1", causes the build to not strip binaries in resulting
4575      packages and prevents the ``-dbg`` package from containing the source
4576      files.
4577
4578      By default, the OpenEmbedded build system strips binaries and puts
4579      the debugging symbols into ``${``\ :term:`PN`\ ``}-dbg``.
4580      Consequently, you should not set :term:`INHIBIT_PACKAGE_STRIP` when you
4581      plan to debug in general.
4582
4583   :term:`INHIBIT_SYSROOT_STRIP`
4584      If set to "1", causes the build to not strip binaries in the
4585      resulting sysroot.
4586
4587      By default, the OpenEmbedded build system strips binaries in the
4588      resulting sysroot. When you specifically set the
4589      :term:`INHIBIT_SYSROOT_STRIP` variable to "1" in your recipe, you inhibit
4590      this stripping.
4591
4592      If you want to use this variable, include the :ref:`ref-classes-staging`
4593      class. This class uses a ``sys_strip()`` function to test for the variable
4594      and acts accordingly.
4595
4596      .. note::
4597
4598         Use of the :term:`INHIBIT_SYSROOT_STRIP` variable occurs in rare and
4599         special circumstances. For example, suppose you are building
4600         bare-metal firmware by using an external GCC toolchain. Furthermore,
4601         even if the toolchain's binaries are strippable, there are other files
4602         needed for the build that are not strippable.
4603
4604   :term:`INHIBIT_UPDATERCD_BBCLASS`
4605      Prevents the :ref:`ref-classes-update-rc.d` class from automatically
4606      installing and registering SysV init scripts for packages.
4607
4608      When a recipe inherits the :ref:`ref-classes-update-rc.d` class, init
4609      scripts are typically installed and registered for the packages listed in
4610      :term:`INITSCRIPT_PACKAGES`. This ensures that the relevant
4611      services are started and stopped at the appropriate runlevels using the
4612      traditional SysV init system.
4613
4614      To prevent the build system from adding these scripts and configurations
4615      automatically, set the :term:`INHIBIT_UPDATERCD_BBCLASS` variable as follows::
4616
4617         INHIBIT_UPDATERCD_BBCLASS = "1"
4618
4619      By default, the value of :term:`INHIBIT_UPDATERCD_BBCLASS` is empty. Setting
4620      it to "0" does not disable inhibition. Only the empty string will disable
4621      inhibition.
4622
4623   :term:`INIT_MANAGER`
4624      Specifies the system init manager to use. Available options are:
4625
4626      -  ``sysvinit``
4627      -  ``systemd``
4628      -  ``mdev-busybox``
4629
4630      With ``sysvinit``, the init manager is set to
4631      :wikipedia:`SysVinit <Init#SysV-style>`, the traditional UNIX init
4632      system. This is the default choice in the Poky distribution, together with
4633      the Udev device manager (see the ":ref:`device-manager`" section).
4634
4635      With ``systemd``, the init manager becomes :wikipedia:`systemd <Systemd>`,
4636      which comes with the :wikipedia:`udev <Udev>` device manager.
4637
4638      With ``mdev-busybox``, the init manager becomes the much simpler BusyBox
4639      init, together with the BusyBox mdev device manager. This is the simplest
4640      and lightest solution, and probably the best choice for low-end systems
4641      with a rather slow CPU and a limited amount of RAM.
4642
4643      More concretely, this is used to include
4644      ``conf/distro/include/init-manager-${INIT_MANAGER}.inc`` into the global
4645      configuration. You can have a look at the
4646      :yocto_git:`meta/conf/distro/include/init-manager-*.inc </poky/tree/meta/conf/distro/include>`
4647      files for more information, and also the ":ref:`init-manager`"
4648      section in the Yocto Project Development Tasks Manual.
4649
4650   :term:`INITRAMFS_DEPLOY_DIR_IMAGE`
4651      Indicates the deploy directory used by :ref:`ref-tasks-bundle_initramfs`
4652      where the :term:`INITRAMFS_IMAGE` will be fetched from. This variable is
4653      set by default to ``${DEPLOY_DIR_IMAGE}`` in the
4654      :ref:`ref-classes-kernel` class and it's only meant to be changed when
4655      building an :term:`Initramfs` image from a separate multiconfig via
4656      :term:`INITRAMFS_MULTICONFIG`.
4657
4658   :term:`INITRAMFS_FSTYPES`
4659      Defines the format for the output image of an initial RAM filesystem
4660      (:term:`Initramfs`), which is used during boot. Supported formats are the
4661      same as those supported by the
4662      :term:`IMAGE_FSTYPES` variable.
4663
4664      The default value of this variable, which is set in the
4665      ``meta/conf/bitbake.conf`` configuration file in the
4666      :term:`Source Directory`, is "cpio.gz". The Linux kernel's
4667      :term:`Initramfs` mechanism, as opposed to the initial RAM filesystem
4668      :wikipedia:`initrd <Initrd>` mechanism, expects
4669      an optionally compressed cpio archive.
4670
4671   :term:`INITRAMFS_IMAGE`
4672      Specifies the :term:`PROVIDES` name of an image
4673      recipe that is used to build an initial RAM filesystem (:term:`Initramfs`)
4674      image. In other words, the :term:`INITRAMFS_IMAGE` variable causes an
4675      additional recipe to be built as a dependency to whatever root
4676      filesystem recipe you might be using (e.g. ``core-image-sato``). The
4677      :term:`Initramfs` image recipe you provide should set
4678      :term:`IMAGE_FSTYPES` to
4679      :term:`INITRAMFS_FSTYPES`.
4680
4681      An :term:`Initramfs` image provides a temporary root filesystem used for
4682      early system initialization (e.g. loading of modules needed to locate
4683      and mount the "real" root filesystem).
4684
4685      .. note::
4686
4687         See the ``meta/recipes-core/images/core-image-minimal-initramfs.bb``
4688         recipe in the :term:`Source Directory`
4689         for an example :term:`Initramfs` recipe. To select this sample recipe as
4690         the one built to provide the :term:`Initramfs` image, set :term:`INITRAMFS_IMAGE`
4691         to "core-image-minimal-initramfs".
4692
4693      You can also find more information by referencing the
4694      ``meta-poky/conf/templates/default/local.conf.sample.extended``
4695      configuration file in the Source Directory, the :ref:`ref-classes-image`
4696      class, and the :ref:`ref-classes-kernel` class to see how to use the
4697      :term:`INITRAMFS_IMAGE` variable.
4698
4699      If :term:`INITRAMFS_IMAGE` is empty, which is the default, then no
4700      :term:`Initramfs` image is built.
4701
4702      For more information, you can also see the
4703      :term:`INITRAMFS_IMAGE_BUNDLE`
4704      variable, which allows the generated image to be bundled inside the
4705      kernel image. Additionally, for information on creating an :term:`Initramfs`
4706      image, see the ":ref:`dev-manual/building:building an initial ram filesystem (Initramfs) image`" section
4707      in the Yocto Project Development Tasks Manual.
4708
4709   :term:`INITRAMFS_IMAGE_BUNDLE`
4710      Controls whether or not the image recipe specified by
4711      :term:`INITRAMFS_IMAGE` is run through an
4712      extra pass
4713      (:ref:`ref-tasks-bundle_initramfs`) during
4714      kernel compilation in order to build a single binary that contains
4715      both the kernel image and the initial RAM filesystem (:term:`Initramfs`)
4716      image. This makes use of the
4717      :term:`CONFIG_INITRAMFS_SOURCE` kernel
4718      feature.
4719
4720      .. note::
4721
4722         Bundling the :term:`Initramfs` with the kernel conflates the code in the
4723         :term:`Initramfs` with the GPLv2 licensed Linux kernel binary. Thus only GPLv2
4724         compatible software may be part of a bundled :term:`Initramfs`.
4725
4726      .. note::
4727
4728         Using an extra compilation pass to bundle the :term:`Initramfs` avoids a
4729         circular dependency between the kernel recipe and the :term:`Initramfs`
4730         recipe should the :term:`Initramfs` include kernel modules. Should that be
4731         the case, the :term:`Initramfs` recipe depends on the kernel for the
4732         kernel modules, and the kernel depends on the :term:`Initramfs` recipe
4733         since the :term:`Initramfs` is bundled inside the kernel image.
4734
4735      The combined binary is deposited into the ``tmp/deploy`` directory,
4736      which is part of the :term:`Build Directory`.
4737
4738      Setting the variable to "1" in a configuration file causes the
4739      OpenEmbedded build system to generate a kernel image with the
4740      :term:`Initramfs` specified in :term:`INITRAMFS_IMAGE` bundled within::
4741
4742         INITRAMFS_IMAGE_BUNDLE = "1"
4743
4744      By default, the :ref:`ref-classes-kernel` class sets this variable to a
4745      null string as follows::
4746
4747         INITRAMFS_IMAGE_BUNDLE ?= ""
4748
4749      .. note::
4750
4751         You must set the :term:`INITRAMFS_IMAGE_BUNDLE` variable in a
4752         configuration file. You cannot set the variable in a recipe file.
4753
4754      See the
4755      :yocto_git:`local.conf.sample.extended </poky/tree/meta-poky/conf/templates/default/local.conf.sample.extended>`
4756      file for additional information. Also, for information on creating an
4757      :term:`Initramfs`, see the ":ref:`dev-manual/building:building an initial ram filesystem (Initramfs) image`" section
4758      in the Yocto Project Development Tasks Manual.
4759
4760   :term:`INITRAMFS_IMAGE_NAME`
4761
4762      This value needs to stay in sync with :term:`IMAGE_LINK_NAME`, but with
4763      :term:`INITRAMFS_IMAGE` instead of :term:`IMAGE_BASENAME`. The default value
4764      is set as follows:
4765
4766         INITRAMFS_IMAGE_NAME ?= "${@['${INITRAMFS_IMAGE}${IMAGE_MACHINE_SUFFIX}', ''][d.getVar('INITRAMFS_IMAGE') == '']}"
4767
4768      That is, if :term:`INITRAMFS_IMAGE` is set, the value of
4769      :term:`INITRAMFS_IMAGE_NAME` will be set based upon
4770      :term:`INITRAMFS_IMAGE` and :term:`IMAGE_MACHINE_SUFFIX`.
4771
4772
4773   :term:`INITRAMFS_LINK_NAME`
4774      The link name of the initial RAM filesystem image. This variable is
4775      set in the ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as
4776      follows::
4777
4778         INITRAMFS_LINK_NAME ?= "initramfs-${KERNEL_ARTIFACT_LINK_NAME}"
4779
4780      The value of the
4781      ``KERNEL_ARTIFACT_LINK_NAME`` variable, which is set in the same
4782      file, has the following value::
4783
4784         KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}"
4785
4786      See the :term:`MACHINE` variable for additional
4787      information.
4788
4789   :term:`INITRAMFS_MAXSIZE`
4790      Defines the maximum allowed size of the :term:`Initramfs` image in Kbytes.
4791      The build will fail if the :term:`Initramfs` image size exceeds this value.
4792
4793      The :term:`Initramfs` image size undergoes several calculation steps before
4794      being compared to :term:`INITRAMFS_MAXSIZE`.
4795      These steps are the same as those used for :term:`IMAGE_ROOTFS_MAXSIZE`
4796      and are described in detail in that entry.
4797
4798      Thus, :term:`INITRAMFS_MAXSIZE` is compared with the result of the calculations
4799      and is independent of the final image type (e.g. compressed).
4800      A default value for :term:`INITRAMFS_MAXSIZE` is set in
4801      :oe_git:`meta/conf/bitbake.conf </openembedded-core/tree/meta/conf/bitbake.conf>`.
4802
4803   :term:`INITRAMFS_MULTICONFIG`
4804      Defines the multiconfig to create a multiconfig dependency to be used by
4805      the :ref:`ref-classes-kernel` class.
4806
4807      This allows the kernel to bundle an :term:`INITRAMFS_IMAGE` coming from
4808      a separate multiconfig, this is meant to be used in addition to :term:`INITRAMFS_DEPLOY_DIR_IMAGE`.
4809
4810      For more information on how to bundle an :term:`Initramfs` image from a separate
4811      multiconfig see the ":ref:`dev-manual/building:Bundling an Initramfs Image From a Separate Multiconfig`"
4812      section in the Yocto Project Development Tasks Manual.
4813
4814   :term:`INITRAMFS_NAME`
4815      The base name of the initial RAM filesystem image. This variable is
4816      set in the ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as
4817      follows::
4818
4819         INITRAMFS_NAME ?= "initramfs-${KERNEL_ARTIFACT_NAME}"
4820
4821      See :term:`KERNEL_ARTIFACT_NAME` for additional information.
4822
4823   :term:`INITRD`
4824      Indicates list of filesystem images to concatenate and use as an
4825      initial RAM disk (``initrd``).
4826
4827      The :term:`INITRD` variable is an optional variable used with the
4828      :ref:`ref-classes-image-live` class.
4829
4830   :term:`INITRD_IMAGE`
4831      When building a "live" bootable image (i.e. when
4832      :term:`IMAGE_FSTYPES` contains "live"),
4833      :term:`INITRD_IMAGE` specifies the image recipe that should be built to
4834      provide the initial RAM disk image. The default value is
4835      "core-image-minimal-initramfs".
4836
4837      See the :ref:`ref-classes-image-live` class for more information.
4838
4839   :term:`INITSCRIPT_NAME`
4840      The filename of the initialization script as installed to
4841      ``${sysconfdir}/init.d``.
4842
4843      This variable is used in recipes when using :ref:`ref-classes-update-rc.d`.
4844      The variable is mandatory.
4845
4846   :term:`INITSCRIPT_PACKAGES`
4847      A list of the packages that contain initscripts. If multiple packages
4848      are specified, you need to append the package name to the other
4849      ``INITSCRIPT_*`` as an override.
4850
4851      This variable is used in recipes when using :ref:`ref-classes-update-rc.d`.
4852      The variable is optional and defaults to the :term:`PN`
4853      variable.
4854
4855   :term:`INITSCRIPT_PARAMS`
4856      Specifies the options to pass to ``update-rc.d``. Here is an example::
4857
4858         INITSCRIPT_PARAMS = "start 99 5 2 . stop 20 0 1 6 ."
4859
4860      In this example, the script has a runlevel of 99, starts the script
4861      in initlevels 2 and 5, and stops the script in levels 0, 1 and 6.
4862
4863      The variable's default value is "defaults", which is set in the
4864      :ref:`ref-classes-update-rc.d` class.
4865
4866      The value in :term:`INITSCRIPT_PARAMS` is passed through to the
4867      ``update-rc.d`` command. For more information on valid parameters,
4868      please see the manual page: :manpage:`update-rc.d <update-rc.d(8)>`.
4869
4870   :term:`INSANE_SKIP`
4871      Specifies the QA checks to skip for a specific package within a
4872      recipe. For example, to skip the check for symbolic link ``.so``
4873      files in the main package of a recipe, add the following to the
4874      recipe. The package name override must be used, which in this example
4875      is ``${PN}``::
4876
4877         INSANE_SKIP:${PN} += "dev-so"
4878
4879      See the ":ref:`ref-classes-insane`" section for a
4880      list of the valid QA checks you can specify using this variable.
4881
4882   :term:`INSTALL_TIMEZONE_FILE`
4883      By default, the ``tzdata`` recipe packages an ``/etc/timezone`` file.
4884      Set the :term:`INSTALL_TIMEZONE_FILE` variable to "0" at the
4885      configuration level to disable this behavior.
4886
4887   :term:`IPK_FEED_URIS`
4888      When the IPK backend is in use and package management is enabled on
4889      the target, you can use this variable to set up ``opkg`` in the
4890      target image to point to package feeds on a nominated server. Once
4891      the feed is established, you can perform installations or upgrades
4892      using the package manager at runtime.
4893
4894   :term:`KARCH`
4895      Defines the kernel architecture used when assembling the
4896      configuration. Architectures supported for this release are:
4897
4898      - powerpc
4899      - i386
4900      - x86_64
4901      - arm
4902      - qemu
4903      - mips
4904
4905      You define the :term:`KARCH` variable in the :ref:`kernel-dev/advanced:bsp descriptions`.
4906
4907   :term:`KBRANCH`
4908      A regular expression used by the build process to explicitly identify
4909      the kernel branch that is validated, patched, and configured during a
4910      build. You must set this variable to ensure the exact kernel branch
4911      you want is being used by the build process.
4912
4913      Values for this variable are set in the kernel's recipe file and the
4914      kernel's append file. For example, if you are using the
4915      ``linux-yocto_4.12`` kernel, the kernel recipe file is the
4916      ``meta/recipes-kernel/linux/linux-yocto_4.12.bb`` file. :term:`KBRANCH`
4917      is set as follows in that kernel recipe file::
4918
4919         KBRANCH ?= "standard/base"
4920
4921      This variable is also used from the kernel's append file to identify
4922      the kernel branch specific to a particular machine or target
4923      hardware. Continuing with the previous kernel example, the kernel's
4924      append file is located in the
4925      BSP layer for a given machine. For example, the append file for the
4926      Beaglebone and generic versions of both 32 and 64-bit IA
4927      machines (``meta-yocto-bsp``) is named
4928      ``meta-yocto-bsp/recipes-kernel/linux/linux-yocto_6.1.bbappend``.
4929      Here are the related statements from that append file::
4930
4931         KBRANCH:genericx86  = "v6.1/standard/base"
4932         KBRANCH:genericx86-64  = "v6.1/standard/base"
4933         KBRANCH:beaglebone-yocto = "v6.1/standard/beaglebone"
4934
4935      The :term:`KBRANCH` statements
4936      identify the kernel branch to use when building for each supported
4937      BSP.
4938
4939   :term:`KBUILD_DEFCONFIG`
4940      When used with the :ref:`ref-classes-kernel-yocto`
4941      class, specifies an "in-tree" kernel configuration file for use
4942      during a kernel build.
4943
4944      Typically, when using a ``defconfig`` to configure a kernel during a
4945      build, you place the file in your layer in the same manner as you
4946      would place patch files and configuration fragment files (i.e.
4947      "out-of-tree"). However, if you want to use a ``defconfig`` file that
4948      is part of the kernel tree (i.e. "in-tree"), you can use the
4949      :term:`KBUILD_DEFCONFIG` variable and append the
4950      :term:`KMACHINE` variable to point to the
4951      ``defconfig`` file.
4952
4953      To use the variable, set it in the append file for your kernel recipe
4954      using the following form::
4955
4956         KBUILD_DEFCONFIG:<machine> ?= "defconfig_file"
4957
4958      Here is an example from a "raspberrypi2" :term:`MACHINE` build that uses
4959      a ``defconfig`` file named "bcm2709_defconfig"::
4960
4961         KBUILD_DEFCONFIG:raspberrypi2 = "bcm2709_defconfig"
4962
4963      As an alternative, you can use the following within your append file::
4964
4965         KBUILD_DEFCONFIG:pn-linux-yocto ?= "defconfig_file"
4966
4967      For more
4968      information on how to use the :term:`KBUILD_DEFCONFIG` variable, see the
4969      ":ref:`kernel-dev/common:using an "in-tree" \`\`defconfig\`\` file`"
4970      section in the Yocto Project Linux Kernel Development Manual.
4971
4972   :term:`KCONF_AUDIT_LEVEL`
4973      When inheriting the :ref:`ref-classes-kernel-yocto` class and when the
4974      :term:`KMETA_AUDIT` variable is set to a non-empty string, the
4975      :term:`KCONF_AUDIT_LEVEL` variable specifies whether to report Kernel
4976      configuration values that are different from the user-specified value. Its
4977      value is a positive integer (default: 1):
4978
4979      -  0: no reporting is done.
4980
4981      -  1: report the problems as warnings and trigger an error if
4982         :term:`KMETA_AUDIT_WERROR` is set.
4983
4984      -  2: if the :ref:`ref-tasks-kernel_configme` has failed to generate a
4985         ``.config`` file, print the content of the ``merge_config_build.log``
4986         file containing the errors, instead of just providing the path to
4987         that file.
4988
4989      For more details see the :ref:`ref-classes-kernel-yocto` class and the
4990      :yocto_git:`symbol_why.py </yocto-kernel-tools/tree/tools/symbol_why.py>`
4991      script in :yocto_git:`yocto-kernel-tools </yocto-kernel-tools>`.
4992
4993   :term:`KCONF_BSP_AUDIT_LEVEL`
4994      When inheriting the :ref:`ref-classes-kernel-yocto` class and when the
4995      :term:`KMETA_AUDIT` variable is set to a non-empty string, the
4996      :term:`KCONF_BSP_AUDIT_LEVEL` variable can be set to report:
4997
4998      #.  User-specified Kernel configurations that did not make it into the final
4999          Kernel configuration.
5000
5001      #.  Configurations defined in multiple input files with differing values.
5002
5003      Its value is a positive integer (default: 0):
5004
5005      -  0: no reporting is done.
5006
5007      -  1: reporting of configuration options that did not make it in the
5008         final configuration is done and is not limited to the current
5009         architecture (``ARCH``) in use.
5010
5011      -  2: reporting of configuration options that did not make it in the
5012         final configuration is done and is strictly limited to the current
5013         architecture (``ARCH``) in use.
5014
5015      -  3: report the problems found when this variable equals 2, and also
5016         report configurations options defined in multiple input files with
5017         differing values.
5018
5019      For value 1, 2 and 3 an error is produced if :term:`KMETA_AUDIT_WERROR`
5020      is set.
5021
5022      For more details see the :ref:`ref-classes-kernel-yocto` class and the
5023      :yocto_git:`symbol_why.py </yocto-kernel-tools/tree/tools/symbol_why.py>`
5024      script in :yocto_git:`yocto-kernel-tools </yocto-kernel-tools>`.
5025
5026   :term:`KCONFIG_MODE`
5027      When used with the :ref:`ref-classes-kernel-yocto`
5028      class, specifies the kernel configuration values to use for options
5029      not specified in the provided ``defconfig`` file. Valid options are::
5030
5031         KCONFIG_MODE = "alldefconfig"
5032         KCONFIG_MODE = "allnoconfig"
5033
5034      In ``alldefconfig`` mode the options not explicitly specified will be
5035      assigned their Kconfig default value. In ``allnoconfig`` mode the
5036      options not explicitly specified will be disabled in the kernel
5037      config.
5038
5039      In case :term:`KCONFIG_MODE` is not set the behaviour will depend on where
5040      the ``defconfig`` file is coming from. An "in-tree" ``defconfig`` file
5041      will be handled in ``alldefconfig`` mode, a ``defconfig`` file placed
5042      in ``${WORKDIR}`` through a meta-layer will be handled in
5043      ``allnoconfig`` mode.
5044
5045      An "in-tree" ``defconfig`` file can be selected via the
5046      :term:`KBUILD_DEFCONFIG` variable. :term:`KCONFIG_MODE` does not need to
5047      be explicitly set.
5048
5049      A ``defconfig`` file compatible with ``allnoconfig`` mode can be
5050      generated by copying the ``.config`` file from a working Linux kernel
5051      build, renaming it to ``defconfig`` and placing it into the Linux
5052      kernel ``${WORKDIR}`` through your meta-layer. :term:`KCONFIG_MODE` does
5053      not need to be explicitly set.
5054
5055      A ``defconfig`` file compatible with ``alldefconfig`` mode can be
5056      generated using the
5057      :ref:`ref-tasks-savedefconfig`
5058      task and placed into the Linux kernel ``${WORKDIR}`` through your
5059      meta-layer. Explicitely set :term:`KCONFIG_MODE`::
5060
5061         KCONFIG_MODE = "alldefconfig"
5062
5063   :term:`KERNEL_ALT_IMAGETYPE`
5064      Specifies an alternate kernel image type for creation in addition to
5065      the kernel image type specified using the :term:`KERNEL_IMAGETYPE` and
5066      :term:`KERNEL_IMAGETYPES` variables.
5067
5068   :term:`KERNEL_ARTIFACT_NAME`
5069      Specifies the name of all of the build artifacts. You can change the
5070      name of the artifacts by changing the :term:`KERNEL_ARTIFACT_NAME`
5071      variable.
5072
5073      The value of :term:`KERNEL_ARTIFACT_NAME`, which is set in the
5074      ``meta/classes-recipe/kernel-artifact-names.bbclass`` file, has the
5075      following default value::
5076
5077         KERNEL_ARTIFACT_NAME ?= "${PKGE}-${PKGV}-${PKGR}${IMAGE_MACHINE_SUFFIX}${IMAGE_VERSION_SUFFIX}"
5078
5079      See the :term:`PKGE`, :term:`PKGV`, :term:`PKGR`, :term:`IMAGE_MACHINE_SUFFIX`
5080      and :term:`IMAGE_VERSION_SUFFIX` variables for additional information.
5081
5082   :term:`KERNEL_CLASSES`
5083      A list of classes defining kernel image types that the
5084      :ref:`ref-classes-kernel` class should inherit. You typically
5085      append this variable to enable extended image types. An example is
5086      ":ref:`ref-classes-kernel-fitimage`", which enables
5087      FIT image support and resides in ``meta/classes-recipe/kernel-fitimage.bbclass``.
5088      You can register custom kernel image types with the
5089      :ref:`ref-classes-kernel` class using this variable.
5090
5091   :term:`KERNEL_CONSOLE`
5092     The :term:`KERNEL_CONSOLE` variable holds the value of the ``console``
5093     parameter of the kernel command line and can be used in places such as a
5094     ``wks`` description file for :ref:`Wic images <dev-manual/wic:creating
5095     partitioned images using wic>`.
5096
5097     The default value of this variable is extracted from the first console
5098     device and setting in :term:`SERIAL_CONSOLES`. If nothing is found in
5099     :term:`SERIAL_CONSOLES`, the default value is set to ``ttyS0,115200``.
5100
5101     For more information, see the `Kernel command-line documentation
5102     <https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html>`__.
5103
5104   :term:`KERNEL_DANGLING_FEATURES_WARN_ONLY`
5105      When kernel configuration fragments are missing for some
5106      :term:`KERNEL_FEATURES` specified by layers or BSPs,
5107      building and configuring the kernel stops with an error.
5108
5109      You can turn these errors into warnings by setting the
5110      following in ``conf/local.conf``::
5111
5112         KERNEL_DANGLING_FEATURES_WARN_ONLY = "1"
5113
5114      You will still be warned that runtime issues may occur,
5115      but at least the kernel configuration and build process will
5116      be allowed to continue.
5117
5118   :term:`KERNEL_DEBUG_TIMESTAMPS`
5119      If set to "1", enables timestamping functionality during building
5120      the kernel. The default is "0" to disable this for reproducibility
5121      reasons.
5122
5123   :term:`KERNEL_DEPLOY_DEPEND`
5124      Provides a means of controlling the dependency of an image recipe
5125      on the kernel. The default value is "virtual/kernel:do_deploy",
5126      however for a small initramfs image or other images that do not
5127      need the kernel, this can be set to "" in the image recipe.
5128
5129   :term:`KERNEL_DEVICETREE`
5130      Specifies the name of the generated Linux kernel device tree (i.e.
5131      the ``.dtb``) file.
5132
5133      .. note::
5134
5135         There is legacy support for specifying the full path to the device
5136         tree. However, providing just the ``.dtb`` file is preferred.
5137
5138      In order to use this variable, the :ref:`ref-classes-kernel-devicetree`
5139      class must be inherited.
5140
5141   :term:`KERNEL_DEVICETREE_BUNDLE`
5142      When set to "1", this variable allows to bundle the Linux kernel
5143      and the Device Tree Binary together in a single file.
5144
5145      This feature is currently only supported on the "arm" (32 bit)
5146      architecture.
5147
5148      This variable is set to "0" by default by the
5149      :ref:`ref-classes-kernel-devicetree` class.
5150
5151   :term:`KERNEL_DTB_LINK_NAME`
5152      The link name of the kernel device tree binary (DTB). This variable
5153      is set in the ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as
5154      follows::
5155
5156         KERNEL_DTB_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}"
5157
5158      The
5159      value of the ``KERNEL_ARTIFACT_LINK_NAME`` variable, which is set in
5160      the same file, has the following value::
5161
5162         KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}"
5163
5164      See the :term:`MACHINE` variable for additional
5165      information.
5166
5167   :term:`KERNEL_DTB_NAME`
5168      The base name of the kernel device tree binary (DTB). This variable
5169      is set in the ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as
5170      follows::
5171
5172         KERNEL_DTB_NAME ?= "${KERNEL_ARTIFACT_NAME}"
5173
5174      See :term:`KERNEL_ARTIFACT_NAME` for additional information.
5175
5176   :term:`KERNEL_DTBDEST`
5177      This variable, used by the :ref:`ref-classes-kernel-devicetree`
5178      class, allows to change the installation directory of the DTB
5179      (Device Tree Binary) files.
5180
5181      It is set by default to "${KERNEL_IMAGEDEST}" by the
5182      :ref:`ref-classes-kernel` class.
5183
5184   :term:`KERNEL_DTBVENDORED`
5185      This variable, used by the :ref:`ref-classes-kernel-devicetree`,
5186      allows to ignore vendor subdirectories when installing DTB
5187      (Device Tree Binary) files, when it is set to "false".
5188
5189      To keep vendor subdirectories, set this variable to "true".
5190
5191      It is set by default to "false" by the :ref:`ref-classes-kernel` class.
5192
5193   :term:`KERNEL_DTC_FLAGS`
5194      Specifies the ``dtc`` flags that are passed to the Linux kernel build
5195      system when generating the device trees (via ``DTC_FLAGS`` environment
5196      variable).
5197
5198      In order to use this variable, the :ref:`ref-classes-kernel-devicetree`
5199      class must be inherited.
5200
5201   :term:`KERNEL_EXTRA_ARGS`
5202      Specifies additional ``make`` command-line arguments the OpenEmbedded
5203      build system passes on when compiling the kernel.
5204
5205   :term:`KERNEL_FEATURES`
5206      Includes additional kernel metadata. In the OpenEmbedded build
5207      system, the default Board Support Packages (BSPs)
5208      :term:`Metadata` is provided through the
5209      :term:`KMACHINE` and :term:`KBRANCH`
5210      variables. You can use the :term:`KERNEL_FEATURES` variable from within
5211      the kernel recipe or kernel append file to further add metadata for
5212      all BSPs or specific BSPs.
5213
5214      The metadata you add through this variable includes config fragments
5215      and features descriptions, which usually includes patches as well as
5216      config fragments. You typically override the :term:`KERNEL_FEATURES`
5217      variable for a specific machine. In this way, you can provide
5218      validated, but optional, sets of kernel configurations and features.
5219
5220      For example, the following example from the ``linux-yocto-rt_4.12``
5221      kernel recipe adds "netfilter" and "taskstats" features to all BSPs
5222      as well as "virtio" configurations to all QEMU machines. The last two
5223      statements add specific configurations to targeted machine types::
5224
5225         KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc features/taskstats/taskstats.scc"
5226         KERNEL_FEATURES:append = " ${KERNEL_EXTRA_FEATURES}"
5227         KERNEL_FEATURES:append:qemuall = " cfg/virtio.scc"
5228         KERNEL_FEATURES:append:qemux86 = "  cfg/sound.scc cfg/paravirt_kvm.scc"
5229         KERNEL_FEATURES:append:qemux86-64 = " cfg/sound.scc"
5230
5231   :term:`KERNEL_FIT_LINK_NAME`
5232      The link name of the kernel flattened image tree (FIT) image. This
5233      variable is set in the ``meta/classes-recipe/kernel-artifact-names.bbclass``
5234      file as follows::
5235
5236         KERNEL_FIT_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}"
5237
5238      The value of the
5239      ``KERNEL_ARTIFACT_LINK_NAME`` variable, which is set in the same
5240      file, has the following value::
5241
5242         KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}"
5243
5244      See the :term:`MACHINE` variable for additional
5245      information.
5246
5247   :term:`KERNEL_FIT_NAME`
5248      The base name of the kernel flattened image tree (FIT) image. This
5249      variable is set in the ``meta/classes-recipe/kernel-artifact-names.bbclass``
5250      file as follows::
5251
5252         KERNEL_FIT_NAME ?= "${KERNEL_ARTIFACT_NAME}"
5253
5254      See :term:`KERNEL_ARTIFACT_NAME` for additional information.
5255
5256   :term:`KERNEL_IMAGE_LINK_NAME`
5257      The link name for the kernel image. This variable is set in the
5258      ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as follows::
5259
5260         KERNEL_IMAGE_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}"
5261
5262      The value of
5263      the ``KERNEL_ARTIFACT_LINK_NAME`` variable, which is set in the same
5264      file, has the following value::
5265
5266         KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}"
5267
5268      See the :term:`MACHINE` variable for additional
5269      information.
5270
5271   :term:`KERNEL_IMAGE_MAXSIZE`
5272      Specifies the maximum size of the kernel image file in kilobytes. If
5273      :term:`KERNEL_IMAGE_MAXSIZE` is set, the size of the kernel image file is
5274      checked against the set value during the
5275      :ref:`ref-tasks-sizecheck` task. The task fails if
5276      the kernel image file is larger than the setting.
5277
5278      :term:`KERNEL_IMAGE_MAXSIZE` is useful for target devices that have a
5279      limited amount of space in which the kernel image must be stored.
5280
5281      By default, this variable is not set, which means the size of the
5282      kernel image is not checked.
5283
5284   :term:`KERNEL_IMAGE_NAME`
5285      The base name of the kernel image. This variable is set in the
5286      ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as follows::
5287
5288         KERNEL_IMAGE_NAME ?= "${KERNEL_ARTIFACT_NAME}"
5289
5290      See :term:`KERNEL_ARTIFACT_NAME` for additional information.
5291
5292   :term:`KERNEL_IMAGETYPE`
5293      The type of kernel to build for a device, usually set by the machine
5294      configuration files and defaults to "zImage". This variable is used
5295      when building the kernel and is passed to ``make`` as the target to
5296      build.
5297
5298      To build additional kernel image types, use :term:`KERNEL_IMAGETYPES`.
5299
5300   :term:`KERNEL_IMAGETYPES`
5301      Lists additional types of kernel images to build for a device in addition
5302      to image type specified in :term:`KERNEL_IMAGETYPE`. Usually set by the
5303      machine configuration files.
5304
5305   :term:`KERNEL_MODULE_AUTOLOAD`
5306      Lists kernel modules that need to be auto-loaded during boot.
5307
5308      .. note::
5309
5310         This variable replaces the deprecated :term:`module_autoload`
5311         variable.
5312
5313      You can use the :term:`KERNEL_MODULE_AUTOLOAD` variable anywhere that it
5314      can be recognized by the kernel recipe or by an out-of-tree kernel
5315      module recipe (e.g. a machine configuration file, a distribution
5316      configuration file, an append file for the recipe, or the recipe
5317      itself).
5318
5319      Specify it as follows::
5320
5321         KERNEL_MODULE_AUTOLOAD += "module_name1 module_name2 module_name3"
5322
5323      Including :term:`KERNEL_MODULE_AUTOLOAD` causes the OpenEmbedded build
5324      system to populate the ``/etc/modules-load.d/modname.conf`` file with
5325      the list of modules to be auto-loaded on boot. The modules appear
5326      one-per-line in the file. Here is an example of the most common use
5327      case::
5328
5329         KERNEL_MODULE_AUTOLOAD += "module_name"
5330
5331      For information on how to populate the ``modname.conf`` file with
5332      ``modprobe.d`` syntax lines, see the :term:`KERNEL_MODULE_PROBECONF` variable.
5333
5334   :term:`KERNEL_MODULE_PROBECONF`
5335      Provides a list of modules for which the OpenEmbedded build system
5336      expects to find ``module_conf_``\ modname values that specify
5337      configuration for each of the modules. For information on how to
5338      provide those module configurations, see the
5339      :term:`module_conf_* <module_conf>` variable.
5340
5341   :term:`KERNEL_PACKAGE_NAME`
5342      Specifies the base name of the kernel packages, such as "kernel"
5343      in the kernel packages such as "kernel-modules", "kernel-image" and
5344      "kernel-dbg".
5345
5346      The default value for this variable is set to "kernel" by the
5347      :ref:`ref-classes-kernel` class.
5348
5349   :term:`KERNEL_PATH`
5350      The location of the kernel sources. This variable is set to the value
5351      of the :term:`STAGING_KERNEL_DIR` within the :ref:`ref-classes-module`
5352      class. For information on how this variable is used, see the
5353      ":ref:`kernel-dev/common:incorporating out-of-tree modules`"
5354      section in the Yocto Project Linux Kernel Development Manual.
5355
5356      To help maximize compatibility with out-of-tree drivers used to build
5357      modules, the OpenEmbedded build system also recognizes and uses the
5358      :term:`KERNEL_SRC` variable, which is identical to
5359      the :term:`KERNEL_PATH` variable. Both variables are common variables
5360      used by external Makefiles to point to the kernel source directory.
5361
5362   :term:`KERNEL_SRC`
5363      The location of the kernel sources. This variable is set to the value
5364      of the :term:`STAGING_KERNEL_DIR` within the :ref:`ref-classes-module`
5365      class. For information on how this variable is used, see the
5366      ":ref:`kernel-dev/common:incorporating out-of-tree modules`"
5367      section in the Yocto Project Linux Kernel Development Manual.
5368
5369      To help maximize compatibility with out-of-tree drivers used to build
5370      modules, the OpenEmbedded build system also recognizes and uses the
5371      :term:`KERNEL_PATH` variable, which is identical
5372      to the :term:`KERNEL_SRC` variable. Both variables are common variables
5373      used by external Makefiles to point to the kernel source directory.
5374
5375   :term:`KERNEL_STRIP`
5376      Allows to specific which ``strip`` command to use to strip the kernel
5377      binary, typically either GNU binutils ``strip`` or ``llvm-strip``.
5378
5379   :term:`KERNEL_VERSION`
5380      Specifies the version of the kernel as extracted from ``version.h``
5381      or ``utsrelease.h`` within the kernel sources. Effects of setting
5382      this variable do not take effect until the kernel has been
5383      configured. Consequently, attempting to refer to this variable in
5384      contexts prior to configuration will not work.
5385
5386   :term:`KERNELDEPMODDEPEND`
5387      Specifies whether the data referenced through
5388      :term:`PKGDATA_DIR` is needed or not.
5389      :term:`KERNELDEPMODDEPEND` does not control whether or not that data
5390      exists, but simply whether or not it is used. If you do not need to
5391      use the data, set the :term:`KERNELDEPMODDEPEND` variable in your
5392      :term:`Initramfs` recipe. Setting the variable there when the data is not
5393      needed avoids a potential dependency loop.
5394
5395   :term:`KFEATURE_DESCRIPTION`
5396      Provides a short description of a configuration fragment. You use
5397      this variable in the ``.scc`` file that describes a configuration
5398      fragment file. Here is the variable used in a file named ``smp.scc``
5399      to describe SMP being enabled::
5400
5401          define KFEATURE_DESCRIPTION "Enable SMP"
5402
5403   :term:`KMACHINE`
5404      The machine as known by the kernel. Sometimes the machine name used
5405      by the kernel does not match the machine name used by the
5406      OpenEmbedded build system. For example, the machine name that the
5407      OpenEmbedded build system understands as ``core2-32-intel-common``
5408      goes by a different name in the Linux Yocto kernel. The kernel
5409      understands that machine as ``intel-core2-32``. For cases like these,
5410      the :term:`KMACHINE` variable maps the kernel machine name to the
5411      OpenEmbedded build system machine name.
5412
5413      These mappings between different names occur in the Yocto Linux
5414      Kernel's ``meta`` branch. As an example take a look in the
5415      ``common/recipes-kernel/linux/linux-yocto_3.19.bbappend`` file::
5416
5417         LINUX_VERSION:core2-32-intel-common = "3.19.0"
5418         COMPATIBLE_MACHINE:core2-32-intel-common = "${MACHINE}"
5419         SRCREV_meta:core2-32-intel-common = "8897ef68b30e7426bc1d39895e71fb155d694974"
5420         SRCREV_machine:core2-32-intel-common = "43b9eced9ba8a57add36af07736344dcc383f711"
5421         KMACHINE:core2-32-intel-common = "intel-core2-32"
5422         KBRANCH:core2-32-intel-common = "standard/base"
5423         KERNEL_FEATURES:append:core2-32-intel-common = " ${KERNEL_FEATURES_INTEL_COMMON}"
5424
5425      The :term:`KMACHINE` statement says
5426      that the kernel understands the machine name as "intel-core2-32".
5427      However, the OpenEmbedded build system understands the machine as
5428      "core2-32-intel-common".
5429
5430   :term:`KMETA_AUDIT`
5431      When inheriting the :ref:`ref-classes-kernel-yocto` class, the
5432      :term:`KMETA_AUDIT` variable enables or disables auditing of Linux Kernel
5433      configuration. The default value for this variable is "yes", and auditing
5434      is enabled. Set this variable to an empty string to disable auditing.
5435
5436   :term:`KMETA_AUDIT_WERROR`
5437      When inheriting the :ref:`ref-classes-kernel-yocto` class and when the
5438      :term:`KMETA_AUDIT` and the :term:`KMETA_AUDIT_WERROR` variables are set
5439      to non-empty strings, produce an error if Linux kernel configuration
5440      problems were detected, instead of warnings only. For more details on the
5441      Linux Kernel configuration auditing feature, see :term:`KCONF_AUDIT_LEVEL`
5442      and :term:`KCONF_BSP_AUDIT_LEVEL`.
5443
5444   :term:`KTYPE`
5445      Defines the kernel type to be used in assembling the configuration.
5446      The linux-yocto recipes define "standard", "tiny", and "preempt-rt"
5447      kernel types. See the ":ref:`kernel-dev/advanced:kernel types`"
5448      section in the
5449      Yocto Project Linux Kernel Development Manual for more information on
5450      kernel types.
5451
5452      You define the :term:`KTYPE` variable in the
5453      :ref:`kernel-dev/advanced:bsp descriptions`. The
5454      value you use must match the value used for the
5455      :term:`LINUX_KERNEL_TYPE` value used by the
5456      kernel recipe.
5457
5458   :term:`LABELS`
5459      Provides a list of targets for automatic configuration.
5460
5461      See the :ref:`ref-classes-grub-efi` class for more
5462      information on how this variable is used.
5463
5464   :term:`LAYERDEPENDS`
5465      Lists the layers, separated by spaces, on which this recipe depends.
5466      Optionally, you can specify a specific layer version for a dependency
5467      by adding it to the end of the layer name. Here is an example::
5468
5469         LAYERDEPENDS_mylayer = "anotherlayer (=3)"
5470
5471      In this previous example,
5472      version 3 of "anotherlayer" is compared against
5473      :term:`LAYERVERSION`\ ``_anotherlayer``.
5474
5475      An error is produced if any dependency is missing or the version
5476      numbers (if specified) do not match exactly. This variable is used in
5477      the ``conf/layer.conf`` file and must be suffixed with the name of
5478      the specific layer (e.g. ``LAYERDEPENDS_mylayer``).
5479
5480   :term:`LAYERDIR`
5481      When used inside the ``layer.conf`` configuration file, this variable
5482      provides the path of the current layer. This variable is not
5483      available outside of ``layer.conf`` and references are expanded
5484      immediately when parsing of the file completes.
5485
5486   :term:`LAYERDIR_RE`
5487      See :term:`bitbake:LAYERDIR_RE` in the BitBake manual.
5488
5489   :term:`LAYERRECOMMENDS`
5490      Lists the layers, separated by spaces, recommended for use with this
5491      layer.
5492
5493      Optionally, you can specify a specific layer version for a
5494      recommendation by adding the version to the end of the layer name.
5495      Here is an example::
5496
5497         LAYERRECOMMENDS_mylayer = "anotherlayer (=3)"
5498
5499      In this previous example, version 3 of "anotherlayer" is compared
5500      against ``LAYERVERSION_anotherlayer``.
5501
5502      This variable is used in the ``conf/layer.conf`` file and must be
5503      suffixed with the name of the specific layer (e.g.
5504      ``LAYERRECOMMENDS_mylayer``).
5505
5506   :term:`LAYERSERIES_COMPAT`
5507      See :term:`bitbake:LAYERSERIES_COMPAT` in the BitBake manual.
5508
5509   :term:`LAYERVERSION`
5510      Optionally specifies the version of a layer as a single number. You
5511      can use this within :term:`LAYERDEPENDS` for
5512      another layer in order to depend on a specific version of the layer.
5513      This variable is used in the ``conf/layer.conf`` file and must be
5514      suffixed with the name of the specific layer (e.g.
5515      ``LAYERVERSION_mylayer``).
5516
5517   :term:`LD`
5518      The minimal command and arguments used to run the :manpage:`linker
5519      <ld(1)>`.
5520
5521   :term:`LDFLAGS`
5522      Specifies the flags to pass to the linker. This variable is exported
5523      to an environment variable and thus made visible to the software
5524      being built during the compilation step.
5525
5526      Default initialization for :term:`LDFLAGS` varies depending on what is
5527      being built:
5528
5529      -  :term:`TARGET_LDFLAGS` when building for the
5530         target
5531
5532      -  :term:`BUILD_LDFLAGS` when building for the
5533         build host (i.e. ``-native``)
5534
5535      -  :term:`BUILDSDK_LDFLAGS` when building for
5536         an SDK (i.e. ``nativesdk-``)
5537
5538   :term:`LEAD_SONAME`
5539      Specifies the lead (or primary) compiled library file (i.e. ``.so``)
5540      that the :ref:`ref-classes-debian` class applies its
5541      naming policy to given a recipe that packages multiple libraries.
5542
5543      This variable works in conjunction with the :ref:`ref-classes-debian`
5544      class.
5545
5546   :term:`LIC_FILES_CHKSUM`
5547      Checksums of the license text in the recipe source code.
5548
5549      This variable tracks changes in license text of the source code
5550      files. If the license text is changed, it will trigger a build
5551      failure, which gives the developer an opportunity to review any
5552      license change.
5553
5554      This variable must be defined for all recipes (unless
5555      :term:`LICENSE` is set to "CLOSED").
5556
5557      For more information, see the ":ref:`dev-manual/licenses:tracking license changes`"
5558      section in the Yocto Project Development Tasks Manual.
5559
5560   :term:`LICENSE`
5561      The list of source licenses for the recipe. Follow these rules:
5562
5563      -  Do not use spaces within individual license names.
5564
5565      -  Separate license names using \| (pipe) when there is a choice
5566         between licenses.
5567
5568      -  Separate license names using & (ampersand) when there are
5569         multiple licenses for different parts of the source.
5570
5571      -  You can use spaces between license names.
5572
5573      -  For standard licenses, use the names of the files in
5574         ``meta/files/common-licenses/`` or the
5575         :term:`SPDXLICENSEMAP` flag names defined in
5576         ``meta/conf/licenses.conf``.
5577
5578      Here are some examples::
5579
5580         LICENSE = "LGPL-2.1-only | GPL-3.0-only"
5581         LICENSE = "MPL-1.0 & LGPL-2.1-only"
5582         LICENSE = "GPL-2.0-or-later"
5583
5584      The first example is from the
5585      recipes for Qt, which the user may choose to distribute under either
5586      the LGPL version 2.1 or GPL version 3. The second example is from
5587      Cairo where two licenses cover different parts of the source code.
5588      The final example is from ``sysstat``, which presents a single
5589      license.
5590
5591      You can also specify licenses on a per-package basis to handle
5592      situations where components of the output have different licenses.
5593      For example, a piece of software whose code is licensed under GPLv2
5594      but has accompanying documentation licensed under the GNU Free
5595      Documentation License 1.2 could be specified as follows::
5596
5597         LICENSE = "GFDL-1.2 & GPL-2.0-only"
5598         LICENSE:${PN} = "GPL-2.0.only"
5599         LICENSE:${PN}-doc = "GFDL-1.2"
5600
5601   :term:`LICENSE_CREATE_PACKAGE`
5602      Setting :term:`LICENSE_CREATE_PACKAGE` to "1" causes the OpenEmbedded
5603      build system to create an extra package (i.e.
5604      ``${``\ :term:`PN`\ ``}-lic``) for each recipe and to add
5605      those packages to the
5606      :term:`RRECOMMENDS`\ ``:${PN}``.
5607
5608      The ``${PN}-lic`` package installs a directory in
5609      ``/usr/share/licenses`` named ``${PN}``, which is the recipe's base
5610      name, and installs files in that directory that contain license and
5611      copyright information (i.e. copies of the appropriate license files
5612      from ``meta/common-licenses`` that match the licenses specified in
5613      the :term:`LICENSE` variable of the recipe metadata
5614      and copies of files marked in
5615      :term:`LIC_FILES_CHKSUM` as containing
5616      license text).
5617
5618      For related information on providing license text, see the
5619      :term:`COPY_LIC_DIRS` variable, the
5620      :term:`COPY_LIC_MANIFEST` variable, and the
5621      ":ref:`dev-manual/licenses:providing license text`"
5622      section in the Yocto Project Development Tasks Manual.
5623
5624   :term:`LICENSE_FLAGS`
5625      Specifies additional flags for a recipe you must allow through
5626      :term:`LICENSE_FLAGS_ACCEPTED` in
5627      order for the recipe to be built. When providing multiple flags,
5628      separate them with spaces.
5629
5630      This value is independent of :term:`LICENSE` and is
5631      typically used to mark recipes that might require additional licenses
5632      in order to be used in a commercial product. For more information,
5633      see the
5634      ":ref:`dev-manual/licenses:enabling commercially licensed recipes`"
5635      section in the Yocto Project Development Tasks Manual.
5636
5637   :term:`LICENSE_FLAGS_ACCEPTED`
5638      Lists license flags that when specified in
5639      :term:`LICENSE_FLAGS` within a recipe should not
5640      prevent that recipe from being built.  For more information, see the
5641      ":ref:`dev-manual/licenses:enabling commercially licensed recipes`"
5642      section in the Yocto Project Development Tasks Manual.
5643
5644   :term:`LICENSE_FLAGS_DETAILS`
5645      Adds details about a flag in :term:`LICENSE_FLAGS`. This way,
5646      if such a flag is not accepted through :term:`LICENSE_FLAGS_ACCEPTED`,
5647      the error message will be more informative, containing the specified
5648      extra details.
5649
5650      For example, a recipe with an EULA may set::
5651
5652         LICENSE_FLAGS = "FooBar-EULA"
5653         LICENSE_FLAGS_DETAILS[FooBar-EULA] = "For further details, see https://example.com/eula."
5654
5655      If ``Foobar-EULA`` isn't in :term:`LICENSE_FLAGS_ACCEPTED`, the
5656      error message is more useful::
5657
5658        Has a restricted license 'FooBar-EULA' which is not listed in your LICENSE_FLAGS_ACCEPTED.
5659        For further details, see https://example.com/eula.
5660
5661   :term:`LICENSE_PATH`
5662      Path to additional licenses used during the build. By default, the
5663      OpenEmbedded build system uses :term:`COMMON_LICENSE_DIR` to define the
5664      directory that holds common license text used during the build. The
5665      :term:`LICENSE_PATH` variable allows you to extend that location to other
5666      areas that have additional licenses::
5667
5668         LICENSE_PATH += "path-to-additional-common-licenses"
5669
5670   :term:`LINUX_KERNEL_TYPE`
5671      Defines the kernel type to be used in assembling the configuration.
5672      The linux-yocto recipes define "standard", "tiny", and "preempt-rt"
5673      kernel types. See the ":ref:`kernel-dev/advanced:kernel types`"
5674      section in the
5675      Yocto Project Linux Kernel Development Manual for more information on
5676      kernel types.
5677
5678      If you do not specify a :term:`LINUX_KERNEL_TYPE`, it defaults to
5679      "standard". Together with :term:`KMACHINE`, the
5680      :term:`LINUX_KERNEL_TYPE` variable defines the search arguments used by
5681      the kernel tools to find the appropriate description within the
5682      kernel :term:`Metadata` with which to build out the sources
5683      and configuration.
5684
5685   :term:`LINUX_VERSION`
5686      The Linux version from ``kernel.org`` on which the Linux kernel image
5687      being built using the OpenEmbedded build system is based. You define
5688      this variable in the kernel recipe. For example, the
5689      ``linux-yocto-3.4.bb`` kernel recipe found in
5690      ``meta/recipes-kernel/linux`` defines the variables as follows::
5691
5692         LINUX_VERSION ?= "3.4.24"
5693
5694      The :term:`LINUX_VERSION` variable is used to define :term:`PV`
5695      for the recipe::
5696
5697         PV = "${LINUX_VERSION}+git"
5698
5699   :term:`LINUX_VERSION_EXTENSION`
5700      A string extension compiled into the version string of the Linux
5701      kernel built with the OpenEmbedded build system. You define this
5702      variable in the kernel recipe. For example, the linux-yocto kernel
5703      recipes all define the variable as follows::
5704
5705         LINUX_VERSION_EXTENSION ?= "-yocto-${LINUX_KERNEL_TYPE}"
5706
5707      Defining this variable essentially sets the Linux kernel
5708      configuration item ``CONFIG_LOCALVERSION``, which is visible through
5709      the ``uname`` command. Here is an example that shows the extension
5710      assuming it was set as previously shown::
5711
5712         $ uname -r
5713         3.7.0-rc8-custom
5714
5715   :term:`LOG_DIR`
5716      Specifies the directory to which the OpenEmbedded build system writes
5717      overall log files. The default directory is ``${TMPDIR}/log``.
5718
5719      For the directory containing logs specific to each task, see the
5720      :term:`T` variable.
5721
5722   :term:`MACHINE`
5723      Specifies the target device for which the image is built. You define
5724      :term:`MACHINE` in the ``local.conf`` file found in the
5725      :term:`Build Directory`. By default, :term:`MACHINE` is set to
5726      "qemux86", which is an x86-based architecture machine to be emulated
5727      using QEMU::
5728
5729         MACHINE ?= "qemux86"
5730
5731      The variable corresponds to a machine configuration file of the same
5732      name, through which machine-specific configurations are set. Thus,
5733      when :term:`MACHINE` is set to "qemux86", the corresponding
5734      ``qemux86.conf`` machine configuration file can be found in
5735      the :term:`Source Directory` in
5736      ``meta/conf/machine``.
5737
5738      The list of machines supported by the Yocto Project as shipped
5739      include the following::
5740
5741         MACHINE ?= "qemuarm"
5742         MACHINE ?= "qemuarm64"
5743         MACHINE ?= "qemumips"
5744         MACHINE ?= "qemumips64"
5745         MACHINE ?= "qemuppc"
5746         MACHINE ?= "qemux86"
5747         MACHINE ?= "qemux86-64"
5748         MACHINE ?= "genericx86"
5749         MACHINE ?= "genericx86-64"
5750         MACHINE ?= "beaglebone"
5751
5752      The last five are Yocto Project reference hardware
5753      boards, which are provided in the ``meta-yocto-bsp`` layer.
5754
5755      .. note::
5756
5757         Adding additional Board Support Package (BSP) layers to your
5758         configuration adds new possible settings for :term:`MACHINE`.
5759
5760   :term:`MACHINE_ARCH`
5761      Specifies the name of the machine-specific architecture. This
5762      variable is set automatically from :term:`MACHINE` or
5763      :term:`TUNE_PKGARCH`. You should not hand-edit
5764      the :term:`MACHINE_ARCH` variable.
5765
5766   :term:`MACHINE_ESSENTIAL_EXTRA_RDEPENDS`
5767      A list of required machine-specific packages to install as part of
5768      the image being built. The build process depends on these packages
5769      being present. Furthermore, because this is a "machine-essential"
5770      variable, the list of packages are essential for the machine to boot.
5771      The impact of this variable affects images based on
5772      ``packagegroup-core-boot``, including the ``core-image-minimal``
5773      image.
5774
5775      This variable is similar to the
5776      :term:`MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS` variable with the exception
5777      that the image being built has a build dependency on the variable's
5778      list of packages. In other words, the image will not build if a file
5779      in this list is not found.
5780
5781      As an example, suppose the machine for which you are building
5782      requires ``example-init`` to be run during boot to initialize the
5783      hardware. In this case, you would use the following in the machine's
5784      ``.conf`` configuration file::
5785
5786         MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "example-init"
5787
5788   :term:`MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS`
5789      A list of recommended machine-specific packages to install as part of
5790      the image being built. The build process does not depend on these
5791      packages being present. However, because this is a
5792      "machine-essential" variable, the list of packages are essential for
5793      the machine to boot. The impact of this variable affects images based
5794      on ``packagegroup-core-boot``, including the ``core-image-minimal``
5795      image.
5796
5797      This variable is similar to the :term:`MACHINE_ESSENTIAL_EXTRA_RDEPENDS`
5798      variable with the exception that the image being built does not have
5799      a build dependency on the variable's list of packages. In other
5800      words, the image will still build if a package in this list is not
5801      found. Typically, this variable is used to handle essential kernel
5802      modules, whose functionality may be selected to be built into the
5803      kernel rather than as a module, in which case a package will not be
5804      produced.
5805
5806      Consider an example where you have a custom kernel where a specific
5807      touchscreen driver is required for the machine to be usable. However,
5808      the driver can be built as a module or into the kernel depending on
5809      the kernel configuration. If the driver is built as a module, you
5810      want it to be installed. But, when the driver is built into the
5811      kernel, you still want the build to succeed. This variable sets up a
5812      "recommends" relationship so that in the latter case, the build will
5813      not fail due to the missing package. To accomplish this, assuming the
5814      package for the module was called ``kernel-module-ab123``, you would
5815      use the following in the machine's ``.conf`` configuration file::
5816
5817         MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += "kernel-module-ab123"
5818
5819      .. note::
5820
5821         In this example, the ``kernel-module-ab123`` recipe needs to
5822         explicitly set its :term:`PACKAGES` variable to ensure that BitBake
5823         does not use the kernel recipe's :term:`PACKAGES_DYNAMIC` variable to
5824         satisfy the dependency.
5825
5826      Some examples of these machine essentials are flash, screen,
5827      keyboard, mouse, or touchscreen drivers (depending on the machine).
5828
5829   :term:`MACHINE_EXTRA_RDEPENDS`
5830      A list of machine-specific packages to install as part of the image
5831      being built that are not essential for the machine to boot. However,
5832      the build process for more fully-featured images depends on the
5833      packages being present.
5834
5835      This variable affects all images based on ``packagegroup-base``,
5836      which does not include the ``core-image-minimal`` or
5837      ``core-image-full-cmdline`` images.
5838
5839      The variable is similar to the :term:`MACHINE_EXTRA_RRECOMMENDS` variable
5840      with the exception that the image being built has a build dependency
5841      on the variable's list of packages. In other words, the image will
5842      not build if a file in this list is not found.
5843
5844      An example is a machine that has WiFi capability but is not essential
5845      for the machine to boot the image. However, if you are building a
5846      more fully-featured image, you want to enable the WiFi. The package
5847      containing the firmware for the WiFi hardware is always expected to
5848      exist, so it is acceptable for the build process to depend upon
5849      finding the package. In this case, assuming the package for the
5850      firmware was called ``wifidriver-firmware``, you would use the
5851      following in the ``.conf`` file for the machine::
5852
5853         MACHINE_EXTRA_RDEPENDS += "wifidriver-firmware"
5854
5855   :term:`MACHINE_EXTRA_RRECOMMENDS`
5856      A list of machine-specific packages to install as part of the image
5857      being built that are not essential for booting the machine. The image
5858      being built has no build dependency on this list of packages.
5859
5860      This variable affects only images based on ``packagegroup-base``,
5861      which does not include the ``core-image-minimal`` or
5862      ``core-image-full-cmdline`` images.
5863
5864      This variable is similar to the :term:`MACHINE_EXTRA_RDEPENDS` variable
5865      with the exception that the image being built does not have a build
5866      dependency on the variable's list of packages. In other words, the
5867      image will build if a file in this list is not found.
5868
5869      An example is a machine that has WiFi capability but is not essential
5870      For the machine to boot the image. However, if you are building a
5871      more fully-featured image, you want to enable WiFi. In this case, the
5872      package containing the WiFi kernel module will not be produced if the
5873      WiFi driver is built into the kernel, in which case you still want
5874      the build to succeed instead of failing as a result of the package
5875      not being found. To accomplish this, assuming the package for the
5876      module was called ``kernel-module-examplewifi``, you would use the
5877      following in the ``.conf`` file for the machine::
5878
5879         MACHINE_EXTRA_RRECOMMENDS += "kernel-module-examplewifi"
5880
5881   :term:`MACHINE_FEATURES`
5882      Specifies the list of hardware features the
5883      :term:`MACHINE` is capable of supporting. For related
5884      information on enabling features, see the
5885      :term:`DISTRO_FEATURES`,
5886      :term:`COMBINED_FEATURES`, and
5887      :term:`IMAGE_FEATURES` variables.
5888
5889      For a list of hardware features supported by the Yocto Project as
5890      shipped, see the ":ref:`ref-features-machine`" section.
5891
5892   :term:`MACHINE_FEATURES_BACKFILL`
5893      A list of space-separated features to be added to
5894      :term:`MACHINE_FEATURES` if not also present in
5895      :term:`MACHINE_FEATURES_BACKFILL_CONSIDERED`.
5896
5897      This variable is set in the ``meta/conf/bitbake.conf`` file. It is not
5898      intended to be user-configurable. It is best to just reference the
5899      variable to see which machine features are being
5900      :ref:`backfilled <ref-features-backfill>` for all machine configurations.
5901
5902   :term:`MACHINE_FEATURES_BACKFILL_CONSIDERED`
5903      A list of space-separated features from :term:`MACHINE_FEATURES_BACKFILL`
5904      that should not be :ref:`backfilled <ref-features-backfill>` (i.e. added
5905      to :term:`MACHINE_FEATURES`) during the build.
5906
5907      This corresponds to an opt-out mechanism. When new default machine
5908      features are introduced, machine definition maintainers can review
5909      (`consider`) them and decide to exclude them from the
5910      :ref:`backfilled <ref-features-backfill>` features. Therefore, the
5911      combination of :term:`MACHINE_FEATURES_BACKFILL` and
5912      :term:`MACHINE_FEATURES_BACKFILL_CONSIDERED` makes it possible to
5913      add new default features without breaking existing machine definitions.
5914
5915   :term:`MACHINEOVERRIDES`
5916      A colon-separated list of overrides that apply to the current
5917      machine. By default, this list includes the value of
5918      :term:`MACHINE`.
5919
5920      You can extend :term:`MACHINEOVERRIDES` to add extra overrides that
5921      should apply to a machine. For example, all machines emulated in QEMU
5922      (e.g. ``qemuarm``, ``qemux86``, and so forth) include a file named
5923      ``meta/conf/machine/include/qemu.inc`` that prepends the following
5924      override to :term:`MACHINEOVERRIDES`::
5925
5926         MACHINEOVERRIDES =. "qemuall:"
5927
5928      This
5929      override allows variables to be overridden for all machines emulated
5930      in QEMU, like in the following example from the ``connman-conf``
5931      recipe::
5932
5933         SRC_URI:append:qemuall = " file://wired.config \
5934             file://wired-setup \
5935             "
5936
5937      The underlying mechanism behind
5938      :term:`MACHINEOVERRIDES` is simply that it is included in the default
5939      value of :term:`OVERRIDES`.
5940
5941   :term:`MAINTAINER`
5942      The email address of the distribution maintainer.
5943
5944   :term:`MESON_BUILDTYPE`
5945      Value of the Meson ``--buildtype`` argument used by the
5946      :ref:`ref-classes-meson` class. It defaults to ``debug`` if
5947      :term:`DEBUG_BUILD` is set to "1", and ``plain`` otherwise.
5948
5949      See `Meson build options <https://mesonbuild.com/Builtin-options.html>`__
5950      for the values you could set in a recipe. Values such as ``plain``,
5951      ``debug``, ``debugoptimized``, ``release`` and ``minsize`` allow
5952      you to specify the inclusion of debugging symbols and the compiler
5953      optimizations (none, performance or size).
5954
5955   :term:`MESON_INSTALL_TAGS`
5956      A variable for the :ref:`ref-classes-meson` class, allowing to specify
5957      install tags (``--tags`` argument of the ``meson install`` command).
5958
5959   :term:`MESON_TARGET`
5960      A variable for the :ref:`ref-classes-meson` class, allowing to choose
5961      a Meson target to build in :ref:`ref-tasks-compile`.  Otherwise, the
5962      default targets are built.
5963
5964   :term:`METADATA_BRANCH`
5965      The branch currently checked out for the OpenEmbedded-Core layer (path
5966      determined by :term:`COREBASE`).
5967
5968   :term:`METADATA_REVISION`
5969      The revision currently checked out for the OpenEmbedded-Core layer (path
5970      determined by :term:`COREBASE`).
5971
5972   :term:`MIME_XDG_PACKAGES`
5973      The current implementation of the :ref:`ref-classes-mime-xdg`
5974      class cannot detect ``.desktop`` files installed through absolute
5975      symbolic links. Use this setting to make the class create post-install
5976      and post-remove scripts for these packages anyway, to invoke the
5977      ``update-destop-database`` command.
5978
5979   :term:`MIRRORS`
5980      Specifies additional paths from which the OpenEmbedded build system
5981      gets source code. When the build system searches for source code, it
5982      first tries the local download directory. If that location fails, the
5983      build system tries locations defined by
5984      :term:`PREMIRRORS`, the upstream source, and then
5985      locations specified by :term:`MIRRORS` in that order.
5986
5987      The default value for :term:`MIRRORS` is defined in the
5988      ``meta/classes-global/mirrors.bbclass`` file in the core metadata layer.
5989
5990   :term:`MLPREFIX`
5991      Specifies a prefix has been added to :term:`PN` to create a
5992      special version of a recipe or package (i.e. a Multilib version). The
5993      variable is used in places where the prefix needs to be added to or
5994      removed from a name (e.g. the :term:`BPN` variable).
5995      :term:`MLPREFIX` gets set when a prefix has been added to :term:`PN`.
5996
5997      .. note::
5998
5999         The "ML" in :term:`MLPREFIX` stands for "MultiLib". This representation
6000         is historical and comes from a time when ":ref:`ref-classes-nativesdk`"
6001         was a suffix rather than a prefix on the recipe name. When
6002         ":ref:`ref-classes-nativesdk`" was turned into a prefix, it made sense
6003         to set :term:`MLPREFIX` for it as well.
6004
6005      To help understand when :term:`MLPREFIX` might be needed, consider when
6006      :term:`BBCLASSEXTEND` is used to provide a :ref:`ref-classes-nativesdk`
6007      version of a recipe in addition to the target version. If that recipe
6008      declares build-time dependencies on tasks in other recipes by using
6009      :term:`DEPENDS`, then a dependency on "foo" will automatically get
6010      rewritten to a dependency on "nativesdk-foo". However, dependencies like
6011      the following will not get rewritten automatically::
6012
6013         do_foo[depends] += "recipe:do_foo"
6014
6015      If you want such a dependency to also get transformed, you can do the
6016      following::
6017
6018         do_foo[depends] += "${MLPREFIX}recipe:do_foo"
6019
6020   :term:`module_autoload`
6021      This variable has been replaced by the :term:`KERNEL_MODULE_AUTOLOAD`
6022      variable. You should replace all occurrences of :term:`module_autoload`
6023      with additions to :term:`KERNEL_MODULE_AUTOLOAD`, for example::
6024
6025         module_autoload_rfcomm = "rfcomm"
6026
6027      should now be replaced with::
6028
6029         KERNEL_MODULE_AUTOLOAD += "rfcomm"
6030
6031      See the :term:`KERNEL_MODULE_AUTOLOAD` variable for more information.
6032
6033   :term:`module_conf`
6034      Specifies `modprobe.d <https://linux.die.net/man/5/modprobe.d>`__
6035      syntax lines for inclusion in the ``/etc/modprobe.d/modname.conf``
6036      file.
6037
6038      You can use this variable anywhere that it can be recognized by the
6039      kernel recipe or out-of-tree kernel module recipe (e.g. a machine
6040      configuration file, a distribution configuration file, an append file
6041      for the recipe, or the recipe itself). If you use this variable, you
6042      must also be sure to list the module name in the
6043      :term:`KERNEL_MODULE_PROBECONF`
6044      variable.
6045
6046      Here is the general syntax::
6047
6048         module_conf_module_name = "modprobe.d-syntax"
6049
6050      You must use the kernel module name override.
6051
6052      Run ``man modprobe.d`` in the shell to find out more information on
6053      the exact syntax you want to provide with :term:`module_conf`.
6054
6055      Including :term:`module_conf` causes the OpenEmbedded build system to
6056      populate the ``/etc/modprobe.d/modname.conf`` file with
6057      ``modprobe.d`` syntax lines. Here is an example that adds the options
6058      ``arg1`` and ``arg2`` to a module named ``mymodule``::
6059
6060         module_conf_mymodule = "options mymodule arg1=val1 arg2=val2"
6061
6062      For information on how to specify kernel modules to auto-load on
6063      boot, see the :term:`KERNEL_MODULE_AUTOLOAD` variable.
6064
6065   :term:`MODULE_TARBALL_DEPLOY`
6066      Controls creation of the ``modules-*.tgz`` file. Set this variable to
6067      "0" to disable creation of this file, which contains all of the
6068      kernel modules resulting from a kernel build.
6069
6070   :term:`MODULE_TARBALL_LINK_NAME`
6071      The link name of the kernel module tarball. This variable is set in
6072      the ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as follows::
6073
6074         MODULE_TARBALL_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}"
6075
6076      The value
6077      of the ``KERNEL_ARTIFACT_LINK_NAME`` variable, which is set in the
6078      same file, has the following value::
6079
6080         KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}"
6081
6082      See the :term:`MACHINE` variable for additional information.
6083
6084   :term:`MODULE_TARBALL_NAME`
6085      The base name of the kernel module tarball. This variable is set in
6086      the ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as follows::
6087
6088         MODULE_TARBALL_NAME ?= "${KERNEL_ARTIFACT_NAME}"
6089
6090      See :term:`KERNEL_ARTIFACT_NAME` for additional information.
6091
6092   :term:`MOUNT_BASE`
6093      On non-systemd systems (where ``udev-extraconf`` is being used),
6094      specifies the base directory for auto-mounting filesystems. The
6095      default value is "/run/media".
6096
6097   :term:`MOUNT_GROUP`
6098      On non-systemd systems (where ``udev-extraconf`` is being used),
6099      specifies the mount group for auto-mounting filesystems. The
6100      default value is "disk".
6101
6102   :term:`MULTIMACH_TARGET_SYS`
6103      Uniquely identifies the type of the target system for which packages
6104      are being built. This variable allows output for different types of
6105      target systems to be put into different subdirectories of the same
6106      output directory.
6107
6108      The default value of this variable is::
6109
6110         ${PACKAGE_ARCH}${TARGET_VENDOR}-${TARGET_OS}
6111
6112      Some classes (e.g.  :ref:`ref-classes-cross-canadian`) modify the
6113      :term:`MULTIMACH_TARGET_SYS` value.
6114
6115      See the :term:`STAMP` variable for an example. See the
6116      :term:`STAGING_DIR_TARGET` variable for more information.
6117
6118   :term:`NATIVELSBSTRING`
6119      A string identifying the host distribution. Strings consist of the
6120      host distributor ID followed by the release, as reported by the
6121      ``lsb_release`` tool or as read from ``/etc/lsb-release``. For
6122      example, when running a build on Ubuntu 12.10, the value is
6123      "Ubuntu-12.10". If this information is unable to be determined, the
6124      value resolves to "Unknown".
6125
6126      This variable is used by default to isolate native shared state
6127      packages for different distributions (e.g. to avoid problems with
6128      ``glibc`` version incompatibilities). Additionally, the variable is
6129      checked against
6130      :term:`SANITY_TESTED_DISTROS` if that
6131      variable is set.
6132
6133   :term:`NM`
6134      The minimal command and arguments to run :manpage:`nm <nm(1)>`.
6135
6136   :term:`NO_GENERIC_LICENSE`
6137      Avoids QA errors when you use a non-common, non-CLOSED license in a
6138      recipe. There are packages, such as the linux-firmware package, with many
6139      licenses that are not in any way common. Also, new licenses are added
6140      occasionally to avoid introducing a lot of common license files,
6141      which are only applicable to a specific package.
6142      :term:`NO_GENERIC_LICENSE` is used to allow copying a license that does
6143      not exist in common licenses.
6144
6145      The following example shows how to add :term:`NO_GENERIC_LICENSE` to a
6146      recipe::
6147
6148         NO_GENERIC_LICENSE[license_name] = "license_file_in_fetched_source"
6149
6150      Here is an example that
6151      uses the ``LICENSE.Abilis.txt`` file as the license from the fetched
6152      source::
6153
6154         NO_GENERIC_LICENSE[Firmware-Abilis] = "LICENSE.Abilis.txt"
6155
6156   :term:`NO_RECOMMENDATIONS`
6157      Prevents installation of all "recommended-only" packages.
6158      Recommended-only packages are packages installed only through the
6159      :term:`RRECOMMENDS` variable). Setting the
6160      :term:`NO_RECOMMENDATIONS` variable to "1" turns this feature on::
6161
6162         NO_RECOMMENDATIONS = "1"
6163
6164      You can set this variable globally in your ``local.conf`` file or you
6165      can attach it to a specific image recipe by using the recipe name
6166      override::
6167
6168         NO_RECOMMENDATIONS:pn-target_image = "1"
6169
6170      It is important to realize that if you choose to not install packages
6171      using this variable and some other packages are dependent on them
6172      (i.e. listed in a recipe's :term:`RDEPENDS`
6173      variable), the OpenEmbedded build system ignores your request and
6174      will install the packages to avoid dependency errors.
6175
6176      .. note::
6177
6178         Some recommended packages might be required for certain system
6179         functionality, such as kernel modules. It is up to you to add
6180         packages with the :term:`IMAGE_INSTALL` variable.
6181
6182      This variable is only supported when using the IPK and RPM
6183      packaging backends. DEB is not supported.
6184
6185      See the :term:`BAD_RECOMMENDATIONS` and
6186      the :term:`PACKAGE_EXCLUDE` variables for
6187      related information.
6188
6189   :term:`NOAUTOPACKAGEDEBUG`
6190      Disables auto package from splitting ``.debug`` files. If a recipe
6191      requires ``FILES:${PN}-dbg`` to be set manually, the
6192      :term:`NOAUTOPACKAGEDEBUG` can be defined allowing you to define the
6193      content of the debug package. For example::
6194
6195         NOAUTOPACKAGEDEBUG = "1"
6196         FILES:${PN}-dev = "${includedir}/${QT_DIR_NAME}/Qt/*"
6197         FILES:${PN}-dbg = "/usr/src/debug/"
6198         FILES:${QT_BASE_NAME}-demos-doc = "${docdir}/${QT_DIR_NAME}/qch/qt.qch"
6199
6200   :term:`NON_MULTILIB_RECIPES`
6201      A list of recipes that should not be built for multilib. OE-Core's
6202      ``multilib.conf`` file defines a reasonable starting point for this
6203      list with::
6204
6205         NON_MULTILIB_RECIPES = "grub grub-efi make-mod-scripts ovmf u-boot"
6206
6207   :term:`NVD_DB_VERSION`
6208      The :term:`NVD_DB_VERSION` variable allows choosing the CVE feed when
6209      using the :ref:`ref-classes-cve-check` class. It can be one of:
6210
6211      -  ``NVD2`` (default): the NVD feed with API version 2
6212      -  ``FKIE``: the `FKIE-CAD <https://github.com/fkie-cad/nvd-json-data-feeds>`__
6213         feed reconstruction
6214      -  ``NVD1``: the NVD JSON feed (deprecated)
6215
6216      In case of a malformed feed name, the ``NVD2`` feed is selected and an
6217      error is printed.
6218
6219   :term:`NVDCVE_API_KEY`
6220      The NVD API key used to retrieve data from the CVE database when
6221      using :ref:`ref-classes-cve-check`.
6222
6223      By default, no API key is used, which results in larger delays between API
6224      requests and limits the number of queries to the public rate limits posted
6225      at the `NVD developer's page <https://nvd.nist.gov/developers/start-here>`__.
6226
6227      NVD API keys can be requested through the
6228      `Request an API Key <https://nvd.nist.gov/developers/request-an-api-key>`__
6229      page. You can set this variable to the NVD API key in your ``local.conf`` file.
6230      Example::
6231
6232          NVDCVE_API_KEY = "fe753&7a2-1427-347d-23ff-b2e2b7ca5f3"
6233
6234   :term:`OBJCOPY`
6235      The minimal command and arguments to run :manpage:`objcopy <objcopy(1)>`.
6236
6237   :term:`OBJDUMP`
6238      The minimal command and arguments to run :manpage:`objdump <objdump(1)>`.
6239
6240   :term:`OE_BINCONFIG_EXTRA_MANGLE`
6241      When inheriting the :ref:`ref-classes-binconfig` class,
6242      this variable specifies additional arguments passed to the "sed"
6243      command. The sed command alters any paths in configuration scripts
6244      that have been set up during compilation. Inheriting this class
6245      results in all paths in these scripts being changed to point into the
6246      ``sysroots/`` directory so that all builds that use the script will
6247      use the correct directories for the cross compiling layout.
6248
6249      See the ``meta/classes-recipe/binconfig.bbclass`` in the
6250      :term:`Source Directory` for details on how this class
6251      applies these additional sed command arguments.
6252
6253   :term:`OECMAKE_GENERATOR`
6254      A variable for the :ref:`ref-classes-cmake` class, allowing to choose
6255      which back-end will be generated by CMake to build an application.
6256
6257      By default, this variable is set to ``Ninja``, which is faster than GNU
6258      make, but if building is broken with Ninja, a recipe can use this
6259      variable to use GNU make instead::
6260
6261         OECMAKE_GENERATOR = "Unix Makefiles"
6262
6263   :term:`OE_INIT_ENV_SCRIPT`
6264      The name of the build environment setup script for the purposes of
6265      setting up the environment within the extensible SDK. The default
6266      value is "oe-init-build-env".
6267
6268      If you use a custom script to set up your build environment, set the
6269      :term:`OE_INIT_ENV_SCRIPT` variable to its name.
6270
6271   :term:`OE_TERMINAL`
6272      Controls how the OpenEmbedded build system spawns interactive
6273      terminals on the host development system (e.g. using the BitBake
6274      command with the ``-c devshell`` command-line option). For more
6275      information, see the ":ref:`dev-manual/development-shell:using a development shell`" section in
6276      the Yocto Project Development Tasks Manual.
6277
6278      You can use the following values for the :term:`OE_TERMINAL` variable:
6279
6280      - auto
6281      - gnome
6282      - xfce
6283      - rxvt
6284      - screen
6285      - konsole
6286      - none
6287
6288   :term:`OEROOT`
6289      The directory from which the top-level build environment setup script
6290      is sourced. The Yocto Project provides a top-level build environment
6291      setup script: :ref:`structure-core-script`. When you run this
6292      script, the :term:`OEROOT` variable resolves to the directory that
6293      contains the script.
6294
6295      For additional information on how this variable is used, see the
6296      initialization script.
6297
6298   :term:`OEQA_REPRODUCIBLE_TEST_LEAF_TARGETS`
6299      Set build target(s) for build reproducibility testing but activate
6300      :ref:`shared state <overview-manual/concepts:shared state cache>` build
6301      for most dependencies (i.e. the ones explicitly listed in DEPENDS, which
6302      may not be all dependencies, c.f. [depends] varflags, PACKAGE_DEPENDS and
6303      other implementations). See :doc:`/test-manual/reproducible-builds`.
6304
6305   :term:`OEQA_REPRODUCIBLE_TEST_PACKAGE`
6306      Set the package manager(s) for build reproducibility testing.
6307      See :yocto_git:`reproducible.py </poky/tree/meta/lib/oeqa/selftest/cases/reproducible.py>`
6308      and :doc:`/test-manual/reproducible-builds`.
6309
6310   :term:`OEQA_REPRODUCIBLE_TEST_TARGET`
6311      Set build target for build reproducibility testing. By default
6312      all available recipes are compiled with "bitbake world", see also :term:`EXCLUDE_FROM_WORLD`
6313      and :doc:`/test-manual/reproducible-builds`.
6314
6315   :term:`OEQA_REPRODUCIBLE_TEST_SSTATE_TARGETS`
6316      Set build targets which can be rebuilt using :ref:`shared state <overview-manual/concepts:shared state cache>`
6317      when running build reproducibility tests. See :doc:`/test-manual/reproducible-builds`.
6318
6319   :term:`OLDEST_KERNEL`
6320      Declares the oldest version of the Linux kernel that the produced
6321      binaries must support. This variable is passed into the build of the
6322      Embedded GNU C Library (``glibc``).
6323
6324      The default for this variable comes from the
6325      ``meta/conf/bitbake.conf`` configuration file. You can override this
6326      default by setting the variable in a custom distribution
6327      configuration file.
6328
6329   :term:`OPKG_MAKE_INDEX_EXTRA_PARAMS`
6330      Specifies extra parameters for the ``opkg-make-index`` command.
6331
6332   :term:`OPKGBUILDCMD`
6333      The variable :term:`OPKGBUILDCMD` specifies the command used to build opkg
6334      packages when using the :ref:`ref-classes-package_ipk` class. It is
6335      defined in :ref:`ref-classes-package_ipk` as::
6336
6337          OPKGBUILDCMD ??= 'opkg-build -Z zstd -a "${ZSTD_DEFAULTS}"'
6338
6339   :term:`OVERLAYFS_ETC_DEVICE`
6340      When the :ref:`ref-classes-overlayfs-etc` class is
6341      inherited, specifies the device to be mounted for the read/write
6342      layer of ``/etc``. There is no default, so you must set this if you
6343      wish to enable :ref:`ref-classes-overlayfs-etc`, for
6344      example, assuming ``/dev/mmcblk0p2`` was the desired device::
6345
6346         OVERLAYFS_ETC_DEVICE = "/dev/mmcblk0p2"
6347
6348   :term:`OVERLAYFS_ETC_EXPOSE_LOWER`
6349      When the :ref:`ref-classes-overlayfs-etc` class is
6350      inherited, if set to "1" then a read-only access to the original
6351      ``/etc`` content will be provided as a ``lower/`` subdirectory of
6352      :term:`OVERLAYFS_ETC_MOUNT_POINT`. The default value is "0".
6353
6354   :term:`OVERLAYFS_ETC_FSTYPE`
6355      When the :ref:`ref-classes-overlayfs-etc` class is
6356      inherited, specifies the file system type for the read/write
6357      layer of ``/etc``. There is no default, so you must set this if you
6358      wish to enable :ref:`ref-classes-overlayfs-etc`,
6359      for example, assuming the file system is ext4::
6360
6361         OVERLAYFS_ETC_FSTYPE = "ext4"
6362
6363   :term:`OVERLAYFS_ETC_MOUNT_OPTIONS`
6364      When the :ref:`ref-classes-overlayfs-etc` class is
6365      inherited, specifies the mount options for the read-write layer.
6366      The default value is "defaults".
6367
6368   :term:`OVERLAYFS_ETC_MOUNT_POINT`
6369      When the :ref:`ref-classes-overlayfs-etc` class is
6370      inherited, specifies the parent mount path for the filesystem layers.
6371      There is no default, so you must set this if you wish to enable
6372      :ref:`ref-classes-overlayfs-etc`, for example if the desired path is
6373      "/data"::
6374
6375         OVERLAYFS_ETC_MOUNT_POINT = "/data"
6376
6377   :term:`OVERLAYFS_ETC_USE_ORIG_INIT_NAME`
6378      When the :ref:`ref-classes-overlayfs-etc` class is inherited, controls
6379      how the generated init will be named. For more information, see the
6380      :ref:`ref-classes-overlayfs-etc` class documentation. The default value
6381      is "1".
6382
6383   :term:`OVERLAYFS_MOUNT_POINT`
6384      When inheriting the :ref:`ref-classes-overlayfs` class,
6385      specifies mount point(s) to be used. For example::
6386
6387         OVERLAYFS_MOUNT_POINT[data] = "/data"
6388
6389      The assumes you have a ``data.mount`` systemd unit defined elsewhere in
6390      your BSP (e.g. in ``systemd-machine-units`` recipe) and it is installed
6391      into the image. For more information see :ref:`ref-classes-overlayfs`.
6392
6393      .. note::
6394
6395         Although the :ref:`ref-classes-overlayfs` class is
6396         inherited by individual recipes, :term:`OVERLAYFS_MOUNT_POINT`
6397         should be set in your machine configuration.
6398
6399   :term:`OVERLAYFS_QA_SKIP`
6400      When inheriting the :ref:`ref-classes-overlayfs` class,
6401      provides the ability to disable QA checks for particular overlayfs
6402      mounts. For example::
6403
6404         OVERLAYFS_QA_SKIP[data] = "mount-configured"
6405
6406      .. note::
6407
6408         Although the :ref:`ref-classes-overlayfs` class is
6409         inherited by individual recipes, :term:`OVERLAYFS_QA_SKIP`
6410         should be set in your machine configuration.
6411
6412   :term:`OVERLAYFS_WRITABLE_PATHS`
6413      When inheriting the :ref:`ref-classes-overlayfs` class,
6414      specifies writable paths used at runtime for the recipe. For
6415      example::
6416
6417         OVERLAYFS_WRITABLE_PATHS[data] = "/usr/share/my-custom-application"
6418
6419   :term:`OVERRIDES`
6420      A colon-separated list of overrides that currently apply. Overrides
6421      are a BitBake mechanism that allows variables to be selectively
6422      overridden at the end of parsing. The set of overrides in
6423      :term:`OVERRIDES` represents the "state" during building, which includes
6424      the current recipe being built, the machine for which it is being
6425      built, and so forth.
6426
6427      As an example, if the string "an-override" appears as an element in
6428      the colon-separated list in :term:`OVERRIDES`, then the following
6429      assignment will override ``FOO`` with the value "overridden" at the
6430      end of parsing::
6431
6432         FOO:an-override = "overridden"
6433
6434      See the
6435      ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:conditional syntax (overrides)`"
6436      section in the BitBake User Manual for more information on the
6437      overrides mechanism.
6438
6439      The default value of :term:`OVERRIDES` includes the values of the
6440      :term:`CLASSOVERRIDE`,
6441      :term:`MACHINEOVERRIDES`, and
6442      :term:`DISTROOVERRIDES` variables. Another
6443      important override included by default is ``pn-${PN}``. This override
6444      allows variables to be set for a single recipe within configuration
6445      (``.conf``) files. Here is an example::
6446
6447         FOO:pn-myrecipe = "myrecipe-specific value"
6448
6449      .. note::
6450
6451         An easy way to see what overrides apply is to search for :term:`OVERRIDES`
6452         in the output of the ``bitbake -e`` command. See the
6453         ":ref:`dev-manual/debugging:viewing variable values`" section in the Yocto
6454         Project Development Tasks Manual for more information.
6455
6456   :term:`P`
6457      The recipe name and version. :term:`P` is comprised of the following::
6458
6459         ${PN}-${PV}
6460
6461   :term:`P4DIR`
6462      See :term:`bitbake:P4DIR` in the BitBake manual.
6463
6464   :term:`PACKAGE_ADD_METADATA`
6465      This variable defines additional metadata to add to packages.
6466
6467      You may find you need to inject additional metadata into packages.
6468      This variable allows you to do that by setting the injected data as
6469      the value. Multiple fields can be added by splitting the content with
6470      the literal separator "\n".
6471
6472      The suffixes '_IPK', '_DEB', or '_RPM' can be applied to the variable
6473      to do package type specific settings. It can also be made package
6474      specific by using the package name as a suffix.
6475
6476      You can find out more about applying this variable in the
6477      ":ref:`dev-manual/packages:adding custom metadata to packages`"
6478      section in the Yocto Project Development Tasks Manual.
6479
6480   :term:`PACKAGE_ARCH`
6481      The architecture of the resulting package or packages.
6482
6483      By default, the value of this variable is set to
6484      :term:`TUNE_PKGARCH` when building for the
6485      target, :term:`BUILD_ARCH` when building for the
6486      build host, and "${SDK_ARCH}-${SDKPKGSUFFIX}" when building for the
6487      SDK.
6488
6489      .. note::
6490
6491         See :term:`SDK_ARCH` for more information.
6492
6493      However, if your recipe's output packages are built specific to the
6494      target machine rather than generally for the architecture of the
6495      machine, you should set :term:`PACKAGE_ARCH` to the value of
6496      :term:`MACHINE_ARCH` in the recipe as follows::
6497
6498         PACKAGE_ARCH = "${MACHINE_ARCH}"
6499
6500   :term:`PACKAGE_ARCHS`
6501      Specifies a list of architectures compatible with the target machine.
6502      This variable is set automatically and should not normally be
6503      hand-edited. Entries are separated using spaces and listed in order
6504      of priority. The default value for :term:`PACKAGE_ARCHS` is "all any
6505      noarch ${PACKAGE_EXTRA_ARCHS} ${MACHINE_ARCH}".
6506
6507   :term:`PACKAGE_BEFORE_PN`
6508      Enables easily adding packages to :term:`PACKAGES` before ``${PN}`` so
6509      that those added packages can pick up files that would normally be
6510      included in the default package.
6511
6512   :term:`PACKAGE_CLASSES`
6513      This variable, which is set in the ``local.conf`` configuration file
6514      found in the ``conf`` folder of the
6515      :term:`Build Directory`, specifies the package manager the
6516      OpenEmbedded build system uses when packaging data.
6517
6518      You can provide one or more of the following arguments for the
6519      variable::
6520
6521         PACKAGE_CLASSES ?= "package_rpm package_deb package_ipk"
6522
6523      The build system uses only the first argument in the list as the
6524      package manager when creating your image or SDK. However, packages
6525      will be created using any additional packaging classes you specify.
6526      For example, if you use the following in your ``local.conf`` file::
6527
6528         PACKAGE_CLASSES ?= "package_ipk"
6529
6530      The OpenEmbedded build system uses
6531      the IPK package manager to create your image or SDK.
6532
6533      For information on packaging and build performance effects as a
6534      result of the package manager in use, see the
6535      ":ref:`ref-classes-package`" section.
6536
6537   :term:`PACKAGE_DEBUG_SPLIT_STYLE`
6538      Determines how to split up and package debug and source information
6539      when creating debugging packages to be used with the GNU Project
6540      Debugger (GDB). In general, based on the value of this variable,
6541      you can combine the source and debug info in a single package,
6542      you can break out the source into a separate package that can be
6543      installed independently, or you can choose to not have the source
6544      packaged at all.
6545
6546      The possible values of :term:`PACKAGE_DEBUG_SPLIT_STYLE` variable:
6547
6548      -  "``.debug``": All debugging and source info is placed in a single
6549         ``*-dbg`` package; debug symbol files are placed next to the
6550         binary in a ``.debug`` directory so that, if a binary is installed
6551         into ``/bin``, the corresponding debug symbol file is installed
6552         in ``/bin/.debug``. Source files are installed in the same ``*-dbg``
6553         package under ``/usr/src/debug``.
6554
6555      -  "``debug-file-directory``": As above, all debugging and source info
6556         is placed in a single ``*-dbg`` package; debug symbol files are
6557         placed entirely under the directory ``/usr/lib/debug`` and separated
6558         by the path from where the binary is installed, so that if a binary
6559         is installed in ``/bin``, the corresponding debug symbols are installed
6560         in ``/usr/lib/debug/bin``, and so on. As above, source is installed
6561         in the same package under ``/usr/src/debug``.
6562
6563      -  "``debug-with-srcpkg``": Debugging info is placed in the standard
6564         ``*-dbg`` package as with the ``.debug`` value, while source is
6565         placed in a separate ``*-src`` package, which can be installed
6566         independently.  This is the default setting for this variable,
6567         as defined in Poky's ``bitbake.conf`` file.
6568
6569      -  "``debug-without-src``": The same behavior as with the ``.debug``
6570         setting, but no source is packaged at all.
6571
6572      .. note::
6573
6574         Much of the above package splitting can be overridden via
6575         use of the :term:`INHIBIT_PACKAGE_DEBUG_SPLIT` variable.
6576
6577      You can find out more about debugging using GDB by reading the
6578      ":ref:`dev-manual/debugging:debugging with the gnu project debugger (gdb) remotely`" section
6579      in the Yocto Project Development Tasks Manual.
6580
6581   :term:`PACKAGE_EXCLUDE`
6582      Lists packages that should not be installed into an image. For
6583      example::
6584
6585         PACKAGE_EXCLUDE = "package_name package_name package_name ..."
6586
6587      You can set this variable globally in your ``local.conf`` file or you
6588      can attach it to a specific image recipe by using the recipe name
6589      override::
6590
6591         PACKAGE_EXCLUDE:pn-target_image = "package_name"
6592
6593      If you choose to not install a package using this variable and some
6594      other package is dependent on it (i.e. listed in a recipe's
6595      :term:`RDEPENDS` variable), the OpenEmbedded build
6596      system generates a fatal installation error. Because the build system
6597      halts the process with a fatal error, you can use the variable with
6598      an iterative development process to remove specific components from a
6599      system.
6600
6601      This variable is supported only when using the IPK and RPM
6602      packaging backends. DEB is not supported.
6603
6604      See the :term:`NO_RECOMMENDATIONS` and the
6605      :term:`BAD_RECOMMENDATIONS` variables for
6606      related information.
6607
6608   :term:`PACKAGE_EXCLUDE_COMPLEMENTARY`
6609      Prevents specific packages from being installed when you are
6610      installing complementary packages.
6611
6612      You might find that you want to prevent installing certain packages
6613      when you are installing complementary packages. For example, if you
6614      are using :term:`IMAGE_FEATURES` to install
6615      ``dev-pkgs``, you might not want to install all packages from a
6616      particular multilib. If you find yourself in this situation, you can
6617      use the :term:`PACKAGE_EXCLUDE_COMPLEMENTARY` variable to specify regular
6618      expressions to match the packages you want to exclude.
6619
6620   :term:`PACKAGE_EXTRA_ARCHS`
6621      Specifies the list of architectures compatible with the device CPU.
6622      This variable is useful when you build for several different devices
6623      that use miscellaneous processors such as XScale and ARM926-EJS.
6624
6625   :term:`PACKAGE_FEED_ARCHS`
6626      Optionally specifies the package architectures used as part of the
6627      package feed URIs during the build. When used, the
6628      :term:`PACKAGE_FEED_ARCHS` variable is appended to the final package feed
6629      URI, which is constructed using the
6630      :term:`PACKAGE_FEED_URIS` and
6631      :term:`PACKAGE_FEED_BASE_PATHS`
6632      variables.
6633
6634      .. note::
6635
6636         You can use the :term:`PACKAGE_FEED_ARCHS`
6637         variable to allow specific package architectures. If you do
6638         not need to allow specific architectures, which is a common
6639         case, you can omit this variable. Omitting the variable results in
6640         all available architectures for the current machine being included
6641         into remote package feeds.
6642
6643      Consider the following example where the :term:`PACKAGE_FEED_URIS`,
6644      :term:`PACKAGE_FEED_BASE_PATHS`, and :term:`PACKAGE_FEED_ARCHS` variables are
6645      defined in your ``local.conf`` file::
6646
6647         PACKAGE_FEED_URIS = "https://example.com/packagerepos/release \
6648                              https://example.com/packagerepos/updates"
6649         PACKAGE_FEED_BASE_PATHS = "rpm rpm-dev"
6650         PACKAGE_FEED_ARCHS = "all core2-64"
6651
6652      Given these settings, the resulting package feeds are as follows:
6653
6654      .. code-block:: none
6655
6656         https://example.com/packagerepos/release/rpm/all
6657         https://example.com/packagerepos/release/rpm/core2-64
6658         https://example.com/packagerepos/release/rpm-dev/all
6659         https://example.com/packagerepos/release/rpm-dev/core2-64
6660         https://example.com/packagerepos/updates/rpm/all
6661         https://example.com/packagerepos/updates/rpm/core2-64
6662         https://example.com/packagerepos/updates/rpm-dev/all
6663         https://example.com/packagerepos/updates/rpm-dev/core2-64
6664
6665   :term:`PACKAGE_FEED_BASE_PATHS`
6666      Specifies the base path used when constructing package feed URIs. The
6667      :term:`PACKAGE_FEED_BASE_PATHS` variable makes up the middle portion of a
6668      package feed URI used by the OpenEmbedded build system. The base path
6669      lies between the :term:`PACKAGE_FEED_URIS`
6670      and :term:`PACKAGE_FEED_ARCHS` variables.
6671
6672      Consider the following example where the :term:`PACKAGE_FEED_URIS`,
6673      :term:`PACKAGE_FEED_BASE_PATHS`, and :term:`PACKAGE_FEED_ARCHS` variables are
6674      defined in your ``local.conf`` file::
6675
6676         PACKAGE_FEED_URIS = "https://example.com/packagerepos/release \
6677                              https://example.com/packagerepos/updates"
6678         PACKAGE_FEED_BASE_PATHS = "rpm rpm-dev"
6679         PACKAGE_FEED_ARCHS = "all core2-64"
6680
6681      Given these settings, the resulting package feeds are as follows:
6682
6683      .. code-block:: none
6684
6685         https://example.com/packagerepos/release/rpm/all
6686         https://example.com/packagerepos/release/rpm/core2-64
6687         https://example.com/packagerepos/release/rpm-dev/all
6688         https://example.com/packagerepos/release/rpm-dev/core2-64
6689         https://example.com/packagerepos/updates/rpm/all
6690         https://example.com/packagerepos/updates/rpm/core2-64
6691         https://example.com/packagerepos/updates/rpm-dev/all
6692         https://example.com/packagerepos/updates/rpm-dev/core2-64
6693
6694   :term:`PACKAGE_FEED_URIS`
6695      Specifies the front portion of the package feed URI used by the
6696      OpenEmbedded build system. Each final package feed URI is comprised
6697      of :term:`PACKAGE_FEED_URIS`,
6698      :term:`PACKAGE_FEED_BASE_PATHS`, and
6699      :term:`PACKAGE_FEED_ARCHS` variables.
6700
6701      Consider the following example where the :term:`PACKAGE_FEED_URIS`,
6702      :term:`PACKAGE_FEED_BASE_PATHS`, and :term:`PACKAGE_FEED_ARCHS` variables are
6703      defined in your ``local.conf`` file::
6704
6705         PACKAGE_FEED_URIS = "https://example.com/packagerepos/release \
6706                              https://example.com/packagerepos/updates"
6707         PACKAGE_FEED_BASE_PATHS = "rpm rpm-dev"
6708         PACKAGE_FEED_ARCHS = "all core2-64"
6709
6710      Given these settings, the resulting package feeds are as follows:
6711
6712      .. code-block:: none
6713
6714         https://example.com/packagerepos/release/rpm/all
6715         https://example.com/packagerepos/release/rpm/core2-64
6716         https://example.com/packagerepos/release/rpm-dev/all
6717         https://example.com/packagerepos/release/rpm-dev/core2-64
6718         https://example.com/packagerepos/updates/rpm/all
6719         https://example.com/packagerepos/updates/rpm/core2-64
6720         https://example.com/packagerepos/updates/rpm-dev/all
6721         https://example.com/packagerepos/updates/rpm-dev/core2-64
6722
6723   :term:`PACKAGE_INSTALL`
6724      The final list of packages passed to the package manager for
6725      installation into the image.
6726
6727      Because the package manager controls actual installation of all
6728      packages, the list of packages passed using :term:`PACKAGE_INSTALL` is
6729      not the final list of packages that are actually installed. This
6730      variable is internal to the image construction code. Consequently, in
6731      general, you should use the
6732      :term:`IMAGE_INSTALL` variable to specify
6733      packages for installation. The exception to this is when working with
6734      the :ref:`core-image-minimal-initramfs <ref-manual/images:images>`
6735      image. When working with an initial RAM filesystem (:term:`Initramfs`) image,
6736      use the :term:`PACKAGE_INSTALL` variable. For information on creating an
6737      :term:`Initramfs`, see the ":ref:`dev-manual/building:building an initial ram filesystem (Initramfs) image`" section
6738      in the Yocto Project Development Tasks Manual.
6739
6740   :term:`PACKAGE_INSTALL_ATTEMPTONLY`
6741      Specifies a list of packages the OpenEmbedded build system attempts
6742      to install when creating an image. If a listed package fails to
6743      install, the build system does not generate an error. This variable
6744      is generally not user-defined.
6745
6746   :term:`PACKAGE_PREPROCESS_FUNCS`
6747      Specifies a list of functions run to pre-process the
6748      :term:`PKGD` directory prior to splitting the files out
6749      to individual packages.
6750
6751   :term:`PACKAGE_WRITE_DEPS`
6752      Specifies a list of dependencies for post-installation and
6753      pre-installation scripts on native/cross tools. If your
6754      post-installation or pre-installation script can execute at root filesystem
6755      creation time rather than on the target but depends on a native tool
6756      in order to execute, you need to list the tools in
6757      :term:`PACKAGE_WRITE_DEPS`.
6758
6759      For information on running post-installation scripts, see the
6760      ":ref:`dev-manual/new-recipe:post-installation scripts`"
6761      section in the Yocto Project Development Tasks Manual.
6762
6763   :term:`PACKAGECONFIG`
6764      This variable provides a means of enabling or disabling features of a
6765      recipe on a per-recipe basis. :term:`PACKAGECONFIG` blocks are defined in
6766      recipes when you specify features and then arguments that define
6767      feature behaviors. Here is the basic block structure (broken over
6768      multiple lines for readability)::
6769
6770         PACKAGECONFIG ??= "f1 f2 f3 ..."
6771         PACKAGECONFIG[f1] = "\
6772             --with-f1, \
6773             --without-f1, \
6774             build-deps-for-f1, \
6775             runtime-deps-for-f1, \
6776             runtime-recommends-for-f1, \
6777             packageconfig-conflicts-for-f1"
6778         PACKAGECONFIG[f2] = "\
6779              ... and so on and so on ...
6780
6781      The :term:`PACKAGECONFIG` variable itself specifies a space-separated
6782      list of the features to enable. Following the features, you can
6783      determine the behavior of each feature by providing up to six
6784      order-dependent arguments, which are separated by commas. You can
6785      omit any argument you like but must retain the separating commas. The
6786      order is important and specifies the following:
6787
6788      #. Extra arguments that should be added to :term:`PACKAGECONFIG_CONFARGS`
6789         if the feature is enabled.
6790
6791      #. Extra arguments that should be added to :term:`PACKAGECONFIG_CONFARGS`
6792         if the feature is disabled.
6793
6794      #. Additional build dependencies (:term:`DEPENDS`)
6795         that should be added if the feature is enabled.
6796
6797      #. Additional runtime dependencies (:term:`RDEPENDS`)
6798         that should be added if the feature is enabled.
6799
6800      #. Additional runtime recommendations
6801         (:term:`RRECOMMENDS`) that should be added if
6802         the feature is enabled.
6803
6804      #. Any conflicting (that is, mutually exclusive) :term:`PACKAGECONFIG`
6805         settings for this feature.
6806
6807      Consider the following :term:`PACKAGECONFIG` block taken from the
6808      ``librsvg`` recipe. In this example the feature is ``gtk``, which has
6809      three arguments that determine the feature's behavior::
6810
6811         PACKAGECONFIG[gtk] = "--with-gtk3,--without-gtk3,gtk+3"
6812
6813      The
6814      ``--with-gtk3`` and ``gtk+3`` arguments apply only if the feature is
6815      enabled. In this case, ``--with-gtk3`` is added to the configure
6816      script argument list and ``gtk+3`` is added to :term:`DEPENDS`. On the
6817      other hand, if the feature is disabled say through a ``.bbappend``
6818      file in another layer, then the second argument ``--without-gtk3`` is
6819      added to the configure script instead.
6820
6821      The basic :term:`PACKAGECONFIG` structure previously described holds true
6822      regardless of whether you are creating a block or changing a block.
6823      When creating a block, use the structure inside your recipe.
6824
6825      If you want to change an existing :term:`PACKAGECONFIG` block, you can do
6826      so one of two ways:
6827
6828      -  *Append file:* Create an append file named
6829         ``recipename.bbappend`` in your layer and override the value of
6830         :term:`PACKAGECONFIG`. You can either completely override the
6831         variable::
6832
6833            PACKAGECONFIG = "f4 f5"
6834
6835         Or, you can just append the variable::
6836
6837            PACKAGECONFIG:append = " f4"
6838
6839      -  *Configuration file:* This method is identical to changing the
6840         block through an append file except you edit your ``local.conf``
6841         or ``mydistro.conf`` file. As with append files previously
6842         described, you can either completely override the variable::
6843
6844            PACKAGECONFIG:pn-recipename = "f4 f5"
6845
6846         Or, you can just amend the variable::
6847
6848            PACKAGECONFIG:append:pn-recipename = " f4"
6849
6850      Consider the following example of a :ref:`ref-classes-cmake` recipe with a systemd service
6851      in which :term:`PACKAGECONFIG` is used to transform the systemd service
6852      into a feature that can be easily enabled or disabled via :term:`PACKAGECONFIG`::
6853
6854         example.c
6855         example.service
6856         CMakeLists.txt
6857
6858      The ``CMakeLists.txt`` file contains::
6859
6860         if(WITH_SYSTEMD)
6861            install(FILES ${PROJECT_SOURCE_DIR}/example.service DESTINATION /etc/systemd/systemd)
6862         endif(WITH_SYSTEMD)
6863
6864      In order to enable the installation of ``example.service`` we need to
6865      ensure that ``-DWITH_SYSTEMD=ON`` is passed to the ``cmake`` command
6866      execution.  Recipes that have ``CMakeLists.txt`` generally inherit the
6867      :ref:`ref-classes-cmake` class, that runs ``cmake`` with
6868      :term:`EXTRA_OECMAKE`, which :term:`PACKAGECONFIG_CONFARGS` will be
6869      appended to.  Now, knowing that :term:`PACKAGECONFIG_CONFARGS` is
6870      automatically filled with either the first or second element of
6871      :term:`PACKAGECONFIG` flag value, the recipe would be like::
6872
6873         inherit cmake
6874         PACKAGECONFIG = "systemd"
6875         PACKAGECONFIG[systemd] = "-DWITH_SYSTEMD=ON,-DWITH_SYSTEMD=OFF"
6876
6877      A side note to this recipe is to check if ``systemd`` is in fact the used :term:`INIT_MANAGER`
6878      or not::
6879
6880         PACKAGECONFIG = "${@'systemd' if d.getVar('INIT_MANAGER') == 'systemd' else ''}"
6881
6882   :term:`PACKAGECONFIG_CONFARGS`
6883      A space-separated list of configuration options generated from the
6884      :term:`PACKAGECONFIG` setting.
6885
6886      Classes such as :ref:`ref-classes-autotools` and :ref:`ref-classes-cmake`
6887      use :term:`PACKAGECONFIG_CONFARGS` to pass :term:`PACKAGECONFIG` options
6888      to ``configure`` and ``cmake``, respectively. If you are using
6889      :term:`PACKAGECONFIG` but not a class that handles the
6890      :ref:`ref-tasks-configure` task, then you need to use
6891      :term:`PACKAGECONFIG_CONFARGS` appropriately.
6892
6893   :term:`PACKAGEGROUP_DISABLE_COMPLEMENTARY`
6894      For recipes inheriting the :ref:`ref-classes-packagegroup` class, setting
6895      :term:`PACKAGEGROUP_DISABLE_COMPLEMENTARY` to "1" specifies that the
6896      normal complementary packages (i.e. ``-dev``, ``-dbg``, and so forth)
6897      should not be automatically created by the ``packagegroup`` recipe,
6898      which is the default behavior.
6899
6900   :term:`PACKAGES`
6901      The list of packages the recipe creates. The default value is the
6902      following::
6903
6904         ${PN}-src ${PN}-dbg ${PN}-staticdev ${PN}-dev ${PN}-doc ${PN}-locale ${PACKAGE_BEFORE_PN} ${PN}
6905
6906      During packaging, the :ref:`ref-tasks-package` task
6907      goes through :term:`PACKAGES` and uses the :term:`FILES`
6908      variable corresponding to each package to assign files to the
6909      package. If a file matches the :term:`FILES` variable for more than one
6910      package in :term:`PACKAGES`, it will be assigned to the earliest
6911      (leftmost) package.
6912
6913      Packages in the variable's list that are empty (i.e. where none of
6914      the patterns in ``FILES:``\ pkg match any files installed by the
6915      :ref:`ref-tasks-install` task) are not generated,
6916      unless generation is forced through the
6917      :term:`ALLOW_EMPTY` variable.
6918
6919   :term:`PACKAGES_DYNAMIC`
6920      A promise that your recipe satisfies runtime dependencies for
6921      optional modules that are found in other recipes.
6922      :term:`PACKAGES_DYNAMIC` does not actually satisfy the dependencies, it
6923      only states that they should be satisfied. For example, if a hard,
6924      runtime dependency (:term:`RDEPENDS`) of another
6925      package is satisfied at build time through the :term:`PACKAGES_DYNAMIC`
6926      variable, but a package with the module name is never actually
6927      produced, then the other package will be broken. Thus, if you attempt
6928      to include that package in an image, you will get a dependency
6929      failure from the packaging system during the
6930      :ref:`ref-tasks-rootfs` task.
6931
6932      Typically, if there is a chance that such a situation can occur and
6933      the package that is not created is valid without the dependency being
6934      satisfied, then you should use :term:`RRECOMMENDS`
6935      (a soft runtime dependency) instead of :term:`RDEPENDS`.
6936
6937      For an example of how to use the :term:`PACKAGES_DYNAMIC` variable when
6938      you are splitting packages, see the
6939      ":ref:`dev-manual/packages:handling optional module packaging`"
6940      section in the Yocto Project Development Tasks Manual.
6941
6942   :term:`PACKAGESPLITFUNCS`
6943      Specifies a list of functions run to perform additional splitting of
6944      files into individual packages. Recipes can either prepend to this
6945      variable or prepend to the ``populate_packages`` function in order to
6946      perform additional package splitting. In either case, the function
6947      should set :term:`PACKAGES`,
6948      :term:`FILES`, :term:`RDEPENDS` and
6949      other packaging variables appropriately in order to perform the
6950      desired splitting.
6951
6952   :term:`PARALLEL_MAKE`
6953
6954      Extra options passed to the build tool command (``make``,
6955      ``ninja`` or more specific build engines, like the Go language one)
6956      during the :ref:`ref-tasks-compile` task, to specify parallel compilation
6957      on the local build host. This variable is usually in the form "-j x",
6958      where x represents the maximum number of parallel threads such engines
6959      can run.
6960
6961      .. note::
6962
6963         For software compiled by ``make``, in order for :term:`PARALLEL_MAKE`
6964         to be effective, ``make`` must be called with
6965         ``${``\ :term:`EXTRA_OEMAKE`\ ``}``. An easy
6966         way to ensure this is to use the ``oe_runmake`` function.
6967
6968      By default, the OpenEmbedded build system automatically sets this
6969      variable to be equal to the number of cores the build system uses.
6970
6971      .. note::
6972
6973         If the software being built experiences dependency issues during
6974         the :ref:`ref-tasks-compile` task that result in race conditions, you can clear
6975         the :term:`PARALLEL_MAKE` variable within the recipe as a workaround. For
6976         information on addressing race conditions, see the
6977         ":ref:`dev-manual/debugging:debugging parallel make races`"
6978         section in the Yocto Project Development Tasks Manual.
6979
6980      For single socket systems (i.e. one CPU), you should not have to
6981      override this variable to gain optimal parallelism during builds.
6982      However, if you have very large systems that employ multiple physical
6983      CPUs, you might want to make sure the :term:`PARALLEL_MAKE` variable is
6984      not set higher than "-j 20".
6985
6986      For more information on speeding up builds, see the
6987      ":ref:`dev-manual/speeding-up-build:speeding up a build`"
6988      section in the Yocto Project Development Tasks Manual.
6989
6990   :term:`PARALLEL_MAKEINST`
6991      Extra options passed to the build tool install command
6992      (``make install``, ``ninja install`` or more specific ones)
6993      during the :ref:`ref-tasks-install` task in order to specify
6994      parallel installation. This variable defaults to the value of
6995      :term:`PARALLEL_MAKE`.
6996
6997      .. note::
6998
6999         For software compiled by ``make``, in order for :term:`PARALLEL_MAKEINST`
7000         to be effective, ``make`` must be called with
7001         ``${``\ :term:`EXTRA_OEMAKE`\ ``}``. An easy
7002         way to ensure this is to use the ``oe_runmake`` function.
7003
7004         If the software being built experiences dependency issues during
7005         the :ref:`ref-tasks-install` task that result in race conditions, you can
7006         clear the :term:`PARALLEL_MAKEINST` variable within the recipe as a
7007         workaround. For information on addressing race conditions, see the
7008         ":ref:`dev-manual/debugging:debugging parallel make races`"
7009         section in the Yocto Project Development Tasks Manual.
7010
7011   :term:`PATCHRESOLVE`
7012      Determines the action to take when a patch fails. You can set this
7013      variable to one of two values: "noop" and "user".
7014
7015      The default value of "noop" causes the build to simply fail when the
7016      OpenEmbedded build system cannot successfully apply a patch. Setting
7017      the value to "user" causes the build system to launch a shell and
7018      places you in the right location so that you can manually resolve the
7019      conflicts.
7020
7021      Set this variable in your ``local.conf`` file.
7022
7023   :term:`PATCHTOOL`
7024      Specifies the utility used to apply patches for a recipe during the
7025      :ref:`ref-tasks-patch` task. You can specify one of
7026      three utilities: "patch", "quilt", or "git". The default utility used
7027      is "quilt" except for the quilt-native recipe itself. Because the
7028      quilt tool is not available at the time quilt-native is being
7029      patched, it uses "patch".
7030
7031      If you wish to use an alternative patching tool, set the variable in
7032      the recipe using one of the following::
7033
7034         PATCHTOOL = "patch"
7035         PATCHTOOL = "quilt"
7036         PATCHTOOL = "git"
7037
7038   :term:`PE`
7039      The epoch of the recipe. By default, this variable is unset. The
7040      variable is used to make upgrades possible when the versioning scheme
7041      changes in some backwards incompatible way.
7042
7043      :term:`PE` is the default value of the :term:`PKGE` variable.
7044
7045   :term:`PEP517_WHEEL_PATH`
7046      When used by recipes that inherit the :ref:`ref-classes-python_pep517`
7047      class, denotes the path to ``dist/`` (short for distribution) where the
7048      binary archive ``wheel`` is built.
7049
7050   :term:`PERSISTENT_DIR`
7051      See :term:`bitbake:PERSISTENT_DIR` in the BitBake manual.
7052
7053   :term:`PF`
7054      Specifies the recipe or package name and includes all version and
7055      revision numbers (i.e. ``glibc-2.13-r20+svnr15508/`` and
7056      ``bash-4.2-r1/``). This variable is comprised of the following:
7057      ${:term:`PN`}-${:term:`EXTENDPE`}${:term:`PV`}-${:term:`PR`}
7058
7059   :term:`PIXBUF_PACKAGES`
7060      When inheriting the :ref:`ref-classes-pixbufcache`
7061      class, this variable identifies packages that contain the pixbuf
7062      loaders used with ``gdk-pixbuf``. By default, the
7063      :ref:`ref-classes-pixbufcache` class assumes that
7064      the loaders are in the recipe's main package (i.e.
7065      ``${``\ :term:`PN`\ ``}``). Use this variable if the
7066      loaders you need are in a package other than that main package.
7067
7068   :term:`PKG`
7069      The name of the resulting package created by the OpenEmbedded build
7070      system.
7071
7072      .. note::
7073
7074         When using the :term:`PKG` variable, you must use a package name override.
7075
7076      For example, when the :ref:`ref-classes-debian` class renames the output
7077      package, it does so by setting ``PKG:packagename``.
7078
7079   :term:`PKG_CONFIG_PATH`
7080      The path to ``pkg-config`` files for the current build context.
7081      ``pkg-config`` reads this variable from the environment.
7082
7083   :term:`PKGD`
7084      Points to the destination directory for files to be packaged before
7085      they are split into individual packages. This directory defaults to
7086      the following::
7087
7088         ${WORKDIR}/package
7089
7090      Do not change this default.
7091
7092   :term:`PKGDATA_DIR`
7093      Points to a shared, global-state directory that holds data generated
7094      during the packaging process. During the packaging process, the
7095      :ref:`ref-tasks-packagedata` task packages data
7096      for each recipe and installs it into this temporary, shared area.
7097      This directory defaults to the following, which you should not
7098      change::
7099
7100         ${STAGING_DIR_HOST}/pkgdata
7101
7102      For examples of how this data is used, see the
7103      ":ref:`overview-manual/concepts:automatically added runtime dependencies`"
7104      section in the Yocto Project Overview and Concepts Manual and the
7105      ":ref:`dev-manual/debugging:viewing package information with ``oe-pkgdata-util```"
7106      section in the Yocto Project Development Tasks Manual. For more
7107      information on the shared, global-state directory, see
7108      :term:`STAGING_DIR_HOST`.
7109
7110   :term:`PKGDEST`
7111      Points to the parent directory for files to be packaged after they
7112      have been split into individual packages. This directory defaults to
7113      the following::
7114
7115         ${WORKDIR}/packages-split
7116
7117      Under this directory, the build system creates directories for each
7118      package specified in :term:`PACKAGES`. Do not change
7119      this default.
7120
7121   :term:`PKGDESTWORK`
7122      Points to a temporary work area where the
7123      :ref:`ref-tasks-package` task saves package metadata.
7124      The :term:`PKGDESTWORK` location defaults to the following::
7125
7126         ${WORKDIR}/pkgdata
7127
7128      Do not change this default.
7129
7130      The :ref:`ref-tasks-packagedata` task copies the
7131      package metadata from :term:`PKGDESTWORK` to
7132      :term:`PKGDATA_DIR` to make it available globally.
7133
7134   :term:`PKGE`
7135      The epoch of the package(s) built by the recipe. By default, :term:`PKGE`
7136      is set to :term:`PE`.
7137
7138   :term:`PKGR`
7139      The revision of the package(s) built by the recipe. By default,
7140      :term:`PKGR` is set to :term:`PR`.
7141
7142   :term:`PKGV`
7143      The version of the package(s) built by the recipe. By default,
7144      :term:`PKGV` is set to :term:`PV`.
7145
7146      If :term:`PV` contains the ``+`` sign, source control information will be
7147      included in :term:`PKGV` later in the packaging phase. For more
7148      information, see the :doc:`/dev-manual/external-scm` section of the Yocto
7149      Project Development Tasks Manual.
7150
7151      .. warning::
7152
7153         Since source control information is included in a late stage by the
7154         :ref:`ref-classes-package` class, it cannot be seen from the BitBake
7155         environment with ``bitbake -e`` or ``bitbake-getvar``. Instead, after
7156         the package is built, the version information can be retrieved with
7157         ``oe-pkgdata-util package-info <package name>``. See the
7158         :ref:`dev-manual/debugging:Viewing Package Information with
7159         ``oe-pkgdata-util``` section of the Yocto Project Development Tasks
7160         Manual for more information on ``oe-pkgdata-util``.
7161
7162
7163   :term:`PN`
7164      This variable can have two separate functions depending on the
7165      context: a recipe name or a resulting package name.
7166
7167      :term:`PN` refers to a recipe name in the context of a file used by the
7168      OpenEmbedded build system as input to create a package. The name is
7169      normally extracted from the recipe file name. For example, if the
7170      recipe is named ``expat_2.0.1.bb``, then the default value of :term:`PN`
7171      will be "expat".
7172
7173      The variable refers to a package name in the context of a file
7174      created or produced by the OpenEmbedded build system.
7175
7176      If applicable, the :term:`PN` variable also contains any special suffix
7177      or prefix. For example, using ``bash`` to build packages for the
7178      native machine, :term:`PN` is ``bash-native``. Using ``bash`` to build
7179      packages for the target and for Multilib, :term:`PN` would be ``bash``
7180      and ``lib64-bash``, respectively.
7181
7182   :term:`POPULATE_SDK_POST_HOST_COMMAND`
7183      Specifies a list of functions to call once the OpenEmbedded build
7184      system has created the host part of the SDK. You can specify
7185      functions separated by spaces::
7186
7187          POPULATE_SDK_POST_HOST_COMMAND += "function"
7188
7189      If you need to pass the SDK path to a command within a function, you
7190      can use ``${SDK_DIR}``, which points to the parent directory used by
7191      the OpenEmbedded build system when creating SDK output. See the
7192      :term:`SDK_DIR` variable for more information.
7193
7194   :term:`POPULATE_SDK_POST_TARGET_COMMAND`
7195      Specifies a list of functions to call once the OpenEmbedded build
7196      system has created the target part of the SDK. You can specify
7197      functions separated by spaces::
7198
7199         POPULATE_SDK_POST_TARGET_COMMAND += "function"
7200
7201      If you need to pass the SDK path to a command within a function, you
7202      can use ``${SDK_DIR}``, which points to the parent directory used by
7203      the OpenEmbedded build system when creating SDK output. See the
7204      :term:`SDK_DIR` variable for more information.
7205
7206   :term:`PR`
7207      The revision of the recipe. The default value for this variable is
7208      "r0". Subsequent revisions of the recipe conventionally have the
7209      values "r1", "r2", and so forth. When :term:`PV` increases,
7210      :term:`PR` is conventionally reset to "r0".
7211
7212      .. note::
7213
7214         The OpenEmbedded build system does not need the aid of :term:`PR`
7215         to know when to rebuild a recipe. The build system uses the task
7216         :ref:`input checksums <overview-manual/concepts:checksums (signatures)>` along with the
7217         :ref:`stamp <structure-build-tmp-stamps>` and
7218         :ref:`overview-manual/concepts:shared state cache`
7219         mechanisms.
7220
7221      The :term:`PR` variable primarily becomes significant when a package
7222      manager dynamically installs packages on an already built image. In
7223      this case, :term:`PR`, which is the default value of
7224      :term:`PKGR`, helps the package manager distinguish which
7225      package is the most recent one in cases where many packages have the
7226      same :term:`PV` (i.e. :term:`PKGV`). A component having many packages with
7227      the same :term:`PV` usually means that the packages all install the same
7228      upstream version, but with later (:term:`PR`) version packages including
7229      packaging fixes.
7230
7231      .. note::
7232
7233         :term:`PR` does not need to be increased for changes that do not change the
7234         package contents or metadata.
7235
7236      Because manually managing :term:`PR` can be cumbersome and error-prone,
7237      an automated solution exists. See the
7238      ":ref:`dev-manual/packages:working with a pr service`" section
7239      in the Yocto Project Development Tasks Manual for more information.
7240
7241   :term:`PREFERRED_PROVIDER`
7242      If multiple recipes provide the same item, this variable determines
7243      which recipe is preferred and thus provides the item (i.e. the
7244      preferred provider). You should always suffix this variable with the
7245      name of the provided item. And, you should define the variable using
7246      the preferred recipe's name (:term:`PN`). Here is a common
7247      example::
7248
7249         PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
7250
7251      In the previous example, multiple recipes are providing "virtual/kernel".
7252      The :term:`PREFERRED_PROVIDER` variable is set with the name (:term:`PN`) of
7253      the recipe you prefer to provide "virtual/kernel".
7254
7255      Here are more examples::
7256
7257         PREFERRED_PROVIDER_virtual/xserver = "xserver-xf86"
7258         PREFERRED_PROVIDER_virtual/libgl ?= "mesa"
7259
7260      For more
7261      information, see the ":ref:`dev-manual/new-recipe:using virtual providers`"
7262      section in the Yocto Project Development Tasks Manual.
7263
7264      .. note::
7265
7266         If you use a ``virtual/\*`` item with :term:`PREFERRED_PROVIDER`, then any
7267         recipe that :term:`PROVIDES` that item but is not selected (defined)
7268         by :term:`PREFERRED_PROVIDER` is prevented from building, which is usually
7269         desirable since this mechanism is designed to select between mutually
7270         exclusive alternative providers.
7271
7272   :term:`PREFERRED_PROVIDERS`
7273      See :term:`bitbake:PREFERRED_PROVIDERS` in the BitBake manual.
7274
7275   :term:`PREFERRED_RPROVIDER`
7276      The :term:`PREFERRED_RPROVIDER` variable works like the
7277      :term:`PREFERRED_PROVIDER` variable, but it denotes packages that provide a
7278      *runtime* component. Runtime providers are declared in recipes that set
7279      the :term:`RPROVIDES` variable for a specific package.
7280
7281      For example::
7282
7283         PREFERRED_RPROVIDER_virtual-x-terminal-emulator = "rxvt-unicode"
7284
7285      This statement sets the runtime provider for the X terminal emulator to
7286      ``rxvt-unicode``. The ``rxvt-unicode`` package is a runtime provider of
7287      this component because the ``rxvt-unicode`` recipe set the following
7288      :term:`RPROVIDES` definition for the ``rxvt-unicode`` (``${PN}``)
7289      package::
7290
7291         RPROVIDES:${PN} = "virtual-x-terminal-emulator"
7292
7293      For more information on virtual providers, see the
7294      ":ref:`dev-manual/new-recipe:using virtual providers`" section in the
7295      Yocto Project Development Tasks Manual.
7296
7297   :term:`PREFERRED_VERSION`
7298      If there are multiple versions of a recipe available, this variable
7299      determines which version should be given preference. You must always
7300      suffix the variable with the :term:`PN` you want to select (`python` in
7301      the first example below), and you should specify the :term:`PV`
7302      accordingly (`3.4.0` in the example).
7303
7304      The :term:`PREFERRED_VERSION` variable supports limited wildcard use
7305      through the "``%``" character. You can use the character to match any
7306      number of characters, which can be useful when specifying versions
7307      that contain long revision numbers that potentially change. Here are
7308      two examples::
7309
7310         PREFERRED_VERSION_python = "3.4.0"
7311         PREFERRED_VERSION_linux-yocto = "5.0%"
7312
7313      .. note::
7314
7315         The use of the "%" character is limited in that it only works at the end of the
7316         string. You cannot use the wildcard character in any other
7317         location of the string.
7318
7319      The specified version is matched against :term:`PV`, which does not
7320      necessarily match the version part of the recipe's filename.
7321
7322      If you want to select a recipe named ``foo_git.bb`` which has :term:`PV`
7323      set to ``1.2.3+git``, you can do so by setting ```PREFERRED_VERSION_foo``
7324      to ``1.2.3%`` (i.e. simply setting ``PREFERRED_VERSION_foo`` to ``git``
7325      will not work as the name of the recipe isn't used, but rather its
7326      :term:`PV` definition).
7327
7328      Sometimes the :term:`PREFERRED_VERSION` variable can be set by
7329      configuration files in a way that is hard to change. You can use
7330      :term:`OVERRIDES` to set a machine-specific
7331      override. Here is an example::
7332
7333         PREFERRED_VERSION_linux-yocto:qemux86 = "5.0%"
7334
7335      Although not recommended, worst case, you can also use the
7336      "forcevariable" override, which is the strongest override possible.
7337      Here is an example::
7338
7339         PREFERRED_VERSION_linux-yocto:forcevariable = "5.0%"
7340
7341      .. note::
7342
7343         The ``:forcevariable`` override is not handled specially. This override
7344         only works because the default value of :term:`OVERRIDES` includes "forcevariable".
7345
7346      If a recipe with the specified version is not available, a warning
7347      message will be shown. See :term:`REQUIRED_VERSION` if you want this
7348      to be an error instead.
7349
7350   :term:`PREMIRRORS`
7351      Specifies additional paths from which the OpenEmbedded build system
7352      gets source code. When the build system searches for source code, it
7353      first tries the local download directory. If that location fails, the
7354      build system tries locations defined by :term:`PREMIRRORS`, the upstream
7355      source, and then locations specified by
7356      :term:`MIRRORS` in that order.
7357
7358      The default value for :term:`PREMIRRORS` is defined in the
7359      ``meta/classes-global/mirrors.bbclass`` file in the core metadata layer.
7360
7361      Typically, you could add a specific server for the build system to
7362      attempt before any others by adding something like the following to
7363      the ``local.conf`` configuration file in the
7364      :term:`Build Directory`::
7365
7366         PREMIRRORS:prepend = "\
7367             git://.*/.* &YOCTO_DL_URL;/mirror/sources/ \
7368             ftp://.*/.* &YOCTO_DL_URL;/mirror/sources/ \
7369             http://.*/.* &YOCTO_DL_URL;/mirror/sources/ \
7370             https://.*/.* &YOCTO_DL_URL;/mirror/sources/"
7371
7372      These changes cause the
7373      build system to intercept Git, FTP, HTTP, and HTTPS requests and
7374      direct them to the ``http://`` sources mirror. You can use
7375      ``file://`` URLs to point to local directories or network shares as
7376      well.
7377
7378   :term:`PRIORITY`
7379      Indicates the importance of a package.
7380
7381      :term:`PRIORITY` is considered to be part of the distribution policy
7382      because the importance of any given recipe depends on the purpose for
7383      which the distribution is being produced. Thus, :term:`PRIORITY` is not
7384      normally set within recipes.
7385
7386      You can set :term:`PRIORITY` to "required", "standard", "extra", and
7387      "optional", which is the default.
7388
7389   :term:`PRIVATE_LIBS`
7390      Specifies libraries installed within a recipe that should be ignored
7391      by the OpenEmbedded build system's shared library resolver. This
7392      variable is typically used when software being built by a recipe has
7393      its own private versions of a library normally provided by another
7394      recipe. In this case, you would not want the package containing the
7395      private libraries to be set as a dependency on other unrelated
7396      packages that should instead depend on the package providing the
7397      standard version of the library.
7398
7399      Libraries specified in this variable should be specified by their
7400      file name. For example, from the Firefox recipe in meta-browser::
7401
7402         PRIVATE_LIBS = "libmozjs.so \
7403                         libxpcom.so \
7404                         libnspr4.so \
7405                         libxul.so \
7406                         libmozalloc.so \
7407                         libplc4.so \
7408                         libplds4.so"
7409
7410      For more information, see the
7411      ":ref:`overview-manual/concepts:automatically added runtime dependencies`"
7412      section in the Yocto Project Overview and Concepts Manual.
7413
7414   :term:`PROVIDES`
7415      A list of aliases by which a particular recipe can be known. By
7416      default, a recipe's own :term:`PN` is implicitly already in its
7417      :term:`PROVIDES` list and therefore does not need to mention that it
7418      provides itself. If a recipe uses :term:`PROVIDES`, the additional
7419      aliases are synonyms for the recipe and can be useful for satisfying
7420      dependencies of other recipes during the build as specified by
7421      :term:`DEPENDS`.
7422
7423      Consider the following example :term:`PROVIDES` statement from the recipe
7424      file ``eudev_3.2.9.bb``::
7425
7426         PROVIDES += "udev"
7427
7428      The :term:`PROVIDES` statement
7429      results in the "eudev" recipe also being available as simply "udev".
7430
7431      .. note::
7432
7433         A recipe's own recipe name (:term:`PN`) is always implicitly prepended
7434         to :term:`PROVIDES`, so while using "+=" in the above example may not be
7435         strictly necessary it is recommended to avoid confusion.
7436
7437      In addition to providing recipes under alternate names, the
7438      :term:`PROVIDES` mechanism is also used to implement virtual targets. A
7439      virtual target is a name that corresponds to some particular
7440      functionality (e.g. a Linux kernel). Recipes that provide the
7441      functionality in question list the virtual target in :term:`PROVIDES`.
7442      Recipes that depend on the functionality in question can include the
7443      virtual target in :term:`DEPENDS` to leave the choice of provider open.
7444
7445      Conventionally, virtual targets have names on the form
7446      "virtual/function" (e.g. "virtual/kernel"). The slash is simply part
7447      of the name and has no syntactical significance.
7448
7449      The :term:`PREFERRED_PROVIDER` variable is
7450      used to select which particular recipe provides a virtual target.
7451
7452      .. note::
7453
7454         A corresponding mechanism for virtual runtime dependencies (packages)
7455         exists. However, the mechanism does not depend on any special
7456         functionality beyond ordinary variable assignments. For example,
7457         :term:`VIRTUAL-RUNTIME_dev_manager <VIRTUAL-RUNTIME>` refers to the
7458         package of the component that manages the ``/dev`` directory.
7459
7460         Setting the "preferred provider" for runtime dependencies is as
7461         simple as using the following assignment in a configuration file::
7462
7463                 VIRTUAL-RUNTIME_dev_manager = "udev"
7464
7465
7466   :term:`PRSERV_HOST`
7467      The network based :term:`PR` service host and port.
7468
7469      The ``conf/templates/default/local.conf.sample.extended`` configuration
7470      file in the :term:`Source Directory` shows how the :term:`PRSERV_HOST`
7471      variable is set::
7472
7473         PRSERV_HOST = "localhost:0"
7474
7475      You must
7476      set the variable if you want to automatically start a local :ref:`PR
7477      service <dev-manual/packages:working with a pr service>`. You can
7478      set :term:`PRSERV_HOST` to other values to use a remote PR service.
7479
7480   :term:`PRSERV_UPSTREAM`
7481      This variable can be used to specify an upstream PR server for the local
7482      PR server to connect to, in the form of ``host:port``.
7483
7484      This makes it possible to implement local fixes to an upstream package.
7485
7486   :term:`PSEUDO_IGNORE_PATHS`
7487      A comma-separated (without spaces) list of path prefixes that should be ignored
7488      by pseudo when monitoring and recording file operations, in order to avoid
7489      problems with files being written to outside of the pseudo context and
7490      reduce pseudo's overhead. A path is ignored if it matches any prefix in the list
7491      and can include partial directory (or file) names.
7492
7493
7494   :term:`PTEST_ENABLED`
7495      Specifies whether or not :ref:`Package
7496      Test <test-manual/ptest:testing packages with ptest>` (ptest)
7497      functionality is enabled when building a recipe. You should not set
7498      this variable directly. Enabling and disabling building Package Tests
7499      at build time should be done by adding "ptest" to (or removing it
7500      from) :term:`DISTRO_FEATURES`.
7501
7502   :term:`PTEST_PYTEST_DIR`
7503      Within the :ref:`ref-classes-ptest-python-pytest` class, the
7504      :term:`PTEST_PYTEST_DIR` variable represents the path within the source
7505      tree of a Python package holding the unit tests to be run with the
7506      `pytest <https://docs.pytest.org>`__ framework. The default value for this
7507      variable is ``tests``.
7508
7509      For more information, see
7510      the :ref:`ref-classes-ptest-python-pytest` class documentation.
7511
7512   :term:`PV`
7513      The version of the recipe. The version is normally extracted from the
7514      recipe filename. For example, if the recipe is named
7515      ``expat_2.0.1.bb``, then the default value of :term:`PV` will be "2.0.1".
7516      :term:`PV` is generally not overridden within a recipe unless it is
7517      building an unstable (i.e. development) version from a source code
7518      repository (e.g. Git or Subversion).
7519
7520      :term:`PV` is the default value of the :term:`PKGV` variable.
7521
7522   :term:`PYPI_PACKAGE`
7523      When inheriting the :ref:`ref-classes-pypi` class, specifies the
7524      `PyPI <https://pypi.org/>`__ package name to be built. The default value
7525      is set based upon :term:`BPN` (stripping any "python-" or "python3-"
7526      prefix off if present), however for some packages it will need to be set
7527      explicitly if that will not match the package name (e.g. where the
7528      package name has a prefix, underscores, uppercase letters etc.)
7529
7530   :term:`PYPI_PACKAGE_EXT`
7531      When inheriting the :ref:`ref-classes-pypi` class, specifies the
7532      file extension to use when fetching a package from `PyPI
7533      <https://pypi.org/>`__. Default is ``tar.gz``.
7534
7535   :term:`PYPI_SRC_URI`
7536      When inheriting the :ref:`ref-classes-pypi` class, specifies the
7537      full `pythonhosted <https://files.pythonhosted.org/>`__ URI for
7538      fetching the package to be built. The default value is constructed
7539      based upon :term:`PYPI_PACKAGE`, :term:`PYPI_PACKAGE_EXT`, and
7540      :term:`PV`. Most recipes will not need to set this variable unless
7541      they are building an unstable (i.e. development) version.
7542
7543   :term:`PYTHON_ABI`
7544      When used by recipes that inherit the :ref:`ref-classes-setuptools3`
7545      class, denotes the Application Binary Interface (ABI) currently in use
7546      for Python. By default, the ABI is "m". You do not have to set this
7547      variable as the OpenEmbedded build system sets it for you.
7548
7549      The OpenEmbedded build system uses the ABI to construct directory
7550      names used when installing the Python headers and libraries in
7551      sysroot (e.g. ``.../python3.3m/...``).
7552
7553   :term:`QA_EMPTY_DIRS`
7554      Specifies a list of directories that are expected to be empty when
7555      packaging; if ``empty-dirs`` appears in :term:`ERROR_QA` or
7556      :term:`WARN_QA` these will be checked and an error or warning
7557      (respectively) will be produced.
7558
7559      The default :term:`QA_EMPTY_DIRS` value is set in
7560      :ref:`insane.bbclass <ref-classes-insane>`.
7561
7562   :term:`QA_EMPTY_DIRS_RECOMMENDATION`
7563      Specifies a recommendation for why a directory must be empty,
7564      which will be included in the error message if a specific directory
7565      is found to contain files. Must be overridden with the directory
7566      path to match on.
7567
7568      If no recommendation is specified for a directory, then the default
7569      "but it is expected to be empty" will be used.
7570
7571      An example message shows if files were present in '/dev'::
7572
7573         QA_EMPTY_DIRS_RECOMMENDATION:/dev = "but all devices must be created at runtime"
7574
7575   :term:`RANLIB`
7576      The minimal command and arguments to run :manpage:`ranlib <ranlib(1)>`.
7577
7578   :term:`RCONFLICTS`
7579      The list of packages that conflict with packages. Note that packages
7580      will not be installed if conflicting packages are not first removed.
7581
7582      Like all package-controlling variables, you must always use them in
7583      conjunction with a package name override. Here is an example::
7584
7585         RCONFLICTS:${PN} = "another_conflicting_package_name"
7586
7587      BitBake, which the OpenEmbedded build system uses, supports
7588      specifying versioned dependencies. Although the syntax varies
7589      depending on the packaging format, BitBake hides these differences
7590      from you. Here is the general syntax to specify versions with the
7591      :term:`RCONFLICTS` variable::
7592
7593         RCONFLICTS:${PN} = "package (operator version)"
7594
7595      For ``operator``, you can specify the following:
7596
7597      - =
7598      - <
7599      - >
7600      - <=
7601      - >=
7602
7603      For example, the following sets up a dependency on version 1.2 or
7604      greater of the package ``foo``::
7605
7606         RCONFLICTS:${PN} = "foo (>= 1.2)"
7607
7608   :term:`RDEPENDS`
7609      Lists runtime dependencies of a package. These dependencies are other
7610      packages that must be installed in order for the package to function
7611      correctly. As an example, the following assignment declares that the
7612      package ``foo`` needs the packages ``bar`` and ``baz`` to be
7613      installed::
7614
7615         RDEPENDS:foo = "bar baz"
7616
7617      The most common types of package
7618      runtime dependencies are automatically detected and added. Therefore,
7619      most recipes do not need to set :term:`RDEPENDS`. For more information,
7620      see the
7621      ":ref:`overview-manual/concepts:automatically added runtime dependencies`"
7622      section in the Yocto Project Overview and Concepts Manual.
7623
7624      The practical effect of the above :term:`RDEPENDS` assignment is that
7625      ``bar`` and ``baz`` will be declared as dependencies inside the
7626      package ``foo`` when it is written out by one of the
7627      :ref:`do_package_write_* <ref-tasks-package_write_deb>` tasks.
7628      Exactly how this is done depends on which package format is used,
7629      which is determined by
7630      :term:`PACKAGE_CLASSES`. When the
7631      corresponding package manager installs the package, it will know to
7632      also install the packages on which it depends.
7633
7634      To ensure that the packages ``bar`` and ``baz`` get built, the
7635      previous :term:`RDEPENDS` assignment also causes a task dependency to be
7636      added. This dependency is from the recipe's
7637      :ref:`ref-tasks-build` (not to be confused with
7638      :ref:`ref-tasks-compile`) task to the
7639      :ref:`do_package_write_* <ref-tasks-package_write_deb>` task of the recipes that build ``bar`` and
7640      ``baz``.
7641
7642      The names of the packages you list within :term:`RDEPENDS` must be the
7643      names of other packages --- they cannot be recipe names. Although
7644      package names and recipe names usually match, the important point
7645      here is that you are providing package names within the :term:`RDEPENDS`
7646      variable. For an example of the default list of packages created from
7647      a recipe, see the :term:`PACKAGES` variable.
7648
7649      Because the :term:`RDEPENDS` variable applies to packages being built,
7650      you should always use the variable in a form with an attached package
7651      name (remember that a single recipe can build multiple packages). For
7652      example, suppose you are building a development package that depends
7653      on the ``perl`` package. In this case, you would use the following
7654      :term:`RDEPENDS` statement::
7655
7656         RDEPENDS:${PN}-dev += "perl"
7657
7658      In the example,
7659      the development package depends on the ``perl`` package. Thus, the
7660      :term:`RDEPENDS` variable has the ``${PN}-dev`` package name as part of
7661      the variable.
7662
7663      .. note::
7664
7665         ``RDEPENDS:${PN}-dev`` includes ``${``\ :term:`PN`\ ``}``
7666         by default. This default is set in the BitBake configuration file
7667         (``meta/conf/bitbake.conf``). Be careful not to accidentally remove
7668         ``${PN}`` when modifying ``RDEPENDS:${PN}-dev``. Use the "+=" operator
7669         rather than the "=" operator.
7670
7671      The package names you use with :term:`RDEPENDS` must appear as they would
7672      in the :term:`PACKAGES` variable. The :term:`PKG` variable
7673      allows a different name to be used for the final package (e.g. the
7674      :ref:`ref-classes-debian` class uses this to rename
7675      packages), but this final package name cannot be used with
7676      :term:`RDEPENDS`, which makes sense as :term:`RDEPENDS` is meant to be
7677      independent of the package format used.
7678
7679      BitBake, which the OpenEmbedded build system uses, supports
7680      specifying versioned dependencies. Although the syntax varies
7681      depending on the packaging format, BitBake hides these differences
7682      from you. Here is the general syntax to specify versions with the
7683      :term:`RDEPENDS` variable::
7684
7685         RDEPENDS:${PN} = "package (operator version)"
7686
7687      For ``operator``, you can specify the following:
7688
7689      - =
7690      - <
7691      - >
7692      - <=
7693      - >=
7694
7695      For version, provide the version number.
7696
7697      .. note::
7698
7699         You can use :term:`EXTENDPKGV` to provide a full package version
7700         specification.
7701
7702      For example, the following sets up a dependency on version 1.2 or
7703      greater of the package ``foo``::
7704
7705         RDEPENDS:${PN} = "foo (>= 1.2)"
7706
7707      For information on build-time dependencies, see the :term:`DEPENDS`
7708      variable. You can also see the
7709      ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:tasks`" and
7710      ":ref:`bitbake-user-manual/bitbake-user-manual-execution:dependencies`" sections in the
7711      BitBake User Manual for additional information on tasks and dependencies.
7712
7713   :term:`READELF`
7714      The minimal command and arguments to run :manpage:`readelf <readelf(1)>`.
7715
7716   :term:`RECIPE_MAINTAINER`
7717      This variable defines the name and e-mail address of the maintainer of a
7718      recipe. Such information can be used by human users submitted changes,
7719      and by automated tools to send notifications, for example about
7720      vulnerabilities or source updates.
7721
7722      The variable can be defined in a global distribution :oe_git:`maintainers.inc
7723      </openembedded-core/tree/meta/conf/distro/include/maintainers.inc>` file::
7724
7725          meta/conf/distro/include/maintainers.inc:RECIPE_MAINTAINER:pn-sysvinit = "Ross Burton <ross.burton@arm.com>"
7726
7727      It can also be directly defined in a recipe,
7728      for example in the ``libgpiod`` one::
7729
7730          RECIPE_MAINTAINER = "Bartosz Golaszewski <brgl@bgdev.pl>"
7731
7732   :term:`RECIPE_NO_UPDATE_REASON`
7733      If a recipe should not be replaced by a more recent upstream version,
7734      putting the reason why in this variable in a recipe allows
7735      ``devtool check-upgrade-status`` command to display it, as explained
7736      in the ":ref:`ref-manual/devtool-reference:checking on the upgrade status of a recipe`"
7737      section.
7738
7739   :term:`RECIPE_SYSROOT`
7740      This variable points to the directory that holds all files populated from
7741      recipes specified in :term:`DEPENDS`. As the name indicates,
7742      think of this variable as a custom root (``/``) for the recipe that will be
7743      used by the compiler in order to find headers and other files needed to complete
7744      its job.
7745
7746      This variable is related to :term:`STAGING_DIR_HOST` or :term:`STAGING_DIR_TARGET`
7747      according to the type of the recipe and the build target.
7748
7749      To better understand this variable, consider the following examples:
7750
7751      -  For ``#include <header.h>``, ``header.h`` should be in ``"${RECIPE_SYSROOT}/usr/include"``
7752
7753      -  For ``-lexample``, ``libexample.so`` should be in ``"${RECIPE_SYSROOT}/lib"``
7754         or other library sysroot directories.
7755
7756      The default value is ``"${WORKDIR}/recipe-sysroot"``.
7757      Do not modify it.
7758
7759   :term:`RECIPE_SYSROOT_NATIVE`
7760      This is similar to :term:`RECIPE_SYSROOT` but the populated files are from
7761      ``-native`` recipes. This allows a recipe built for the target machine to
7762      use ``native`` tools.
7763
7764      This variable is related to :term:`STAGING_DIR_NATIVE`.
7765
7766      The default value is ``"${WORKDIR}/recipe-sysroot-native"``.
7767      Do not modify it.
7768
7769   :term:`RECIPE_UPGRADE_EXTRA_TASKS`
7770      When upgrading a recipe with ``devtool upgrade``, the variable
7771      :term:`RECIPE_UPGRADE_EXTRA_TASKS` specifies a space-delimited list of
7772      tasks to run after the new sources have been unpacked.
7773
7774      For some recipes, after the new source has been unpacked, additional tasks
7775      may need to be run during an upgrade. A good example of this is recipes
7776      which inherit :ref:`ref-classes-cargo-update-recipe-crates`, where the
7777      `do_update_crates` task needs to be run whenever Cargo.toml/Cargo.lock have
7778      changed in the source.
7779
7780   :term:`REPODIR`
7781      See :term:`bitbake:REPODIR` in the BitBake manual.
7782
7783   :term:`REQUIRED_DISTRO_FEATURES`
7784      When inheriting the :ref:`ref-classes-features_check`
7785      class, this variable identifies distribution features that must exist
7786      in the current configuration in order for the OpenEmbedded build
7787      system to build the recipe. In other words, if the
7788      :term:`REQUIRED_DISTRO_FEATURES` variable lists a feature that does not
7789      appear in :term:`DISTRO_FEATURES` within the current configuration, then
7790      the recipe will be skipped, and if the build system attempts to build
7791      the recipe then an error will be triggered.
7792
7793   :term:`REQUIRED_VERSION`
7794      If there are multiple versions of a recipe available, this variable
7795      determines which version should be given preference.
7796      :term:`REQUIRED_VERSION` works in exactly the same manner as
7797      :term:`PREFERRED_VERSION`, except that if the specified version is not
7798      available then an error message is shown and the build fails
7799      immediately.
7800
7801      If both :term:`REQUIRED_VERSION` and :term:`PREFERRED_VERSION` are set
7802      for the same recipe, the :term:`REQUIRED_VERSION` value applies.
7803
7804   :term:`RETAIN_DIRS_ALWAYS`
7805      When inheriting the :ref:`ref-classes-retain` class, this variable holds
7806      space-separated recipe-specific directories to always save in a tarball
7807      whether the recipe build has failed or not.
7808
7809   :term:`RETAIN_DIRS_FAILURE`
7810      When inheriting the :ref:`ref-classes-retain` class, this variable holds
7811      space-separated recipe-specific directories to save in a tarball on
7812      failure of the recipe's build.
7813
7814   :term:`RETAIN_DIRS_GLOBAL_ALWAYS`
7815      When inheriting the :ref:`ref-classes-retain` class, this variable holds
7816      space-separated directories that are not specific to a recipe to save in a
7817      tarball whether the build has failed or not.
7818
7819   :term:`RETAIN_DIRS_GLOBAL_FAILURE`
7820      When inheriting the :ref:`ref-classes-retain` class, this variable holds
7821      space-separated directories that are not specific to a recipe to save in a
7822      tarball on build failure.
7823
7824   :term:`RETAIN_ENABLED`
7825      Disables the creation of a tarball of the work directory done by the
7826      :ref:`ref-classes-retain` class. Can be set to specific recipes to disable
7827      the class when the class was inherited globally with :term:`INHERIT`.
7828
7829   :term:`RETAIN_OUTDIR`
7830      When inheriting the :ref:`ref-classes-retain` class, this variable
7831      specifies the directory where to save the tarball of the work directory.
7832      The default directory is ``${TMPDIR}/retain``.
7833
7834   :term:`RETAIN_TARBALL_SUFFIX`
7835      When inheriting the :ref:`ref-classes-retain` class, this variable
7836      specifies the suffix of the tarball of the work directory. The default
7837      suffix is ``${DATETIME}.tar.gz``.
7838
7839   :term:`RM_WORK_EXCLUDE`
7840      With :ref:`ref-classes-rm-work` enabled, this variable
7841      specifies a list of recipes whose work directories should not be removed.
7842      See the ":ref:`ref-classes-rm-work`" section for more details.
7843
7844   :term:`ROOT_HOME`
7845      Defines the root home directory. By default, this directory is set as
7846      follows in the BitBake configuration file::
7847
7848         ROOT_HOME ??= "/home/root"
7849
7850      .. note::
7851
7852         This default value is likely used because some embedded solutions
7853         prefer to have a read-only root filesystem and prefer to keep
7854         writeable data in one place.
7855
7856      When setting ``INIT_MANAGER = systemd``, the default will be set to::
7857
7858         ROOT_HOME ?= "/root"
7859
7860      You can also override the default by setting the variable in your distro
7861      configuration or in the ``local.conf`` file.
7862
7863   :term:`ROOTFS`
7864      Indicates a filesystem image to include as the root filesystem.
7865
7866      The :term:`ROOTFS` variable is an optional variable used with the
7867      :ref:`ref-classes-image-live` class.
7868
7869   :term:`ROOTFS_POSTINSTALL_COMMAND`
7870      Specifies a list of functions to call after the OpenEmbedded build
7871      system has installed packages. You can specify functions separated by
7872      spaces::
7873
7874         ROOTFS_POSTINSTALL_COMMAND += "function"
7875
7876      If you need to pass the root filesystem path to a command within a
7877      function, you can use ``${IMAGE_ROOTFS}``, which points to the
7878      directory that becomes the root filesystem image. See the
7879      :term:`IMAGE_ROOTFS` variable for more
7880      information.
7881
7882   :term:`ROOTFS_POSTPROCESS_COMMAND`
7883      Specifies a list of functions to call once the OpenEmbedded build
7884      system has created the root filesystem. You can specify functions
7885      separated by spaces::
7886
7887         ROOTFS_POSTPROCESS_COMMAND += "function"
7888
7889      If you need to pass the root filesystem path to a command within a
7890      function, you can use ``${IMAGE_ROOTFS}``, which points to the
7891      directory that becomes the root filesystem image. See the
7892      :term:`IMAGE_ROOTFS` variable for more
7893      information.
7894
7895   :term:`ROOTFS_POSTUNINSTALL_COMMAND`
7896      Specifies a list of functions to call after the OpenEmbedded build
7897      system has removed unnecessary packages. When runtime package
7898      management is disabled in the image, several packages are removed
7899      including ``base-passwd``, ``shadow``, and ``update-alternatives``.
7900      You can specify functions separated by spaces::
7901
7902         ROOTFS_POSTUNINSTALL_COMMAND += "function"
7903
7904      If you need to pass the root filesystem path to a command within a
7905      function, you can use ``${IMAGE_ROOTFS}``, which points to the
7906      directory that becomes the root filesystem image. See the
7907      :term:`IMAGE_ROOTFS` variable for more
7908      information.
7909
7910   :term:`ROOTFS_PREPROCESS_COMMAND`
7911      Specifies a list of functions to call before the OpenEmbedded build
7912      system has created the root filesystem. You can specify functions
7913      separated by spaces::
7914
7915         ROOTFS_PREPROCESS_COMMAND += "function"
7916
7917      If you need to pass the root filesystem path to a command within a
7918      function, you can use ``${IMAGE_ROOTFS}``, which points to the
7919      directory that becomes the root filesystem image. See the
7920      :term:`IMAGE_ROOTFS` variable for more
7921      information.
7922
7923   :term:`RPMBUILD_EXTRA_PARAMS`
7924      Specifies extra user-defined parameters for the ``rpmbuild`` command.
7925
7926   :term:`RPROVIDES`
7927      A list of package name aliases that a package also provides. These
7928      aliases are useful for satisfying runtime dependencies of other
7929      packages both during the build and on the target (as specified by
7930      :term:`RDEPENDS`).
7931
7932      .. note::
7933
7934         A package's own name is implicitly already in its :term:`RPROVIDES` list.
7935
7936      As with all package-controlling variables, you must always use the
7937      variable in conjunction with a package name override. Here is an
7938      example::
7939
7940         RPROVIDES:${PN} = "widget-abi-2"
7941
7942   :term:`RRECOMMENDS`
7943      A list of packages that extends the usability of a package being
7944      built. The package being built does not depend on this list of
7945      packages in order to successfully build, but rather uses them for
7946      extended usability. To specify runtime dependencies for packages, see
7947      the :term:`RDEPENDS` variable.
7948
7949      The package manager will automatically install the :term:`RRECOMMENDS`
7950      list of packages when installing the built package. However, you can
7951      prevent listed packages from being installed by using the
7952      :term:`BAD_RECOMMENDATIONS`,
7953      :term:`NO_RECOMMENDATIONS`, and
7954      :term:`PACKAGE_EXCLUDE` variables.
7955
7956      Packages specified in :term:`RRECOMMENDS` need not actually be produced.
7957      However, there must be a recipe providing each package, either
7958      through the :term:`PACKAGES` or
7959      :term:`PACKAGES_DYNAMIC` variables or the
7960      :term:`RPROVIDES` variable, or an error will occur
7961      during the build. If such a recipe does exist and the package is not
7962      produced, the build continues without error.
7963
7964      Because the :term:`RRECOMMENDS` variable applies to packages being built,
7965      you should always attach an override to the variable to specify the
7966      particular package whose usability is being extended. For example,
7967      suppose you are building a development package that is extended to
7968      support wireless functionality. In this case, you would use the
7969      following::
7970
7971         RRECOMMENDS:${PN}-dev += "wireless_package_name"
7972
7973      In the
7974      example, the package name (``${PN}-dev``) must appear as it would in
7975      the :term:`PACKAGES` namespace before any renaming of the output package
7976      by classes such as :ref:`ref-classes-debian`.
7977
7978      BitBake, which the OpenEmbedded build system uses, supports
7979      specifying versioned recommends. Although the syntax varies depending
7980      on the packaging format, BitBake hides these differences from you.
7981      Here is the general syntax to specify versions with the
7982      :term:`RRECOMMENDS` variable::
7983
7984         RRECOMMENDS:${PN} = "package (operator version)"
7985
7986      For ``operator``, you can specify the following:
7987
7988      - =
7989      - <
7990      - >
7991      - <=
7992      - >=
7993
7994      For example, the following sets up a recommend on version 1.2 or
7995      greater of the package ``foo``::
7996
7997         RRECOMMENDS:${PN} = "foo (>= 1.2)"
7998
7999   :term:`RREPLACES`
8000      A list of packages replaced by a package. The package manager uses
8001      this variable to determine which package should be installed to
8002      replace other package(s) during an upgrade. In order to also have the
8003      other package(s) removed at the same time, you must add the name of
8004      the other package to the :term:`RCONFLICTS` variable.
8005
8006      As with all package-controlling variables, you must use this variable
8007      in conjunction with a package name override. Here is an example::
8008
8009         RREPLACES:${PN} = "other_package_being_replaced"
8010
8011      BitBake, which the OpenEmbedded build system uses, supports
8012      specifying versioned replacements. Although the syntax varies
8013      depending on the packaging format, BitBake hides these differences
8014      from you. Here is the general syntax to specify versions with the
8015      :term:`RREPLACES` variable::
8016
8017         RREPLACES:${PN} = "package (operator version)"
8018
8019      For ``operator``, you can specify the following:
8020
8021      - =
8022      - <
8023      - >
8024      - <=
8025      - >=
8026
8027      For example, the following sets up a replacement using version 1.2
8028      or greater of the package ``foo``::
8029
8030          RREPLACES:${PN} = "foo (>= 1.2)"
8031
8032   :term:`RSUGGESTS`
8033      A list of additional packages that you can suggest for installation
8034      by the package manager at the time a package is installed. Not all
8035      package managers support this functionality.
8036
8037      As with all package-controlling variables, you must always use this
8038      variable in conjunction with a package name override. Here is an
8039      example::
8040
8041         RSUGGESTS:${PN} = "useful_package another_package"
8042
8043   :term:`RUST_CHANNEL`
8044      Specifies which version of Rust to build - "stable", "beta" or "nightly".
8045      The default value is "stable". Set this at your own risk, as values other
8046      than "stable" are not guaranteed to work at a given time.
8047
8048   :term:`S`
8049      The location in the :term:`Build Directory` where
8050      unpacked recipe source code resides. By default, this directory is
8051      ``${``\ :term:`WORKDIR`\ ``}/${``\ :term:`BPN`\ ``}-${``\ :term:`PV`\ ``}``,
8052      where ``${BPN}`` is the base recipe name and ``${PV}`` is the recipe
8053      version. If the source tarball extracts the code to a directory named
8054      anything other than ``${BPN}-${PV}``, or if the source code is
8055      fetched from an SCM such as Git or Subversion, then you must set
8056      :term:`S` in the recipe so that the OpenEmbedded build system knows where
8057      to find the unpacked source.
8058
8059      As an example, assume a :term:`Source Directory`
8060      top-level folder named ``poky`` and a default :term:`Build Directory` at
8061      ``poky/build``. In this case, the work directory the build system
8062      uses to keep the unpacked recipe for ``db`` is the following::
8063
8064         poky/build/tmp/work/qemux86-poky-linux/db/5.1.19-r3/db-5.1.19
8065
8066      The unpacked source code resides in the ``db-5.1.19`` folder.
8067
8068      This next example assumes a Git repository. By default, Git
8069      repositories are cloned to ``${WORKDIR}/git`` during
8070      :ref:`ref-tasks-fetch`. Since this path is different
8071      from the default value of :term:`S`, you must set it specifically so the
8072      source can be located::
8073
8074         SRC_URI = "git://path/to/repo.git;branch=main"
8075         S = "${WORKDIR}/git"
8076
8077   :term:`SANITY_REQUIRED_UTILITIES`
8078      Specifies a list of command-line utilities that should be checked for
8079      during the initial sanity checking process when running BitBake. If
8080      any of the utilities are not installed on the build host, then
8081      BitBake immediately exits with an error.
8082
8083   :term:`SANITY_TESTED_DISTROS`
8084      A list of the host distribution identifiers that the build system has
8085      been tested against. Identifiers consist of the host distributor ID
8086      followed by the release, as reported by the ``lsb_release`` tool or
8087      as read from ``/etc/lsb-release``. Separate the list items with
8088      explicit newline characters (``\n``). If :term:`SANITY_TESTED_DISTROS` is
8089      not empty and the current value of
8090      :term:`NATIVELSBSTRING` does not appear in the
8091      list, then the build system reports a warning that indicates the
8092      current host distribution has not been tested as a build host.
8093
8094   :term:`SDK_ARCH`
8095      The target architecture for the SDK. Typically, you do not directly
8096      set this variable. Instead, use :term:`SDKMACHINE`.
8097
8098   :term:`SDK_ARCHIVE_TYPE`
8099      Specifies the type of archive to create for the SDK. Valid values:
8100
8101      - ``tar.xz`` (default)
8102      - ``tar.zst``
8103      - ``7zip``
8104      - ``zip``
8105
8106      Only one archive type can be specified.
8107
8108   :term:`SDK_AS_ARCH`
8109      Specifies architecture-specific assembler flags when building
8110      :ref:`ref-classes-nativesdk` recipes. By default, the value of
8111      :term:`SDK_AS_ARCH` equals the one of :term:`BUILD_AS_ARCH`.
8112
8113   :term:`SDK_BUILDINFO_FILE`
8114      When using the :ref:`ref-classes-image-buildinfo` class,
8115      specifies the file in the SDK to write the build information into. The
8116      default value is "``/buildinfo``".
8117
8118   :term:`SDK_CC_ARCH`
8119      Specifies the architecture-specific C compiler flags when building
8120      :ref:`ref-classes-nativesdk` recipes. By default, the value of
8121      :term:`SDK_CC_ARCH` equals the one of :term:`BUILD_CC_ARCH`.
8122
8123   :term:`SDK_CUSTOM_TEMPLATECONF`
8124      When building the extensible SDK, if :term:`SDK_CUSTOM_TEMPLATECONF` is set to
8125      "1" and a ``conf/templateconf.cfg`` file exists in the :term:`Build Directory`
8126      (:term:`TOPDIR`) then this will be copied into the SDK.
8127
8128   :term:`SDK_DEPLOY`
8129      The directory set up and used by the
8130      :ref:`populate_sdk_base <ref-classes-populate-sdk>` class to which the
8131      SDK is deployed. The :ref:`populate_sdk_base <ref-classes-populate-sdk>`
8132      class defines :term:`SDK_DEPLOY` as follows::
8133
8134         SDK_DEPLOY = "${TMPDIR}/deploy/sdk"
8135
8136   :term:`SDK_DIR`
8137      The parent directory used by the OpenEmbedded build system when
8138      creating SDK output. The
8139      :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class defines
8140      the variable as follows::
8141
8142         SDK_DIR = "${WORKDIR}/sdk"
8143
8144      .. note::
8145
8146         The :term:`SDK_DIR` directory is a temporary directory as it is part of
8147         :term:`WORKDIR`. The final output directory is :term:`SDK_DEPLOY`.
8148
8149   :term:`SDK_EXT_TYPE`
8150      Controls whether or not shared state artifacts are copied into the
8151      extensible SDK. The default value of "full" copies all of the
8152      required shared state artifacts into the extensible SDK. The value
8153      "minimal" leaves these artifacts out of the SDK.
8154
8155      .. note::
8156
8157         If you set the variable to "minimal", you need to ensure
8158         :term:`SSTATE_MIRRORS` is set in the SDK's configuration to enable the
8159         artifacts to be fetched as needed.
8160
8161   :term:`SDK_HOST_MANIFEST`
8162      The manifest file for the host part of the SDK. This file lists all
8163      the installed packages that make up the host part of the SDK. The
8164      file contains package information on a line-per-package basis as
8165      follows::
8166
8167         packagename packagearch version
8168
8169      The :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class
8170      defines the manifest file as follows::
8171
8172         SDK_HOST_MANIFEST = "${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.host.manifest"
8173
8174      The location is derived using the :term:`SDK_DEPLOY` and
8175      :term:`TOOLCHAIN_OUTPUTNAME` variables.
8176
8177   :term:`SDK_INCLUDE_PKGDATA`
8178      When set to "1", specifies to include the packagedata for all recipes
8179      in the "world" target in the extensible SDK. Including this data
8180      allows the ``devtool search`` command to find these recipes in search
8181      results, as well as allows the ``devtool add`` command to map
8182      dependencies more effectively.
8183
8184      .. note::
8185
8186         Enabling the :term:`SDK_INCLUDE_PKGDATA`
8187         variable significantly increases build time because all of world
8188         needs to be built. Enabling the variable also slightly increases
8189         the size of the extensible SDK.
8190
8191   :term:`SDK_INCLUDE_TOOLCHAIN`
8192      When set to "1", specifies to include the toolchain in the extensible
8193      SDK. Including the toolchain is useful particularly when
8194      :term:`SDK_EXT_TYPE` is set to "minimal" to keep
8195      the SDK reasonably small but you still want to provide a usable
8196      toolchain. For example, suppose you want to use the toolchain from an
8197      IDE or from other tools and you do not want to perform additional
8198      steps to install the toolchain.
8199
8200      The :term:`SDK_INCLUDE_TOOLCHAIN` variable defaults to "0" if
8201      :term:`SDK_EXT_TYPE` is set to "minimal", and defaults to "1" if
8202      :term:`SDK_EXT_TYPE` is set to "full".
8203
8204   :term:`SDK_LD_ARCH`
8205      Specifies architecture-specific linker flags when building
8206      :ref:`ref-classes-nativesdk` recipes. By default, the value of
8207      :term:`SDK_LD_ARCH` equals the one of :term:`BUILD_LD_ARCH`.
8208
8209   :term:`SDK_NAME`
8210      The base name for SDK output files. The default value (as set in
8211      ``meta-poky/conf/distro/poky.conf``) is derived from the
8212      :term:`DISTRO`,
8213      :term:`TCLIBC`,
8214      :term:`SDKMACHINE`,
8215      :term:`IMAGE_BASENAME`,
8216      :term:`TUNE_PKGARCH`, and
8217      :term:`MACHINE` variables::
8218
8219         SDK_NAME = "${DISTRO}-${TCLIBC}-${SDKMACHINE}-${IMAGE_BASENAME}-${TUNE_PKGARCH}-${MACHINE}"
8220
8221   :term:`SDK_OS`
8222      Specifies the operating system for which the SDK will be built. The
8223      default value is the value of :term:`BUILD_OS`.
8224
8225   :term:`SDK_OUTPUT`
8226      The location used by the OpenEmbedded build system when creating SDK
8227      output. The :ref:`populate_sdk_base <ref-classes-populate-sdk-*>`
8228      class defines the variable as follows::
8229
8230         SDK_DIR = "${WORKDIR}/sdk"
8231         SDK_OUTPUT = "${SDK_DIR}/image"
8232         SDK_DEPLOY = "${DEPLOY_DIR}/sdk"
8233
8234      .. note::
8235
8236         The :term:`SDK_OUTPUT` directory is a temporary directory as it is part of
8237         :term:`WORKDIR` by way of :term:`SDK_DIR`. The final output directory is
8238         :term:`SDK_DEPLOY`.
8239
8240   :term:`SDK_PACKAGE_ARCHS`
8241      Specifies a list of architectures compatible with the SDK machine.
8242      This variable is set automatically and should not normally be
8243      hand-edited. Entries are separated using spaces and listed in order
8244      of priority. The default value for :term:`SDK_PACKAGE_ARCHS` is "all any
8245      noarch ${SDK_ARCH}-${SDKPKGSUFFIX}".
8246
8247   :term:`SDK_POSTPROCESS_COMMAND`
8248      Specifies a list of functions to call once the OpenEmbedded build
8249      system creates the SDK. You can specify functions separated by
8250      spaces:
8251
8252         SDK_POSTPROCESS_COMMAND += "function"
8253
8254      If you need to pass an SDK path to a command within a function, you
8255      can use ``${SDK_DIR}``, which points to the parent directory used by
8256      the OpenEmbedded build system when creating SDK output. See the
8257      :term:`SDK_DIR` variable for more information.
8258
8259   :term:`SDK_PREFIX`
8260      The toolchain binary prefix used for
8261      :ref:`ref-classes-nativesdk` recipes. The
8262      OpenEmbedded build system uses the :term:`SDK_PREFIX` value to set the
8263      :term:`TARGET_PREFIX` when building
8264      ``nativesdk`` recipes. The default value is "${SDK_SYS}-".
8265
8266   :term:`SDK_RECRDEP_TASKS`
8267      A list of shared state tasks added to the extensible SDK. By default,
8268      the following tasks are added:
8269
8270      - :ref:`ref-tasks-populate_lic`
8271      - :ref:`ref-tasks-package_qa`
8272      - :ref:`ref-tasks-populate_sysroot`
8273      - :ref:`ref-tasks-deploy`
8274
8275      Despite the default value of "" for the
8276      :term:`SDK_RECRDEP_TASKS` variable, the above four tasks are always added
8277      to the SDK. To specify tasks beyond these four, you need to use the
8278      :term:`SDK_RECRDEP_TASKS` variable (e.g. you are defining additional
8279      tasks that are needed in order to build
8280      :term:`SDK_TARGETS`).
8281
8282   :term:`SDK_SYS`
8283      Specifies the system, including the architecture and the operating
8284      system, for which the SDK will be built.
8285
8286      The OpenEmbedded build system automatically sets this variable based
8287      on :term:`SDK_ARCH`,
8288      :term:`SDK_VENDOR`, and
8289      :term:`SDK_OS`. You do not need to set the :term:`SDK_SYS`
8290      variable yourself.
8291
8292   :term:`SDK_TARGET_MANIFEST`
8293      The manifest file for the target part of the SDK. This file lists all
8294      the installed packages that make up the target part of the SDK. The
8295      file contains package information on a line-per-package basis as
8296      follows::
8297
8298         packagename packagearch version
8299
8300      The :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class
8301      defines the manifest file as follows::
8302
8303         SDK_TARGET_MANIFEST = "${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.target.manifest"
8304
8305      The location is derived using the :term:`SDK_DEPLOY` and
8306      :term:`TOOLCHAIN_OUTPUTNAME` variables.
8307
8308   :term:`SDK_TARGETS`
8309      A list of targets to install from shared state as part of the
8310      standard or extensible SDK installation. The default value is "${PN}"
8311      (i.e. the image from which the SDK is built).
8312
8313      The :term:`SDK_TARGETS` variable is an internal variable and typically
8314      would not be changed.
8315
8316   :term:`SDK_TITLE`
8317      The title to be printed when running the SDK installer. By default,
8318      this title is based on the :term:`DISTRO_NAME` or
8319      :term:`DISTRO` variable and is set in the
8320      :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class as
8321      follows::
8322
8323         SDK_TITLE ??= "${@d.getVar('DISTRO_NAME') or d.getVar('DISTRO')} SDK"
8324
8325      For the default distribution "poky",
8326      :term:`SDK_TITLE` is set to "Poky (Yocto Project Reference Distro)".
8327
8328      For information on how to change this default title, see the
8329      ":ref:`sdk-manual/appendix-customizing:changing the extensible sdk installer title`"
8330      section in the Yocto Project Application Development and the
8331      Extensible Software Development Kit (eSDK) manual.
8332
8333   :term:`SDK_TOOLCHAIN_LANGS`
8334      Specifies programming languages to support in the SDK, as a
8335      space-separated list. Currently supported items are ``rust`` and ``go``.
8336
8337   :term:`SDK_UPDATE_URL`
8338      An optional URL for an update server for the extensible SDK. If set,
8339      the value is used as the default update server when running
8340      ``devtool sdk-update`` within the extensible SDK.
8341
8342   :term:`SDK_VENDOR`
8343      Specifies the name of the SDK vendor.
8344
8345   :term:`SDK_VERSION`
8346      Specifies the version of the SDK. The Poky distribution configuration file
8347      (``/meta-poky/conf/distro/poky.conf``) sets the default
8348      :term:`SDK_VERSION` as follows::
8349
8350         SDK_VERSION = "${@d.getVar('DISTRO_VERSION').replace('snapshot-${METADATA_REVISION}', 'snapshot')}"
8351
8352      For additional information, see the
8353      :term:`DISTRO_VERSION` and
8354      :term:`METADATA_REVISION` variables.
8355
8356   :term:`SDK_ZIP_OPTIONS`
8357      Specifies extra options to pass to the ``zip`` command when zipping the SDK
8358      (i.e. when :term:`SDK_ARCHIVE_TYPE` is set to "zip"). The default value is
8359      "-y".
8360
8361   :term:`SDKEXTPATH`
8362      The default installation directory for the Extensible SDK. By
8363      default, this directory is based on the :term:`DISTRO`
8364      variable and is set in the
8365      :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class as
8366      follows::
8367
8368         SDKEXTPATH ??= "~/${@d.getVar('DISTRO')}_sdk"
8369
8370      For the
8371      default distribution "poky", the :term:`SDKEXTPATH` is set to "poky_sdk".
8372
8373      For information on how to change this default directory, see the
8374      ":ref:`sdk-manual/appendix-customizing:changing the default sdk installation directory`"
8375      section in the Yocto Project Application Development and the
8376      Extensible Software Development Kit (eSDK) manual.
8377
8378   :term:`SDKIMAGE_FEATURES`
8379      Equivalent to :term:`IMAGE_FEATURES`. However, this variable applies to
8380      the SDK generated from an image using the following command::
8381
8382         $ bitbake -c populate_sdk imagename
8383
8384   :term:`SDKMACHINE`
8385      The machine for which the SDK is built. In other words, the SDK is built
8386      such that it runs on the target you specify with the :term:`SDKMACHINE`
8387      value. The value points to a corresponding ``.conf`` file under
8388      ``conf/machine-sdk/`` in the enabled layers, for example ``aarch64``,
8389      ``i586``, ``i686``, ``ppc64``, ``ppc64le``, and ``x86_64`` are
8390      :oe_git:`available in OpenEmbedded-Core </openembedded-core/tree/meta/conf/machine-sdk>`.
8391
8392      The variable defaults to :term:`BUILD_ARCH` so that SDKs are built for the
8393      architecture of the build machine.
8394
8395      .. note::
8396
8397         You cannot set the :term:`SDKMACHINE`
8398         variable in your distribution configuration file. If you do, the
8399         configuration will not take effect.
8400
8401   :term:`SDKPATH`
8402      Defines the path used to collect the SDK components and build the
8403      installer.
8404
8405   :term:`SDKPATHINSTALL`
8406      Defines the path offered to the user for installation of the SDK that
8407      is generated by the OpenEmbedded build system. The path appears as
8408      the default location for installing the SDK when you run the SDK's
8409      installation script. You can override the offered path when you run
8410      the script.
8411
8412   :term:`SDKTARGETSYSROOT`
8413      The full path to the sysroot used for cross-compilation within an SDK
8414      as it will be when installed into the default
8415      :term:`SDKPATHINSTALL`.
8416
8417   :term:`SECTION`
8418      The section in which packages should be categorized. Package
8419      management utilities can make use of this variable.
8420
8421   :term:`SELECTED_OPTIMIZATION`
8422      Specifies the optimization flags passed to the C compiler when
8423      building for the target. The flags are passed through the default
8424      value of the :term:`TARGET_CFLAGS` variable.
8425
8426      The :term:`SELECTED_OPTIMIZATION` variable takes the value of
8427      :term:`FULL_OPTIMIZATION` unless :term:`DEBUG_BUILD` = "1", in which
8428      case the value of :term:`DEBUG_OPTIMIZATION` is used.
8429
8430   :term:`SERIAL_CONSOLES`
8431      Defines a serial console (TTY) to enable using
8432      :wikipedia:`getty <Getty_(Unix)>`. Provide a value that specifies the
8433      baud rate followed by the TTY device name separated by a semicolon.
8434      Use spaces to separate multiple devices::
8435
8436         SERIAL_CONSOLES = "115200;ttyS0 115200;ttyS1"
8437
8438   :term:`SETUPTOOLS_BUILD_ARGS`
8439      When used by recipes that inherit the :ref:`ref-classes-setuptools3`
8440      class, this variable can be used to specify additional arguments to be
8441      passed to ``setup.py build`` in the ``setuptools3_do_compile()`` task.
8442
8443   :term:`SETUPTOOLS_SETUP_PATH`
8444      When used by recipes that inherit the :ref:`ref-classes-setuptools3`
8445      class, this variable should be used to specify the directory in which
8446      the ``setup.py`` file is located if it is not at the root of the source
8447      tree (as specified by :term:`S`). For example, in a recipe where the
8448      sources are fetched from a Git repository and ``setup.py`` is in a
8449      ``python/pythonmodule`` subdirectory, you would have this::
8450
8451         S = "${WORKDIR}/git"
8452         SETUPTOOLS_SETUP_PATH = "${S}/python/pythonmodule"
8453
8454   :term:`SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS`
8455      A list of recipe dependencies that should not be used to determine
8456      signatures of tasks from one recipe when they depend on tasks from
8457      another recipe. For example::
8458
8459         SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += "intone->mplayer2"
8460
8461      In the previous example, ``intone`` depends on ``mplayer2``.
8462
8463      You can use the special token ``"*"`` on the left-hand side of the
8464      dependency to match all recipes except the one on the right-hand
8465      side. Here is an example::
8466
8467         SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += "*->quilt-native"
8468
8469      In the previous example, all recipes except ``quilt-native`` ignore
8470      task signatures from the ``quilt-native`` recipe when determining
8471      their task signatures.
8472
8473      Use of this variable is one mechanism to remove dependencies that
8474      affect task signatures and thus force rebuilds when a recipe changes.
8475
8476      .. note::
8477
8478         If you add an inappropriate dependency for a recipe relationship,
8479         the software might break during runtime if the interface of the
8480         second recipe was changed after the first recipe had been built.
8481
8482   :term:`SIGGEN_EXCLUDERECIPES_ABISAFE`
8483      A list of recipes that are completely stable and will never change.
8484      The ABI for the recipes in the list are presented by output from the
8485      tasks run to build the recipe. Use of this variable is one way to
8486      remove dependencies from one recipe on another that affect task
8487      signatures and thus force rebuilds when the recipe changes.
8488
8489      .. note::
8490
8491         If you add an inappropriate variable to this list, the software
8492         might break at runtime if the interface of the recipe was changed
8493         after the other had been built.
8494
8495   :term:`SIGGEN_LOCKEDSIGS`
8496     The list of locked tasks, with the form::
8497
8498       SIGGEN_LOCKEDSIGS += "<package>:<task>:<signature>"
8499
8500     If ``<signature>`` exists for the specified ``<task>`` and ``<package>``
8501     in the sstate cache, BitBake will use the cached output instead of
8502     rebuilding the ``<task>``. If it does not exist, BitBake will build the
8503     ``<task>`` and the sstate cache will be used next time.
8504
8505     Example::
8506
8507       SIGGEN_LOCKEDSIGS += "bc:do_compile:09772aa4532512baf96d433484f27234d4b7c11dd9cda0d6f56fa1b7ce6f25f0"
8508
8509     You can obtain the signature of all the tasks for the recipe ``bc`` using::
8510
8511       bitbake -S none bc
8512
8513     Then you can look at files in ``build/tmp/stamps/<arch>/bc`` and look for
8514     files like: ``<PV>.do_compile.sigdata.09772aa4532512baf96d433484f27234d4b7c11dd9cda0d6f56fa1b7ce6f25f0``.
8515
8516     Alternatively, you can also use :doc:`bblock </dev-manual/bblock>` to
8517     generate this line for you.
8518
8519   :term:`SIGGEN_LOCKEDSIGS_TASKSIG_CHECK`
8520     Specifies the debug level of task signature check. 3 levels are supported:
8521
8522     * ``info``: displays a "Note" message to remind the user that a task is locked
8523       and the current signature matches the locked one.
8524     * ``warn``: displays a "Warning" message if a task is locked and the current
8525       signature does not match the locked one.
8526     * ``error``: same as warn but displays an "Error" message and aborts.
8527
8528   :term:`SIGGEN_LOCKEDSIGS_TYPES`
8529     Allowed overrides for :term:`SIGGEN_LOCKEDSIGS`. This is mainly used
8530     for architecture specific locks. A common value for
8531     :term:`SIGGEN_LOCKEDSIGS_TYPES` is ``${PACKAGE_ARCHS}``::
8532
8533       SIGGEN_LOCKEDSIGS_TYPES += "${PACKAGE_ARCHS}"
8534
8535       SIGGEN_LOCKEDSIGS_core2-64 += "bc:do_compile:09772aa4532512baf96d433484f27234d4b7c11dd9cda0d6f56fa1b7ce6f25f0"
8536       SIGGEN_LOCKEDSIGS_cortexa57 += "bc:do_compile:12178eb6d55ef602a8fe638e49862fd247e07b228f0f08967697b655bfe4bb61"
8537
8538     Here, the ``do_compile`` task from ``bc`` will be locked only for
8539     ``core2-64`` and ``cortexa57`` but not for other architectures such as
8540     ``mips32r2``.
8541
8542   :term:`SITEINFO_BITS`
8543      Specifies the number of bits for the target system CPU. The value
8544      should be either "32" or "64".
8545
8546   :term:`SITEINFO_ENDIANNESS`
8547      Specifies the endian byte order of the target system. The value
8548      should be either "le" for little-endian or "be" for big-endian.
8549
8550   :term:`SKIP_FILEDEPS`
8551      Enables removal of all files from the "Provides" section of an RPM
8552      package. Removal of these files is required for packages containing
8553      prebuilt binaries and libraries such as ``libstdc++`` and ``glibc``.
8554
8555      To enable file removal, set the variable to "1" in your
8556      ``conf/local.conf`` configuration file in your:
8557      :term:`Build Directory`::
8558
8559         SKIP_FILEDEPS = "1"
8560
8561   :term:`SKIP_RECIPE`
8562      Used to prevent the OpenEmbedded build system from building a given
8563      recipe. Specify the :term:`PN` value as a variable flag (``varflag``)
8564      and provide a reason, which will be reported when attempting to
8565      build the recipe.
8566
8567      To prevent a recipe from being built, use the :term:`SKIP_RECIPE`
8568      variable in your ``local.conf`` file or distribution configuration.
8569      Here is an example which prevents ``myrecipe`` from being built::
8570
8571         SKIP_RECIPE[myrecipe] = "Not supported by our organization."
8572
8573   :term:`SOC_FAMILY`
8574      A colon-separated list grouping together machines based upon the same
8575      family of SoC (System On Chip). You typically set this variable in a
8576      common ``.inc`` file that you include in the configuration files of all
8577      the machines.
8578
8579      .. note::
8580
8581         You must include ``conf/machine/include/soc-family.inc`` for this
8582         variable to appear in :term:`MACHINEOVERRIDES`.
8583
8584   :term:`SOLIBS`
8585      Defines the suffix for shared libraries used on the target platform.
8586      By default, this suffix is ".so.*" for all Linux-based systems and is
8587      defined in the ``meta/conf/bitbake.conf`` configuration file.
8588
8589      You will see this variable referenced in the default values of
8590      ``FILES:${PN}``.
8591
8592   :term:`SOLIBSDEV`
8593      Defines the suffix for the development symbolic link (symlink) for
8594      shared libraries on the target platform. By default, this suffix is
8595      ".so" for Linux-based systems and is defined in the
8596      ``meta/conf/bitbake.conf`` configuration file.
8597
8598      You will see this variable referenced in the default values of
8599      ``FILES:${PN}-dev``.
8600
8601   :term:`SOURCE_DATE_EPOCH`
8602      This defines a date expressed in number of seconds since
8603      the UNIX EPOCH (01 Jan 1970 00:00:00 UTC), which is used by
8604      multiple build systems to force a timestamp in built binaries.
8605      Many upstream projects already support this variable.
8606
8607      You will find more details in the `official specifications
8608      <https://reproducible-builds.org/specs/source-date-epoch/>`__.
8609
8610      A value for each recipe is computed from the sources by
8611      :oe_git:`meta/lib/oe/reproducible.py </openembedded-core/tree/meta/lib/oe/reproducible.py>`.
8612
8613      If a recipe wishes to override the default behavior, it should set its
8614      own :term:`SOURCE_DATE_EPOCH` value::
8615
8616          SOURCE_DATE_EPOCH = "1613559011"
8617
8618   :term:`SOURCE_MIRROR_FETCH`
8619      When you are fetching files to create a mirror of sources (i.e.
8620      creating a source mirror), setting :term:`SOURCE_MIRROR_FETCH` to "1" in
8621      your ``local.conf`` configuration file ensures the source for all
8622      recipes are fetched regardless of whether or not a recipe is
8623      compatible with the configuration. A recipe is considered
8624      incompatible with the currently configured machine when either or
8625      both the :term:`COMPATIBLE_MACHINE`
8626      variable and :term:`COMPATIBLE_HOST` variables
8627      specify compatibility with a machine other than that of the current
8628      machine or host.
8629
8630      .. note::
8631
8632         Do not set the :term:`SOURCE_MIRROR_FETCH`
8633         variable unless you are creating a source mirror. In other words,
8634         do not set the variable during a normal build.
8635
8636   :term:`SOURCE_MIRROR_URL`
8637      Defines your own :term:`PREMIRRORS` from which to
8638      first fetch source before attempting to fetch from the upstream
8639      specified in :term:`SRC_URI`.
8640
8641      To use this variable, you must globally inherit the
8642      :ref:`ref-classes-own-mirrors` class and then provide
8643      the URL to your mirrors. Here is the general syntax::
8644
8645         INHERIT += "own-mirrors"
8646         SOURCE_MIRROR_URL = "http://example.com/my_source_mirror"
8647
8648      .. note::
8649
8650         You can specify only a single URL in :term:`SOURCE_MIRROR_URL`.
8651
8652      .. note::
8653
8654         If the mirror is protected behind a username and password, the
8655         :term:`build host` needs to be configured so the :term:`build system
8656         <OpenEmbedded Build System>` is able to fetch from the mirror.
8657
8658         The recommended way to do that is by setting the following parameters
8659         in ``$HOME/.netrc`` (``$HOME`` being the :term:`build host` home
8660         directory)::
8661
8662            machine example.com
8663            login <user>
8664            password <password>
8665
8666         This file requires permissions set to ``400`` or ``600`` to prevent
8667         other users from reading the file::
8668
8669            chmod 600 "$HOME/.netrc"
8670
8671         Another method to configure the username and password is from the URL
8672         in :term:`SOURCE_MIRROR_URL` directly, with the ``user`` and ``pswd``
8673         parameters::
8674
8675            SOURCE_MIRROR_URL = "http://example.com/my_source_mirror;user=<user>;pswd=<password>"
8676
8677   :term:`SPDX_ARCHIVE_PACKAGED`
8678      This option allows to add to :term:`SPDX` output compressed archives
8679      of the files in the generated target packages.
8680
8681      Such archives are available in
8682      ``tmp/deploy/spdx/MACHINE/packages/packagename.tar.zst``
8683      under the :term:`Build Directory`.
8684
8685      Enable this option as follows::
8686
8687         SPDX_ARCHIVE_PACKAGED = "1"
8688
8689      According to our tests on release 4.1 "langdale", building
8690      ``core-image-minimal`` for the ``qemux86-64`` machine, enabling this
8691      option multiplied the size of the ``tmp/deploy/spdx`` directory by a
8692      factor of 13 (+1.6 GiB for this image), compared to just using the
8693      :ref:`ref-classes-create-spdx` class with no option.
8694
8695      Note that this option doesn't increase the size of :term:`SPDX`
8696      files in ``tmp/deploy/images/MACHINE``.
8697
8698   :term:`SPDX_ARCHIVE_SOURCES`
8699      This option allows to add to :term:`SPDX` output compressed archives
8700      of the sources for packages installed on the target. It currently
8701      only works when :term:`SPDX_INCLUDE_SOURCES` is set.
8702
8703      This is one way of fulfilling "source code access" license
8704      requirements.
8705
8706      Such source archives are available in
8707      ``tmp/deploy/spdx/MACHINE/recipes/recipe-packagename.tar.zst``
8708      under the :term:`Build Directory`.
8709
8710      Enable this option as follows::
8711
8712         SPDX_INCLUDE_SOURCES = "1"
8713         SPDX_ARCHIVE_SOURCES = "1"
8714
8715      According to our tests on release 4.1 "langdale", building
8716      ``core-image-minimal`` for the ``qemux86-64`` machine, enabling
8717      these options multiplied the size of the ``tmp/deploy/spdx``
8718      directory by a factor of 11 (+1.4 GiB for this image),
8719      compared to just using the :ref:`ref-classes-create-spdx`
8720      class with no option.
8721
8722      Note that using this option only marginally increases the size
8723      of the :term:`SPDX` output in ``tmp/deploy/images/MACHINE/``
8724      (+ 0.07\% with the tested image), compared to just enabling
8725      :term:`SPDX_INCLUDE_SOURCES`.
8726
8727   :term:`SPDX_CUSTOM_ANNOTATION_VARS`
8728      This option allows to associate `SPDX annotations
8729      <https://spdx.github.io/spdx-spec/v2.3/annotations/>`__ to a recipe,
8730      using the values of variables in the recipe::
8731
8732         ANNOTATION1 = "First annotation for recipe"
8733         ANNOTATION2 = "Second annotation for recipe"
8734         SPDX_CUSTOM_ANNOTATION_VARS = "ANNOTATION1 ANNOTATION2"
8735
8736      This will add a new block to the recipe ``.sdpx.json`` output::
8737
8738         "annotations": [
8739           {
8740             "annotationDate": "2023-04-18T08:32:12Z",
8741             "annotationType": "OTHER",
8742             "annotator": "Tool: oe-spdx-creator - 1.0",
8743             "comment": "ANNOTATION1=First annotation for recipe"
8744           },
8745           {
8746             "annotationDate": "2023-04-18T08:32:12Z",
8747             "annotationType": "OTHER",
8748             "annotator": "Tool: oe-spdx-creator - 1.0",
8749             "comment": "ANNOTATION2=Second annotation for recipe"
8750           }
8751         ],
8752
8753   :term:`SPDX_INCLUDE_SOURCES`
8754      This option allows to add a description of the source files used to build
8755      the host tools and the target packages, to the ``spdx.json`` files in
8756      ``tmp/deploy/spdx/MACHINE/recipes/`` under the :term:`Build Directory`.
8757      As a consequence, the ``spdx.json`` files under the ``by-namespace`` and
8758      ``packages`` subdirectories in ``tmp/deploy/spdx/MACHINE`` are also
8759      modified to include references to such source file descriptions.
8760
8761      Enable this option as follows::
8762
8763         SPDX_INCLUDE_SOURCES = "1"
8764
8765      According to our tests on release 4.1 "langdale", building
8766      ``core-image-minimal`` for the ``qemux86-64`` machine, enabling
8767      this option multiplied the total size of the ``tmp/deploy/spdx``
8768      directory by a factor of 3  (+291 MiB for this image),
8769      and the size of the ``IMAGE-MACHINE.spdx.tar.zst`` in
8770      ``tmp/deploy/images/MACHINE`` by a factor of 130 (+15 MiB for this
8771      image), compared to just using the :ref:`ref-classes-create-spdx` class
8772      with no option.
8773
8774   :term:`SPDX_NAMESPACE_PREFIX`
8775      This option could be used in order to change the prefix of ``spdxDocument``
8776      and the prefix of ``documentNamespace``. It is set by default to
8777      ``http://spdx.org/spdxdoc``.
8778
8779   :term:`SPDX_PACKAGE_VERSION`
8780      This variable controls the package version as seen in the SPDX 3.0 JSON
8781      output (``software_packageVersion``). The default value for this variable
8782      is :term:`PV`.
8783
8784   :term:`SPDX_PRETTY`
8785      This option makes the SPDX output more human-readable, using
8786      identation and newlines, instead of the default output in a
8787      single line::
8788
8789         SPDX_PRETTY = "1"
8790
8791      The generated SPDX files are approximately 20% bigger, but
8792      this option is recommended if you want to inspect the SPDX
8793      output files with a text editor.
8794
8795   :term:`SPDXLICENSEMAP`
8796      Maps commonly used license names to their SPDX counterparts found in
8797      ``meta/files/common-licenses/``. For the default :term:`SPDXLICENSEMAP`
8798      mappings, see the ``meta/conf/licenses.conf`` file.
8799
8800      For additional information, see the :term:`LICENSE`
8801      variable.
8802
8803   :term:`SPECIAL_PKGSUFFIX`
8804      A list of prefixes for :term:`PN` used by the OpenEmbedded
8805      build system to create variants of recipes or packages. The list
8806      specifies the prefixes to strip off during certain circumstances such
8807      as the generation of the :term:`BPN` variable.
8808
8809   :term:`SPL_BINARY`
8810      The file type for the Secondary Program Loader (SPL). Some devices
8811      use an SPL from which to boot (e.g. the BeagleBone development
8812      board). For such cases, you can declare the file type of the SPL
8813      binary in the ``u-boot.inc`` include file, which is used in the
8814      U-Boot recipe.
8815
8816      The SPL file type is set to "null" by default in the ``u-boot.inc``
8817      file as follows::
8818
8819         # Some versions of u-boot build an SPL (Second Program Loader) image that
8820         # should be packaged along with the u-boot binary as well as placed in the
8821         # deploy directory. For those versions they can set the following variables
8822         # to allow packaging the SPL.
8823         SPL_BINARY ?= ""
8824         SPL_BINARYNAME ?= "${@os.path.basename(d.getVar("SPL_BINARY"))}"
8825         SPL_IMAGE ?= "${SPL_BINARYNAME}-${MACHINE}-${PV}-${PR}"
8826         SPL_SYMLINK ?= "${SPL_BINARYNAME}-${MACHINE}"
8827
8828      The :term:`SPL_BINARY` variable helps form
8829      various ``SPL_*`` variables used by the OpenEmbedded build system.
8830
8831      See the BeagleBone machine configuration example in the
8832      ":ref:`dev-manual/layers:adding a layer using the \`\`bitbake-layers\`\` script`"
8833      section in the Yocto Project Board Support Package Developer's Guide
8834      for additional information.
8835
8836   :term:`SPL_MKIMAGE_DTCOPTS`
8837      Options for the device tree compiler passed to ``mkimage -D`` feature
8838      while creating a FIT image with the :ref:`ref-classes-uboot-sign`
8839      class. If :term:`SPL_MKIMAGE_DTCOPTS` is not set then the
8840      :ref:`ref-classes-uboot-sign` class will not pass the ``-D`` option
8841      to ``mkimage``.
8842
8843      The default value is set to "" by the :ref:`ref-classes-uboot-config`
8844      class.
8845
8846   :term:`SPL_SIGN_ENABLE`
8847      Enable signing of the U-Boot FIT image. The default value is "0".
8848      This variable is used by the :ref:`ref-classes-uboot-sign` class.
8849
8850   :term:`SPL_SIGN_KEYDIR`
8851      Location of the directory containing the RSA key and certificate used for
8852      signing the U-Boot FIT image, used by the :ref:`ref-classes-uboot-sign`
8853      class.
8854
8855   :term:`SPL_SIGN_KEYNAME`
8856      The name of keys used by the :ref:`ref-classes-uboot-sign` class
8857      for signing U-Boot FIT image stored in the :term:`SPL_SIGN_KEYDIR`
8858      directory. If we have for example a ``dev.key`` key and a ``dev.crt``
8859      certificate stored in the :term:`SPL_SIGN_KEYDIR` directory, you will
8860      have to set :term:`SPL_SIGN_KEYNAME` to ``dev``.
8861
8862   :term:`SPLASH`
8863      This variable, used by the :ref:`ref-classes-image` class, allows
8864      to choose splashscreen applications. Set it to the names of packages
8865      for such applications to use. This variable is set by default to
8866      ``psplash``.
8867
8868   :term:`SPLASH_IMAGES`
8869      This variable, used by the ``psplash`` recipe, allows to customize
8870      the default splashscreen image.
8871
8872      Specified images in PNG format are converted to ``.h`` files by the recipe,
8873      and are included in the ``psplash`` binary, so you won't find them in
8874      the root filesystem.
8875
8876      To make such a change, it is recommended to customize the
8877      ``psplash`` recipe in a custom layer. Here is an example structure for
8878      an ``ACME`` board::
8879
8880          meta-acme/recipes-core/psplash
8881          ├── files
8882          │   └── logo-acme.png
8883          └── psplash_%.bbappend
8884
8885      And here are the contents of the ``psplash_%.bbappend`` file in
8886      this example::
8887
8888          SPLASH_IMAGES = "file://logo-acme.png;outsuffix=default"
8889          FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
8890
8891      You could even add specific configuration options for ``psplash``,
8892      for example::
8893
8894          EXTRA_OECONF += "--disable-startup-msg --enable-img-fullscreen"
8895
8896      For information on append files, see the
8897      ":ref:`dev-manual/layers:appending other layers metadata with your layer`"
8898      section.
8899
8900   :term:`SRCREV_FORMAT`
8901      See :term:`bitbake:SRCREV_FORMAT` in the BitBake manual.
8902
8903   :term:`SRC_URI`
8904
8905      See the BitBake manual for the initial description for this variable:
8906      :term:`bitbake:SRC_URI`.
8907
8908      The following features are added by OpenEmbedded and the Yocto Project.
8909
8910      There are standard and recipe-specific options. Here are standard ones:
8911
8912      -  ``apply`` --- whether to apply the patch or not. The default
8913         action is to apply the patch.
8914
8915      -  ``striplevel`` --- which striplevel to use when applying the
8916         patch. The default level is 1.
8917
8918      -  ``patchdir`` --- specifies the directory in which the patch should
8919         be applied. The default is ``${``\ :term:`S`\ ``}``.
8920
8921      Here are options specific to recipes building code from a revision
8922      control system:
8923
8924      -  ``mindate`` --- apply the patch only if
8925         :term:`SRCDATE` is equal to or greater than
8926         ``mindate``.
8927
8928      -  ``maxdate`` --- apply the patch only if :term:`SRCDATE` is not later
8929         than ``maxdate``.
8930
8931      -  ``minrev`` --- apply the patch only if :term:`SRCREV` is equal to or
8932         greater than ``minrev``.
8933
8934      -  ``maxrev`` --- apply the patch only if :term:`SRCREV` is not later
8935         than ``maxrev``.
8936
8937      -  ``rev`` --- apply the patch only if :term:`SRCREV` is equal to
8938         ``rev``.
8939
8940      -  ``notrev`` --- apply the patch only if :term:`SRCREV` is not equal to
8941         ``rev``.
8942
8943      .. note::
8944
8945         If you want the build system to pick up files specified through
8946         a :term:`SRC_URI` statement from your append file, you need to be
8947         sure to extend the :term:`FILESPATH` variable by also using the
8948         :term:`FILESEXTRAPATHS` variable from within your append file.
8949
8950   :term:`SRC_URI_OVERRIDES_PACKAGE_ARCH`
8951      By default, the OpenEmbedded build system automatically detects
8952      whether :term:`SRC_URI` contains files that are machine-specific. If so,
8953      the build system automatically changes :term:`PACKAGE_ARCH`. Setting this
8954      variable to "0" disables this behavior.
8955
8956   :term:`SRCDATE`
8957      The date of the source code used to build the package. This variable
8958      applies only if the source was fetched from a Source Code Manager
8959      (SCM).
8960
8961   :term:`SRCPV`
8962      The variable :term:`SRCPV` is deprecated. It was previously used to
8963      include source control information in :term:`PV` for :term:`bitbake` to
8964      work correctly but this is no longer a requirement. Source control
8965      information will be automatically included by :term:`bitbake` in the
8966      variable :term:`PKGV` during packaging if the ``+`` sign is present in
8967      :term:`PV`.
8968
8969      .. note::
8970
8971         The :term:`SRCPV` variable used to be defined in the
8972         ``meta/conf/bitbake.conf`` configuration file in the :term:`Source
8973         Directory` as follows::
8974
8975            SRCPV = "${@bb.fetch2.get_srcrev(d)}"
8976
8977         The ``get_srcrev`` function can still be used to include source control
8978         information in variables manually.
8979
8980   :term:`SRCREV`
8981      The revision of the source code used to build the package. This
8982      variable applies to Subversion, Git, Mercurial, and Bazaar only. Note
8983      that if you want to build a fixed revision and you want to avoid
8984      performing a query on the remote repository every time BitBake parses
8985      your recipe, you should specify a :term:`SRCREV` that is a full revision
8986      identifier (e.g. the full SHA hash in git) and not just a tag.
8987
8988      .. note::
8989
8990         For information on limitations when inheriting the latest revision
8991         of software using :term:`SRCREV`, see the :term:`AUTOREV` variable
8992         description and the
8993         ":ref:`dev-manual/packages:automatically incrementing a package version number`"
8994         section, which is in the Yocto Project Development Tasks Manual.
8995
8996   :term:`SRCTREECOVEREDTASKS`
8997      A list of tasks that are typically not relevant (and therefore skipped)
8998      when building using the :ref:`ref-classes-externalsrc`
8999      class. The default value as set in that class file is the set of tasks
9000      that are rarely needed when using external source::
9001
9002         SRCTREECOVEREDTASKS ?= "do_patch do_unpack do_fetch"
9003
9004      The notable exception is when processing external kernel source as
9005      defined in the :ref:`ref-classes-kernel-yocto` class file (formatted for
9006      aesthetics)::
9007
9008         SRCTREECOVEREDTASKS += "\
9009           do_validate_branches \
9010           do_kernel_configcheck \
9011           do_kernel_checkout \
9012           do_fetch \
9013           do_unpack \
9014           do_patch \
9015         "
9016
9017      See the associated :term:`EXTERNALSRC` and :term:`EXTERNALSRC_BUILD`
9018      variables for more information.
9019
9020   :term:`SSTATE_DIR`
9021      The directory for the shared state cache.
9022
9023   :term:`SSTATE_EXCLUDEDEPS_SYSROOT`
9024      This variable allows to specify indirect dependencies to exclude
9025      from sysroots, for example to avoid the situations when a dependency on
9026      any ``-native`` recipe will pull in all dependencies of that recipe
9027      in the recipe sysroot. This behaviour might not always be wanted,
9028      for example when that ``-native`` recipe depends on build tools
9029      that are not relevant for the current recipe.
9030
9031      This way, irrelevant dependencies are ignored, which could have
9032      prevented the reuse of prebuilt artifacts stored in the Shared
9033      State Cache.
9034
9035      :term:`SSTATE_EXCLUDEDEPS_SYSROOT` is evaluated as two regular
9036      expressions of recipe and dependency to ignore. An example
9037      is the rule in :oe_git:`meta/conf/layer.conf </openembedded-core/tree/meta/conf/layer.conf>`::
9038
9039         # Nothing needs to depend on libc-initial
9040         # base-passwd/shadow-sysroot don't need their dependencies
9041         SSTATE_EXCLUDEDEPS_SYSROOT += "\
9042             .*->.*-initial.* \
9043             .*(base-passwd|shadow-sysroot)->.* \
9044         "
9045
9046      The ``->`` substring represents the dependency between
9047      the two regular expressions.
9048
9049   :term:`SSTATE_MIRROR_ALLOW_NETWORK`
9050      If set to "1", allows fetches from mirrors that are specified in
9051      :term:`SSTATE_MIRRORS` to work even when
9052      fetching from the network is disabled by setting :term:`BB_NO_NETWORK` to
9053      "1". Using the :term:`SSTATE_MIRROR_ALLOW_NETWORK` variable is useful if
9054      you have set :term:`SSTATE_MIRRORS` to point to an internal server for
9055      your shared state cache, but you want to disable any other fetching
9056      from the network.
9057
9058   :term:`SSTATE_MIRRORS`
9059      Configures the OpenEmbedded build system to search other mirror
9060      locations for prebuilt cache data objects before building out the
9061      data. This variable works like fetcher :term:`MIRRORS`
9062      and :term:`PREMIRRORS` and points to the cache
9063      locations to check for the shared state (sstate) objects.
9064
9065      You can specify a filesystem directory or a remote URL such as HTTP
9066      or FTP. The locations you specify need to contain the shared state
9067      cache (sstate-cache) results from previous builds. The sstate-cache
9068      you point to can also be from builds on other machines.
9069
9070      When pointing to sstate build artifacts on another machine that uses
9071      a different GCC version for native builds, you must configure
9072      :term:`SSTATE_MIRRORS` with a regular expression that maps local search
9073      paths to server paths. The paths need to take into account
9074      :term:`NATIVELSBSTRING` set by the :ref:`ref-classes-uninative` class.
9075      For example, the following maps the local search path ``universal-4.9``
9076      to the server-provided path server_url_sstate_path::
9077
9078         SSTATE_MIRRORS ?= "file://universal-4.9/(.*) https://server_url_sstate_path/universal-4.8/\1"
9079
9080      If a mirror uses the same structure as
9081      :term:`SSTATE_DIR`, you need to add "PATH" at the
9082      end as shown in the examples below. The build system substitutes the
9083      correct path within the directory structure::
9084
9085         SSTATE_MIRRORS ?= "\
9086             file://.* https://someserver.tld/share/sstate/PATH;downloadfilename=PATH \
9087             file://.* file:///some-local-dir/sstate/PATH"
9088
9089      .. note::
9090
9091         If the mirror is protected behind a username and password, the
9092         :term:`build host` needs to be configured so the :term:`build system
9093         <OpenEmbedded Build System>` is able to download the sstate cache using
9094         authentication.
9095
9096         The recommended way to do that is by setting the following parameters
9097         in ``$HOME/.netrc`` (``$HOME`` being the :term:`build host` home
9098         directory)::
9099
9100            machine someserver.tld
9101            login <user>
9102            password <password>
9103
9104         This file requires permissions set to ``400`` or ``600`` to prevent
9105         other users from reading the file::
9106
9107            chmod 600 "$HOME/.netrc"
9108
9109         Another method to configure the username and password is from the
9110         URL in :term:`SSTATE_MIRRORS` directly, with the ``user`` and ``pswd``
9111         parameters::
9112
9113            SSTATE_MIRRORS ?= "\
9114                file://.* https://someserver.tld/share/sstate/PATH;user=<user>;pswd=<password>;downloadfilename=PATH \
9115            "
9116
9117      The Yocto Project actually shares the cache data objects built by its
9118      autobuilder::
9119
9120         SSTATE_MIRRORS ?= "file://.* http://sstate.yoctoproject.org/all/PATH;downloadfilename=PATH"
9121
9122      As such binary artifacts are built for the generic QEMU machines
9123      supported by the various Poky releases, they are less likely to be
9124      reusable in real projects building binaries optimized for a specific
9125      CPU family.
9126
9127   :term:`SSTATE_SCAN_FILES`
9128      Controls the list of files the OpenEmbedded build system scans for
9129      hardcoded installation paths. The variable uses a space-separated
9130      list of filenames (not paths) with standard wildcard characters
9131      allowed.
9132
9133      During a build, the OpenEmbedded build system creates a shared state
9134      (sstate) object during the first stage of preparing the sysroots.
9135      That object is scanned for hardcoded paths for original installation
9136      locations. The list of files that are scanned for paths is controlled
9137      by the :term:`SSTATE_SCAN_FILES` variable. Typically, recipes add files
9138      they want to be scanned to the value of :term:`SSTATE_SCAN_FILES` rather
9139      than the variable being comprehensively set. The
9140      :ref:`ref-classes-sstate` class specifies the default list of files.
9141
9142      For details on the process, see the :ref:`ref-classes-staging` class.
9143
9144   :term:`SSTATE_SKIP_CREATION`
9145      The :term:`SSTATE_SKIP_CREATION` variable can be used to skip the
9146      creation of :ref:`shared state <overview-manual/concepts:shared state cache>`
9147      tarball files. It makes sense e.g. for image creation tasks as tarring images
9148      and keeping them in sstate would consume a lot of disk space.
9149
9150      In general it is not recommended to use this variable as missing sstate
9151      artefacts adversely impact the build, particularly for entries in the
9152      middle of dependency chains. The case it can make sense is where the
9153      size and time costs of the artefact are similar to just running the
9154      tasks. This generally only applies to end artefact output like images.
9155
9156      The syntax to disable it for one task is::
9157
9158         SSTATE_SKIP_CREATION:task-image-complete = "1"
9159
9160      The syntax to disable it for the whole recipe is::
9161
9162         SSTATE_SKIP_CREATION = "1"
9163
9164   :term:`STAGING_BASE_LIBDIR_NATIVE`
9165      Specifies the path to the ``/lib`` subdirectory of the sysroot
9166      directory for the build host.
9167
9168   :term:`STAGING_BASELIBDIR`
9169      Specifies the path to the ``/lib`` subdirectory of the sysroot
9170      directory for the target for which the current recipe is being built
9171      (:term:`STAGING_DIR_HOST`).
9172
9173   :term:`STAGING_BINDIR`
9174      Specifies the path to the ``/usr/bin`` subdirectory of the sysroot
9175      directory for the target for which the current recipe is being built
9176      (:term:`STAGING_DIR_HOST`).
9177
9178   :term:`STAGING_BINDIR_CROSS`
9179      Specifies the path to the directory containing binary configuration
9180      scripts. These scripts provide configuration information for other
9181      software that wants to make use of libraries or include files
9182      provided by the software associated with the script.
9183
9184      .. note::
9185
9186         This style of build configuration has been largely replaced by
9187         ``pkg-config``. Consequently, if ``pkg-config`` is supported by the
9188         library to which you are linking, it is recommended you use
9189         ``pkg-config`` instead of a provided configuration script.
9190
9191   :term:`STAGING_BINDIR_NATIVE`
9192      Specifies the path to the ``/usr/bin`` subdirectory of the sysroot
9193      directory for the build host.
9194
9195   :term:`STAGING_DATADIR`
9196      Specifies the path to the ``/usr/share`` subdirectory of the sysroot
9197      directory for the target for which the current recipe is being built
9198      (:term:`STAGING_DIR_HOST`).
9199
9200   :term:`STAGING_DATADIR_NATIVE`
9201      Specifies the path to the ``/usr/share`` subdirectory of the sysroot
9202      directory for the build host.
9203
9204   :term:`STAGING_DIR`
9205      Helps construct the ``recipe-sysroots`` directory, which is used
9206      during packaging.
9207
9208      For information on how staging for recipe-specific sysroots occurs,
9209      see the :ref:`ref-tasks-populate_sysroot`
9210      task, the ":ref:`dev-manual/devtool:sharing files between recipes`"
9211      section in the Yocto Project Development Tasks Manual, the
9212      ":ref:`overview-manual/concepts:configuration, compilation, and staging`"
9213      section in the Yocto Project Overview and Concepts Manual, and the
9214      :term:`SYSROOT_DIRS` variable.
9215
9216      .. note::
9217
9218         Recipes should never write files directly under the :term:`STAGING_DIR`
9219         directory because the OpenEmbedded build system manages the
9220         directory automatically. Instead, files should be installed to
9221         ``${``\ :term:`D`\ ``}`` within your recipe's :ref:`ref-tasks-install`
9222         task and then the OpenEmbedded build system will stage a subset of
9223         those files into the sysroot.
9224
9225   :term:`STAGING_DIR_HOST`
9226      Specifies the path to the sysroot directory for the system on which
9227      the component is built to run (the system that hosts the component).
9228      For most recipes, this sysroot is the one in which that recipe's
9229      :ref:`ref-tasks-populate_sysroot` task copies
9230      files. Exceptions include ``-native`` recipes, where the
9231      :ref:`ref-tasks-populate_sysroot` task instead uses
9232      :term:`STAGING_DIR_NATIVE`. Depending on
9233      the type of recipe and the build target, :term:`STAGING_DIR_HOST` can
9234      have the following values:
9235
9236      -  For recipes building for the target machine, the value is
9237         "${:term:`STAGING_DIR`}/${:term:`MACHINE`}".
9238
9239      -  For native recipes building for the build host, the value is empty
9240         given the assumption that when building for the build host, the
9241         build host's own directories should be used.
9242
9243         .. note::
9244
9245            ``-native`` recipes are not installed into host paths like such
9246            as ``/usr``. Rather, these recipes are installed into
9247            :term:`STAGING_DIR_NATIVE`. When compiling ``-native`` recipes,
9248            standard build environment variables such as
9249            :term:`CPPFLAGS` and
9250            :term:`CFLAGS` are set up so that both host paths
9251            and :term:`STAGING_DIR_NATIVE` are searched for libraries and
9252            headers using, for example, GCC's ``-isystem`` option.
9253
9254            Thus, the emphasis is that the ``STAGING_DIR*`` variables
9255            should be viewed as input variables by tasks such as
9256            :ref:`ref-tasks-configure`,
9257            :ref:`ref-tasks-compile`, and
9258            :ref:`ref-tasks-install`. Having the real system
9259            root correspond to :term:`STAGING_DIR_HOST` makes conceptual sense
9260            for ``-native`` recipes, as they make use of host headers and
9261            libraries.
9262
9263      Check :term:`RECIPE_SYSROOT` and :term:`RECIPE_SYSROOT_NATIVE`.
9264
9265   :term:`STAGING_DIR_NATIVE`
9266      Specifies the path to the sysroot directory used when building
9267      components that run on the build host itself.
9268
9269      The default value is ``"${RECIPE_SYSROOT_NATIVE}"``,
9270      check :term:`RECIPE_SYSROOT_NATIVE`.
9271
9272   :term:`STAGING_DIR_TARGET`
9273      Specifies the path to the sysroot used for the system for which the
9274      component generates code. For components that do not generate code,
9275      which is the majority, :term:`STAGING_DIR_TARGET` is set to match
9276      :term:`STAGING_DIR_HOST`.
9277
9278      Some recipes build binaries that can run on the target system but those
9279      binaries in turn generate code for another different system (e.g.
9280      :ref:`ref-classes-cross-canadian` recipes). Using terminology from GNU,
9281      the primary system is referred to as the "HOST" and the secondary, or
9282      different, system is referred to as the "TARGET". Thus, the binaries
9283      run on the "HOST" system and generate binaries for the "TARGET"
9284      system. The :term:`STAGING_DIR_HOST` variable points to the sysroot used
9285      for the "HOST" system, while :term:`STAGING_DIR_TARGET` points to the
9286      sysroot used for the "TARGET" system.
9287
9288   :term:`STAGING_ETCDIR_NATIVE`
9289      Specifies the path to the ``/etc`` subdirectory of the sysroot
9290      directory for the build host.
9291
9292   :term:`STAGING_EXECPREFIXDIR`
9293      Specifies the path to the ``/usr`` subdirectory of the sysroot
9294      directory for the target for which the current recipe is being built
9295      (:term:`STAGING_DIR_HOST`).
9296
9297   :term:`STAGING_INCDIR`
9298      Specifies the path to the ``/usr/include`` subdirectory of the
9299      sysroot directory for the target for which the current recipe being
9300      built (:term:`STAGING_DIR_HOST`).
9301
9302   :term:`STAGING_INCDIR_NATIVE`
9303      Specifies the path to the ``/usr/include`` subdirectory of the
9304      sysroot directory for the build host.
9305
9306   :term:`STAGING_KERNEL_BUILDDIR`
9307      Points to the directory containing the kernel build artifacts.
9308      Recipes building software that needs to access kernel build artifacts
9309      (e.g. ``systemtap-uprobes``) can look in the directory specified with
9310      the :term:`STAGING_KERNEL_BUILDDIR` variable to find these artifacts
9311      after the kernel has been built.
9312
9313   :term:`STAGING_KERNEL_DIR`
9314      The directory with kernel headers that are required to build
9315      out-of-tree modules.
9316
9317   :term:`STAGING_LIBDIR`
9318      Specifies the path to the ``/usr/lib`` subdirectory of the sysroot
9319      directory for the target for which the current recipe is being built
9320      (:term:`STAGING_DIR_HOST`).
9321
9322   :term:`STAGING_LIBDIR_NATIVE`
9323      Specifies the path to the ``/usr/lib`` subdirectory of the sysroot
9324      directory for the build host.
9325
9326   :term:`STAMP`
9327      Specifies the base path used to create recipe stamp files. The path
9328      to an actual stamp file is constructed by evaluating this string and
9329      then appending additional information. Currently, the default
9330      assignment for :term:`STAMP` as set in the ``meta/conf/bitbake.conf``
9331      file is::
9332
9333         STAMP = "${STAMPS_DIR}/${MULTIMACH_TARGET_SYS}/${PN}/${EXTENDPE}${PV}-${PR}"
9334
9335      For information on how BitBake uses stamp files to determine if a
9336      task should be rerun, see the
9337      ":ref:`overview-manual/concepts:stamp files and the rerunning of tasks`"
9338      section in the Yocto Project Overview and Concepts Manual.
9339
9340      See :term:`STAMPS_DIR`,
9341      :term:`MULTIMACH_TARGET_SYS`,
9342      :term:`PN`, :term:`EXTENDPE`,
9343      :term:`PV`, and :term:`PR` for related variable
9344      information.
9345
9346   :term:`STAMPCLEAN`
9347      See :term:`bitbake:STAMPCLEAN` in the BitBake manual.
9348
9349   :term:`STAMPS_DIR`
9350      Specifies the base directory in which the OpenEmbedded build system
9351      places stamps. The default directory is ``${TMPDIR}/stamps``.
9352
9353   :term:`STRIP`
9354      The minimal command and arguments to run :manpage:`strip <strip(1)>`,
9355      which is used to strip symbols.
9356
9357   :term:`SUMMARY`
9358      The short (72 characters or less) summary of the binary package for
9359      packaging systems such as ``opkg``, ``rpm``, or ``dpkg``. By default,
9360      :term:`SUMMARY` is used to define the
9361      :term:`DESCRIPTION` variable if :term:`DESCRIPTION` is
9362      not set in the recipe.
9363
9364   :term:`SVNDIR`
9365      The directory in which files checked out of a Subversion system are
9366      stored.
9367
9368   :term:`SYSLINUX_DEFAULT_CONSOLE`
9369      Specifies the kernel boot default console. If you want to use a
9370      console other than the default, set this variable in your recipe as
9371      follows where "X" is the console number you want to use::
9372
9373         SYSLINUX_DEFAULT_CONSOLE = "console=ttyX"
9374
9375      The :ref:`ref-classes-syslinux` class initially sets
9376      this variable to null but then checks for a value later.
9377
9378   :term:`SYSLINUX_OPTS`
9379      Lists additional options to add to the syslinux file. You need to set
9380      this variable in your recipe. If you want to list multiple options,
9381      separate the options with a semicolon character (``;``).
9382
9383      The :ref:`ref-classes-syslinux` class uses this variable
9384      to create a set of options.
9385
9386   :term:`SYSLINUX_SERIAL`
9387      Specifies the alternate serial port or turns it off. To turn off
9388      serial, set this variable to an empty string in your recipe. The
9389      variable's default value is set in the
9390      :ref:`ref-classes-syslinux` class as follows::
9391
9392         SYSLINUX_SERIAL ?= "0 115200"
9393
9394      The class checks for and uses the variable as needed.
9395
9396   :term:`SYSLINUX_SERIAL_TTY`
9397      Specifies the alternate console=tty... kernel boot argument. The
9398      variable's default value is set in the :ref:`ref-classes-syslinux`
9399      class as follows::
9400
9401         SYSLINUX_SERIAL_TTY ?= "console=ttyS0,115200"
9402
9403      The class checks for and uses the variable as needed.
9404
9405   :term:`SYSLINUX_SPLASH`
9406      An ``.LSS`` file used as the background for the VGA boot menu when
9407      you use the boot menu. You need to set this variable in your recipe.
9408
9409      The :ref:`ref-classes-syslinux` class checks for this
9410      variable and if found, the OpenEmbedded build system installs the
9411      splash screen.
9412
9413   :term:`SYSROOT_DESTDIR`
9414      Points to the temporary directory under the work directory (default
9415      "``${``\ :term:`WORKDIR`\ ``}/sysroot-destdir``")
9416      where the files populated into the sysroot are assembled during the
9417      :ref:`ref-tasks-populate_sysroot` task.
9418
9419   :term:`SYSROOT_DIRS`
9420      Directories that are staged into the sysroot by the
9421      :ref:`ref-tasks-populate_sysroot` task. By
9422      default, the following directories are staged::
9423
9424         SYSROOT_DIRS = " \
9425             ${includedir} \
9426             ${libdir} \
9427             ${base_libdir} \
9428             ${nonarch_base_libdir} \
9429             ${datadir} \
9430             /sysroot-only \
9431             "
9432
9433      Consider the following example in which you need to manipulate this variable.
9434      Assume you have a recipe ``A`` that provides a shared library ``.so.*`` that is
9435      installed into a custom folder other than "``${libdir}``"
9436      or "``${base_libdir}``", let's say "``/opt/lib``".
9437
9438      .. note::
9439
9440         This is not a recommended way to deal with shared libraries, but this
9441         is just to show the usefulness of setting :term:`SYSROOT_DIRS`.
9442
9443      When a recipe ``B`` :term:`DEPENDS` on ``A``, it means what is in
9444      :term:`SYSROOT_DIRS` will be copied from :term:`D` of the recipe ``A``
9445      into ``B``'s :term:`SYSROOT_DESTDIR` that is "``${WORKDIR}/sysroot-destdir``".
9446
9447      Now, since ``/opt/lib`` is not in :term:`SYSROOT_DIRS`, it will never be copied to
9448      ``A``'s :term:`RECIPE_SYSROOT`, which is "``${WORKDIR}/recipe-sysroot``". So,
9449      the linking process will fail.
9450
9451      To fix this, you need to add ``/opt/lib`` to :term:`SYSROOT_DIRS`::
9452
9453         SYSROOT_DIRS:append = " /opt/lib"
9454
9455      .. note::
9456         Even after setting ``/opt/lib`` to :term:`SYSROOT_DIRS`, the linking process will still fail
9457         because the linker does not know that location, since :term:`TARGET_LDFLAGS`
9458         doesn't contain it (if your recipe is for the target). Therefore, so you should add::
9459
9460            TARGET_LDFLAGS:append = " -L${RECIPE_SYSROOT}/opt/lib"
9461
9462   :term:`SYSROOT_DIRS_IGNORE`
9463      Directories that are not staged into the sysroot by the
9464      :ref:`ref-tasks-populate_sysroot` task. You
9465      can use this variable to exclude certain subdirectories of
9466      directories listed in :term:`SYSROOT_DIRS` from
9467      staging. By default, the following directories are not staged::
9468
9469         SYSROOT_DIRS_IGNORE = " \
9470             ${mandir} \
9471             ${docdir} \
9472             ${infodir} \
9473             ${datadir}/X11/locale \
9474             ${datadir}/applications \
9475             ${datadir}/bash-completion \
9476             ${datadir}/fonts \
9477             ${datadir}/gtk-doc/html \
9478             ${datadir}/installed-tests \
9479             ${datadir}/locale \
9480             ${datadir}/pixmaps \
9481             ${datadir}/terminfo \
9482             ${libdir}/${BPN}/ptest \
9483             "
9484
9485   :term:`SYSROOT_DIRS_NATIVE`
9486      Extra directories staged into the sysroot by the
9487      :ref:`ref-tasks-populate_sysroot` task for
9488      ``-native`` recipes, in addition to those specified in
9489      :term:`SYSROOT_DIRS`. By default, the following
9490      extra directories are staged::
9491
9492         SYSROOT_DIRS_NATIVE = " \
9493             ${bindir} \
9494             ${sbindir} \
9495             ${base_bindir} \
9496             ${base_sbindir} \
9497             ${libexecdir} \
9498             ${sysconfdir} \
9499             ${localstatedir} \
9500             "
9501
9502      .. note::
9503
9504         Programs built by ``-native`` recipes run directly from the sysroot
9505         (:term:`STAGING_DIR_NATIVE`), which is why additional directories
9506         containing program executables and supporting files need to be staged.
9507
9508   :term:`SYSROOT_PREPROCESS_FUNCS`
9509      A list of functions to execute after files are staged into the
9510      sysroot. These functions are usually used to apply additional
9511      processing on the staged files, or to stage additional files.
9512
9513   :term:`SYSTEMD_AUTO_ENABLE`
9514      When inheriting the :ref:`ref-classes-systemd` class,
9515      this variable specifies whether the specified service in
9516      :term:`SYSTEMD_SERVICE` should start
9517      automatically or not. By default, the service is enabled to
9518      automatically start at boot time. The default setting is in the
9519      :ref:`ref-classes-systemd` class as follows::
9520
9521         SYSTEMD_AUTO_ENABLE ??= "enable"
9522
9523      You can disable the service by setting the variable to "disable".
9524
9525   :term:`SYSTEMD_BOOT_CFG`
9526      When :term:`EFI_PROVIDER` is set to
9527      "systemd-boot", the :term:`SYSTEMD_BOOT_CFG` variable specifies the
9528      configuration file that should be used. By default, the
9529      :ref:`ref-classes-systemd-boot` class sets the
9530      :term:`SYSTEMD_BOOT_CFG` as follows::
9531
9532         SYSTEMD_BOOT_CFG ?= "${S}/loader.conf"
9533
9534      For information on Systemd-boot, see the `Systemd-boot
9535      documentation <https://www.freedesktop.org/wiki/Software/systemd/systemd-boot/>`__.
9536
9537   :term:`SYSTEMD_BOOT_ENTRIES`
9538      When :term:`EFI_PROVIDER` is set to
9539      "systemd-boot", the :term:`SYSTEMD_BOOT_ENTRIES` variable specifies a
9540      list of entry files (``*.conf``) to install that contain one boot
9541      entry per file. By default, the :ref:`ref-classes-systemd-boot` class
9542      sets the :term:`SYSTEMD_BOOT_ENTRIES` as follows::
9543
9544          SYSTEMD_BOOT_ENTRIES ?= ""
9545
9546      For information on Systemd-boot, see the `Systemd-boot
9547      documentation <https://www.freedesktop.org/wiki/Software/systemd/systemd-boot/>`__.
9548
9549   :term:`SYSTEMD_BOOT_TIMEOUT`
9550      When :term:`EFI_PROVIDER` is set to
9551      "systemd-boot", the :term:`SYSTEMD_BOOT_TIMEOUT` variable specifies the
9552      boot menu timeout in seconds. By default, the
9553      :ref:`ref-classes-systemd-boot` class sets the
9554      :term:`SYSTEMD_BOOT_TIMEOUT` as follows::
9555
9556         SYSTEMD_BOOT_TIMEOUT ?= "10"
9557
9558      For information on Systemd-boot, see the `Systemd-boot
9559      documentation <https://www.freedesktop.org/wiki/Software/systemd/systemd-boot/>`__.
9560
9561   :term:`SYSTEMD_DEFAULT_TARGET`
9562
9563      This variable allows to set the default unit that systemd starts at bootup.
9564      Usually, this is either ``multi-user.target`` or ``graphical.target``.
9565      This works by creating a ``default.target`` symbolic link to the chosen systemd
9566      target file.
9567
9568      See `systemd's documentation
9569      <https://www.freedesktop.org/software/systemd/man/systemd.special.html>`__
9570      for details.
9571
9572      For example, this variable is used in the :oe_git:`core-image-minimal-xfce.bb
9573      </meta-openembedded/tree/meta-xfce/recipes-core/images/core-image-minimal-xfce.bb>`
9574      recipe::
9575
9576          SYSTEMD_DEFAULT_TARGET = "graphical.target"
9577
9578   :term:`SYSTEMD_PACKAGES`
9579      When inheriting the :ref:`ref-classes-systemd` class,
9580      this variable locates the systemd unit files when they are not found
9581      in the main recipe's package. By default, the :term:`SYSTEMD_PACKAGES`
9582      variable is set such that the systemd unit files are assumed to
9583      reside in the recipes main package::
9584
9585         SYSTEMD_PACKAGES ?= "${PN}"
9586
9587      If these unit files are not in this recipe's main package, you need
9588      to use :term:`SYSTEMD_PACKAGES` to list the package or packages in which
9589      the build system can find the systemd unit files.
9590
9591   :term:`SYSTEMD_SERVICE`
9592      When inheriting the :ref:`ref-classes-systemd` class,
9593      this variable specifies the systemd service name for a package.
9594
9595      Multiple services can be specified, each one separated by a space.
9596
9597      When you specify this file in your recipe, use a package name
9598      override to indicate the package to which the value applies. Here is
9599      an example from the connman recipe::
9600
9601         SYSTEMD_SERVICE:${PN} = "connman.service"
9602
9603      The package overrides that can be specified are directly related to the value of
9604      :term:`SYSTEMD_PACKAGES`. Overrides not included in :term:`SYSTEMD_PACKAGES`
9605      will be silently ignored.
9606
9607   :term:`SYSVINIT_ENABLED_GETTYS`
9608      When using :ref:`SysVinit <dev-manual/new-recipe:enabling system services>`,
9609      specifies a space-separated list of the virtual terminals that should
9610      run a :wikipedia:`getty <Getty_(Unix)>` (allowing login), assuming
9611      :term:`USE_VT` is not set to "0".
9612
9613      The default value for :term:`SYSVINIT_ENABLED_GETTYS` is "1" (i.e. only
9614      run a getty on the first virtual terminal).
9615
9616   :term:`T`
9617      This variable points to a directory were BitBake places temporary
9618      files, which consist mostly of task logs and scripts, when building a
9619      particular recipe. The variable is typically set as follows::
9620
9621         T = "${WORKDIR}/temp"
9622
9623      The :term:`WORKDIR` is the directory into which
9624      BitBake unpacks and builds the recipe. The default ``bitbake.conf``
9625      file sets this variable.
9626
9627      The :term:`T` variable is not to be confused with the
9628      :term:`TMPDIR` variable, which points to the root of
9629      the directory tree where BitBake places the output of an entire
9630      build.
9631
9632   :term:`TARGET_ARCH`
9633      The target machine's architecture. The OpenEmbedded build system
9634      supports many architectures. Here is an example list of architectures
9635      supported. This list is by no means complete as the architecture is
9636      configurable:
9637
9638      - arm
9639      - i586
9640      - x86_64
9641      - powerpc
9642      - powerpc64
9643      - mips
9644      - mipsel
9645
9646      For additional information on machine architectures, see the
9647      :term:`TUNE_ARCH` variable.
9648
9649   :term:`TARGET_AS_ARCH`
9650      Specifies architecture-specific assembler flags for the target
9651      system. :term:`TARGET_AS_ARCH` is initialized from
9652      :term:`TUNE_ASARGS` by default in the BitBake
9653      configuration file (``meta/conf/bitbake.conf``)::
9654
9655         TARGET_AS_ARCH = "${TUNE_ASARGS}"
9656
9657   :term:`TARGET_CC_ARCH`
9658      Specifies architecture-specific C compiler flags for the target
9659      system. :term:`TARGET_CC_ARCH` is initialized from
9660      :term:`TUNE_CCARGS` by default.
9661
9662      .. note::
9663
9664         It is a common workaround to append :term:`LDFLAGS` to
9665         :term:`TARGET_CC_ARCH` in recipes that build software for the target that
9666         would not otherwise respect the exported :term:`LDFLAGS` variable.
9667
9668   :term:`TARGET_CC_KERNEL_ARCH`
9669      This is a specific kernel compiler flag for a CPU or Application
9670      Binary Interface (ABI) tune. The flag is used rarely and only for
9671      cases where a userspace :term:`TUNE_CCARGS` is not
9672      compatible with the kernel compilation. The :term:`TARGET_CC_KERNEL_ARCH`
9673      variable allows the kernel (and associated modules) to use a
9674      different configuration. See the
9675      ``meta/conf/machine/include/arm/feature-arm-thumb.inc`` file in the
9676      :term:`Source Directory` for an example.
9677
9678   :term:`TARGET_CFLAGS`
9679      Specifies the flags to pass to the C compiler when building for the
9680      target. When building in the target context,
9681      :term:`CFLAGS` is set to the value of this variable by
9682      default.
9683
9684      Additionally, the SDK's environment setup script sets the :term:`CFLAGS`
9685      variable in the environment to the :term:`TARGET_CFLAGS` value so that
9686      executables built using the SDK also have the flags applied.
9687
9688   :term:`TARGET_CPPFLAGS`
9689      Specifies the flags to pass to the C pre-processor (i.e. to both the
9690      C and the C++ compilers) when building for the target. When building
9691      in the target context, :term:`CPPFLAGS` is set to the
9692      value of this variable by default.
9693
9694      Additionally, the SDK's environment setup script sets the
9695      :term:`CPPFLAGS` variable in the environment to the :term:`TARGET_CPPFLAGS`
9696      value so that executables built using the SDK also have the flags
9697      applied.
9698
9699   :term:`TARGET_CXXFLAGS`
9700      Specifies the flags to pass to the C++ compiler when building for the
9701      target. When building in the target context,
9702      :term:`CXXFLAGS` is set to the value of this variable
9703      by default.
9704
9705      Additionally, the SDK's environment setup script sets the
9706      :term:`CXXFLAGS` variable in the environment to the :term:`TARGET_CXXFLAGS`
9707      value so that executables built using the SDK also have the flags
9708      applied.
9709
9710   :term:`TARGET_DBGSRC_DIR`
9711      Specifies the target path to debug source files. The default is
9712      ``/usr/src/debug/${PN}/${PV}``.
9713
9714   :term:`TARGET_FPU`
9715      Specifies the method for handling FPU code. For FPU-less targets,
9716      which include most ARM CPUs, the variable must be set to "soft". If
9717      not, the kernel emulation gets used, which results in a performance
9718      penalty.
9719
9720   :term:`TARGET_LD_ARCH`
9721      Specifies architecture-specific linker flags for the target system.
9722      :term:`TARGET_LD_ARCH` is initialized from
9723      :term:`TUNE_LDARGS` by default in the BitBake
9724      configuration file (``meta/conf/bitbake.conf``)::
9725
9726         TARGET_LD_ARCH = "${TUNE_LDARGS}"
9727
9728   :term:`TARGET_LDFLAGS`
9729      Specifies the flags to pass to the linker when building for the
9730      target. When building in the target context,
9731      :term:`LDFLAGS` is set to the value of this variable
9732      by default.
9733
9734      Additionally, the SDK's environment setup script sets the
9735      :term:`LDFLAGS` variable in the environment to the
9736      :term:`TARGET_LDFLAGS` value so that executables built using the SDK also
9737      have the flags applied.
9738
9739   :term:`TARGET_OS`
9740      Specifies the target's operating system. The variable can be set to
9741      "linux" for glibc-based systems (GNU C Library) and to "linux-musl"
9742      for musl libc. For ARM/EABI targets, the possible values are
9743      "linux-gnueabi" and "linux-musleabi".
9744
9745   :term:`TARGET_PREFIX`
9746      Specifies the prefix used for the toolchain binary target tools.
9747
9748      Depending on the type of recipe and the build target,
9749      :term:`TARGET_PREFIX` is set as follows:
9750
9751      -  For recipes building for the target machine, the value is
9752         "${:term:`TARGET_SYS`}-".
9753
9754      -  For native recipes, the build system sets the variable to the
9755         value of :term:`BUILD_PREFIX`.
9756
9757      -  For native SDK recipes (:ref:`ref-classes-nativesdk`),
9758         the build system sets the variable to the value of :term:`SDK_PREFIX`.
9759
9760   :term:`TARGET_SYS`
9761      Specifies the system, including the architecture and the operating
9762      system, for which the build is occurring in the context of the
9763      current recipe.
9764
9765      The OpenEmbedded build system automatically sets this variable based
9766      on :term:`TARGET_ARCH`,
9767      :term:`TARGET_VENDOR`, and
9768      :term:`TARGET_OS` variables.
9769
9770      .. note::
9771
9772         You do not need to set the :term:`TARGET_SYS` variable yourself.
9773
9774      Consider these two examples:
9775
9776      -  Given a native recipe on a 32-bit, x86 machine running Linux, the
9777         value is "i686-linux".
9778
9779      -  Given a recipe being built for a little-endian, MIPS target
9780         running Linux, the value might be "mipsel-linux".
9781
9782   :term:`TARGET_VENDOR`
9783      Specifies the name of the target vendor.
9784
9785   :term:`TCLIBC`
9786      Specifies the GNU standard C library (``libc``) variant to use during
9787      the build process.
9788
9789      You can select "glibc", "musl", "newlib", or "baremetal".
9790
9791   :term:`TCMODE`
9792      Specifies the toolchain selector. :term:`TCMODE` controls the
9793      characteristics of the generated packages and images by telling the
9794      OpenEmbedded build system which toolchain profile to use. By default,
9795      the OpenEmbedded build system builds its own internal toolchain. The
9796      variable's default value is "default", which uses that internal
9797      toolchain.
9798
9799      .. note::
9800
9801         If :term:`TCMODE` is set to a value other than "default", then it is your
9802         responsibility to ensure that the toolchain is compatible with the
9803         default toolchain. Using older or newer versions of these
9804         components might cause build problems. See
9805         :doc:`Release Information </migration-guides/index>` for your
9806         version of the Yocto Project, to find the specific components with
9807         which the toolchain must be compatible.
9808
9809      The :term:`TCMODE` variable is similar to :term:`TCLIBC`,
9810      which controls the variant of the GNU standard C library (``libc``)
9811      used during the build process: ``glibc`` or ``musl``.
9812
9813      With additional layers, it is possible to use a pre-compiled external
9814      toolchain. One example is the Sourcery G++ Toolchain. The support for
9815      this toolchain resides in the separate Mentor Graphics
9816      ``meta-sourcery`` layer at
9817      https://github.com/MentorEmbedded/meta-sourcery/.
9818
9819      The layer's ``README`` file contains information on how to use the
9820      Sourcery G++ Toolchain as an external toolchain. You will have to
9821      add the layer to your ``bblayers.conf`` file and then set the
9822      :term:`EXTERNAL_TOOLCHAIN` variable in your ``local.conf`` file to
9823      the location of the toolchain.
9824
9825      The fundamentals used for this example apply to any external
9826      toolchain. You can use ``meta-sourcery`` as a template for adding
9827      support for other external toolchains.
9828
9829      In addition to toolchain configuration, you will also need a
9830      corresponding toolchain recipe file. This recipe file needs to package
9831      up any pre-built objects in the toolchain such as ``libgcc``,
9832      ``libstdcc++``, any locales, and ``libc``.
9833
9834   :term:`TC_CXX_RUNTIME`
9835      Specifies the C/C++ STL and runtime variant to use during
9836      the build process. Default value is 'gnu'
9837
9838      You can select "gnu", "llvm", or "android".
9839
9840   :term:`TEMPLATECONF`
9841      Specifies the directory used by the build system to find templates
9842      from which to build the ``bblayers.conf`` and ``local.conf`` files.
9843      Use this variable if you wish to customize such files, and the default
9844      BitBake targets shown when sourcing the ``oe-init-build-env`` script.
9845
9846      For details, see the
9847      :ref:`dev-manual/custom-template-configuration-directory:creating a custom template configuration directory`
9848      section in the Yocto Project Development Tasks manual.
9849
9850      .. note::
9851
9852         You must set this variable in the external environment in order
9853         for it to work.
9854
9855   :term:`TEST_EXPORT_DIR`
9856      The location the OpenEmbedded build system uses to export tests when
9857      the :term:`TEST_EXPORT_ONLY` variable is set
9858      to "1".
9859
9860      The :term:`TEST_EXPORT_DIR` variable defaults to
9861      ``"${TMPDIR}/testimage/${PN}"``.
9862
9863   :term:`TEST_EXPORT_ONLY`
9864      Specifies to export the tests only. Set this variable to "1" if you
9865      do not want to run the tests but you want them to be exported in a
9866      manner that you to run them outside of the build system.
9867
9868   :term:`TEST_LOG_DIR`
9869      Holds the SSH log and the boot log for QEMU machines. The
9870      :term:`TEST_LOG_DIR` variable defaults to ``"${WORKDIR}/testimage"``.
9871
9872      .. note::
9873
9874         Actual test results reside in the task log (``log.do_testimage``),
9875         which is in the ``${WORKDIR}/temp/`` directory.
9876
9877   :term:`TEST_POWERCONTROL_CMD`
9878      For automated hardware testing, specifies the command to use to
9879      control the power of the target machine under test. Typically, this
9880      command would point to a script that performs the appropriate action
9881      (e.g. interacting with a web-enabled power strip). The specified
9882      command should expect to receive as the last argument "off", "on" or
9883      "cycle" specifying to power off, on, or cycle (power off and then
9884      power on) the device, respectively.
9885
9886   :term:`TEST_POWERCONTROL_EXTRA_ARGS`
9887      For automated hardware testing, specifies additional arguments to
9888      pass through to the command specified in
9889      :term:`TEST_POWERCONTROL_CMD`. Setting
9890      :term:`TEST_POWERCONTROL_EXTRA_ARGS` is optional. You can use it if you
9891      wish, for example, to separate the machine-specific and
9892      non-machine-specific parts of the arguments.
9893
9894   :term:`TEST_QEMUBOOT_TIMEOUT`
9895      The time in seconds allowed for an image to boot before automated
9896      runtime tests begin to run against an image. The default timeout
9897      period to allow the boot process to reach the login prompt is 500
9898      seconds. You can specify a different value in the ``local.conf``
9899      file.
9900
9901      For more information on testing images, see the
9902      ":ref:`test-manual/runtime-testing:performing automated runtime testing`"
9903      section in the Yocto Project Test Environment Manual.
9904
9905   :term:`TEST_SERIALCONTROL_CMD`
9906      For automated hardware testing, specifies the command to use to
9907      connect to the serial console of the target machine under test. This
9908      command simply needs to connect to the serial console and forward
9909      that connection to standard input and output as any normal terminal
9910      program does.
9911
9912      For example, to use the Picocom terminal program on serial device
9913      ``/dev/ttyUSB0`` at 115200bps, you would set the variable as follows::
9914
9915         TEST_SERIALCONTROL_CMD = "picocom /dev/ttyUSB0 -b 115200"
9916
9917   :term:`TEST_SERIALCONTROL_EXTRA_ARGS`
9918      For automated hardware testing, specifies additional arguments to
9919      pass through to the command specified in
9920      :term:`TEST_SERIALCONTROL_CMD`. Setting
9921      :term:`TEST_SERIALCONTROL_EXTRA_ARGS` is optional. You can use it if you
9922      wish, for example, to separate the machine-specific and
9923      non-machine-specific parts of the command.
9924
9925   :term:`TEST_SERVER_IP`
9926      The IP address of the build machine (host machine). This IP address
9927      is usually automatically detected. However, if detection fails, this
9928      variable needs to be set to the IP address of the build machine (i.e.
9929      where the build is taking place).
9930
9931      .. note::
9932
9933         The :term:`TEST_SERVER_IP` variable is only used for a small number of
9934         tests such as the "dnf" test suite, which needs to download packages
9935         from ``WORKDIR/oe-rootfs-repo``.
9936
9937   :term:`TEST_SUITES`
9938      An ordered list of tests (modules) to run against an image when
9939      performing automated runtime testing.
9940
9941      The OpenEmbedded build system provides a core set of tests that can
9942      be used against images.
9943
9944      .. note::
9945
9946         Currently, there is only support for running these tests under
9947         QEMU.
9948
9949      Tests include ``ping``, ``ssh``, ``df`` among others. You can add
9950      your own tests to the list of tests by appending :term:`TEST_SUITES` as
9951      follows::
9952
9953         TEST_SUITES:append = " mytest"
9954
9955      Alternatively, you can
9956      provide the "auto" option to have all applicable tests run against
9957      the image::
9958
9959         TEST_SUITES:append = " auto"
9960
9961      Using this option causes the
9962      build system to automatically run tests that are applicable to the
9963      image. Tests that are not applicable are skipped.
9964
9965      The order in which tests are run is important. Tests that depend on
9966      another test must appear later in the list than the test on which
9967      they depend. For example, if you append the list of tests with two
9968      tests (``test_A`` and ``test_B``) where ``test_B`` is dependent on
9969      ``test_A``, then you must order the tests as follows::
9970
9971         TEST_SUITES = "test_A test_B"
9972
9973      For more information on testing images, see the
9974      ":ref:`test-manual/runtime-testing:performing automated runtime testing`"
9975      section in the Yocto Project Test Environment Manual.
9976
9977   :term:`TEST_TARGET`
9978      Specifies the target controller to use when running tests against a
9979      test image. The default controller to use is "qemu"::
9980
9981         TEST_TARGET = "qemu"
9982
9983      A target controller is a class that defines how an image gets
9984      deployed on a target and how a target is started. A layer can extend
9985      the controllers by adding a module in the layer's
9986      ``/lib/oeqa/controllers`` directory and by inheriting the
9987      ``BaseTarget`` class, which is an abstract class that cannot be used
9988      as a value of :term:`TEST_TARGET`.
9989
9990      You can provide the following arguments with :term:`TEST_TARGET`:
9991
9992      -  *"qemu":* Boots a QEMU image and runs the tests. See the
9993         ":ref:`test-manual/runtime-testing:enabling runtime tests on qemu`" section
9994         in the Yocto Project Test Environment Manual for more
9995         information.
9996
9997      -  *"simpleremote":* Runs the tests on target hardware that is
9998         already up and running. The hardware can be on the network or it
9999         can be a device running an image on QEMU. You must also set
10000         :term:`TEST_TARGET_IP` when you use
10001         "simpleremote".
10002
10003         .. note::
10004
10005            This argument is defined in
10006            ``meta/lib/oeqa/controllers/simpleremote.py``.
10007
10008      For information on running tests on hardware, see the
10009      ":ref:`test-manual/runtime-testing:enabling runtime tests on hardware`"
10010      section in the Yocto Project Test Environment Manual.
10011
10012   :term:`TEST_TARGET_IP`
10013      The IP address of your hardware under test. The :term:`TEST_TARGET_IP`
10014      variable has no effect when :term:`TEST_TARGET` is
10015      set to "qemu".
10016
10017      When you specify the IP address, you can also include a port. Here is
10018      an example::
10019
10020         TEST_TARGET_IP = "192.168.1.4:2201"
10021
10022      Specifying a port is
10023      useful when SSH is started on a non-standard port or in cases when
10024      your hardware under test is behind a firewall or network that is not
10025      directly accessible from your host and you need to do port address
10026      translation.
10027
10028   :term:`TESTIMAGE_AUTO`
10029      Automatically runs the series of automated tests for images when an
10030      image is successfully built. Setting :term:`TESTIMAGE_AUTO` to "1" causes
10031      any image that successfully builds to automatically boot under QEMU.
10032      Using the variable also adds in dependencies so that any SDK for
10033      which testing is requested is automatically built first.
10034
10035      These tests are written in Python making use of the ``unittest``
10036      module, and the majority of them run commands on the target system
10037      over ``ssh``. You can set this variable to "1" in your ``local.conf``
10038      file in the :term:`Build Directory` to have the
10039      OpenEmbedded build system automatically run these tests after an
10040      image successfully builds:
10041
10042         TESTIMAGE_AUTO = "1"
10043
10044      For more information
10045      on enabling, running, and writing these tests, see the
10046      ":ref:`test-manual/runtime-testing:performing automated runtime testing`"
10047      section in the Yocto Project Test Environment Manual and the
10048      ":ref:`ref-classes-testimage`" section.
10049
10050   :term:`TESTIMAGE_FAILED_QA_ARTIFACTS`
10051      When using the :ref:`ref-classes-testimage` class, the variable
10052      :term:`TESTIMAGE_FAILED_QA_ARTIFACTS`  lists space-separated paths on the
10053      target to retrieve onto the host.
10054
10055   :term:`THISDIR`
10056      The directory in which the file BitBake is currently parsing is
10057      located. Do not manually set this variable.
10058
10059   :term:`TIME`
10060      The time the build was started. Times appear using the hour, minute,
10061      and second (HMS) format (e.g. "140159" for one minute and fifty-nine
10062      seconds past 1400 hours).
10063
10064   :term:`TMPDIR`
10065      This variable is the base directory the OpenEmbedded build system
10066      uses for all build output and intermediate files (other than the
10067      shared state cache). By default, the :term:`TMPDIR` variable points to
10068      ``tmp`` within the :term:`Build Directory`.
10069
10070      If you want to establish this directory in a location other than the
10071      default, you can uncomment and edit the following statement in the
10072      ``conf/local.conf`` file in the :term:`Source Directory`::
10073
10074         #TMPDIR = "${TOPDIR}/tmp"
10075
10076      An example use for this scenario is to set :term:`TMPDIR` to a local disk,
10077      which does not use NFS, while having the :term:`Build Directory` use NFS.
10078
10079      The filesystem used by :term:`TMPDIR` must have standard filesystem
10080      semantics (i.e. mixed-case files are unique, POSIX file locking, and
10081      persistent inodes). Due to various issues with NFS and bugs in some
10082      implementations, NFS does not meet this minimum requirement.
10083      Consequently, :term:`TMPDIR` cannot be on NFS.
10084
10085   :term:`TOOLCHAIN_HOST_TASK`
10086      This variable lists packages the OpenEmbedded build system uses when
10087      building an SDK, which contains a cross-development environment. The
10088      packages specified by this variable are part of the toolchain set
10089      that runs on the :term:`SDKMACHINE`, and each
10090      package should usually have the prefix ``nativesdk-``. For example,
10091      consider the following command when building an SDK::
10092
10093         $ bitbake -c populate_sdk imagename
10094
10095      In this case, a default list of packages is
10096      set in this variable, but you can add additional packages to the
10097      list. See the
10098      ":ref:`sdk-manual/appendix-customizing-standard:adding individual packages to the standard sdk`" section
10099      in the Yocto Project Application Development and the Extensible
10100      Software Development Kit (eSDK) manual for more information.
10101
10102      For background information on cross-development toolchains in the
10103      Yocto Project development environment, see the
10104      ":ref:`sdk-manual/intro:the cross-development toolchain`"
10105      section in the Yocto Project Overview and Concepts Manual. For
10106      information on setting up a cross-development environment, see the
10107      :doc:`/sdk-manual/index` manual.
10108
10109      Note that this variable applies to building an SDK, not an eSDK,
10110      in which case the :term:`TOOLCHAIN_HOST_TASK_ESDK` setting should be
10111      used instead.
10112
10113   :term:`TOOLCHAIN_HOST_TASK_ESDK`
10114      This variable allows to extend what is installed in the host
10115      portion of an eSDK. This is similar to :term:`TOOLCHAIN_HOST_TASK`
10116      applying to SDKs.
10117
10118   :term:`TOOLCHAIN_OPTIONS`
10119      This variable holds extra options passed to the compiler and the linker
10120      for non ``-native`` recipes as they have to point to their custom
10121      ``sysroot`` folder pointed to by :term:`RECIPE_SYSROOT`::
10122
10123         TOOLCHAIN_OPTIONS = " --sysroot=${RECIPE_SYSROOT}"
10124
10125      Native recipes don't need this variable to be set, as they are
10126      built for the host machine with the native compiler.
10127
10128   :term:`TOOLCHAIN_OUTPUTNAME`
10129      This variable defines the name used for the toolchain output. The
10130      :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class sets
10131      the :term:`TOOLCHAIN_OUTPUTNAME` variable as follows::
10132
10133         TOOLCHAIN_OUTPUTNAME ?= "${SDK_NAME}-toolchain-${SDK_VERSION}"
10134
10135      See
10136      the :term:`SDK_NAME` and
10137      :term:`SDK_VERSION` variables for additional
10138      information.
10139
10140   :term:`TOOLCHAIN_TARGET_TASK`
10141      This variable lists packages the OpenEmbedded build system uses when
10142      it creates the target part of an SDK (i.e. the part built for the
10143      target hardware), which includes libraries and headers. Use this
10144      variable to add individual packages to the part of the SDK that runs
10145      on the target. See the
10146      ":ref:`sdk-manual/appendix-customizing-standard:adding individual packages to the standard sdk`" section
10147      in the Yocto Project Application Development and the Extensible
10148      Software Development Kit (eSDK) manual for more information.
10149
10150      For background information on cross-development toolchains in the
10151      Yocto Project development environment, see the
10152      ":ref:`sdk-manual/intro:the cross-development toolchain`"
10153      section in the Yocto Project Overview and Concepts Manual. For
10154      information on setting up a cross-development environment, see the
10155      :doc:`/sdk-manual/index` manual.
10156
10157   :term:`TOPDIR`
10158      See :term:`bitbake:TOPDIR` in the BitBake manual.
10159
10160   :term:`TRANSLATED_TARGET_ARCH`
10161      A sanitized version of :term:`TARGET_ARCH`. This
10162      variable is used where the architecture is needed in a value where
10163      underscores are not allowed, for example within package filenames. In
10164      this case, dash characters replace any underscore characters used in
10165      :term:`TARGET_ARCH`.
10166
10167      Do not edit this variable.
10168
10169   :term:`TUNE_ARCH`
10170      The GNU canonical architecture for a specific architecture (i.e.
10171      ``arm``, ``armeb``, ``mips``, ``mips64``, and so forth). BitBake uses
10172      this value to setup configuration.
10173
10174      :term:`TUNE_ARCH` definitions are specific to a given architecture. The
10175      definitions can be a single static definition, or can be dynamically
10176      adjusted. You can see details for a given CPU family by looking at
10177      the architecture's ``README`` file. For example, the
10178      ``meta/conf/machine/include/mips/README`` file in the
10179      :term:`Source Directory` provides information for
10180      :term:`TUNE_ARCH` specific to the ``mips`` architecture.
10181
10182      :term:`TUNE_ARCH` is tied closely to
10183      :term:`TARGET_ARCH`, which defines the target
10184      machine's architecture. The BitBake configuration file
10185      (``meta/conf/bitbake.conf``) sets :term:`TARGET_ARCH` as follows::
10186
10187         TARGET_ARCH = "${TUNE_ARCH}"
10188
10189      The following list, which is by no means complete since architectures
10190      are configurable, shows supported machine architectures:
10191
10192      - arm
10193      - i586
10194      - x86_64
10195      - powerpc
10196      - powerpc64
10197      - mips
10198      - mipsel
10199
10200   :term:`TUNE_ASARGS`
10201      Specifies architecture-specific assembler flags for the target
10202      system. The set of flags is based on the selected tune features.
10203      :term:`TUNE_ASARGS` is set using the tune include files, which are
10204      typically under ``meta/conf/machine/include/`` and are influenced
10205      through :term:`TUNE_FEATURES`. For example, the
10206      ``meta/conf/machine/include/x86/arch-x86.inc`` file defines the flags
10207      for the x86 architecture as follows::
10208
10209         TUNE_ASARGS += "${@bb.utils.contains("TUNE_FEATURES", "mx32", "-x32", "", d)}"
10210
10211      .. note::
10212
10213         Board Support Packages (BSPs) select the tune. The selected tune,
10214         in turn, affects the tune variables themselves (i.e. the tune can
10215         supply its own set of flags).
10216
10217   :term:`TUNE_CCARGS`
10218      Specifies architecture-specific C compiler flags for the target
10219      system. The set of flags is based on the selected tune features.
10220      :term:`TUNE_CCARGS` is set using the tune include files, which are
10221      typically under ``meta/conf/machine/include/`` and are influenced
10222      through :term:`TUNE_FEATURES`.
10223
10224      .. note::
10225
10226         Board Support Packages (BSPs) select the tune. The selected tune,
10227         in turn, affects the tune variables themselves (i.e. the tune can
10228         supply its own set of flags).
10229
10230   :term:`TUNE_FEATURES`
10231      Features used to "tune" a compiler for optimal use given a specific
10232      processor. The features are defined within the tune files and allow
10233      arguments (i.e. ``TUNE_*ARGS``) to be dynamically generated based on
10234      the features.
10235
10236      The OpenEmbedded build system verifies the features to be sure they
10237      are not conflicting and that they are supported.
10238
10239      The BitBake configuration file (``meta/conf/bitbake.conf``) defines
10240      :term:`TUNE_FEATURES` as follows::
10241
10242         TUNE_FEATURES ??= "${TUNE_FEATURES:tune-${DEFAULTTUNE}}"
10243
10244      See the :term:`DEFAULTTUNE` variable for more information.
10245
10246   :term:`TUNE_LDARGS`
10247      Specifies architecture-specific linker flags for the target system.
10248      The set of flags is based on the selected tune features.
10249      :term:`TUNE_LDARGS` is set using the tune include files, which are
10250      typically under ``meta/conf/machine/include/`` and are influenced
10251      through :term:`TUNE_FEATURES`. For example, the
10252      ``meta/conf/machine/include/x86/arch-x86.inc`` file defines the flags
10253      for the x86 architecture as follows::
10254
10255         TUNE_LDARGS += "${@bb.utils.contains("TUNE_FEATURES", "mx32", "-m elf32_x86_64", "", d)}"
10256
10257      .. note::
10258
10259         Board Support Packages (BSPs) select the tune. The selected tune,
10260         in turn, affects the tune variables themselves (i.e. the tune can
10261         supply its own set of flags).
10262
10263   :term:`TUNE_PKGARCH`
10264      The package architecture understood by the packaging system to define
10265      the architecture, ABI, and tuning of output packages. The specific
10266      tune is defined using the "_tune" override as follows::
10267
10268         TUNE_PKGARCH:tune-tune = "tune"
10269
10270      These tune-specific package architectures are defined in the machine
10271      include files. Here is an example of the "core2-32" tuning as used in
10272      the ``meta/conf/machine/include/x86/tune-core2.inc`` file::
10273
10274         TUNE_PKGARCH:tune-core2-32 = "core2-32"
10275
10276   :term:`TUNECONFLICTS[feature]`
10277      Specifies CPU or Application Binary Interface (ABI) tuning features
10278      that conflict with feature.
10279
10280      Known tuning conflicts are specified in the machine include files in
10281      the :term:`Source Directory`. Here is an example from
10282      the ``meta/conf/machine/include/mips/arch-mips.inc`` include file
10283      that lists the "o32" and "n64" features as conflicting with the "n32"
10284      feature::
10285
10286         TUNECONFLICTS[n32] = "o32 n64"
10287
10288   :term:`TUNEVALID[feature]`
10289      Specifies a valid CPU or Application Binary Interface (ABI) tuning
10290      feature. The specified feature is stored as a flag. Valid features
10291      are specified in the machine include files (e.g.
10292      ``meta/conf/machine/include/arm/arch-arm.inc``). Here is an example
10293      from that file::
10294
10295         TUNEVALID[bigendian] = "Enable big-endian mode."
10296
10297      See the machine include files in the :term:`Source Directory`
10298      for these features.
10299
10300   :term:`UBOOT_BINARY`
10301      Specifies the name of the binary build by U-Boot.
10302
10303   :term:`UBOOT_CONFIG`
10304      Configures one or more U-Boot configurations to build. Each
10305      configuration can define the :term:`UBOOT_MACHINE` and optionally the
10306      :term:`IMAGE_FSTYPES` and the :term:`UBOOT_BINARY`.
10307
10308      Here is an example from the ``meta-freescale`` layer. ::
10309
10310         UBOOT_CONFIG ??= "sdcard-ifc-secure-boot sdcard-ifc sdcard-qspi lpuart qspi secure-boot nor"
10311         UBOOT_CONFIG[nor] = "ls1021atwr_nor_defconfig"
10312         UBOOT_CONFIG[sdcard-ifc] = "ls1021atwr_sdcard_ifc_defconfig,,u-boot-with-spl-pbl.bin"
10313         UBOOT_CONFIG[sdcard-qspi] = "ls1021atwr_sdcard_qspi_defconfig,,u-boot-with-spl-pbl.bin"
10314         UBOOT_CONFIG[lpuart] = "ls1021atwr_nor_lpuart_defconfig"
10315         UBOOT_CONFIG[qspi] = "ls1021atwr_qspi_defconfig"
10316         UBOOT_CONFIG[secure-boot] = "ls1021atwr_nor_SECURE_BOOT_defconfig"
10317         UBOOT_CONFIG[sdcard-ifc-secure-boot] = "ls1021atwr_sdcard_ifc_SECURE_BOOT_defconfig,,u-boot-with-spl-pbl.bin"
10318
10319      In this example, all possible seven configurations are selected. Each
10320      configuration specifies "..._defconfig" as :term:`UBOOT_MACHINE`, and
10321      the "sd..." configurations define an individual name for
10322      :term:`UBOOT_BINARY`. No configuration defines a second parameter for
10323      :term:`IMAGE_FSTYPES` to use for the U-Boot image.
10324
10325      For more information on how the :term:`UBOOT_CONFIG` is handled, see the
10326      :ref:`ref-classes-uboot-config` class.
10327
10328   :term:`UBOOT_DTB_LOADADDRESS`
10329      Specifies the load address for the dtb image used by U-Boot. During FIT
10330      image creation, the :term:`UBOOT_DTB_LOADADDRESS` variable is used in
10331      :ref:`ref-classes-kernel-fitimage` class to specify the load address to be
10332      used in creating the dtb sections of Image Tree Source for the FIT image.
10333
10334   :term:`UBOOT_DTBO_LOADADDRESS`
10335      Specifies the load address for the dtbo image used by U-Boot.  During FIT
10336      image creation, the :term:`UBOOT_DTBO_LOADADDRESS` variable is used in
10337      :ref:`ref-classes-kernel-fitimage` class to specify the load address to be
10338      used in creating the dtbo sections of Image Tree Source for the FIT image.
10339
10340   :term:`UBOOT_ENTRYPOINT`
10341      Specifies the entry point for the U-Boot image. During U-Boot image
10342      creation, the :term:`UBOOT_ENTRYPOINT` variable is passed as a
10343      command-line parameter to the ``uboot-mkimage`` utility.
10344
10345      To pass a 64 bit address for FIT image creation, you will need to set:
10346      -  The :term:`FIT_ADDRESS_CELLS` variable for FIT image creation.
10347      -  The :term:`UBOOT_FIT_ADDRESS_CELLS` variable for U-Boot FIT image creation.
10348
10349      This variable is used by the :ref:`ref-classes-kernel-fitimage`,
10350      :ref:`ref-classes-kernel-uimage`, :ref:`ref-classes-kernel`,
10351      :ref:`ref-classes-uboot-config` and :ref:`ref-classes-uboot-sign`
10352      classes.
10353
10354   :term:`UBOOT_ENV`
10355      This variable allows to add additional environment variables or a script
10356      to be installed together with U-Boot.
10357      This file, typically ``uEnv.txt`` or ``boot.cmd``, is installed in
10358      ``/boot`` as well as copied to the :term:`DEPLOYDIR` directory.
10359
10360      For machine configurations needing one of these files a ``.bbappend``
10361      file should include it in the :term:`SRC_URI` of the U-Boot recipe.
10362
10363      If the variable :term:`UBOOT_ENV_SUFFIX` is set to ``scr`` the script is
10364      packaged as a uImage (``mkimage -T script..``) otherwise it gets
10365      installed verbatim.
10366
10367      Some examples:
10368
10369      -  Adding a script ``boot.cmd`` as a uImage to ``/boot``::
10370
10371            UBOOT_ENV = "boot"
10372            UBOOT_ENV_SUFFIX = "scr"
10373            SRC_URI += "file://${UBOOT_ENV_SRC}"
10374
10375      -  Adding a script ``uEnv.txt`` as a plain text file to ``/boot``::
10376
10377            UBOOT_ENV = "uEnv"
10378            UBOOT_ENV_SUFFIX = "txt"
10379            SRC_URI += "file://${UBOOT_ENV_BINARY}"
10380
10381   :term:`UBOOT_ENV_SRC_SUFFIX`
10382      If :term:`UBOOT_ENV_SUFFIX` is set to ``scr`` this is the suffix of the
10383      plain text script file as it is specified in the :term:`SRC_URI` of the
10384      U-Boot recipe. It defaults to ``cmd``.
10385
10386   :term:`UBOOT_ENV_SUFFIX`
10387      If this variable is set to ``scr`` the script referred to by
10388      :term:`UBOOT_ENV` gets packaged as a uImage before it gets installed.
10389      The default is ``txt`` which means the script is installed as-is, with
10390      no modification.
10391
10392   :term:`UBOOT_FIT_ADDRESS_CELLS`
10393      Specifies the value of the ``#address-cells`` value for the
10394      description of the U-Boot FIT image.
10395
10396      The default value is set to "1" by the :ref:`ref-classes-uboot-sign`
10397      class, which corresponds to 32 bit addresses.
10398
10399      For platforms that need to set 64 bit addresses in
10400      :term:`UBOOT_LOADADDRESS` and :term:`UBOOT_ENTRYPOINT`, you need to
10401      set this value to "2", as two 32 bit values (cells) will be needed
10402      to represent such addresses.
10403
10404      Here is an example setting "0x400000000" as a load address::
10405
10406         UBOOT_FIT_ADDRESS_CELLS = "2"
10407         UBOOT_LOADADDRESS= "0x04 0x00000000"
10408
10409      See `more details about #address-cells <https://elinux.org/Device_Tree_Usage#How_Addressing_Works>`__.
10410
10411   :term:`UBOOT_FIT_ARM_TRUSTED_FIRMWARE`
10412      `Trusted Firmware-A (TF-A) <https://www.trustedfirmware.org/projects/tf-a>`__
10413      is a reference implementation of secure world software for Arm A-Profile
10414      architectures (Armv8-A and Armv7-A), including an Exception Level 3 (EL3)
10415      Secure Monitor. This variable enables the generation of a U-Boot FIT
10416      image with a Trusted Firmware-A (TF-A) binary.
10417
10418      Its default value is "0", so set it to "1" to enable this functionality::
10419
10420         UBOOT_FIT_ARM_TRUSTED_FIRMWARE = "1"
10421
10422   :term:`UBOOT_FIT_ARM_TRUSTED_FIRMWARE_IMAGE`
10423      Specifies the path to the Trusted Firmware-A (TF-A) binary. Its default
10424      value is "bl31.bin"::
10425
10426         UBOOT_FIT_ARM_TRUSTED_FIRMWARE_IMAGE ?= "bl31.bin"
10427
10428      If a relative path is provided, the file is expected to be relative to
10429      U-Boot's :term:`B` directory. An absolute path can be provided too,
10430      e.g.::
10431
10432         UBOOT_FIT_ARM_TRUSTED_FIRMWARE_IMAGE ?= "${DEPLOY_DIR_IMAGE}/bl31.bin"
10433
10434      If the Trusted Firmware-A (TF-A) binary is built in a separate recipe,
10435      you must add the necessary dependency in a U-Boot ``.bbappend`` file. The
10436      recipe name for Trusted Firmware-A (TF-A) binary is
10437      ``trusted-firmware-a``, which comes from the
10438      :yocto_git:`meta-arm </meta-arm>` layer::
10439
10440         do_compile[depends] += "trusted-firmware-a:do_deploy"
10441
10442   :term:`UBOOT_FIT_CONF_FIRMWARE`
10443      Adds one image to the ``firmware`` property of the configuration node of
10444      the U-Boot Image Tree Source (ITS). Sets the ``firmware`` property to
10445      select the image to boot first::
10446
10447         UBOOT_FIT_CONF_FIRMWARE = "fwa"
10448
10449      If not set, the first entry in "loadables" is used to boot instead.
10450
10451   :term:`UBOOT_FIT_CONF_USER_LOADABLES`
10452      Adds one or more user-defined images to the ``loadables`` property of the
10453      configuration node of the U-Boot Image Tree Source (ITS). This variable
10454      is handled by the local shell in the recipe so appropriate escaping
10455      should be done, e.g. escaping quotes.::
10456
10457         UBOOT_FIT_CONF_USER_LOADABLES = '\"fwa\", \"fwb\"'
10458
10459   :term:`UBOOT_FIT_DESC`
10460      Specifies the description string encoded into a U-Boot fitImage. The default
10461      value is set by the :ref:`ref-classes-uboot-sign` class as follows::
10462
10463         UBOOT_FIT_DESC ?= "U-Boot fitImage for ${DISTRO_NAME}/${PV}/${MACHINE}"
10464
10465   :term:`UBOOT_FIT_GENERATE_KEYS`
10466      Decides whether to generate the keys for signing the U-Boot fitImage if
10467      they don't already exist. The keys are created in :term:`SPL_SIGN_KEYDIR`.
10468      The default value is "0".
10469
10470      Enable this as follows::
10471
10472         UBOOT_FIT_GENERATE_KEYS = "1"
10473
10474      This variable is used in the :ref:`ref-classes-uboot-sign` class.
10475
10476   :term:`UBOOT_FIT_HASH_ALG`
10477      Specifies the hash algorithm used in creating the U-Boot FIT Image.
10478      It is set by default to ``sha256`` by the :ref:`ref-classes-uboot-sign`
10479      class.
10480
10481   :term:`UBOOT_FIT_KEY_GENRSA_ARGS`
10482      Arguments to ``openssl genrsa`` for generating a RSA private key for
10483      signing the U-Boot FIT image. The default value of this variable
10484      is set to "-F4" by the :ref:`ref-classes-uboot-sign` class.
10485
10486   :term:`UBOOT_FIT_KEY_REQ_ARGS`
10487      Arguments to ``openssl req`` for generating a certificate for signing
10488      the U-Boot FIT image. The default value is "-batch -new" by the
10489      :ref:`ref-classes-uboot-sign` class, "batch" for
10490      non interactive mode and "new" for generating new keys.
10491
10492   :term:`UBOOT_FIT_KEY_SIGN_PKCS`
10493      Format for the public key certificate used for signing the U-Boot FIT
10494      image. The default value is set to "x509" by the
10495      :ref:`ref-classes-uboot-sign` class.
10496
10497   :term:`UBOOT_FIT_SIGN_ALG`
10498      Specifies the signature algorithm used in creating the U-Boot FIT Image.
10499      This variable is set by default to "rsa2048" by the
10500      :ref:`ref-classes-uboot-sign` class.
10501
10502   :term:`UBOOT_FIT_SIGN_NUMBITS`
10503      Size of the private key used in signing the U-Boot FIT image, in number
10504      of bits. The default value for this variable is set to "2048"
10505      by the :ref:`ref-classes-uboot-sign` class.
10506
10507   :term:`UBOOT_FIT_TEE`
10508      A Trusted Execution Environment (TEE) is a secure environment for
10509      executing code, ensuring high levels of trust in asset management within
10510      the surrounding system. This variable enables the generation of a U-Boot
10511      FIT image with a Trusted Execution Environment (TEE) binary.
10512
10513      Its default value is "0", so set it to "1" to enable this functionality::
10514
10515         UBOOT_FIT_TEE = "1"
10516
10517   :term:`UBOOT_FIT_TEE_IMAGE`
10518      Specifies the path to the Trusted Execution Environment (TEE) binary. Its
10519      default value is "tee-raw.bin"::
10520
10521         UBOOT_FIT_TEE_IMAGE ?= "tee-raw.bin"
10522
10523      If a relative path is provided, the file is expected to be relative to
10524      U-Boot's :term:`B` directory. An absolute path can be provided too,
10525      e.g.::
10526
10527         UBOOT_FIT_TEE_IMAGE ?= "${DEPLOY_DIR_IMAGE}/tee-raw.bin"
10528
10529      If the Trusted Execution Environment (TEE) binary is built in a separate
10530      recipe, you must add the necessary dependency in a U-Boot ``.bbappend``
10531      file. The recipe name for Trusted Execution Environment (TEE) binary is
10532      ``optee-os``, which comes from the :yocto_git:`meta-arm </meta-arm>`
10533      layer::
10534
10535         do_compile[depends] += "optee-os:do_deploy"
10536
10537   :term:`UBOOT_FIT_USER_SETTINGS`
10538      Add a user-specific snippet to the U-Boot Image Tree Source (ITS). This
10539      variable allows the user to add one or more user-defined ``/images`` node
10540      to the U-Boot Image Tree Source (ITS). For more details, please refer to
10541      https://fitspec.osfw.foundation/\ .
10542
10543      The original content of the U-Boot Image Tree Source (ITS) is as
10544      follows::
10545
10546         images {
10547             uboot {
10548                 description = "U-Boot image";
10549                 data = /incbin/("u-boot-nodtb.bin");
10550                 type = "standalone";
10551                 os = "u-boot";
10552                 arch = "";
10553                 compression = "none";
10554                 load = <0x80000000>;
10555                 entry = <0x80000000>;
10556             };
10557         };
10558
10559      Users can include their custom ITS snippet in this variable, e.g.::
10560
10561         UBOOT_FIT_FWA_ITS = '\
10562             fwa {\n\
10563                 description = \"FW A\";\n\
10564                 data = /incbin/(\"fwa.bin\");\n\
10565                 type = \"firmware\";\n\
10566                 arch = \"\";\n\
10567                 os = \"\";\n\
10568                 load = <0xb2000000>;\n\
10569                 entry = <0xb2000000>;\n\
10570                 compression = \"none\";\n\
10571             };\n\
10572         '
10573
10574         UBOOT_FIT_USER_SETTINGS = "${UBOOT_FIT_FWA_ITS}"
10575
10576      This variable is handled by the local shell in the recipe so appropriate
10577      escaping should be done, e.g. escaping quotes and adding newlines with
10578      ``\n``.
10579
10580      The generated content of the U-Boot Image Tree Source (ITS) is as
10581      follows::
10582
10583         images {
10584             uboot {
10585                 description = "U-Boot image";
10586                 data = /incbin/("u-boot-nodtb.bin");
10587                 type = "standalone";
10588                 os = "u-boot";
10589                 arch = "";
10590                 compression = "none";
10591                 load = <0x80000000>;
10592                 entry = <0x80000000>;
10593             };
10594             fwa {
10595                 description = "FW A";
10596                 data = /incbin/("fwa.bin");
10597                 type = "firmware";
10598                 arch = "";
10599                 os = "";
10600                 load = <0xb2000000>;
10601                 entry = <0xb2000000>;
10602                 compression = "none";
10603             };
10604         };
10605
10606   :term:`UBOOT_FITIMAGE_ENABLE`
10607      This variable allows to generate a FIT image for U-Boot, which is one
10608      of the ways to implement a verified boot process.
10609
10610      Its default value is "0", so set it to "1" to enable this functionality::
10611
10612         UBOOT_FITIMAGE_ENABLE = "1"
10613
10614      See the :ref:`ref-classes-uboot-sign` class for details.
10615
10616   :term:`UBOOT_LOADADDRESS`
10617      Specifies the load address for the U-Boot image. During U-Boot image
10618      creation, the :term:`UBOOT_LOADADDRESS` variable is passed as a
10619      command-line parameter to the ``uboot-mkimage`` utility.
10620
10621      To pass a 64 bit address, you will also need to set:
10622
10623      -  The :term:`FIT_ADDRESS_CELLS` variable for FIT image creation.
10624      -  The :term:`UBOOT_FIT_ADDRESS_CELLS` variable for U-Boot FIT image creation.
10625
10626      This variable is used by the :ref:`ref-classes-kernel-fitimage`,
10627      :ref:`ref-classes-kernel-uimage`, :ref:`ref-classes-kernel`,
10628      :ref:`ref-classes-uboot-config` and :ref:`ref-classes-uboot-sign`
10629      classes.
10630
10631   :term:`UBOOT_LOCALVERSION`
10632      Appends a string to the name of the local version of the U-Boot
10633      image. For example, assuming the version of the U-Boot image built
10634      was "2013.10", the full version string reported by U-Boot would be
10635      "2013.10-yocto" given the following statement::
10636
10637         UBOOT_LOCALVERSION = "-yocto"
10638
10639   :term:`UBOOT_MACHINE`
10640      Specifies the value passed on the ``make`` command line when building
10641      a U-Boot image. The value indicates the target platform
10642      configuration. You typically set this variable from the machine
10643      configuration file (i.e. ``conf/machine/machine_name.conf``).
10644
10645      Please see the "Selection of Processor Architecture and Board Type"
10646      section in the U-Boot README for valid values for this variable.
10647
10648   :term:`UBOOT_MAKE_TARGET`
10649      Specifies the target called in the ``Makefile``. The default target
10650      is "all".
10651
10652   :term:`UBOOT_MKIMAGE`
10653      Specifies the name of the mkimage command as used by the
10654      :ref:`ref-classes-kernel-fitimage` class to assemble
10655      the FIT image. This can be used to substitute an alternative command, wrapper
10656      script or function if desired. The default is "uboot-mkimage".
10657
10658   :term:`UBOOT_MKIMAGE_DTCOPTS`
10659      Options for the device tree compiler passed to ``mkimage -D`` feature
10660      while creating a FIT image with the :ref:`ref-classes-kernel-fitimage`
10661      class. If :term:`UBOOT_MKIMAGE_DTCOPTS` is not set then the
10662      :ref:`ref-classes-kernel-fitimage` class will not pass the ``-D`` option
10663      to ``mkimage``.
10664
10665      This variable is also used by the :ref:`ref-classes-uboot-sign` class.
10666
10667   :term:`UBOOT_MKIMAGE_KERNEL_TYPE`
10668      Specifies the type argument for the kernel as passed to ``uboot-mkimage``.
10669      The default value is "kernel".
10670
10671   :term:`UBOOT_MKIMAGE_SIGN`
10672      Specifies the name of the mkimage command as used by the
10673      :ref:`ref-classes-kernel-fitimage` class to sign
10674      the FIT image after it has been assembled (if enabled). This can be used
10675      to substitute an alternative command, wrapper script or function if
10676      desired. The default is "${:term:`UBOOT_MKIMAGE`}".
10677
10678   :term:`UBOOT_MKIMAGE_SIGN_ARGS`
10679      Optionally specifies additional arguments for the
10680      :ref:`ref-classes-kernel-fitimage` class to pass to the
10681      mkimage command when signing the FIT image.
10682
10683   :term:`UBOOT_RD_ENTRYPOINT`
10684      Specifies the entrypoint for the RAM disk image. During FIT image
10685      creation, the :term:`UBOOT_RD_ENTRYPOINT` variable is used in
10686      :ref:`ref-classes-kernel-fitimage` class to specify the entrypoint to be
10687      used in creating the Image Tree Source for the FIT image.
10688
10689   :term:`UBOOT_RD_LOADADDRESS`
10690      Specifies the load address for the RAM disk image. During FIT image
10691      creation, the :term:`UBOOT_RD_LOADADDRESS` variable is used in
10692      :ref:`ref-classes-kernel-fitimage` class to specify the load address to
10693      be used in creating the Image Tree Source for the FIT image.
10694
10695   :term:`UBOOT_SIGN_ENABLE`
10696      Enable signing of FIT image. The default value is "0".
10697
10698      This variable is used by the :ref:`ref-classes-kernel-fitimage`,
10699      :ref:`ref-classes-uboot-config` and :ref:`ref-classes-uboot-sign`
10700      classes.
10701
10702   :term:`UBOOT_SIGN_KEYDIR`
10703      Location of the directory containing the RSA key and certificate used for
10704      signing FIT image, used by the :ref:`ref-classes-kernel-fitimage` and
10705      :ref:`ref-classes-uboot-sign` classes.
10706
10707   :term:`UBOOT_SIGN_KEYNAME`
10708      The name of keys used by the :ref:`ref-classes-kernel-fitimage` class
10709      for signing U-Boot FIT image stored in the :term:`UBOOT_SIGN_KEYDIR`
10710      directory. If we have for example a ``dev.key`` key and a ``dev.crt``
10711      certificate stored in the :term:`UBOOT_SIGN_KEYDIR` directory, you will
10712      have to set :term:`UBOOT_SIGN_KEYNAME` to ``dev``.
10713
10714   :term:`UBOOT_SUFFIX`
10715      Points to the generated U-Boot extension. For example, ``u-boot.sb``
10716      has a ``.sb`` extension.
10717
10718      The default U-Boot extension is ``.bin``
10719
10720   :term:`UBOOT_TARGET`
10721      Specifies the target used for building U-Boot. The target is passed
10722      directly as part of the "make" command (e.g. SPL and AIS). If you do
10723      not specifically set this variable, the OpenEmbedded build process
10724      passes and uses "all" for the target during the U-Boot building
10725      process.
10726
10727   :term:`UKIFY_CMD`
10728      When inheriting the :ref:`ref-classes-uki` class,
10729      `ukify <https://www.freedesktop.org/software/systemd/man/latest/ukify.html>`__ command to build
10730      `Unified Kernel Image (UKI) <https://uapi-group.org/specifications/specs/unified_kernel_image/>`__.
10731      Defaults to ``ukify build``.
10732
10733   :term:`UKI_CMDLINE`
10734      When inheriting the :ref:`ref-classes-uki` class, the kernel command line
10735      to use when booting the `Unified Kernel Image (UKI)
10736      <https://uapi-group.org/specifications/specs/unified_kernel_image/>`__.
10737      Defaults to ``rootwait root=LABEL=root console=${KERNEL_CONSOLE}``.
10738
10739   :term:`UKI_CONFIG_FILE`
10740      When inheriting the :ref:`ref-classes-uki` class, an optional config
10741      file for the `ukify
10742      <https://www.freedesktop.org/software/systemd/man/latest/ukify.html>`__
10743      command.
10744
10745   :term:`UKI_FILENAME`
10746      When inheriting the :ref:`ref-classes-uki` class, the output file name
10747      for the generated `Unified Kernel Image (UKI)
10748      <https://uapi-group.org/specifications/specs/unified_kernel_image/>`__.
10749      Defaults to ``uki.efi``.
10750
10751   :term:`UKI_KERNEL_FILENAME`
10752      When inheriting the :ref:`ref-classes-uki` class, the kernel image file
10753      name to use as input. Defaults to :term:`KERNEL_IMAGETYPE`.
10754
10755   :term:`UKI_SB_CERT`
10756      When inheriting the :ref:`ref-classes-uki` class, optional UEFI
10757      secureboot certificate matching the private key in :term:`UKI_SB_KEY`.
10758
10759   :term:`UKI_SB_KEY`
10760      When inheriting the :ref:`ref-classes-uki` class, optional UEFI
10761      secureboot private key to sign the `Unified Kernel Image (UKI)
10762      <https://uapi-group.org/specifications/specs/unified_kernel_image/>`__.
10763
10764   :term:`UNKNOWN_CONFIGURE_OPT_IGNORE`
10765      Specifies a list of options that, if reported by the configure script
10766      as being invalid, should not generate a warning during the
10767      :ref:`ref-tasks-configure` task. Normally, invalid
10768      configure options are simply not passed to the configure script (e.g.
10769      should be removed from :term:`EXTRA_OECONF` or
10770      :term:`PACKAGECONFIG_CONFARGS`).
10771      However, there are common options that are passed to all
10772      configure scripts at a class level, but might not be valid for some
10773      configure scripts. Therefore warnings about these options are useless.
10774      For these cases, the options are added to :term:`UNKNOWN_CONFIGURE_OPT_IGNORE`.
10775
10776      The configure arguments check that uses
10777      :term:`UNKNOWN_CONFIGURE_OPT_IGNORE` is part of the
10778      :ref:`ref-classes-insane` class and is only enabled if the
10779      recipe inherits the :ref:`ref-classes-autotools` class.
10780
10781   :term:`UNPACKDIR`
10782      This variable, used by the :ref:`ref-classes-base` class,
10783      specifies where fetches sources should be unpacked by the
10784      :ref:`ref-tasks-unpack` task.
10785
10786   :term:`UPDATERCPN`
10787      For recipes inheriting the
10788      :ref:`ref-classes-update-rc.d` class, :term:`UPDATERCPN`
10789      specifies the package that contains the initscript that is enabled.
10790
10791      The default value is "${PN}". Given that almost all recipes that
10792      install initscripts package them in the main package for the recipe,
10793      you rarely need to set this variable in individual recipes.
10794
10795   :term:`UPSTREAM_CHECK_COMMITS`
10796      You can perform a per-recipe check for what the latest upstream
10797      source code version is by calling ``devtool latest-version recipe``. If
10798      the recipe source code is provided from Git repositories, but
10799      releases are not identified by Git tags, set :term:`UPSTREAM_CHECK_COMMITS`
10800      to ``1`` in the recipe, and the OpenEmbedded build system
10801      will compare the latest commit with the one currently specified
10802      by the recipe (:term:`SRCREV`)::
10803
10804         UPSTREAM_CHECK_COMMITS = "1"
10805
10806   :term:`UPSTREAM_CHECK_GITTAGREGEX`
10807      You can perform a per-recipe check for what the latest upstream
10808      source code version is by calling ``devtool latest-version recipe``. If
10809      the recipe source code is provided from Git repositories, the
10810      OpenEmbedded build system determines the latest upstream version by
10811      picking the latest tag from the list of all repository tags.
10812
10813      You can use the :term:`UPSTREAM_CHECK_GITTAGREGEX` variable to provide a
10814      regular expression to filter only the relevant tags should the
10815      default filter not work correctly::
10816
10817         UPSTREAM_CHECK_GITTAGREGEX = "git_tag_regex"
10818
10819   :term:`UPSTREAM_CHECK_REGEX`
10820      Use the :term:`UPSTREAM_CHECK_REGEX` variable to specify a different
10821      regular expression instead of the default one when the package
10822      checking system is parsing the page found using
10823      :term:`UPSTREAM_CHECK_URI`::
10824
10825         UPSTREAM_CHECK_REGEX = "package_regex"
10826
10827   :term:`UPSTREAM_CHECK_URI`
10828      You can perform a per-recipe check for what the latest upstream
10829      source code version is by calling ``devtool latest-version recipe``. If
10830      the source code is provided from tarballs, the latest version is
10831      determined by fetching the directory listing where the tarball is and
10832      attempting to find a later tarball. When this approach does not work,
10833      you can use :term:`UPSTREAM_CHECK_URI` to provide a different URI that
10834      contains the link to the latest tarball::
10835
10836         UPSTREAM_CHECK_URI = "recipe_url"
10837
10838   :term:`UPSTREAM_VERSION_UNKNOWN`
10839      You can perform a per-recipe check for what the latest upstream
10840      source code version is by calling ``devtool latest-version recipe``.
10841      If no combination of the :term:`UPSTREAM_CHECK_URI`, :term:`UPSTREAM_CHECK_REGEX`,
10842      :term:`UPSTREAM_CHECK_GITTAGREGEX` and :term:`UPSTREAM_CHECK_COMMITS` variables in
10843      the recipe allows to determine what the latest upstream version is,
10844      you can set :term:`UPSTREAM_VERSION_UNKNOWN` to ``1`` in the recipe
10845      to acknowledge that the check cannot be performed::
10846
10847         UPSTREAM_VERSION_UNKNOWN = "1"
10848
10849   :term:`USE_DEVFS`
10850      Determines if ``devtmpfs`` is used for ``/dev`` population. The
10851      default value used for :term:`USE_DEVFS` is "1" when no value is
10852      specifically set. Typically, you would set :term:`USE_DEVFS` to "0" for a
10853      statically populated ``/dev`` directory.
10854
10855      See the ":ref:`dev-manual/device-manager:selecting a device manager`" section in
10856      the Yocto Project Development Tasks Manual for information on how to
10857      use this variable.
10858
10859   :term:`USE_VT`
10860      When using
10861      :ref:`SysVinit <dev-manual/new-recipe:enabling system services>`,
10862      determines whether or not to run a :wikipedia:`getty <Getty_(Unix)>`
10863      on any virtual terminals in order to enable logging in through those
10864      terminals.
10865
10866      The default value used for :term:`USE_VT` is "1" when no default value is
10867      specifically set. Typically, you would set :term:`USE_VT` to "0" in the
10868      machine configuration file for machines that do not have a graphical
10869      display attached and therefore do not need virtual terminal
10870      functionality.
10871
10872   :term:`USER_CLASSES`
10873      A list of classes to globally inherit. These classes are used by the
10874      OpenEmbedded build system to enable extra features.
10875
10876      Classes inherited using :term:`USER_CLASSES` must be located in the
10877      ``classes-global/`` or ``classes/`` subdirectories.
10878
10879      The default list is set in your ``local.conf`` file::
10880
10881         USER_CLASSES ?= "buildstats"
10882
10883      For more information, see
10884      ``meta-poky/conf/templates/default/local.conf.sample`` in the
10885      :term:`Source Directory`.
10886
10887   :term:`USERADD_DEPENDS`
10888      Specifies a list of recipes that create users / groups (via
10889      :term:`USERADD_PARAM` / :term:`GROUPADD_PARAM`) which a recipe
10890      depends upon. This ensures that those users / groups are available
10891      when building a recipe.
10892
10893   :term:`USERADD_ERROR_DYNAMIC`
10894      If set to ``error``, forces the OpenEmbedded build system to produce
10895      an error if the user identification (``uid``) and group
10896      identification (``gid``) values are not defined in any of the files
10897      listed in :term:`USERADD_UID_TABLES` and
10898      :term:`USERADD_GID_TABLES`. If set to
10899      ``warn``, a warning will be issued instead.
10900
10901      The default behavior for the build system is to dynamically apply
10902      ``uid`` and ``gid`` values. Consequently, the
10903      :term:`USERADD_ERROR_DYNAMIC` variable is by default not set. If you plan
10904      on using statically assigned ``gid`` and ``uid`` values, you should
10905      set the :term:`USERADD_ERROR_DYNAMIC` variable in your ``local.conf``
10906      file as follows::
10907
10908         USERADD_ERROR_DYNAMIC = "error"
10909
10910      Overriding the
10911      default behavior implies you are going to also take steps to set
10912      static ``uid`` and ``gid`` values through use of the
10913      :term:`USERADDEXTENSION`,
10914      :term:`USERADD_UID_TABLES`, and
10915      :term:`USERADD_GID_TABLES` variables.
10916
10917      .. note::
10918
10919         There is a difference in behavior between setting
10920         :term:`USERADD_ERROR_DYNAMIC` to ``error`` and setting it to ``warn``.
10921         When it is set to ``warn``, the build system will report a warning for
10922         every undefined ``uid`` and ``gid`` in any recipe. But when it is set
10923         to ``error``, it will only report errors for recipes that are actually
10924         built.
10925         This saves you from having to add static IDs for recipes that you
10926         know will never be built.
10927
10928   :term:`USERADD_GID_TABLES`
10929      Specifies a password file to use for obtaining static group
10930      identification (``gid``) values when the OpenEmbedded build system
10931      adds a group to the system during package installation.
10932
10933      When applying static group identification (``gid``) values, the
10934      OpenEmbedded build system looks in :term:`BBPATH` for a
10935      ``files/group`` file and then applies those ``uid`` values. Set the
10936      variable as follows in your ``local.conf`` file::
10937
10938
10939         USERADD_GID_TABLES = "files/group"
10940
10941      .. note::
10942
10943         Setting the :term:`USERADDEXTENSION` variable to "useradd-staticids"
10944         causes the build system to use static ``gid`` values.
10945
10946   :term:`USERADD_PACKAGES`
10947      When inheriting the :ref:`ref-classes-useradd` class,
10948      this variable specifies the individual packages within the recipe
10949      that require users and/or groups to be added.
10950
10951      You must set this variable if the recipe inherits the class. For
10952      example, the following enables adding a user for the main package in
10953      a recipe::
10954
10955         USERADD_PACKAGES = "${PN}"
10956
10957      .. note::
10958
10959         It follows that if you are going to use the :term:`USERADD_PACKAGES`
10960         variable, you need to set one or more of the :term:`USERADD_PARAM`,
10961         :term:`GROUPADD_PARAM`, or :term:`GROUPMEMS_PARAM` variables.
10962
10963   :term:`USERADD_PARAM`
10964      When inheriting the :ref:`ref-classes-useradd` class,
10965      this variable specifies for a package what parameters should pass to
10966      the ``useradd`` command if you add a user to the system when the
10967      package is installed.
10968
10969      Here is an example from the ``dbus`` recipe::
10970
10971         USERADD_PARAM:${PN} = "--system --home ${localstatedir}/lib/dbus \
10972                                --no-create-home --shell /bin/false \
10973                                --user-group messagebus"
10974
10975      For information on the
10976      standard Linux shell command ``useradd``, see
10977      https://linux.die.net/man/8/useradd.
10978
10979   :term:`USERADD_UID_TABLES`
10980      Specifies a password file to use for obtaining static user
10981      identification (``uid``) values when the OpenEmbedded build system
10982      adds a user to the system during package installation.
10983
10984      When applying static user identification (``uid``) values, the
10985      OpenEmbedded build system looks in :term:`BBPATH` for a
10986      ``files/passwd`` file and then applies those ``uid`` values. Set the
10987      variable as follows in your ``local.conf`` file::
10988
10989         USERADD_UID_TABLES = "files/passwd"
10990
10991      .. note::
10992
10993         Setting the :term:`USERADDEXTENSION` variable to "useradd-staticids"
10994         causes the build system to use static ``uid`` values.
10995
10996   :term:`USERADDEXTENSION`
10997      When set to "useradd-staticids", causes the OpenEmbedded build system
10998      to base all user and group additions on a static ``passwd`` and
10999      ``group`` files found in :term:`BBPATH`.
11000
11001      To use static user identification (``uid``) and group identification
11002      (``gid``) values, set the variable as follows in your ``local.conf``
11003      file: USERADDEXTENSION = "useradd-staticids"
11004
11005      .. note::
11006
11007         Setting this variable to use static ``uid`` and ``gid``
11008         values causes the OpenEmbedded build system to employ the
11009         :ref:`ref-classes-useradd` class.
11010
11011      If you use static ``uid`` and ``gid`` information, you must also
11012      specify the ``files/passwd`` and ``files/group`` files by setting the
11013      :term:`USERADD_UID_TABLES` and
11014      :term:`USERADD_GID_TABLES` variables.
11015      Additionally, you should also set the
11016      :term:`USERADD_ERROR_DYNAMIC` variable.
11017
11018   :term:`VIRTUAL-RUNTIME`
11019      :term:`VIRTUAL-RUNTIME` is a commonly used prefix for defining virtual
11020      packages for runtime usage, typically for use in :term:`RDEPENDS`
11021      or in image definitions.
11022
11023      An example is ``VIRTUAL-RUNTIME_base-utils`` that makes it possible
11024      to either use BusyBox based utilities::
11025
11026         VIRTUAL-RUNTIME_base-utils = "busybox"
11027
11028      or their full featured implementations from GNU Coreutils
11029      and other projects::
11030
11031         VIRTUAL-RUNTIME_base-utils = "packagegroup-core-base-utils"
11032
11033      Here are two examples using this virtual runtime package. The
11034      first one is in :yocto_git:`initramfs-framework_1.0.bb
11035      </poky/tree/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb?h=scarthgap>`::
11036
11037         RDEPENDS:${PN} += "${VIRTUAL-RUNTIME_base-utils}"
11038
11039      The second example is in the :yocto_git:`core-image-initramfs-boot
11040      </poky/tree/meta/recipes-core/images/core-image-initramfs-boot.bb?h=scarthgap>`
11041      image definition::
11042
11043         PACKAGE_INSTALL = "${INITRAMFS_SCRIPTS} ${VIRTUAL-RUNTIME_base-utils} base-passwd"
11044
11045   :term:`WARN_QA`
11046      Specifies the quality assurance checks whose failures are reported as
11047      warnings by the OpenEmbedded build system. You set this variable in
11048      your distribution configuration file. For a list of the checks you
11049      can control with this variable, see the
11050      ":ref:`ref-classes-insane`" section.
11051
11052   :term:`WATCHDOG_RUNTIME_SEC`
11053      For the ``systemd`` recipe, this controls the value of the
11054      ``RuntimeWatchdogSec`` option in ``/etc/systemd/system.conf``. The default
11055      value is an empty string.
11056
11057   :term:`WATCHDOG_TIMEOUT`
11058      Specifies the timeout in seconds used by the ``watchdog-config`` recipe
11059      and also by ``systemd`` during reboot. The default is 60 seconds.
11060
11061   :term:`WIC_CREATE_EXTRA_ARGS`
11062      If the :term:`IMAGE_FSTYPES` variable contains "wic", the build
11063      will generate a
11064      :ref:`Wic image <dev-manual/wic:creating partitioned images using wic>`
11065      automatically when BitBake builds an image recipe. As part of
11066      this process BitBake will invoke the "`wic create`" command. The
11067      :term:`WIC_CREATE_EXTRA_ARGS` variable is placed at the end of this
11068      command which allows the user to supply additional arguments.
11069
11070      One such useful purpose for this mechanism is to add the ``-D`` (or
11071      ``--debug``) argument to the "`wic create`" command. This increases the
11072      amount of debugging information written out to the Wic log during the
11073      Wic creation process.
11074
11075   :term:`WIC_SECTOR_SIZE`
11076      The variable :term:`WIC_SECTOR_SIZE` controls the sector size of Wic
11077      images. In the background, this controls the value of the
11078      ``PARTED_SECTOR_SIZE`` environment variable passed to the ``parted``
11079      command-line utility, used to generated the images. The default value is
11080      ``512``.
11081
11082      For more information on how to create Wic images, see the
11083      ":ref:`dev-manual/wic:creating partitioned images using wic`" section in
11084      the Yocto Project Development Tasks Manual.
11085
11086   :term:`WIRELESS_DAEMON`
11087      For ``connman`` and ``packagegroup-base``, specifies the wireless
11088      daemon to use. The default is "wpa-supplicant" (note that the value
11089      uses a dash and not an underscore).
11090
11091   :term:`WKS_FILE`
11092      Specifies the location of the Wic kickstart file that is used by the
11093      OpenEmbedded build system to create a partitioned image
11094      (``image.wic``). For information on how to create a partitioned
11095      image, see the
11096      ":ref:`dev-manual/wic:creating partitioned images using wic`"
11097      section in the Yocto Project Development Tasks Manual. For details on
11098      the kickstart file format, see the ":doc:`/ref-manual/kickstart`" Chapter.
11099
11100   :term:`WKS_FILE_DEPENDS`
11101      When placed in the recipe that builds your image, this variable lists
11102      build-time dependencies. The :term:`WKS_FILE_DEPENDS` variable is only
11103      applicable when Wic images are active (i.e. when
11104      :term:`IMAGE_FSTYPES` contains entries related
11105      to Wic). If your recipe does not create Wic images, the variable has
11106      no effect.
11107
11108      The :term:`WKS_FILE_DEPENDS` variable is similar to the
11109      :term:`DEPENDS` variable. When you use the variable in
11110      your recipe that builds the Wic image, dependencies you list in the
11111      :term:`WKS_FILE_DEPENDS` variable are added to the :term:`DEPENDS` variable.
11112
11113      With the :term:`WKS_FILE_DEPENDS` variable, you have the possibility to
11114      specify a list of additional dependencies (e.g. native tools,
11115      bootloaders, and so forth), that are required to build Wic images.
11116      Here is an example::
11117
11118         WKS_FILE_DEPENDS = "some-native-tool"
11119
11120      In the
11121      previous example, some-native-tool would be replaced with an actual
11122      native tool on which the build would depend.
11123
11124   :term:`WKS_FILES`
11125      Specifies a list of candidate Wic kickstart files to be used by the
11126      OpenEmbedded build system to create a partitioned image. Only the
11127      first one that is found, from left to right, will be used.
11128
11129      This is only useful when there are multiple ``.wks`` files that can be
11130      used to produce an image. A typical case is when multiple layers are
11131      used for different hardware platforms, each supplying a different
11132      ``.wks`` file. In this case, you specify all possible ones through
11133      :term:`WKS_FILES`.
11134
11135      If only one ``.wks`` file is used, set :term:`WKS_FILE` instead.
11136
11137   :term:`WORKDIR`
11138      The pathname of the work directory in which the OpenEmbedded build
11139      system builds a recipe. This directory is located within the
11140      :term:`TMPDIR` directory structure and is specific to
11141      the recipe being built and the system for which it is being built.
11142
11143      The :term:`WORKDIR` directory is defined as follows::
11144
11145         ${TMPDIR}/work/${MULTIMACH_TARGET_SYS}/${PN}/${EXTENDPE}${PV}-${PR}
11146
11147      The actual directory depends on several things:
11148
11149      -  :term:`TMPDIR`: The top-level build output directory
11150      -  :term:`MULTIMACH_TARGET_SYS`: The target system identifier
11151      -  :term:`PN`: The recipe name
11152      -  :term:`EXTENDPE`: The epoch --- if :term:`PE` is not specified, which
11153         is usually the case for most recipes, then :term:`EXTENDPE` is blank.
11154      -  :term:`PV`: The recipe version
11155      -  :term:`PR`: The recipe revision
11156
11157      As an example, assume a Source Directory top-level folder name
11158      ``poky``, a default :term:`Build Directory` at ``poky/build``, and a
11159      ``qemux86-poky-linux`` machine target system. Furthermore, suppose
11160      your recipe is named ``foo_1.3.0-r0.bb``. In this case, the work
11161      directory the build system uses to build the package would be as
11162      follows::
11163
11164         poky/build/tmp/work/qemux86-poky-linux/foo/1.3.0-r0
11165
11166   :term:`XSERVER`
11167      Specifies the packages that should be installed to provide an X
11168      server and drivers for the current machine, assuming your image
11169      directly includes ``packagegroup-core-x11-xserver`` or, perhaps
11170      indirectly, includes "x11-base" in
11171      :term:`IMAGE_FEATURES`.
11172
11173      The default value of :term:`XSERVER`, if not specified in the machine
11174      configuration, is "xserver-xorg xf86-video-fbdev xf86-input-evdev".
11175
11176   :term:`XZ_THREADS`
11177      Specifies the number of parallel threads that should be used when
11178      using xz compression.
11179
11180      By default this scales with core count, but is never set less than 2
11181      to ensure that multi-threaded mode is always used so that the output
11182      file contents are deterministic. Builds will work with a value of 1
11183      but the output will differ compared to the output from the compression
11184      generated when more than one thread is used.
11185
11186      On systems where many tasks run in parallel, setting a limit to this
11187      can be helpful in controlling system resource usage.
11188
11189   :term:`XZ_MEMLIMIT`
11190      Specifies the maximum memory the xz compression should use as a percentage
11191      of system memory. If unconstrained the xz compressor can use large amounts of
11192      memory and become problematic with parallelism elsewhere in the build.
11193      "50%" has been found to be a good value.
11194
11195   :term:`ZSTD_COMPRESSION_LEVEL`
11196      Specifies the compression level to be used with ZStandard compression
11197      (from ``1`` to ``19``, set to ``3`` by default, following upstream choice).
11198      Higher levels produce smaller files, but take longer to complete.
11199
11200   :term:`ZSTD_THREADS`
11201      Specifies the number of parallel threads that should be used when
11202      using ZStandard compression.
11203
11204      By default this scales with core count, but is never set less than 2
11205      to ensure that multi-threaded mode is always used so that the output
11206      file contents are deterministic. Builds will work with a value of 1
11207      but the output will differ compared to the output from the compression
11208      generated when more than one thread is used.
11209
11210      On systems where many tasks run in parallel, setting a limit to this
11211      can be helpful in controlling system resource usage.
11212