1.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
2
3******************
4Variables Glossary
5******************
6
7This chapter lists common variables used in the OpenEmbedded build
8system and gives an overview of their function and contents.
9
10:term:`A <ABIEXTENSION>` :term:`B` :term:`C <CACHE>`
11:term:`D` :term:`E <EFI_PROVIDER>` :term:`F <FEATURE_PACKAGES>`
12:term:`G <GCCPIE>` :term:`H <HOMEPAGE>` :term:`I <ICECC_DISABLED>`
13:term:`K <KARCH>` :term:`L <LABELS>` :term:`M <MACHINE>`
14:term:`N <NATIVELSBSTRING>` :term:`O <OBJCOPY>` :term:`P`
15:term:`R <RANLIB>` :term:`S` :term:`T`
16:term:`U <UBOOT_CONFIG>` :term:`V <VOLATILE_LOG_DIR>`
17:term:`W <WARN_QA>` :term:`X <XSERVER>`
18
19.. glossary::
20   :sorted:
21
22   :term:`ABIEXTENSION`
23      Extension to the Application Binary Interface (ABI) field of the GNU
24      canonical architecture name (e.g. "eabi").
25
26      ABI extensions are set in the machine include files. For example, the
27      ``meta/conf/machine/include/arm/arch-arm.inc`` file sets the
28      following extension::
29
30         ABIEXTENSION = "eabi"
31
32   :term:`ALLOW_EMPTY`
33      Specifies whether to produce an output package even if it is empty.
34      By default, BitBake does not produce empty packages. This default
35      behavior can cause issues when there is an
36      :term:`RDEPENDS` or some other hard runtime
37      requirement on the existence of the package.
38
39      Like all package-controlling variables, you must always use them in
40      conjunction with a package name override, as in::
41
42         ALLOW_EMPTY:${PN} = "1"
43         ALLOW_EMPTY:${PN}-dev = "1"
44         ALLOW_EMPTY:${PN}-staticdev = "1"
45
46   :term:`ALTERNATIVE`
47      Lists commands in a package that need an alternative binary naming
48      scheme. Sometimes the same command is provided in multiple packages.
49      When this occurs, the OpenEmbedded build system needs to use the
50      alternatives system to create a different binary naming scheme so the
51      commands can co-exist.
52
53      To use the variable, list out the package's commands that are also
54      provided by another package. For example, if the ``busybox`` package
55      has four such commands, you identify them as follows::
56
57         ALTERNATIVE:busybox = "sh sed test bracket"
58
59      For more information on the alternatives system, see the
60      ":ref:`ref-classes-update-alternatives`"
61      section.
62
63   :term:`ALTERNATIVE_LINK_NAME`
64      Used by the alternatives system to map duplicated commands to actual
65      locations. For example, if the ``bracket`` command provided by the
66      ``busybox`` package is duplicated through another package, you must
67      use the :term:`ALTERNATIVE_LINK_NAME` variable to specify the actual
68      location::
69
70         ALTERNATIVE_LINK_NAME[bracket] = "/usr/bin/["
71
72      In this example, the binary for the ``bracket`` command (i.e. ``[``)
73      from the ``busybox`` package resides in ``/usr/bin/``.
74
75      .. note::
76
77         If :term:`ALTERNATIVE_LINK_NAME` is not defined, it defaults to ``${bindir}/name``.
78
79      For more information on the alternatives system, see the
80      ":ref:`ref-classes-update-alternatives`"
81      section.
82
83   :term:`ALTERNATIVE_PRIORITY`
84      Used by the alternatives system to create default priorities for
85      duplicated commands. You can use the variable to create a single
86      default regardless of the command name or package, a default for
87      specific duplicated commands regardless of the package, or a default
88      for specific commands tied to particular packages. Here are the
89      available syntax forms::
90
91         ALTERNATIVE_PRIORITY = "priority"
92         ALTERNATIVE_PRIORITY[name] = "priority"
93         ALTERNATIVE_PRIORITY_pkg[name] = "priority"
94
95      For more information on the alternatives system, see the
96      ":ref:`ref-classes-update-alternatives`"
97      section.
98
99   :term:`ALTERNATIVE_TARGET`
100      Used by the alternatives system to create default link locations for
101      duplicated commands. You can use the variable to create a single
102      default location for all duplicated commands regardless of the
103      command name or package, a default for specific duplicated commands
104      regardless of the package, or a default for specific commands tied to
105      particular packages. Here are the available syntax forms::
106
107         ALTERNATIVE_TARGET = "target"
108         ALTERNATIVE_TARGET[name] = "target"
109         ALTERNATIVE_TARGET_pkg[name] = "target"
110
111      .. note::
112
113         If :term:`ALTERNATIVE_TARGET` is not defined, it inherits the value
114         from the :term:`ALTERNATIVE_LINK_NAME` variable.
115
116         If :term:`ALTERNATIVE_LINK_NAME` and :term:`ALTERNATIVE_TARGET` are the
117         same, the target for :term:`ALTERNATIVE_TARGET` has "``.{BPN}``"
118         appended to it.
119
120         Finally, if the file referenced has not been renamed, the
121         alternatives system will rename it to avoid the need to rename
122         alternative files in the :ref:`ref-tasks-install`
123         task while retaining support for the command if necessary.
124
125      For more information on the alternatives system, see the
126      ":ref:`ref-classes-update-alternatives`" section.
127
128   :term:`ANY_OF_DISTRO_FEATURES`
129      When inheriting the :ref:`ref-classes-features_check`
130      class, this variable identifies a list of distribution features where
131      at least one must be enabled in the current configuration in order
132      for the OpenEmbedded build system to build the recipe. In other words,
133      if none of the features listed in :term:`ANY_OF_DISTRO_FEATURES`
134      appear in :term:`DISTRO_FEATURES` within the current configuration, then
135      the recipe will be skipped, and if the build system attempts to build
136      the recipe then an error will be triggered.
137
138   :term:`APPEND`
139      An override list of append strings for each target specified with
140      :term:`LABELS`.
141
142      See the :ref:`ref-classes-grub-efi` class for more
143      information on how this variable is used.
144
145   :term:`AR`
146      The minimal command and arguments used to run ``ar``.
147
148   :term:`ARCHIVER_MODE`
149      When used with the :ref:`ref-classes-archiver` class,
150      determines the type of information used to create a released archive.
151      You can use this variable to create archives of patched source,
152      original source, configured source, and so forth by employing the
153      following variable flags (varflags)::
154
155         ARCHIVER_MODE[src] = "original"                   # Uses original (unpacked) source files.
156         ARCHIVER_MODE[src] = "patched"                    # Uses patched source files. This is the default.
157         ARCHIVER_MODE[src] = "configured"                 # Uses configured source files.
158         ARCHIVER_MODE[diff] = "1"                         # Uses patches between do_unpack and do_patch.
159         ARCHIVER_MODE[diff-exclude] ?= "file file ..."    # Lists files and directories to exclude from diff.
160         ARCHIVER_MODE[dumpdata] = "1"                     # Uses environment data.
161         ARCHIVER_MODE[recipe] = "1"                       # Uses recipe and include files.
162         ARCHIVER_MODE[srpm] = "1"                         # Uses RPM package files.
163
164      For information on how the variable works, see the
165      ``meta/classes/archiver.bbclass`` file in the :term:`Source Directory`.
166
167   :term:`AS`
168      Minimal command and arguments needed to run the assembler.
169
170   :term:`ASSUME_PROVIDED`
171      Lists recipe names (:term:`PN` values) BitBake does not
172      attempt to build. Instead, BitBake assumes these recipes have already
173      been built.
174
175      In OpenEmbedded-Core, :term:`ASSUME_PROVIDED` mostly specifies native
176      tools that should not be built. An example is ``git-native``, which
177      when specified, allows for the Git binary from the host to be used
178      rather than building ``git-native``.
179
180   :term:`ASSUME_SHLIBS`
181      Provides additional ``shlibs`` provider mapping information, which
182      adds to or overwrites the information provided automatically by the
183      system. Separate multiple entries using spaces.
184
185      As an example, use the following form to add an ``shlib`` provider of
186      shlibname in packagename with the optional version::
187
188         shlibname:packagename[_version]
189
190      Here is an example that adds a shared library named ``libEGL.so.1``
191      as being provided by the ``libegl-implementation`` package::
192
193         ASSUME_SHLIBS = "libEGL.so.1:libegl-implementation"
194
195   :term:`AUTO_LIBNAME_PKGS`
196      When the :ref:`ref-classes-debian` class is inherited,
197      which is the default behavior, :term:`AUTO_LIBNAME_PKGS` specifies which
198      packages should be checked for libraries and renamed according to
199      Debian library package naming.
200
201      The default value is "${PACKAGES}", which causes the
202      :ref:`ref-classes-debian` class to act on all packages that are
203      explicitly generated by the recipe.
204
205   :term:`AUTOREV`
206      When :term:`SRCREV` is set to the value of this variable, it specifies to
207      use the latest source revision in the repository. Here is an example::
208
209         SRCREV = "${AUTOREV}"
210
211      If you use the previous statement to retrieve the latest version of
212      software, you need to be sure :term:`PV` contains
213      ``${``\ :term:`SRCPV`\ ``}``. For example, suppose you have a kernel
214      recipe that inherits the :ref:`ref-classes-kernel` class and you
215      use the previous statement. In this example, ``${SRCPV}`` does not
216      automatically get into :term:`PV`. Consequently, you need to change
217      :term:`PV` in your recipe so that it does contain ``${SRCPV}``.
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:`AVAILTUNES`
229      The list of defined CPU and Application Binary Interface (ABI)
230      tunings (i.e. "tunes") available for use by the OpenEmbedded build
231      system.
232
233      The list simply presents the tunes that are available. Not all tunes
234      may be compatible with a particular machine configuration, or with
235      each other in a
236      :ref:`Multilib <dev-manual/libraries:combining multiple versions of library files into one image>`
237      configuration.
238
239      To add a tune to the list, be sure to append it with spaces using the
240      "+=" BitBake operator. Do not simply replace the list by using the
241      "=" operator. See the
242      ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:basic syntax`" section in the BitBake
243      User Manual for more information.
244
245   :term:`AZ_SAS`
246      Azure Storage Shared Access Signature, when using the
247      :ref:`Azure Storage fetcher (az://) <bitbake-user-manual/bitbake-user-manual-fetching:fetchers>`
248      This variable can be defined to be used by the fetcher to authenticate
249      and gain access to non-public artifacts::
250
251         AZ_SAS = ""se=2021-01-01&sp=r&sv=2018-11-09&sr=c&skoid=<skoid>&sig=<signature>""
252
253      For more information see Microsoft's Azure Storage documentation at
254      https://docs.microsoft.com/en-us/azure/storage/common/storage-sas-overview
255
256   :term:`B`
257      The directory within the :term:`Build Directory` in which the
258      OpenEmbedded build system places generated objects during a recipe's
259      build process. By default, this directory is the same as the
260      :term:`S` directory, which is defined as::
261
262         S = "${WORKDIR}/${BP}"
263
264      You can separate the (:term:`S`) directory and the directory pointed to
265      by the :term:`B` variable. Most Autotools-based recipes support
266      separating these directories. The build system defaults to using
267      separate directories for ``gcc`` and some kernel recipes.
268
269   :term:`BAD_RECOMMENDATIONS`
270      Lists "recommended-only" packages to not install. Recommended-only
271      packages are packages installed only through the
272      :term:`RRECOMMENDS` variable. You can prevent any
273      of these "recommended" packages from being installed by listing them
274      with the :term:`BAD_RECOMMENDATIONS` variable::
275
276         BAD_RECOMMENDATIONS = "package_name package_name package_name ..."
277
278      You can set this variable globally in your ``local.conf`` file or you
279      can attach it to a specific image recipe by using the recipe name
280      override::
281
282         BAD_RECOMMENDATIONS:pn-target_image = "package_name"
283
284      It is important to realize that if you choose to not install packages
285      using this variable and some other packages are dependent on them
286      (i.e. listed in a recipe's :term:`RDEPENDS`
287      variable), the OpenEmbedded build system ignores your request and
288      will install the packages to avoid dependency errors.
289
290      This variable is supported only when using the IPK and RPM
291      packaging backends. DEB is not supported.
292
293      See the :term:`NO_RECOMMENDATIONS` and the
294      :term:`PACKAGE_EXCLUDE` variables for related
295      information.
296
297   :term:`BASE_LIB`
298      The library directory name for the CPU or Application Binary
299      Interface (ABI) tune. The :term:`BASE_LIB` applies only in the Multilib
300      context. See the ":ref:`dev-manual/libraries:combining multiple versions of library files into one image`"
301      section in the Yocto Project Development Tasks Manual for information
302      on Multilib.
303
304      The :term:`BASE_LIB` variable is defined in the machine include files in
305      the :term:`Source Directory`. If Multilib is not
306      being used, the value defaults to "lib".
307
308   :term:`BASE_WORKDIR`
309      Points to the base of the work directory for all recipes. The default
310      value is "${TMPDIR}/work".
311
312   :term:`BB_ALLOWED_NETWORKS`
313      Specifies a space-delimited list of hosts that the fetcher is allowed
314      to use to obtain the required source code. Here are
315      considerations surrounding this variable:
316
317      -  This host list is only used if :term:`BB_NO_NETWORK` is either not set
318         or set to "0".
319
320      -  There is limited support for wildcard matching against the beginning of
321         host names. For example, the following setting matches
322         ``git.gnu.org``, ``ftp.gnu.org``, and ``foo.git.gnu.org``::
323
324            BB_ALLOWED_NETWORKS = "*.gnu.org"
325
326         .. note::
327
328            The use of the "``*``" character only works at the beginning of
329            a host name and it must be isolated from the remainder of the
330            host name. You cannot use the wildcard character in any other
331            location of the name or combined with the front part of the
332            name.
333
334            For example, ``*.foo.bar`` is supported, while ``*aa.foo.bar``
335            is not.
336
337      -  Mirrors not in the host list are skipped and logged in debug.
338
339      -  Attempts to access networks not in the host list cause a failure.
340
341      Using :term:`BB_ALLOWED_NETWORKS` in conjunction with
342      :term:`PREMIRRORS` is very useful. Adding the host
343      you want to use to :term:`PREMIRRORS` results in the source code being
344      fetched from an allowed location and avoids raising an error when a
345      host that is not allowed is in a :term:`SRC_URI`
346      statement. This is because the fetcher does not attempt to use the
347      host listed in :term:`SRC_URI` after a successful fetch from the
348      :term:`PREMIRRORS` occurs.
349
350   :term:`BB_BASEHASH_IGNORE_VARS`
351      See :term:`bitbake:BB_BASEHASH_IGNORE_VARS` in the BitBake manual.
352
353   :term:`BB_CACHEDIR`
354      See :term:`bitbake:BB_CACHEDIR` in the BitBake manual.
355
356   :term:`BB_CHECK_SSL_CERTS`
357      See :term:`bitbake:BB_CHECK_SSL_CERTS` in the BitBake manual.
358
359   :term:`BB_CONSOLELOG`
360      See :term:`bitbake:BB_CONSOLELOG` in the BitBake manual.
361
362   :term:`BB_CURRENTTASK`
363      See :term:`bitbake:BB_CURRENTTASK` in the BitBake manual.
364
365   :term:`BB_DANGLINGAPPENDS_WARNONLY`
366      Defines how BitBake handles situations where an append file
367      (``.bbappend``) has no corresponding recipe file (``.bb``). This
368      condition often occurs when layers get out of sync (e.g. ``oe-core``
369      bumps a recipe version and the old recipe no longer exists and the
370      other layer has not been updated to the new version of the recipe
371      yet).
372
373      The default fatal behavior is safest because it is the sane reaction
374      given something is out of sync. It is important to realize when your
375      changes are no longer being applied.
376
377      You can change the default behavior by setting this variable to "1",
378      "yes", or "true" in your ``local.conf`` file, which is located in the
379      :term:`Build Directory`: Here is an example::
380
381         BB_DANGLINGAPPENDS_WARNONLY = "1"
382
383   :term:`BB_DEFAULT_TASK`
384      See :term:`bitbake:BB_DEFAULT_TASK` in the BitBake manual.
385
386   :term:`BB_DEFAULT_UMASK`
387      See :term:`bitbake:BB_DEFAULT_UMASK` in the BitBake manual.
388
389   :term:`BB_DISKMON_DIRS`
390      Monitors disk space and available inodes during the build and allows
391      you to control the build based on these parameters.
392
393      Disk space monitoring is disabled by default. To enable monitoring,
394      add the :term:`BB_DISKMON_DIRS` variable to your ``conf/local.conf`` file
395      found in the :term:`Build Directory`. Use the
396      following form:
397
398      .. code-block:: none
399
400         BB_DISKMON_DIRS = "action,dir,threshold [...]"
401
402         where:
403
404            action is:
405               ABORT:     Immediately stop the build when
406                          a threshold is broken.
407               STOPTASKS: Stop the build after the currently
408                          executing tasks have finished when
409                          a threshold is broken.
410               WARN:      Issue a warning but continue the
411                          build when a threshold is broken.
412                          Subsequent warnings are issued as
413                          defined by the BB_DISKMON_WARNINTERVAL
414                          variable, which must be defined in
415                          the conf/local.conf file.
416
417            dir is:
418               Any directory you choose. You can specify one or
419               more directories to monitor by separating the
420               groupings with a space.  If two directories are
421               on the same device, only the first directory
422               is monitored.
423
424            threshold is:
425               Either the minimum available disk space,
426               the minimum number of free inodes, or
427               both.  You must specify at least one.  To
428               omit one or the other, simply omit the value.
429               Specify the threshold using G, M, K for Gbytes,
430               Mbytes, and Kbytes, respectively. If you do
431               not specify G, M, or K, Kbytes is assumed by
432               default.  Do not use GB, MB, or KB.
433
434      Here are some examples::
435
436         BB_DISKMON_DIRS = "ABORT,${TMPDIR},1G,100K WARN,${SSTATE_DIR},1G,100K"
437         BB_DISKMON_DIRS = "STOPTASKS,${TMPDIR},1G"
438         BB_DISKMON_DIRS = "ABORT,${TMPDIR},,100K"
439
440      The first example works only if you also provide the
441      :term:`BB_DISKMON_WARNINTERVAL`
442      variable in the ``conf/local.conf``. This example causes the build
443      system to immediately stop when either the disk space in
444      ``${TMPDIR}`` drops below 1 Gbyte or the available free inodes drops
445      below 100 Kbytes. Because two directories are provided with the
446      variable, the build system also issue a warning when the disk space
447      in the ``${SSTATE_DIR}`` directory drops below 1 Gbyte or the number
448      of free inodes drops below 100 Kbytes. Subsequent warnings are issued
449      during intervals as defined by the :term:`BB_DISKMON_WARNINTERVAL`
450      variable.
451
452      The second example stops the build after all currently executing
453      tasks complete when the minimum disk space in the ``${TMPDIR}``
454      directory drops below 1 Gbyte. No disk monitoring occurs for the free
455      inodes in this case.
456
457      The final example immediately stops the build when the number of
458      free inodes in the ``${TMPDIR}`` directory drops below 100 Kbytes. No
459      disk space monitoring for the directory itself occurs in this case.
460
461   :term:`BB_DISKMON_WARNINTERVAL`
462      Defines the disk space and free inode warning intervals. To set these
463      intervals, define the variable in your ``conf/local.conf`` file in
464      the :term:`Build Directory`.
465
466      If you are going to use the :term:`BB_DISKMON_WARNINTERVAL` variable, you
467      must also use the :term:`BB_DISKMON_DIRS`
468      variable and define its action as "WARN". During the build,
469      subsequent warnings are issued each time disk space or number of free
470      inodes further reduces by the respective interval.
471
472      If you do not provide a :term:`BB_DISKMON_WARNINTERVAL` variable and you
473      do use :term:`BB_DISKMON_DIRS` with the "WARN" action, the disk
474      monitoring interval defaults to the following::
475
476         BB_DISKMON_WARNINTERVAL = "50M,5K"
477
478      When specifying the variable in your configuration file, use the
479      following form:
480
481      .. code-block:: none
482
483         BB_DISKMON_WARNINTERVAL = "disk_space_interval,disk_inode_interval"
484
485         where:
486
487            disk_space_interval is:
488               An interval of memory expressed in either
489               G, M, or K for Gbytes, Mbytes, or Kbytes,
490               respectively. You cannot use GB, MB, or KB.
491
492            disk_inode_interval is:
493               An interval of free inodes expressed in either
494               G, M, or K for Gbytes, Mbytes, or Kbytes,
495               respectively. You cannot use GB, MB, or KB.
496
497      Here is an example::
498
499         BB_DISKMON_DIRS = "WARN,${SSTATE_DIR},1G,100K"
500         BB_DISKMON_WARNINTERVAL = "50M,5K"
501
502      These variables cause the
503      OpenEmbedded build system to issue subsequent warnings each time the
504      available disk space further reduces by 50 Mbytes or the number of
505      free inodes further reduces by 5 Kbytes in the ``${SSTATE_DIR}``
506      directory. Subsequent warnings based on the interval occur each time
507      a respective interval is reached beyond the initial warning (i.e. 1
508      Gbytes and 100 Kbytes).
509
510   :term:`BB_ENV_PASSTHROUGH`
511      See :term:`bitbake:BB_ENV_PASSTHROUGH` in the BitBake manual.
512
513   :term:`BB_ENV_PASSTHROUGH_ADDITIONS`
514      See :term:`bitbake:BB_ENV_PASSTHROUGH_ADDITIONS` in the BitBake manual.
515
516   :term:`BB_FETCH_PREMIRRORONLY`
517      See :term:`bitbake:BB_FETCH_PREMIRRORONLY` in the BitBake manual.
518
519   :term:`BB_FILENAME`
520      See :term:`bitbake:BB_FILENAME` in the BitBake manual.
521
522   :term:`BB_GENERATE_MIRROR_TARBALLS`
523      Causes tarballs of the source control repositories (e.g. Git
524      repositories), including metadata, to be placed in the
525      :term:`DL_DIR` directory.
526
527      For performance reasons, creating and placing tarballs of these
528      repositories is not the default action by the OpenEmbedded build
529      system::
530
531         BB_GENERATE_MIRROR_TARBALLS = "1"
532
533      Set this variable in your
534      ``local.conf`` file in the :term:`Build Directory`.
535
536      Once you have the tarballs containing your source files, you can
537      clean up your :term:`DL_DIR` directory by deleting any Git or other
538      source control work directories.
539
540   :term:`BB_GENERATE_SHALLOW_TARBALLS`
541      See :term:`bitbake:BB_GENERATE_SHALLOW_TARBALLS` in the BitBake manual.
542
543   :term:`BB_GIT_SHALLOW`
544      See :term:`bitbake:BB_GIT_SHALLOW` in the BitBake manual.
545
546   :term:`BB_GIT_SHALLOW_DEPTH`
547      See :term:`bitbake:BB_GIT_SHALLOW_DEPTH` in the BitBake manual.
548
549   :term:`BB_HASHCHECK_FUNCTION`
550      See :term:`bitbake:BB_HASHCHECK_FUNCTION` in the BitBake manual.
551
552   :term:`BB_HASHCONFIG_IGNORE_VARS`
553      See :term:`bitbake:BB_HASHCONFIG_IGNORE_VARS` in the BitBake manual.
554
555   :term:`BB_HASHSERVE`
556      See :term:`bitbake:BB_HASHSERVE` in the BitBake manual.
557
558   :term:`BB_HASHSERVE_UPSTREAM`
559      See :term:`bitbake:BB_HASHSERVE_UPSTREAM` in the BitBake manual.
560
561   :term:`BB_INVALIDCONF`
562      See :term:`bitbake:BB_INVALIDCONF` in the BitBake manual.
563
564   :term:`BB_LOGCONFIG`
565      See :term:`bitbake:BB_LOGCONFIG` in the BitBake manual.
566
567   :term:`BB_LOGFMT`
568      See :term:`bitbake:BB_LOGFMT` in the BitBake manual.
569
570   :term:`BB_MULTI_PROVIDER_ALLOWED`
571      See :term:`bitbake:BB_MULTI_PROVIDER_ALLOWED` in the BitBake manual.
572
573   :term:`BB_NICE_LEVEL`
574      See :term:`bitbake:BB_NICE_LEVEL` in the BitBake manual.
575
576   :term:`BB_NO_NETWORK`
577      See :term:`bitbake:BB_NO_NETWORK` in the BitBake manual.
578
579   :term:`BB_NUMBER_PARSE_THREADS`
580      See :term:`bitbake:BB_NUMBER_PARSE_THREADS` in the BitBake manual.
581
582   :term:`BB_NUMBER_THREADS`
583      The maximum number of tasks BitBake should run in parallel at any one
584      time. The OpenEmbedded build system automatically configures this
585      variable to be equal to the number of cores on the build system. For
586      example, a system with a dual core processor that also uses
587      hyper-threading causes the :term:`BB_NUMBER_THREADS` variable to default
588      to "4".
589
590      For single socket systems (i.e. one CPU), you should not have to
591      override this variable to gain optimal parallelism during builds.
592      However, if you have very large systems that employ multiple physical
593      CPUs, you might want to make sure the :term:`BB_NUMBER_THREADS` variable
594      is not set higher than "20".
595
596      For more information on speeding up builds, see the
597      ":ref:`dev-manual/speeding-up-build:speeding up a build`"
598      section in the Yocto Project Development Tasks Manual.
599
600      On the other hand, if your goal is to limit the amount of system
601      resources consumed by BitBake tasks, setting :term:`BB_NUMBER_THREADS`
602      to a number lower than the number of CPU threads in your machine
603      won't be sufficient. That's because each package will still be built
604      and installed through a number of parallel jobs specified by the
605      :term:`PARALLEL_MAKE` variable, which is by default the number of CPU
606      threads in your system, and is not impacted by the
607      :term:`BB_NUMBER_THREADS` value.
608
609      So, if you set :term:`BB_NUMBER_THREADS` to "1" but don't set
610      :term:`PARALLEL_MAKE`, most of your system resources will be consumed
611      anyway.
612
613      Therefore, if you intend to reduce the load of your build system by
614      setting :term:`BB_NUMBER_THREADS` to a relatively low value compared
615      to the number of CPU threads on your system, you should also set
616      :term:`PARALLEL_MAKE` to a similarly low value.
617
618      An alternative to using :term:`BB_NUMBER_THREADS` to keep the usage
619      of build system resources under control is to use the smarter
620      :term:`BB_PRESSURE_MAX_CPU`, :term:`BB_PRESSURE_MAX_IO` or
621      :term:`BB_PRESSURE_MAX_MEMORY` controls. They will prevent BitBake
622      from starting new tasks as long as thresholds are exceeded. Anyway,
623      as with :term:`BB_NUMBER_THREADS`, such controls won't prevent the
624      tasks already being run from using all CPU threads on the system
625      if :term:`PARALLEL_MAKE` is not set to a low value.
626
627   :term:`BB_ORIGENV`
628      See :term:`bitbake:BB_ORIGENV` in the BitBake manual.
629
630   :term:`BB_PRESERVE_ENV`
631      See :term:`bitbake:BB_PRESERVE_ENV` in the BitBake manual.
632
633   :term:`BB_PRESSURE_MAX_CPU`
634      See :term:`bitbake:BB_PRESSURE_MAX_CPU` in the BitBake manual.
635
636   :term:`BB_PRESSURE_MAX_IO`
637      See :term:`bitbake:BB_PRESSURE_MAX_IO` in the BitBake manual.
638
639   :term:`BB_PRESSURE_MAX_MEMORY`
640      See :term:`bitbake:BB_PRESSURE_MAX_MEMORY` in the BitBake manual.
641
642   :term:`BB_RUNFMT`
643      See :term:`bitbake:BB_RUNFMT` in the BitBake manual.
644
645   :term:`BB_RUNTASK`
646      See :term:`bitbake:BB_RUNTASK` in the BitBake manual.
647
648   :term:`BB_SCHEDULER`
649      See :term:`bitbake:BB_SCHEDULER` in the BitBake manual.
650
651   :term:`BB_SCHEDULERS`
652      See :term:`bitbake:BB_SCHEDULERS` in the BitBake manual.
653
654   :term:`BB_SERVER_TIMEOUT`
655      Specifies the time (in seconds) after which to unload the BitBake
656      server due to inactivity. Set :term:`BB_SERVER_TIMEOUT` to determine how
657      long the BitBake server stays resident between invocations.
658
659      For example, the following statement in your ``local.conf`` file
660      instructs the server to be unloaded after 20 seconds of inactivity::
661
662         BB_SERVER_TIMEOUT = "20"
663
664      If you want the server to never be unloaded,
665      set :term:`BB_SERVER_TIMEOUT` to "-1".
666
667   :term:`BB_SETSCENE_DEPVALID`
668      See :term:`bitbake:BB_SETSCENE_DEPVALID` in the BitBake manual.
669
670   :term:`BB_SIGNATURE_EXCLUDE_FLAGS`
671      See :term:`bitbake:BB_SIGNATURE_EXCLUDE_FLAGS` in the BitBake manual.
672
673   :term:`BB_SIGNATURE_HANDLER`
674      See :term:`bitbake:BB_SIGNATURE_HANDLER` in the BitBake manual.
675
676   :term:`BB_SRCREV_POLICY`
677      See :term:`bitbake:BB_SRCREV_POLICY` in the BitBake manual.
678
679   :term:`BB_STRICT_CHECKSUM`
680      See :term:`bitbake:BB_STRICT_CHECKSUM` in the BitBake manual.
681
682   :term:`BB_TASK_IONICE_LEVEL`
683      See :term:`bitbake:BB_TASK_IONICE_LEVEL` in the BitBake manual.
684
685   :term:`BB_TASK_NICE_LEVEL`
686      See :term:`bitbake:BB_TASK_NICE_LEVEL` in the BitBake manual.
687
688   :term:`BB_TASKHASH`
689      See :term:`bitbake:BB_TASKHASH` in the BitBake manual.
690
691   :term:`BB_VERBOSE_LOGS`
692      See :term:`bitbake:BB_VERBOSE_LOGS` in the BitBake manual.
693
694   :term:`BB_WORKERCONTEXT`
695      See :term:`bitbake:BB_WORKERCONTEXT` in the BitBake manual.
696
697   :term:`BBCLASSEXTEND`
698      Allows you to extend a recipe so that it builds variants of the
699      software. There are common variants for recipes as "natives" like
700      ``quilt-native``, which is a copy of Quilt built to run on the build
701      system; "crosses" such as ``gcc-cross``, which is a compiler built to
702      run on the build machine but produces binaries that run on the target
703      :term:`MACHINE`; ":ref:`ref-classes-nativesdk`", which
704      targets the SDK machine instead of :term:`MACHINE`; and "mulitlibs" in
705      the form "``multilib:``\ multilib_name".
706
707      To build a different variant of the recipe with a minimal amount of
708      code, it usually is as simple as adding the following to your recipe::
709
710         BBCLASSEXTEND =+ "native nativesdk"
711         BBCLASSEXTEND =+ "multilib:multilib_name"
712
713      .. note::
714
715         Internally, the :term:`BBCLASSEXTEND` mechanism generates recipe
716         variants by rewriting variable values and applying overrides such
717         as ``:class-native``. For example, to generate a native version of
718         a recipe, a :term:`DEPENDS` on "foo" is rewritten
719         to a :term:`DEPENDS` on "foo-native".
720
721         Even when using :term:`BBCLASSEXTEND`, the recipe is only parsed once.
722         Parsing once adds some limitations. For example, it is not
723         possible to include a different file depending on the variant,
724         since ``include`` statements are processed when the recipe is
725         parsed.
726
727   :term:`BBDEBUG`
728      See :term:`bitbake:BBDEBUG` in the BitBake manual.
729
730   :term:`BBFILE_COLLECTIONS`
731      Lists the names of configured layers. These names are used to find
732      the other ``BBFILE_*`` variables. Typically, each layer will append
733      its name to this variable in its ``conf/layer.conf`` file.
734
735   :term:`BBFILE_PATTERN`
736      Variable that expands to match files from
737      :term:`BBFILES` in a particular layer. This variable
738      is used in the ``conf/layer.conf`` file and must be suffixed with the
739      name of the specific layer (e.g. ``BBFILE_PATTERN_emenlow``).
740
741   :term:`BBFILE_PRIORITY`
742      Assigns the priority for recipe files in each layer.
743
744      This variable is useful in situations where the same recipe appears
745      in more than one layer. Setting this variable allows you to
746      prioritize a layer against other layers that contain the same recipe
747      --- effectively letting you control the precedence for the multiple
748      layers. The precedence established through this variable stands
749      regardless of a recipe's version (:term:`PV` variable). For
750      example, a layer that has a recipe with a higher :term:`PV` value but for
751      which the :term:`BBFILE_PRIORITY` is set to have a lower precedence still
752      has a lower precedence.
753
754      A larger value for the :term:`BBFILE_PRIORITY` variable results in a
755      higher precedence. For example, the value 6 has a higher precedence
756      than the value 5. If not specified, the :term:`BBFILE_PRIORITY` variable
757      is set based on layer dependencies (see the :term:`LAYERDEPENDS` variable
758      for more information. The default priority, if unspecified for a
759      layer with no dependencies, is the lowest defined priority + 1 (or 1
760      if no priorities are defined).
761
762      .. tip::
763
764         You can use the command ``bitbake-layers show-layers``
765         to list all configured layers along with their priorities.
766
767   :term:`BBFILES`
768      A space-separated list of recipe files BitBake uses to build
769      software.
770
771      When specifying recipe files, you can pattern match using Python's
772      `glob <https://docs.python.org/3/library/glob.html>`__ syntax.
773      For details on the syntax, see the documentation by following the
774      previous link.
775
776   :term:`BBFILES_DYNAMIC`
777      Activates content when identified layers are present. You identify
778      the layers by the collections that the layers define.
779
780      Use the :term:`BBFILES_DYNAMIC` variable to avoid ``.bbappend`` files
781      whose corresponding ``.bb`` file is in a layer that attempts to
782      modify other layers through ``.bbappend`` but does not want to
783      introduce a hard dependency on those other layers.
784
785      Use the following form for :term:`BBFILES_DYNAMIC`:
786      ``collection_name:filename_pattern``.
787
788      The following example identifies two collection names and two
789      filename patterns::
790
791         BBFILES_DYNAMIC += " \
792            clang-layer:${LAYERDIR}/bbappends/meta-clang/*/*/*.bbappend \
793            core:${LAYERDIR}/bbappends/openembedded-core/meta/*/*/*.bbappend \
794            "
795
796      This next example shows an error message that occurs because invalid
797      entries are found, which cause parsing to fail:
798
799      .. code-block:: none
800
801         ERROR: BBFILES_DYNAMIC entries must be of the form <collection name>:<filename pattern>, not:
802             /work/my-layer/bbappends/meta-security-isafw/*/*/*.bbappend
803             /work/my-layer/bbappends/openembedded-core/meta/*/*/*.bbappend
804
805   :term:`BBINCLUDED`
806      See :term:`bitbake:BBINCLUDED` in the BitBake manual.
807
808   :term:`BBINCLUDELOGS`
809      Variable that controls how BitBake displays logs on build failure.
810
811   :term:`BBINCLUDELOGS_LINES`
812      If :term:`BBINCLUDELOGS` is set, specifies the
813      maximum number of lines from the task log file to print when
814      reporting a failed task. If you do not set :term:`BBINCLUDELOGS_LINES`,
815      the entire log is printed.
816
817   :term:`BBLAYERS`
818      Lists the layers to enable during the build. This variable is defined
819      in the ``bblayers.conf`` configuration file in the :term:`Build Directory`.
820      Here is an example::
821
822         BBLAYERS = " \
823             /home/scottrif/poky/meta \
824             /home/scottrif/poky/meta-poky \
825             /home/scottrif/poky/meta-yocto-bsp \
826             /home/scottrif/poky/meta-mykernel \
827             "
828
829      This example enables four layers, one of which is a custom,
830      user-defined layer named ``meta-mykernel``.
831
832   :term:`BBLAYERS_FETCH_DIR`
833      See :term:`bitbake:BBLAYERS_FETCH_DIR` in the BitBake manual.
834
835   :term:`BBMASK`
836      Prevents BitBake from processing recipes and recipe append files.
837
838      You can use the :term:`BBMASK` variable to "hide" these ``.bb`` and
839      ``.bbappend`` files. BitBake ignores any recipe or recipe append
840      files that match any of the expressions. It is as if BitBake does not
841      see them at all. Consequently, matching files are not parsed or
842      otherwise used by BitBake.
843
844      The values you provide are passed to Python's regular expression
845      compiler. Consequently, the syntax follows Python's Regular
846      Expression (re) syntax. The expressions are compared against the full
847      paths to the files. For complete syntax information, see Python's
848      documentation at https://docs.python.org/3/library/re.html#regular-expression-syntax.
849
850      The following example uses a complete regular expression to tell
851      BitBake to ignore all recipe and recipe append files in the
852      ``meta-ti/recipes-misc/`` directory::
853
854         BBMASK = "meta-ti/recipes-misc/"
855
856      If you want to mask out multiple directories or recipes, you can
857      specify multiple regular expression fragments. This next example
858      masks out multiple directories and individual recipes::
859
860         BBMASK += "/meta-ti/recipes-misc/ meta-ti/recipes-ti/packagegroup/"
861         BBMASK += "/meta-oe/recipes-support/"
862         BBMASK += "/meta-foo/.*/openldap"
863         BBMASK += "opencv.*\.bbappend"
864         BBMASK += "lzma"
865
866      .. note::
867
868         When specifying a directory name, use the trailing slash character
869         to ensure you match just that directory name.
870
871   :term:`BBMULTICONFIG`
872      Specifies each additional separate configuration when you are
873      building targets with multiple configurations. Use this variable in
874      your ``conf/local.conf`` configuration file. Specify a
875      multiconfigname for each configuration file you are using. For
876      example, the following line specifies three configuration files::
877
878         BBMULTICONFIG = "configA configB configC"
879
880      Each configuration file you use must reside in a ``multiconfig``
881      subdirectory of a configuration directory within a layer, or
882      within the :term:`Build Directory` (e.g.
883      ``build_directory/conf/multiconfig/configA.conf`` or
884      ``mylayer/conf/multiconfig/configB.conf``).
885
886      For information on how to use :term:`BBMULTICONFIG` in an environment
887      that supports building targets with multiple configurations, see the
888      ":ref:`dev-manual/building:building images for multiple targets using multiple configurations`"
889      section in the Yocto Project Development Tasks Manual.
890
891   :term:`BBPATH`
892      See :term:`bitbake:BBPATH` in the BitBake manual.
893
894   :term:`BBSERVER`
895      If defined in the BitBake environment, :term:`BBSERVER` points to the
896      BitBake remote server.
897
898      Use the following format to export the variable to the BitBake
899      environment::
900
901         export BBSERVER=localhost:$port
902
903      By default, :term:`BBSERVER` also appears in :term:`BB_BASEHASH_IGNORE_VARS`.
904      Consequently, :term:`BBSERVER` is excluded from checksum and dependency
905      data.
906
907   :term:`BBTARGETS`
908      See :term:`bitbake:BBTARGETS` in the BitBake manual.
909
910   :term:`BINCONFIG`
911      When inheriting the :ref:`ref-classes-binconfig-disabled` class, this
912      variable specifies binary configuration scripts to disable in favor of
913      using ``pkg-config`` to query the information. The
914      :ref:`ref-classes-binconfig-disabled` class will modify the specified
915      scripts to return an error so that calls to them can be easily found
916      and replaced.
917
918      To add multiple scripts, separate them by spaces. Here is an example
919      from the ``libpng`` recipe::
920
921         BINCONFIG = "${bindir}/libpng-config ${bindir}/libpng16-config"
922
923   :term:`BINCONFIG_GLOB`
924      When inheriting the :ref:`ref-classes-binconfig` class,
925      this variable specifies a wildcard for configuration scripts that
926      need editing. The scripts are edited to correct any paths that have
927      been set up during compilation so that they are correct for use when
928      installed into the sysroot and called by the build processes of other
929      recipes.
930
931      .. note::
932
933         The :term:`BINCONFIG_GLOB` variable uses
934         `shell globbing <https://tldp.org/LDP/abs/html/globbingref.html>`__,
935         which is recognition and expansion of wildcards during pattern
936         matching. Shell globbing is very similar to
937         `fnmatch <https://docs.python.org/3/library/fnmatch.html#module-fnmatch>`__
938         and `glob <https://docs.python.org/3/library/glob.html>`__.
939
940      For more information on how this variable works, see
941      ``meta/classes-recipe/binconfig.bbclass`` in the :term:`Source Directory`.
942      You can also find general
943      information on the class in the
944      ":ref:`ref-classes-binconfig`" section.
945
946   :term:`BITBAKE_UI`
947      See :term:`bitbake:BITBAKE_UI` in the BitBake manual.
948
949   :term:`BP`
950      The base recipe name and version but without any special recipe name
951      suffix (i.e. ``-native``, ``lib64-``, and so forth). :term:`BP` is
952      comprised of the following::
953
954         ${BPN}-${PV}
955
956   :term:`BPN`
957      This variable is a version of the :term:`PN` variable with
958      common prefixes and suffixes removed, such as ``nativesdk-``,
959      ``-cross``, ``-native``, and multilib's ``lib64-`` and ``lib32-``.
960      The exact lists of prefixes and suffixes removed are specified by the
961      :term:`MLPREFIX` and
962      :term:`SPECIAL_PKGSUFFIX` variables,
963      respectively.
964
965   :term:`BUGTRACKER`
966      Specifies a URL for an upstream bug tracking website for a recipe.
967      The OpenEmbedded build system does not use this variable. Rather, the
968      variable is a useful pointer in case a bug in the software being
969      built needs to be manually reported.
970
971   :term:`BUILD_ARCH`
972      Specifies the architecture of the build host (e.g. ``i686``). The
973      OpenEmbedded build system sets the value of :term:`BUILD_ARCH` from the
974      machine name reported by the ``uname`` command.
975
976   :term:`BUILD_AS_ARCH`
977      Specifies the architecture-specific assembler flags for the build
978      host. By default, the value of :term:`BUILD_AS_ARCH` is empty.
979
980   :term:`BUILD_CC_ARCH`
981      Specifies the architecture-specific C compiler flags for the build
982      host. By default, the value of :term:`BUILD_CC_ARCH` is empty.
983
984   :term:`BUILD_CCLD`
985      Specifies the linker command to be used for the build host when the C
986      compiler is being used as the linker. By default, :term:`BUILD_CCLD`
987      points to GCC and passes as arguments the value of
988      :term:`BUILD_CC_ARCH`, assuming
989      :term:`BUILD_CC_ARCH` is set.
990
991   :term:`BUILD_CFLAGS`
992      Specifies the flags to pass to the C compiler when building for the
993      build host. When building in the ``-native`` context,
994      :term:`CFLAGS` is set to the value of this variable by
995      default.
996
997   :term:`BUILD_CPPFLAGS`
998      Specifies the flags to pass to the C preprocessor (i.e. to both the C
999      and the C++ compilers) when building for the build host. When
1000      building in the ``-native`` context, :term:`CPPFLAGS`
1001      is set to the value of this variable by default.
1002
1003   :term:`BUILD_CXXFLAGS`
1004      Specifies the flags to pass to the C++ compiler when building for the
1005      build host. When building in the ``-native`` context,
1006      :term:`CXXFLAGS` is set to the value of this variable
1007      by default.
1008
1009   :term:`BUILD_FC`
1010      Specifies the Fortran compiler command for the build host. By
1011      default, :term:`BUILD_FC` points to Gfortran and passes as arguments the
1012      value of :term:`BUILD_CC_ARCH`, assuming
1013      :term:`BUILD_CC_ARCH` is set.
1014
1015   :term:`BUILD_LD`
1016      Specifies the linker command for the build host. By default,
1017      :term:`BUILD_LD` points to the GNU linker (ld) and passes as arguments
1018      the value of :term:`BUILD_LD_ARCH`, assuming
1019      :term:`BUILD_LD_ARCH` is set.
1020
1021   :term:`BUILD_LD_ARCH`
1022      Specifies architecture-specific linker flags for the build host. By
1023      default, the value of :term:`BUILD_LD_ARCH` is empty.
1024
1025   :term:`BUILD_LDFLAGS`
1026      Specifies the flags to pass to the linker when building for the build
1027      host. When building in the ``-native`` context,
1028      :term:`LDFLAGS` is set to the value of this variable
1029      by default.
1030
1031   :term:`BUILD_OPTIMIZATION`
1032      Specifies the optimization flags passed to the C compiler when
1033      building for the build host or the SDK. The flags are passed through
1034      the :term:`BUILD_CFLAGS` and
1035      :term:`BUILDSDK_CFLAGS` default values.
1036
1037      The default value of the :term:`BUILD_OPTIMIZATION` variable is "-O2
1038      -pipe".
1039
1040   :term:`BUILD_OS`
1041      Specifies the operating system in use on the build host (e.g.
1042      "linux"). The OpenEmbedded build system sets the value of
1043      :term:`BUILD_OS` from the OS reported by the ``uname`` command --- the
1044      first word, converted to lower-case characters.
1045
1046   :term:`BUILD_PREFIX`
1047      The toolchain binary prefix used for native recipes. The OpenEmbedded
1048      build system uses the :term:`BUILD_PREFIX` value to set the
1049      :term:`TARGET_PREFIX` when building for :ref:`ref-classes-native` recipes.
1050
1051   :term:`BUILD_STRIP`
1052      Specifies the command to be used to strip debugging symbols from
1053      binaries produced for the build host. By default, :term:`BUILD_STRIP`
1054      points to
1055      ``${``\ :term:`BUILD_PREFIX`\ ``}strip``.
1056
1057   :term:`BUILD_SYS`
1058      Specifies the system, including the architecture and the operating
1059      system, to use when building for the build host (i.e. when building
1060      :ref:`ref-classes-native` recipes).
1061
1062      The OpenEmbedded build system automatically sets this variable based
1063      on :term:`BUILD_ARCH`,
1064      :term:`BUILD_VENDOR`, and
1065      :term:`BUILD_OS`. You do not need to set the
1066      :term:`BUILD_SYS` variable yourself.
1067
1068   :term:`BUILD_VENDOR`
1069      Specifies the vendor name to use when building for the build host.
1070      The default value is an empty string ("").
1071
1072   :term:`BUILDDIR`
1073      Points to the location of the :term:`Build Directory`. You can define
1074      this directory indirectly through the :ref:`structure-core-script` script
1075      by passing in a :term:`Build Directory` path when you run the script. If
1076      you run the script and do not provide a :term:`Build Directory` path, the
1077      :term:`BUILDDIR` defaults to ``build`` in the current directory.
1078
1079   :term:`BUILDHISTORY_COMMIT`
1080      When inheriting the :ref:`ref-classes-buildhistory` class, this variable
1081      specifies whether or not to commit the build history output in a local
1082      Git repository. If set to "1", this local repository will be maintained
1083      automatically by the :ref:`ref-classes-buildhistory` class and a commit
1084      will be created on every build for changes to each top-level subdirectory
1085      of the build history output (images, packages, and sdk). If you want to
1086      track changes to build history over time, you should set this value to
1087      "1".
1088
1089      By default, the :ref:`ref-classes-buildhistory` class
1090      enables committing the buildhistory output in a local Git repository::
1091
1092         BUILDHISTORY_COMMIT ?= "1"
1093
1094   :term:`BUILDHISTORY_COMMIT_AUTHOR`
1095      When inheriting the :ref:`ref-classes-buildhistory`
1096      class, this variable specifies the author to use for each Git commit.
1097      In order for the :term:`BUILDHISTORY_COMMIT_AUTHOR` variable to work, the
1098      :term:`BUILDHISTORY_COMMIT` variable must
1099      be set to "1".
1100
1101      Git requires that the value you provide for the
1102      :term:`BUILDHISTORY_COMMIT_AUTHOR` variable takes the form of "name
1103      email@host". Providing an email address or host that is not valid
1104      does not produce an error.
1105
1106      By default, the :ref:`ref-classes-buildhistory` class sets the variable
1107      as follows::
1108
1109         BUILDHISTORY_COMMIT_AUTHOR ?= "buildhistory <buildhistory@${DISTRO}>"
1110
1111   :term:`BUILDHISTORY_DIR`
1112      When inheriting the :ref:`ref-classes-buildhistory`
1113      class, this variable specifies the directory in which build history
1114      information is kept. For more information on how the variable works,
1115      see the :ref:`ref-classes-buildhistory` class.
1116
1117      By default, the :ref:`ref-classes-buildhistory` class sets the directory
1118      as follows::
1119
1120         BUILDHISTORY_DIR ?= "${TOPDIR}/buildhistory"
1121
1122   :term:`BUILDHISTORY_FEATURES`
1123      When inheriting the :ref:`ref-classes-buildhistory`
1124      class, this variable specifies the build history features to be
1125      enabled. For more information on how build history works, see the
1126      ":ref:`dev-manual/build-quality:maintaining build output quality`"
1127      section in the Yocto Project Development Tasks Manual.
1128
1129      You can specify these features in the form of a space-separated list:
1130
1131      -  *image:* Analysis of the contents of images, which includes the
1132         list of installed packages among other things.
1133
1134      -  *package:* Analysis of the contents of individual packages.
1135
1136      -  *sdk:* Analysis of the contents of the software development kit
1137         (SDK).
1138
1139      -  *task:* Save output file signatures for
1140         :ref:`shared state <overview-manual/concepts:shared state cache>`
1141         (sstate) tasks.
1142         This saves one file per task and lists the SHA-256 checksums for
1143         each file staged (i.e. the output of the task).
1144
1145      By default, the :ref:`ref-classes-buildhistory` class enables the
1146      following features::
1147
1148         BUILDHISTORY_FEATURES ?= "image package sdk"
1149
1150   :term:`BUILDHISTORY_IMAGE_FILES`
1151      When inheriting the :ref:`ref-classes-buildhistory`
1152      class, this variable specifies a list of paths to files copied from
1153      the image contents into the build history directory under an
1154      "image-files" directory in the directory for the image, so that you
1155      can track the contents of each file. The default is to copy
1156      ``/etc/passwd`` and ``/etc/group``, which allows you to monitor for
1157      changes in user and group entries. You can modify the list to include
1158      any file. Specifying an invalid path does not produce an error.
1159      Consequently, you can include files that might not always be present.
1160
1161      By default, the :ref:`ref-classes-buildhistory` class provides paths to
1162      the following files::
1163
1164         BUILDHISTORY_IMAGE_FILES ?= "/etc/passwd /etc/group"
1165
1166   :term:`BUILDHISTORY_PATH_PREFIX_STRIP`
1167      When inheriting the :ref:`ref-classes-buildhistory`
1168      class, this variable specifies a common path prefix that should be
1169      stripped off the beginning of paths in the task signature list when the
1170      ``task`` feature is active in :term:`BUILDHISTORY_FEATURES`. This can be
1171      useful when build history is populated from multiple sources that may not
1172      all use the same top level directory.
1173
1174      By default, the :ref:`ref-classes-buildhistory` class sets the variable
1175      as follows::
1176
1177         BUILDHISTORY_PATH_PREFIX_STRIP ?= ""
1178
1179      In this case, no prefixes will be stripped.
1180
1181   :term:`BUILDHISTORY_PUSH_REPO`
1182      When inheriting the :ref:`ref-classes-buildhistory` class, this variable
1183      optionally specifies a remote repository to which build history pushes
1184      Git changes. In order for :term:`BUILDHISTORY_PUSH_REPO` to work,
1185      :term:`BUILDHISTORY_COMMIT` must be set to "1".
1186
1187      The repository should correspond to a remote address that specifies a
1188      repository as understood by Git, or alternatively to a remote name
1189      that you have set up manually using ``git remote`` within the local
1190      repository.
1191
1192      By default, the :ref:`ref-classes-buildhistory` class sets the variable
1193      as follows::
1194
1195         BUILDHISTORY_PUSH_REPO ?= ""
1196
1197   :term:`BUILDNAME`
1198      See :term:`bitbake:BUILDNAME` in the BitBake manual.
1199
1200   :term:`BUILDSDK_CFLAGS`
1201      Specifies the flags to pass to the C compiler when building for the
1202      SDK. When building in the ``nativesdk-`` context,
1203      :term:`CFLAGS` is set to the value of this variable by
1204      default.
1205
1206   :term:`BUILDSDK_CPPFLAGS`
1207      Specifies the flags to pass to the C pre-processor (i.e. to both the
1208      C and the C++ compilers) when building for the SDK. When building in
1209      the ``nativesdk-`` context, :term:`CPPFLAGS` is set
1210      to the value of this variable by default.
1211
1212   :term:`BUILDSDK_CXXFLAGS`
1213      Specifies the flags to pass to the C++ compiler when building for the
1214      SDK. When building in the ``nativesdk-`` context,
1215      :term:`CXXFLAGS` is set to the value of this variable
1216      by default.
1217
1218   :term:`BUILDSDK_LDFLAGS`
1219      Specifies the flags to pass to the linker when building for the SDK.
1220      When building in the ``nativesdk-`` context,
1221      :term:`LDFLAGS` is set to the value of this variable
1222      by default.
1223
1224   :term:`BUILDSTATS_BASE`
1225      Points to the location of the directory that holds build statistics
1226      when you use and enable the :ref:`ref-classes-buildstats` class. The
1227      :term:`BUILDSTATS_BASE` directory defaults to
1228      ``${``\ :term:`TMPDIR`\ ``}/buildstats/``.
1229
1230   :term:`BUSYBOX_SPLIT_SUID`
1231      For the BusyBox recipe, specifies whether to split the output
1232      executable file into two parts: one for features that require
1233      ``setuid root``, and one for the remaining features (i.e. those that
1234      do not require ``setuid root``).
1235
1236      The :term:`BUSYBOX_SPLIT_SUID` variable defaults to "1", which results in
1237      splitting the output executable file. Set the variable to "0" to get
1238      a single output executable file.
1239
1240   :term:`BZRDIR`
1241      See :term:`bitbake:BZRDIR` in the BitBake manual.
1242
1243   :term:`CACHE`
1244      Specifies the directory BitBake uses to store a cache of the
1245      :term:`Metadata` so it does not need to be parsed every time
1246      BitBake is started.
1247
1248   :term:`CC`
1249      The minimal command and arguments used to run the C compiler.
1250
1251   :term:`CFLAGS`
1252      Specifies the flags to pass to the C compiler. This variable is
1253      exported to an environment variable and thus made visible to the
1254      software being built during the compilation step.
1255
1256      Default initialization for :term:`CFLAGS` varies depending on what is
1257      being built:
1258
1259      -  :term:`TARGET_CFLAGS` when building for the
1260         target
1261
1262      -  :term:`BUILD_CFLAGS` when building for the
1263         build host (i.e. ``-native``)
1264
1265      -  :term:`BUILDSDK_CFLAGS` when building for
1266         an SDK (i.e. ``nativesdk-``)
1267
1268   :term:`CLASSOVERRIDE`
1269      An internal variable specifying the special class override that
1270      should currently apply (e.g. "class-target", "class-native", and so
1271      forth). The classes that use this variable (e.g.
1272      :ref:`ref-classes-native`, :ref:`ref-classes-nativesdk`, and so forth)
1273      set the variable to appropriate values.
1274
1275      .. note::
1276
1277         :term:`CLASSOVERRIDE` gets its default "class-target" value from the
1278         ``bitbake.conf`` file.
1279
1280      As an example, the following override allows you to install extra
1281      files, but only when building for the target::
1282
1283         do_install:append:class-target() {
1284             install my-extra-file ${D}${sysconfdir}
1285         }
1286
1287      Here is an example where ``FOO`` is set to
1288      "native" when building for the build host, and to "other" when not
1289      building for the build host::
1290
1291         FOO:class-native = "native"
1292         FOO = "other"
1293
1294      The underlying mechanism behind :term:`CLASSOVERRIDE` is simply
1295      that it is included in the default value of
1296      :term:`OVERRIDES`.
1297
1298   :term:`CLEANBROKEN`
1299      If set to "1" within a recipe, :term:`CLEANBROKEN` specifies that the
1300      ``make clean`` command does not work for the software being built.
1301      Consequently, the OpenEmbedded build system will not try to run
1302      ``make clean`` during the :ref:`ref-tasks-configure`
1303      task, which is the default behavior.
1304
1305   :term:`COMBINED_FEATURES`
1306      Provides a list of hardware features that are enabled in both
1307      :term:`MACHINE_FEATURES` and
1308      :term:`DISTRO_FEATURES`. This select list of
1309      features contains features that make sense to be controlled both at
1310      the machine and distribution configuration level. For example, the
1311      "bluetooth" feature requires hardware support but should also be
1312      optional at the distribution level, in case the hardware supports
1313      Bluetooth but you do not ever intend to use it.
1314
1315   :term:`COMMERCIAL_AUDIO_PLUGINS`
1316      This variable is specific to the :yocto_git:`GStreamer recipes
1317      </poky/tree/meta/recipes-multimedia/gstreamer/gstreamer1.0-meta-base.bb>`.
1318      It allows to build the GStreamer `"ugly"
1319      <https://github.com/GStreamer/gst-plugins-ugly>`__ and
1320      `"bad" <https://github.com/GStreamer/gst-plugins-bad>`__ audio plugins.
1321
1322      See the :ref:`dev-manual/licenses:other variables related to commercial licenses`
1323      section for usage details.
1324
1325   :term:`COMMERCIAL_VIDEO_PLUGINS`
1326      This variable is specific to the :yocto_git:`GStreamer recipes
1327      </poky/tree/meta/recipes-multimedia/gstreamer/gstreamer1.0-meta-base.bb>`.
1328      It allows to build the GStreamer `"ugly"
1329      <https://github.com/GStreamer/gst-plugins-ugly>`__ and
1330      `"bad" <https://github.com/GStreamer/gst-plugins-bad>`__ video plugins.
1331
1332      See the :ref:`dev-manual/licenses:other variables related to commercial licenses`
1333      section for usage details.
1334
1335   :term:`COMMON_LICENSE_DIR`
1336      Points to ``meta/files/common-licenses`` in the
1337      :term:`Source Directory`, which is where generic license
1338      files reside.
1339
1340   :term:`COMPATIBLE_HOST`
1341      A regular expression that resolves to one or more hosts (when the
1342      recipe is native) or one or more targets (when the recipe is
1343      non-native) with which a recipe is compatible. The regular expression
1344      is matched against :term:`HOST_SYS`. You can use the
1345      variable to stop recipes from being built for classes of systems with
1346      which the recipes are not compatible. Stopping these builds is
1347      particularly useful with kernels. The variable also helps to increase
1348      parsing speed since the build system skips parsing recipes not
1349      compatible with the current system.
1350
1351   :term:`COMPATIBLE_MACHINE`
1352      A regular expression that resolves to one or more target machines
1353      with which a recipe is compatible. The regular expression is matched
1354      against :term:`MACHINEOVERRIDES`. You can use
1355      the variable to stop recipes from being built for machines with which
1356      the recipes are not compatible. Stopping these builds is particularly
1357      useful with kernels. The variable also helps to increase parsing
1358      speed since the build system skips parsing recipes not compatible
1359      with the current machine.
1360
1361      If one wants to have a recipe only available for some architectures
1362      (here ``aarch64`` and ``mips64``), the following can be used::
1363
1364         COMPATIBLE_MACHINE = "^$"
1365         COMPATIBLE_MACHINE:arch64 = "^(aarch64)$"
1366         COMPATIBLE_MACHINE:mips64 = "^(mips64)$"
1367
1368      The first line means "match all machines whose :term:`MACHINEOVERRIDES`
1369      contains the empty string", which will always be none.
1370
1371      The second is for matching all machines whose :term:`MACHINEOVERRIDES`
1372      contains one override which is exactly ``aarch64``.
1373
1374      The third is for matching all machines whose :term:`MACHINEOVERRIDES`
1375      contains one override which is exactly ``mips64``.
1376
1377      The same could be achieved with::
1378
1379         COMPATIBLE_MACHINE = "^(aarch64|mips64)$"
1380
1381      .. note::
1382
1383         When :term:`COMPATIBLE_MACHINE` is set in a recipe inherits from
1384         native, the recipe is always skipped. All native recipes must be
1385         entirely target independent and should not rely on :term:`MACHINE`.
1386
1387   :term:`COMPLEMENTARY_GLOB`
1388      Defines wildcards to match when installing a list of complementary
1389      packages for all the packages explicitly (or implicitly) installed in
1390      an image.
1391
1392      The :term:`COMPLEMENTARY_GLOB` variable uses Unix filename pattern matching
1393      (`fnmatch <https://docs.python.org/3/library/fnmatch.html#module-fnmatch>`__),
1394      which is similar to the Unix style pathname pattern expansion
1395      (`glob <https://docs.python.org/3/library/glob.html>`__).
1396
1397      The resulting list of complementary packages is associated with an
1398      item that can be added to
1399      :term:`IMAGE_FEATURES`. An example usage of
1400      this is the "dev-pkgs" item that when added to :term:`IMAGE_FEATURES`
1401      will install -dev packages (containing headers and other development
1402      files) for every package in the image.
1403
1404      To add a new feature item pointing to a wildcard, use a variable flag
1405      to specify the feature item name and use the value to specify the
1406      wildcard. Here is an example::
1407
1408         COMPLEMENTARY_GLOB[dev-pkgs] = '*-dev'
1409
1410      .. note::
1411
1412         When installing complementary packages, recommends relationships
1413         (set via :term:`RRECOMMENDS`) are always ignored.
1414
1415   :term:`COMPONENTS_DIR`
1416      Stores sysroot components for each recipe. The OpenEmbedded build
1417      system uses :term:`COMPONENTS_DIR` when constructing recipe-specific
1418      sysroots for other recipes.
1419
1420      The default is
1421      "``${``\ :term:`STAGING_DIR`\ ``}-components``."
1422      (i.e.
1423      "``${``\ :term:`TMPDIR`\ ``}/sysroots-components``").
1424
1425   :term:`CONF_VERSION`
1426      Tracks the version of the local configuration file (i.e.
1427      ``local.conf``). The value for :term:`CONF_VERSION` increments each time
1428      ``build/conf/`` compatibility changes.
1429
1430   :term:`CONFFILES`
1431      Identifies editable or configurable files that are part of a package.
1432      If the Package Management System (PMS) is being used to update
1433      packages on the target system, it is possible that configuration
1434      files you have changed after the original installation and that you
1435      now want to remain unchanged are overwritten. In other words,
1436      editable files might exist in the package that you do not want reset
1437      as part of the package update process. You can use the :term:`CONFFILES`
1438      variable to list the files in the package that you wish to prevent
1439      the PMS from overwriting during this update process.
1440
1441      To use the :term:`CONFFILES` variable, provide a package name override
1442      that identifies the resulting package. Then, provide a
1443      space-separated list of files. Here is an example::
1444
1445         CONFFILES:${PN} += "${sysconfdir}/file1 \
1446             ${sysconfdir}/file2 ${sysconfdir}/file3"
1447
1448      There is a relationship between the :term:`CONFFILES` and :term:`FILES`
1449      variables. The files listed within :term:`CONFFILES` must be a subset of
1450      the files listed within :term:`FILES`. Because the configuration files
1451      you provide with :term:`CONFFILES` are simply being identified so that
1452      the PMS will not overwrite them, it makes sense that the files must
1453      already be included as part of the package through the :term:`FILES`
1454      variable.
1455
1456      .. note::
1457
1458         When specifying paths as part of the :term:`CONFFILES` variable, it is
1459         good practice to use appropriate path variables.
1460         For example, ``${sysconfdir}`` rather than ``/etc`` or ``${bindir}``
1461         rather than ``/usr/bin``. You can find a list of these variables at
1462         the top of the ``meta/conf/bitbake.conf`` file in the
1463         :term:`Source Directory`.
1464
1465   :term:`CONFIG_INITRAMFS_SOURCE`
1466      Identifies the initial RAM filesystem (:term:`Initramfs`) source files. The
1467      OpenEmbedded build system receives and uses this kernel Kconfig
1468      variable as an environment variable. By default, the variable is set
1469      to null ("").
1470
1471      The :term:`CONFIG_INITRAMFS_SOURCE` can be either a single cpio archive
1472      with a ``.cpio`` suffix or a space-separated list of directories and
1473      files for building the :term:`Initramfs` image. A cpio archive should contain
1474      a filesystem archive to be used as an :term:`Initramfs` image. Directories
1475      should contain a filesystem layout to be included in the :term:`Initramfs`
1476      image. Files should contain entries according to the format described
1477      by the ``usr/gen_init_cpio`` program in the kernel tree.
1478
1479      If you specify multiple directories and files, the :term:`Initramfs` image
1480      will be the aggregate of all of them.
1481
1482      For information on creating an :term:`Initramfs`, see the
1483      ":ref:`dev-manual/building:building an initial ram filesystem (Initramfs) image`" section
1484      in the Yocto Project Development Tasks Manual.
1485
1486   :term:`CONFIG_SITE`
1487      A list of files that contains ``autoconf`` test results relevant to
1488      the current build. This variable is used by the Autotools utilities
1489      when running ``configure``.
1490
1491   :term:`CONFIGURE_FLAGS`
1492      The minimal arguments for GNU configure.
1493
1494   :term:`CONFLICT_DISTRO_FEATURES`
1495      When inheriting the :ref:`ref-classes-features_check`
1496      class, this variable identifies distribution features that would be
1497      in conflict should the recipe be built. In other words, if the
1498      :term:`CONFLICT_DISTRO_FEATURES` variable lists a feature that also
1499      appears in :term:`DISTRO_FEATURES` within the current configuration, then
1500      the recipe will be skipped, and if the build system attempts to build
1501      the recipe then an error will be triggered.
1502
1503   :term:`CONVERSION_CMD`
1504      This variable is used for storing image conversion commands.
1505      Image conversion can convert an image into different objects like:
1506
1507      -   Compressed version of the image
1508
1509      -   Checksums for the image
1510
1511      An example of :term:`CONVERSION_CMD` from :ref:`ref-classes-image_types`
1512      class is::
1513
1514         CONVERSION_CMD:lzo = "lzop -9 ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}"
1515
1516   :term:`COPY_LIC_DIRS`
1517      If set to "1" along with the
1518      :term:`COPY_LIC_MANIFEST` variable, the
1519      OpenEmbedded build system copies into the image the license files,
1520      which are located in ``/usr/share/common-licenses``, for each
1521      package. The license files are placed in directories within the image
1522      itself during build time.
1523
1524      .. note::
1525
1526         The :term:`COPY_LIC_DIRS` does not offer a path for adding licenses for
1527         newly installed packages to an image, which might be most suitable for
1528         read-only filesystems that cannot be upgraded. See the
1529         :term:`LICENSE_CREATE_PACKAGE` variable for additional information.
1530         You can also reference the ":ref:`dev-manual/licenses:providing license text`"
1531         section in the Yocto Project Development Tasks Manual for
1532         information on providing license text.
1533
1534   :term:`COPY_LIC_MANIFEST`
1535      If set to "1", the OpenEmbedded build system copies the license
1536      manifest for the image to
1537      ``/usr/share/common-licenses/license.manifest`` within the image
1538      itself during build time.
1539
1540      .. note::
1541
1542         The :term:`COPY_LIC_MANIFEST` does not offer a path for adding licenses for
1543         newly installed packages to an image, which might be most suitable for
1544         read-only filesystems that cannot be upgraded. See the
1545         :term:`LICENSE_CREATE_PACKAGE` variable for additional information.
1546         You can also reference the ":ref:`dev-manual/licenses:providing license text`"
1547         section in the Yocto Project Development Tasks Manual for
1548         information on providing license text.
1549
1550   :term:`COPYLEFT_LICENSE_EXCLUDE`
1551      A space-separated list of licenses to exclude from the source archived by
1552      the :ref:`ref-classes-archiver` class. In other words, if a license in a
1553      recipe's :term:`LICENSE` value is in the value of
1554      :term:`COPYLEFT_LICENSE_EXCLUDE`, then its source is not archived by the
1555      class.
1556
1557      .. note::
1558
1559         The :term:`COPYLEFT_LICENSE_EXCLUDE` variable takes precedence over the
1560         :term:`COPYLEFT_LICENSE_INCLUDE` variable.
1561
1562      The default value, which is "CLOSED Proprietary", for
1563      :term:`COPYLEFT_LICENSE_EXCLUDE` is set by the
1564      :ref:`ref-classes-copyleft_filter` class, which
1565      is inherited by the :ref:`ref-classes-archiver` class.
1566
1567   :term:`COPYLEFT_LICENSE_INCLUDE`
1568      A space-separated list of licenses to include in the source archived
1569      by the :ref:`ref-classes-archiver` class. In other
1570      words, if a license in a recipe's :term:`LICENSE`
1571      value is in the value of :term:`COPYLEFT_LICENSE_INCLUDE`, then its
1572      source is archived by the class.
1573
1574      The default value is set by the :ref:`ref-classes-copyleft_filter` class,
1575      which is inherited by the :ref:`ref-classes-archiver` class. The default
1576      value includes "GPL*", "LGPL*", and "AGPL*".
1577
1578   :term:`COPYLEFT_PN_EXCLUDE`
1579      A list of recipes to exclude in the source archived by the
1580      :ref:`ref-classes-archiver` class. The :term:`COPYLEFT_PN_EXCLUDE`
1581      variable overrides the license inclusion and exclusion caused through the
1582      :term:`COPYLEFT_LICENSE_INCLUDE` and :term:`COPYLEFT_LICENSE_EXCLUDE`
1583      variables, respectively.
1584
1585      The default value, which is "" indicating to not explicitly exclude
1586      any recipes by name, for :term:`COPYLEFT_PN_EXCLUDE` is set by the
1587      :ref:`ref-classes-copyleft_filter` class, which is inherited by the
1588      :ref:`ref-classes-archiver` class.
1589
1590   :term:`COPYLEFT_PN_INCLUDE`
1591      A list of recipes to include in the source archived by the
1592      :ref:`ref-classes-archiver` class. The :term:`COPYLEFT_PN_INCLUDE`
1593      variable overrides the license inclusion and exclusion caused through the
1594      :term:`COPYLEFT_LICENSE_INCLUDE` and :term:`COPYLEFT_LICENSE_EXCLUDE`
1595      variables, respectively.
1596
1597      The default value, which is "" indicating to not explicitly include
1598      any recipes by name, for :term:`COPYLEFT_PN_INCLUDE` is set by the
1599      :ref:`ref-classes-copyleft_filter` class, which is inherited by the
1600      :ref:`ref-classes-archiver` class.
1601
1602   :term:`COPYLEFT_RECIPE_TYPES`
1603      A space-separated list of recipe types to include in the source
1604      archived by the :ref:`archiver <ref-classes-archiver>` class.
1605      Recipe types are ``target``, :ref:`ref-classes-native`,
1606      :ref:`ref-classes-nativesdk`, :ref:`ref-classes-cross`,
1607      :ref:`ref-classes-crosssdk`, and :ref:`ref-classes-cross-canadian`.
1608
1609      The default value, which is "target*", for :term:`COPYLEFT_RECIPE_TYPES`
1610      is set by the :ref:`ref-classes-copyleft_filter` class, which is
1611      inherited by the :ref:`ref-classes-archiver` class.
1612
1613   :term:`CORE_IMAGE_EXTRA_INSTALL`
1614      Specifies the list of packages to be added to the image. You should
1615      only set this variable in the ``local.conf`` configuration file found
1616      in the :term:`Build Directory`.
1617
1618      This variable replaces ``POKY_EXTRA_INSTALL``, which is no longer
1619      supported.
1620
1621   :term:`COREBASE`
1622      Specifies the parent directory of the OpenEmbedded-Core Metadata
1623      layer (i.e. ``meta``).
1624
1625      It is an important distinction that :term:`COREBASE` points to the parent
1626      of this layer and not the layer itself. Consider an example where you
1627      have cloned the Poky Git repository and retained the ``poky`` name
1628      for your local copy of the repository. In this case, :term:`COREBASE`
1629      points to the ``poky`` folder because it is the parent directory of
1630      the ``poky/meta`` layer.
1631
1632   :term:`COREBASE_FILES`
1633      Lists files from the :term:`COREBASE` directory that
1634      should be copied other than the layers listed in the
1635      ``bblayers.conf`` file. The :term:`COREBASE_FILES` variable allows
1636      to copy metadata from the OpenEmbedded build system
1637      into the extensible SDK.
1638
1639      Explicitly listing files in :term:`COREBASE` is needed because it
1640      typically contains build directories and other files that should not
1641      normally be copied into the extensible SDK. Consequently, the value
1642      of :term:`COREBASE_FILES` is used in order to only copy the files that
1643      are actually needed.
1644
1645   :term:`CPP`
1646      The minimal command and arguments used to run the C preprocessor.
1647
1648   :term:`CPPFLAGS`
1649      Specifies the flags to pass to the C pre-processor (i.e. to both the
1650      C and the C++ compilers). This variable is exported to an environment
1651      variable and thus made visible to the software being built during the
1652      compilation step.
1653
1654      Default initialization for :term:`CPPFLAGS` varies depending on what is
1655      being built:
1656
1657      -  :term:`TARGET_CPPFLAGS` when building for
1658         the target
1659
1660      -  :term:`BUILD_CPPFLAGS` when building for the
1661         build host (i.e. ``-native``)
1662
1663      -  :term:`BUILDSDK_CPPFLAGS` when building
1664         for an SDK (i.e. ``nativesdk-``)
1665
1666   :term:`CROSS_COMPILE`
1667      The toolchain binary prefix for the target tools. The
1668      :term:`CROSS_COMPILE` variable is the same as the
1669      :term:`TARGET_PREFIX` variable.
1670
1671      .. note::
1672
1673         The OpenEmbedded build system sets the :term:`CROSS_COMPILE`
1674         variable only in certain contexts (e.g. when building for kernel
1675         and kernel module recipes).
1676
1677   :term:`CVE_CHECK_IGNORE`
1678      This variable is deprecated and should be replaced by :term:`CVE_STATUS`.
1679
1680   :term:`CVE_CHECK_SHOW_WARNINGS`
1681      Specifies whether or not the :ref:`ref-classes-cve-check`
1682      class should generate warning messages on the console when unpatched
1683      CVEs are found. The default is "1", but you may wish to set it to "0" if
1684      you are already examining/processing the logs after the build has
1685      completed and thus do not need the warning messages.
1686
1687   :term:`CVE_CHECK_SKIP_RECIPE`
1688      The list of package names (:term:`PN`) for which
1689      CVEs (Common Vulnerabilities and Exposures) are ignored.
1690
1691   :term:`CVE_DB_UPDATE_INTERVAL`
1692      Specifies the CVE database update interval in seconds, as used by
1693      ``cve-update-db-native``. The default value is "86400" i.e. once a day
1694      (24*60*60). If the value is set to "0" then the update will be forced
1695      every time. Alternatively, a negative value e.g. "-1" will disable
1696      updates entirely.
1697
1698   :term:`CVE_PRODUCT`
1699      In a recipe, defines the name used to match the recipe name
1700      against the name in the upstream `NIST CVE database <https://nvd.nist.gov/>`__.
1701
1702      The default is ${:term:`BPN`} (except for recipes that inherit the
1703      :ref:`ref-classes-pypi` class where it is set based upon
1704      :term:`PYPI_PACKAGE`). If it does not match the name in the NIST CVE
1705      database or matches with multiple entries in the database, the default
1706      value needs to be changed.
1707
1708      Here is an example from the :oe_layerindex:`Berkeley DB recipe </layerindex/recipe/544>`::
1709
1710         CVE_PRODUCT = "oracle_berkeley_db berkeley_db"
1711
1712      Sometimes the product name is not specific enough, for example
1713      "tar" has been matching CVEs for the GNU ``tar`` package and also
1714      the ``node-tar`` node.js extension. To avoid this problem, use the
1715      vendor name as a prefix. The syntax for this is::
1716
1717         CVE_PRODUCT = "vendor:package"
1718
1719   :term:`CVE_STATUS`
1720      The CVE ID which is patched or should be ignored. Here is
1721      an example from the :oe_layerindex:`Python3 recipe</layerindex/recipe/23823>`::
1722
1723         CVE_STATUS[CVE-2020-15523] = "not-applicable-platform: Issue only applies on Windows"
1724
1725      It has the format "reason: description" and the description is optional.
1726      The Reason is mapped to the final CVE state by mapping via
1727      :term:`CVE_CHECK_STATUSMAP`. See :ref:`dev-manual/vulnerabilities:fixing vulnerabilities in recipes`
1728      for details.
1729
1730   :term:`CVE_STATUS_GROUPS`
1731      If there are many CVEs with the same status and reason, they can by simplified by using this
1732      variable instead of many similar lines with :term:`CVE_STATUS`::
1733
1734         CVE_STATUS_GROUPS = "CVE_STATUS_WIN CVE_STATUS_PATCHED"
1735
1736         CVE_STATUS_WIN = "CVE-1234-0001 CVE-1234-0002"
1737         CVE_STATUS_WIN[status] = "not-applicable-platform: Issue only applies on Windows"
1738         CVE_STATUS_PATCHED = "CVE-1234-0003 CVE-1234-0004"
1739         CVE_STATUS_PATCHED[status] = "fixed-version: Fixed externally"
1740
1741   :term:`CVE_CHECK_STATUSMAP`
1742      Mapping variable for all possible reasons of :term:`CVE_STATUS`:
1743      ``Patched``, ``Unpatched`` and ``Ignored``.
1744      See :ref:`ref-classes-cve-check` or ``meta/conf/cve-check-map.conf`` for more details::
1745
1746         CVE_CHECK_STATUSMAP[cpe-incorrect] = "Ignored"
1747
1748   :term:`CVE_VERSION`
1749      In a recipe, defines the version used to match the recipe version
1750      against the version in the `NIST CVE database <https://nvd.nist.gov/>`__
1751      when usign :ref:`ref-classes-cve-check`.
1752
1753      The default is ${:term:`PV`} but if recipes use custom version numbers
1754      which do not map to upstream software component release versions and the versions
1755      used in the CVE database, then this variable can be used to set the
1756      version number for :ref:`ref-classes-cve-check`. Example::
1757
1758          CVE_VERSION = "2.39"
1759
1760   :term:`CVSDIR`
1761      The directory in which files checked out under the CVS system are
1762      stored.
1763
1764   :term:`CXX`
1765      The minimal command and arguments used to run the C++ compiler.
1766
1767   :term:`CXXFLAGS`
1768      Specifies the flags to pass to the C++ compiler. This variable is
1769      exported to an environment variable and thus made visible to the
1770      software being built during the compilation step.
1771
1772      Default initialization for :term:`CXXFLAGS` varies depending on what is
1773      being built:
1774
1775      -  :term:`TARGET_CXXFLAGS` when building for
1776         the target
1777
1778      -  :term:`BUILD_CXXFLAGS` when building for the
1779         build host (i.e. ``-native``)
1780
1781      -  :term:`BUILDSDK_CXXFLAGS` when building
1782         for an SDK (i.e. ``nativesdk-``)
1783
1784   :term:`D`
1785      The destination directory. The location in the :term:`Build Directory`
1786      where components are installed by the
1787      :ref:`ref-tasks-install` task. This location defaults
1788      to::
1789
1790         ${WORKDIR}/image
1791
1792      .. note::
1793
1794         Tasks that read from or write to this directory should run under
1795         :ref:`fakeroot <overview-manual/concepts:fakeroot and pseudo>`.
1796
1797   :term:`DATE`
1798      The date the build was started. Dates appear using the year, month,
1799      and day (YMD) format (e.g. "20150209" for February 9th, 2015).
1800
1801   :term:`DATETIME`
1802      The date and time on which the current build started. The format is
1803      suitable for timestamps.
1804
1805   :term:`DEBIAN_NOAUTONAME`
1806      When the :ref:`ref-classes-debian` class is inherited,
1807      which is the default behavior, :term:`DEBIAN_NOAUTONAME` specifies a
1808      particular package should not be renamed according to Debian library
1809      package naming. You must use the package name as an override when you
1810      set this variable. Here is an example from the ``fontconfig`` recipe::
1811
1812         DEBIAN_NOAUTONAME:fontconfig-utils = "1"
1813
1814   :term:`DEBIANNAME`
1815      When the :ref:`ref-classes-debian` class is inherited,
1816      which is the default behavior, :term:`DEBIANNAME` allows you to override
1817      the library name for an individual package. Overriding the library
1818      name in these cases is rare. You must use the package name as an
1819      override when you set this variable. Here is an example from the
1820      ``dbus`` recipe::
1821
1822         DEBIANNAME:${PN} = "dbus-1"
1823
1824   :term:`DEBUG_BUILD`
1825      Specifies to build packages with debugging information. This
1826      influences the value of the :term:`SELECTED_OPTIMIZATION` variable.
1827
1828   :term:`DEBUG_OPTIMIZATION`
1829      The options to pass in :term:`TARGET_CFLAGS` and :term:`CFLAGS` when
1830      compiling a system for debugging. This variable defaults to "-O
1831      -fno-omit-frame-pointer ${DEBUG_FLAGS} -pipe".
1832
1833   :term:`DEBUG_PREFIX_MAP`
1834      Allows to set C compiler options, such as ``-fdebug-prefix-map``,
1835      ``-fmacro-prefix-map``, and ``-ffile-prefix-map``, which allow to
1836      replace build-time paths by install-time ones in the debugging sections
1837      of binaries.  This makes compiler output files location independent,
1838      at the cost of having to pass an extra command to tell the debugger
1839      where source files are.
1840
1841      This is used by the Yocto Project to guarantee
1842      :doc:`/test-manual/reproducible-builds` even when the source code of
1843      a package uses the ``__FILE__`` or ``assert()`` macros. See the
1844      `reproducible-builds.org <https://reproducible-builds.org/docs/build-path/>`__
1845      website for details.
1846
1847      This variable is set in the ``meta/conf/bitbake.conf`` file. It is
1848      not intended to be user-configurable.
1849
1850   :term:`DEFAULT_PREFERENCE`
1851      Specifies a weak bias for recipe selection priority.
1852
1853      The most common usage of this is variable is to set it to "-1" within
1854      a recipe for a development version of a piece of software. Using the
1855      variable in this way causes the stable version of the recipe to build
1856      by default in the absence of :term:`PREFERRED_VERSION` being used to
1857      build the development version.
1858
1859      .. note::
1860
1861         The bias provided by :term:`DEFAULT_PREFERENCE` is weak and is overridden
1862         by :term:`BBFILE_PRIORITY` if that variable is different between two
1863         layers that contain different versions of the same recipe.
1864
1865   :term:`DEFAULTTUNE`
1866      The default CPU and Application Binary Interface (ABI) tunings (i.e.
1867      the "tune") used by the OpenEmbedded build system. The
1868      :term:`DEFAULTTUNE` helps define
1869      :term:`TUNE_FEATURES`.
1870
1871      The default tune is either implicitly or explicitly set by the
1872      machine (:term:`MACHINE`). However, you can override
1873      the setting using available tunes as defined with
1874      :term:`AVAILTUNES`.
1875
1876   :term:`DEPENDS`
1877      Lists a recipe's build-time dependencies. These are dependencies on
1878      other recipes whose contents (e.g. headers and shared libraries) are
1879      needed by the recipe at build time.
1880
1881      As an example, consider a recipe ``foo`` that contains the following
1882      assignment::
1883
1884          DEPENDS = "bar"
1885
1886      The practical effect of the previous assignment is that all files
1887      installed by bar will be available in the appropriate staging sysroot,
1888      given by the :term:`STAGING_DIR* <STAGING_DIR>` variables, by the time
1889      the :ref:`ref-tasks-configure` task for ``foo`` runs. This mechanism is
1890      implemented by having :ref:`ref-tasks-configure` depend on the
1891      :ref:`ref-tasks-populate_sysroot` task of each recipe listed in
1892      :term:`DEPENDS`, through a
1893      ``[``\ :ref:`deptask <bitbake-user-manual/bitbake-user-manual-metadata:variable flags>`\ ``]``
1894      declaration in the :ref:`ref-classes-base` class.
1895
1896      .. note::
1897
1898         It seldom is necessary to reference, for example, :term:`STAGING_DIR_HOST`
1899         explicitly. The standard classes and build-related variables are
1900         configured to automatically use the appropriate staging sysroots.
1901
1902      As another example, :term:`DEPENDS` can also be used to add utilities
1903      that run on the build machine during the build. For example, a recipe
1904      that makes use of a code generator built by the recipe ``codegen``
1905      might have the following::
1906
1907         DEPENDS = "codegen-native"
1908
1909      For more
1910      information, see the :ref:`ref-classes-native` class and
1911      the :term:`EXTRANATIVEPATH` variable.
1912
1913      .. note::
1914
1915         -  :term:`DEPENDS` is a list of recipe names. Or, to be more precise,
1916            it is a list of :term:`PROVIDES` names, which
1917            usually match recipe names. Putting a package name such as
1918            "foo-dev" in :term:`DEPENDS` does not make sense. Use "foo"
1919            instead, as this will put files from all the packages that make
1920            up ``foo``, which includes those from ``foo-dev``, into the
1921            sysroot.
1922
1923         -  One recipe having another recipe in :term:`DEPENDS` does not by
1924            itself add any runtime dependencies between the packages
1925            produced by the two recipes. However, as explained in the
1926            ":ref:`overview-manual/concepts:automatically added runtime dependencies`"
1927            section in the Yocto Project Overview and Concepts Manual,
1928            runtime dependencies will often be added automatically, meaning
1929            :term:`DEPENDS` alone is sufficient for most recipes.
1930
1931         -  Counterintuitively, :term:`DEPENDS` is often necessary even for
1932            recipes that install precompiled components. For example, if
1933            ``libfoo`` is a precompiled library that links against
1934            ``libbar``, then linking against ``libfoo`` requires both
1935            ``libfoo`` and ``libbar`` to be available in the sysroot.
1936            Without a :term:`DEPENDS` from the recipe that installs ``libfoo``
1937            to the recipe that installs ``libbar``, other recipes might
1938            fail to link against ``libfoo``.
1939
1940      For information on runtime dependencies, see the :term:`RDEPENDS`
1941      variable. You can also see the
1942      ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:tasks`" and
1943      ":ref:`bitbake-user-manual/bitbake-user-manual-execution:dependencies`"
1944      sections in the BitBake User Manual for additional information on tasks
1945      and dependencies.
1946
1947   :term:`DEPLOY_DIR`
1948      Points to the general area that the OpenEmbedded build system uses to
1949      place images, packages, SDKs, and other output files that are ready
1950      to be used outside of the build system. By default, this directory
1951      resides within the :term:`Build Directory` as ``${TMPDIR}/deploy``.
1952
1953      For more information on the structure of the Build Directory, see
1954      ":ref:`ref-manual/structure:the build directory --- \`\`build/\`\``" section.
1955      For more detail on the contents of the ``deploy`` directory, see the
1956      ":ref:`overview-manual/concepts:images`",
1957      ":ref:`overview-manual/concepts:package feeds`", and
1958      ":ref:`overview-manual/concepts:application development sdk`" sections all in the
1959      Yocto Project Overview and Concepts Manual.
1960
1961   :term:`DEPLOY_DIR_DEB`
1962      Points to the area that the OpenEmbedded build system uses to place
1963      Debian packages that are ready to be used outside of the build
1964      system. This variable applies only when :term:`PACKAGE_CLASSES` contains
1965      ":ref:`ref-classes-package_deb`".
1966
1967      The BitBake configuration file initially defines the
1968      :term:`DEPLOY_DIR_DEB` variable as a sub-folder of
1969      :term:`DEPLOY_DIR`::
1970
1971         DEPLOY_DIR_DEB = "${DEPLOY_DIR}/deb"
1972
1973      The :ref:`ref-classes-package_deb` class uses the
1974      :term:`DEPLOY_DIR_DEB` variable to make sure the
1975      :ref:`ref-tasks-package_write_deb` task
1976      writes Debian packages into the appropriate folder. For more
1977      information on how packaging works, see the
1978      ":ref:`overview-manual/concepts:package feeds`" section
1979      in the Yocto Project Overview and Concepts Manual.
1980
1981   :term:`DEPLOY_DIR_IMAGE`
1982      Points to the area that the OpenEmbedded build system uses to place
1983      images and other associated output files that are ready to be
1984      deployed onto the target machine. The directory is machine-specific
1985      as it contains the ``${MACHINE}`` name. By default, this directory
1986      resides within the :term:`Build Directory` as
1987      ``${DEPLOY_DIR}/images/${MACHINE}/``.
1988
1989      It must not be used directly in recipes when deploying files. Instead,
1990      it's only useful when a recipe needs to "read" a file already deployed
1991      by a dependency. So, it should be filled with the contents of
1992      :term:`DEPLOYDIR` by the :ref:`ref-classes-deploy` class or with the
1993      contents of :term:`IMGDEPLOYDIR` by the :ref:`ref-classes-image` class.
1994
1995      For more information on the structure of the :term:`Build Directory`, see
1996      ":ref:`ref-manual/structure:the build directory --- \`\`build/\`\``" section.
1997      For more detail on the contents of the ``deploy`` directory, see the
1998      ":ref:`overview-manual/concepts:images`" and
1999      ":ref:`overview-manual/concepts:application development sdk`" sections both in
2000      the Yocto Project Overview and Concepts Manual.
2001
2002   :term:`DEPLOY_DIR_IPK`
2003      Points to the area that the OpenEmbedded build system uses to place
2004      IPK packages that are ready to be used outside of the build system.
2005      This variable applies only when :term:`PACKAGE_CLASSES` contains
2006      ":ref:`ref-classes-package_ipk`".
2007
2008      The BitBake configuration file initially defines this variable as a
2009      sub-folder of :term:`DEPLOY_DIR`::
2010
2011         DEPLOY_DIR_IPK = "${DEPLOY_DIR}/ipk"
2012
2013      The :ref:`ref-classes-package_ipk` class uses the :term:`DEPLOY_DIR_IPK`
2014      variable to make sure the :ref:`ref-tasks-package_write_ipk` task
2015      writes IPK packages into the appropriate folder. For more information
2016      on how packaging works, see the
2017      ":ref:`overview-manual/concepts:package feeds`" section
2018      in the Yocto Project Overview and Concepts Manual.
2019
2020   :term:`DEPLOY_DIR_RPM`
2021      Points to the area that the OpenEmbedded build system uses to place
2022      RPM packages that are ready to be used outside of the build system.
2023      This variable applies only when :term:`PACKAGE_CLASSES` contains
2024      ":ref:`ref-classes-package_rpm`".
2025
2026      The BitBake configuration file initially defines this variable as a
2027      sub-folder of :term:`DEPLOY_DIR`::
2028
2029         DEPLOY_DIR_RPM = "${DEPLOY_DIR}/rpm"
2030
2031      The :ref:`ref-classes-package_rpm` class uses the
2032      :term:`DEPLOY_DIR_RPM` variable to make sure the
2033      :ref:`ref-tasks-package_write_rpm` task
2034      writes RPM packages into the appropriate folder. For more information
2035      on how packaging works, see the
2036      ":ref:`overview-manual/concepts:package feeds`" section
2037      in the Yocto Project Overview and Concepts Manual.
2038
2039   :term:`DEPLOYDIR`
2040      When inheriting the :ref:`ref-classes-deploy` class, the
2041      :term:`DEPLOYDIR` points to a temporary work area for deployed files that
2042      is set in the :ref:`ref-classes-deploy` class as follows::
2043
2044         DEPLOYDIR = "${WORKDIR}/deploy-${PN}"
2045
2046      Recipes inheriting the :ref:`ref-classes-deploy` class should copy files to be
2047      deployed into :term:`DEPLOYDIR`, and the class will take care of copying
2048      them into :term:`DEPLOY_DIR_IMAGE`
2049      afterwards.
2050
2051   :term:`DESCRIPTION`
2052      The package description used by package managers. If not set,
2053      :term:`DESCRIPTION` takes the value of the :term:`SUMMARY`
2054      variable.
2055
2056   :term:`DEV_PKG_DEPENDENCY`
2057      Provides an easy way for recipes to disable or adjust the runtime recommendation
2058      (:term:`RRECOMMENDS`) of the ``${PN}-dev`` package on the main
2059      (``${PN}``) package.
2060
2061   :term:`DISABLE_STATIC`
2062      Used in order to disable static linking by default (in order to save
2063      space, since static libraries are often unused in embedded systems.)
2064      The default value is " --disable-static", however it can be set to ""
2065      in order to enable static linking if desired. Certain recipes do this
2066      individually, and also there is a
2067      ``meta/conf/distro/include/no-static-libs.inc`` include file that
2068      disables static linking for a number of recipes. Some software
2069      packages or build tools (such as CMake) have explicit support for
2070      enabling / disabling static linking, and in those cases
2071      :term:`DISABLE_STATIC` is not used.
2072
2073   :term:`DISTRO`
2074      The short name of the distribution. For information on the long name
2075      of the distribution, see the :term:`DISTRO_NAME`
2076      variable.
2077
2078      The :term:`DISTRO` variable corresponds to a distribution configuration
2079      file whose root name is the same as the variable's argument and whose
2080      filename extension is ``.conf``. For example, the distribution
2081      configuration file for the Poky distribution is named ``poky.conf``
2082      and resides in the ``meta-poky/conf/distro`` directory of the
2083      :term:`Source Directory`.
2084
2085      Within that ``poky.conf`` file, the :term:`DISTRO` variable is set as
2086      follows::
2087
2088         DISTRO = "poky"
2089
2090      Distribution configuration files are located in a ``conf/distro``
2091      directory within the :term:`Metadata` that contains the
2092      distribution configuration. The value for :term:`DISTRO` must not contain
2093      spaces, and is typically all lower-case.
2094
2095      .. note::
2096
2097         If the :term:`DISTRO` variable is blank, a set of default configurations
2098         are used, which are specified within
2099         ``meta/conf/distro/defaultsetup.conf`` also in the Source Directory.
2100
2101   :term:`DISTRO_CODENAME`
2102      Specifies a codename for the distribution being built.
2103
2104   :term:`DISTRO_EXTRA_RDEPENDS`
2105      Specifies a list of distro-specific packages to add to all images.
2106      This variable takes effect through ``packagegroup-base`` so the
2107      variable only really applies to the more full-featured images that
2108      include ``packagegroup-base``. You can use this variable to keep
2109      distro policy out of generic images. As with all other distro
2110      variables, you set this variable in the distro ``.conf`` file.
2111
2112   :term:`DISTRO_EXTRA_RRECOMMENDS`
2113      Specifies a list of distro-specific packages to add to all images if
2114      the packages exist. The packages might not exist or be empty (e.g.
2115      kernel modules). The list of packages are automatically installed but
2116      you can remove them.
2117
2118   :term:`DISTRO_FEATURES`
2119      The software support you want in your distribution for various
2120      features. You define your distribution features in the distribution
2121      configuration file.
2122
2123      In most cases, the presence or absence of a feature in
2124      :term:`DISTRO_FEATURES` is translated to the appropriate option supplied
2125      to the configure script during the
2126      :ref:`ref-tasks-configure` task for recipes that
2127      optionally support the feature. For example, specifying "x11" in
2128      :term:`DISTRO_FEATURES`, causes every piece of software built for the
2129      target that can optionally support X11 to have its X11 support
2130      enabled.
2131
2132      .. note::
2133
2134         Just enabling :term:`DISTRO_FEATURES` alone doesn't
2135         enable feature support for packages. Mechanisms such as making
2136         :term:`PACKAGECONFIG` track :term:`DISTRO_FEATURES` are used
2137         to enable/disable package features.
2138
2139      Two more examples are Bluetooth and NFS support. For a more complete
2140      list of features that ships with the Yocto Project and that you can
2141      provide with this variable, see the ":ref:`ref-features-distro`" section.
2142
2143   :term:`DISTRO_FEATURES_BACKFILL`
2144      A space-separated list of features to be added to :term:`DISTRO_FEATURES`
2145      if not also present in :term:`DISTRO_FEATURES_BACKFILL_CONSIDERED`.
2146
2147      This variable is set in the ``meta/conf/bitbake.conf`` file. It is
2148      not intended to be user-configurable. It is best to just reference
2149      the variable to see which distro features are being
2150      :ref:`backfilled <ref-features-backfill>` for all distro configurations.
2151
2152   :term:`DISTRO_FEATURES_BACKFILL_CONSIDERED`
2153      A space-separated list of features from :term:`DISTRO_FEATURES_BACKFILL`
2154      that should not be :ref:`backfilled <ref-features-backfill>` (i.e. added
2155      to :term:`DISTRO_FEATURES`) during the build.
2156
2157      This corresponds to an opt-out mechanism. When new default distro
2158      features are introduced, distribution maintainers can review (`consider`)
2159      them and decide to exclude them from the
2160      :ref:`backfilled <ref-features-backfill>` features. Therefore, the
2161      combination of :term:`DISTRO_FEATURES_BACKFILL` and
2162      :term:`DISTRO_FEATURES_BACKFILL_CONSIDERED` makes it possible to
2163      add new default features without breaking existing distributions.
2164
2165
2166   :term:`DISTRO_FEATURES_DEFAULT`
2167      A convenience variable that gives you the default list of distro
2168      features with the exception of any features specific to the C library
2169      (``libc``).
2170
2171      When creating a custom distribution, you might find it useful to be
2172      able to reuse the default
2173      :term:`DISTRO_FEATURES` options without the
2174      need to write out the full set. Here is an example that uses
2175      :term:`DISTRO_FEATURES_DEFAULT` from a custom distro configuration file::
2176
2177         DISTRO_FEATURES ?= "${DISTRO_FEATURES_DEFAULT} myfeature"
2178
2179   :term:`DISTRO_FEATURES_FILTER_NATIVE`
2180      Specifies a list of features that if present in the target
2181      :term:`DISTRO_FEATURES` value should be
2182      included in :term:`DISTRO_FEATURES` when building native recipes. This
2183      variable is used in addition to the features filtered using the
2184      :term:`DISTRO_FEATURES_NATIVE`
2185      variable.
2186
2187   :term:`DISTRO_FEATURES_FILTER_NATIVESDK`
2188      Specifies a list of features that if present in the target
2189      :term:`DISTRO_FEATURES` value should be included in
2190      :term:`DISTRO_FEATURES` when building :ref:`ref-classes-nativesdk`
2191      recipes. This variable is used in addition to the features filtered using
2192      the :term:`DISTRO_FEATURES_NATIVESDK` variable.
2193
2194   :term:`DISTRO_FEATURES_NATIVE`
2195      Specifies a list of features that should be included in
2196      :term:`DISTRO_FEATURES` when building native
2197      recipes. This variable is used in addition to the features filtered
2198      using the
2199      :term:`DISTRO_FEATURES_FILTER_NATIVE`
2200      variable.
2201
2202   :term:`DISTRO_FEATURES_NATIVESDK`
2203      Specifies a list of features that should be included in
2204      :term:`DISTRO_FEATURES` when building
2205      :ref:`ref-classes-nativesdk` recipes. This variable is used
2206      in addition to the features filtered using the
2207      :term:`DISTRO_FEATURES_FILTER_NATIVESDK` variable.
2208
2209   :term:`DISTRO_NAME`
2210      The long name of the distribution. For information on the short name
2211      of the distribution, see the :term:`DISTRO` variable.
2212
2213      The :term:`DISTRO_NAME` variable corresponds to a distribution
2214      configuration file whose root name is the same as the variable's
2215      argument and whose filename extension is ``.conf``. For example, the
2216      distribution configuration file for the Poky distribution is named
2217      ``poky.conf`` and resides in the ``meta-poky/conf/distro`` directory
2218      of the :term:`Source Directory`.
2219
2220      Within that ``poky.conf`` file, the :term:`DISTRO_NAME` variable is set
2221      as follows::
2222
2223         DISTRO_NAME = "Poky (Yocto Project Reference Distro)"
2224
2225      Distribution configuration files are located in a ``conf/distro``
2226      directory within the :term:`Metadata` that contains the
2227      distribution configuration.
2228
2229      .. note::
2230
2231         If the :term:`DISTRO_NAME` variable is blank, a set of default
2232         configurations are used, which are specified within
2233         ``meta/conf/distro/defaultsetup.conf`` also in the Source Directory.
2234
2235   :term:`DISTRO_VERSION`
2236      The version of the distribution.
2237
2238   :term:`DISTROOVERRIDES`
2239      A colon-separated list of overrides specific to the current
2240      distribution. By default, this list includes the value of
2241      :term:`DISTRO`.
2242
2243      You can extend :term:`DISTROOVERRIDES` to add extra overrides that should
2244      apply to the distribution.
2245
2246      The underlying mechanism behind :term:`DISTROOVERRIDES` is simply that it
2247      is included in the default value of
2248      :term:`OVERRIDES`.
2249
2250      Here is an example from :yocto_git:`meta-poky/conf/distro/poky-tiny.conf
2251      </poky/tree/meta-poky/conf/distro/poky-tiny.conf>`::
2252
2253         DISTROOVERRIDES = "poky:poky-tiny"
2254
2255   :term:`DL_DIR`
2256      The central download directory used by the build process to store
2257      downloads. By default, :term:`DL_DIR` gets files suitable for mirroring
2258      for everything except Git repositories. If you want tarballs of Git
2259      repositories, use the
2260      :term:`BB_GENERATE_MIRROR_TARBALLS`
2261      variable.
2262
2263      You can set this directory by defining the :term:`DL_DIR` variable in the
2264      ``conf/local.conf`` file. This directory is self-maintaining and you
2265      should not have to touch it. By default, the directory is
2266      ``downloads`` in the :term:`Build Directory`::
2267
2268         #DL_DIR ?= "${TOPDIR}/downloads"
2269
2270      To specify a different download directory,
2271      simply remove the comment from the line and provide your directory.
2272
2273      During a first build, the system downloads many different source code
2274      tarballs from various upstream projects. Downloading can take a
2275      while, particularly if your network connection is slow. Tarballs are
2276      all stored in the directory defined by :term:`DL_DIR` and the build
2277      system looks there first to find source tarballs.
2278
2279      .. note::
2280
2281         When wiping and rebuilding, you can preserve this directory to
2282         speed up this part of subsequent builds.
2283
2284      You can safely share this directory between multiple builds on the
2285      same development machine. For additional information on how the build
2286      process gets source files when working behind a firewall or proxy
2287      server, see this specific question in the ":doc:`faq`"
2288      chapter. You can also refer to the
2289      ":yocto_wiki:`Working Behind a Network Proxy </Working_Behind_a_Network_Proxy>`"
2290      Wiki page.
2291
2292   :term:`DOC_COMPRESS`
2293      When inheriting the :ref:`ref-classes-compress_doc`
2294      class, this variable sets the compression policy used when the
2295      OpenEmbedded build system compresses manual and info pages. By
2296      default, the compression method used is gz (gzip). Other policies
2297      available are xz and bz2.
2298
2299      For information on policies and on how to use this variable, see the
2300      comments in the ``meta/classes-recipe/compress_doc.bbclass`` file.
2301
2302   :term:`DT_FILES`
2303      Space-separated list of device tree source files to compile using
2304      a recipe that inherits the :ref:`ref-classes-devicetree` class. These
2305      are relative to the :term:`DT_FILES_PATH`.
2306
2307      For convenience, both ``.dts`` and ``.dtb`` extensions can be used.
2308
2309      Use an empty string (default) to build all device tree sources within
2310      the :term:`DT_FILES_PATH` directory.
2311
2312   :term:`DT_FILES_PATH`
2313      When compiling out-of-tree device tree sources using a recipe that
2314      inherits the :ref:`ref-classes-devicetree` class, this variable specifies
2315      the path to the directory containing dts files to build.
2316
2317      Defaults to the :term:`S` directory.
2318
2319   :term:`DT_PADDING_SIZE`
2320      When inheriting the :ref:`ref-classes-devicetree` class, this variable
2321      specifies the size of padding appended to the device tree blob, used as
2322      extra space typically for additional properties during boot.
2323
2324   :term:`EFI_PROVIDER`
2325      When building bootable images (i.e. where ``hddimg``, ``iso``, or
2326      ``wic.vmdk`` is in :term:`IMAGE_FSTYPES`), the
2327      :term:`EFI_PROVIDER` variable specifies the EFI bootloader to use. The
2328      default is "grub-efi", but "systemd-boot" can be used instead.
2329
2330      See the :ref:`ref-classes-systemd-boot` and :ref:`ref-classes-image-live`
2331      classes for more information.
2332
2333   :term:`ENABLE_BINARY_LOCALE_GENERATION`
2334      Variable that controls which locales for ``glibc`` are generated
2335      during the build (useful if the target device has 64Mbytes of RAM or
2336      less).
2337
2338   :term:`ERR_REPORT_DIR`
2339      When used with the :ref:`ref-classes-report-error` class, specifies the
2340      path used for storing the debug files created by the :ref:`error reporting
2341      tool <dev-manual/error-reporting-tool:using the error reporting tool>`,
2342      which allows you to submit build errors you encounter to a central
2343      database. By default, the value of this variable is
2344      ``${``\ :term:`LOG_DIR`\ ``}/error-report``.
2345
2346      You can set :term:`ERR_REPORT_DIR` to the path you want the error
2347      reporting tool to store the debug files as follows in your
2348      ``local.conf`` file::
2349
2350         ERR_REPORT_DIR = "path"
2351
2352   :term:`ERROR_QA`
2353      Specifies the quality assurance checks whose failures are reported as
2354      errors by the OpenEmbedded build system. You set this variable in
2355      your distribution configuration file. For a list of the checks you
2356      can control with this variable, see the
2357      ":ref:`ref-classes-insane`" section.
2358
2359   :term:`ESDK_CLASS_INHERIT_DISABLE`
2360      A list of classes to remove from the :term:`INHERIT`
2361      value globally within the extensible SDK configuration. The
2362      :ref:`populate-sdk-ext <ref-classes-populate-sdk-*>` class sets the
2363      default value::
2364
2365         ESDK_CLASS_INHERIT_DISABLE ?= "buildhistory icecc"
2366
2367      Some classes are not generally applicable within the extensible SDK
2368      context. You can use this variable to disable those classes.
2369
2370      For additional information on how to customize the extensible SDK's
2371      configuration, see the
2372      ":ref:`sdk-manual/appendix-customizing:configuring the extensible sdk`"
2373      section in the Yocto Project Application Development and the
2374      Extensible Software Development Kit (eSDK) manual.
2375
2376   :term:`ESDK_LOCALCONF_ALLOW`
2377      A list of variables allowed through from the OpenEmbedded build
2378      system configuration into the extensible SDK configuration. By
2379      default, the list of variables is empty and is set in the
2380      :ref:`populate-sdk-ext <ref-classes-populate-sdk-*>` class.
2381
2382      This list overrides the variables specified using the
2383      :term:`ESDK_LOCALCONF_REMOVE` variable as well as
2384      other variables automatically added due to the "/" character
2385      being found at the start of the
2386      value, which is usually indicative of being a path and thus might not
2387      be valid on the system where the SDK is installed.
2388
2389      For additional information on how to customize the extensible SDK's
2390      configuration, see the
2391      ":ref:`sdk-manual/appendix-customizing:configuring the extensible sdk`"
2392      section in the Yocto Project Application Development and the
2393      Extensible Software Development Kit (eSDK) manual.
2394
2395   :term:`ESDK_LOCALCONF_REMOVE`
2396      A list of variables not allowed through from the OpenEmbedded build
2397      system configuration into the extensible SDK configuration. Usually,
2398      these are variables that are specific to the machine on which the
2399      build system is running and thus would be potentially problematic
2400      within the extensible SDK.
2401
2402      By default, :term:`ESDK_LOCALCONF_REMOVE` is set in the
2403      :ref:`populate-sdk-ext <ref-classes-populate-sdk-*>` class and
2404      excludes the following variables:
2405
2406      - :term:`CONF_VERSION`
2407      - :term:`BB_NUMBER_THREADS`
2408      - :term:`BB_NUMBER_PARSE_THREADS`
2409      - :term:`PARALLEL_MAKE`
2410      - :term:`PRSERV_HOST`
2411      - :term:`SSTATE_MIRRORS` :term:`DL_DIR`
2412      - :term:`SSTATE_DIR` :term:`TMPDIR`
2413      - :term:`BB_SERVER_TIMEOUT`
2414
2415      For additional information on how to customize the extensible SDK's
2416      configuration, see the
2417      ":ref:`sdk-manual/appendix-customizing:configuring the extensible sdk`"
2418      section in the Yocto Project Application Development and the
2419      Extensible Software Development Kit (eSDK) manual.
2420
2421   :term:`EXCLUDE_FROM_SHLIBS`
2422      Triggers the OpenEmbedded build system's shared libraries resolver to
2423      exclude an entire package when scanning for shared libraries.
2424
2425      .. note::
2426
2427         The shared libraries resolver's functionality results in part from
2428         the internal function ``package_do_shlibs``, which is part of the
2429         :ref:`ref-tasks-package` task. You should be aware that the shared
2430         libraries resolver might implicitly define some dependencies between
2431         packages.
2432
2433      The :term:`EXCLUDE_FROM_SHLIBS` variable is similar to the
2434      :term:`PRIVATE_LIBS` variable, which excludes a
2435      package's particular libraries only and not the whole package.
2436
2437      Use the :term:`EXCLUDE_FROM_SHLIBS` variable by setting it to "1" for a
2438      particular package::
2439
2440         EXCLUDE_FROM_SHLIBS = "1"
2441
2442   :term:`EXCLUDE_FROM_WORLD`
2443      Directs BitBake to exclude a recipe from world builds (i.e.
2444      ``bitbake world``). During world builds, BitBake locates, parses and
2445      builds all recipes found in every layer exposed in the
2446      ``bblayers.conf`` configuration file.
2447
2448      To exclude a recipe from a world build using this variable, set the
2449      variable to "1" in the recipe.
2450
2451      .. note::
2452
2453         Recipes added to :term:`EXCLUDE_FROM_WORLD` may still be built during a
2454         world build in order to satisfy dependencies of other recipes. Adding
2455         a recipe to :term:`EXCLUDE_FROM_WORLD` only ensures that the recipe is not
2456         explicitly added to the list of build targets in a world build.
2457
2458   :term:`EXTENDPE`
2459      Used with file and pathnames to create a prefix for a recipe's
2460      version based on the recipe's :term:`PE` value. If :term:`PE`
2461      is set and greater than zero for a recipe, :term:`EXTENDPE` becomes that
2462      value (e.g if :term:`PE` is equal to "1" then :term:`EXTENDPE` becomes "1").
2463      If a recipe's :term:`PE` is not set (the default) or is equal to zero,
2464      :term:`EXTENDPE` becomes "".
2465
2466      See the :term:`STAMP` variable for an example.
2467
2468   :term:`EXTENDPKGV`
2469      The full package version specification as it appears on the final
2470      packages produced by a recipe. The variable's value is normally used
2471      to fix a runtime dependency to the exact same version of another
2472      package in the same recipe::
2473
2474         RDEPENDS:${PN}-additional-module = "${PN} (= ${EXTENDPKGV})"
2475
2476      The dependency relationships are intended to force the package
2477      manager to upgrade these types of packages in lock-step.
2478
2479   :term:`EXTERNAL_KERNEL_TOOLS`
2480      When set, the :term:`EXTERNAL_KERNEL_TOOLS` variable indicates that these
2481      tools are not in the source tree.
2482
2483      When kernel tools are available in the tree, they are preferred over
2484      any externally installed tools. Setting the :term:`EXTERNAL_KERNEL_TOOLS`
2485      variable tells the OpenEmbedded build system to prefer the installed
2486      external tools. See the :ref:`ref-classes-kernel-yocto` class in
2487      ``meta/classes-recipe`` to see how the variable is used.
2488
2489   :term:`KERNEL_LOCALVERSION`
2490      This variable allows to append a string to the version
2491      of the kernel image. This corresponds to the ``CONFIG_LOCALVERSION``
2492      kernel configuration parameter.
2493
2494      Using this variable is only useful when you are using a kernel recipe
2495      inheriting the :ref:`ref-classes-kernel` class, and which doesn't
2496      already set a local version. Therefore, setting this variable has no
2497      impact on ``linux-yocto`` kernels.
2498
2499   :term:`EXTERNAL_TOOLCHAIN`
2500      When you intend to use an
2501      :ref:`external toolchain <dev-manual/external-toolchain:optionally using an external toolchain>`,
2502      this variable allows to specify the directory where this toolchain was
2503      installed.
2504
2505   :term:`EXTERNALSRC`
2506      When inheriting the :ref:`ref-classes-externalsrc`
2507      class, this variable points to the source tree, which is outside of
2508      the OpenEmbedded build system. When set, this variable sets the
2509      :term:`S` variable, which is what the OpenEmbedded build
2510      system uses to locate unpacked recipe source code.
2511
2512      See the ":ref:`ref-classes-externalsrc`" section for details. You
2513      can also find information on how to use this variable in the
2514      ":ref:`dev-manual/building:building software from an external source`"
2515      section in the Yocto Project Development Tasks Manual.
2516
2517   :term:`EXTERNALSRC_BUILD`
2518      When inheriting the :ref:`ref-classes-externalsrc`
2519      class, this variable points to the directory in which the recipe's
2520      source code is built, which is outside of the OpenEmbedded build
2521      system. When set, this variable sets the :term:`B` variable,
2522      which is what the OpenEmbedded build system uses to locate the
2523      :term:`Build Directory`.
2524
2525      See the ":ref:`ref-classes-externalsrc`" section for details. You
2526      can also find information on how to use this variable in the
2527      ":ref:`dev-manual/building:building software from an external source`"
2528      section in the Yocto Project Development Tasks Manual.
2529
2530   :term:`EXTRA_AUTORECONF`
2531      For recipes inheriting the :ref:`ref-classes-autotools`
2532      class, you can use :term:`EXTRA_AUTORECONF` to specify extra options to
2533      pass to the ``autoreconf`` command that is executed during the
2534      :ref:`ref-tasks-configure` task.
2535
2536      The default value is "--exclude=autopoint".
2537
2538   :term:`EXTRA_IMAGE_FEATURES`
2539      A list of additional features to include in an image. When listing
2540      more than one feature, separate them with a space.
2541
2542      Typically, you configure this variable in your ``local.conf`` file,
2543      which is found in the :term:`Build Directory`. Although you can use this
2544      variable from within a recipe, best practices dictate that you do not.
2545
2546      .. note::
2547
2548         To enable primary features from within the image recipe, use the
2549         :term:`IMAGE_FEATURES` variable.
2550
2551      Here are some examples of features you can add:
2552
2553        - "dbg-pkgs" --- adds -dbg packages for all installed packages including
2554          symbol information for debugging and profiling.
2555
2556        - "debug-tweaks" --- makes an image suitable for debugging. For example, allows root logins without passwords and
2557          enables post-installation logging. See the 'allow-empty-password' and
2558          'post-install-logging' features in the ":ref:`ref-features-image`"
2559          section for more information.
2560        - "dev-pkgs" --- adds -dev packages for all installed packages. This is
2561          useful if you want to develop against the libraries in the image.
2562        - "read-only-rootfs" --- creates an image whose root filesystem is
2563          read-only. See the
2564          ":ref:`dev-manual/read-only-rootfs:creating a read-only root filesystem`"
2565          section in the Yocto Project Development Tasks Manual for more
2566          information
2567        - "tools-debug" --- adds debugging tools such as gdb and strace.
2568        - "tools-sdk" --- adds development tools such as gcc, make,
2569          pkgconfig and so forth.
2570        - "tools-testapps" --- adds useful testing tools
2571          such as ts_print, aplay, arecord and so forth.
2572
2573      For a complete list of image features that ships with the Yocto
2574      Project, see the ":ref:`ref-features-image`" section.
2575
2576      For an example that shows how to customize your image by using this
2577      variable, see the ":ref:`dev-manual/customizing-images:customizing images using custom \`\`image_features\`\` and \`\`extra_image_features\`\``"
2578      section in the Yocto Project Development Tasks Manual.
2579
2580   :term:`EXTRA_IMAGECMD`
2581      Specifies additional options for the image creation command that has
2582      been specified in :term:`IMAGE_CMD`. When setting
2583      this variable, use an override for the associated image type. Here is
2584      an example::
2585
2586         EXTRA_IMAGECMD:ext3 ?= "-i 4096"
2587
2588   :term:`EXTRA_IMAGEDEPENDS`
2589      A list of recipes to build that do not provide packages for
2590      installing into the root filesystem.
2591
2592      Sometimes a recipe is required to build the final image but is not
2593      needed in the root filesystem. You can use the :term:`EXTRA_IMAGEDEPENDS`
2594      variable to list these recipes and thus specify the dependencies. A
2595      typical example is a required bootloader in a machine configuration.
2596
2597      .. note::
2598
2599         To add packages to the root filesystem, see the various
2600         :term:`RDEPENDS` and :term:`RRECOMMENDS` variables.
2601
2602   :term:`EXTRA_OECMAKE`
2603      Additional `CMake <https://cmake.org/overview/>`__ options. See the
2604      :ref:`ref-classes-cmake` class for additional information.
2605
2606   :term:`EXTRA_OECONF`
2607      Additional ``configure`` script options. See
2608      :term:`PACKAGECONFIG_CONFARGS` for
2609      additional information on passing configure script options.
2610
2611   :term:`EXTRA_OEMAKE`
2612      Additional GNU ``make`` options.
2613
2614      Because the :term:`EXTRA_OEMAKE` defaults to "", you need to set the
2615      variable to specify any required GNU options.
2616
2617      :term:`PARALLEL_MAKE` and
2618      :term:`PARALLEL_MAKEINST` also make use of
2619      :term:`EXTRA_OEMAKE` to pass the required flags.
2620
2621   :term:`EXTRA_OESCONS`
2622      When inheriting the :ref:`ref-classes-scons` class, this
2623      variable specifies additional configuration options you want to pass
2624      to the ``scons`` command line.
2625
2626   :term:`EXTRA_OEMESON`
2627      Additional `Meson <https://mesonbuild.com/>`__ options. See the
2628      :ref:`ref-classes-meson` class for additional information.
2629
2630      In addition to standard Meson options, such options correspond to
2631      `Meson build options <https://mesonbuild.com/Build-options.html>`__
2632      defined in the ``meson_options.txt`` file in the sources to build.
2633      Here is an example::
2634
2635         EXTRA_OEMESON = "-Dpython=disabled -Dvalgrind=disabled"
2636
2637      Note that any custom value for the Meson ``--buildtype`` option
2638      should be set through the :term:`MESON_BUILDTYPE` variable.
2639
2640   :term:`EXTRA_USERS_PARAMS`
2641      When inheriting the :ref:`ref-classes-extrausers`
2642      class, this variable provides image level user and group operations.
2643      This is a more global method of providing user and group
2644      configuration as compared to using the
2645      :ref:`ref-classes-useradd` class, which ties user and
2646      group configurations to a specific recipe.
2647
2648      The set list of commands you can configure using the
2649      :term:`EXTRA_USERS_PARAMS` is shown in the
2650      :ref:`ref-classes-extrausers` class. These commands map to the normal
2651      Unix commands of the same names::
2652
2653         # EXTRA_USERS_PARAMS = "\
2654         # useradd -p '' tester; \
2655         # groupadd developers; \
2656         # userdel nobody; \
2657         # groupdel -g video; \
2658         # groupmod -g 1020 developers; \
2659         # usermod -s /bin/sh tester; \
2660         # "
2661
2662      Hardcoded passwords are supported via the ``-p`` parameters for
2663      ``useradd`` or ``usermod``, but only hashed.
2664
2665      Here is an example that adds two users named "tester-jim" and "tester-sue" and assigns
2666      passwords. First on host, create the (escaped) password hash::
2667
2668         printf "%q" $(mkpasswd -m sha256crypt tester01)
2669
2670      The resulting hash is set to a variable and used in ``useradd`` command parameters::
2671
2672         inherit extrausers
2673         PASSWD = "\$X\$ABC123\$A-Long-Hash"
2674         EXTRA_USERS_PARAMS = "\
2675             useradd -p '${PASSWD}' tester-jim; \
2676             useradd -p '${PASSWD}' tester-sue; \
2677             "
2678
2679      Finally, here is an example that sets the root password::
2680
2681         inherit extrausers
2682         EXTRA_USERS_PARAMS = "\
2683             usermod -p '${PASSWD}' root; \
2684             "
2685
2686      .. note::
2687
2688         From a security perspective, hardcoding a default password is not
2689         generally a good idea or even legal in some jurisdictions. It is
2690         recommended that you do not do this if you are building a production
2691         image.
2692
2693      Additionally there is a special ``passwd-expire`` command that will
2694      cause the password for a user to be expired and thus force changing it
2695      on first login, for example::
2696
2697         EXTRA_USERS_PARAMS += " useradd myuser; passwd-expire myuser;"
2698
2699      .. note::
2700
2701         At present, ``passwd-expire`` may only work for remote logins when
2702         using OpenSSH and not dropbear as an SSH server.
2703
2704   :term:`EXTRANATIVEPATH`
2705      A list of subdirectories of
2706      ``${``\ :term:`STAGING_BINDIR_NATIVE`\ ``}``
2707      added to the beginning of the environment variable ``PATH``. As an
2708      example, the following prepends
2709      "${STAGING_BINDIR_NATIVE}/foo:${STAGING_BINDIR_NATIVE}/bar:" to
2710      ``PATH``::
2711
2712         EXTRANATIVEPATH = "foo bar"
2713
2714   :term:`FAKEROOT`
2715      See :term:`bitbake:FAKEROOT` in the BitBake manual.
2716
2717   :term:`FAKEROOTBASEENV`
2718      See :term:`bitbake:FAKEROOTBASEENV` in the BitBake manual.
2719
2720   :term:`FAKEROOTCMD`
2721      See :term:`bitbake:FAKEROOTCMD` in the BitBake manual.
2722
2723   :term:`FAKEROOTDIRS`
2724      See :term:`bitbake:FAKEROOTDIRS` in the BitBake manual.
2725
2726   :term:`FAKEROOTENV`
2727      See :term:`bitbake:FAKEROOTENV` in the BitBake manual.
2728
2729   :term:`FAKEROOTNOENV`
2730      See :term:`bitbake:FAKEROOTNOENV` in the BitBake manual.
2731
2732   :term:`FEATURE_PACKAGES`
2733      Defines one or more packages to include in an image when a specific
2734      item is included in :term:`IMAGE_FEATURES`.
2735      When setting the value, :term:`FEATURE_PACKAGES` should have the name of
2736      the feature item as an override. Here is an example::
2737
2738         FEATURE_PACKAGES_widget = "package1 package2"
2739
2740      In this example, if "widget" were added to :term:`IMAGE_FEATURES`,
2741      package1 and package2 would be included in the image.
2742
2743      .. note::
2744
2745         Packages installed by features defined through :term:`FEATURE_PACKAGES`
2746         are often package groups. While similarly named, you should not
2747         confuse the :term:`FEATURE_PACKAGES` variable with package groups, which
2748         are discussed elsewhere in the documentation.
2749
2750   :term:`FEED_DEPLOYDIR_BASE_URI`
2751      Points to the base URL of the server and location within the
2752      document-root that provides the metadata and packages required by
2753      OPKG to support runtime package management of IPK packages. You set
2754      this variable in your ``local.conf`` file.
2755
2756      Consider the following example::
2757
2758         FEED_DEPLOYDIR_BASE_URI = "http://192.168.7.1/BOARD-dir"
2759
2760      This example assumes you are serving
2761      your packages over HTTP and your databases are located in a directory
2762      named ``BOARD-dir``, which is underneath your HTTP server's
2763      document-root. In this case, the OpenEmbedded build system generates
2764      a set of configuration files for you in your target that work with
2765      the feed.
2766
2767   :term:`FETCHCMD`
2768      See :term:`bitbake:FETCHCMD` in the BitBake manual.
2769
2770   :term:`FILE`
2771      See :term:`bitbake:FILE` in the BitBake manual.
2772
2773   :term:`FILES`
2774      The list of files and directories that are placed in a package. The
2775      :term:`PACKAGES` variable lists the packages
2776      generated by a recipe.
2777
2778      To use the :term:`FILES` variable, provide a package name override that
2779      identifies the resulting package. Then, provide a space-separated
2780      list of files or paths that identify the files you want included as
2781      part of the resulting package. Here is an example::
2782
2783         FILES:${PN} += "${bindir}/mydir1 ${bindir}/mydir2/myfile"
2784
2785      .. note::
2786
2787         -  When specifying files or paths, you can pattern match using
2788            Python's
2789            `glob <https://docs.python.org/3/library/glob.html>`__
2790            syntax. For details on the syntax, see the documentation by
2791            following the previous link.
2792
2793         -  When specifying paths as part of the :term:`FILES` variable, it is
2794            good practice to use appropriate path variables. For example,
2795            use ``${sysconfdir}`` rather than ``/etc``, or ``${bindir}``
2796            rather than ``/usr/bin``. You can find a list of these
2797            variables at the top of the ``meta/conf/bitbake.conf`` file in
2798            the :term:`Source Directory`. You will also
2799            find the default values of the various ``FILES:*`` variables in
2800            this file.
2801
2802      If some of the files you provide with the :term:`FILES` variable are
2803      editable and you know they should not be overwritten during the
2804      package update process by the Package Management System (PMS), you
2805      can identify these files so that the PMS will not overwrite them. See
2806      the :term:`CONFFILES` variable for information on
2807      how to identify these files to the PMS.
2808
2809   :term:`FILES_SOLIBSDEV`
2810      Defines the file specification to match
2811      :term:`SOLIBSDEV`. In other words,
2812      :term:`FILES_SOLIBSDEV` defines the full path name of the development
2813      symbolic link (symlink) for shared libraries on the target platform.
2814
2815      The following statement from the ``bitbake.conf`` shows how it is
2816      set::
2817
2818         FILES_SOLIBSDEV ?= "${base_libdir}/lib*${SOLIBSDEV} ${libdir}/lib*${SOLIBSDEV}"
2819
2820   :term:`FILESEXTRAPATHS`
2821      A colon-separated list to extend the search path the OpenEmbedded build
2822      system uses when looking for files and patches as it processes recipes
2823      and append files. The default directories BitBake uses when it processes
2824      recipes are initially defined by the :term:`FILESPATH` variable. You can
2825      extend :term:`FILESPATH` variable by using :term:`FILESEXTRAPATHS`.
2826
2827      Best practices dictate that you accomplish this by using
2828      :term:`FILESEXTRAPATHS` from within a ``.bbappend`` file and that you
2829      prepend paths as follows::
2830
2831         FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
2832
2833      In the above example, the build system first
2834      looks for files in a directory that has the same name as the
2835      corresponding append file.
2836
2837      .. note::
2838
2839         When extending :term:`FILESEXTRAPATHS`, be sure to use the immediate
2840         expansion (``:=``) operator. Immediate expansion makes sure that
2841         BitBake evaluates :term:`THISDIR` at the time the
2842         directive is encountered rather than at some later time when
2843         expansion might result in a directory that does not contain the
2844         files you need.
2845
2846         Also, include the trailing separating colon character if you are
2847         prepending. The trailing colon character is necessary because you
2848         are directing BitBake to extend the path by prepending directories
2849         to the search path.
2850
2851      Here is another common use::
2852
2853         FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
2854
2855      In this example, the build system extends the
2856      :term:`FILESPATH` variable to include a directory named ``files`` that is
2857      in the same directory as the corresponding append file.
2858
2859      This next example specifically adds three paths::
2860
2861         FILESEXTRAPATHS:prepend := "path_1:path_2:path_3:"
2862
2863      A final example shows how you can extend the search path and include
2864      a :term:`MACHINE`-specific override, which is useful
2865      in a BSP layer::
2866
2867          FILESEXTRAPATHS:prepend:intel-x86-common := "${THISDIR}/${PN}:"
2868
2869      The previous statement appears in the
2870      ``linux-yocto-dev.bbappend`` file, which is found in the
2871      :ref:`overview-manual/development-environment:yocto project source repositories` in
2872      ``meta-intel/common/recipes-kernel/linux``. Here, the machine
2873      override is a special :term:`PACKAGE_ARCH`
2874      definition for multiple ``meta-intel`` machines.
2875
2876      .. note::
2877
2878         For a layer that supports a single BSP, the override could just be
2879         the value of :term:`MACHINE`.
2880
2881      By prepending paths in ``.bbappend`` files, you allow multiple append
2882      files that reside in different layers but are used for the same
2883      recipe to correctly extend the path.
2884
2885   :term:`FILESOVERRIDES`
2886      A colon-separated list to specify a subset of :term:`OVERRIDES` used by
2887      the OpenEmbedded build system for creating :term:`FILESPATH`. The
2888      :term:`FILESOVERRIDES` variable uses overrides to automatically extend
2889      the :term:`FILESPATH` variable. For an example of how that works, see the
2890      :term:`FILESPATH` variable description. Additionally, you find more
2891      information on how overrides are handled in the
2892      ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:conditional syntax (overrides)`"
2893      section of the BitBake User Manual.
2894
2895      By default, the :term:`FILESOVERRIDES` variable is defined as::
2896
2897         FILESOVERRIDES = "${TRANSLATED_TARGET_ARCH}:${MACHINEOVERRIDES}:${DISTROOVERRIDES}"
2898
2899      .. note::
2900
2901         Do not hand-edit the :term:`FILESOVERRIDES` variable. The values match up
2902         with expected overrides and are used in an expected manner by the
2903         build system.
2904
2905   :term:`FILESPATH`
2906      A colon-separated list specifying the default set of directories the
2907      OpenEmbedded build system uses when searching for patches and files.
2908
2909      During the build process, BitBake searches each directory in
2910      :term:`FILESPATH` in the specified order when looking for files and
2911      patches specified by each ``file://`` URI in a recipe's
2912      :term:`SRC_URI` statements.
2913
2914      The default value for the :term:`FILESPATH` variable is defined in the
2915      :ref:`ref-classes-base` class found in ``meta/classes-global`` in the
2916      :term:`Source Directory`::
2917
2918         FILESPATH = "${@base_set_filespath(["${FILE_DIRNAME}/${BP}", \
2919             "${FILE_DIRNAME}/${BPN}", "${FILE_DIRNAME}/files"], d)}"
2920
2921      The
2922      :term:`FILESPATH` variable is automatically extended using the overrides
2923      from the :term:`FILESOVERRIDES` variable.
2924
2925      .. note::
2926
2927         -  Do not hand-edit the :term:`FILESPATH` variable. If you want the
2928            build system to look in directories other than the defaults,
2929            extend the :term:`FILESPATH` variable by using the
2930            :term:`FILESEXTRAPATHS` variable.
2931
2932         -  Be aware that the default :term:`FILESPATH` directories do not map
2933            to directories in custom layers where append files
2934            (``.bbappend``) are used. If you want the build system to find
2935            patches or files that reside with your append files, you need
2936            to extend the :term:`FILESPATH` variable by using the
2937            :term:`FILESEXTRAPATHS` variable.
2938
2939      You can take advantage of this searching behavior in useful ways. For
2940      example, consider a case where there is the following directory structure
2941      for general and machine-specific configurations::
2942
2943         files/defconfig
2944         files/MACHINEA/defconfig
2945         files/MACHINEB/defconfig
2946
2947      Also in the example, the :term:`SRC_URI` statement contains
2948      "file://defconfig". Given this scenario, you can set
2949      :term:`MACHINE` to "MACHINEA" and cause the build
2950      system to use files from ``files/MACHINEA``. Set :term:`MACHINE` to
2951      "MACHINEB" and the build system uses files from ``files/MACHINEB``.
2952      Finally, for any machine other than "MACHINEA" and "MACHINEB", the
2953      build system uses files from ``files/defconfig``.
2954
2955      You can find out more about the patching process in the
2956      ":ref:`overview-manual/concepts:patching`" section
2957      in the Yocto Project Overview and Concepts Manual and the
2958      ":ref:`dev-manual/new-recipe:patching code`" section in
2959      the Yocto Project Development Tasks Manual. See the
2960      :ref:`ref-tasks-patch` task as well.
2961
2962   :term:`FILESYSTEM_PERMS_TABLES`
2963      Allows you to define your own file permissions settings table as part
2964      of your configuration for the packaging process. For example, suppose
2965      you need a consistent set of custom permissions for a set of groups
2966      and users across an entire work project. It is best to do this in the
2967      packages themselves but this is not always possible.
2968
2969      By default, the OpenEmbedded build system uses the ``fs-perms.txt``,
2970      which is located in the ``meta/files`` folder in the :term:`Source Directory`.
2971      If you create your own file
2972      permissions setting table, you should place it in your layer or the
2973      distro's layer.
2974
2975      You define the :term:`FILESYSTEM_PERMS_TABLES` variable in the
2976      ``conf/local.conf`` file, which is found in the :term:`Build Directory`,
2977      to point to your custom ``fs-perms.txt``. You can specify more than a
2978      single file permissions setting table. The paths you specify to these
2979      files must be defined within the :term:`BBPATH` variable.
2980
2981      For guidance on how to create your own file permissions settings
2982      table file, examine the existing ``fs-perms.txt``.
2983
2984   :term:`FIT_ADDRESS_CELLS`
2985      Specifies the value of the ``#address-cells`` value for the
2986      description of the FIT image.
2987
2988      The default value is set to "1" by the :ref:`ref-classes-kernel-fitimage`
2989      class, which corresponds to 32 bit addresses.
2990
2991      For platforms that need to set 64 bit addresses, for example in
2992      :term:`UBOOT_LOADADDRESS` and :term:`UBOOT_ENTRYPOINT`, you need to
2993      set this value to "2", as two 32 bit values (cells) will be needed
2994      to represent such addresses.
2995
2996      Here is an example setting "0x400000000" as a load address::
2997
2998         FIT_ADDRESS_CELLS = "2"
2999         UBOOT_LOADADDRESS= "0x04 0x00000000"
3000
3001      See `more details about #address-cells <https://elinux.org/Device_Tree_Usage#How_Addressing_Works>`__.
3002
3003   :term:`FIT_CONF_DEFAULT_DTB`
3004      Specifies the default device tree binary (dtb) file for a FIT image
3005      when multiple ones are provided.
3006
3007      This variable is used in the :ref:`ref-classes-kernel-fitimage` class.
3008
3009   :term:`FIT_DESC`
3010      Specifies the description string encoded into a FIT image. The
3011      default value is set by the :ref:`ref-classes-kernel-fitimage` class as
3012      follows::
3013
3014         FIT_DESC ?= "U-Boot fitImage for ${DISTRO_NAME}/${PV}/${MACHINE}"
3015
3016   :term:`FIT_GENERATE_KEYS`
3017      Decides whether to generate the keys for signing the FIT image if
3018      they don't already exist. The keys are created in
3019      :term:`UBOOT_SIGN_KEYDIR`. The default value is set to "0"
3020      by the :ref:`ref-classes-kernel-fitimage` class.
3021
3022   :term:`FIT_HASH_ALG`
3023      Specifies the hash algorithm used in creating the FIT Image.
3024      This variable is set by default to "sha256" by the
3025      :ref:`ref-classes-kernel-fitimage` class.
3026
3027   :term:`FIT_KERNEL_COMP_ALG`
3028      The compression algorithm to use for the kernel image inside the FIT Image.
3029      At present, the only supported values are "gzip" (default), "lzo" or "none".
3030      If you set this variable to anything other than "none" you may also need
3031      to set :term:`FIT_KERNEL_COMP_ALG_EXTENSION`.
3032
3033      This variable is used in the :ref:`ref-classes-kernel-uboot` class.
3034
3035   :term:`FIT_KERNEL_COMP_ALG_EXTENSION`
3036      File extension corresponding to :term:`FIT_KERNEL_COMP_ALG`. The default
3037      value is set ".gz" by the :ref:`ref-classes-kernel-uboot` class. If you
3038      set :term:`FIT_KERNEL_COMP_ALG` to "lzo", you may want to set this
3039      variable to ".lzo".
3040
3041   :term:`FIT_KEY_GENRSA_ARGS`
3042      Arguments to ``openssl genrsa`` for generating a RSA private key for
3043      signing the FIT image. The default value is set to "-F4" by the
3044      :ref:`ref-classes-kernel-fitimage` class.
3045
3046   :term:`FIT_KEY_REQ_ARGS`
3047      Arguments to ``openssl req`` for generating a certificate for signing
3048      the FIT image. The default value is "-batch -new" by the
3049      :ref:`ref-classes-kernel-fitimage` class, "batch" for
3050      non interactive mode and "new" for generating new keys.
3051
3052   :term:`FIT_KEY_SIGN_PKCS`
3053      Format for the public key certificate used for signing the FIT image.
3054      The default value is set to "x509" by the
3055      :ref:`ref-classes-kernel-fitimage` class.
3056
3057   :term:`FIT_SIGN_ALG`
3058      Specifies the signature algorithm used in creating the FIT Image.
3059      This variable is set by default to "rsa2048" by the
3060      :ref:`ref-classes-kernel-fitimage` class.
3061
3062   :term:`FIT_PAD_ALG`
3063      Specifies the padding algorithm used in creating the FIT Image.
3064      The default value is set to "pkcs-1.5" by the
3065      :ref:`ref-classes-kernel-fitimage` class.
3066
3067   :term:`FIT_SIGN_INDIVIDUAL`
3068      If set to "1", then the :ref:`ref-classes-kernel-fitimage`
3069      class will sign the kernel, dtb and ramdisk images individually in addition
3070      to signing the FIT image itself. This could be useful if you are
3071      intending to verify signatures in another context than booting via
3072      U-Boot.
3073
3074      This variable is set to "0" by default.
3075
3076   :term:`FIT_SIGN_NUMBITS`
3077      Size of the private key used in the FIT image, in number of bits.
3078      The default value for this variable is set to "2048"
3079      by the :ref:`ref-classes-kernel-fitimage` class.
3080
3081   :term:`FONT_EXTRA_RDEPENDS`
3082      When inheriting the :ref:`ref-classes-fontcache` class,
3083      this variable specifies the runtime dependencies for font packages.
3084      By default, the :term:`FONT_EXTRA_RDEPENDS` is set to "fontconfig-utils".
3085
3086   :term:`FONT_PACKAGES`
3087      When inheriting the :ref:`ref-classes-fontcache` class, this variable
3088      identifies packages containing font files that need to be cached by
3089      Fontconfig. By default, the :ref:`ref-classes-fontcache` class assumes
3090      that fonts are in the recipe's main package (i.e.
3091      ``${``\ :term:`PN`\ ``}``). Use this variable if fonts you
3092      need are in a package other than that main package.
3093
3094   :term:`FORCE_RO_REMOVE`
3095      Forces the removal of the packages listed in ``ROOTFS_RO_UNNEEDED``
3096      during the generation of the root filesystem.
3097
3098      Set the variable to "1" to force the removal of these packages.
3099
3100   :term:`FULL_OPTIMIZATION`
3101      The options to pass in :term:`TARGET_CFLAGS` and :term:`CFLAGS` when
3102      compiling an optimized system. This variable defaults to "-O2 -pipe
3103      ${DEBUG_FLAGS}".
3104
3105   :term:`GCCPIE`
3106      Enables Position Independent Executables (PIE) within the GNU C
3107      Compiler (GCC). Enabling PIE in the GCC makes Return Oriented
3108      Programming (ROP) attacks much more difficult to execute.
3109
3110      By default the ``security_flags.inc`` file enables PIE by setting the
3111      variable as follows::
3112
3113         GCCPIE ?= "--enable-default-pie"
3114
3115   :term:`GCCVERSION`
3116      Specifies the default version of the GNU C Compiler (GCC) used for
3117      compilation. By default, :term:`GCCVERSION` is set to "8.x" in the
3118      ``meta/conf/distro/include/tcmode-default.inc`` include file::
3119
3120         GCCVERSION ?= "8.%"
3121
3122      You can override this value by setting it in a
3123      configuration file such as the ``local.conf``.
3124
3125   :term:`GDB`
3126      The minimal command and arguments to run the GNU Debugger.
3127
3128   :term:`GIR_EXTRA_LIBS_PATH`
3129      Allows to specify an extra search path for ``.so`` files
3130      in GLib related recipes using GObject introspection,
3131      and which do not compile without this setting.
3132      See the ":ref:`dev-manual/gobject-introspection:enabling gobject introspection support`"
3133      section for details.
3134
3135   :term:`GITDIR`
3136      The directory in which a local copy of a Git repository is stored
3137      when it is cloned.
3138
3139   :term:`GITHUB_BASE_URI`
3140      When inheriting the :ref:`ref-classes-github-releases`
3141      class, specifies the base URL for fetching releases for the github
3142      project you wish to fetch sources from. The default value is as follows::
3143
3144         GITHUB_BASE_URI ?= "https://github.com/${BPN}/${BPN}/releases/"
3145
3146   :term:`GLIBC_GENERATE_LOCALES`
3147      Specifies the list of GLIBC locales to generate should you not wish
3148      to generate all LIBC locals, which can be time consuming.
3149
3150      .. note::
3151
3152         If you specifically remove the locale ``en_US.UTF-8``, you must set
3153         :term:`IMAGE_LINGUAS` appropriately.
3154
3155      You can set :term:`GLIBC_GENERATE_LOCALES` in your ``local.conf`` file.
3156      By default, all locales are generated::
3157
3158         GLIBC_GENERATE_LOCALES = "en_GB.UTF-8 en_US.UTF-8"
3159
3160   :term:`GO_IMPORT`
3161      When inheriting the :ref:`ref-classes-go` class, this mandatory variable
3162      sets the import path for the Go package that will be created for the code
3163      to build. If you have a ``go.mod`` file in the source directory, this
3164      typically matches the path in the ``module`` line in this file.
3165
3166      Other Go programs importing this package will use this path.
3167
3168      Here is an example setting from the
3169      :yocto_git:`go-helloworld_0.1.bb </poky/tree/meta/recipes-extended/go-examples/go-helloworld_0.1.bb>`
3170      recipe::
3171
3172          GO_IMPORT = "golang.org/x/example"
3173
3174   :term:`GO_INSTALL`
3175      When inheriting the :ref:`ref-classes-go` class, this optional variable
3176      specifies which packages in the sources should be compiled and
3177      installed in the Go build space by the
3178      `go install <https://go.dev/ref/mod#go-install>`__ command.
3179
3180      Here is an example setting from the
3181      :oe_git:`crucible </meta-openembedded/tree/meta-oe/recipes-support/crucible/>`
3182      recipe::
3183
3184         GO_INSTALL = "\
3185             ${GO_IMPORT}/cmd/crucible \
3186             ${GO_IMPORT}/cmd/habtool \
3187         "
3188
3189      By default, :term:`GO_INSTALL` is defined as::
3190
3191         GO_INSTALL ?= "${GO_IMPORT}/..."
3192
3193      The ``...`` wildcard means that it will catch all
3194      packages found in the sources.
3195
3196      See the :term:`GO_INSTALL_FILTEROUT` variable for
3197      filtering out unwanted packages from the ones
3198      found from the :term:`GO_INSTALL` value.
3199
3200   :term:`GO_INSTALL_FILTEROUT`
3201      When using the Go "vendor" mechanism to bring in dependencies for a Go
3202      package, the default :term:`GO_INSTALL` setting, which uses the ``...``
3203      wildcard, will include the vendored packages in the build, which produces
3204      incorrect results.
3205
3206      There are also some Go packages that are structured poorly, so that the
3207      ``...`` wildcard results in building example or test code that should not
3208      be included in the build, or could fail to build.
3209
3210      This optional variable allows for filtering out a subset of the sources.
3211      It defaults to excluding everything under the ``vendor`` subdirectory
3212      under package's main directory. This is the normal location for vendored
3213      packages, but it can be overridden by a recipe to filter out other
3214      subdirectories if needed.
3215
3216   :term:`GO_WORKDIR`
3217      When using Go Modules, the current working directory must be the directory
3218      containing the ``go.mod`` file, or one of its subdirectories. When the
3219      ``go`` tool is used, it will automatically look for the ``go.mod`` file
3220      in the Go working directory or in any parent directory, but not in
3221      subdirectories.
3222
3223      When using the :ref:`ref-classes-go-mod` class to use Go modules,
3224      the optional :term:`GO_WORKDIR` variable, defaulting to the value
3225      of :term:`GO_IMPORT`, allows to specify a different Go working directory.
3226
3227   :term:`GROUPADD_PARAM`
3228      When inheriting the :ref:`ref-classes-useradd` class,
3229      this variable specifies for a package what parameters should be
3230      passed to the ``groupadd`` command if you wish to add a group to the
3231      system when the package is installed.
3232
3233      Here is an example from the ``dbus`` recipe::
3234
3235         GROUPADD_PARAM:${PN} = "-r netdev"
3236
3237      More than one group can be added by separating each set of different
3238      groups' parameters with a semicolon.
3239
3240      Here is an example adding multiple groups from the ``useradd-example.bb``
3241      file in the ``meta-skeleton`` layer::
3242
3243         GROUPADD_PARAM:${PN} = "-g 880 group1; -g 890 group2"
3244
3245      For information on the standard Linux shell command
3246      ``groupadd``, see https://linux.die.net/man/8/groupadd.
3247
3248   :term:`GROUPMEMS_PARAM`
3249      When inheriting the :ref:`ref-classes-useradd` class,
3250      this variable specifies for a package what parameters should be
3251      passed to the ``groupmems`` command if you wish to modify the members
3252      of a group when the package is installed.
3253
3254      For information on the standard Linux shell command ``groupmems``,
3255      see https://linux.die.net/man/8/groupmems.
3256
3257   :term:`GRUB_GFXSERIAL`
3258      Configures the GNU GRand Unified Bootloader (GRUB) to have graphics
3259      and serial in the boot menu. Set this variable to "1" in your
3260      ``local.conf`` or distribution configuration file to enable graphics
3261      and serial in the menu.
3262
3263      See the :ref:`ref-classes-grub-efi` class for more
3264      information on how this variable is used.
3265
3266   :term:`GRUB_OPTS`
3267      Additional options to add to the GNU GRand Unified Bootloader (GRUB)
3268      configuration. Use a semi-colon character (``;``) to separate
3269      multiple options.
3270
3271      The :term:`GRUB_OPTS` variable is optional. See the
3272      :ref:`ref-classes-grub-efi` class for more information
3273      on how this variable is used.
3274
3275   :term:`GRUB_TIMEOUT`
3276      Specifies the timeout before executing the default ``LABEL`` in the
3277      GNU GRand Unified Bootloader (GRUB).
3278
3279      The :term:`GRUB_TIMEOUT` variable is optional. See the
3280      :ref:`ref-classes-grub-efi` class for more information
3281      on how this variable is used.
3282
3283   :term:`GTKIMMODULES_PACKAGES`
3284      When inheriting the :ref:`ref-classes-gtk-immodules-cache` class,
3285      this variable specifies the packages that contain the GTK+ input
3286      method modules being installed when the modules are in packages other
3287      than the main package.
3288
3289   :term:`HGDIR`
3290      See :term:`bitbake:HGDIR` in the BitBake manual.
3291
3292   :term:`HOMEPAGE`
3293      Website where more information about the software the recipe is
3294      building can be found.
3295
3296   :term:`HOST_ARCH`
3297      The name of the target architecture, which is normally the same as
3298      :term:`TARGET_ARCH`. The OpenEmbedded build system
3299      supports many architectures. Here is an example list of architectures
3300      supported. This list is by no means complete as the architecture is
3301      configurable:
3302
3303      - arm
3304      - i586
3305      - x86_64
3306      - powerpc
3307      - powerpc64
3308      - mips
3309      - mipsel
3310
3311   :term:`HOST_CC_ARCH`
3312      Specifies architecture-specific compiler flags that are passed to the
3313      C compiler.
3314
3315      Default initialization for :term:`HOST_CC_ARCH` varies depending on what
3316      is being built:
3317
3318      -  :term:`TARGET_CC_ARCH` when building for the
3319         target
3320
3321      -  :term:`BUILD_CC_ARCH` when building for the build host (i.e.
3322         ``-native``)
3323
3324      -  ``BUILDSDK_CC_ARCH`` when building for an SDK (i.e.
3325         ``nativesdk-``)
3326
3327   :term:`HOST_OS`
3328      Specifies the name of the target operating system, which is normally
3329      the same as the :term:`TARGET_OS`. The variable can
3330      be set to "linux" for ``glibc``-based systems and to "linux-musl" for
3331      ``musl``. For ARM/EABI targets, there are also "linux-gnueabi" and
3332      "linux-musleabi" values possible.
3333
3334   :term:`HOST_PREFIX`
3335      Specifies the prefix for the cross-compile toolchain. :term:`HOST_PREFIX`
3336      is normally the same as :term:`TARGET_PREFIX`.
3337
3338   :term:`HOST_SYS`
3339      Specifies the system, including the architecture and the operating
3340      system, for which the build is occurring in the context of the
3341      current recipe.
3342
3343      The OpenEmbedded build system automatically sets this variable based
3344      on :term:`HOST_ARCH`,
3345      :term:`HOST_VENDOR`, and
3346      :term:`HOST_OS` variables.
3347
3348      .. note::
3349
3350         You do not need to set the variable yourself.
3351
3352      Consider these two examples:
3353
3354      -  Given a native recipe on a 32-bit x86 machine running Linux, the
3355         value is "i686-linux".
3356
3357      -  Given a recipe being built for a little-endian MIPS target running
3358         Linux, the value might be "mipsel-linux".
3359
3360   :term:`HOST_VENDOR`
3361      Specifies the name of the vendor. :term:`HOST_VENDOR` is normally the
3362      same as :term:`TARGET_VENDOR`.
3363
3364   :term:`HOSTTOOLS`
3365      A space-separated list (filter) of tools on the build host that
3366      should be allowed to be called from within build tasks. Using this
3367      filter helps reduce the possibility of host contamination. If a tool
3368      specified in the value of :term:`HOSTTOOLS` is not found on the build
3369      host, the OpenEmbedded build system produces an error and the build
3370      is not started.
3371
3372      For additional information, see
3373      :term:`HOSTTOOLS_NONFATAL`.
3374
3375   :term:`HOSTTOOLS_NONFATAL`
3376      A space-separated list (filter) of tools on the build host that
3377      should be allowed to be called from within build tasks. Using this
3378      filter helps reduce the possibility of host contamination. Unlike
3379      :term:`HOSTTOOLS`, the OpenEmbedded build system
3380      does not produce an error if a tool specified in the value of
3381      :term:`HOSTTOOLS_NONFATAL` is not found on the build host. Thus, you can
3382      use :term:`HOSTTOOLS_NONFATAL` to filter optional host tools.
3383
3384   :term:`ICECC_CLASS_DISABLE`
3385      Identifies user classes that you do not want the Icecream distributed
3386      compile support to consider. This variable is used by the
3387      :ref:`ref-classes-icecc` class. You set this variable in
3388      your ``local.conf`` file.
3389
3390      When you list classes using this variable, the recipes inheriting
3391      those classes will not benefit from distributed compilation across
3392      remote hosts. Instead they will be built locally.
3393
3394   :term:`ICECC_DISABLED`
3395      Disables or enables the ``icecc`` (Icecream) function. For more
3396      information on this function and best practices for using this
3397      variable, see the ":ref:`ref-classes-icecc`"
3398      section.
3399
3400      Setting this variable to "1" in your ``local.conf`` disables the
3401      function::
3402
3403         ICECC_DISABLED ??= "1"
3404
3405      To enable the function, set the variable as follows::
3406
3407         ICECC_DISABLED = ""
3408
3409   :term:`ICECC_ENV_EXEC`
3410      Points to the ``icecc-create-env`` script that you provide. This
3411      variable is used by the :ref:`ref-classes-icecc` class. You
3412      set this variable in your ``local.conf`` file.
3413
3414      If you do not point to a script that you provide, the OpenEmbedded
3415      build system uses the default script provided by the
3416      :oe_git:`icecc-create-env_0.1.bb
3417      </openembedded-core/tree/meta/recipes-devtools/icecc-create-env/icecc-create-env_0.1.bb>`
3418      recipe, which is a modified version and not the one that comes with
3419      ``icecream``.
3420
3421   :term:`ICECC_PARALLEL_MAKE`
3422      Extra options passed to the ``make`` command during the
3423      :ref:`ref-tasks-compile` task that specify parallel
3424      compilation. This variable usually takes the form of "-j x", where x
3425      represents the maximum number of parallel threads ``make`` can run.
3426
3427      .. note::
3428
3429         The options passed affect builds on all enabled machines on the
3430         network, which are machines running the ``iceccd`` daemon.
3431
3432      If your enabled machines support multiple cores, coming up with the
3433      maximum number of parallel threads that gives you the best
3434      performance could take some experimentation since machine speed,
3435      network lag, available memory, and existing machine loads can all
3436      affect build time. Consequently, unlike the
3437      :term:`PARALLEL_MAKE` variable, there is no
3438      rule-of-thumb for setting :term:`ICECC_PARALLEL_MAKE` to achieve optimal
3439      performance.
3440
3441      If you do not set :term:`ICECC_PARALLEL_MAKE`, the build system does not
3442      use it (i.e. the system does not detect and assign the number of
3443      cores as is done with :term:`PARALLEL_MAKE`).
3444
3445   :term:`ICECC_PATH`
3446      The location of the ``icecc`` binary. You can set this variable in
3447      your ``local.conf`` file. If your ``local.conf`` file does not define
3448      this variable, the :ref:`ref-classes-icecc` class attempts
3449      to define it by locating ``icecc`` using ``which``.
3450
3451   :term:`ICECC_RECIPE_DISABLE`
3452      Identifies user recipes that you do not want the Icecream distributed
3453      compile support to consider. This variable is used by the
3454      :ref:`ref-classes-icecc` class. You set this variable in
3455      your ``local.conf`` file.
3456
3457      When you list recipes using this variable, you are excluding them
3458      from distributed compilation across remote hosts. Instead they will
3459      be built locally.
3460
3461   :term:`ICECC_RECIPE_ENABLE`
3462      Identifies user recipes that use an empty
3463      :term:`PARALLEL_MAKE` variable that you want to
3464      force remote distributed compilation on using the Icecream
3465      distributed compile support. This variable is used by the
3466      :ref:`ref-classes-icecc` class. You set this variable in
3467      your ``local.conf`` file.
3468
3469   :term:`IMAGE_BASENAME`
3470      The base name of image output files. This variable defaults to the
3471      recipe name (``${``\ :term:`PN`\ ``}``).
3472
3473   :term:`IMAGE_BOOT_FILES`
3474      A space-separated list of files installed into the boot partition
3475      when preparing an image using the Wic tool with the
3476      ``bootimg-partition`` source plugin. By default,
3477      the files are
3478      installed under the same name as the source files. To change the
3479      installed name, separate it from the original name with a semi-colon
3480      (;). Source files need to be located in
3481      :term:`DEPLOY_DIR_IMAGE`. Here are two
3482      examples::
3483
3484         IMAGE_BOOT_FILES = "u-boot.img uImage;kernel"
3485         IMAGE_BOOT_FILES = "u-boot.${UBOOT_SUFFIX} ${KERNEL_IMAGETYPE}"
3486
3487      Alternatively, source files can be picked up using a glob pattern. In
3488      this case, the destination file must have the same name as the base
3489      name of the source file path. To install files into a directory
3490      within the target location, pass its name after a semi-colon (;).
3491      Here are two examples::
3492
3493         IMAGE_BOOT_FILES = "bcm2835-bootfiles/*"
3494         IMAGE_BOOT_FILES = "bcm2835-bootfiles/*;boot/"
3495
3496      The first example
3497      installs all files from ``${DEPLOY_DIR_IMAGE}/bcm2835-bootfiles``
3498      into the root of the target partition. The second example installs
3499      the same files into a ``boot`` directory within the target partition.
3500
3501      You can find information on how to use the Wic tool in the
3502      ":ref:`dev-manual/wic:creating partitioned images using wic`"
3503      section of the Yocto Project Development Tasks Manual. Reference
3504      material for Wic is located in the
3505      ":doc:`/ref-manual/kickstart`" chapter.
3506
3507   :term:`IMAGE_BUILDINFO_FILE`
3508      When using the :ref:`ref-classes-image-buildinfo` class,
3509      specifies the file in the image to write the build information into. The
3510      default value is "``${sysconfdir}/buildinfo``".
3511
3512   :term:`IMAGE_BUILDINFO_VARS`
3513      When using the :ref:`ref-classes-image-buildinfo` class,
3514      specifies the list of variables to include in the `Build Configuration`
3515      section of the output file (as a space-separated list). Defaults to
3516      ":term:`DISTRO` :term:`DISTRO_VERSION`".
3517
3518   :term:`IMAGE_CLASSES`
3519      A list of classes that all images should inherit. This is typically used
3520      to enable functionality across all image recipes.
3521
3522      Classes specified in :term:`IMAGE_CLASSES` must be located in the
3523      ``classes-recipe/`` or ``classes/`` subdirectories.
3524
3525   :term:`IMAGE_CMD`
3526      Specifies the command to create the image file for a specific image
3527      type, which corresponds to the value set in
3528      :term:`IMAGE_FSTYPES`, (e.g. ``ext3``,
3529      ``btrfs``, and so forth). When setting this variable, you should use
3530      an override for the associated type. Here is an example::
3531
3532         IMAGE_CMD:jffs2 = "mkfs.jffs2 --root=${IMAGE_ROOTFS} --faketime \
3533             --output=${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.jffs2 \
3534             ${EXTRA_IMAGECMD}"
3535
3536      You typically do not need to set this variable unless you are adding
3537      support for a new image type. For more examples on how to set this
3538      variable, see the :ref:`ref-classes-image_types`
3539      class file, which is ``meta/classes-recipe/image_types.bbclass``.
3540
3541   :term:`IMAGE_DEVICE_TABLES`
3542      Specifies one or more files that contain custom device tables that
3543      are passed to the ``makedevs`` command as part of creating an image.
3544      These files list basic device nodes that should be created under
3545      ``/dev`` within the image. If :term:`IMAGE_DEVICE_TABLES` is not set,
3546      ``files/device_table-minimal.txt`` is used, which is located by
3547      :term:`BBPATH`. For details on how you should write
3548      device table files, see ``meta/files/device_table-minimal.txt`` as an
3549      example.
3550
3551   :term:`IMAGE_EFI_BOOT_FILES`
3552      A space-separated list of files installed into the boot partition
3553      when preparing an image using the Wic tool with the
3554      ``bootimg-efi`` source plugin. By default,
3555      the files are
3556      installed under the same name as the source files. To change the
3557      installed name, separate it from the original name with a semi-colon
3558      (;). Source files need to be located in
3559      :term:`DEPLOY_DIR_IMAGE`. Here are two
3560      examples::
3561
3562         IMAGE_EFI_BOOT_FILES = "${KERNEL_IMAGETYPE};bz2"
3563         IMAGE_EFI_BOOT_FILES = "${KERNEL_IMAGETYPE} microcode.cpio"
3564
3565      Alternatively, source files can be picked up using a glob pattern. In
3566      this case, the destination file must have the same name as the base
3567      name of the source file path. To install files into a directory
3568      within the target location, pass its name after a semi-colon (;).
3569      Here are two examples::
3570
3571         IMAGE_EFI_BOOT_FILES = "boot/loader/*"
3572         IMAGE_EFI_BOOT_FILES = "boot/loader/*;boot/"
3573
3574      The first example
3575      installs all files from ``${DEPLOY_DIR_IMAGE}/boot/loader/``
3576      into the root of the target partition. The second example installs
3577      the same files into a ``boot`` directory within the target partition.
3578
3579      You can find information on how to use the Wic tool in the
3580      ":ref:`dev-manual/wic:creating partitioned images using wic`"
3581      section of the Yocto Project Development Tasks Manual. Reference
3582      material for Wic is located in the
3583      ":doc:`/ref-manual/kickstart`" chapter.
3584
3585   :term:`IMAGE_FEATURES`
3586      The primary list of features to include in an image. Typically, you
3587      configure this variable in an image recipe. Although you can use this
3588      variable from your ``local.conf`` file, which is found in the
3589      :term:`Build Directory`, best practices dictate that you do
3590      not.
3591
3592      .. note::
3593
3594         To enable extra features from outside the image recipe, use the
3595         :term:`EXTRA_IMAGE_FEATURES` variable.
3596
3597      For a list of image features that ships with the Yocto Project, see
3598      the ":ref:`ref-features-image`" section.
3599
3600      For an example that shows how to customize your image by using this
3601      variable, see the ":ref:`dev-manual/customizing-images:customizing images using custom \`\`image_features\`\` and \`\`extra_image_features\`\``"
3602      section in the Yocto Project Development Tasks Manual.
3603
3604   :term:`IMAGE_FSTYPES`
3605      Specifies the formats the OpenEmbedded build system uses during the
3606      build when creating the root filesystem. For example, setting
3607      :term:`IMAGE_FSTYPES` as follows causes the build system to create root
3608      filesystems using two formats: ``.ext3`` and ``.tar.bz2``::
3609
3610         IMAGE_FSTYPES = "ext3 tar.bz2"
3611
3612      For the complete list of supported image formats from which you can
3613      choose, see :term:`IMAGE_TYPES`.
3614
3615      .. note::
3616
3617         -  If an image recipe uses the "inherit image" line and you are
3618            setting :term:`IMAGE_FSTYPES` inside the recipe, you must set
3619            :term:`IMAGE_FSTYPES` prior to using the "inherit image" line.
3620
3621         -  Due to the way the OpenEmbedded build system processes this
3622            variable, you cannot update its contents by using ``:append``
3623            or ``:prepend``. You must use the ``+=`` operator to add one or
3624            more options to the :term:`IMAGE_FSTYPES` variable.
3625
3626   :term:`IMAGE_INSTALL`
3627      Used by recipes to specify the packages to install into an image
3628      through the :ref:`ref-classes-image` class. Use the
3629      :term:`IMAGE_INSTALL` variable with care to avoid ordering issues.
3630
3631      Image recipes set :term:`IMAGE_INSTALL` to specify the packages to
3632      install into an image through :ref:`ref-classes-image`. Additionally,
3633      there are "helper" classes such as the :ref:`ref-classes-core-image`
3634      class which can take lists used with :term:`IMAGE_FEATURES` and turn
3635      them into auto-generated entries in :term:`IMAGE_INSTALL` in addition
3636      to its default contents.
3637
3638      When you use this variable, it is best to use it as follows::
3639
3640         IMAGE_INSTALL:append = " package-name"
3641
3642      Be sure to include the space
3643      between the quotation character and the start of the package name or
3644      names.
3645
3646      .. note::
3647
3648         -  When working with a
3649            :ref:`core-image-minimal-initramfs <ref-manual/images:images>`
3650            image, do not use the :term:`IMAGE_INSTALL` variable to specify
3651            packages for installation. Instead, use the
3652            :term:`PACKAGE_INSTALL` variable, which
3653            allows the initial RAM filesystem (:term:`Initramfs`) recipe to use a
3654            fixed set of packages and not be affected by :term:`IMAGE_INSTALL`.
3655            For information on creating an :term:`Initramfs`, see the
3656            ":ref:`dev-manual/building:building an initial ram filesystem (Initramfs) image`"
3657            section in the Yocto Project Development Tasks Manual.
3658
3659         -  Using :term:`IMAGE_INSTALL` with the
3660            :ref:`+= <bitbake-user-manual/bitbake-user-manual-metadata:appending (+=) and prepending (=+) with spaces>`
3661            BitBake operator within the ``/conf/local.conf`` file or from
3662            within an image recipe is not recommended. Use of this operator in
3663            these ways can cause ordering issues. Since
3664            :ref:`ref-classes-core-image` sets :term:`IMAGE_INSTALL` to a
3665            default value using the
3666            :ref:`?= <bitbake-user-manual/bitbake-user-manual-metadata:setting a default value (?=)>`
3667            operator, using a ``+=`` operation against :term:`IMAGE_INSTALL`
3668            results in unexpected behavior when used within
3669            ``conf/local.conf``. Furthermore, the same operation from within an
3670            image recipe may or may not succeed depending on the specific
3671            situation. In both these cases, the behavior is contrary to how
3672            most users expect the ``+=`` operator to work.
3673
3674   :term:`IMAGE_LINGUAS`
3675      Specifies the list of locales to install into the image during the
3676      root filesystem construction process. The OpenEmbedded build system
3677      automatically splits locale files, which are used for localization,
3678      into separate packages. Setting the :term:`IMAGE_LINGUAS` variable
3679      ensures that any locale packages that correspond to packages already
3680      selected for installation into the image are also installed. Here is
3681      an example::
3682
3683         IMAGE_LINGUAS = "pt-br de-de"
3684
3685      In this example, the build system ensures any Brazilian Portuguese
3686      and German locale files that correspond to packages in the image are
3687      installed (i.e. ``*-locale-pt-br`` and ``*-locale-de-de`` as well as
3688      ``*-locale-pt`` and ``*-locale-de``, since some software packages
3689      only provide locale files by language and not by country-specific
3690      language).
3691
3692      See the :term:`GLIBC_GENERATE_LOCALES`
3693      variable for information on generating GLIBC locales.
3694
3695
3696   :term:`IMAGE_LINK_NAME`
3697      The name of the output image symlink (which does not include
3698      the version part as :term:`IMAGE_NAME` does). The default value
3699      is derived using the :term:`IMAGE_BASENAME` and
3700      :term:`IMAGE_MACHINE_SUFFIX` variables::
3701
3702         IMAGE_LINK_NAME ?= "${IMAGE_BASENAME}${IMAGE_MACHINE_SUFFIX}"
3703
3704      .. note::
3705
3706         It is possible to set this to "" to disable symlink creation,
3707         however, you also need to set :term:`IMAGE_NAME` to still have
3708         a reasonable value e.g.::
3709
3710            IMAGE_LINK_NAME = ""
3711            IMAGE_NAME = "${IMAGE_BASENAME}${IMAGE_MACHINE_SUFFIX}${IMAGE_VERSION_SUFFIX}"
3712
3713   :term:`IMAGE_MACHINE_SUFFIX`
3714      Specifies the by default machine-specific suffix for image file names
3715      (before the extension). The default value is set as follows::
3716
3717         IMAGE_MACHINE_SUFFIX ??= "-${MACHINE}"
3718
3719      The default :term:`DEPLOY_DIR_IMAGE` already has a :term:`MACHINE`
3720      subdirectory, so you may find it unnecessary to also include this suffix
3721      in the name of every image file. If you prefer to remove the suffix you
3722      can set this variable to an empty string::
3723
3724         IMAGE_MACHINE_SUFFIX = ""
3725
3726      (Not to be confused with :term:`IMAGE_NAME_SUFFIX`.)
3727
3728   :term:`IMAGE_MANIFEST`
3729      The manifest file for the image. This file lists all the installed
3730      packages that make up the image. The file contains package
3731      information on a line-per-package basis as follows::
3732
3733          packagename packagearch version
3734
3735      The :ref:`rootfs-postcommands <ref-classes-rootfs*>` class defines the manifest
3736      file as follows::
3737
3738         IMAGE_MANIFEST ="${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.manifest"
3739
3740      The location is
3741      derived using the :term:`IMGDEPLOYDIR`
3742      and :term:`IMAGE_NAME` variables. You can find
3743      information on how the image is created in the ":ref:`overview-manual/concepts:image generation`"
3744      section in the Yocto Project Overview and Concepts Manual.
3745
3746   :term:`IMAGE_NAME`
3747      The name of the output image files minus the extension. By default
3748      this variable is set using the :term:`IMAGE_LINK_NAME`, and
3749      :term:`IMAGE_VERSION_SUFFIX` variables::
3750
3751         IMAGE_NAME ?= "${IMAGE_LINK_NAME}${IMAGE_VERSION_SUFFIX}"
3752
3753   :term:`IMAGE_NAME_SUFFIX`
3754      Suffix used for the image output filename --- defaults to ``".rootfs"``
3755      to distinguish the image file from other files created during image
3756      building; however if this suffix is redundant or not desired you can
3757      clear the value of this variable (set the value to ""). For example,
3758      this is typically cleared in :term:`Initramfs` image recipes.
3759
3760   :term:`IMAGE_OVERHEAD_FACTOR`
3761      Defines a multiplier that the build system applies to the initial
3762      image size for cases when the multiplier times the returned disk
3763      usage value for the image is greater than the sum of
3764      :term:`IMAGE_ROOTFS_SIZE` and :term:`IMAGE_ROOTFS_EXTRA_SPACE`. The result of
3765      the multiplier applied to the initial image size creates free disk
3766      space in the image as overhead. By default, the build process uses a
3767      multiplier of 1.3 for this variable. This default value results in
3768      30% free disk space added to the image when this method is used to
3769      determine the final generated image size. You should be aware that
3770      post install scripts and the package management system uses disk
3771      space inside this overhead area. Consequently, the multiplier does
3772      not produce an image with all the theoretical free disk space. See
3773      :term:`IMAGE_ROOTFS_SIZE` for information on how the build system
3774      determines the overall image size.
3775
3776      The default 30% free disk space typically gives the image enough room
3777      to boot and allows for basic post installs while still leaving a
3778      small amount of free disk space. If 30% free space is inadequate, you
3779      can increase the default value. For example, the following setting
3780      gives you 50% free space added to the image::
3781
3782         IMAGE_OVERHEAD_FACTOR = "1.5"
3783
3784      Alternatively, you can ensure a specific amount of free disk space is
3785      added to the image by using the :term:`IMAGE_ROOTFS_EXTRA_SPACE`
3786      variable.
3787
3788   :term:`IMAGE_PKGTYPE`
3789      Defines the package type (i.e. DEB, RPM, IPK, or TAR) used by the
3790      OpenEmbedded build system. The variable is defined appropriately by
3791      the :ref:`ref-classes-package_deb`, :ref:`ref-classes-package_rpm`,
3792      or :ref:`ref-classes-package_ipk` class.
3793
3794      The :ref:`ref-classes-populate-sdk-*` and :ref:`ref-classes-image`
3795      classes use the :term:`IMAGE_PKGTYPE` for packaging up images and SDKs.
3796
3797      You should not set the :term:`IMAGE_PKGTYPE` manually. Rather, the
3798      variable is set indirectly through the appropriate
3799      :ref:`package_* <ref-classes-package>` class using the
3800      :term:`PACKAGE_CLASSES` variable. The
3801      OpenEmbedded build system uses the first package type (e.g. DEB, RPM,
3802      or IPK) that appears with the variable
3803
3804      .. note::
3805
3806         Files using the ``.tar`` format are never used as a substitute
3807         packaging format for DEB, RPM, and IPK formatted files for your image
3808         or SDK.
3809
3810   :term:`IMAGE_POSTPROCESS_COMMAND`
3811      Specifies a list of functions to call once the OpenEmbedded build
3812      system creates the final image output files. You can specify
3813      functions separated by spaces::
3814
3815         IMAGE_POSTPROCESS_COMMAND += "function"
3816
3817      If you need to pass the root filesystem path to a command within the
3818      function, you can use ``${IMAGE_ROOTFS}``, which points to the
3819      directory that becomes the root filesystem image. See the
3820      :term:`IMAGE_ROOTFS` variable for more
3821      information.
3822
3823   :term:`IMAGE_PREPROCESS_COMMAND`
3824      Specifies a list of functions to call before the OpenEmbedded build
3825      system creates the final image output files. You can specify
3826      functions separated by spaces::
3827
3828         IMAGE_PREPROCESS_COMMAND += "function"
3829
3830      If you need to pass the root filesystem path to a command within the
3831      function, you can use ``${IMAGE_ROOTFS}``, which points to the
3832      directory that becomes the root filesystem image. See the
3833      :term:`IMAGE_ROOTFS` variable for more
3834      information.
3835
3836   :term:`IMAGE_ROOTFS`
3837      The location of the root filesystem while it is under construction
3838      (i.e. during the :ref:`ref-tasks-rootfs` task). This
3839      variable is not configurable. Do not change it.
3840
3841   :term:`IMAGE_ROOTFS_ALIGNMENT`
3842      Specifies the alignment for the output image file in Kbytes. If the
3843      size of the image is not a multiple of this value, then the size is
3844      rounded up to the nearest multiple of the value. The default value is
3845      "1". See :term:`IMAGE_ROOTFS_SIZE` for
3846      additional information.
3847
3848   :term:`IMAGE_ROOTFS_EXTRA_SPACE`
3849      Defines additional free disk space created in the image in Kbytes. By
3850      default, this variable is set to "0". This free disk space is added
3851      to the image after the build system determines the image size as
3852      described in :term:`IMAGE_ROOTFS_SIZE`.
3853
3854      This variable is particularly useful when you want to ensure that a
3855      specific amount of free disk space is available on a device after an
3856      image is installed and running. For example, to be sure 5 Gbytes of
3857      free disk space is available, set the variable as follows::
3858
3859         IMAGE_ROOTFS_EXTRA_SPACE = "5242880"
3860
3861      For example, the Yocto Project Build Appliance specifically requests
3862      40 Gbytes of extra space with the line::
3863
3864         IMAGE_ROOTFS_EXTRA_SPACE = "41943040"
3865
3866   :term:`IMAGE_ROOTFS_SIZE`
3867      Defines the size in Kbytes for the generated image. The OpenEmbedded
3868      build system determines the final size for the generated image using
3869      an algorithm that takes into account the initial disk space used for
3870      the generated image, a requested size for the image, and requested
3871      additional free disk space to be added to the image. Programatically,
3872      the build system determines the final size of the generated image as
3873      follows::
3874
3875         if (image-du * overhead) < rootfs-size:
3876             internal-rootfs-size = rootfs-size + xspace
3877         else:
3878             internal-rootfs-size = (image-du * overhead) + xspace
3879         where:
3880             image-du = Returned value of the du command on the image.
3881             overhead = IMAGE_OVERHEAD_FACTOR
3882             rootfs-size = IMAGE_ROOTFS_SIZE
3883             internal-rootfs-size = Initial root filesystem size before any modifications.
3884             xspace = IMAGE_ROOTFS_EXTRA_SPACE
3885
3886      See the :term:`IMAGE_OVERHEAD_FACTOR`
3887      and :term:`IMAGE_ROOTFS_EXTRA_SPACE`
3888      variables for related information.
3889
3890   :term:`IMAGE_TYPEDEP`
3891      Specifies a dependency from one image type on another. Here is an
3892      example from the :ref:`ref-classes-image-live` class::
3893
3894         IMAGE_TYPEDEP:live = "ext3"
3895
3896      In the previous example, the variable ensures that when "live" is
3897      listed with the :term:`IMAGE_FSTYPES` variable,
3898      the OpenEmbedded build system produces an ``ext3`` image first since
3899      one of the components of the live image is an ``ext3`` formatted
3900      partition containing the root filesystem.
3901
3902   :term:`IMAGE_TYPES`
3903      Specifies the complete list of supported image types by default:
3904
3905      - btrfs
3906      - container
3907      - cpio
3908      - cpio.gz
3909      - cpio.lz4
3910      - cpio.lzma
3911      - cpio.xz
3912      - cramfs
3913      - erofs
3914      - erofs-lz4
3915      - erofs-lz4hc
3916      - ext2
3917      - ext2.bz2
3918      - ext2.gz
3919      - ext2.lzma
3920      - ext3
3921      - ext3.gz
3922      - ext4
3923      - ext4.gz
3924      - f2fs
3925      - hddimg
3926      - iso
3927      - jffs2
3928      - jffs2.sum
3929      - multiubi
3930      - squashfs
3931      - squashfs-lz4
3932      - squashfs-lzo
3933      - squashfs-xz
3934      - tar
3935      - tar.bz2
3936      - tar.gz
3937      - tar.lz4
3938      - tar.xz
3939      - tar.zst
3940      - ubi
3941      - ubifs
3942      - wic
3943      - wic.bz2
3944      - wic.gz
3945      - wic.lzma
3946
3947      For more information about these types of images, see
3948      ``meta/classes-recipe/image_types*.bbclass`` in the :term:`Source Directory`.
3949
3950   :term:`IMAGE_VERSION_SUFFIX`
3951      Version suffix that is part of the default :term:`IMAGE_NAME` and
3952      :term:`KERNEL_ARTIFACT_NAME` values.
3953      Defaults to ``"-${DATETIME}"``, however you could set this to a
3954      version string that comes from your external build environment if
3955      desired, and this suffix would then be used consistently across
3956      the build artifacts.
3957
3958   :term:`IMGDEPLOYDIR`
3959      When inheriting the :ref:`ref-classes-image` class directly or
3960      through the :ref:`ref-classes-core-image` class, the
3961      :term:`IMGDEPLOYDIR` points to a temporary work area for deployed files
3962      that is set in the ``image`` class as follows::
3963
3964         IMGDEPLOYDIR = "${WORKDIR}/deploy-${PN}-image-complete"
3965
3966      Recipes inheriting the :ref:`ref-classes-image` class should copy
3967      files to be deployed into :term:`IMGDEPLOYDIR`, and the class will take
3968      care of copying them into :term:`DEPLOY_DIR_IMAGE` afterwards.
3969
3970   :term:`INCOMPATIBLE_LICENSE`
3971      Specifies a space-separated list of license names (as they would
3972      appear in :term:`LICENSE`) that should be excluded
3973      from the build (if set globally), or from an image (if set locally
3974      in an image recipe).
3975
3976      When the variable is set globally, recipes that provide no alternatives to listed
3977      incompatible licenses are not built. Packages that are individually
3978      licensed with the specified incompatible licenses will be deleted.
3979      Most of the time this does not allow a feasible build (because it becomes impossible
3980      to satisfy build time dependencies), so the recommended way to
3981      implement license restrictions is to set the variable in specific
3982      image recipes where the restrictions must apply. That way there
3983      are no build time restrictions, but the license check is still
3984      performed when the image's filesystem is assembled from packages.
3985
3986      There is some support for wildcards in this variable's value,
3987      however it is restricted to specific licenses. Currently only
3988      these wildcards are allowed and expand as follows:
3989
3990      - ``AGPL-3.0*"``: ``AGPL-3.0-only``, ``AGPL-3.0-or-later``
3991      - ``GPL-3.0*``: ``GPL-3.0-only``, ``GPL-3.0-or-later``
3992      - ``LGPL-3.0*``: ``LGPL-3.0-only``, ``LGPL-3.0-or-later``
3993
3994      .. note::
3995
3996         This functionality is only regularly tested using the following
3997         setting::
3998
3999                 INCOMPATIBLE_LICENSE = "GPL-3.0* LGPL-3.0* AGPL-3.0*"
4000
4001
4002         Although you can use other settings, you might be required to
4003         remove dependencies on (or provide alternatives to) components that
4004         are required to produce a functional system image.
4005
4006   :term:`INCOMPATIBLE_LICENSE_EXCEPTIONS`
4007      Specifies a space-separated list of package and license pairs that
4008      are allowed to be used even if the license is specified in
4009      :term:`INCOMPATIBLE_LICENSE`. The package and license pairs are
4010      separated using a colon. Example::
4011
4012         INCOMPATIBLE_LICENSE_EXCEPTIONS = "gdbserver:GPL-3.0-only gdbserver:LGPL-3.0-only"
4013
4014   :term:`INHERIT`
4015      Causes the named class or classes to be inherited globally. Anonymous
4016      functions in the class or classes are not executed for the base
4017      configuration and in each individual recipe. The OpenEmbedded build
4018      system ignores changes to :term:`INHERIT` in individual recipes.
4019      Classes inherited using :term:`INHERIT` must be located in the
4020      ``classes-global/`` or ``classes/`` subdirectories.
4021
4022      For more information on :term:`INHERIT`, see the
4023      :ref:`bitbake-user-manual/bitbake-user-manual-metadata:\`\`inherit\`\` configuration directive`"
4024      section in the BitBake User Manual.
4025
4026   :term:`INHERIT_DISTRO`
4027      Lists classes that will be inherited at the distribution level. It is
4028      unlikely that you want to edit this variable.
4029
4030      Classes specified in :term:`INHERIT_DISTRO` must be located in the
4031      ``classes-global/`` or ``classes/`` subdirectories.
4032
4033      The default value of the variable is set as follows in the
4034      ``meta/conf/distro/defaultsetup.conf`` file::
4035
4036         INHERIT_DISTRO ?= "debian devshell sstate license"
4037
4038   :term:`INHIBIT_DEFAULT_DEPS`
4039      Prevents the default dependencies, namely the C compiler and standard
4040      C library (libc), from being added to :term:`DEPENDS`.
4041      This variable is usually used within recipes that do not require any
4042      compilation using the C compiler.
4043
4044      Set the variable to "1" to prevent the default dependencies from
4045      being added.
4046
4047   :term:`INHIBIT_PACKAGE_DEBUG_SPLIT`
4048      Prevents the OpenEmbedded build system from splitting out debug
4049      information during packaging. By default, the build system splits out
4050      debugging information during the
4051      :ref:`ref-tasks-package` task. For more information on
4052      how debug information is split out, see the
4053      :term:`PACKAGE_DEBUG_SPLIT_STYLE`
4054      variable.
4055
4056      To prevent the build system from splitting out debug information
4057      during packaging, set the :term:`INHIBIT_PACKAGE_DEBUG_SPLIT` variable as
4058      follows::
4059
4060         INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
4061
4062   :term:`INHIBIT_PACKAGE_STRIP`
4063      If set to "1", causes the build to not strip binaries in resulting
4064      packages and prevents the ``-dbg`` package from containing the source
4065      files.
4066
4067      By default, the OpenEmbedded build system strips binaries and puts
4068      the debugging symbols into ``${``\ :term:`PN`\ ``}-dbg``.
4069      Consequently, you should not set :term:`INHIBIT_PACKAGE_STRIP` when you
4070      plan to debug in general.
4071
4072   :term:`INHIBIT_SYSROOT_STRIP`
4073      If set to "1", causes the build to not strip binaries in the
4074      resulting sysroot.
4075
4076      By default, the OpenEmbedded build system strips binaries in the
4077      resulting sysroot. When you specifically set the
4078      :term:`INHIBIT_SYSROOT_STRIP` variable to "1" in your recipe, you inhibit
4079      this stripping.
4080
4081      If you want to use this variable, include the :ref:`ref-classes-staging`
4082      class. This class uses a ``sys_strip()`` function to test for the variable
4083      and acts accordingly.
4084
4085      .. note::
4086
4087         Use of the :term:`INHIBIT_SYSROOT_STRIP` variable occurs in rare and
4088         special circumstances. For example, suppose you are building
4089         bare-metal firmware by using an external GCC toolchain. Furthermore,
4090         even if the toolchain's binaries are strippable, there are other files
4091         needed for the build that are not strippable.
4092
4093   :term:`INIT_MANAGER`
4094      Specifies the system init manager to use. Available options are:
4095
4096      -  ``sysvinit``
4097      -  ``systemd``
4098      -  ``mdev-busybox``
4099
4100      With ``sysvinit``, the init manager is set to
4101      :wikipedia:`SysVinit <Init#SysV-style>`, the traditional UNIX init
4102      system. This is the default choice in the Poky distribution, together with
4103      the Udev device manager (see the ":ref:`device-manager`" section).
4104
4105      With ``systemd``, the init manager becomes :wikipedia:`systemd <Systemd>`,
4106      which comes with the :wikipedia:`udev <Udev>` device manager.
4107
4108      With ``mdev-busybox``, the init manager becomes the much simpler BusyBox
4109      init, together with the BusyBox mdev device manager. This is the simplest
4110      and lightest solution, and probably the best choice for low-end systems
4111      with a rather slow CPU and a limited amount of RAM.
4112
4113      More concretely, this is used to include
4114      ``conf/distro/include/init-manager-${INIT_MANAGER}.inc`` into the global
4115      configuration. You can have a look at the
4116      :yocto_git:`meta/conf/distro/include/init-manager-*.inc </poky/tree/meta/conf/distro/include>`
4117      files for more information, and also the ":ref:`init-manager`"
4118      section in the Yocto Project Development Tasks Manual.
4119
4120   :term:`INITRAMFS_DEPLOY_DIR_IMAGE`
4121      Indicates the deploy directory used by :ref:`ref-tasks-bundle_initramfs`
4122      where the :term:`INITRAMFS_IMAGE` will be fetched from. This variable is
4123      set by default to ``${DEPLOY_DIR_IMAGE}`` in the
4124      :ref:`ref-classes-kernel` class and it's only meant to be changed when
4125      building an :term:`Initramfs` image from a separate multiconfig via
4126      :term:`INITRAMFS_MULTICONFIG`.
4127
4128   :term:`INITRAMFS_FSTYPES`
4129      Defines the format for the output image of an initial RAM filesystem
4130      (:term:`Initramfs`), which is used during boot. Supported formats are the
4131      same as those supported by the
4132      :term:`IMAGE_FSTYPES` variable.
4133
4134      The default value of this variable, which is set in the
4135      ``meta/conf/bitbake.conf`` configuration file in the
4136      :term:`Source Directory`, is "cpio.gz". The Linux kernel's
4137      :term:`Initramfs` mechanism, as opposed to the initial RAM filesystem
4138      :wikipedia:`initrd <Initrd>` mechanism, expects
4139      an optionally compressed cpio archive.
4140
4141   :term:`INITRAMFS_IMAGE`
4142      Specifies the :term:`PROVIDES` name of an image
4143      recipe that is used to build an initial RAM filesystem (:term:`Initramfs`)
4144      image. In other words, the :term:`INITRAMFS_IMAGE` variable causes an
4145      additional recipe to be built as a dependency to whatever root
4146      filesystem recipe you might be using (e.g. ``core-image-sato``). The
4147      :term:`Initramfs` image recipe you provide should set
4148      :term:`IMAGE_FSTYPES` to
4149      :term:`INITRAMFS_FSTYPES`.
4150
4151      An :term:`Initramfs` image provides a temporary root filesystem used for
4152      early system initialization (e.g. loading of modules needed to locate
4153      and mount the "real" root filesystem).
4154
4155      .. note::
4156
4157         See the ``meta/recipes-core/images/core-image-minimal-initramfs.bb``
4158         recipe in the :term:`Source Directory`
4159         for an example :term:`Initramfs` recipe. To select this sample recipe as
4160         the one built to provide the :term:`Initramfs` image, set :term:`INITRAMFS_IMAGE`
4161         to "core-image-minimal-initramfs".
4162
4163      You can also find more information by referencing the
4164      ``meta-poky/conf/templates/default/local.conf.sample.extended``
4165      configuration file in the Source Directory, the :ref:`ref-classes-image`
4166      class, and the :ref:`ref-classes-kernel` class to see how to use the
4167      :term:`INITRAMFS_IMAGE` variable.
4168
4169      If :term:`INITRAMFS_IMAGE` is empty, which is the default, then no
4170      :term:`Initramfs` image is built.
4171
4172      For more information, you can also see the
4173      :term:`INITRAMFS_IMAGE_BUNDLE`
4174      variable, which allows the generated image to be bundled inside the
4175      kernel image. Additionally, for information on creating an :term:`Initramfs`
4176      image, see the ":ref:`dev-manual/building:building an initial ram filesystem (Initramfs) image`" section
4177      in the Yocto Project Development Tasks Manual.
4178
4179   :term:`INITRAMFS_IMAGE_BUNDLE`
4180      Controls whether or not the image recipe specified by
4181      :term:`INITRAMFS_IMAGE` is run through an
4182      extra pass
4183      (:ref:`ref-tasks-bundle_initramfs`) during
4184      kernel compilation in order to build a single binary that contains
4185      both the kernel image and the initial RAM filesystem (:term:`Initramfs`)
4186      image. This makes use of the
4187      :term:`CONFIG_INITRAMFS_SOURCE` kernel
4188      feature.
4189
4190      .. note::
4191
4192         Bundling the :term:`Initramfs` with the kernel conflates the code in the
4193         :term:`Initramfs` with the GPLv2 licensed Linux kernel binary. Thus only GPLv2
4194         compatible software may be part of a bundled :term:`Initramfs`.
4195
4196      .. note::
4197
4198         Using an extra compilation pass to bundle the :term:`Initramfs` avoids a
4199         circular dependency between the kernel recipe and the :term:`Initramfs`
4200         recipe should the :term:`Initramfs` include kernel modules. Should that be
4201         the case, the :term:`Initramfs` recipe depends on the kernel for the
4202         kernel modules, and the kernel depends on the :term:`Initramfs` recipe
4203         since the :term:`Initramfs` is bundled inside the kernel image.
4204
4205      The combined binary is deposited into the ``tmp/deploy`` directory,
4206      which is part of the :term:`Build Directory`.
4207
4208      Setting the variable to "1" in a configuration file causes the
4209      OpenEmbedded build system to generate a kernel image with the
4210      :term:`Initramfs` specified in :term:`INITRAMFS_IMAGE` bundled within::
4211
4212         INITRAMFS_IMAGE_BUNDLE = "1"
4213
4214      By default, the :ref:`ref-classes-kernel` class sets this variable to a
4215      null string as follows::
4216
4217         INITRAMFS_IMAGE_BUNDLE ?= ""
4218
4219      .. note::
4220
4221         You must set the :term:`INITRAMFS_IMAGE_BUNDLE` variable in a
4222         configuration file. You cannot set the variable in a recipe file.
4223
4224      See the
4225      :yocto_git:`local.conf.sample.extended </poky/tree/meta-poky/conf/templates/default/local.conf.sample.extended>`
4226      file for additional information. Also, for information on creating an
4227      :term:`Initramfs`, see the ":ref:`dev-manual/building:building an initial ram filesystem (Initramfs) image`" section
4228      in the Yocto Project Development Tasks Manual.
4229
4230   :term:`INITRAMFS_IMAGE_NAME`
4231
4232      This value needs to stay in sync with :term:`IMAGE_LINK_NAME`, but with
4233      :term:`INITRAMFS_IMAGE` instead of :term:`IMAGE_BASENAME`. The default value
4234      is set as follows:
4235
4236         INITRAMFS_IMAGE_NAME ?= "${@['${INITRAMFS_IMAGE}${IMAGE_MACHINE_SUFFIX}', ''][d.getVar('INITRAMFS_IMAGE') == '']}"
4237
4238      That is, if :term:`INITRAMFS_IMAGE` is set, the value of
4239      :term:`INITRAMFS_IMAGE_NAME` will be set based upon
4240      :term:`INITRAMFS_IMAGE` and :term:`IMAGE_MACHINE_SUFFIX`.
4241
4242
4243   :term:`INITRAMFS_LINK_NAME`
4244      The link name of the initial RAM filesystem image. This variable is
4245      set in the ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as
4246      follows::
4247
4248         INITRAMFS_LINK_NAME ?= "initramfs-${KERNEL_ARTIFACT_LINK_NAME}"
4249
4250      The value of the
4251      ``KERNEL_ARTIFACT_LINK_NAME`` variable, which is set in the same
4252      file, has the following value::
4253
4254         KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}"
4255
4256      See the :term:`MACHINE` variable for additional
4257      information.
4258
4259   :term:`INITRAMFS_MULTICONFIG`
4260      Defines the multiconfig to create a multiconfig dependency to be used by
4261      the :ref:`ref-classes-kernel` class.
4262
4263      This allows the kernel to bundle an :term:`INITRAMFS_IMAGE` coming from
4264      a separate multiconfig, this is meant to be used in addition to :term:`INITRAMFS_DEPLOY_DIR_IMAGE`.
4265
4266      For more information on how to bundle an :term:`Initramfs` image from a separate
4267      multiconfig see the ":ref:`dev-manual/building:Bundling an Initramfs Image From a Separate Multiconfig`"
4268      section in the Yocto Project Development Tasks Manual.
4269
4270   :term:`INITRAMFS_NAME`
4271      The base name of the initial RAM filesystem image. This variable is
4272      set in the ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as
4273      follows::
4274
4275         INITRAMFS_NAME ?= "initramfs-${KERNEL_ARTIFACT_NAME}"
4276
4277      See :term:`KERNEL_ARTIFACT_NAME` for additional information.
4278
4279   :term:`INITRD`
4280      Indicates list of filesystem images to concatenate and use as an
4281      initial RAM disk (``initrd``).
4282
4283      The :term:`INITRD` variable is an optional variable used with the
4284      :ref:`ref-classes-image-live` class.
4285
4286   :term:`INITRD_IMAGE`
4287      When building a "live" bootable image (i.e. when
4288      :term:`IMAGE_FSTYPES` contains "live"),
4289      :term:`INITRD_IMAGE` specifies the image recipe that should be built to
4290      provide the initial RAM disk image. The default value is
4291      "core-image-minimal-initramfs".
4292
4293      See the :ref:`ref-classes-image-live` class for more information.
4294
4295   :term:`INITSCRIPT_NAME`
4296      The filename of the initialization script as installed to
4297      ``${sysconfdir}/init.d``.
4298
4299      This variable is used in recipes when using :ref:`ref-classes-update-rc.d`.
4300      The variable is mandatory.
4301
4302   :term:`INITSCRIPT_PACKAGES`
4303      A list of the packages that contain initscripts. If multiple packages
4304      are specified, you need to append the package name to the other
4305      ``INITSCRIPT_*`` as an override.
4306
4307      This variable is used in recipes when using :ref:`ref-classes-update-rc.d`.
4308      The variable is optional and defaults to the :term:`PN`
4309      variable.
4310
4311   :term:`INITSCRIPT_PARAMS`
4312      Specifies the options to pass to ``update-rc.d``. Here is an example::
4313
4314         INITSCRIPT_PARAMS = "start 99 5 2 . stop 20 0 1 6 ."
4315
4316      In this example, the script has a runlevel of 99, starts the script
4317      in initlevels 2 and 5, and stops the script in levels 0, 1 and 6.
4318
4319      The variable's default value is "defaults", which is set in the
4320      :ref:`ref-classes-update-rc.d` class.
4321
4322      The value in :term:`INITSCRIPT_PARAMS` is passed through to the
4323      ``update-rc.d`` command. For more information on valid parameters,
4324      please see the ``update-rc.d`` manual page at
4325      https://manpages.debian.org/buster/init-system-helpers/update-rc.d.8.en.html
4326
4327   :term:`INSANE_SKIP`
4328      Specifies the QA checks to skip for a specific package within a
4329      recipe. For example, to skip the check for symbolic link ``.so``
4330      files in the main package of a recipe, add the following to the
4331      recipe. The package name override must be used, which in this example
4332      is ``${PN}``::
4333
4334         INSANE_SKIP:${PN} += "dev-so"
4335
4336      See the ":ref:`ref-classes-insane`" section for a
4337      list of the valid QA checks you can specify using this variable.
4338
4339   :term:`INSTALL_TIMEZONE_FILE`
4340      By default, the ``tzdata`` recipe packages an ``/etc/timezone`` file.
4341      Set the :term:`INSTALL_TIMEZONE_FILE` variable to "0" at the
4342      configuration level to disable this behavior.
4343
4344   :term:`IPK_FEED_URIS`
4345      When the IPK backend is in use and package management is enabled on
4346      the target, you can use this variable to set up ``opkg`` in the
4347      target image to point to package feeds on a nominated server. Once
4348      the feed is established, you can perform installations or upgrades
4349      using the package manager at runtime.
4350
4351   :term:`KARCH`
4352      Defines the kernel architecture used when assembling the
4353      configuration. Architectures supported for this release are:
4354
4355      - powerpc
4356      - i386
4357      - x86_64
4358      - arm
4359      - qemu
4360      - mips
4361
4362      You define the :term:`KARCH` variable in the :ref:`kernel-dev/advanced:bsp descriptions`.
4363
4364   :term:`KBRANCH`
4365      A regular expression used by the build process to explicitly identify
4366      the kernel branch that is validated, patched, and configured during a
4367      build. You must set this variable to ensure the exact kernel branch
4368      you want is being used by the build process.
4369
4370      Values for this variable are set in the kernel's recipe file and the
4371      kernel's append file. For example, if you are using the
4372      ``linux-yocto_4.12`` kernel, the kernel recipe file is the
4373      ``meta/recipes-kernel/linux/linux-yocto_4.12.bb`` file. :term:`KBRANCH`
4374      is set as follows in that kernel recipe file::
4375
4376         KBRANCH ?= "standard/base"
4377
4378      This variable is also used from the kernel's append file to identify
4379      the kernel branch specific to a particular machine or target
4380      hardware. Continuing with the previous kernel example, the kernel's
4381      append file is located in the
4382      BSP layer for a given machine. For example, the append file for the
4383      Beaglebone and generic versions of both 32 and 64-bit IA
4384      machines (``meta-yocto-bsp``) is named
4385      ``meta-yocto-bsp/recipes-kernel/linux/linux-yocto_6.1.bbappend``.
4386      Here are the related statements from that append file::
4387
4388         KBRANCH:genericx86  = "v6.1/standard/base"
4389         KBRANCH:genericx86-64  = "v6.1/standard/base"
4390         KBRANCH:beaglebone-yocto = "v6.1/standard/beaglebone"
4391
4392      The :term:`KBRANCH` statements
4393      identify the kernel branch to use when building for each supported
4394      BSP.
4395
4396   :term:`KBUILD_DEFCONFIG`
4397      When used with the :ref:`ref-classes-kernel-yocto`
4398      class, specifies an "in-tree" kernel configuration file for use
4399      during a kernel build.
4400
4401      Typically, when using a ``defconfig`` to configure a kernel during a
4402      build, you place the file in your layer in the same manner as you
4403      would place patch files and configuration fragment files (i.e.
4404      "out-of-tree"). However, if you want to use a ``defconfig`` file that
4405      is part of the kernel tree (i.e. "in-tree"), you can use the
4406      :term:`KBUILD_DEFCONFIG` variable and append the
4407      :term:`KMACHINE` variable to point to the
4408      ``defconfig`` file.
4409
4410      To use the variable, set it in the append file for your kernel recipe
4411      using the following form::
4412
4413         KBUILD_DEFCONFIG:<machine> ?= "defconfig_file"
4414
4415      Here is an example from a "raspberrypi2" :term:`MACHINE` build that uses
4416      a ``defconfig`` file named "bcm2709_defconfig"::
4417
4418         KBUILD_DEFCONFIG:raspberrypi2 = "bcm2709_defconfig"
4419
4420      As an alternative, you can use the following within your append file::
4421
4422         KBUILD_DEFCONFIG:pn-linux-yocto ?= "defconfig_file"
4423
4424      For more
4425      information on how to use the :term:`KBUILD_DEFCONFIG` variable, see the
4426      ":ref:`kernel-dev/common:using an "in-tree" \`\`defconfig\`\` file`"
4427      section in the Yocto Project Linux Kernel Development Manual.
4428
4429   :term:`KCONFIG_MODE`
4430      When used with the :ref:`ref-classes-kernel-yocto`
4431      class, specifies the kernel configuration values to use for options
4432      not specified in the provided ``defconfig`` file. Valid options are::
4433
4434         KCONFIG_MODE = "alldefconfig"
4435         KCONFIG_MODE = "allnoconfig"
4436
4437      In ``alldefconfig`` mode the options not explicitly specified will be
4438      assigned their Kconfig default value. In ``allnoconfig`` mode the
4439      options not explicitly specified will be disabled in the kernel
4440      config.
4441
4442      In case :term:`KCONFIG_MODE` is not set the behaviour will depend on where
4443      the ``defconfig`` file is coming from. An "in-tree" ``defconfig`` file
4444      will be handled in ``alldefconfig`` mode, a ``defconfig`` file placed
4445      in ``${WORKDIR}`` through a meta-layer will be handled in
4446      ``allnoconfig`` mode.
4447
4448      An "in-tree" ``defconfig`` file can be selected via the
4449      :term:`KBUILD_DEFCONFIG` variable. :term:`KCONFIG_MODE` does not need to
4450      be explicitly set.
4451
4452      A ``defconfig`` file compatible with ``allnoconfig`` mode can be
4453      generated by copying the ``.config`` file from a working Linux kernel
4454      build, renaming it to ``defconfig`` and placing it into the Linux
4455      kernel ``${WORKDIR}`` through your meta-layer. :term:`KCONFIG_MODE` does
4456      not need to be explicitly set.
4457
4458      A ``defconfig`` file compatible with ``alldefconfig`` mode can be
4459      generated using the
4460      :ref:`ref-tasks-savedefconfig`
4461      task and placed into the Linux kernel ``${WORKDIR}`` through your
4462      meta-layer. Explicitely set :term:`KCONFIG_MODE`::
4463
4464         KCONFIG_MODE = "alldefconfig"
4465
4466   :term:`KERNEL_ALT_IMAGETYPE`
4467      Specifies an alternate kernel image type for creation in addition to
4468      the kernel image type specified using the :term:`KERNEL_IMAGETYPE` and
4469      :term:`KERNEL_IMAGETYPES` variables.
4470
4471   :term:`KERNEL_ARTIFACT_NAME`
4472      Specifies the name of all of the build artifacts. You can change the
4473      name of the artifacts by changing the :term:`KERNEL_ARTIFACT_NAME`
4474      variable.
4475
4476      The value of :term:`KERNEL_ARTIFACT_NAME`, which is set in the
4477      ``meta/classes-recipe/kernel-artifact-names.bbclass`` file, has the
4478      following default value::
4479
4480         KERNEL_ARTIFACT_NAME ?= "${PKGE}-${PKGV}-${PKGR}${IMAGE_MACHINE_SUFFIX}${IMAGE_VERSION_SUFFIX}"
4481
4482      See the :term:`PKGE`, :term:`PKGV`, :term:`PKGR`, :term:`IMAGE_MACHINE_SUFFIX`
4483      and :term:`IMAGE_VERSION_SUFFIX` variables for additional information.
4484
4485   :term:`KERNEL_CLASSES`
4486      A list of classes defining kernel image types that the
4487      :ref:`ref-classes-kernel` class should inherit. You typically
4488      append this variable to enable extended image types. An example is
4489      ":ref:`ref-classes-kernel-fitimage`", which enables
4490      FIT image support and resides in ``meta/classes-recipe/kernel-fitimage.bbclass``.
4491      You can register custom kernel image types with the
4492      :ref:`ref-classes-kernel` class using this variable.
4493
4494   :term:`KERNEL_DANGLING_FEATURES_WARN_ONLY`
4495      When kernel configuration fragments are missing for some
4496      :term:`KERNEL_FEATURES` specified by layers or BSPs,
4497      building and configuring the kernel stops with an error.
4498
4499      You can turn these errors into warnings by setting the
4500      following in ``conf/local.conf``::
4501
4502         KERNEL_DANGLING_FEATURES_WARN_ONLY = "1"
4503
4504      You will still be warned that runtime issues may occur,
4505      but at least the kernel configuration and build process will
4506      be allowed to continue.
4507
4508   :term:`KERNEL_DEBUG_TIMESTAMPS`
4509      If set to "1", enables timestamping functionality during building
4510      the kernel. The default is "0" to disable this for reproducibility
4511      reasons.
4512
4513   :term:`KERNEL_DEPLOY_DEPEND`
4514      Provides a means of controlling the dependency of an image recipe
4515      on the kernel. The default value is "virtual/kernel:do_deploy",
4516      however for a small initramfs image or other images that do not
4517      need the kernel, this can be set to "" in the image recipe.
4518
4519   :term:`KERNEL_DEVICETREE`
4520      Specifies the name of the generated Linux kernel device tree (i.e.
4521      the ``.dtb``) file.
4522
4523      .. note::
4524
4525         There is legacy support for specifying the full path to the device
4526         tree. However, providing just the ``.dtb`` file is preferred.
4527
4528      In order to use this variable, the :ref:`ref-classes-kernel-devicetree`
4529      class must be inherited.
4530
4531   :term:`KERNEL_DEVICETREE_BUNDLE`
4532      When set to "1", this variable allows to bundle the Linux kernel
4533      and the Device Tree Binary together in a single file.
4534
4535      This feature is currently only supported on the "arm" (32 bit)
4536      architecture.
4537
4538      This variable is set to "0" by default by the
4539      :ref:`ref-classes-kernel-devicetree` class.
4540
4541   :term:`KERNEL_DTB_LINK_NAME`
4542      The link name of the kernel device tree binary (DTB). This variable
4543      is set in the ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as
4544      follows::
4545
4546         KERNEL_DTB_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}"
4547
4548      The
4549      value of the ``KERNEL_ARTIFACT_LINK_NAME`` variable, which is set in
4550      the same file, has the following value::
4551
4552         KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}"
4553
4554      See the :term:`MACHINE` variable for additional
4555      information.
4556
4557   :term:`KERNEL_DTB_NAME`
4558      The base name of the kernel device tree binary (DTB). This variable
4559      is set in the ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as
4560      follows::
4561
4562         KERNEL_DTB_NAME ?= "${KERNEL_ARTIFACT_NAME}"
4563
4564      See :term:`KERNEL_ARTIFACT_NAME` for additional information.
4565
4566   :term:`KERNEL_DTBDEST`
4567      This variable, used by the :ref:`ref-classes-kernel-devicetree`
4568      class, allows to change the installation directory of the DTB
4569      (Device Tree Binary) files.
4570
4571      It is set by default to "${KERNEL_IMAGEDEST}" by the
4572      :ref:`ref-classes-kernel` class.
4573
4574   :term:`KERNEL_DTBVENDORED`
4575      This variable, used by the :ref:`ref-classes-kernel-devicetree`,
4576      allows to ignore vendor subdirectories when installing DTB
4577      (Device Tree Binary) files, when it is set to "false".
4578
4579      To keep vendor subdirectories, set this variable to "true".
4580
4581      It is set by default to "false" by the :ref:`ref-classes-kernel` class.
4582
4583   :term:`KERNEL_DTC_FLAGS`
4584      Specifies the ``dtc`` flags that are passed to the Linux kernel build
4585      system when generating the device trees (via ``DTC_FLAGS`` environment
4586      variable).
4587
4588      In order to use this variable, the :ref:`ref-classes-kernel-devicetree`
4589      class must be inherited.
4590
4591   :term:`KERNEL_EXTRA_ARGS`
4592      Specifies additional ``make`` command-line arguments the OpenEmbedded
4593      build system passes on when compiling the kernel.
4594
4595   :term:`KERNEL_FEATURES`
4596      Includes additional kernel metadata. In the OpenEmbedded build
4597      system, the default Board Support Packages (BSPs)
4598      :term:`Metadata` is provided through the
4599      :term:`KMACHINE` and :term:`KBRANCH`
4600      variables. You can use the :term:`KERNEL_FEATURES` variable from within
4601      the kernel recipe or kernel append file to further add metadata for
4602      all BSPs or specific BSPs.
4603
4604      The metadata you add through this variable includes config fragments
4605      and features descriptions, which usually includes patches as well as
4606      config fragments. You typically override the :term:`KERNEL_FEATURES`
4607      variable for a specific machine. In this way, you can provide
4608      validated, but optional, sets of kernel configurations and features.
4609
4610      For example, the following example from the ``linux-yocto-rt_4.12``
4611      kernel recipe adds "netfilter" and "taskstats" features to all BSPs
4612      as well as "virtio" configurations to all QEMU machines. The last two
4613      statements add specific configurations to targeted machine types::
4614
4615         KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc features/taskstats/taskstats.scc"
4616         KERNEL_FEATURES:append = " ${KERNEL_EXTRA_FEATURES}"
4617         KERNEL_FEATURES:append:qemuall = " cfg/virtio.scc"
4618         KERNEL_FEATURES:append:qemux86 = "  cfg/sound.scc cfg/paravirt_kvm.scc"
4619         KERNEL_FEATURES:append:qemux86-64 = " cfg/sound.scc"
4620
4621   :term:`KERNEL_FIT_LINK_NAME`
4622      The link name of the kernel flattened image tree (FIT) image. This
4623      variable is set in the ``meta/classes-recipe/kernel-artifact-names.bbclass``
4624      file as follows::
4625
4626         KERNEL_FIT_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}"
4627
4628      The value of the
4629      ``KERNEL_ARTIFACT_LINK_NAME`` variable, which is set in the same
4630      file, has the following value::
4631
4632         KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}"
4633
4634      See the :term:`MACHINE` variable for additional
4635      information.
4636
4637   :term:`KERNEL_FIT_NAME`
4638      The base name of the kernel flattened image tree (FIT) image. This
4639      variable is set in the ``meta/classes-recipe/kernel-artifact-names.bbclass``
4640      file as follows::
4641
4642         KERNEL_FIT_NAME ?= "${KERNEL_ARTIFACT_NAME}"
4643
4644      See :term:`KERNEL_ARTIFACT_NAME` for additional information.
4645
4646   :term:`KERNEL_IMAGE_LINK_NAME`
4647      The link name for the kernel image. This variable is set in the
4648      ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as follows::
4649
4650         KERNEL_IMAGE_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}"
4651
4652      The value of
4653      the ``KERNEL_ARTIFACT_LINK_NAME`` variable, which is set in the same
4654      file, has the following value::
4655
4656         KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}"
4657
4658      See the :term:`MACHINE` variable for additional
4659      information.
4660
4661   :term:`KERNEL_IMAGE_MAXSIZE`
4662      Specifies the maximum size of the kernel image file in kilobytes. If
4663      :term:`KERNEL_IMAGE_MAXSIZE` is set, the size of the kernel image file is
4664      checked against the set value during the
4665      :ref:`ref-tasks-sizecheck` task. The task fails if
4666      the kernel image file is larger than the setting.
4667
4668      :term:`KERNEL_IMAGE_MAXSIZE` is useful for target devices that have a
4669      limited amount of space in which the kernel image must be stored.
4670
4671      By default, this variable is not set, which means the size of the
4672      kernel image is not checked.
4673
4674   :term:`KERNEL_IMAGE_NAME`
4675      The base name of the kernel image. This variable is set in the
4676      ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as follows::
4677
4678         KERNEL_IMAGE_NAME ?= "${KERNEL_ARTIFACT_NAME}"
4679
4680      See :term:`KERNEL_ARTIFACT_NAME` for additional information.
4681
4682   :term:`KERNEL_IMAGETYPE`
4683      The type of kernel to build for a device, usually set by the machine
4684      configuration files and defaults to "zImage". This variable is used
4685      when building the kernel and is passed to ``make`` as the target to
4686      build.
4687
4688      To build additional kernel image types, use :term:`KERNEL_IMAGETYPES`.
4689
4690   :term:`KERNEL_IMAGETYPES`
4691      Lists additional types of kernel images to build for a device in addition
4692      to image type specified in :term:`KERNEL_IMAGETYPE`. Usually set by the
4693      machine configuration files.
4694
4695   :term:`KERNEL_MODULE_AUTOLOAD`
4696      Lists kernel modules that need to be auto-loaded during boot.
4697
4698      .. note::
4699
4700         This variable replaces the deprecated :term:`module_autoload`
4701         variable.
4702
4703      You can use the :term:`KERNEL_MODULE_AUTOLOAD` variable anywhere that it
4704      can be recognized by the kernel recipe or by an out-of-tree kernel
4705      module recipe (e.g. a machine configuration file, a distribution
4706      configuration file, an append file for the recipe, or the recipe
4707      itself).
4708
4709      Specify it as follows::
4710
4711         KERNEL_MODULE_AUTOLOAD += "module_name1 module_name2 module_name3"
4712
4713      Including :term:`KERNEL_MODULE_AUTOLOAD` causes the OpenEmbedded build
4714      system to populate the ``/etc/modules-load.d/modname.conf`` file with
4715      the list of modules to be auto-loaded on boot. The modules appear
4716      one-per-line in the file. Here is an example of the most common use
4717      case::
4718
4719         KERNEL_MODULE_AUTOLOAD += "module_name"
4720
4721      For information on how to populate the ``modname.conf`` file with
4722      ``modprobe.d`` syntax lines, see the :term:`KERNEL_MODULE_PROBECONF` variable.
4723
4724   :term:`KERNEL_MODULE_PROBECONF`
4725      Provides a list of modules for which the OpenEmbedded build system
4726      expects to find ``module_conf_``\ modname values that specify
4727      configuration for each of the modules. For information on how to
4728      provide those module configurations, see the
4729      :term:`module_conf_* <module_conf>` variable.
4730
4731   :term:`KERNEL_PACKAGE_NAME`
4732      Specifies the base name of the kernel packages, such as "kernel"
4733      in the kernel packages such as "kernel-modules", "kernel-image" and
4734      "kernel-dbg".
4735
4736      The default value for this variable is set to "kernel" by the
4737      :ref:`ref-classes-kernel` class.
4738
4739   :term:`KERNEL_PATH`
4740      The location of the kernel sources. This variable is set to the value
4741      of the :term:`STAGING_KERNEL_DIR` within the :ref:`ref-classes-module`
4742      class. For information on how this variable is used, see the
4743      ":ref:`kernel-dev/common:incorporating out-of-tree modules`"
4744      section in the Yocto Project Linux Kernel Development Manual.
4745
4746      To help maximize compatibility with out-of-tree drivers used to build
4747      modules, the OpenEmbedded build system also recognizes and uses the
4748      :term:`KERNEL_SRC` variable, which is identical to
4749      the :term:`KERNEL_PATH` variable. Both variables are common variables
4750      used by external Makefiles to point to the kernel source directory.
4751
4752   :term:`KERNEL_SRC`
4753      The location of the kernel sources. This variable is set to the value
4754      of the :term:`STAGING_KERNEL_DIR` within the :ref:`ref-classes-module`
4755      class. For information on how this variable is used, see the
4756      ":ref:`kernel-dev/common:incorporating out-of-tree modules`"
4757      section in the Yocto Project Linux Kernel Development Manual.
4758
4759      To help maximize compatibility with out-of-tree drivers used to build
4760      modules, the OpenEmbedded build system also recognizes and uses the
4761      :term:`KERNEL_PATH` variable, which is identical
4762      to the :term:`KERNEL_SRC` variable. Both variables are common variables
4763      used by external Makefiles to point to the kernel source directory.
4764
4765   :term:`KERNEL_STRIP`
4766      Allows to specific which ``strip`` command to use to strip the kernel
4767      binary, typically either GNU binutils ``strip`` or ``llvm-strip``.
4768
4769   :term:`KERNEL_VERSION`
4770      Specifies the version of the kernel as extracted from ``version.h``
4771      or ``utsrelease.h`` within the kernel sources. Effects of setting
4772      this variable do not take effect until the kernel has been
4773      configured. Consequently, attempting to refer to this variable in
4774      contexts prior to configuration will not work.
4775
4776   :term:`KERNELDEPMODDEPEND`
4777      Specifies whether the data referenced through
4778      :term:`PKGDATA_DIR` is needed or not.
4779      :term:`KERNELDEPMODDEPEND` does not control whether or not that data
4780      exists, but simply whether or not it is used. If you do not need to
4781      use the data, set the :term:`KERNELDEPMODDEPEND` variable in your
4782      :term:`Initramfs` recipe. Setting the variable there when the data is not
4783      needed avoids a potential dependency loop.
4784
4785   :term:`KFEATURE_DESCRIPTION`
4786      Provides a short description of a configuration fragment. You use
4787      this variable in the ``.scc`` file that describes a configuration
4788      fragment file. Here is the variable used in a file named ``smp.scc``
4789      to describe SMP being enabled::
4790
4791          define KFEATURE_DESCRIPTION "Enable SMP"
4792
4793   :term:`KMACHINE`
4794      The machine as known by the kernel. Sometimes the machine name used
4795      by the kernel does not match the machine name used by the
4796      OpenEmbedded build system. For example, the machine name that the
4797      OpenEmbedded build system understands as ``core2-32-intel-common``
4798      goes by a different name in the Linux Yocto kernel. The kernel
4799      understands that machine as ``intel-core2-32``. For cases like these,
4800      the :term:`KMACHINE` variable maps the kernel machine name to the
4801      OpenEmbedded build system machine name.
4802
4803      These mappings between different names occur in the Yocto Linux
4804      Kernel's ``meta`` branch. As an example take a look in the
4805      ``common/recipes-kernel/linux/linux-yocto_3.19.bbappend`` file::
4806
4807         LINUX_VERSION:core2-32-intel-common = "3.19.0"
4808         COMPATIBLE_MACHINE:core2-32-intel-common = "${MACHINE}"
4809         SRCREV_meta:core2-32-intel-common = "8897ef68b30e7426bc1d39895e71fb155d694974"
4810         SRCREV_machine:core2-32-intel-common = "43b9eced9ba8a57add36af07736344dcc383f711"
4811         KMACHINE:core2-32-intel-common = "intel-core2-32"
4812         KBRANCH:core2-32-intel-common = "standard/base"
4813         KERNEL_FEATURES:append:core2-32-intel-common = " ${KERNEL_FEATURES_INTEL_COMMON}"
4814
4815      The :term:`KMACHINE` statement says
4816      that the kernel understands the machine name as "intel-core2-32".
4817      However, the OpenEmbedded build system understands the machine as
4818      "core2-32-intel-common".
4819
4820   :term:`KTYPE`
4821      Defines the kernel type to be used in assembling the configuration.
4822      The linux-yocto recipes define "standard", "tiny", and "preempt-rt"
4823      kernel types. See the ":ref:`kernel-dev/advanced:kernel types`"
4824      section in the
4825      Yocto Project Linux Kernel Development Manual for more information on
4826      kernel types.
4827
4828      You define the :term:`KTYPE` variable in the
4829      :ref:`kernel-dev/advanced:bsp descriptions`. The
4830      value you use must match the value used for the
4831      :term:`LINUX_KERNEL_TYPE` value used by the
4832      kernel recipe.
4833
4834   :term:`LABELS`
4835      Provides a list of targets for automatic configuration.
4836
4837      See the :ref:`ref-classes-grub-efi` class for more
4838      information on how this variable is used.
4839
4840   :term:`LAYERDEPENDS`
4841      Lists the layers, separated by spaces, on which this recipe depends.
4842      Optionally, you can specify a specific layer version for a dependency
4843      by adding it to the end of the layer name. Here is an example::
4844
4845         LAYERDEPENDS_mylayer = "anotherlayer (=3)"
4846
4847      In this previous example,
4848      version 3 of "anotherlayer" is compared against
4849      :term:`LAYERVERSION`\ ``_anotherlayer``.
4850
4851      An error is produced if any dependency is missing or the version
4852      numbers (if specified) do not match exactly. This variable is used in
4853      the ``conf/layer.conf`` file and must be suffixed with the name of
4854      the specific layer (e.g. ``LAYERDEPENDS_mylayer``).
4855
4856   :term:`LAYERDIR`
4857      When used inside the ``layer.conf`` configuration file, this variable
4858      provides the path of the current layer. This variable is not
4859      available outside of ``layer.conf`` and references are expanded
4860      immediately when parsing of the file completes.
4861
4862   :term:`LAYERDIR_RE`
4863      See :term:`bitbake:LAYERDIR_RE` in the BitBake manual.
4864
4865   :term:`LAYERRECOMMENDS`
4866      Lists the layers, separated by spaces, recommended for use with this
4867      layer.
4868
4869      Optionally, you can specify a specific layer version for a
4870      recommendation by adding the version to the end of the layer name.
4871      Here is an example::
4872
4873         LAYERRECOMMENDS_mylayer = "anotherlayer (=3)"
4874
4875      In this previous example, version 3 of "anotherlayer" is compared
4876      against ``LAYERVERSION_anotherlayer``.
4877
4878      This variable is used in the ``conf/layer.conf`` file and must be
4879      suffixed with the name of the specific layer (e.g.
4880      ``LAYERRECOMMENDS_mylayer``).
4881
4882   :term:`LAYERSERIES_COMPAT`
4883      See :term:`bitbake:LAYERSERIES_COMPAT` in the BitBake manual.
4884
4885   :term:`LAYERVERSION`
4886      Optionally specifies the version of a layer as a single number. You
4887      can use this within :term:`LAYERDEPENDS` for
4888      another layer in order to depend on a specific version of the layer.
4889      This variable is used in the ``conf/layer.conf`` file and must be
4890      suffixed with the name of the specific layer (e.g.
4891      ``LAYERVERSION_mylayer``).
4892
4893   :term:`LD`
4894      The minimal command and arguments used to run the linker.
4895
4896   :term:`LDFLAGS`
4897      Specifies the flags to pass to the linker. This variable is exported
4898      to an environment variable and thus made visible to the software
4899      being built during the compilation step.
4900
4901      Default initialization for :term:`LDFLAGS` varies depending on what is
4902      being built:
4903
4904      -  :term:`TARGET_LDFLAGS` when building for the
4905         target
4906
4907      -  :term:`BUILD_LDFLAGS` when building for the
4908         build host (i.e. ``-native``)
4909
4910      -  :term:`BUILDSDK_LDFLAGS` when building for
4911         an SDK (i.e. ``nativesdk-``)
4912
4913   :term:`LEAD_SONAME`
4914      Specifies the lead (or primary) compiled library file (i.e. ``.so``)
4915      that the :ref:`ref-classes-debian` class applies its
4916      naming policy to given a recipe that packages multiple libraries.
4917
4918      This variable works in conjunction with the :ref:`ref-classes-debian`
4919      class.
4920
4921   :term:`LIC_FILES_CHKSUM`
4922      Checksums of the license text in the recipe source code.
4923
4924      This variable tracks changes in license text of the source code
4925      files. If the license text is changed, it will trigger a build
4926      failure, which gives the developer an opportunity to review any
4927      license change.
4928
4929      This variable must be defined for all recipes (unless
4930      :term:`LICENSE` is set to "CLOSED").
4931
4932      For more information, see the ":ref:`dev-manual/licenses:tracking license changes`"
4933      section in the Yocto Project Development Tasks Manual.
4934
4935   :term:`LICENSE`
4936      The list of source licenses for the recipe. Follow these rules:
4937
4938      -  Do not use spaces within individual license names.
4939
4940      -  Separate license names using \| (pipe) when there is a choice
4941         between licenses.
4942
4943      -  Separate license names using & (ampersand) when there are
4944         multiple licenses for different parts of the source.
4945
4946      -  You can use spaces between license names.
4947
4948      -  For standard licenses, use the names of the files in
4949         ``meta/files/common-licenses/`` or the
4950         :term:`SPDXLICENSEMAP` flag names defined in
4951         ``meta/conf/licenses.conf``.
4952
4953      Here are some examples::
4954
4955         LICENSE = "LGPL-2.1-only | GPL-3.0-only"
4956         LICENSE = "MPL-1.0 & LGPL-2.1-only"
4957         LICENSE = "GPL-2.0-or-later"
4958
4959      The first example is from the
4960      recipes for Qt, which the user may choose to distribute under either
4961      the LGPL version 2.1 or GPL version 3. The second example is from
4962      Cairo where two licenses cover different parts of the source code.
4963      The final example is from ``sysstat``, which presents a single
4964      license.
4965
4966      You can also specify licenses on a per-package basis to handle
4967      situations where components of the output have different licenses.
4968      For example, a piece of software whose code is licensed under GPLv2
4969      but has accompanying documentation licensed under the GNU Free
4970      Documentation License 1.2 could be specified as follows::
4971
4972         LICENSE = "GFDL-1.2 & GPL-2.0-only"
4973         LICENSE:${PN} = "GPL-2.0.only"
4974         LICENSE:${PN}-doc = "GFDL-1.2"
4975
4976   :term:`LICENSE_CREATE_PACKAGE`
4977      Setting :term:`LICENSE_CREATE_PACKAGE` to "1" causes the OpenEmbedded
4978      build system to create an extra package (i.e.
4979      ``${``\ :term:`PN`\ ``}-lic``) for each recipe and to add
4980      those packages to the
4981      :term:`RRECOMMENDS`\ ``:${PN}``.
4982
4983      The ``${PN}-lic`` package installs a directory in
4984      ``/usr/share/licenses`` named ``${PN}``, which is the recipe's base
4985      name, and installs files in that directory that contain license and
4986      copyright information (i.e. copies of the appropriate license files
4987      from ``meta/common-licenses`` that match the licenses specified in
4988      the :term:`LICENSE` variable of the recipe metadata
4989      and copies of files marked in
4990      :term:`LIC_FILES_CHKSUM` as containing
4991      license text).
4992
4993      For related information on providing license text, see the
4994      :term:`COPY_LIC_DIRS` variable, the
4995      :term:`COPY_LIC_MANIFEST` variable, and the
4996      ":ref:`dev-manual/licenses:providing license text`"
4997      section in the Yocto Project Development Tasks Manual.
4998
4999   :term:`LICENSE_FLAGS`
5000      Specifies additional flags for a recipe you must allow through
5001      :term:`LICENSE_FLAGS_ACCEPTED` in
5002      order for the recipe to be built. When providing multiple flags,
5003      separate them with spaces.
5004
5005      This value is independent of :term:`LICENSE` and is
5006      typically used to mark recipes that might require additional licenses
5007      in order to be used in a commercial product. For more information,
5008      see the
5009      ":ref:`dev-manual/licenses:enabling commercially licensed recipes`"
5010      section in the Yocto Project Development Tasks Manual.
5011
5012   :term:`LICENSE_FLAGS_ACCEPTED`
5013      Lists license flags that when specified in
5014      :term:`LICENSE_FLAGS` within a recipe should not
5015      prevent that recipe from being built.  For more information, see the
5016      ":ref:`dev-manual/licenses:enabling commercially licensed recipes`"
5017      section in the Yocto Project Development Tasks Manual.
5018
5019   :term:`LICENSE_FLAGS_DETAILS`
5020      Adds details about a flag in :term:`LICENSE_FLAGS`. This way,
5021      if such a flag is not accepted through :term:`LICENSE_FLAGS_ACCEPTED`,
5022      the error message will be more informative, containing the specified
5023      extra details.
5024
5025      For example, a recipe with an EULA may set::
5026
5027         LICENSE_FLAGS = "FooBar-EULA"
5028         LICENSE_FLAGS_DETAILS[FooBar-EULA] = "For further details, see https://example.com/eula."
5029
5030      If ``Foobar-EULA`` isn't in :term:`LICENSE_FLAGS_ACCEPTED`, the
5031      error message is more useful::
5032
5033        Has a restricted license 'FooBar-EULA' which is not listed in your LICENSE_FLAGS_ACCEPTED.
5034        For further details, see https://example.com/eula.
5035
5036   :term:`LICENSE_PATH`
5037      Path to additional licenses used during the build. By default, the
5038      OpenEmbedded build system uses :term:`COMMON_LICENSE_DIR` to define the
5039      directory that holds common license text used during the build. The
5040      :term:`LICENSE_PATH` variable allows you to extend that location to other
5041      areas that have additional licenses::
5042
5043         LICENSE_PATH += "path-to-additional-common-licenses"
5044
5045   :term:`LINUX_KERNEL_TYPE`
5046      Defines the kernel type to be used in assembling the configuration.
5047      The linux-yocto recipes define "standard", "tiny", and "preempt-rt"
5048      kernel types. See the ":ref:`kernel-dev/advanced:kernel types`"
5049      section in the
5050      Yocto Project Linux Kernel Development Manual for more information on
5051      kernel types.
5052
5053      If you do not specify a :term:`LINUX_KERNEL_TYPE`, it defaults to
5054      "standard". Together with :term:`KMACHINE`, the
5055      :term:`LINUX_KERNEL_TYPE` variable defines the search arguments used by
5056      the kernel tools to find the appropriate description within the
5057      kernel :term:`Metadata` with which to build out the sources
5058      and configuration.
5059
5060   :term:`LINUX_VERSION`
5061      The Linux version from ``kernel.org`` on which the Linux kernel image
5062      being built using the OpenEmbedded build system is based. You define
5063      this variable in the kernel recipe. For example, the
5064      ``linux-yocto-3.4.bb`` kernel recipe found in
5065      ``meta/recipes-kernel/linux`` defines the variables as follows::
5066
5067         LINUX_VERSION ?= "3.4.24"
5068
5069      The :term:`LINUX_VERSION` variable is used to define :term:`PV`
5070      for the recipe::
5071
5072         PV = "${LINUX_VERSION}+git${SRCPV}"
5073
5074   :term:`LINUX_VERSION_EXTENSION`
5075      A string extension compiled into the version string of the Linux
5076      kernel built with the OpenEmbedded build system. You define this
5077      variable in the kernel recipe. For example, the linux-yocto kernel
5078      recipes all define the variable as follows::
5079
5080         LINUX_VERSION_EXTENSION ?= "-yocto-${LINUX_KERNEL_TYPE}"
5081
5082      Defining this variable essentially sets the Linux kernel
5083      configuration item ``CONFIG_LOCALVERSION``, which is visible through
5084      the ``uname`` command. Here is an example that shows the extension
5085      assuming it was set as previously shown::
5086
5087         $ uname -r
5088         3.7.0-rc8-custom
5089
5090   :term:`LOG_DIR`
5091      Specifies the directory to which the OpenEmbedded build system writes
5092      overall log files. The default directory is ``${TMPDIR}/log``.
5093
5094      For the directory containing logs specific to each task, see the
5095      :term:`T` variable.
5096
5097   :term:`MACHINE`
5098      Specifies the target device for which the image is built. You define
5099      :term:`MACHINE` in the ``local.conf`` file found in the
5100      :term:`Build Directory`. By default, :term:`MACHINE` is set to
5101      "qemux86", which is an x86-based architecture machine to be emulated
5102      using QEMU::
5103
5104         MACHINE ?= "qemux86"
5105
5106      The variable corresponds to a machine configuration file of the same
5107      name, through which machine-specific configurations are set. Thus,
5108      when :term:`MACHINE` is set to "qemux86", the corresponding
5109      ``qemux86.conf`` machine configuration file can be found in
5110      the :term:`Source Directory` in
5111      ``meta/conf/machine``.
5112
5113      The list of machines supported by the Yocto Project as shipped
5114      include the following::
5115
5116         MACHINE ?= "qemuarm"
5117         MACHINE ?= "qemuarm64"
5118         MACHINE ?= "qemumips"
5119         MACHINE ?= "qemumips64"
5120         MACHINE ?= "qemuppc"
5121         MACHINE ?= "qemux86"
5122         MACHINE ?= "qemux86-64"
5123         MACHINE ?= "genericx86"
5124         MACHINE ?= "genericx86-64"
5125         MACHINE ?= "beaglebone"
5126
5127      The last five are Yocto Project reference hardware
5128      boards, which are provided in the ``meta-yocto-bsp`` layer.
5129
5130      .. note::
5131
5132         Adding additional Board Support Package (BSP) layers to your
5133         configuration adds new possible settings for :term:`MACHINE`.
5134
5135   :term:`MACHINE_ARCH`
5136      Specifies the name of the machine-specific architecture. This
5137      variable is set automatically from :term:`MACHINE` or
5138      :term:`TUNE_PKGARCH`. You should not hand-edit
5139      the :term:`MACHINE_ARCH` variable.
5140
5141   :term:`MACHINE_ESSENTIAL_EXTRA_RDEPENDS`
5142      A list of required machine-specific packages to install as part of
5143      the image being built. The build process depends on these packages
5144      being present. Furthermore, because this is a "machine-essential"
5145      variable, the list of packages are essential for the machine to boot.
5146      The impact of this variable affects images based on
5147      ``packagegroup-core-boot``, including the ``core-image-minimal``
5148      image.
5149
5150      This variable is similar to the
5151      :term:`MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS` variable with the exception
5152      that the image being built has a build dependency on the variable's
5153      list of packages. In other words, the image will not build if a file
5154      in this list is not found.
5155
5156      As an example, suppose the machine for which you are building
5157      requires ``example-init`` to be run during boot to initialize the
5158      hardware. In this case, you would use the following in the machine's
5159      ``.conf`` configuration file::
5160
5161         MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "example-init"
5162
5163   :term:`MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS`
5164      A list of recommended machine-specific packages to install as part of
5165      the image being built. The build process does not depend on these
5166      packages being present. However, because this is a
5167      "machine-essential" variable, the list of packages are essential for
5168      the machine to boot. The impact of this variable affects images based
5169      on ``packagegroup-core-boot``, including the ``core-image-minimal``
5170      image.
5171
5172      This variable is similar to the :term:`MACHINE_ESSENTIAL_EXTRA_RDEPENDS`
5173      variable with the exception that the image being built does not have
5174      a build dependency on the variable's list of packages. In other
5175      words, the image will still build if a package in this list is not
5176      found. Typically, this variable is used to handle essential kernel
5177      modules, whose functionality may be selected to be built into the
5178      kernel rather than as a module, in which case a package will not be
5179      produced.
5180
5181      Consider an example where you have a custom kernel where a specific
5182      touchscreen driver is required for the machine to be usable. However,
5183      the driver can be built as a module or into the kernel depending on
5184      the kernel configuration. If the driver is built as a module, you
5185      want it to be installed. But, when the driver is built into the
5186      kernel, you still want the build to succeed. This variable sets up a
5187      "recommends" relationship so that in the latter case, the build will
5188      not fail due to the missing package. To accomplish this, assuming the
5189      package for the module was called ``kernel-module-ab123``, you would
5190      use the following in the machine's ``.conf`` configuration file::
5191
5192         MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += "kernel-module-ab123"
5193
5194      .. note::
5195
5196         In this example, the ``kernel-module-ab123`` recipe needs to
5197         explicitly set its :term:`PACKAGES` variable to ensure that BitBake
5198         does not use the kernel recipe's :term:`PACKAGES_DYNAMIC` variable to
5199         satisfy the dependency.
5200
5201      Some examples of these machine essentials are flash, screen,
5202      keyboard, mouse, or touchscreen drivers (depending on the machine).
5203
5204   :term:`MACHINE_EXTRA_RDEPENDS`
5205      A list of machine-specific packages to install as part of the image
5206      being built that are not essential for the machine to boot. However,
5207      the build process for more fully-featured images depends on the
5208      packages being present.
5209
5210      This variable affects all images based on ``packagegroup-base``,
5211      which does not include the ``core-image-minimal`` or
5212      ``core-image-full-cmdline`` images.
5213
5214      The variable is similar to the :term:`MACHINE_EXTRA_RRECOMMENDS` variable
5215      with the exception that the image being built has a build dependency
5216      on the variable's list of packages. In other words, the image will
5217      not build if a file in this list is not found.
5218
5219      An example is a machine that has WiFi capability but is not essential
5220      for the machine to boot the image. However, if you are building a
5221      more fully-featured image, you want to enable the WiFi. The package
5222      containing the firmware for the WiFi hardware is always expected to
5223      exist, so it is acceptable for the build process to depend upon
5224      finding the package. In this case, assuming the package for the
5225      firmware was called ``wifidriver-firmware``, you would use the
5226      following in the ``.conf`` file for the machine::
5227
5228         MACHINE_EXTRA_RDEPENDS += "wifidriver-firmware"
5229
5230   :term:`MACHINE_EXTRA_RRECOMMENDS`
5231      A list of machine-specific packages to install as part of the image
5232      being built that are not essential for booting the machine. The image
5233      being built has no build dependency on this list of packages.
5234
5235      This variable affects only images based on ``packagegroup-base``,
5236      which does not include the ``core-image-minimal`` or
5237      ``core-image-full-cmdline`` images.
5238
5239      This variable is similar to the :term:`MACHINE_EXTRA_RDEPENDS` variable
5240      with the exception that the image being built does not have a build
5241      dependency on the variable's list of packages. In other words, the
5242      image will build if a file in this list is not found.
5243
5244      An example is a machine that has WiFi capability but is not essential
5245      For the machine to boot the image. However, if you are building a
5246      more fully-featured image, you want to enable WiFi. In this case, the
5247      package containing the WiFi kernel module will not be produced if the
5248      WiFi driver is built into the kernel, in which case you still want
5249      the build to succeed instead of failing as a result of the package
5250      not being found. To accomplish this, assuming the package for the
5251      module was called ``kernel-module-examplewifi``, you would use the
5252      following in the ``.conf`` file for the machine::
5253
5254         MACHINE_EXTRA_RRECOMMENDS += "kernel-module-examplewifi"
5255
5256   :term:`MACHINE_FEATURES`
5257      Specifies the list of hardware features the
5258      :term:`MACHINE` is capable of supporting. For related
5259      information on enabling features, see the
5260      :term:`DISTRO_FEATURES`,
5261      :term:`COMBINED_FEATURES`, and
5262      :term:`IMAGE_FEATURES` variables.
5263
5264      For a list of hardware features supported by the Yocto Project as
5265      shipped, see the ":ref:`ref-features-machine`" section.
5266
5267   :term:`MACHINE_FEATURES_BACKFILL`
5268      A list of space-separated features to be added to
5269      :term:`MACHINE_FEATURES` if not also present in
5270      :term:`MACHINE_FEATURES_BACKFILL_CONSIDERED`.
5271
5272      This variable is set in the ``meta/conf/bitbake.conf`` file. It is not
5273      intended to be user-configurable. It is best to just reference the
5274      variable to see which machine features are being
5275      :ref:`backfilled <ref-features-backfill>` for all machine configurations.
5276
5277   :term:`MACHINE_FEATURES_BACKFILL_CONSIDERED`
5278      A list of space-separated features from :term:`MACHINE_FEATURES_BACKFILL`
5279      that should not be :ref:`backfilled <ref-features-backfill>` (i.e. added
5280      to :term:`MACHINE_FEATURES`) during the build.
5281
5282      This corresponds to an opt-out mechanism. When new default machine
5283      features are introduced, machine definition maintainers can review
5284      (`consider`) them and decide to exclude them from the
5285      :ref:`backfilled <ref-features-backfill>` features. Therefore, the
5286      combination of :term:`MACHINE_FEATURES_BACKFILL` and
5287      :term:`MACHINE_FEATURES_BACKFILL_CONSIDERED` makes it possible to
5288      add new default features without breaking existing machine definitions.
5289
5290   :term:`MACHINEOVERRIDES`
5291      A colon-separated list of overrides that apply to the current
5292      machine. By default, this list includes the value of
5293      :term:`MACHINE`.
5294
5295      You can extend :term:`MACHINEOVERRIDES` to add extra overrides that
5296      should apply to a machine. For example, all machines emulated in QEMU
5297      (e.g. ``qemuarm``, ``qemux86``, and so forth) include a file named
5298      ``meta/conf/machine/include/qemu.inc`` that prepends the following
5299      override to :term:`MACHINEOVERRIDES`::
5300
5301         MACHINEOVERRIDES =. "qemuall:"
5302
5303      This
5304      override allows variables to be overridden for all machines emulated
5305      in QEMU, like in the following example from the ``connman-conf``
5306      recipe::
5307
5308         SRC_URI:append:qemuall = " file://wired.config \
5309             file://wired-setup \
5310             "
5311
5312      The underlying mechanism behind
5313      :term:`MACHINEOVERRIDES` is simply that it is included in the default
5314      value of :term:`OVERRIDES`.
5315
5316   :term:`MAINTAINER`
5317      The email address of the distribution maintainer.
5318
5319   :term:`MESON_BUILDTYPE`
5320      Value of the Meson ``--buildtype`` argument used by the
5321      :ref:`ref-classes-meson` class. It defaults to ``debug`` if
5322      :term:`DEBUG_BUILD` is set to "1", and ``plain`` otherwise.
5323
5324      See `Meson build options <https://mesonbuild.com/Builtin-options.html>`__
5325      for the values you could set in a recipe. Values such as ``plain``,
5326      ``debug``, ``debugoptimized``, ``release`` and ``minsize`` allow
5327      you to specify the inclusion of debugging symbols and the compiler
5328      optimizations (none, performance or size).
5329
5330   :term:`MESON_TARGET`
5331      A variable for the :ref:`ref-classes-meson` class, allowing to choose
5332      a Meson target to build in :ref:`ref-tasks-compile`.  Otherwise, the
5333      default targets are built.
5334
5335   :term:`METADATA_BRANCH`
5336      The branch currently checked out for the OpenEmbedded-Core layer (path
5337      determined by :term:`COREBASE`).
5338
5339   :term:`METADATA_REVISION`
5340      The revision currently checked out for the OpenEmbedded-Core layer (path
5341      determined by :term:`COREBASE`).
5342
5343   :term:`MIME_XDG_PACKAGES`
5344      The current implementation of the :ref:`ref-classes-mime-xdg`
5345      class cannot detect ``.desktop`` files installed through absolute
5346      symbolic links. Use this setting to make the class create post-install
5347      and post-remove scripts for these packages anyway, to invoke the
5348      ``update-destop-database`` command.
5349
5350   :term:`MIRRORS`
5351      Specifies additional paths from which the OpenEmbedded build system
5352      gets source code. When the build system searches for source code, it
5353      first tries the local download directory. If that location fails, the
5354      build system tries locations defined by
5355      :term:`PREMIRRORS`, the upstream source, and then
5356      locations specified by :term:`MIRRORS` in that order.
5357
5358      The default value for :term:`MIRRORS` is defined in the
5359      ``meta/classes-global/mirrors.bbclass`` file in the core metadata layer.
5360
5361   :term:`MLPREFIX`
5362      Specifies a prefix has been added to :term:`PN` to create a
5363      special version of a recipe or package (i.e. a Multilib version). The
5364      variable is used in places where the prefix needs to be added to or
5365      removed from a name (e.g. the :term:`BPN` variable).
5366      :term:`MLPREFIX` gets set when a prefix has been added to :term:`PN`.
5367
5368      .. note::
5369
5370         The "ML" in :term:`MLPREFIX` stands for "MultiLib". This representation
5371         is historical and comes from a time when ":ref:`ref-classes-nativesdk`"
5372         was a suffix rather than a prefix on the recipe name. When
5373         ":ref:`ref-classes-nativesdk`" was turned into a prefix, it made sense
5374         to set :term:`MLPREFIX` for it as well.
5375
5376      To help understand when :term:`MLPREFIX` might be needed, consider when
5377      :term:`BBCLASSEXTEND` is used to provide a :ref:`ref-classes-nativesdk`
5378      version of a recipe in addition to the target version. If that recipe
5379      declares build-time dependencies on tasks in other recipes by using
5380      :term:`DEPENDS`, then a dependency on "foo" will automatically get
5381      rewritten to a dependency on "nativesdk-foo". However, dependencies like
5382      the following will not get rewritten automatically::
5383
5384         do_foo[depends] += "recipe:do_foo"
5385
5386      If you want such a dependency to also get transformed, you can do the
5387      following::
5388
5389         do_foo[depends] += "${MLPREFIX}recipe:do_foo"
5390
5391   :term:`module_autoload`
5392      This variable has been replaced by the :term:`KERNEL_MODULE_AUTOLOAD`
5393      variable. You should replace all occurrences of :term:`module_autoload`
5394      with additions to :term:`KERNEL_MODULE_AUTOLOAD`, for example::
5395
5396         module_autoload_rfcomm = "rfcomm"
5397
5398      should now be replaced with::
5399
5400         KERNEL_MODULE_AUTOLOAD += "rfcomm"
5401
5402      See the :term:`KERNEL_MODULE_AUTOLOAD` variable for more information.
5403
5404   :term:`module_conf`
5405      Specifies `modprobe.d <https://linux.die.net/man/5/modprobe.d>`__
5406      syntax lines for inclusion in the ``/etc/modprobe.d/modname.conf``
5407      file.
5408
5409      You can use this variable anywhere that it can be recognized by the
5410      kernel recipe or out-of-tree kernel module recipe (e.g. a machine
5411      configuration file, a distribution configuration file, an append file
5412      for the recipe, or the recipe itself). If you use this variable, you
5413      must also be sure to list the module name in the
5414      :term:`KERNEL_MODULE_PROBECONF`
5415      variable.
5416
5417      Here is the general syntax::
5418
5419         module_conf_module_name = "modprobe.d-syntax"
5420
5421      You must use the kernel module name override.
5422
5423      Run ``man modprobe.d`` in the shell to find out more information on
5424      the exact syntax you want to provide with :term:`module_conf`.
5425
5426      Including :term:`module_conf` causes the OpenEmbedded build system to
5427      populate the ``/etc/modprobe.d/modname.conf`` file with
5428      ``modprobe.d`` syntax lines. Here is an example that adds the options
5429      ``arg1`` and ``arg2`` to a module named ``mymodule``::
5430
5431         module_conf_mymodule = "options mymodule arg1=val1 arg2=val2"
5432
5433      For information on how to specify kernel modules to auto-load on
5434      boot, see the :term:`KERNEL_MODULE_AUTOLOAD` variable.
5435
5436   :term:`MODULE_TARBALL_DEPLOY`
5437      Controls creation of the ``modules-*.tgz`` file. Set this variable to
5438      "0" to disable creation of this file, which contains all of the
5439      kernel modules resulting from a kernel build.
5440
5441   :term:`MODULE_TARBALL_LINK_NAME`
5442      The link name of the kernel module tarball. This variable is set in
5443      the ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as follows::
5444
5445         MODULE_TARBALL_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}"
5446
5447      The value
5448      of the ``KERNEL_ARTIFACT_LINK_NAME`` variable, which is set in the
5449      same file, has the following value::
5450
5451         KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}"
5452
5453      See the :term:`MACHINE` variable for additional information.
5454
5455   :term:`MODULE_TARBALL_NAME`
5456      The base name of the kernel module tarball. This variable is set in
5457      the ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as follows::
5458
5459         MODULE_TARBALL_NAME ?= "${KERNEL_ARTIFACT_NAME}"
5460
5461      See :term:`KERNEL_ARTIFACT_NAME` for additional information.
5462
5463   :term:`MOUNT_BASE`
5464      On non-systemd systems (where ``udev-extraconf`` is being used),
5465      specifies the base directory for auto-mounting filesystems. The
5466      default value is "/run/media".
5467
5468   :term:`MULTIMACH_TARGET_SYS`
5469      Uniquely identifies the type of the target system for which packages
5470      are being built. This variable allows output for different types of
5471      target systems to be put into different subdirectories of the same
5472      output directory.
5473
5474      The default value of this variable is::
5475
5476         ${PACKAGE_ARCH}${TARGET_VENDOR}-${TARGET_OS}
5477
5478      Some classes (e.g.  :ref:`ref-classes-cross-canadian`) modify the
5479      :term:`MULTIMACH_TARGET_SYS` value.
5480
5481      See the :term:`STAMP` variable for an example. See the
5482      :term:`STAGING_DIR_TARGET` variable for more information.
5483
5484   :term:`NATIVELSBSTRING`
5485      A string identifying the host distribution. Strings consist of the
5486      host distributor ID followed by the release, as reported by the
5487      ``lsb_release`` tool or as read from ``/etc/lsb-release``. For
5488      example, when running a build on Ubuntu 12.10, the value is
5489      "Ubuntu-12.10". If this information is unable to be determined, the
5490      value resolves to "Unknown".
5491
5492      This variable is used by default to isolate native shared state
5493      packages for different distributions (e.g. to avoid problems with
5494      ``glibc`` version incompatibilities). Additionally, the variable is
5495      checked against
5496      :term:`SANITY_TESTED_DISTROS` if that
5497      variable is set.
5498
5499   :term:`NM`
5500      The minimal command and arguments to run ``nm``.
5501
5502   :term:`NO_GENERIC_LICENSE`
5503      Avoids QA errors when you use a non-common, non-CLOSED license in a
5504      recipe. There are packages, such as the linux-firmware package, with many
5505      licenses that are not in any way common. Also, new licenses are added
5506      occasionally to avoid introducing a lot of common license files,
5507      which are only applicable to a specific package.
5508      :term:`NO_GENERIC_LICENSE` is used to allow copying a license that does
5509      not exist in common licenses.
5510
5511      The following example shows how to add :term:`NO_GENERIC_LICENSE` to a
5512      recipe::
5513
5514         NO_GENERIC_LICENSE[license_name] = "license_file_in_fetched_source"
5515
5516      Here is an example that
5517      uses the ``LICENSE.Abilis.txt`` file as the license from the fetched
5518      source::
5519
5520         NO_GENERIC_LICENSE[Firmware-Abilis] = "LICENSE.Abilis.txt"
5521
5522   :term:`NO_RECOMMENDATIONS`
5523      Prevents installation of all "recommended-only" packages.
5524      Recommended-only packages are packages installed only through the
5525      :term:`RRECOMMENDS` variable). Setting the
5526      :term:`NO_RECOMMENDATIONS` variable to "1" turns this feature on::
5527
5528         NO_RECOMMENDATIONS = "1"
5529
5530      You can set this variable globally in your ``local.conf`` file or you
5531      can attach it to a specific image recipe by using the recipe name
5532      override::
5533
5534         NO_RECOMMENDATIONS:pn-target_image = "1"
5535
5536      It is important to realize that if you choose to not install packages
5537      using this variable and some other packages are dependent on them
5538      (i.e. listed in a recipe's :term:`RDEPENDS`
5539      variable), the OpenEmbedded build system ignores your request and
5540      will install the packages to avoid dependency errors.
5541
5542      .. note::
5543
5544         Some recommended packages might be required for certain system
5545         functionality, such as kernel modules. It is up to you to add
5546         packages with the :term:`IMAGE_INSTALL` variable.
5547
5548      This variable is only supported when using the IPK and RPM
5549      packaging backends. DEB is not supported.
5550
5551      See the :term:`BAD_RECOMMENDATIONS` and
5552      the :term:`PACKAGE_EXCLUDE` variables for
5553      related information.
5554
5555   :term:`NOAUTOPACKAGEDEBUG`
5556      Disables auto package from splitting ``.debug`` files. If a recipe
5557      requires ``FILES:${PN}-dbg`` to be set manually, the
5558      :term:`NOAUTOPACKAGEDEBUG` can be defined allowing you to define the
5559      content of the debug package. For example::
5560
5561         NOAUTOPACKAGEDEBUG = "1"
5562         FILES:${PN}-dev = "${includedir}/${QT_DIR_NAME}/Qt/*"
5563         FILES:${PN}-dbg = "/usr/src/debug/"
5564         FILES:${QT_BASE_NAME}-demos-doc = "${docdir}/${QT_DIR_NAME}/qch/qt.qch"
5565
5566   :term:`NON_MULTILIB_RECIPES`
5567      A list of recipes that should not be built for multilib. OE-Core's
5568      ``multilib.conf`` file defines a reasonable starting point for this
5569      list with::
5570
5571         NON_MULTILIB_RECIPES = "grub grub-efi make-mod-scripts ovmf u-boot"
5572
5573   :term:`OBJCOPY`
5574      The minimal command and arguments to run ``objcopy``.
5575
5576   :term:`OBJDUMP`
5577      The minimal command and arguments to run ``objdump``.
5578
5579   :term:`OE_BINCONFIG_EXTRA_MANGLE`
5580      When inheriting the :ref:`ref-classes-binconfig` class,
5581      this variable specifies additional arguments passed to the "sed"
5582      command. The sed command alters any paths in configuration scripts
5583      that have been set up during compilation. Inheriting this class
5584      results in all paths in these scripts being changed to point into the
5585      ``sysroots/`` directory so that all builds that use the script will
5586      use the correct directories for the cross compiling layout.
5587
5588      See the ``meta/classes-recipe/binconfig.bbclass`` in the
5589      :term:`Source Directory` for details on how this class
5590      applies these additional sed command arguments.
5591
5592   :term:`OECMAKE_GENERATOR`
5593      A variable for the :ref:`ref-classes-cmake` class, allowing to choose
5594      which back-end will be generated by CMake to build an application.
5595
5596      By default, this variable is set to ``Ninja``, which is faster than GNU
5597      make, but if building is broken with Ninja, a recipe can use this
5598      variable to use GNU make instead::
5599
5600         OECMAKE_GENERATOR = "Unix Makefiles"
5601
5602   :term:`OE_IMPORTS`
5603      An internal variable used to tell the OpenEmbedded build system what
5604      Python modules to import for every Python function run by the system.
5605
5606      .. note::
5607
5608         Do not set this variable. It is for internal use only.
5609
5610   :term:`OE_INIT_ENV_SCRIPT`
5611      The name of the build environment setup script for the purposes of
5612      setting up the environment within the extensible SDK. The default
5613      value is "oe-init-build-env".
5614
5615      If you use a custom script to set up your build environment, set the
5616      :term:`OE_INIT_ENV_SCRIPT` variable to its name.
5617
5618   :term:`OE_TERMINAL`
5619      Controls how the OpenEmbedded build system spawns interactive
5620      terminals on the host development system (e.g. using the BitBake
5621      command with the ``-c devshell`` command-line option). For more
5622      information, see the ":ref:`dev-manual/development-shell:using a development shell`" section in
5623      the Yocto Project Development Tasks Manual.
5624
5625      You can use the following values for the :term:`OE_TERMINAL` variable:
5626
5627      - auto
5628      - gnome
5629      - xfce
5630      - rxvt
5631      - screen
5632      - konsole
5633      - none
5634
5635   :term:`OEROOT`
5636      The directory from which the top-level build environment setup script
5637      is sourced. The Yocto Project provides a top-level build environment
5638      setup script: :ref:`structure-core-script`. When you run this
5639      script, the :term:`OEROOT` variable resolves to the directory that
5640      contains the script.
5641
5642      For additional information on how this variable is used, see the
5643      initialization script.
5644
5645   :term:`OEQA_REPRODUCIBLE_TEST_PACKAGE`
5646      Set the package manager(s) for build reproducibility testing.
5647      See :yocto_git:`reproducible.py </poky/tree/meta/lib/oeqa/selftest/cases/reproducible.py>`
5648      and :doc:`/test-manual/reproducible-builds`.
5649
5650   :term:`OEQA_REPRODUCIBLE_TEST_TARGET`
5651      Set build target for build reproducibility testing. By default
5652      all available recipes are compiled with "bitbake world", see also :term:`EXCLUDE_FROM_WORLD`
5653      and :doc:`/test-manual/reproducible-builds`.
5654
5655   :term:`OEQA_REPRODUCIBLE_TEST_SSTATE_TARGETS`
5656      Set build targets which can be rebuilt using :ref:`shared state <overview-manual/concepts:shared state cache>`
5657      when running build reproducibility tests. See :doc:`/test-manual/reproducible-builds`.
5658
5659   :term:`OLDEST_KERNEL`
5660      Declares the oldest version of the Linux kernel that the produced
5661      binaries must support. This variable is passed into the build of the
5662      Embedded GNU C Library (``glibc``).
5663
5664      The default for this variable comes from the
5665      ``meta/conf/bitbake.conf`` configuration file. You can override this
5666      default by setting the variable in a custom distribution
5667      configuration file.
5668
5669   :term:`OVERLAYFS_ETC_DEVICE`
5670      When the :ref:`ref-classes-overlayfs-etc` class is
5671      inherited, specifies the device to be mounted for the read/write
5672      layer of ``/etc``. There is no default, so you must set this if you
5673      wish to enable :ref:`ref-classes-overlayfs-etc`, for
5674      example, assuming ``/dev/mmcblk0p2`` was the desired device::
5675
5676         OVERLAYFS_ETC_DEVICE = "/dev/mmcblk0p2"
5677
5678   :term:`OVERLAYFS_ETC_EXPOSE_LOWER`
5679      When the :ref:`ref-classes-overlayfs-etc` class is
5680      inherited, if set to "1" then a read-only access to the original
5681      ``/etc`` content will be provided as a ``lower/`` subdirectory of
5682      :term:`OVERLAYFS_ETC_MOUNT_POINT`. The default value is "0".
5683
5684   :term:`OVERLAYFS_ETC_FSTYPE`
5685      When the :ref:`ref-classes-overlayfs-etc` class is
5686      inherited, specifies the file system type for the read/write
5687      layer of ``/etc``. There is no default, so you must set this if you
5688      wish to enable :ref:`ref-classes-overlayfs-etc`,
5689      for example, assuming the file system is ext4::
5690
5691         OVERLAYFS_ETC_FSTYPE = "ext4"
5692
5693   :term:`OVERLAYFS_ETC_MOUNT_OPTIONS`
5694      When the :ref:`ref-classes-overlayfs-etc` class is
5695      inherited, specifies the mount options for the read-write layer.
5696      The default value is "defaults".
5697
5698   :term:`OVERLAYFS_ETC_MOUNT_POINT`
5699      When the :ref:`ref-classes-overlayfs-etc` class is
5700      inherited, specifies the parent mount path for the filesystem layers.
5701      There is no default, so you must set this if you wish to enable
5702      :ref:`ref-classes-overlayfs-etc`, for example if the desired path is
5703      "/data"::
5704
5705         OVERLAYFS_ETC_MOUNT_POINT = "/data"
5706
5707   :term:`OVERLAYFS_ETC_USE_ORIG_INIT_NAME`
5708      When the :ref:`ref-classes-overlayfs-etc` class is inherited, controls
5709      how the generated init will be named. For more information, see the
5710      :ref:`ref-classes-overlayfs-etc` class documentation. The default value
5711      is "1".
5712
5713   :term:`OVERLAYFS_MOUNT_POINT`
5714      When inheriting the :ref:`ref-classes-overlayfs` class,
5715      specifies mount point(s) to be used. For example::
5716
5717         OVERLAYFS_MOUNT_POINT[data] = "/data"
5718
5719      The assumes you have a ``data.mount`` systemd unit defined elsewhere in
5720      your BSP (e.g. in ``systemd-machine-units`` recipe) and it is installed
5721      into the image. For more information see :ref:`ref-classes-overlayfs`.
5722
5723      .. note::
5724
5725         Although the :ref:`ref-classes-overlayfs` class is
5726         inherited by individual recipes, :term:`OVERLAYFS_MOUNT_POINT`
5727         should be set in your machine configuration.
5728
5729   :term:`OVERLAYFS_QA_SKIP`
5730      When inheriting the :ref:`ref-classes-overlayfs` class,
5731      provides the ability to disable QA checks for particular overlayfs
5732      mounts. For example::
5733
5734         OVERLAYFS_QA_SKIP[data] = "mount-configured"
5735
5736      .. note::
5737
5738         Although the :ref:`ref-classes-overlayfs` class is
5739         inherited by individual recipes, :term:`OVERLAYFS_QA_SKIP`
5740         should be set in your machine configuration.
5741
5742   :term:`OVERLAYFS_WRITABLE_PATHS`
5743      When inheriting the :ref:`ref-classes-overlayfs` class,
5744      specifies writable paths used at runtime for the recipe. For
5745      example::
5746
5747         OVERLAYFS_WRITABLE_PATHS[data] = "/usr/share/my-custom-application"
5748
5749   :term:`OVERRIDES`
5750      A colon-separated list of overrides that currently apply. Overrides
5751      are a BitBake mechanism that allows variables to be selectively
5752      overridden at the end of parsing. The set of overrides in
5753      :term:`OVERRIDES` represents the "state" during building, which includes
5754      the current recipe being built, the machine for which it is being
5755      built, and so forth.
5756
5757      As an example, if the string "an-override" appears as an element in
5758      the colon-separated list in :term:`OVERRIDES`, then the following
5759      assignment will override ``FOO`` with the value "overridden" at the
5760      end of parsing::
5761
5762         FOO:an-override = "overridden"
5763
5764      See the
5765      ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:conditional syntax (overrides)`"
5766      section in the BitBake User Manual for more information on the
5767      overrides mechanism.
5768
5769      The default value of :term:`OVERRIDES` includes the values of the
5770      :term:`CLASSOVERRIDE`,
5771      :term:`MACHINEOVERRIDES`, and
5772      :term:`DISTROOVERRIDES` variables. Another
5773      important override included by default is ``pn-${PN}``. This override
5774      allows variables to be set for a single recipe within configuration
5775      (``.conf``) files. Here is an example::
5776
5777         FOO:pn-myrecipe = "myrecipe-specific value"
5778
5779      .. note::
5780
5781         An easy way to see what overrides apply is to search for :term:`OVERRIDES`
5782         in the output of the ``bitbake -e`` command. See the
5783         ":ref:`dev-manual/debugging:viewing variable values`" section in the Yocto
5784         Project Development Tasks Manual for more information.
5785
5786   :term:`P`
5787      The recipe name and version. :term:`P` is comprised of the following::
5788
5789         ${PN}-${PV}
5790
5791   :term:`P4DIR`
5792      See :term:`bitbake:P4DIR` in the BitBake manual.
5793
5794   :term:`PACKAGE_ADD_METADATA`
5795      This variable defines additional metadata to add to packages.
5796
5797      You may find you need to inject additional metadata into packages.
5798      This variable allows you to do that by setting the injected data as
5799      the value. Multiple fields can be added by splitting the content with
5800      the literal separator "\n".
5801
5802      The suffixes '_IPK', '_DEB', or '_RPM' can be applied to the variable
5803      to do package type specific settings. It can also be made package
5804      specific by using the package name as a suffix.
5805
5806      You can find out more about applying this variable in the
5807      ":ref:`dev-manual/packages:adding custom metadata to packages`"
5808      section in the Yocto Project Development Tasks Manual.
5809
5810   :term:`PACKAGE_ARCH`
5811      The architecture of the resulting package or packages.
5812
5813      By default, the value of this variable is set to
5814      :term:`TUNE_PKGARCH` when building for the
5815      target, :term:`BUILD_ARCH` when building for the
5816      build host, and "${SDK_ARCH}-${SDKPKGSUFFIX}" when building for the
5817      SDK.
5818
5819      .. note::
5820
5821         See :term:`SDK_ARCH` for more information.
5822
5823      However, if your recipe's output packages are built specific to the
5824      target machine rather than generally for the architecture of the
5825      machine, you should set :term:`PACKAGE_ARCH` to the value of
5826      :term:`MACHINE_ARCH` in the recipe as follows::
5827
5828         PACKAGE_ARCH = "${MACHINE_ARCH}"
5829
5830   :term:`PACKAGE_ARCHS`
5831      Specifies a list of architectures compatible with the target machine.
5832      This variable is set automatically and should not normally be
5833      hand-edited. Entries are separated using spaces and listed in order
5834      of priority. The default value for :term:`PACKAGE_ARCHS` is "all any
5835      noarch ${PACKAGE_EXTRA_ARCHS} ${MACHINE_ARCH}".
5836
5837   :term:`PACKAGE_BEFORE_PN`
5838      Enables easily adding packages to :term:`PACKAGES` before ``${PN}`` so
5839      that those added packages can pick up files that would normally be
5840      included in the default package.
5841
5842   :term:`PACKAGE_CLASSES`
5843      This variable, which is set in the ``local.conf`` configuration file
5844      found in the ``conf`` folder of the
5845      :term:`Build Directory`, specifies the package manager the
5846      OpenEmbedded build system uses when packaging data.
5847
5848      You can provide one or more of the following arguments for the
5849      variable::
5850
5851         PACKAGE_CLASSES ?= "package_rpm package_deb package_ipk"
5852
5853      The build system uses only the first argument in the list as the
5854      package manager when creating your image or SDK. However, packages
5855      will be created using any additional packaging classes you specify.
5856      For example, if you use the following in your ``local.conf`` file::
5857
5858         PACKAGE_CLASSES ?= "package_ipk"
5859
5860      The OpenEmbedded build system uses
5861      the IPK package manager to create your image or SDK.
5862
5863      For information on packaging and build performance effects as a
5864      result of the package manager in use, see the
5865      ":ref:`ref-classes-package`" section.
5866
5867   :term:`PACKAGE_DEBUG_SPLIT_STYLE`
5868      Determines how to split up and package debug and source information
5869      when creating debugging packages to be used with the GNU Project
5870      Debugger (GDB). In general, based on the value of this variable,
5871      you can combine the source and debug info in a single package,
5872      you can break out the source into a separate package that can be
5873      installed independently, or you can choose to not have the source
5874      packaged at all.
5875
5876      The possible values of :term:`PACKAGE_DEBUG_SPLIT_STYLE` variable:
5877
5878      -  "``.debug``": All debugging and source info is placed in a single
5879         ``*-dbg`` package; debug symbol files are placed next to the
5880         binary in a ``.debug`` directory so that, if a binary is installed
5881         into ``/bin``, the corresponding debug symbol file is installed
5882         in ``/bin/.debug``. Source files are installed in the same ``*-dbg``
5883         package under ``/usr/src/debug``.
5884
5885      -  "``debug-file-directory``": As above, all debugging and source info
5886         is placed in a single ``*-dbg`` package; debug symbol files are
5887         placed entirely under the directory ``/usr/lib/debug`` and separated
5888         by the path from where the binary is installed, so that if a binary
5889         is installed in ``/bin``, the corresponding debug symbols are installed
5890         in ``/usr/lib/debug/bin``, and so on. As above, source is installed
5891         in the same package under ``/usr/src/debug``.
5892
5893      -  "``debug-with-srcpkg``": Debugging info is placed in the standard
5894         ``*-dbg`` package as with the ``.debug`` value, while source is
5895         placed in a separate ``*-src`` package, which can be installed
5896         independently.  This is the default setting for this variable,
5897         as defined in Poky's ``bitbake.conf`` file.
5898
5899      -  "``debug-without-src``": The same behavior as with the ``.debug``
5900         setting, but no source is packaged at all.
5901
5902      .. note::
5903
5904         Much of the above package splitting can be overridden via
5905         use of the :term:`INHIBIT_PACKAGE_DEBUG_SPLIT` variable.
5906
5907      You can find out more about debugging using GDB by reading the
5908      ":ref:`dev-manual/debugging:debugging with the gnu project debugger (gdb) remotely`" section
5909      in the Yocto Project Development Tasks Manual.
5910
5911   :term:`PACKAGE_EXCLUDE`
5912      Lists packages that should not be installed into an image. For
5913      example::
5914
5915         PACKAGE_EXCLUDE = "package_name package_name package_name ..."
5916
5917      You can set this variable globally in your ``local.conf`` file or you
5918      can attach it to a specific image recipe by using the recipe name
5919      override::
5920
5921         PACKAGE_EXCLUDE:pn-target_image = "package_name"
5922
5923      If you choose to not install a package using this variable and some
5924      other package is dependent on it (i.e. listed in a recipe's
5925      :term:`RDEPENDS` variable), the OpenEmbedded build
5926      system generates a fatal installation error. Because the build system
5927      halts the process with a fatal error, you can use the variable with
5928      an iterative development process to remove specific components from a
5929      system.
5930
5931      This variable is supported only when using the IPK and RPM
5932      packaging backends. DEB is not supported.
5933
5934      See the :term:`NO_RECOMMENDATIONS` and the
5935      :term:`BAD_RECOMMENDATIONS` variables for
5936      related information.
5937
5938   :term:`PACKAGE_EXCLUDE_COMPLEMENTARY`
5939      Prevents specific packages from being installed when you are
5940      installing complementary packages.
5941
5942      You might find that you want to prevent installing certain packages
5943      when you are installing complementary packages. For example, if you
5944      are using :term:`IMAGE_FEATURES` to install
5945      ``dev-pkgs``, you might not want to install all packages from a
5946      particular multilib. If you find yourself in this situation, you can
5947      use the :term:`PACKAGE_EXCLUDE_COMPLEMENTARY` variable to specify regular
5948      expressions to match the packages you want to exclude.
5949
5950   :term:`PACKAGE_EXTRA_ARCHS`
5951      Specifies the list of architectures compatible with the device CPU.
5952      This variable is useful when you build for several different devices
5953      that use miscellaneous processors such as XScale and ARM926-EJS.
5954
5955   :term:`PACKAGE_FEED_ARCHS`
5956      Optionally specifies the package architectures used as part of the
5957      package feed URIs during the build. When used, the
5958      :term:`PACKAGE_FEED_ARCHS` variable is appended to the final package feed
5959      URI, which is constructed using the
5960      :term:`PACKAGE_FEED_URIS` and
5961      :term:`PACKAGE_FEED_BASE_PATHS`
5962      variables.
5963
5964      .. note::
5965
5966         You can use the :term:`PACKAGE_FEED_ARCHS`
5967         variable to allow specific package architectures. If you do
5968         not need to allow specific architectures, which is a common
5969         case, you can omit this variable. Omitting the variable results in
5970         all available architectures for the current machine being included
5971         into remote package feeds.
5972
5973      Consider the following example where the :term:`PACKAGE_FEED_URIS`,
5974      :term:`PACKAGE_FEED_BASE_PATHS`, and :term:`PACKAGE_FEED_ARCHS` variables are
5975      defined in your ``local.conf`` file::
5976
5977         PACKAGE_FEED_URIS = "https://example.com/packagerepos/release \
5978                              https://example.com/packagerepos/updates"
5979         PACKAGE_FEED_BASE_PATHS = "rpm rpm-dev"
5980         PACKAGE_FEED_ARCHS = "all core2-64"
5981
5982      Given these settings, the resulting package feeds are as follows:
5983
5984      .. code-block:: none
5985
5986         https://example.com/packagerepos/release/rpm/all
5987         https://example.com/packagerepos/release/rpm/core2-64
5988         https://example.com/packagerepos/release/rpm-dev/all
5989         https://example.com/packagerepos/release/rpm-dev/core2-64
5990         https://example.com/packagerepos/updates/rpm/all
5991         https://example.com/packagerepos/updates/rpm/core2-64
5992         https://example.com/packagerepos/updates/rpm-dev/all
5993         https://example.com/packagerepos/updates/rpm-dev/core2-64
5994
5995   :term:`PACKAGE_FEED_BASE_PATHS`
5996      Specifies the base path used when constructing package feed URIs. The
5997      :term:`PACKAGE_FEED_BASE_PATHS` variable makes up the middle portion of a
5998      package feed URI used by the OpenEmbedded build system. The base path
5999      lies between the :term:`PACKAGE_FEED_URIS`
6000      and :term:`PACKAGE_FEED_ARCHS` variables.
6001
6002      Consider the following example where the :term:`PACKAGE_FEED_URIS`,
6003      :term:`PACKAGE_FEED_BASE_PATHS`, and :term:`PACKAGE_FEED_ARCHS` variables are
6004      defined in your ``local.conf`` file::
6005
6006         PACKAGE_FEED_URIS = "https://example.com/packagerepos/release \
6007                              https://example.com/packagerepos/updates"
6008         PACKAGE_FEED_BASE_PATHS = "rpm rpm-dev"
6009         PACKAGE_FEED_ARCHS = "all core2-64"
6010
6011      Given these settings, the resulting package feeds are as follows:
6012
6013      .. code-block:: none
6014
6015         https://example.com/packagerepos/release/rpm/all
6016         https://example.com/packagerepos/release/rpm/core2-64
6017         https://example.com/packagerepos/release/rpm-dev/all
6018         https://example.com/packagerepos/release/rpm-dev/core2-64
6019         https://example.com/packagerepos/updates/rpm/all
6020         https://example.com/packagerepos/updates/rpm/core2-64
6021         https://example.com/packagerepos/updates/rpm-dev/all
6022         https://example.com/packagerepos/updates/rpm-dev/core2-64
6023
6024   :term:`PACKAGE_FEED_URIS`
6025      Specifies the front portion of the package feed URI used by the
6026      OpenEmbedded build system. Each final package feed URI is comprised
6027      of :term:`PACKAGE_FEED_URIS`,
6028      :term:`PACKAGE_FEED_BASE_PATHS`, and
6029      :term:`PACKAGE_FEED_ARCHS` variables.
6030
6031      Consider the following example where the :term:`PACKAGE_FEED_URIS`,
6032      :term:`PACKAGE_FEED_BASE_PATHS`, and :term:`PACKAGE_FEED_ARCHS` variables are
6033      defined in your ``local.conf`` file::
6034
6035         PACKAGE_FEED_URIS = "https://example.com/packagerepos/release \
6036                              https://example.com/packagerepos/updates"
6037         PACKAGE_FEED_BASE_PATHS = "rpm rpm-dev"
6038         PACKAGE_FEED_ARCHS = "all core2-64"
6039
6040      Given these settings, the resulting package feeds are as follows:
6041
6042      .. code-block:: none
6043
6044         https://example.com/packagerepos/release/rpm/all
6045         https://example.com/packagerepos/release/rpm/core2-64
6046         https://example.com/packagerepos/release/rpm-dev/all
6047         https://example.com/packagerepos/release/rpm-dev/core2-64
6048         https://example.com/packagerepos/updates/rpm/all
6049         https://example.com/packagerepos/updates/rpm/core2-64
6050         https://example.com/packagerepos/updates/rpm-dev/all
6051         https://example.com/packagerepos/updates/rpm-dev/core2-64
6052
6053   :term:`PACKAGE_INSTALL`
6054      The final list of packages passed to the package manager for
6055      installation into the image.
6056
6057      Because the package manager controls actual installation of all
6058      packages, the list of packages passed using :term:`PACKAGE_INSTALL` is
6059      not the final list of packages that are actually installed. This
6060      variable is internal to the image construction code. Consequently, in
6061      general, you should use the
6062      :term:`IMAGE_INSTALL` variable to specify
6063      packages for installation. The exception to this is when working with
6064      the :ref:`core-image-minimal-initramfs <ref-manual/images:images>`
6065      image. When working with an initial RAM filesystem (:term:`Initramfs`) image,
6066      use the :term:`PACKAGE_INSTALL` variable. For information on creating an
6067      :term:`Initramfs`, see the ":ref:`dev-manual/building:building an initial ram filesystem (Initramfs) image`" section
6068      in the Yocto Project Development Tasks Manual.
6069
6070   :term:`PACKAGE_INSTALL_ATTEMPTONLY`
6071      Specifies a list of packages the OpenEmbedded build system attempts
6072      to install when creating an image. If a listed package fails to
6073      install, the build system does not generate an error. This variable
6074      is generally not user-defined.
6075
6076   :term:`PACKAGE_PREPROCESS_FUNCS`
6077      Specifies a list of functions run to pre-process the
6078      :term:`PKGD` directory prior to splitting the files out
6079      to individual packages.
6080
6081   :term:`PACKAGE_WRITE_DEPS`
6082      Specifies a list of dependencies for post-installation and
6083      pre-installation scripts on native/cross tools. If your
6084      post-installation or pre-installation script can execute at root filesystem
6085      creation time rather than on the target but depends on a native tool
6086      in order to execute, you need to list the tools in
6087      :term:`PACKAGE_WRITE_DEPS`.
6088
6089      For information on running post-installation scripts, see the
6090      ":ref:`dev-manual/new-recipe:post-installation scripts`"
6091      section in the Yocto Project Development Tasks Manual.
6092
6093   :term:`PACKAGECONFIG`
6094      This variable provides a means of enabling or disabling features of a
6095      recipe on a per-recipe basis. :term:`PACKAGECONFIG` blocks are defined in
6096      recipes when you specify features and then arguments that define
6097      feature behaviors. Here is the basic block structure (broken over
6098      multiple lines for readability)::
6099
6100         PACKAGECONFIG ??= "f1 f2 f3 ..."
6101         PACKAGECONFIG[f1] = "\
6102             --with-f1, \
6103             --without-f1, \
6104             build-deps-for-f1, \
6105             runtime-deps-for-f1, \
6106             runtime-recommends-for-f1, \
6107             packageconfig-conflicts-for-f1"
6108         PACKAGECONFIG[f2] = "\
6109              ... and so on and so on ...
6110
6111      The :term:`PACKAGECONFIG` variable itself specifies a space-separated
6112      list of the features to enable. Following the features, you can
6113      determine the behavior of each feature by providing up to six
6114      order-dependent arguments, which are separated by commas. You can
6115      omit any argument you like but must retain the separating commas. The
6116      order is important and specifies the following:
6117
6118      #. Extra arguments that should be added to :term:`PACKAGECONFIG_CONFARGS`
6119         if the feature is enabled.
6120
6121      #. Extra arguments that should be added to :term:`PACKAGECONFIG_CONFARGS`
6122         if the feature is disabled.
6123
6124      #. Additional build dependencies (:term:`DEPENDS`)
6125         that should be added if the feature is enabled.
6126
6127      #. Additional runtime dependencies (:term:`RDEPENDS`)
6128         that should be added if the feature is enabled.
6129
6130      #. Additional runtime recommendations
6131         (:term:`RRECOMMENDS`) that should be added if
6132         the feature is enabled.
6133
6134      #. Any conflicting (that is, mutually exclusive) :term:`PACKAGECONFIG`
6135         settings for this feature.
6136
6137      Consider the following :term:`PACKAGECONFIG` block taken from the
6138      ``librsvg`` recipe. In this example the feature is ``gtk``, which has
6139      three arguments that determine the feature's behavior::
6140
6141         PACKAGECONFIG[gtk] = "--with-gtk3,--without-gtk3,gtk+3"
6142
6143      The
6144      ``--with-gtk3`` and ``gtk+3`` arguments apply only if the feature is
6145      enabled. In this case, ``--with-gtk3`` is added to the configure
6146      script argument list and ``gtk+3`` is added to :term:`DEPENDS`. On the
6147      other hand, if the feature is disabled say through a ``.bbappend``
6148      file in another layer, then the second argument ``--without-gtk3`` is
6149      added to the configure script instead.
6150
6151      The basic :term:`PACKAGECONFIG` structure previously described holds true
6152      regardless of whether you are creating a block or changing a block.
6153      When creating a block, use the structure inside your recipe.
6154
6155      If you want to change an existing :term:`PACKAGECONFIG` block, you can do
6156      so one of two ways:
6157
6158      -  *Append file:* Create an append file named
6159         ``recipename.bbappend`` in your layer and override the value of
6160         :term:`PACKAGECONFIG`. You can either completely override the
6161         variable::
6162
6163            PACKAGECONFIG = "f4 f5"
6164
6165         Or, you can just append the variable::
6166
6167            PACKAGECONFIG:append = " f4"
6168
6169      -  *Configuration file:* This method is identical to changing the
6170         block through an append file except you edit your ``local.conf``
6171         or ``mydistro.conf`` file. As with append files previously
6172         described, you can either completely override the variable::
6173
6174            PACKAGECONFIG:pn-recipename = "f4 f5"
6175
6176         Or, you can just amend the variable::
6177
6178            PACKAGECONFIG:append:pn-recipename = " f4"
6179
6180      Consider the following example of a :ref:`ref-classes-cmake` recipe with a systemd service
6181      in which :term:`PACKAGECONFIG` is used to transform the systemd service
6182      into a feature that can be easily enabled or disabled via :term:`PACKAGECONFIG`::
6183
6184         example.c
6185         example.service
6186         CMakeLists.txt
6187
6188      The ``CMakeLists.txt`` file contains::
6189
6190         if(WITH_SYSTEMD)
6191            install(FILES ${PROJECT_SOURCE_DIR}/example.service DESTINATION /etc/systemd/systemd)
6192         endif(WITH_SYSTEMD)
6193
6194      In order to enable the installation of ``example.service`` we need to
6195      ensure that ``-DWITH_SYSTEMD=ON`` is passed to the ``cmake`` command
6196      execution.  Recipes that have ``CMakeLists.txt`` generally inherit the
6197      :ref:`ref-classes-cmake` class, that runs ``cmake`` with
6198      :term:`EXTRA_OECMAKE`, which :term:`PACKAGECONFIG_CONFARGS` will be
6199      appended to.  Now, knowing that :term:`PACKAGECONFIG_CONFARGS` is
6200      automatically filled with either the first or second element of
6201      :term:`PACKAGECONFIG` flag value, the recipe would be like::
6202
6203         inherit cmake
6204         PACKAGECONFIG = "systemd"
6205         PACKAGECONFIG[systemd] = "-DWITH_SYSTEMD=ON,-DWITH_SYSTEMD=OFF"
6206
6207      A side note to this recipe is to check if ``systemd`` is in fact the used :term:`INIT_MANAGER`
6208      or not::
6209
6210         PACKAGECONFIG = "${@'systemd' if d.getVar('INIT_MANAGER') == 'systemd' else ''}"
6211
6212   :term:`PACKAGECONFIG_CONFARGS`
6213      A space-separated list of configuration options generated from the
6214      :term:`PACKAGECONFIG` setting.
6215
6216      Classes such as :ref:`ref-classes-autotools` and :ref:`ref-classes-cmake`
6217      use :term:`PACKAGECONFIG_CONFARGS` to pass :term:`PACKAGECONFIG` options
6218      to ``configure`` and ``cmake``, respectively. If you are using
6219      :term:`PACKAGECONFIG` but not a class that handles the
6220      :ref:`ref-tasks-configure` task, then you need to use
6221      :term:`PACKAGECONFIG_CONFARGS` appropriately.
6222
6223   :term:`PACKAGEGROUP_DISABLE_COMPLEMENTARY`
6224      For recipes inheriting the :ref:`ref-classes-packagegroup` class, setting
6225      :term:`PACKAGEGROUP_DISABLE_COMPLEMENTARY` to "1" specifies that the
6226      normal complementary packages (i.e. ``-dev``, ``-dbg``, and so forth)
6227      should not be automatically created by the ``packagegroup`` recipe,
6228      which is the default behavior.
6229
6230   :term:`PACKAGES`
6231      The list of packages the recipe creates. The default value is the
6232      following::
6233
6234         ${PN}-src ${PN}-dbg ${PN}-staticdev ${PN}-dev ${PN}-doc ${PN}-locale ${PACKAGE_BEFORE_PN} ${PN}
6235
6236      During packaging, the :ref:`ref-tasks-package` task
6237      goes through :term:`PACKAGES` and uses the :term:`FILES`
6238      variable corresponding to each package to assign files to the
6239      package. If a file matches the :term:`FILES` variable for more than one
6240      package in :term:`PACKAGES`, it will be assigned to the earliest
6241      (leftmost) package.
6242
6243      Packages in the variable's list that are empty (i.e. where none of
6244      the patterns in ``FILES:``\ pkg match any files installed by the
6245      :ref:`ref-tasks-install` task) are not generated,
6246      unless generation is forced through the
6247      :term:`ALLOW_EMPTY` variable.
6248
6249   :term:`PACKAGES_DYNAMIC`
6250      A promise that your recipe satisfies runtime dependencies for
6251      optional modules that are found in other recipes.
6252      :term:`PACKAGES_DYNAMIC` does not actually satisfy the dependencies, it
6253      only states that they should be satisfied. For example, if a hard,
6254      runtime dependency (:term:`RDEPENDS`) of another
6255      package is satisfied at build time through the :term:`PACKAGES_DYNAMIC`
6256      variable, but a package with the module name is never actually
6257      produced, then the other package will be broken. Thus, if you attempt
6258      to include that package in an image, you will get a dependency
6259      failure from the packaging system during the
6260      :ref:`ref-tasks-rootfs` task.
6261
6262      Typically, if there is a chance that such a situation can occur and
6263      the package that is not created is valid without the dependency being
6264      satisfied, then you should use :term:`RRECOMMENDS`
6265      (a soft runtime dependency) instead of :term:`RDEPENDS`.
6266
6267      For an example of how to use the :term:`PACKAGES_DYNAMIC` variable when
6268      you are splitting packages, see the
6269      ":ref:`dev-manual/packages:handling optional module packaging`"
6270      section in the Yocto Project Development Tasks Manual.
6271
6272   :term:`PACKAGESPLITFUNCS`
6273      Specifies a list of functions run to perform additional splitting of
6274      files into individual packages. Recipes can either prepend to this
6275      variable or prepend to the ``populate_packages`` function in order to
6276      perform additional package splitting. In either case, the function
6277      should set :term:`PACKAGES`,
6278      :term:`FILES`, :term:`RDEPENDS` and
6279      other packaging variables appropriately in order to perform the
6280      desired splitting.
6281
6282   :term:`PARALLEL_MAKE`
6283
6284      Extra options passed to the build tool command (``make``,
6285      ``ninja`` or more specific build engines, like the Go language one)
6286      during the :ref:`ref-tasks-compile` task, to specify parallel compilation
6287      on the local build host. This variable is usually in the form "-j x",
6288      where x represents the maximum number of parallel threads such engines
6289      can run.
6290
6291      .. note::
6292
6293         For software compiled by ``make``, in order for :term:`PARALLEL_MAKE`
6294         to be effective, ``make`` must be called with
6295         ``${``\ :term:`EXTRA_OEMAKE`\ ``}``. An easy
6296         way to ensure this is to use the ``oe_runmake`` function.
6297
6298      By default, the OpenEmbedded build system automatically sets this
6299      variable to be equal to the number of cores the build system uses.
6300
6301      .. note::
6302
6303         If the software being built experiences dependency issues during
6304         the :ref:`ref-tasks-compile` task that result in race conditions, you can clear
6305         the :term:`PARALLEL_MAKE` variable within the recipe as a workaround. For
6306         information on addressing race conditions, see the
6307         ":ref:`dev-manual/debugging:debugging parallel make races`"
6308         section in the Yocto Project Development Tasks Manual.
6309
6310      For single socket systems (i.e. one CPU), you should not have to
6311      override this variable to gain optimal parallelism during builds.
6312      However, if you have very large systems that employ multiple physical
6313      CPUs, you might want to make sure the :term:`PARALLEL_MAKE` variable is
6314      not set higher than "-j 20".
6315
6316      For more information on speeding up builds, see the
6317      ":ref:`dev-manual/speeding-up-build:speeding up a build`"
6318      section in the Yocto Project Development Tasks Manual.
6319
6320   :term:`PARALLEL_MAKEINST`
6321      Extra options passed to the build tool install command
6322      (``make install``, ``ninja install`` or more specific ones)
6323      during the :ref:`ref-tasks-install` task in order to specify
6324      parallel installation. This variable defaults to the value of
6325      :term:`PARALLEL_MAKE`.
6326
6327      .. note::
6328
6329         For software compiled by ``make``, in order for :term:`PARALLEL_MAKEINST`
6330         to be effective, ``make`` must be called with
6331         ``${``\ :term:`EXTRA_OEMAKE`\ ``}``. An easy
6332         way to ensure this is to use the ``oe_runmake`` function.
6333
6334         If the software being built experiences dependency issues during
6335         the :ref:`ref-tasks-install` task that result in race conditions, you can
6336         clear the :term:`PARALLEL_MAKEINST` variable within the recipe as a
6337         workaround. For information on addressing race conditions, see the
6338         ":ref:`dev-manual/debugging:debugging parallel make races`"
6339         section in the Yocto Project Development Tasks Manual.
6340
6341   :term:`PATCHRESOLVE`
6342      Determines the action to take when a patch fails. You can set this
6343      variable to one of two values: "noop" and "user".
6344
6345      The default value of "noop" causes the build to simply fail when the
6346      OpenEmbedded build system cannot successfully apply a patch. Setting
6347      the value to "user" causes the build system to launch a shell and
6348      places you in the right location so that you can manually resolve the
6349      conflicts.
6350
6351      Set this variable in your ``local.conf`` file.
6352
6353   :term:`PATCHTOOL`
6354      Specifies the utility used to apply patches for a recipe during the
6355      :ref:`ref-tasks-patch` task. You can specify one of
6356      three utilities: "patch", "quilt", or "git". The default utility used
6357      is "quilt" except for the quilt-native recipe itself. Because the
6358      quilt tool is not available at the time quilt-native is being
6359      patched, it uses "patch".
6360
6361      If you wish to use an alternative patching tool, set the variable in
6362      the recipe using one of the following::
6363
6364         PATCHTOOL = "patch"
6365         PATCHTOOL = "quilt"
6366         PATCHTOOL = "git"
6367
6368   :term:`PE`
6369      The epoch of the recipe. By default, this variable is unset. The
6370      variable is used to make upgrades possible when the versioning scheme
6371      changes in some backwards incompatible way.
6372
6373      :term:`PE` is the default value of the :term:`PKGE` variable.
6374
6375   :term:`PEP517_WHEEL_PATH`
6376      When used by recipes that inherit the :ref:`ref-classes-python_pep517`
6377      class, denotes the path to ``dist/`` (short for distribution) where the
6378      binary archive ``wheel`` is built.
6379
6380   :term:`PERSISTENT_DIR`
6381      See :term:`bitbake:PERSISTENT_DIR` in the BitBake manual.
6382
6383   :term:`PF`
6384      Specifies the recipe or package name and includes all version and
6385      revision numbers (i.e. ``glibc-2.13-r20+svnr15508/`` and
6386      ``bash-4.2-r1/``). This variable is comprised of the following:
6387      ${:term:`PN`}-${:term:`EXTENDPE`}${:term:`PV`}-${:term:`PR`}
6388
6389   :term:`PIXBUF_PACKAGES`
6390      When inheriting the :ref:`ref-classes-pixbufcache`
6391      class, this variable identifies packages that contain the pixbuf
6392      loaders used with ``gdk-pixbuf``. By default, the
6393      :ref:`ref-classes-pixbufcache` class assumes that
6394      the loaders are in the recipe's main package (i.e.
6395      ``${``\ :term:`PN`\ ``}``). Use this variable if the
6396      loaders you need are in a package other than that main package.
6397
6398   :term:`PKG`
6399      The name of the resulting package created by the OpenEmbedded build
6400      system.
6401
6402      .. note::
6403
6404         When using the :term:`PKG` variable, you must use a package name override.
6405
6406      For example, when the :ref:`ref-classes-debian` class renames the output
6407      package, it does so by setting ``PKG:packagename``.
6408
6409   :term:`PKG_CONFIG_PATH`
6410      The path to ``pkg-config`` files for the current build context.
6411      ``pkg-config`` reads this variable from the environment.
6412
6413   :term:`PKGD`
6414      Points to the destination directory for files to be packaged before
6415      they are split into individual packages. This directory defaults to
6416      the following::
6417
6418         ${WORKDIR}/package
6419
6420      Do not change this default.
6421
6422   :term:`PKGDATA_DIR`
6423      Points to a shared, global-state directory that holds data generated
6424      during the packaging process. During the packaging process, the
6425      :ref:`ref-tasks-packagedata` task packages data
6426      for each recipe and installs it into this temporary, shared area.
6427      This directory defaults to the following, which you should not
6428      change::
6429
6430         ${STAGING_DIR_HOST}/pkgdata
6431
6432      For examples of how this data is used, see the
6433      ":ref:`overview-manual/concepts:automatically added runtime dependencies`"
6434      section in the Yocto Project Overview and Concepts Manual and the
6435      ":ref:`dev-manual/debugging:viewing package information with \`\`oe-pkgdata-util\`\``"
6436      section in the Yocto Project Development Tasks Manual. For more
6437      information on the shared, global-state directory, see
6438      :term:`STAGING_DIR_HOST`.
6439
6440   :term:`PKGDEST`
6441      Points to the parent directory for files to be packaged after they
6442      have been split into individual packages. This directory defaults to
6443      the following::
6444
6445         ${WORKDIR}/packages-split
6446
6447      Under this directory, the build system creates directories for each
6448      package specified in :term:`PACKAGES`. Do not change
6449      this default.
6450
6451   :term:`PKGDESTWORK`
6452      Points to a temporary work area where the
6453      :ref:`ref-tasks-package` task saves package metadata.
6454      The :term:`PKGDESTWORK` location defaults to the following::
6455
6456         ${WORKDIR}/pkgdata
6457
6458      Do not change this default.
6459
6460      The :ref:`ref-tasks-packagedata` task copies the
6461      package metadata from :term:`PKGDESTWORK` to
6462      :term:`PKGDATA_DIR` to make it available globally.
6463
6464   :term:`PKGE`
6465      The epoch of the package(s) built by the recipe. By default, :term:`PKGE`
6466      is set to :term:`PE`.
6467
6468   :term:`PKGR`
6469      The revision of the package(s) built by the recipe. By default,
6470      :term:`PKGR` is set to :term:`PR`.
6471
6472   :term:`PKGV`
6473      The version of the package(s) built by the recipe. By default,
6474      :term:`PKGV` is set to :term:`PV`.
6475
6476   :term:`PN`
6477      This variable can have two separate functions depending on the
6478      context: a recipe name or a resulting package name.
6479
6480      :term:`PN` refers to a recipe name in the context of a file used by the
6481      OpenEmbedded build system as input to create a package. The name is
6482      normally extracted from the recipe file name. For example, if the
6483      recipe is named ``expat_2.0.1.bb``, then the default value of :term:`PN`
6484      will be "expat".
6485
6486      The variable refers to a package name in the context of a file
6487      created or produced by the OpenEmbedded build system.
6488
6489      If applicable, the :term:`PN` variable also contains any special suffix
6490      or prefix. For example, using ``bash`` to build packages for the
6491      native machine, :term:`PN` is ``bash-native``. Using ``bash`` to build
6492      packages for the target and for Multilib, :term:`PN` would be ``bash``
6493      and ``lib64-bash``, respectively.
6494
6495   :term:`POPULATE_SDK_POST_HOST_COMMAND`
6496      Specifies a list of functions to call once the OpenEmbedded build
6497      system has created the host part of the SDK. You can specify
6498      functions separated by spaces::
6499
6500          POPULATE_SDK_POST_HOST_COMMAND += "function"
6501
6502      If you need to pass the SDK path to a command within a function, you
6503      can use ``${SDK_DIR}``, which points to the parent directory used by
6504      the OpenEmbedded build system when creating SDK output. See the
6505      :term:`SDK_DIR` variable for more information.
6506
6507   :term:`POPULATE_SDK_POST_TARGET_COMMAND`
6508      Specifies a list of functions to call once the OpenEmbedded build
6509      system has created the target part of the SDK. You can specify
6510      functions separated by spaces::
6511
6512         POPULATE_SDK_POST_TARGET_COMMAND += "function"
6513
6514      If you need to pass the SDK path to a command within a function, you
6515      can use ``${SDK_DIR}``, which points to the parent directory used by
6516      the OpenEmbedded build system when creating SDK output. See the
6517      :term:`SDK_DIR` variable for more information.
6518
6519   :term:`PR`
6520      The revision of the recipe. The default value for this variable is
6521      "r0". Subsequent revisions of the recipe conventionally have the
6522      values "r1", "r2", and so forth. When :term:`PV` increases,
6523      :term:`PR` is conventionally reset to "r0".
6524
6525      .. note::
6526
6527         The OpenEmbedded build system does not need the aid of :term:`PR`
6528         to know when to rebuild a recipe. The build system uses the task
6529         :ref:`input checksums <overview-manual/concepts:checksums (signatures)>` along with the
6530         :ref:`stamp <structure-build-tmp-stamps>` and
6531         :ref:`overview-manual/concepts:shared state cache`
6532         mechanisms.
6533
6534      The :term:`PR` variable primarily becomes significant when a package
6535      manager dynamically installs packages on an already built image. In
6536      this case, :term:`PR`, which is the default value of
6537      :term:`PKGR`, helps the package manager distinguish which
6538      package is the most recent one in cases where many packages have the
6539      same :term:`PV` (i.e. :term:`PKGV`). A component having many packages with
6540      the same :term:`PV` usually means that the packages all install the same
6541      upstream version, but with later (:term:`PR`) version packages including
6542      packaging fixes.
6543
6544      .. note::
6545
6546         :term:`PR` does not need to be increased for changes that do not change the
6547         package contents or metadata.
6548
6549      Because manually managing :term:`PR` can be cumbersome and error-prone,
6550      an automated solution exists. See the
6551      ":ref:`dev-manual/packages:working with a pr service`" section
6552      in the Yocto Project Development Tasks Manual for more information.
6553
6554   :term:`PREFERRED_PROVIDER`
6555      If multiple recipes provide the same item, this variable determines
6556      which recipe is preferred and thus provides the item (i.e. the
6557      preferred provider). You should always suffix this variable with the
6558      name of the provided item. And, you should define the variable using
6559      the preferred recipe's name (:term:`PN`). Here is a common
6560      example::
6561
6562         PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
6563
6564      In the previous example, multiple recipes are providing "virtual/kernel".
6565      The :term:`PREFERRED_PROVIDER` variable is set with the name (:term:`PN`) of
6566      the recipe you prefer to provide "virtual/kernel".
6567
6568      Here are more examples::
6569
6570         PREFERRED_PROVIDER_virtual/xserver = "xserver-xf86"
6571         PREFERRED_PROVIDER_virtual/libgl ?= "mesa"
6572
6573      For more
6574      information, see the ":ref:`dev-manual/new-recipe:using virtual providers`"
6575      section in the Yocto Project Development Tasks Manual.
6576
6577      .. note::
6578
6579         If you use a ``virtual/\*`` item with :term:`PREFERRED_PROVIDER`, then any
6580         recipe that :term:`PROVIDES` that item but is not selected (defined)
6581         by :term:`PREFERRED_PROVIDER` is prevented from building, which is usually
6582         desirable since this mechanism is designed to select between mutually
6583         exclusive alternative providers.
6584
6585   :term:`PREFERRED_PROVIDERS`
6586      See :term:`bitbake:PREFERRED_PROVIDERS` in the BitBake manual.
6587
6588   :term:`PREFERRED_VERSION`
6589      If there are multiple versions of a recipe available, this variable
6590      determines which version should be given preference. You must always
6591      suffix the variable with the :term:`PN` you want to select (`python` in
6592      the first example below), and you should specify the :term:`PV`
6593      accordingly (`3.4.0` in the example).
6594
6595      The :term:`PREFERRED_VERSION` variable supports limited wildcard use
6596      through the "``%``" character. You can use the character to match any
6597      number of characters, which can be useful when specifying versions
6598      that contain long revision numbers that potentially change. Here are
6599      two examples::
6600
6601         PREFERRED_VERSION_python = "3.4.0"
6602         PREFERRED_VERSION_linux-yocto = "5.0%"
6603
6604      .. note::
6605
6606         The use of the "%" character is limited in that it only works at the end of the
6607         string. You cannot use the wildcard character in any other
6608         location of the string.
6609
6610      The specified version is matched against :term:`PV`, which
6611      does not necessarily match the version part of the recipe's filename.
6612      For example, consider two recipes ``foo_1.2.bb`` and ``foo_git.bb``
6613      where ``foo_git.bb`` contains the following assignment::
6614
6615         PV = "1.1+git${SRCPV}"
6616
6617      In this case, the correct way to select
6618      ``foo_git.bb`` is by using an assignment such as the following::
6619
6620         PREFERRED_VERSION_foo = "1.1+git%"
6621
6622      Compare that previous example
6623      against the following incorrect example, which does not work::
6624
6625         PREFERRED_VERSION_foo = "git"
6626
6627      Sometimes the :term:`PREFERRED_VERSION` variable can be set by
6628      configuration files in a way that is hard to change. You can use
6629      :term:`OVERRIDES` to set a machine-specific
6630      override. Here is an example::
6631
6632         PREFERRED_VERSION_linux-yocto:qemux86 = "5.0%"
6633
6634      Although not recommended, worst case, you can also use the
6635      "forcevariable" override, which is the strongest override possible.
6636      Here is an example::
6637
6638         PREFERRED_VERSION_linux-yocto:forcevariable = "5.0%"
6639
6640      .. note::
6641
6642         The ``:forcevariable`` override is not handled specially. This override
6643         only works because the default value of :term:`OVERRIDES` includes "forcevariable".
6644
6645      If a recipe with the specified version is not available, a warning
6646      message will be shown. See :term:`REQUIRED_VERSION` if you want this
6647      to be an error instead.
6648
6649   :term:`PREMIRRORS`
6650      Specifies additional paths from which the OpenEmbedded build system
6651      gets source code. When the build system searches for source code, it
6652      first tries the local download directory. If that location fails, the
6653      build system tries locations defined by :term:`PREMIRRORS`, the upstream
6654      source, and then locations specified by
6655      :term:`MIRRORS` in that order.
6656
6657      The default value for :term:`PREMIRRORS` is defined in the
6658      ``meta/classes-global/mirrors.bbclass`` file in the core metadata layer.
6659
6660      Typically, you could add a specific server for the build system to
6661      attempt before any others by adding something like the following to
6662      the ``local.conf`` configuration file in the
6663      :term:`Build Directory`::
6664
6665         PREMIRRORS:prepend = "\
6666             git://.*/.* &YOCTO_DL_URL;/mirror/sources/ \
6667             ftp://.*/.* &YOCTO_DL_URL;/mirror/sources/ \
6668             http://.*/.* &YOCTO_DL_URL;/mirror/sources/ \
6669             https://.*/.* &YOCTO_DL_URL;/mirror/sources/"
6670
6671      These changes cause the
6672      build system to intercept Git, FTP, HTTP, and HTTPS requests and
6673      direct them to the ``http://`` sources mirror. You can use
6674      ``file://`` URLs to point to local directories or network shares as
6675      well.
6676
6677   :term:`PRIORITY`
6678      Indicates the importance of a package.
6679
6680      :term:`PRIORITY` is considered to be part of the distribution policy
6681      because the importance of any given recipe depends on the purpose for
6682      which the distribution is being produced. Thus, :term:`PRIORITY` is not
6683      normally set within recipes.
6684
6685      You can set :term:`PRIORITY` to "required", "standard", "extra", and
6686      "optional", which is the default.
6687
6688   :term:`PRIVATE_LIBS`
6689      Specifies libraries installed within a recipe that should be ignored
6690      by the OpenEmbedded build system's shared library resolver. This
6691      variable is typically used when software being built by a recipe has
6692      its own private versions of a library normally provided by another
6693      recipe. In this case, you would not want the package containing the
6694      private libraries to be set as a dependency on other unrelated
6695      packages that should instead depend on the package providing the
6696      standard version of the library.
6697
6698      Libraries specified in this variable should be specified by their
6699      file name. For example, from the Firefox recipe in meta-browser::
6700
6701         PRIVATE_LIBS = "libmozjs.so \
6702                         libxpcom.so \
6703                         libnspr4.so \
6704                         libxul.so \
6705                         libmozalloc.so \
6706                         libplc4.so \
6707                         libplds4.so"
6708
6709      For more information, see the
6710      ":ref:`overview-manual/concepts:automatically added runtime dependencies`"
6711      section in the Yocto Project Overview and Concepts Manual.
6712
6713   :term:`PROVIDES`
6714      A list of aliases by which a particular recipe can be known. By
6715      default, a recipe's own :term:`PN` is implicitly already in its
6716      :term:`PROVIDES` list and therefore does not need to mention that it
6717      provides itself. If a recipe uses :term:`PROVIDES`, the additional
6718      aliases are synonyms for the recipe and can be useful for satisfying
6719      dependencies of other recipes during the build as specified by
6720      :term:`DEPENDS`.
6721
6722      Consider the following example :term:`PROVIDES` statement from the recipe
6723      file ``eudev_3.2.9.bb``::
6724
6725         PROVIDES += "udev"
6726
6727      The :term:`PROVIDES` statement
6728      results in the "eudev" recipe also being available as simply "udev".
6729
6730      .. note::
6731
6732         A recipe's own recipe name (:term:`PN`) is always implicitly prepended
6733         to :term:`PROVIDES`, so while using "+=" in the above example may not be
6734         strictly necessary it is recommended to avoid confusion.
6735
6736      In addition to providing recipes under alternate names, the
6737      :term:`PROVIDES` mechanism is also used to implement virtual targets. A
6738      virtual target is a name that corresponds to some particular
6739      functionality (e.g. a Linux kernel). Recipes that provide the
6740      functionality in question list the virtual target in :term:`PROVIDES`.
6741      Recipes that depend on the functionality in question can include the
6742      virtual target in :term:`DEPENDS` to leave the choice of provider open.
6743
6744      Conventionally, virtual targets have names on the form
6745      "virtual/function" (e.g. "virtual/kernel"). The slash is simply part
6746      of the name and has no syntactical significance.
6747
6748      The :term:`PREFERRED_PROVIDER` variable is
6749      used to select which particular recipe provides a virtual target.
6750
6751      .. note::
6752
6753         A corresponding mechanism for virtual runtime dependencies (packages)
6754         exists. However, the mechanism does not depend on any special
6755         functionality beyond ordinary variable assignments. For example,
6756         :term:`VIRTUAL-RUNTIME_dev_manager <VIRTUAL-RUNTIME>` refers to the
6757         package of the component that manages the ``/dev`` directory.
6758
6759         Setting the "preferred provider" for runtime dependencies is as
6760         simple as using the following assignment in a configuration file::
6761
6762                 VIRTUAL-RUNTIME_dev_manager = "udev"
6763
6764
6765   :term:`PRSERV_HOST`
6766      The network based :term:`PR` service host and port.
6767
6768      The ``conf/templates/default/local.conf.sample.extended`` configuration
6769      file in the :term:`Source Directory` shows how the :term:`PRSERV_HOST`
6770      variable is set::
6771
6772         PRSERV_HOST = "localhost:0"
6773
6774      You must
6775      set the variable if you want to automatically start a local :ref:`PR
6776      service <dev-manual/packages:working with a pr service>`. You can
6777      set :term:`PRSERV_HOST` to other values to use a remote PR service.
6778
6779
6780   :term:`PSEUDO_IGNORE_PATHS`
6781      A comma-separated (without spaces) list of path prefixes that should be ignored
6782      by pseudo when monitoring and recording file operations, in order to avoid
6783      problems with files being written to outside of the pseudo context and
6784      reduce pseudo's overhead. A path is ignored if it matches any prefix in the list
6785      and can include partial directory (or file) names.
6786
6787
6788   :term:`PTEST_ENABLED`
6789      Specifies whether or not :ref:`Package
6790      Test <dev-manual/packages:testing packages with ptest>` (ptest)
6791      functionality is enabled when building a recipe. You should not set
6792      this variable directly. Enabling and disabling building Package Tests
6793      at build time should be done by adding "ptest" to (or removing it
6794      from) :term:`DISTRO_FEATURES`.
6795
6796   :term:`PV`
6797      The version of the recipe. The version is normally extracted from the
6798      recipe filename. For example, if the recipe is named
6799      ``expat_2.0.1.bb``, then the default value of :term:`PV` will be "2.0.1".
6800      :term:`PV` is generally not overridden within a recipe unless it is
6801      building an unstable (i.e. development) version from a source code
6802      repository (e.g. Git or Subversion).
6803
6804      :term:`PV` is the default value of the :term:`PKGV` variable.
6805
6806   :term:`PYPI_PACKAGE`
6807      When inheriting the :ref:`ref-classes-pypi` class, specifies the
6808      `PyPI <https://pypi.org/>`__ package name to be built. The default value
6809      is set based upon :term:`BPN` (stripping any "python-" or "python3-"
6810      prefix off if present), however for some packages it will need to be set
6811      explicitly if that will not match the package name (e.g. where the
6812      package name has a prefix, underscores, uppercase letters etc.)
6813
6814   :term:`PYTHON_ABI`
6815      When used by recipes that inherit the :ref:`ref-classes-setuptools3`
6816      class, denotes the Application Binary Interface (ABI) currently in use
6817      for Python. By default, the ABI is "m". You do not have to set this
6818      variable as the OpenEmbedded build system sets it for you.
6819
6820      The OpenEmbedded build system uses the ABI to construct directory
6821      names used when installing the Python headers and libraries in
6822      sysroot (e.g. ``.../python3.3m/...``).
6823
6824   :term:`QA_EMPTY_DIRS`
6825      Specifies a list of directories that are expected to be empty when
6826      packaging; if ``empty-dirs`` appears in :term:`ERROR_QA` or
6827      :term:`WARN_QA` these will be checked and an error or warning
6828      (respectively) will be produced.
6829
6830      The default :term:`QA_EMPTY_DIRS` value is set in
6831      :ref:`insane.bbclass <ref-classes-insane>`.
6832
6833   :term:`QA_EMPTY_DIRS_RECOMMENDATION`
6834      Specifies a recommendation for why a directory must be empty,
6835      which will be included in the error message if a specific directory
6836      is found to contain files. Must be overridden with the directory
6837      path to match on.
6838
6839      If no recommendation is specified for a directory, then the default
6840      "but it is expected to be empty" will be used.
6841
6842      An example message shows if files were present in '/dev'::
6843
6844         QA_EMPTY_DIRS_RECOMMENDATION:/dev = "but all devices must be created at runtime"
6845
6846   :term:`RANLIB`
6847      The minimal command and arguments to run ``ranlib``.
6848
6849   :term:`RCONFLICTS`
6850      The list of packages that conflict with packages. Note that packages
6851      will not be installed if conflicting packages are not first removed.
6852
6853      Like all package-controlling variables, you must always use them in
6854      conjunction with a package name override. Here is an example::
6855
6856         RCONFLICTS:${PN} = "another_conflicting_package_name"
6857
6858      BitBake, which the OpenEmbedded build system uses, supports
6859      specifying versioned dependencies. Although the syntax varies
6860      depending on the packaging format, BitBake hides these differences
6861      from you. Here is the general syntax to specify versions with the
6862      :term:`RCONFLICTS` variable::
6863
6864         RCONFLICTS:${PN} = "package (operator version)"
6865
6866      For ``operator``, you can specify the following:
6867
6868      - =
6869      - <
6870      - >
6871      - <=
6872      - >=
6873
6874      For example, the following sets up a dependency on version 1.2 or
6875      greater of the package ``foo``::
6876
6877         RCONFLICTS:${PN} = "foo (>= 1.2)"
6878
6879   :term:`RDEPENDS`
6880      Lists runtime dependencies of a package. These dependencies are other
6881      packages that must be installed in order for the package to function
6882      correctly. As an example, the following assignment declares that the
6883      package ``foo`` needs the packages ``bar`` and ``baz`` to be
6884      installed::
6885
6886         RDEPENDS:foo = "bar baz"
6887
6888      The most common types of package
6889      runtime dependencies are automatically detected and added. Therefore,
6890      most recipes do not need to set :term:`RDEPENDS`. For more information,
6891      see the
6892      ":ref:`overview-manual/concepts:automatically added runtime dependencies`"
6893      section in the Yocto Project Overview and Concepts Manual.
6894
6895      The practical effect of the above :term:`RDEPENDS` assignment is that
6896      ``bar`` and ``baz`` will be declared as dependencies inside the
6897      package ``foo`` when it is written out by one of the
6898      :ref:`do_package_write_* <ref-tasks-package_write_deb>` tasks.
6899      Exactly how this is done depends on which package format is used,
6900      which is determined by
6901      :term:`PACKAGE_CLASSES`. When the
6902      corresponding package manager installs the package, it will know to
6903      also install the packages on which it depends.
6904
6905      To ensure that the packages ``bar`` and ``baz`` get built, the
6906      previous :term:`RDEPENDS` assignment also causes a task dependency to be
6907      added. This dependency is from the recipe's
6908      :ref:`ref-tasks-build` (not to be confused with
6909      :ref:`ref-tasks-compile`) task to the
6910      :ref:`do_package_write_* <ref-tasks-package_write_deb>` task of the recipes that build ``bar`` and
6911      ``baz``.
6912
6913      The names of the packages you list within :term:`RDEPENDS` must be the
6914      names of other packages --- they cannot be recipe names. Although
6915      package names and recipe names usually match, the important point
6916      here is that you are providing package names within the :term:`RDEPENDS`
6917      variable. For an example of the default list of packages created from
6918      a recipe, see the :term:`PACKAGES` variable.
6919
6920      Because the :term:`RDEPENDS` variable applies to packages being built,
6921      you should always use the variable in a form with an attached package
6922      name (remember that a single recipe can build multiple packages). For
6923      example, suppose you are building a development package that depends
6924      on the ``perl`` package. In this case, you would use the following
6925      :term:`RDEPENDS` statement::
6926
6927         RDEPENDS:${PN}-dev += "perl"
6928
6929      In the example,
6930      the development package depends on the ``perl`` package. Thus, the
6931      :term:`RDEPENDS` variable has the ``${PN}-dev`` package name as part of
6932      the variable.
6933
6934      .. note::
6935
6936         ``RDEPENDS:${PN}-dev`` includes ``${``\ :term:`PN`\ ``}``
6937         by default. This default is set in the BitBake configuration file
6938         (``meta/conf/bitbake.conf``). Be careful not to accidentally remove
6939         ``${PN}`` when modifying ``RDEPENDS:${PN}-dev``. Use the "+=" operator
6940         rather than the "=" operator.
6941
6942      The package names you use with :term:`RDEPENDS` must appear as they would
6943      in the :term:`PACKAGES` variable. The :term:`PKG` variable
6944      allows a different name to be used for the final package (e.g. the
6945      :ref:`ref-classes-debian` class uses this to rename
6946      packages), but this final package name cannot be used with
6947      :term:`RDEPENDS`, which makes sense as :term:`RDEPENDS` is meant to be
6948      independent of the package format used.
6949
6950      BitBake, which the OpenEmbedded build system uses, supports
6951      specifying versioned dependencies. Although the syntax varies
6952      depending on the packaging format, BitBake hides these differences
6953      from you. Here is the general syntax to specify versions with the
6954      :term:`RDEPENDS` variable::
6955
6956         RDEPENDS:${PN} = "package (operator version)"
6957
6958      For ``operator``, you can specify the following:
6959
6960      - =
6961      - <
6962      - >
6963      - <=
6964      - >=
6965
6966      For version, provide the version number.
6967
6968      .. note::
6969
6970         You can use :term:`EXTENDPKGV` to provide a full package version
6971         specification.
6972
6973      For example, the following sets up a dependency on version 1.2 or
6974      greater of the package ``foo``::
6975
6976         RDEPENDS:${PN} = "foo (>= 1.2)"
6977
6978      For information on build-time dependencies, see the :term:`DEPENDS`
6979      variable. You can also see the
6980      ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:tasks`" and
6981      ":ref:`bitbake-user-manual/bitbake-user-manual-execution:dependencies`" sections in the
6982      BitBake User Manual for additional information on tasks and dependencies.
6983
6984   :term:`RECIPE_MAINTAINER`
6985      This variable defines the name and e-mail address of the maintainer of a
6986      recipe. Such information can be used by human users submitted changes,
6987      and by automated tools to send notifications, for example about
6988      vulnerabilities or source updates.
6989
6990      The variable can be defined in a global distribution :oe_git:`maintainers.inc
6991      </openembedded-core/tree/meta/conf/distro/include/maintainers.inc>` file::
6992
6993          meta/conf/distro/include/maintainers.inc:RECIPE_MAINTAINER:pn-sysvinit = "Ross Burton <ross.burton@arm.com>"
6994
6995      It can also be directly defined in a recipe,
6996      for example in the ``libgpiod`` one::
6997
6998          RECIPE_MAINTAINER = "Bartosz Golaszewski <brgl@bgdev.pl>"
6999
7000   :term:`RECIPE_NO_UPDATE_REASON`
7001      If a recipe should not be replaced by a more recent upstream version,
7002      putting the reason why in this variable in a recipe allows
7003      ``devtool check-upgrade-status`` command to display it, as explained
7004      in the ":ref:`ref-manual/devtool-reference:checking on the upgrade status of a recipe`"
7005      section.
7006
7007   :term:`RECIPE_SYSROOT`
7008      This variable points to the directory that holds all files populated from
7009      recipes specified in :term:`DEPENDS`. As the name indicates,
7010      think of this variable as a custom root (``/``) for the recipe that will be
7011      used by the compiler in order to find headers and other files needed to complete
7012      its job.
7013
7014      This variable is related to :term:`STAGING_DIR_HOST` or :term:`STAGING_DIR_TARGET`
7015      according to the type of the recipe and the build target.
7016
7017      To better understand this variable, consider the following examples:
7018
7019      -  For ``#include <header.h>``, ``header.h`` should be in ``"${RECIPE_SYSROOT}/usr/include"``
7020
7021      -  For ``-lexample``, ``libexample.so`` should be in ``"${RECIPE_SYSROOT}/lib"``
7022         or other library sysroot directories.
7023
7024      The default value is ``"${WORKDIR}/recipe-sysroot"``.
7025      Do not modify it.
7026
7027   :term:`RECIPE_SYSROOT_NATIVE`
7028      This is similar to :term:`RECIPE_SYSROOT` but the populated files are from
7029      ``-native`` recipes. This allows a recipe built for the target machine to
7030      use ``native`` tools.
7031
7032      This variable is related to :term:`STAGING_DIR_NATIVE`.
7033
7034      The default value is ``"${WORKDIR}/recipe-sysroot-native"``.
7035      Do not modify it.
7036
7037   :term:`REPODIR`
7038      See :term:`bitbake:REPODIR` in the BitBake manual.
7039
7040   :term:`REQUIRED_DISTRO_FEATURES`
7041      When inheriting the :ref:`ref-classes-features_check`
7042      class, this variable identifies distribution features that must exist
7043      in the current configuration in order for the OpenEmbedded build
7044      system to build the recipe. In other words, if the
7045      :term:`REQUIRED_DISTRO_FEATURES` variable lists a feature that does not
7046      appear in :term:`DISTRO_FEATURES` within the current configuration, then
7047      the recipe will be skipped, and if the build system attempts to build
7048      the recipe then an error will be triggered.
7049
7050   :term:`REQUIRED_VERSION`
7051      If there are multiple versions of a recipe available, this variable
7052      determines which version should be given preference.
7053      :term:`REQUIRED_VERSION` works in exactly the same manner as
7054      :term:`PREFERRED_VERSION`, except that if the specified version is not
7055      available then an error message is shown and the build fails
7056      immediately.
7057
7058      If both :term:`REQUIRED_VERSION` and :term:`PREFERRED_VERSION` are set
7059      for the same recipe, the :term:`REQUIRED_VERSION` value applies.
7060
7061   :term:`RM_WORK_EXCLUDE`
7062      With :ref:`ref-classes-rm-work` enabled, this variable
7063      specifies a list of recipes whose work directories should not be removed.
7064      See the ":ref:`ref-classes-rm-work`" section for more details.
7065
7066   :term:`ROOT_HOME`
7067      Defines the root home directory. By default, this directory is set as
7068      follows in the BitBake configuration file::
7069
7070         ROOT_HOME ??= "/home/root"
7071
7072      .. note::
7073
7074         This default value is likely used because some embedded solutions
7075         prefer to have a read-only root filesystem and prefer to keep
7076         writeable data in one place.
7077
7078      You can override the default by setting the variable in any layer or
7079      in the ``local.conf`` file. Because the default is set using a "weak"
7080      assignment (i.e. "??="), you can use either of the following forms to
7081      define your override::
7082
7083         ROOT_HOME = "/root"
7084         ROOT_HOME ?= "/root"
7085
7086      These
7087      override examples use ``/root``, which is probably the most commonly
7088      used override.
7089
7090   :term:`ROOTFS`
7091      Indicates a filesystem image to include as the root filesystem.
7092
7093      The :term:`ROOTFS` variable is an optional variable used with the
7094      :ref:`ref-classes-image-live` class.
7095
7096   :term:`ROOTFS_POSTINSTALL_COMMAND`
7097      Specifies a list of functions to call after the OpenEmbedded build
7098      system has installed packages. You can specify functions separated by
7099      spaces::
7100
7101         ROOTFS_POSTINSTALL_COMMAND += "function"
7102
7103      If you need to pass the root filesystem path to a command within a
7104      function, you can use ``${IMAGE_ROOTFS}``, which points to the
7105      directory that becomes the root filesystem image. See the
7106      :term:`IMAGE_ROOTFS` variable for more
7107      information.
7108
7109   :term:`ROOTFS_POSTPROCESS_COMMAND`
7110      Specifies a list of functions to call once the OpenEmbedded build
7111      system has created the root filesystem. You can specify functions
7112      separated by spaces::
7113
7114         ROOTFS_POSTPROCESS_COMMAND += "function"
7115
7116      If you need to pass the root filesystem path to a command within a
7117      function, you can use ``${IMAGE_ROOTFS}``, which points to the
7118      directory that becomes the root filesystem image. See the
7119      :term:`IMAGE_ROOTFS` variable for more
7120      information.
7121
7122   :term:`ROOTFS_POSTUNINSTALL_COMMAND`
7123      Specifies a list of functions to call after the OpenEmbedded build
7124      system has removed unnecessary packages. When runtime package
7125      management is disabled in the image, several packages are removed
7126      including ``base-passwd``, ``shadow``, and ``update-alternatives``.
7127      You can specify functions separated by spaces::
7128
7129         ROOTFS_POSTUNINSTALL_COMMAND += "function"
7130
7131      If you need to pass the root filesystem path to a command within a
7132      function, you can use ``${IMAGE_ROOTFS}``, which points to the
7133      directory that becomes the root filesystem image. See the
7134      :term:`IMAGE_ROOTFS` variable for more
7135      information.
7136
7137   :term:`ROOTFS_PREPROCESS_COMMAND`
7138      Specifies a list of functions to call before the OpenEmbedded build
7139      system has created the root filesystem. You can specify functions
7140      separated by spaces::
7141
7142         ROOTFS_PREPROCESS_COMMAND += "function"
7143
7144      If you need to pass the root filesystem path to a command within a
7145      function, you can use ``${IMAGE_ROOTFS}``, which points to the
7146      directory that becomes the root filesystem image. See the
7147      :term:`IMAGE_ROOTFS` variable for more
7148      information.
7149
7150   :term:`RPROVIDES`
7151      A list of package name aliases that a package also provides. These
7152      aliases are useful for satisfying runtime dependencies of other
7153      packages both during the build and on the target (as specified by
7154      :term:`RDEPENDS`).
7155
7156      .. note::
7157
7158         A package's own name is implicitly already in its :term:`RPROVIDES` list.
7159
7160      As with all package-controlling variables, you must always use the
7161      variable in conjunction with a package name override. Here is an
7162      example::
7163
7164         RPROVIDES:${PN} = "widget-abi-2"
7165
7166   :term:`RRECOMMENDS`
7167      A list of packages that extends the usability of a package being
7168      built. The package being built does not depend on this list of
7169      packages in order to successfully build, but rather uses them for
7170      extended usability. To specify runtime dependencies for packages, see
7171      the :term:`RDEPENDS` variable.
7172
7173      The package manager will automatically install the :term:`RRECOMMENDS`
7174      list of packages when installing the built package. However, you can
7175      prevent listed packages from being installed by using the
7176      :term:`BAD_RECOMMENDATIONS`,
7177      :term:`NO_RECOMMENDATIONS`, and
7178      :term:`PACKAGE_EXCLUDE` variables.
7179
7180      Packages specified in :term:`RRECOMMENDS` need not actually be produced.
7181      However, there must be a recipe providing each package, either
7182      through the :term:`PACKAGES` or
7183      :term:`PACKAGES_DYNAMIC` variables or the
7184      :term:`RPROVIDES` variable, or an error will occur
7185      during the build. If such a recipe does exist and the package is not
7186      produced, the build continues without error.
7187
7188      Because the :term:`RRECOMMENDS` variable applies to packages being built,
7189      you should always attach an override to the variable to specify the
7190      particular package whose usability is being extended. For example,
7191      suppose you are building a development package that is extended to
7192      support wireless functionality. In this case, you would use the
7193      following::
7194
7195         RRECOMMENDS:${PN}-dev += "wireless_package_name"
7196
7197      In the
7198      example, the package name (``${PN}-dev``) must appear as it would in
7199      the :term:`PACKAGES` namespace before any renaming of the output package
7200      by classes such as :ref:`ref-classes-debian`.
7201
7202      BitBake, which the OpenEmbedded build system uses, supports
7203      specifying versioned recommends. Although the syntax varies depending
7204      on the packaging format, BitBake hides these differences from you.
7205      Here is the general syntax to specify versions with the
7206      :term:`RRECOMMENDS` variable::
7207
7208         RRECOMMENDS:${PN} = "package (operator version)"
7209
7210      For ``operator``, you can specify the following:
7211
7212      - =
7213      - <
7214      - >
7215      - <=
7216      - >=
7217
7218      For example, the following sets up a recommend on version 1.2 or
7219      greater of the package ``foo``::
7220
7221         RRECOMMENDS:${PN} = "foo (>= 1.2)"
7222
7223   :term:`RREPLACES`
7224      A list of packages replaced by a package. The package manager uses
7225      this variable to determine which package should be installed to
7226      replace other package(s) during an upgrade. In order to also have the
7227      other package(s) removed at the same time, you must add the name of
7228      the other package to the :term:`RCONFLICTS` variable.
7229
7230      As with all package-controlling variables, you must use this variable
7231      in conjunction with a package name override. Here is an example::
7232
7233         RREPLACES:${PN} = "other_package_being_replaced"
7234
7235      BitBake, which the OpenEmbedded build system uses, supports
7236      specifying versioned replacements. Although the syntax varies
7237      depending on the packaging format, BitBake hides these differences
7238      from you. Here is the general syntax to specify versions with the
7239      :term:`RREPLACES` variable::
7240
7241         RREPLACES:${PN} = "package (operator version)"
7242
7243      For ``operator``, you can specify the following:
7244
7245      - =
7246      - <
7247      - >
7248      - <=
7249      - >=
7250
7251      For example, the following sets up a replacement using version 1.2
7252      or greater of the package ``foo``::
7253
7254          RREPLACES:${PN} = "foo (>= 1.2)"
7255
7256   :term:`RSUGGESTS`
7257      A list of additional packages that you can suggest for installation
7258      by the package manager at the time a package is installed. Not all
7259      package managers support this functionality.
7260
7261      As with all package-controlling variables, you must always use this
7262      variable in conjunction with a package name override. Here is an
7263      example::
7264
7265         RSUGGESTS:${PN} = "useful_package another_package"
7266
7267   :term:`RUST_CHANNEL`
7268      Specifies which version of Rust to build - "stable", "beta" or "nightly".
7269      The default value is "stable". Set this at your own risk, as values other
7270      than "stable" are not guaranteed to work at a given time.
7271
7272   :term:`S`
7273      The location in the :term:`Build Directory` where
7274      unpacked recipe source code resides. By default, this directory is
7275      ``${``\ :term:`WORKDIR`\ ``}/${``\ :term:`BPN`\ ``}-${``\ :term:`PV`\ ``}``,
7276      where ``${BPN}`` is the base recipe name and ``${PV}`` is the recipe
7277      version. If the source tarball extracts the code to a directory named
7278      anything other than ``${BPN}-${PV}``, or if the source code is
7279      fetched from an SCM such as Git or Subversion, then you must set
7280      :term:`S` in the recipe so that the OpenEmbedded build system knows where
7281      to find the unpacked source.
7282
7283      As an example, assume a :term:`Source Directory`
7284      top-level folder named ``poky`` and a default :term:`Build Directory` at
7285      ``poky/build``. In this case, the work directory the build system
7286      uses to keep the unpacked recipe for ``db`` is the following::
7287
7288         poky/build/tmp/work/qemux86-poky-linux/db/5.1.19-r3/db-5.1.19
7289
7290      The unpacked source code resides in the ``db-5.1.19`` folder.
7291
7292      This next example assumes a Git repository. By default, Git
7293      repositories are cloned to ``${WORKDIR}/git`` during
7294      :ref:`ref-tasks-fetch`. Since this path is different
7295      from the default value of :term:`S`, you must set it specifically so the
7296      source can be located::
7297
7298         SRC_URI = "git://path/to/repo.git;branch=main"
7299         S = "${WORKDIR}/git"
7300
7301   :term:`SANITY_REQUIRED_UTILITIES`
7302      Specifies a list of command-line utilities that should be checked for
7303      during the initial sanity checking process when running BitBake. If
7304      any of the utilities are not installed on the build host, then
7305      BitBake immediately exits with an error.
7306
7307   :term:`SANITY_TESTED_DISTROS`
7308      A list of the host distribution identifiers that the build system has
7309      been tested against. Identifiers consist of the host distributor ID
7310      followed by the release, as reported by the ``lsb_release`` tool or
7311      as read from ``/etc/lsb-release``. Separate the list items with
7312      explicit newline characters (``\n``). If :term:`SANITY_TESTED_DISTROS` is
7313      not empty and the current value of
7314      :term:`NATIVELSBSTRING` does not appear in the
7315      list, then the build system reports a warning that indicates the
7316      current host distribution has not been tested as a build host.
7317
7318   :term:`SDK_ARCH`
7319      The target architecture for the SDK. Typically, you do not directly
7320      set this variable. Instead, use :term:`SDKMACHINE`.
7321
7322   :term:`SDK_ARCHIVE_TYPE`
7323      Specifies the type of archive to create for the SDK. Valid values:
7324
7325      - ``tar.xz`` (default)
7326      - ``zip``
7327
7328      Only one archive type can be specified.
7329
7330   :term:`SDK_BUILDINFO_FILE`
7331      When using the :ref:`ref-classes-image-buildinfo` class,
7332      specifies the file in the SDK to write the build information into. The
7333      default value is "``/buildinfo``".
7334
7335   :term:`SDK_CUSTOM_TEMPLATECONF`
7336      When building the extensible SDK, if :term:`SDK_CUSTOM_TEMPLATECONF` is set to
7337      "1" and a ``conf/templateconf.cfg`` file exists in the :term:`Build Directory`
7338      (:term:`TOPDIR`) then this will be copied into the SDK.
7339
7340   :term:`SDK_DEPLOY`
7341      The directory set up and used by the
7342      :ref:`populate_sdk_base <ref-classes-populate-sdk>` class to which the
7343      SDK is deployed. The :ref:`populate_sdk_base <ref-classes-populate-sdk>`
7344      class defines :term:`SDK_DEPLOY` as follows::
7345
7346         SDK_DEPLOY = "${TMPDIR}/deploy/sdk"
7347
7348   :term:`SDK_DIR`
7349      The parent directory used by the OpenEmbedded build system when
7350      creating SDK output. The
7351      :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class defines
7352      the variable as follows::
7353
7354         SDK_DIR = "${WORKDIR}/sdk"
7355
7356      .. note::
7357
7358         The :term:`SDK_DIR` directory is a temporary directory as it is part of
7359         :term:`WORKDIR`. The final output directory is :term:`SDK_DEPLOY`.
7360
7361   :term:`SDK_EXT_TYPE`
7362      Controls whether or not shared state artifacts are copied into the
7363      extensible SDK. The default value of "full" copies all of the
7364      required shared state artifacts into the extensible SDK. The value
7365      "minimal" leaves these artifacts out of the SDK.
7366
7367      .. note::
7368
7369         If you set the variable to "minimal", you need to ensure
7370         :term:`SSTATE_MIRRORS` is set in the SDK's configuration to enable the
7371         artifacts to be fetched as needed.
7372
7373   :term:`SDK_HOST_MANIFEST`
7374      The manifest file for the host part of the SDK. This file lists all
7375      the installed packages that make up the host part of the SDK. The
7376      file contains package information on a line-per-package basis as
7377      follows::
7378
7379         packagename packagearch version
7380
7381      The :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class
7382      defines the manifest file as follows::
7383
7384         SDK_HOST_MANIFEST = "${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.host.manifest"
7385
7386      The location is derived using the :term:`SDK_DEPLOY` and
7387      :term:`TOOLCHAIN_OUTPUTNAME` variables.
7388
7389   :term:`SDK_INCLUDE_PKGDATA`
7390      When set to "1", specifies to include the packagedata for all recipes
7391      in the "world" target in the extensible SDK. Including this data
7392      allows the ``devtool search`` command to find these recipes in search
7393      results, as well as allows the ``devtool add`` command to map
7394      dependencies more effectively.
7395
7396      .. note::
7397
7398         Enabling the :term:`SDK_INCLUDE_PKGDATA`
7399         variable significantly increases build time because all of world
7400         needs to be built. Enabling the variable also slightly increases
7401         the size of the extensible SDK.
7402
7403   :term:`SDK_INCLUDE_TOOLCHAIN`
7404      When set to "1", specifies to include the toolchain in the extensible
7405      SDK. Including the toolchain is useful particularly when
7406      :term:`SDK_EXT_TYPE` is set to "minimal" to keep
7407      the SDK reasonably small but you still want to provide a usable
7408      toolchain. For example, suppose you want to use the toolchain from an
7409      IDE or from other tools and you do not want to perform additional
7410      steps to install the toolchain.
7411
7412      The :term:`SDK_INCLUDE_TOOLCHAIN` variable defaults to "0" if
7413      :term:`SDK_EXT_TYPE` is set to "minimal", and defaults to "1" if
7414      :term:`SDK_EXT_TYPE` is set to "full".
7415
7416   :term:`SDK_NAME`
7417      The base name for SDK output files. The default value (as set in
7418      ``meta-poky/conf/distro/poky.conf``) is derived from the
7419      :term:`DISTRO`,
7420      :term:`TCLIBC`,
7421      :term:`SDKMACHINE`,
7422      :term:`IMAGE_BASENAME`,
7423      :term:`TUNE_PKGARCH`, and
7424      :term:`MACHINE` variables::
7425
7426         SDK_NAME = "${DISTRO}-${TCLIBC}-${SDKMACHINE}-${IMAGE_BASENAME}-${TUNE_PKGARCH}-${MACHINE}"
7427
7428   :term:`SDK_OS`
7429      Specifies the operating system for which the SDK will be built. The
7430      default value is the value of :term:`BUILD_OS`.
7431
7432   :term:`SDK_OUTPUT`
7433      The location used by the OpenEmbedded build system when creating SDK
7434      output. The :ref:`populate_sdk_base <ref-classes-populate-sdk-*>`
7435      class defines the variable as follows::
7436
7437         SDK_DIR = "${WORKDIR}/sdk"
7438         SDK_OUTPUT = "${SDK_DIR}/image"
7439         SDK_DEPLOY = "${DEPLOY_DIR}/sdk"
7440
7441      .. note::
7442
7443         The :term:`SDK_OUTPUT` directory is a temporary directory as it is part of
7444         :term:`WORKDIR` by way of :term:`SDK_DIR`. The final output directory is
7445         :term:`SDK_DEPLOY`.
7446
7447   :term:`SDK_PACKAGE_ARCHS`
7448      Specifies a list of architectures compatible with the SDK machine.
7449      This variable is set automatically and should not normally be
7450      hand-edited. Entries are separated using spaces and listed in order
7451      of priority. The default value for :term:`SDK_PACKAGE_ARCHS` is "all any
7452      noarch ${SDK_ARCH}-${SDKPKGSUFFIX}".
7453
7454   :term:`SDK_POSTPROCESS_COMMAND`
7455      Specifies a list of functions to call once the OpenEmbedded build
7456      system creates the SDK. You can specify functions separated by
7457      spaces:
7458
7459         SDK_POSTPROCESS_COMMAND += "function"
7460
7461      If you need to pass an SDK path to a command within a function, you
7462      can use ``${SDK_DIR}``, which points to the parent directory used by
7463      the OpenEmbedded build system when creating SDK output. See the
7464      :term:`SDK_DIR` variable for more information.
7465
7466   :term:`SDK_PREFIX`
7467      The toolchain binary prefix used for
7468      :ref:`ref-classes-nativesdk` recipes. The
7469      OpenEmbedded build system uses the :term:`SDK_PREFIX` value to set the
7470      :term:`TARGET_PREFIX` when building
7471      ``nativesdk`` recipes. The default value is "${SDK_SYS}-".
7472
7473   :term:`SDK_RECRDEP_TASKS`
7474      A list of shared state tasks added to the extensible SDK. By default,
7475      the following tasks are added:
7476
7477      - :ref:`ref-tasks-populate_lic`
7478      - :ref:`ref-tasks-package_qa`
7479      - :ref:`ref-tasks-populate_sysroot`
7480      - :ref:`ref-tasks-deploy`
7481
7482      Despite the default value of "" for the
7483      :term:`SDK_RECRDEP_TASKS` variable, the above four tasks are always added
7484      to the SDK. To specify tasks beyond these four, you need to use the
7485      :term:`SDK_RECRDEP_TASKS` variable (e.g. you are defining additional
7486      tasks that are needed in order to build
7487      :term:`SDK_TARGETS`).
7488
7489   :term:`SDK_SYS`
7490      Specifies the system, including the architecture and the operating
7491      system, for which the SDK will be built.
7492
7493      The OpenEmbedded build system automatically sets this variable based
7494      on :term:`SDK_ARCH`,
7495      :term:`SDK_VENDOR`, and
7496      :term:`SDK_OS`. You do not need to set the :term:`SDK_SYS`
7497      variable yourself.
7498
7499   :term:`SDK_TARGET_MANIFEST`
7500      The manifest file for the target part of the SDK. This file lists all
7501      the installed packages that make up the target part of the SDK. The
7502      file contains package information on a line-per-package basis as
7503      follows::
7504
7505         packagename packagearch version
7506
7507      The :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class
7508      defines the manifest file as follows::
7509
7510         SDK_TARGET_MANIFEST = "${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.target.manifest"
7511
7512      The location is derived using the :term:`SDK_DEPLOY` and
7513      :term:`TOOLCHAIN_OUTPUTNAME` variables.
7514
7515   :term:`SDK_TARGETS`
7516      A list of targets to install from shared state as part of the
7517      standard or extensible SDK installation. The default value is "${PN}"
7518      (i.e. the image from which the SDK is built).
7519
7520      The :term:`SDK_TARGETS` variable is an internal variable and typically
7521      would not be changed.
7522
7523   :term:`SDK_TITLE`
7524      The title to be printed when running the SDK installer. By default,
7525      this title is based on the :term:`DISTRO_NAME` or
7526      :term:`DISTRO` variable and is set in the
7527      :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class as
7528      follows::
7529
7530         SDK_TITLE ??= "${@d.getVar('DISTRO_NAME') or d.getVar('DISTRO')} SDK"
7531
7532      For the default distribution "poky",
7533      :term:`SDK_TITLE` is set to "Poky (Yocto Project Reference Distro)".
7534
7535      For information on how to change this default title, see the
7536      ":ref:`sdk-manual/appendix-customizing:changing the extensible sdk installer title`"
7537      section in the Yocto Project Application Development and the
7538      Extensible Software Development Kit (eSDK) manual.
7539
7540   :term:`SDK_TOOLCHAIN_LANGS`
7541      Specifies programming languages to support in the SDK, as a
7542      space-separated list. Currently supported items are ``rust`` and ``go``.
7543
7544   :term:`SDK_UPDATE_URL`
7545      An optional URL for an update server for the extensible SDK. If set,
7546      the value is used as the default update server when running
7547      ``devtool sdk-update`` within the extensible SDK.
7548
7549   :term:`SDK_VENDOR`
7550      Specifies the name of the SDK vendor.
7551
7552   :term:`SDK_VERSION`
7553      Specifies the version of the SDK. The Poky distribution configuration file
7554      (``/meta-poky/conf/distro/poky.conf``) sets the default
7555      :term:`SDK_VERSION` as follows::
7556
7557         SDK_VERSION = "${@d.getVar('DISTRO_VERSION').replace('snapshot-${METADATA_REVISION}', 'snapshot')}"
7558
7559      For additional information, see the
7560      :term:`DISTRO_VERSION` and
7561      :term:`METADATA_REVISION` variables.
7562
7563   :term:`SDK_ZIP_OPTIONS`
7564      Specifies extra options to pass to the ``zip`` command when zipping the SDK
7565      (i.e. when :term:`SDK_ARCHIVE_TYPE` is set to "zip"). The default value is
7566      "-y".
7567
7568   :term:`SDKEXTPATH`
7569      The default installation directory for the Extensible SDK. By
7570      default, this directory is based on the :term:`DISTRO`
7571      variable and is set in the
7572      :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class as
7573      follows::
7574
7575         SDKEXTPATH ??= "~/${@d.getVar('DISTRO')}_sdk"
7576
7577      For the
7578      default distribution "poky", the :term:`SDKEXTPATH` is set to "poky_sdk".
7579
7580      For information on how to change this default directory, see the
7581      ":ref:`sdk-manual/appendix-customizing:changing the default sdk installation directory`"
7582      section in the Yocto Project Application Development and the
7583      Extensible Software Development Kit (eSDK) manual.
7584
7585   :term:`SDKIMAGE_FEATURES`
7586      Equivalent to :term:`IMAGE_FEATURES`. However, this variable applies to
7587      the SDK generated from an image using the following command::
7588
7589         $ bitbake -c populate_sdk imagename
7590
7591   :term:`SDKMACHINE`
7592      The machine for which the SDK is built. In other words, the SDK is built
7593      such that it runs on the target you specify with the :term:`SDKMACHINE`
7594      value. The value points to a corresponding ``.conf`` file under
7595      ``conf/machine-sdk/`` in the enabled layers, for example ``aarch64``,
7596      ``i586``, ``i686``, ``ppc64``, ``ppc64le``, and ``x86_64`` are
7597      :oe_git:`available in OpenEmbedded-Core </openembedded-core/tree/meta/conf/machine-sdk>`.
7598
7599      The variable defaults to :term:`BUILD_ARCH` so that SDKs are built for the
7600      architecture of the build machine.
7601
7602      .. note::
7603
7604         You cannot set the :term:`SDKMACHINE`
7605         variable in your distribution configuration file. If you do, the
7606         configuration will not take effect.
7607
7608   :term:`SDKPATH`
7609      Defines the path used to collect the SDK components and build the
7610      installer.
7611
7612   :term:`SDKPATHINSTALL`
7613      Defines the path offered to the user for installation of the SDK that
7614      is generated by the OpenEmbedded build system. The path appears as
7615      the default location for installing the SDK when you run the SDK's
7616      installation script. You can override the offered path when you run
7617      the script.
7618
7619   :term:`SDKTARGETSYSROOT`
7620      The full path to the sysroot used for cross-compilation within an SDK
7621      as it will be when installed into the default
7622      :term:`SDKPATHINSTALL`.
7623
7624   :term:`SECTION`
7625      The section in which packages should be categorized. Package
7626      management utilities can make use of this variable.
7627
7628   :term:`SELECTED_OPTIMIZATION`
7629      Specifies the optimization flags passed to the C compiler when
7630      building for the target. The flags are passed through the default
7631      value of the :term:`TARGET_CFLAGS` variable.
7632
7633      The :term:`SELECTED_OPTIMIZATION` variable takes the value of
7634      :term:`FULL_OPTIMIZATION` unless :term:`DEBUG_BUILD` = "1", in which
7635      case the value of :term:`DEBUG_OPTIMIZATION` is used.
7636
7637   :term:`SERIAL_CONSOLES`
7638      Defines a serial console (TTY) to enable using
7639      :wikipedia:`getty <Getty_(Unix)>`. Provide a value that specifies the
7640      baud rate followed by the TTY device name separated by a semicolon.
7641      Use spaces to separate multiple devices::
7642
7643         SERIAL_CONSOLES = "115200;ttyS0 115200;ttyS1"
7644
7645   :term:`SETUPTOOLS_BUILD_ARGS`
7646      When used by recipes that inherit the :ref:`ref-classes-setuptools3`
7647      class, this variable can be used to specify additional arguments to be
7648      passed to ``setup.py build`` in the ``setuptools3_do_compile()`` task.
7649
7650   :term:`SETUPTOOLS_INSTALL_ARGS`
7651      When used by recipes that inherit the :ref:`ref-classes-setuptools3`
7652      class, this variable can be used to specify additional arguments to be
7653      passed to ``setup.py install`` in the ``setuptools3_do_install()`` task.
7654
7655   :term:`SETUPTOOLS_SETUP_PATH`
7656      When used by recipes that inherit the :ref:`ref-classes-setuptools3`
7657      class, this variable should be used to specify the directory in which
7658      the ``setup.py`` file is located if it is not at the root of the source
7659      tree (as specified by :term:`S`). For example, in a recipe where the
7660      sources are fetched from a Git repository and ``setup.py`` is in a
7661      ``python/pythonmodule`` subdirectory, you would have this::
7662
7663         S = "${WORKDIR}/git"
7664         SETUPTOOLS_SETUP_PATH = "${S}/python/pythonmodule"
7665
7666   :term:`SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS`
7667      A list of recipe dependencies that should not be used to determine
7668      signatures of tasks from one recipe when they depend on tasks from
7669      another recipe. For example::
7670
7671         SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += "intone->mplayer2"
7672
7673      In the previous example, ``intone`` depends on ``mplayer2``.
7674
7675      You can use the special token ``"*"`` on the left-hand side of the
7676      dependency to match all recipes except the one on the right-hand
7677      side. Here is an example::
7678
7679         SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += "*->quilt-native"
7680
7681      In the previous example, all recipes except ``quilt-native`` ignore
7682      task signatures from the ``quilt-native`` recipe when determining
7683      their task signatures.
7684
7685      Use of this variable is one mechanism to remove dependencies that
7686      affect task signatures and thus force rebuilds when a recipe changes.
7687
7688      .. note::
7689
7690         If you add an inappropriate dependency for a recipe relationship,
7691         the software might break during runtime if the interface of the
7692         second recipe was changed after the first recipe had been built.
7693
7694   :term:`SIGGEN_EXCLUDERECIPES_ABISAFE`
7695      A list of recipes that are completely stable and will never change.
7696      The ABI for the recipes in the list are presented by output from the
7697      tasks run to build the recipe. Use of this variable is one way to
7698      remove dependencies from one recipe on another that affect task
7699      signatures and thus force rebuilds when the recipe changes.
7700
7701      .. note::
7702
7703         If you add an inappropriate variable to this list, the software
7704         might break at runtime if the interface of the recipe was changed
7705         after the other had been built.
7706
7707   :term:`SITEINFO_BITS`
7708      Specifies the number of bits for the target system CPU. The value
7709      should be either "32" or "64".
7710
7711   :term:`SITEINFO_ENDIANNESS`
7712      Specifies the endian byte order of the target system. The value
7713      should be either "le" for little-endian or "be" for big-endian.
7714
7715   :term:`SKIP_FILEDEPS`
7716      Enables removal of all files from the "Provides" section of an RPM
7717      package. Removal of these files is required for packages containing
7718      prebuilt binaries and libraries such as ``libstdc++`` and ``glibc``.
7719
7720      To enable file removal, set the variable to "1" in your
7721      ``conf/local.conf`` configuration file in your:
7722      :term:`Build Directory`::
7723
7724         SKIP_FILEDEPS = "1"
7725
7726   :term:`SKIP_RECIPE`
7727      Used to prevent the OpenEmbedded build system from building a given
7728      recipe. Specify the :term:`PN` value as a variable flag (``varflag``)
7729      and provide a reason, which will be reported when attempting to
7730      build the recipe.
7731
7732      To prevent a recipe from being built, use the :term:`SKIP_RECIPE`
7733      variable in your ``local.conf`` file or distribution configuration.
7734      Here is an example which prevents ``myrecipe`` from being built::
7735
7736         SKIP_RECIPE[myrecipe] = "Not supported by our organization."
7737
7738   :term:`SOC_FAMILY`
7739      A colon-separated list grouping together machines based upon the same
7740      family of SoC (System On Chip). You typically set this variable in a
7741      common ``.inc`` file that you include in the configuration files of all
7742      the machines.
7743
7744      .. note::
7745
7746         You must include ``conf/machine/include/soc-family.inc`` for this
7747         variable to appear in :term:`MACHINEOVERRIDES`.
7748
7749   :term:`SOLIBS`
7750      Defines the suffix for shared libraries used on the target platform.
7751      By default, this suffix is ".so.*" for all Linux-based systems and is
7752      defined in the ``meta/conf/bitbake.conf`` configuration file.
7753
7754      You will see this variable referenced in the default values of
7755      ``FILES:${PN}``.
7756
7757   :term:`SOLIBSDEV`
7758      Defines the suffix for the development symbolic link (symlink) for
7759      shared libraries on the target platform. By default, this suffix is
7760      ".so" for Linux-based systems and is defined in the
7761      ``meta/conf/bitbake.conf`` configuration file.
7762
7763      You will see this variable referenced in the default values of
7764      ``FILES:${PN}-dev``.
7765
7766   :term:`SOURCE_DATE_EPOCH`
7767      This defines a date expressed in number of seconds since
7768      the UNIX EPOCH (01 Jan 1970 00:00:00 UTC), which is used by
7769      multiple build systems to force a timestamp in built binaries.
7770      Many upstream projects already support this variable.
7771
7772      You will find more details in the `official specifications
7773      <https://reproducible-builds.org/specs/source-date-epoch/>`__.
7774
7775      A value for each recipe is computed from the sources by
7776      :oe_git:`meta/lib/oe/reproducible.py </openembedded-core/tree/meta/lib/oe/reproducible.py>`.
7777
7778      If a recipe wishes to override the default behavior, it should set its
7779      own :term:`SOURCE_DATE_EPOCH` value::
7780
7781          SOURCE_DATE_EPOCH = "1613559011"
7782
7783   :term:`SOURCE_MIRROR_FETCH`
7784      When you are fetching files to create a mirror of sources (i.e.
7785      creating a source mirror), setting :term:`SOURCE_MIRROR_FETCH` to "1" in
7786      your ``local.conf`` configuration file ensures the source for all
7787      recipes are fetched regardless of whether or not a recipe is
7788      compatible with the configuration. A recipe is considered
7789      incompatible with the currently configured machine when either or
7790      both the :term:`COMPATIBLE_MACHINE`
7791      variable and :term:`COMPATIBLE_HOST` variables
7792      specify compatibility with a machine other than that of the current
7793      machine or host.
7794
7795      .. note::
7796
7797         Do not set the :term:`SOURCE_MIRROR_FETCH`
7798         variable unless you are creating a source mirror. In other words,
7799         do not set the variable during a normal build.
7800
7801   :term:`SOURCE_MIRROR_URL`
7802      Defines your own :term:`PREMIRRORS` from which to
7803      first fetch source before attempting to fetch from the upstream
7804      specified in :term:`SRC_URI`.
7805
7806      To use this variable, you must globally inherit the
7807      :ref:`ref-classes-own-mirrors` class and then provide
7808      the URL to your mirrors. Here is the general syntax::
7809
7810         INHERIT += "own-mirrors"
7811         SOURCE_MIRROR_URL = "http://example.com/my_source_mirror"
7812
7813      .. note::
7814
7815         You can specify only a single URL in :term:`SOURCE_MIRROR_URL`.
7816
7817   :term:`SPDX_ARCHIVE_PACKAGED`
7818      This option allows to add to :term:`SPDX` output compressed archives
7819      of the files in the generated target packages.
7820
7821      Such archives are available in
7822      ``tmp/deploy/spdx/MACHINE/packages/packagename.tar.zst``
7823      under the :term:`Build Directory`.
7824
7825      Enable this option as follows::
7826
7827         SPDX_ARCHIVE_PACKAGED = "1"
7828
7829      According to our tests on release 4.1 "langdale", building
7830      ``core-image-minimal`` for the ``qemux86-64`` machine, enabling this
7831      option multiplied the size of the ``tmp/deploy/spdx`` directory by a
7832      factor of 13 (+1.6 GiB for this image), compared to just using the
7833      :ref:`ref-classes-create-spdx` class with no option.
7834
7835      Note that this option doesn't increase the size of :term:`SPDX`
7836      files in ``tmp/deploy/images/MACHINE``.
7837
7838   :term:`SPDX_ARCHIVE_SOURCES`
7839      This option allows to add to :term:`SPDX` output compressed archives
7840      of the sources for packages installed on the target. It currently
7841      only works when :term:`SPDX_INCLUDE_SOURCES` is set.
7842
7843      This is one way of fulfilling "source code access" license
7844      requirements.
7845
7846      Such source archives are available in
7847      ``tmp/deploy/spdx/MACHINE/recipes/recipe-packagename.tar.zst``
7848      under the :term:`Build Directory`.
7849
7850      Enable this option as follows::
7851
7852         SPDX_INCLUDE_SOURCES = "1"
7853         SPDX_ARCHIVE_SOURCES = "1"
7854
7855      According to our tests on release 4.1 "langdale", building
7856      ``core-image-minimal`` for the ``qemux86-64`` machine, enabling
7857      these options multiplied the size of the ``tmp/deploy/spdx``
7858      directory by a factor of 11 (+1.4 GiB for this image),
7859      compared to just using the :ref:`ref-classes-create-spdx`
7860      class with no option.
7861
7862      Note that using this option only marginally increases the size
7863      of the :term:`SPDX` output in ``tmp/deploy/images/MACHINE/``
7864      (+ 0.07\% with the tested image), compared to just enabling
7865      :term:`SPDX_INCLUDE_SOURCES`.
7866
7867   :term:`SPDX_CUSTOM_ANNOTATION_VARS`
7868      This option allows to associate `SPDX annotations
7869      <https://spdx.github.io/spdx-spec/v2.3/annotations/>`__ to a recipe,
7870      using the values of variables in the recipe::
7871
7872         ANNOTATION1 = "First annotation for recipe"
7873         ANNOTATION2 = "Second annotation for recipe"
7874         SPDX_CUSTOM_ANNOTATION_VARS = "ANNOTATION1 ANNOTATION2"
7875
7876      This will add a new block to the recipe ``.sdpx.json`` output::
7877
7878         "annotations": [
7879           {
7880             "annotationDate": "2023-04-18T08:32:12Z",
7881             "annotationType": "OTHER",
7882             "annotator": "Tool: oe-spdx-creator - 1.0",
7883             "comment": "ANNOTATION1=First annotation for recipe"
7884           },
7885           {
7886             "annotationDate": "2023-04-18T08:32:12Z",
7887             "annotationType": "OTHER",
7888             "annotator": "Tool: oe-spdx-creator - 1.0",
7889             "comment": "ANNOTATION2=Second annotation for recipe"
7890           }
7891         ],
7892
7893   :term:`SPDX_INCLUDE_SOURCES`
7894      This option allows to add a description of the source files used to build
7895      the host tools and the target packages, to the ``spdx.json`` files in
7896      ``tmp/deploy/spdx/MACHINE/recipes/`` under the :term:`Build Directory`.
7897      As a consequence, the ``spdx.json`` files under the ``by-namespace`` and
7898      ``packages`` subdirectories in ``tmp/deploy/spdx/MACHINE`` are also
7899      modified to include references to such source file descriptions.
7900
7901      Enable this option as follows::
7902
7903         SPDX_INCLUDE_SOURCES = "1"
7904
7905      According to our tests on release 4.1 "langdale", building
7906      ``core-image-minimal`` for the ``qemux86-64`` machine, enabling
7907      this option multiplied the total size of the ``tmp/deploy/spdx``
7908      directory by a factor of 3  (+291 MiB for this image),
7909      and the size of the ``IMAGE-MACHINE.spdx.tar.zst`` in
7910      ``tmp/deploy/images/MACHINE`` by a factor of 130 (+15 MiB for this
7911      image), compared to just using the :ref:`ref-classes-create-spdx` class
7912      with no option.
7913
7914   :term:`SPDX_NAMESPACE_PREFIX`
7915      This option could be used in order to change the prefix of ``spdxDocument``
7916      and the prefix of ``documentNamespace``. It is set by default to
7917      ``http://spdx.org/spdxdoc``.
7918
7919   :term:`SPDX_PRETTY`
7920      This option makes the SPDX output more human-readable, using
7921      identation and newlines, instead of the default output in a
7922      single line::
7923
7924         SPDX_PRETTY = "1"
7925
7926      The generated SPDX files are approximately 20% bigger, but
7927      this option is recommended if you want to inspect the SPDX
7928      output files with a text editor.
7929
7930   :term:`SPDXLICENSEMAP`
7931      Maps commonly used license names to their SPDX counterparts found in
7932      ``meta/files/common-licenses/``. For the default :term:`SPDXLICENSEMAP`
7933      mappings, see the ``meta/conf/licenses.conf`` file.
7934
7935      For additional information, see the :term:`LICENSE`
7936      variable.
7937
7938   :term:`SPECIAL_PKGSUFFIX`
7939      A list of prefixes for :term:`PN` used by the OpenEmbedded
7940      build system to create variants of recipes or packages. The list
7941      specifies the prefixes to strip off during certain circumstances such
7942      as the generation of the :term:`BPN` variable.
7943
7944   :term:`SPL_BINARY`
7945      The file type for the Secondary Program Loader (SPL). Some devices
7946      use an SPL from which to boot (e.g. the BeagleBone development
7947      board). For such cases, you can declare the file type of the SPL
7948      binary in the ``u-boot.inc`` include file, which is used in the
7949      U-Boot recipe.
7950
7951      The SPL file type is set to "null" by default in the ``u-boot.inc``
7952      file as follows::
7953
7954         # Some versions of u-boot build an SPL (Second Program Loader) image that
7955         # should be packaged along with the u-boot binary as well as placed in the
7956         # deploy directory. For those versions they can set the following variables
7957         # to allow packaging the SPL.
7958         SPL_BINARY ?= ""
7959         SPL_BINARYNAME ?= "${@os.path.basename(d.getVar("SPL_BINARY"))}"
7960         SPL_IMAGE ?= "${SPL_BINARYNAME}-${MACHINE}-${PV}-${PR}"
7961         SPL_SYMLINK ?= "${SPL_BINARYNAME}-${MACHINE}"
7962
7963      The :term:`SPL_BINARY` variable helps form
7964      various ``SPL_*`` variables used by the OpenEmbedded build system.
7965
7966      See the BeagleBone machine configuration example in the
7967      ":ref:`dev-manual/layers:adding a layer using the \`\`bitbake-layers\`\` script`"
7968      section in the Yocto Project Board Support Package Developer's Guide
7969      for additional information.
7970
7971   :term:`SPL_MKIMAGE_DTCOPTS`
7972      Options for the device tree compiler passed to ``mkimage -D`` feature
7973      while creating a FIT image with the :ref:`ref-classes-uboot-sign`
7974      class. If :term:`SPL_MKIMAGE_DTCOPTS` is not set then the
7975      :ref:`ref-classes-uboot-sign` class will not pass the ``-D`` option
7976      to ``mkimage``.
7977
7978      The default value is set to "" by the :ref:`ref-classes-uboot-config`
7979      class.
7980
7981   :term:`SPL_SIGN_ENABLE`
7982      Enable signing of the U-Boot FIT image. The default value is "0".
7983      This variable is used by the :ref:`ref-classes-uboot-sign` class.
7984
7985   :term:`SPL_SIGN_KEYDIR`
7986      Location of the directory containing the RSA key and certificate used for
7987      signing the U-Boot FIT image, used by the :ref:`ref-classes-uboot-sign`
7988      class.
7989
7990   :term:`SPL_SIGN_KEYNAME`
7991      The name of keys used by the :ref:`ref-classes-kernel-fitimage` class
7992      for signing U-Boot FIT image stored in the :term:`SPL_SIGN_KEYDIR`
7993      directory. If we have for example a ``dev.key`` key and a ``dev.crt``
7994      certificate stored in the :term:`SPL_SIGN_KEYDIR` directory, you will
7995      have to set :term:`SPL_SIGN_KEYNAME` to ``dev``.
7996
7997   :term:`SPLASH`
7998      This variable, used by the :ref:`ref-classes-image` class, allows
7999      to choose splashscreen applications. Set it to the names of packages
8000      for such applications to use. This variable is set by default to
8001      ``psplash``.
8002
8003   :term:`SPLASH_IMAGES`
8004      This variable, used by the ``psplash`` recipe, allows to customize
8005      the default splashscreen image.
8006
8007      Specified images in PNG format are converted to ``.h`` files by the recipe,
8008      and are included in the ``psplash`` binary, so you won't find them in
8009      the root filesystem.
8010
8011      To make such a change, it is recommended to customize the
8012      ``psplash`` recipe in a custom layer. Here is an example structure for
8013      an ``ACME`` board::
8014
8015          meta-acme/recipes-core/psplash
8016          ├── files
8017          │   └── logo-acme.png
8018          └── psplash_%.bbappend
8019
8020      And here are the contents of the ``psplash_%.bbappend`` file in
8021      this example::
8022
8023          SPLASH_IMAGES = "file://logo-acme.png;outsuffix=default"
8024          FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
8025
8026      You could even add specific configuration options for ``psplash``,
8027      for example::
8028
8029          EXTRA_OECONF += "--disable-startup-msg --enable-img-fullscreen"
8030
8031      For information on append files, see the
8032      ":ref:`dev-manual/layers:appending other layers metadata with your layer`"
8033      section.
8034
8035   :term:`SRCREV_FORMAT`
8036      See :term:`bitbake:SRCREV_FORMAT` in the BitBake manual.
8037
8038   :term:`SRC_URI`
8039
8040      See the BitBake manual for the initial description for this variable:
8041      :term:`bitbake:SRC_URI`.
8042
8043      The following features are added by OpenEmbedded and the Yocto Project.
8044
8045      There are standard and recipe-specific options. Here are standard ones:
8046
8047      -  ``apply`` --- whether to apply the patch or not. The default
8048         action is to apply the patch.
8049
8050      -  ``striplevel`` --- which striplevel to use when applying the
8051         patch. The default level is 1.
8052
8053      -  ``patchdir`` --- specifies the directory in which the patch should
8054         be applied. The default is ``${``\ :term:`S`\ ``}``.
8055
8056      Here are options specific to recipes building code from a revision
8057      control system:
8058
8059      -  ``mindate`` --- apply the patch only if
8060         :term:`SRCDATE` is equal to or greater than
8061         ``mindate``.
8062
8063      -  ``maxdate`` --- apply the patch only if :term:`SRCDATE` is not later
8064         than ``maxdate``.
8065
8066      -  ``minrev`` --- apply the patch only if :term:`SRCREV` is equal to or
8067         greater than ``minrev``.
8068
8069      -  ``maxrev`` --- apply the patch only if :term:`SRCREV` is not later
8070         than ``maxrev``.
8071
8072      -  ``rev`` --- apply the patch only if :term:`SRCREV` is equal to
8073         ``rev``.
8074
8075      -  ``notrev`` --- apply the patch only if :term:`SRCREV` is not equal to
8076         ``rev``.
8077
8078      .. note::
8079
8080         If you want the build system to pick up files specified through
8081         a :term:`SRC_URI` statement from your append file, you need to be
8082         sure to extend the :term:`FILESPATH` variable by also using the
8083         :term:`FILESEXTRAPATHS` variable from within your append file.
8084
8085   :term:`SRC_URI_OVERRIDES_PACKAGE_ARCH`
8086      By default, the OpenEmbedded build system automatically detects
8087      whether :term:`SRC_URI` contains files that are machine-specific. If so,
8088      the build system automatically changes :term:`PACKAGE_ARCH`. Setting this
8089      variable to "0" disables this behavior.
8090
8091   :term:`SRCDATE`
8092      The date of the source code used to build the package. This variable
8093      applies only if the source was fetched from a Source Code Manager
8094      (SCM).
8095
8096   :term:`SRCPV`
8097      Returns the version string of the current package. This string is
8098      used to help define the value of :term:`PV`.
8099
8100      The :term:`SRCPV` variable is defined in the ``meta/conf/bitbake.conf``
8101      configuration file in the :term:`Source Directory` as
8102      follows::
8103
8104         SRCPV = "${@bb.fetch2.get_srcrev(d)}"
8105
8106      Recipes that need to define :term:`PV` do so with the help of the
8107      :term:`SRCPV`. For example, the ``ofono`` recipe (``ofono_git.bb``)
8108      located in ``meta/recipes-connectivity`` in the Source Directory
8109      defines :term:`PV` as follows::
8110
8111         PV = "0.12-git${SRCPV}"
8112
8113   :term:`SRCREV`
8114      The revision of the source code used to build the package. This
8115      variable applies to Subversion, Git, Mercurial, and Bazaar only. Note
8116      that if you want to build a fixed revision and you want to avoid
8117      performing a query on the remote repository every time BitBake parses
8118      your recipe, you should specify a :term:`SRCREV` that is a full revision
8119      identifier (e.g. the full SHA hash in git) and not just a tag.
8120
8121      .. note::
8122
8123         For information on limitations when inheriting the latest revision
8124         of software using :term:`SRCREV`, see the :term:`AUTOREV` variable
8125         description and the
8126         ":ref:`dev-manual/packages:automatically incrementing a package version number`"
8127         section, which is in the Yocto Project Development Tasks Manual.
8128
8129   :term:`SRCTREECOVEREDTASKS`
8130      A list of tasks that are typically not relevant (and therefore skipped)
8131      when building using the :ref:`ref-classes-externalsrc`
8132      class. The default value as set in that class file is the set of tasks
8133      that are rarely needed when using external source::
8134
8135         SRCTREECOVEREDTASKS ?= "do_patch do_unpack do_fetch"
8136
8137      The notable exception is when processing external kernel source as
8138      defined in the :ref:`ref-classes-kernel-yocto` class file (formatted for
8139      aesthetics)::
8140
8141         SRCTREECOVEREDTASKS += "\
8142           do_validate_branches \
8143           do_kernel_configcheck \
8144           do_kernel_checkout \
8145           do_fetch \
8146           do_unpack \
8147           do_patch \
8148         "
8149
8150      See the associated :term:`EXTERNALSRC` and :term:`EXTERNALSRC_BUILD`
8151      variables for more information.
8152
8153   :term:`SSTATE_DIR`
8154      The directory for the shared state cache.
8155
8156   :term:`SSTATE_EXCLUDEDEPS_SYSROOT`
8157      This variable allows to specify indirect dependencies to exclude
8158      from sysroots, for example to avoid the situations when a dependency on
8159      any ``-native`` recipe will pull in all dependencies of that recipe
8160      in the recipe sysroot. This behaviour might not always be wanted,
8161      for example when that ``-native`` recipe depends on build tools
8162      that are not relevant for the current recipe.
8163
8164      This way, irrelevant dependencies are ignored, which could have
8165      prevented the reuse of prebuilt artifacts stored in the Shared
8166      State Cache.
8167
8168      :term:`SSTATE_EXCLUDEDEPS_SYSROOT` is evaluated as two regular
8169      expressions of recipe and dependency to ignore. An example
8170      is the rule in :oe_git:`meta/conf/layer.conf </openembedded-core/tree/meta/conf/layer.conf>`::
8171
8172         # Nothing needs to depend on libc-initial
8173         # base-passwd/shadow-sysroot don't need their dependencies
8174         SSTATE_EXCLUDEDEPS_SYSROOT += "\
8175             .*->.*-initial.* \
8176             .*(base-passwd|shadow-sysroot)->.* \
8177         "
8178
8179      The ``->`` substring represents the dependency between
8180      the two regular expressions.
8181
8182   :term:`SSTATE_MIRROR_ALLOW_NETWORK`
8183      If set to "1", allows fetches from mirrors that are specified in
8184      :term:`SSTATE_MIRRORS` to work even when
8185      fetching from the network is disabled by setting :term:`BB_NO_NETWORK` to
8186      "1". Using the :term:`SSTATE_MIRROR_ALLOW_NETWORK` variable is useful if
8187      you have set :term:`SSTATE_MIRRORS` to point to an internal server for
8188      your shared state cache, but you want to disable any other fetching
8189      from the network.
8190
8191   :term:`SSTATE_MIRRORS`
8192      Configures the OpenEmbedded build system to search other mirror
8193      locations for prebuilt cache data objects before building out the
8194      data. This variable works like fetcher :term:`MIRRORS`
8195      and :term:`PREMIRRORS` and points to the cache
8196      locations to check for the shared state (sstate) objects.
8197
8198      You can specify a filesystem directory or a remote URL such as HTTP
8199      or FTP. The locations you specify need to contain the shared state
8200      cache (sstate-cache) results from previous builds. The sstate-cache
8201      you point to can also be from builds on other machines.
8202
8203      When pointing to sstate build artifacts on another machine that uses
8204      a different GCC version for native builds, you must configure
8205      :term:`SSTATE_MIRRORS` with a regular expression that maps local search
8206      paths to server paths. The paths need to take into account
8207      :term:`NATIVELSBSTRING` set by the :ref:`ref-classes-uninative` class.
8208      For example, the following maps the local search path ``universal-4.9``
8209      to the server-provided path server_url_sstate_path::
8210
8211         SSTATE_MIRRORS ?= "file://universal-4.9/(.*) https://server_url_sstate_path/universal-4.8/\1"
8212
8213      If a mirror uses the same structure as
8214      :term:`SSTATE_DIR`, you need to add "PATH" at the
8215      end as shown in the examples below. The build system substitutes the
8216      correct path within the directory structure::
8217
8218         SSTATE_MIRRORS ?= "\
8219             file://.* https://someserver.tld/share/sstate/PATH;downloadfilename=PATH \
8220             file://.* file:///some-local-dir/sstate/PATH"
8221
8222      The Yocto Project actually shares the cache data objects built by its
8223      autobuilder::
8224
8225         SSTATE_MIRRORS ?= "file://.* http://cdn.jsdelivr.net/yocto/sstate/all/PATH;downloadfilename=PATH"
8226
8227      As such binary artifacts are built for the generic QEMU machines
8228      supported by the various Poky releases, they are less likely to be
8229      reusable in real projects building binaries optimized for a specific
8230      CPU family.
8231
8232   :term:`SSTATE_SCAN_FILES`
8233      Controls the list of files the OpenEmbedded build system scans for
8234      hardcoded installation paths. The variable uses a space-separated
8235      list of filenames (not paths) with standard wildcard characters
8236      allowed.
8237
8238      During a build, the OpenEmbedded build system creates a shared state
8239      (sstate) object during the first stage of preparing the sysroots.
8240      That object is scanned for hardcoded paths for original installation
8241      locations. The list of files that are scanned for paths is controlled
8242      by the :term:`SSTATE_SCAN_FILES` variable. Typically, recipes add files
8243      they want to be scanned to the value of :term:`SSTATE_SCAN_FILES` rather
8244      than the variable being comprehensively set. The
8245      :ref:`ref-classes-sstate` class specifies the default list of files.
8246
8247      For details on the process, see the :ref:`ref-classes-staging` class.
8248
8249   :term:`STAGING_BASE_LIBDIR_NATIVE`
8250      Specifies the path to the ``/lib`` subdirectory of the sysroot
8251      directory for the build host.
8252
8253   :term:`STAGING_BASELIBDIR`
8254      Specifies the path to the ``/lib`` subdirectory of the sysroot
8255      directory for the target for which the current recipe is being built
8256      (:term:`STAGING_DIR_HOST`).
8257
8258   :term:`STAGING_BINDIR`
8259      Specifies the path to the ``/usr/bin`` subdirectory of the sysroot
8260      directory for the target for which the current recipe is being built
8261      (:term:`STAGING_DIR_HOST`).
8262
8263   :term:`STAGING_BINDIR_CROSS`
8264      Specifies the path to the directory containing binary configuration
8265      scripts. These scripts provide configuration information for other
8266      software that wants to make use of libraries or include files
8267      provided by the software associated with the script.
8268
8269      .. note::
8270
8271         This style of build configuration has been largely replaced by
8272         ``pkg-config``. Consequently, if ``pkg-config`` is supported by the
8273         library to which you are linking, it is recommended you use
8274         ``pkg-config`` instead of a provided configuration script.
8275
8276   :term:`STAGING_BINDIR_NATIVE`
8277      Specifies the path to the ``/usr/bin`` subdirectory of the sysroot
8278      directory for the build host.
8279
8280   :term:`STAGING_DATADIR`
8281      Specifies the path to the ``/usr/share`` subdirectory of the sysroot
8282      directory for the target for which the current recipe is being built
8283      (:term:`STAGING_DIR_HOST`).
8284
8285   :term:`STAGING_DATADIR_NATIVE`
8286      Specifies the path to the ``/usr/share`` subdirectory of the sysroot
8287      directory for the build host.
8288
8289   :term:`STAGING_DIR`
8290      Helps construct the ``recipe-sysroots`` directory, which is used
8291      during packaging.
8292
8293      For information on how staging for recipe-specific sysroots occurs,
8294      see the :ref:`ref-tasks-populate_sysroot`
8295      task, the ":ref:`sdk-manual/extensible:sharing files between recipes`"
8296      section in the Yocto Project Development Tasks Manual, the
8297      ":ref:`overview-manual/concepts:configuration, compilation, and staging`"
8298      section in the Yocto Project Overview and Concepts Manual, and the
8299      :term:`SYSROOT_DIRS` variable.
8300
8301      .. note::
8302
8303         Recipes should never write files directly under the :term:`STAGING_DIR`
8304         directory because the OpenEmbedded build system manages the
8305         directory automatically. Instead, files should be installed to
8306         ``${``\ :term:`D`\ ``}`` within your recipe's :ref:`ref-tasks-install`
8307         task and then the OpenEmbedded build system will stage a subset of
8308         those files into the sysroot.
8309
8310   :term:`STAGING_DIR_HOST`
8311      Specifies the path to the sysroot directory for the system on which
8312      the component is built to run (the system that hosts the component).
8313      For most recipes, this sysroot is the one in which that recipe's
8314      :ref:`ref-tasks-populate_sysroot` task copies
8315      files. Exceptions include ``-native`` recipes, where the
8316      :ref:`ref-tasks-populate_sysroot` task instead uses
8317      :term:`STAGING_DIR_NATIVE`. Depending on
8318      the type of recipe and the build target, :term:`STAGING_DIR_HOST` can
8319      have the following values:
8320
8321      -  For recipes building for the target machine, the value is
8322         "${:term:`STAGING_DIR`}/${:term:`MACHINE`}".
8323
8324      -  For native recipes building for the build host, the value is empty
8325         given the assumption that when building for the build host, the
8326         build host's own directories should be used.
8327
8328         .. note::
8329
8330            ``-native`` recipes are not installed into host paths like such
8331            as ``/usr``. Rather, these recipes are installed into
8332            :term:`STAGING_DIR_NATIVE`. When compiling ``-native`` recipes,
8333            standard build environment variables such as
8334            :term:`CPPFLAGS` and
8335            :term:`CFLAGS` are set up so that both host paths
8336            and :term:`STAGING_DIR_NATIVE` are searched for libraries and
8337            headers using, for example, GCC's ``-isystem`` option.
8338
8339            Thus, the emphasis is that the ``STAGING_DIR*`` variables
8340            should be viewed as input variables by tasks such as
8341            :ref:`ref-tasks-configure`,
8342            :ref:`ref-tasks-compile`, and
8343            :ref:`ref-tasks-install`. Having the real system
8344            root correspond to :term:`STAGING_DIR_HOST` makes conceptual sense
8345            for ``-native`` recipes, as they make use of host headers and
8346            libraries.
8347
8348      Check :term:`RECIPE_SYSROOT` and :term:`RECIPE_SYSROOT_NATIVE`.
8349
8350   :term:`STAGING_DIR_NATIVE`
8351      Specifies the path to the sysroot directory used when building
8352      components that run on the build host itself.
8353
8354      The default value is ``"${RECIPE_SYSROOT_NATIVE}"``,
8355      check :term:`RECIPE_SYSROOT_NATIVE`.
8356
8357   :term:`STAGING_DIR_TARGET`
8358      Specifies the path to the sysroot used for the system for which the
8359      component generates code. For components that do not generate code,
8360      which is the majority, :term:`STAGING_DIR_TARGET` is set to match
8361      :term:`STAGING_DIR_HOST`.
8362
8363      Some recipes build binaries that can run on the target system but those
8364      binaries in turn generate code for another different system (e.g.
8365      :ref:`ref-classes-cross-canadian` recipes). Using terminology from GNU,
8366      the primary system is referred to as the "HOST" and the secondary, or
8367      different, system is referred to as the "TARGET". Thus, the binaries
8368      run on the "HOST" system and generate binaries for the "TARGET"
8369      system. The :term:`STAGING_DIR_HOST` variable points to the sysroot used
8370      for the "HOST" system, while :term:`STAGING_DIR_TARGET` points to the
8371      sysroot used for the "TARGET" system.
8372
8373   :term:`STAGING_ETCDIR_NATIVE`
8374      Specifies the path to the ``/etc`` subdirectory of the sysroot
8375      directory for the build host.
8376
8377   :term:`STAGING_EXECPREFIXDIR`
8378      Specifies the path to the ``/usr`` subdirectory of the sysroot
8379      directory for the target for which the current recipe is being built
8380      (:term:`STAGING_DIR_HOST`).
8381
8382   :term:`STAGING_INCDIR`
8383      Specifies the path to the ``/usr/include`` subdirectory of the
8384      sysroot directory for the target for which the current recipe being
8385      built (:term:`STAGING_DIR_HOST`).
8386
8387   :term:`STAGING_INCDIR_NATIVE`
8388      Specifies the path to the ``/usr/include`` subdirectory of the
8389      sysroot directory for the build host.
8390
8391   :term:`STAGING_KERNEL_BUILDDIR`
8392      Points to the directory containing the kernel build artifacts.
8393      Recipes building software that needs to access kernel build artifacts
8394      (e.g. ``systemtap-uprobes``) can look in the directory specified with
8395      the :term:`STAGING_KERNEL_BUILDDIR` variable to find these artifacts
8396      after the kernel has been built.
8397
8398   :term:`STAGING_KERNEL_DIR`
8399      The directory with kernel headers that are required to build
8400      out-of-tree modules.
8401
8402   :term:`STAGING_LIBDIR`
8403      Specifies the path to the ``/usr/lib`` subdirectory of the sysroot
8404      directory for the target for which the current recipe is being built
8405      (:term:`STAGING_DIR_HOST`).
8406
8407   :term:`STAGING_LIBDIR_NATIVE`
8408      Specifies the path to the ``/usr/lib`` subdirectory of the sysroot
8409      directory for the build host.
8410
8411   :term:`STAMP`
8412      Specifies the base path used to create recipe stamp files. The path
8413      to an actual stamp file is constructed by evaluating this string and
8414      then appending additional information. Currently, the default
8415      assignment for :term:`STAMP` as set in the ``meta/conf/bitbake.conf``
8416      file is::
8417
8418         STAMP = "${STAMPS_DIR}/${MULTIMACH_TARGET_SYS}/${PN}/${EXTENDPE}${PV}-${PR}"
8419
8420      For information on how BitBake uses stamp files to determine if a
8421      task should be rerun, see the
8422      ":ref:`overview-manual/concepts:stamp files and the rerunning of tasks`"
8423      section in the Yocto Project Overview and Concepts Manual.
8424
8425      See :term:`STAMPS_DIR`,
8426      :term:`MULTIMACH_TARGET_SYS`,
8427      :term:`PN`, :term:`EXTENDPE`,
8428      :term:`PV`, and :term:`PR` for related variable
8429      information.
8430
8431   :term:`STAMPCLEAN`
8432      See :term:`bitbake:STAMPCLEAN` in the BitBake manual.
8433
8434   :term:`STAMPS_DIR`
8435      Specifies the base directory in which the OpenEmbedded build system
8436      places stamps. The default directory is ``${TMPDIR}/stamps``.
8437
8438   :term:`STRIP`
8439      The minimal command and arguments to run ``strip``, which is used to
8440      strip symbols.
8441
8442   :term:`SUMMARY`
8443      The short (72 characters or less) summary of the binary package for
8444      packaging systems such as ``opkg``, ``rpm``, or ``dpkg``. By default,
8445      :term:`SUMMARY` is used to define the
8446      :term:`DESCRIPTION` variable if :term:`DESCRIPTION` is
8447      not set in the recipe.
8448
8449   :term:`SVNDIR`
8450      The directory in which files checked out of a Subversion system are
8451      stored.
8452
8453   :term:`SYSLINUX_DEFAULT_CONSOLE`
8454      Specifies the kernel boot default console. If you want to use a
8455      console other than the default, set this variable in your recipe as
8456      follows where "X" is the console number you want to use::
8457
8458         SYSLINUX_DEFAULT_CONSOLE = "console=ttyX"
8459
8460      The :ref:`ref-classes-syslinux` class initially sets
8461      this variable to null but then checks for a value later.
8462
8463   :term:`SYSLINUX_OPTS`
8464      Lists additional options to add to the syslinux file. You need to set
8465      this variable in your recipe. If you want to list multiple options,
8466      separate the options with a semicolon character (``;``).
8467
8468      The :ref:`ref-classes-syslinux` class uses this variable
8469      to create a set of options.
8470
8471   :term:`SYSLINUX_SERIAL`
8472      Specifies the alternate serial port or turns it off. To turn off
8473      serial, set this variable to an empty string in your recipe. The
8474      variable's default value is set in the
8475      :ref:`ref-classes-syslinux` class as follows::
8476
8477         SYSLINUX_SERIAL ?= "0 115200"
8478
8479      The class checks for and uses the variable as needed.
8480
8481   :term:`SYSLINUX_SERIAL_TTY`
8482      Specifies the alternate console=tty... kernel boot argument. The
8483      variable's default value is set in the :ref:`ref-classes-syslinux`
8484      class as follows::
8485
8486         SYSLINUX_SERIAL_TTY ?= "console=ttyS0,115200"
8487
8488      The class checks for and uses the variable as needed.
8489
8490   :term:`SYSLINUX_SPLASH`
8491      An ``.LSS`` file used as the background for the VGA boot menu when
8492      you use the boot menu. You need to set this variable in your recipe.
8493
8494      The :ref:`ref-classes-syslinux` class checks for this
8495      variable and if found, the OpenEmbedded build system installs the
8496      splash screen.
8497
8498   :term:`SYSROOT_DESTDIR`
8499      Points to the temporary directory under the work directory (default
8500      "``${``\ :term:`WORKDIR`\ ``}/sysroot-destdir``")
8501      where the files populated into the sysroot are assembled during the
8502      :ref:`ref-tasks-populate_sysroot` task.
8503
8504   :term:`SYSROOT_DIRS`
8505      Directories that are staged into the sysroot by the
8506      :ref:`ref-tasks-populate_sysroot` task. By
8507      default, the following directories are staged::
8508
8509         SYSROOT_DIRS = " \
8510             ${includedir} \
8511             ${libdir} \
8512             ${base_libdir} \
8513             ${nonarch_base_libdir} \
8514             ${datadir} \
8515             /sysroot-only \
8516             "
8517
8518   :term:`SYSROOT_DIRS_IGNORE`
8519      Directories that are not staged into the sysroot by the
8520      :ref:`ref-tasks-populate_sysroot` task. You
8521      can use this variable to exclude certain subdirectories of
8522      directories listed in :term:`SYSROOT_DIRS` from
8523      staging. By default, the following directories are not staged::
8524
8525         SYSROOT_DIRS_IGNORE = " \
8526             ${mandir} \
8527             ${docdir} \
8528             ${infodir} \
8529             ${datadir}/X11/locale \
8530             ${datadir}/applications \
8531             ${datadir}/bash-completion \
8532             ${datadir}/fonts \
8533             ${datadir}/gtk-doc/html \
8534             ${datadir}/installed-tests \
8535             ${datadir}/locale \
8536             ${datadir}/pixmaps \
8537             ${datadir}/terminfo \
8538             ${libdir}/${BPN}/ptest \
8539             "
8540
8541      Consider the following example in which you need to manipulate this variable.
8542      Assume you have a recipe ``A`` that provides a shared library ``.so.*`` that is
8543      installed into a custom folder other than "``${libdir}``"
8544      or "``${base_libdir}``", let's say "``/opt/lib``".
8545
8546      .. note::
8547
8548         This is not a recommended way to deal with shared libraries, but this
8549         is just to show the usefulness of setting :term:`SYSROOT_DIRS`.
8550
8551      When a recipe ``B`` :term:`DEPENDS` on ``A``, it means what is in
8552      :term:`SYSROOT_DIRS` will be copied from :term:`D` of the recipe ``B``
8553      into ``B``'s :term:`SYSROOT_DESTDIR` that is "``${WORKDIR}/sysroot-destdir``".
8554
8555      Now, since ``/opt/lib`` is not in :term:`SYSROOT_DIRS`, it will never be copied to
8556      ``A``'s :term:`RECIPE_SYSROOT`, which is "``${WORKDIR}/recipe-sysroot``". So,
8557      the linking process will fail.
8558
8559      To fix this, you need to add ``/opt/lib`` to :term:`SYSROOT_DIRS`::
8560
8561         SYSROOT_DIRS:append = " /opt/lib"
8562
8563      .. note::
8564         Even after setting ``/opt/lib`` to :term:`SYSROOT_DIRS`, the linking process will still fail
8565         because the linker does not know that location, since :term:`TARGET_LDFLAGS`
8566         doesn't contain it (if your recipe is for the target). Therefore, so you should add::
8567
8568            TARGET_LDFLAGS:append = " -L${RECIPE_SYSROOT}/opt/lib"
8569
8570   :term:`SYSROOT_DIRS_NATIVE`
8571      Extra directories staged into the sysroot by the
8572      :ref:`ref-tasks-populate_sysroot` task for
8573      ``-native`` recipes, in addition to those specified in
8574      :term:`SYSROOT_DIRS`. By default, the following
8575      extra directories are staged::
8576
8577         SYSROOT_DIRS_NATIVE = " \
8578             ${bindir} \
8579             ${sbindir} \
8580             ${base_bindir} \
8581             ${base_sbindir} \
8582             ${libexecdir} \
8583             ${sysconfdir} \
8584             ${localstatedir} \
8585             "
8586
8587      .. note::
8588
8589         Programs built by ``-native`` recipes run directly from the sysroot
8590         (:term:`STAGING_DIR_NATIVE`), which is why additional directories
8591         containing program executables and supporting files need to be staged.
8592
8593   :term:`SYSROOT_PREPROCESS_FUNCS`
8594      A list of functions to execute after files are staged into the
8595      sysroot. These functions are usually used to apply additional
8596      processing on the staged files, or to stage additional files.
8597
8598   :term:`SYSTEMD_AUTO_ENABLE`
8599      When inheriting the :ref:`ref-classes-systemd` class,
8600      this variable specifies whether the specified service in
8601      :term:`SYSTEMD_SERVICE` should start
8602      automatically or not. By default, the service is enabled to
8603      automatically start at boot time. The default setting is in the
8604      :ref:`ref-classes-systemd` class as follows::
8605
8606         SYSTEMD_AUTO_ENABLE ??= "enable"
8607
8608      You can disable the service by setting the variable to "disable".
8609
8610   :term:`SYSTEMD_BOOT_CFG`
8611      When :term:`EFI_PROVIDER` is set to
8612      "systemd-boot", the :term:`SYSTEMD_BOOT_CFG` variable specifies the
8613      configuration file that should be used. By default, the
8614      :ref:`ref-classes-systemd-boot` class sets the
8615      :term:`SYSTEMD_BOOT_CFG` as follows::
8616
8617         SYSTEMD_BOOT_CFG ?= "${S}/loader.conf"
8618
8619      For information on Systemd-boot, see the `Systemd-boot
8620      documentation <https://www.freedesktop.org/wiki/Software/systemd/systemd-boot/>`__.
8621
8622   :term:`SYSTEMD_BOOT_ENTRIES`
8623      When :term:`EFI_PROVIDER` is set to
8624      "systemd-boot", the :term:`SYSTEMD_BOOT_ENTRIES` variable specifies a
8625      list of entry files (``*.conf``) to install that contain one boot
8626      entry per file. By default, the :ref:`ref-classes-systemd-boot` class
8627      sets the :term:`SYSTEMD_BOOT_ENTRIES` as follows::
8628
8629          SYSTEMD_BOOT_ENTRIES ?= ""
8630
8631      For information on Systemd-boot, see the `Systemd-boot
8632      documentation <https://www.freedesktop.org/wiki/Software/systemd/systemd-boot/>`__.
8633
8634   :term:`SYSTEMD_BOOT_TIMEOUT`
8635      When :term:`EFI_PROVIDER` is set to
8636      "systemd-boot", the :term:`SYSTEMD_BOOT_TIMEOUT` variable specifies the
8637      boot menu timeout in seconds. By default, the
8638      :ref:`ref-classes-systemd-boot` class sets the
8639      :term:`SYSTEMD_BOOT_TIMEOUT` as follows::
8640
8641         SYSTEMD_BOOT_TIMEOUT ?= "10"
8642
8643      For information on Systemd-boot, see the `Systemd-boot
8644      documentation <https://www.freedesktop.org/wiki/Software/systemd/systemd-boot/>`__.
8645
8646   :term:`SYSTEMD_DEFAULT_TARGET`
8647
8648      This variable allows to set the default unit that systemd starts at bootup.
8649      Usually, this is either ``multi-user.target`` or ``graphical.target``.
8650      This works by creating a ``default.target`` symbolic link to the chosen systemd
8651      target file.
8652
8653      See `systemd's documentation
8654      <https://www.freedesktop.org/software/systemd/man/systemd.special.html>`__
8655      for details.
8656
8657      For example, this variable is used in the :oe_git:`core-image-minimal-xfce.bb
8658      </meta-openembedded/tree/meta-xfce/recipes-core/images/core-image-minimal-xfce.bb>`
8659      recipe::
8660
8661          SYSTEMD_DEFAULT_TARGET = "graphical.target"
8662
8663   :term:`SYSTEMD_PACKAGES`
8664      When inheriting the :ref:`ref-classes-systemd` class,
8665      this variable locates the systemd unit files when they are not found
8666      in the main recipe's package. By default, the :term:`SYSTEMD_PACKAGES`
8667      variable is set such that the systemd unit files are assumed to
8668      reside in the recipes main package::
8669
8670         SYSTEMD_PACKAGES ?= "${PN}"
8671
8672      If these unit files are not in this recipe's main package, you need
8673      to use :term:`SYSTEMD_PACKAGES` to list the package or packages in which
8674      the build system can find the systemd unit files.
8675
8676   :term:`SYSTEMD_SERVICE`
8677      When inheriting the :ref:`ref-classes-systemd` class,
8678      this variable specifies the systemd service name for a package.
8679
8680      Multiple services can be specified, each one separated by a space.
8681
8682      When you specify this file in your recipe, use a package name
8683      override to indicate the package to which the value applies. Here is
8684      an example from the connman recipe::
8685
8686         SYSTEMD_SERVICE:${PN} = "connman.service"
8687
8688      The package overrides that can be specified are directly related to the value of
8689      :term:`SYSTEMD_PACKAGES`. Overrides not included in :term:`SYSTEMD_PACKAGES`
8690      will be silently ignored.
8691
8692   :term:`SYSVINIT_ENABLED_GETTYS`
8693      When using :ref:`SysVinit <dev-manual/new-recipe:enabling system services>`,
8694      specifies a space-separated list of the virtual terminals that should
8695      run a :wikipedia:`getty <Getty_(Unix)>` (allowing login), assuming
8696      :term:`USE_VT` is not set to "0".
8697
8698      The default value for :term:`SYSVINIT_ENABLED_GETTYS` is "1" (i.e. only
8699      run a getty on the first virtual terminal).
8700
8701   :term:`T`
8702      This variable points to a directory were BitBake places temporary
8703      files, which consist mostly of task logs and scripts, when building a
8704      particular recipe. The variable is typically set as follows::
8705
8706         T = "${WORKDIR}/temp"
8707
8708      The :term:`WORKDIR` is the directory into which
8709      BitBake unpacks and builds the recipe. The default ``bitbake.conf``
8710      file sets this variable.
8711
8712      The :term:`T` variable is not to be confused with the
8713      :term:`TMPDIR` variable, which points to the root of
8714      the directory tree where BitBake places the output of an entire
8715      build.
8716
8717   :term:`TARGET_ARCH`
8718      The target machine's architecture. The OpenEmbedded build system
8719      supports many architectures. Here is an example list of architectures
8720      supported. This list is by no means complete as the architecture is
8721      configurable:
8722
8723      - arm
8724      - i586
8725      - x86_64
8726      - powerpc
8727      - powerpc64
8728      - mips
8729      - mipsel
8730
8731      For additional information on machine architectures, see the
8732      :term:`TUNE_ARCH` variable.
8733
8734   :term:`TARGET_AS_ARCH`
8735      Specifies architecture-specific assembler flags for the target
8736      system. :term:`TARGET_AS_ARCH` is initialized from
8737      :term:`TUNE_ASARGS` by default in the BitBake
8738      configuration file (``meta/conf/bitbake.conf``)::
8739
8740         TARGET_AS_ARCH = "${TUNE_ASARGS}"
8741
8742   :term:`TARGET_CC_ARCH`
8743      Specifies architecture-specific C compiler flags for the target
8744      system. :term:`TARGET_CC_ARCH` is initialized from
8745      :term:`TUNE_CCARGS` by default.
8746
8747      .. note::
8748
8749         It is a common workaround to append :term:`LDFLAGS` to
8750         :term:`TARGET_CC_ARCH` in recipes that build software for the target that
8751         would not otherwise respect the exported :term:`LDFLAGS` variable.
8752
8753   :term:`TARGET_CC_KERNEL_ARCH`
8754      This is a specific kernel compiler flag for a CPU or Application
8755      Binary Interface (ABI) tune. The flag is used rarely and only for
8756      cases where a userspace :term:`TUNE_CCARGS` is not
8757      compatible with the kernel compilation. The :term:`TARGET_CC_KERNEL_ARCH`
8758      variable allows the kernel (and associated modules) to use a
8759      different configuration. See the
8760      ``meta/conf/machine/include/arm/feature-arm-thumb.inc`` file in the
8761      :term:`Source Directory` for an example.
8762
8763   :term:`TARGET_CFLAGS`
8764      Specifies the flags to pass to the C compiler when building for the
8765      target. When building in the target context,
8766      :term:`CFLAGS` is set to the value of this variable by
8767      default.
8768
8769      Additionally, the SDK's environment setup script sets the :term:`CFLAGS`
8770      variable in the environment to the :term:`TARGET_CFLAGS` value so that
8771      executables built using the SDK also have the flags applied.
8772
8773   :term:`TARGET_CPPFLAGS`
8774      Specifies the flags to pass to the C pre-processor (i.e. to both the
8775      C and the C++ compilers) when building for the target. When building
8776      in the target context, :term:`CPPFLAGS` is set to the
8777      value of this variable by default.
8778
8779      Additionally, the SDK's environment setup script sets the
8780      :term:`CPPFLAGS` variable in the environment to the :term:`TARGET_CPPFLAGS`
8781      value so that executables built using the SDK also have the flags
8782      applied.
8783
8784   :term:`TARGET_CXXFLAGS`
8785      Specifies the flags to pass to the C++ compiler when building for the
8786      target. When building in the target context,
8787      :term:`CXXFLAGS` is set to the value of this variable
8788      by default.
8789
8790      Additionally, the SDK's environment setup script sets the
8791      :term:`CXXFLAGS` variable in the environment to the :term:`TARGET_CXXFLAGS`
8792      value so that executables built using the SDK also have the flags
8793      applied.
8794
8795   :term:`TARGET_FPU`
8796      Specifies the method for handling FPU code. For FPU-less targets,
8797      which include most ARM CPUs, the variable must be set to "soft". If
8798      not, the kernel emulation gets used, which results in a performance
8799      penalty.
8800
8801   :term:`TARGET_LD_ARCH`
8802      Specifies architecture-specific linker flags for the target system.
8803      :term:`TARGET_LD_ARCH` is initialized from
8804      :term:`TUNE_LDARGS` by default in the BitBake
8805      configuration file (``meta/conf/bitbake.conf``)::
8806
8807         TARGET_LD_ARCH = "${TUNE_LDARGS}"
8808
8809   :term:`TARGET_LDFLAGS`
8810      Specifies the flags to pass to the linker when building for the
8811      target. When building in the target context,
8812      :term:`LDFLAGS` is set to the value of this variable
8813      by default.
8814
8815      Additionally, the SDK's environment setup script sets the
8816      :term:`LDFLAGS` variable in the environment to the
8817      :term:`TARGET_LDFLAGS` value so that executables built using the SDK also
8818      have the flags applied.
8819
8820   :term:`TARGET_OS`
8821      Specifies the target's operating system. The variable can be set to
8822      "linux" for glibc-based systems (GNU C Library) and to "linux-musl"
8823      for musl libc. For ARM/EABI targets, the possible values are
8824      "linux-gnueabi" and "linux-musleabi".
8825
8826   :term:`TARGET_PREFIX`
8827      Specifies the prefix used for the toolchain binary target tools.
8828
8829      Depending on the type of recipe and the build target,
8830      :term:`TARGET_PREFIX` is set as follows:
8831
8832      -  For recipes building for the target machine, the value is
8833         "${:term:`TARGET_SYS`}-".
8834
8835      -  For native recipes, the build system sets the variable to the
8836         value of :term:`BUILD_PREFIX`.
8837
8838      -  For native SDK recipes (:ref:`ref-classes-nativesdk`),
8839         the build system sets the variable to the value of :term:`SDK_PREFIX`.
8840
8841   :term:`TARGET_SYS`
8842      Specifies the system, including the architecture and the operating
8843      system, for which the build is occurring in the context of the
8844      current recipe.
8845
8846      The OpenEmbedded build system automatically sets this variable based
8847      on :term:`TARGET_ARCH`,
8848      :term:`TARGET_VENDOR`, and
8849      :term:`TARGET_OS` variables.
8850
8851      .. note::
8852
8853         You do not need to set the :term:`TARGET_SYS` variable yourself.
8854
8855      Consider these two examples:
8856
8857      -  Given a native recipe on a 32-bit, x86 machine running Linux, the
8858         value is "i686-linux".
8859
8860      -  Given a recipe being built for a little-endian, MIPS target
8861         running Linux, the value might be "mipsel-linux".
8862
8863   :term:`TARGET_VENDOR`
8864      Specifies the name of the target vendor.
8865
8866   :term:`TCLIBC`
8867      Specifies the GNU standard C library (``libc``) variant to use during
8868      the build process.
8869
8870      You can select "glibc", "musl", "newlib", or "baremetal".
8871
8872   :term:`TCLIBCAPPEND`
8873      Specifies a suffix to be appended onto the :term:`TMPDIR` value. The
8874      suffix identifies the ``libc`` variant for building. When you are
8875      building for multiple variants with the same :term:`Build Directory`,
8876      this mechanism ensures that output for different ``libc`` variants is
8877      kept separate to avoid potential conflicts.
8878
8879      In the ``defaultsetup.conf`` file, the default value of
8880      :term:`TCLIBCAPPEND` is "-${TCLIBC}". However, distros such as poky,
8881      which normally only support one ``libc`` variant, set
8882      :term:`TCLIBCAPPEND` to "" in their distro configuration file resulting
8883      in no suffix being applied.
8884
8885   :term:`TCMODE`
8886      Specifies the toolchain selector. :term:`TCMODE` controls the
8887      characteristics of the generated packages and images by telling the
8888      OpenEmbedded build system which toolchain profile to use. By default,
8889      the OpenEmbedded build system builds its own internal toolchain. The
8890      variable's default value is "default", which uses that internal
8891      toolchain.
8892
8893      .. note::
8894
8895         If :term:`TCMODE` is set to a value other than "default", then it is your
8896         responsibility to ensure that the toolchain is compatible with the
8897         default toolchain. Using older or newer versions of these
8898         components might cause build problems. See
8899         :doc:`Release Information </migration-guides/index>` for your
8900         version of the Yocto Project, to find the specific components with
8901         which the toolchain must be compatible.
8902
8903      The :term:`TCMODE` variable is similar to :term:`TCLIBC`,
8904      which controls the variant of the GNU standard C library (``libc``)
8905      used during the build process: ``glibc`` or ``musl``.
8906
8907      With additional layers, it is possible to use a pre-compiled external
8908      toolchain. One example is the Sourcery G++ Toolchain. The support for
8909      this toolchain resides in the separate Mentor Graphics
8910      ``meta-sourcery`` layer at
8911      https://github.com/MentorEmbedded/meta-sourcery/.
8912
8913      The layer's ``README`` file contains information on how to use the
8914      Sourcery G++ Toolchain as an external toolchain. You will have to
8915      add the layer to your ``bblayers.conf`` file and then set the
8916      :term:`EXTERNAL_TOOLCHAIN` variable in your ``local.conf`` file to
8917      the location of the toolchain.
8918
8919      The fundamentals used for this example apply to any external
8920      toolchain. You can use ``meta-sourcery`` as a template for adding
8921      support for other external toolchains.
8922
8923      In addition to toolchain configuration, you will also need a
8924      corresponding toolchain recipe file. This recipe file needs to package
8925      up any pre-built objects in the toolchain such as ``libgcc``,
8926      ``libstdcc++``, any locales, and ``libc``.
8927
8928   :term:`TC_CXX_RUNTIME`
8929      Specifies the C/C++ STL and runtime variant to use during
8930      the build process. Default value is 'gnu'
8931
8932      You can select "gnu", "llvm", or "android".
8933
8934   :term:`TEMPLATECONF`
8935      Specifies the directory used by the build system to find templates
8936      from which to build the ``bblayers.conf`` and ``local.conf`` files.
8937      Use this variable if you wish to customize such files, and the default
8938      BitBake targets shown when sourcing the ``oe-init-build-env`` script.
8939
8940      For details, see the
8941      :ref:`dev-manual/custom-template-configuration-directory:creating a custom template configuration directory`
8942      section in the Yocto Project Development Tasks manual.
8943
8944      .. note::
8945
8946         You must set this variable in the external environment in order
8947         for it to work.
8948
8949   :term:`TEST_EXPORT_DIR`
8950      The location the OpenEmbedded build system uses to export tests when
8951      the :term:`TEST_EXPORT_ONLY` variable is set
8952      to "1".
8953
8954      The :term:`TEST_EXPORT_DIR` variable defaults to
8955      ``"${TMPDIR}/testimage/${PN}"``.
8956
8957   :term:`TEST_EXPORT_ONLY`
8958      Specifies to export the tests only. Set this variable to "1" if you
8959      do not want to run the tests but you want them to be exported in a
8960      manner that you to run them outside of the build system.
8961
8962   :term:`TEST_LOG_DIR`
8963      Holds the SSH log and the boot log for QEMU machines. The
8964      :term:`TEST_LOG_DIR` variable defaults to ``"${WORKDIR}/testimage"``.
8965
8966      .. note::
8967
8968         Actual test results reside in the task log (``log.do_testimage``),
8969         which is in the ``${WORKDIR}/temp/`` directory.
8970
8971   :term:`TEST_POWERCONTROL_CMD`
8972      For automated hardware testing, specifies the command to use to
8973      control the power of the target machine under test. Typically, this
8974      command would point to a script that performs the appropriate action
8975      (e.g. interacting with a web-enabled power strip). The specified
8976      command should expect to receive as the last argument "off", "on" or
8977      "cycle" specifying to power off, on, or cycle (power off and then
8978      power on) the device, respectively.
8979
8980   :term:`TEST_POWERCONTROL_EXTRA_ARGS`
8981      For automated hardware testing, specifies additional arguments to
8982      pass through to the command specified in
8983      :term:`TEST_POWERCONTROL_CMD`. Setting
8984      :term:`TEST_POWERCONTROL_EXTRA_ARGS` is optional. You can use it if you
8985      wish, for example, to separate the machine-specific and
8986      non-machine-specific parts of the arguments.
8987
8988   :term:`TEST_QEMUBOOT_TIMEOUT`
8989      The time in seconds allowed for an image to boot before automated
8990      runtime tests begin to run against an image. The default timeout
8991      period to allow the boot process to reach the login prompt is 500
8992      seconds. You can specify a different value in the ``local.conf``
8993      file.
8994
8995      For more information on testing images, see the
8996      ":ref:`dev-manual/runtime-testing:performing automated runtime testing`"
8997      section in the Yocto Project Development Tasks Manual.
8998
8999   :term:`TEST_SERIALCONTROL_CMD`
9000      For automated hardware testing, specifies the command to use to
9001      connect to the serial console of the target machine under test. This
9002      command simply needs to connect to the serial console and forward
9003      that connection to standard input and output as any normal terminal
9004      program does.
9005
9006      For example, to use the Picocom terminal program on serial device
9007      ``/dev/ttyUSB0`` at 115200bps, you would set the variable as follows::
9008
9009         TEST_SERIALCONTROL_CMD = "picocom /dev/ttyUSB0 -b 115200"
9010
9011   :term:`TEST_SERIALCONTROL_EXTRA_ARGS`
9012      For automated hardware testing, specifies additional arguments to
9013      pass through to the command specified in
9014      :term:`TEST_SERIALCONTROL_CMD`. Setting
9015      :term:`TEST_SERIALCONTROL_EXTRA_ARGS` is optional. You can use it if you
9016      wish, for example, to separate the machine-specific and
9017      non-machine-specific parts of the command.
9018
9019   :term:`TEST_SERVER_IP`
9020      The IP address of the build machine (host machine). This IP address
9021      is usually automatically detected. However, if detection fails, this
9022      variable needs to be set to the IP address of the build machine (i.e.
9023      where the build is taking place).
9024
9025      .. note::
9026
9027         The :term:`TEST_SERVER_IP` variable is only used for a small number of
9028         tests such as the "dnf" test suite, which needs to download packages
9029         from ``WORKDIR/oe-rootfs-repo``.
9030
9031   :term:`TEST_SUITES`
9032      An ordered list of tests (modules) to run against an image when
9033      performing automated runtime testing.
9034
9035      The OpenEmbedded build system provides a core set of tests that can
9036      be used against images.
9037
9038      .. note::
9039
9040         Currently, there is only support for running these tests under
9041         QEMU.
9042
9043      Tests include ``ping``, ``ssh``, ``df`` among others. You can add
9044      your own tests to the list of tests by appending :term:`TEST_SUITES` as
9045      follows::
9046
9047         TEST_SUITES:append = " mytest"
9048
9049      Alternatively, you can
9050      provide the "auto" option to have all applicable tests run against
9051      the image::
9052
9053         TEST_SUITES:append = " auto"
9054
9055      Using this option causes the
9056      build system to automatically run tests that are applicable to the
9057      image. Tests that are not applicable are skipped.
9058
9059      The order in which tests are run is important. Tests that depend on
9060      another test must appear later in the list than the test on which
9061      they depend. For example, if you append the list of tests with two
9062      tests (``test_A`` and ``test_B``) where ``test_B`` is dependent on
9063      ``test_A``, then you must order the tests as follows::
9064
9065         TEST_SUITES = "test_A test_B"
9066
9067      For more information on testing images, see the
9068      ":ref:`dev-manual/runtime-testing:performing automated runtime testing`"
9069      section in the Yocto Project Development Tasks Manual.
9070
9071   :term:`TEST_TARGET`
9072      Specifies the target controller to use when running tests against a
9073      test image. The default controller to use is "qemu"::
9074
9075         TEST_TARGET = "qemu"
9076
9077      A target controller is a class that defines how an image gets
9078      deployed on a target and how a target is started. A layer can extend
9079      the controllers by adding a module in the layer's
9080      ``/lib/oeqa/controllers`` directory and by inheriting the
9081      ``BaseTarget`` class, which is an abstract class that cannot be used
9082      as a value of :term:`TEST_TARGET`.
9083
9084      You can provide the following arguments with :term:`TEST_TARGET`:
9085
9086      -  *"qemu":* Boots a QEMU image and runs the tests. See the
9087         ":ref:`dev-manual/runtime-testing:enabling runtime tests on qemu`" section
9088         in the Yocto Project Development Tasks Manual for more
9089         information.
9090
9091      -  *"simpleremote":* Runs the tests on target hardware that is
9092         already up and running. The hardware can be on the network or it
9093         can be a device running an image on QEMU. You must also set
9094         :term:`TEST_TARGET_IP` when you use
9095         "simpleremote".
9096
9097         .. note::
9098
9099            This argument is defined in
9100            ``meta/lib/oeqa/controllers/simpleremote.py``.
9101
9102      For information on running tests on hardware, see the
9103      ":ref:`dev-manual/runtime-testing:enabling runtime tests on hardware`"
9104      section in the Yocto Project Development Tasks Manual.
9105
9106   :term:`TEST_TARGET_IP`
9107      The IP address of your hardware under test. The :term:`TEST_TARGET_IP`
9108      variable has no effect when :term:`TEST_TARGET` is
9109      set to "qemu".
9110
9111      When you specify the IP address, you can also include a port. Here is
9112      an example::
9113
9114         TEST_TARGET_IP = "192.168.1.4:2201"
9115
9116      Specifying a port is
9117      useful when SSH is started on a non-standard port or in cases when
9118      your hardware under test is behind a firewall or network that is not
9119      directly accessible from your host and you need to do port address
9120      translation.
9121
9122   :term:`TESTIMAGE_AUTO`
9123      Automatically runs the series of automated tests for images when an
9124      image is successfully built. Setting :term:`TESTIMAGE_AUTO` to "1" causes
9125      any image that successfully builds to automatically boot under QEMU.
9126      Using the variable also adds in dependencies so that any SDK for
9127      which testing is requested is automatically built first.
9128
9129      These tests are written in Python making use of the ``unittest``
9130      module, and the majority of them run commands on the target system
9131      over ``ssh``. You can set this variable to "1" in your ``local.conf``
9132      file in the :term:`Build Directory` to have the
9133      OpenEmbedded build system automatically run these tests after an
9134      image successfully builds:
9135
9136         TESTIMAGE_AUTO = "1"
9137
9138      For more information
9139      on enabling, running, and writing these tests, see the
9140      ":ref:`dev-manual/runtime-testing:performing automated runtime testing`"
9141      section in the Yocto Project Development Tasks Manual and the
9142      ":ref:`ref-classes-testimage`" section.
9143
9144   :term:`THISDIR`
9145      The directory in which the file BitBake is currently parsing is
9146      located. Do not manually set this variable.
9147
9148   :term:`TIME`
9149      The time the build was started. Times appear using the hour, minute,
9150      and second (HMS) format (e.g. "140159" for one minute and fifty-nine
9151      seconds past 1400 hours).
9152
9153   :term:`TMPDIR`
9154      This variable is the base directory the OpenEmbedded build system
9155      uses for all build output and intermediate files (other than the
9156      shared state cache). By default, the :term:`TMPDIR` variable points to
9157      ``tmp`` within the :term:`Build Directory`.
9158
9159      If you want to establish this directory in a location other than the
9160      default, you can uncomment and edit the following statement in the
9161      ``conf/local.conf`` file in the :term:`Source Directory`::
9162
9163         #TMPDIR = "${TOPDIR}/tmp"
9164
9165      An example use for this scenario is to set :term:`TMPDIR` to a local disk,
9166      which does not use NFS, while having the :term:`Build Directory` use NFS.
9167
9168      The filesystem used by :term:`TMPDIR` must have standard filesystem
9169      semantics (i.e. mixed-case files are unique, POSIX file locking, and
9170      persistent inodes). Due to various issues with NFS and bugs in some
9171      implementations, NFS does not meet this minimum requirement.
9172      Consequently, :term:`TMPDIR` cannot be on NFS.
9173
9174   :term:`TOOLCHAIN_HOST_TASK`
9175      This variable lists packages the OpenEmbedded build system uses when
9176      building an SDK, which contains a cross-development environment. The
9177      packages specified by this variable are part of the toolchain set
9178      that runs on the :term:`SDKMACHINE`, and each
9179      package should usually have the prefix ``nativesdk-``. For example,
9180      consider the following command when building an SDK::
9181
9182         $ bitbake -c populate_sdk imagename
9183
9184      In this case, a default list of packages is
9185      set in this variable, but you can add additional packages to the
9186      list. See the
9187      ":ref:`sdk-manual/appendix-customizing-standard:adding individual packages to the standard sdk`" section
9188      in the Yocto Project Application Development and the Extensible
9189      Software Development Kit (eSDK) manual for more information.
9190
9191      For background information on cross-development toolchains in the
9192      Yocto Project development environment, see the
9193      ":ref:`sdk-manual/intro:the cross-development toolchain`"
9194      section in the Yocto Project Overview and Concepts Manual. For
9195      information on setting up a cross-development environment, see the
9196      :doc:`/sdk-manual/index` manual.
9197
9198      Note that this variable applies to building an SDK, not an eSDK,
9199      in which case the :term:`TOOLCHAIN_HOST_TASK_ESDK` setting should be
9200      used instead.
9201
9202   :term:`TOOLCHAIN_HOST_TASK_ESDK`
9203      This variable allows to extend what is installed in the host
9204      portion of an eSDK. This is similar to :term:`TOOLCHAIN_HOST_TASK`
9205      applying to SDKs.
9206
9207   :term:`TOOLCHAIN_OPTIONS`
9208      This variable holds extra options passed to the compiler and the linker
9209      for non ``-native`` recipes as they have to point to their custom
9210      ``sysroot`` folder pointed to by :term:`RECIPE_SYSROOT`::
9211
9212         TOOLCHAIN_OPTIONS = " --sysroot=${RECIPE_SYSROOT}"
9213
9214      Native recipes don't need this variable to be set, as they are
9215      built for the host machine with the native compiler.
9216
9217   :term:`TOOLCHAIN_OUTPUTNAME`
9218      This variable defines the name used for the toolchain output. The
9219      :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class sets
9220      the :term:`TOOLCHAIN_OUTPUTNAME` variable as follows::
9221
9222         TOOLCHAIN_OUTPUTNAME ?= "${SDK_NAME}-toolchain-${SDK_VERSION}"
9223
9224      See
9225      the :term:`SDK_NAME` and
9226      :term:`SDK_VERSION` variables for additional
9227      information.
9228
9229   :term:`TOOLCHAIN_TARGET_TASK`
9230      This variable lists packages the OpenEmbedded build system uses when
9231      it creates the target part of an SDK (i.e. the part built for the
9232      target hardware), which includes libraries and headers. Use this
9233      variable to add individual packages to the part of the SDK that runs
9234      on the target. See the
9235      ":ref:`sdk-manual/appendix-customizing-standard:adding individual packages to the standard sdk`" section
9236      in the Yocto Project Application Development and the Extensible
9237      Software Development Kit (eSDK) manual for more information.
9238
9239      For background information on cross-development toolchains in the
9240      Yocto Project development environment, see the
9241      ":ref:`sdk-manual/intro:the cross-development toolchain`"
9242      section in the Yocto Project Overview and Concepts Manual. For
9243      information on setting up a cross-development environment, see the
9244      :doc:`/sdk-manual/index` manual.
9245
9246   :term:`TOPDIR`
9247      See :term:`bitbake:TOPDIR` in the BitBake manual.
9248
9249   :term:`TRANSLATED_TARGET_ARCH`
9250      A sanitized version of :term:`TARGET_ARCH`. This
9251      variable is used where the architecture is needed in a value where
9252      underscores are not allowed, for example within package filenames. In
9253      this case, dash characters replace any underscore characters used in
9254      :term:`TARGET_ARCH`.
9255
9256      Do not edit this variable.
9257
9258   :term:`TUNE_ARCH`
9259      The GNU canonical architecture for a specific architecture (i.e.
9260      ``arm``, ``armeb``, ``mips``, ``mips64``, and so forth). BitBake uses
9261      this value to setup configuration.
9262
9263      :term:`TUNE_ARCH` definitions are specific to a given architecture. The
9264      definitions can be a single static definition, or can be dynamically
9265      adjusted. You can see details for a given CPU family by looking at
9266      the architecture's ``README`` file. For example, the
9267      ``meta/conf/machine/include/mips/README`` file in the
9268      :term:`Source Directory` provides information for
9269      :term:`TUNE_ARCH` specific to the ``mips`` architecture.
9270
9271      :term:`TUNE_ARCH` is tied closely to
9272      :term:`TARGET_ARCH`, which defines the target
9273      machine's architecture. The BitBake configuration file
9274      (``meta/conf/bitbake.conf``) sets :term:`TARGET_ARCH` as follows::
9275
9276         TARGET_ARCH = "${TUNE_ARCH}"
9277
9278      The following list, which is by no means complete since architectures
9279      are configurable, shows supported machine architectures:
9280
9281      - arm
9282      - i586
9283      - x86_64
9284      - powerpc
9285      - powerpc64
9286      - mips
9287      - mipsel
9288
9289   :term:`TUNE_ASARGS`
9290      Specifies architecture-specific assembler flags for the target
9291      system. The set of flags is based on the selected tune features.
9292      :term:`TUNE_ASARGS` is set using the tune include files, which are
9293      typically under ``meta/conf/machine/include/`` and are influenced
9294      through :term:`TUNE_FEATURES`. For example, the
9295      ``meta/conf/machine/include/x86/arch-x86.inc`` file defines the flags
9296      for the x86 architecture as follows::
9297
9298         TUNE_ASARGS += "${@bb.utils.contains("TUNE_FEATURES", "mx32", "-x32", "", d)}"
9299
9300      .. note::
9301
9302         Board Support Packages (BSPs) select the tune. The selected tune,
9303         in turn, affects the tune variables themselves (i.e. the tune can
9304         supply its own set of flags).
9305
9306   :term:`TUNE_CCARGS`
9307      Specifies architecture-specific C compiler flags for the target
9308      system. The set of flags is based on the selected tune features.
9309      :term:`TUNE_CCARGS` is set using the tune include files, which are
9310      typically under ``meta/conf/machine/include/`` and are influenced
9311      through :term:`TUNE_FEATURES`.
9312
9313      .. note::
9314
9315         Board Support Packages (BSPs) select the tune. The selected tune,
9316         in turn, affects the tune variables themselves (i.e. the tune can
9317         supply its own set of flags).
9318
9319   :term:`TUNE_FEATURES`
9320      Features used to "tune" a compiler for optimal use given a specific
9321      processor. The features are defined within the tune files and allow
9322      arguments (i.e. ``TUNE_*ARGS``) to be dynamically generated based on
9323      the features.
9324
9325      The OpenEmbedded build system verifies the features to be sure they
9326      are not conflicting and that they are supported.
9327
9328      The BitBake configuration file (``meta/conf/bitbake.conf``) defines
9329      :term:`TUNE_FEATURES` as follows::
9330
9331         TUNE_FEATURES ??= "${TUNE_FEATURES:tune-${DEFAULTTUNE}}"
9332
9333      See the :term:`DEFAULTTUNE` variable for more information.
9334
9335   :term:`TUNE_LDARGS`
9336      Specifies architecture-specific linker flags for the target system.
9337      The set of flags is based on the selected tune features.
9338      :term:`TUNE_LDARGS` is set using the tune include files, which are
9339      typically under ``meta/conf/machine/include/`` and are influenced
9340      through :term:`TUNE_FEATURES`. For example, the
9341      ``meta/conf/machine/include/x86/arch-x86.inc`` file defines the flags
9342      for the x86 architecture as follows::
9343
9344         TUNE_LDARGS += "${@bb.utils.contains("TUNE_FEATURES", "mx32", "-m elf32_x86_64", "", d)}"
9345
9346      .. note::
9347
9348         Board Support Packages (BSPs) select the tune. The selected tune,
9349         in turn, affects the tune variables themselves (i.e. the tune can
9350         supply its own set of flags).
9351
9352   :term:`TUNE_PKGARCH`
9353      The package architecture understood by the packaging system to define
9354      the architecture, ABI, and tuning of output packages. The specific
9355      tune is defined using the "_tune" override as follows::
9356
9357         TUNE_PKGARCH:tune-tune = "tune"
9358
9359      These tune-specific package architectures are defined in the machine
9360      include files. Here is an example of the "core2-32" tuning as used in
9361      the ``meta/conf/machine/include/x86/tune-core2.inc`` file::
9362
9363         TUNE_PKGARCH:tune-core2-32 = "core2-32"
9364
9365   :term:`TUNECONFLICTS[feature]`
9366      Specifies CPU or Application Binary Interface (ABI) tuning features
9367      that conflict with feature.
9368
9369      Known tuning conflicts are specified in the machine include files in
9370      the :term:`Source Directory`. Here is an example from
9371      the ``meta/conf/machine/include/mips/arch-mips.inc`` include file
9372      that lists the "o32" and "n64" features as conflicting with the "n32"
9373      feature::
9374
9375         TUNECONFLICTS[n32] = "o32 n64"
9376
9377   :term:`TUNEVALID[feature]`
9378      Specifies a valid CPU or Application Binary Interface (ABI) tuning
9379      feature. The specified feature is stored as a flag. Valid features
9380      are specified in the machine include files (e.g.
9381      ``meta/conf/machine/include/arm/arch-arm.inc``). Here is an example
9382      from that file::
9383
9384         TUNEVALID[bigendian] = "Enable big-endian mode."
9385
9386      See the machine include files in the :term:`Source Directory`
9387      for these features.
9388
9389   :term:`UBOOT_BINARY`
9390      Specifies the name of the binary build by U-Boot.
9391
9392   :term:`UBOOT_CONFIG`
9393      Configures one or more U-Boot configurations to build. Each
9394      configuration can define the :term:`UBOOT_MACHINE` and optionally the
9395      :term:`IMAGE_FSTYPES` and the :term:`UBOOT_BINARY`.
9396
9397      Here is an example from the ``meta-freescale`` layer. ::
9398
9399         UBOOT_CONFIG ??= "sdcard-ifc-secure-boot sdcard-ifc sdcard-qspi lpuart qspi secure-boot nor"
9400         UBOOT_CONFIG[nor] = "ls1021atwr_nor_defconfig"
9401         UBOOT_CONFIG[sdcard-ifc] = "ls1021atwr_sdcard_ifc_defconfig,,u-boot-with-spl-pbl.bin"
9402         UBOOT_CONFIG[sdcard-qspi] = "ls1021atwr_sdcard_qspi_defconfig,,u-boot-with-spl-pbl.bin"
9403         UBOOT_CONFIG[lpuart] = "ls1021atwr_nor_lpuart_defconfig"
9404         UBOOT_CONFIG[qspi] = "ls1021atwr_qspi_defconfig"
9405         UBOOT_CONFIG[secure-boot] = "ls1021atwr_nor_SECURE_BOOT_defconfig"
9406         UBOOT_CONFIG[sdcard-ifc-secure-boot] = "ls1021atwr_sdcard_ifc_SECURE_BOOT_defconfig,,u-boot-with-spl-pbl.bin"
9407
9408      In this example, all possible seven configurations are selected. Each
9409      configuration specifies "..._defconfig" as :term:`UBOOT_MACHINE`, and
9410      the "sd..." configurations define an individual name for
9411      :term:`UBOOT_BINARY`. No configuration defines a second parameter for
9412      :term:`IMAGE_FSTYPES` to use for the U-Boot image.
9413
9414      For more information on how the :term:`UBOOT_CONFIG` is handled, see the
9415      :ref:`ref-classes-uboot-config` class.
9416
9417   :term:`UBOOT_DTB_LOADADDRESS`
9418      Specifies the load address for the dtb image used by U-Boot. During FIT
9419      image creation, the :term:`UBOOT_DTB_LOADADDRESS` variable is used in
9420      :ref:`ref-classes-kernel-fitimage` class to specify the load address to be
9421      used in creating the dtb sections of Image Tree Source for the FIT image.
9422
9423   :term:`UBOOT_DTBO_LOADADDRESS`
9424      Specifies the load address for the dtbo image used by U-Boot.  During FIT
9425      image creation, the :term:`UBOOT_DTBO_LOADADDRESS` variable is used in
9426      :ref:`ref-classes-kernel-fitimage` class to specify the load address to be
9427      used in creating the dtbo sections of Image Tree Source for the FIT image.
9428
9429   :term:`UBOOT_ENTRYPOINT`
9430      Specifies the entry point for the U-Boot image. During U-Boot image
9431      creation, the :term:`UBOOT_ENTRYPOINT` variable is passed as a
9432      command-line parameter to the ``uboot-mkimage`` utility.
9433
9434      To pass a 64 bit address for FIT image creation, you will need to set:
9435      -  The :term:`FIT_ADDRESS_CELLS` variable for FIT image creation.
9436      -  The :term:`UBOOT_FIT_ADDRESS_CELLS` variable for U-Boot FIT image creation.
9437
9438      This variable is used by the :ref:`ref-classes-kernel-fitimage`,
9439      :ref:`ref-classes-kernel-uimage`, :ref:`ref-classes-kernel`,
9440      :ref:`ref-classes-uboot-config` and :ref:`ref-classes-uboot-sign`
9441      classes.
9442
9443   :term:`UBOOT_FIT_ADDRESS_CELLS`
9444      Specifies the value of the ``#address-cells`` value for the
9445      description of the U-Boot FIT image.
9446
9447      The default value is set to "1" by the :ref:`ref-classes-uboot-sign`
9448      class, which corresponds to 32 bit addresses.
9449
9450      For platforms that need to set 64 bit addresses in
9451      :term:`UBOOT_LOADADDRESS` and :term:`UBOOT_ENTRYPOINT`, you need to
9452      set this value to "2", as two 32 bit values (cells) will be needed
9453      to represent such addresses.
9454
9455      Here is an example setting "0x400000000" as a load address::
9456
9457         UBOOT_FIT_ADDRESS_CELLS = "2"
9458         UBOOT_LOADADDRESS= "0x04 0x00000000"
9459
9460      See `more details about #address-cells <https://elinux.org/Device_Tree_Usage#How_Addressing_Works>`__.
9461
9462   :term:`UBOOT_FIT_DESC`
9463      Specifies the description string encoded into a U-Boot fitImage. The default
9464      value is set by the :ref:`ref-classes-uboot-sign` class as follows::
9465
9466         UBOOT_FIT_DESC ?= "U-Boot fitImage for ${DISTRO_NAME}/${PV}/${MACHINE}"
9467
9468   :term:`UBOOT_FIT_GENERATE_KEYS`
9469      Decides whether to generate the keys for signing the U-Boot fitImage if
9470      they don't already exist. The keys are created in :term:`SPL_SIGN_KEYDIR`.
9471      The default value is "0".
9472
9473      Enable this as follows::
9474
9475         UBOOT_FIT_GENERATE_KEYS = "1"
9476
9477      This variable is used in the :ref:`ref-classes-uboot-sign` class.
9478
9479   :term:`UBOOT_FIT_HASH_ALG`
9480      Specifies the hash algorithm used in creating the U-Boot FIT Image.
9481      It is set by default to ``sha256`` by the :ref:`ref-classes-uboot-sign`
9482      class.
9483
9484   :term:`UBOOT_FIT_KEY_GENRSA_ARGS`
9485      Arguments to ``openssl genrsa`` for generating a RSA private key for
9486      signing the U-Boot FIT image. The default value of this variable
9487      is set to "-F4" by the :ref:`ref-classes-uboot-sign` class.
9488
9489   :term:`UBOOT_FIT_KEY_REQ_ARGS`
9490      Arguments to ``openssl req`` for generating a certificate for signing
9491      the U-Boot FIT image. The default value is "-batch -new" by the
9492      :ref:`ref-classes-uboot-sign` class, "batch" for
9493      non interactive mode and "new" for generating new keys.
9494
9495   :term:`UBOOT_FIT_KEY_SIGN_PKCS`
9496      Format for the public key certificate used for signing the U-Boot FIT
9497      image. The default value is set to "x509" by the
9498      :ref:`ref-classes-uboot-sign` class.
9499
9500   :term:`UBOOT_FIT_SIGN_ALG`
9501      Specifies the signature algorithm used in creating the U-Boot FIT Image.
9502      This variable is set by default to "rsa2048" by the
9503      :ref:`ref-classes-uboot-sign` class.
9504
9505   :term:`UBOOT_FIT_SIGN_NUMBITS`
9506      Size of the private key used in signing the U-Boot FIT image, in number
9507      of bits. The default value for this variable is set to "2048"
9508      by the :ref:`ref-classes-uboot-sign` class.
9509
9510   :term:`UBOOT_FITIMAGE_ENABLE`
9511      This variable allows to generate a FIT image for U-Boot, which is one
9512      of the ways to implement a verified boot process.
9513
9514      Its default value is "0", so set it to "1" to enable this functionality::
9515
9516         UBOOT_FITIMAGE_ENABLE = "1"
9517
9518      See the :ref:`ref-classes-uboot-sign` class for details.
9519
9520   :term:`UBOOT_LOADADDRESS`
9521      Specifies the load address for the U-Boot image. During U-Boot image
9522      creation, the :term:`UBOOT_LOADADDRESS` variable is passed as a
9523      command-line parameter to the ``uboot-mkimage`` utility.
9524
9525      To pass a 64 bit address, you will also need to set:
9526
9527      -  The :term:`FIT_ADDRESS_CELLS` variable for FIT image creation.
9528      -  The :term:`UBOOT_FIT_ADDRESS_CELLS` variable for U-Boot FIT image creation.
9529
9530      This variable is used by the :ref:`ref-classes-kernel-fitimage`,
9531      :ref:`ref-classes-kernel-uimage`, :ref:`ref-classes-kernel`,
9532      :ref:`ref-classes-uboot-config` and :ref:`ref-classes-uboot-sign`
9533      classes.
9534
9535   :term:`UBOOT_LOCALVERSION`
9536      Appends a string to the name of the local version of the U-Boot
9537      image. For example, assuming the version of the U-Boot image built
9538      was "2013.10", the full version string reported by U-Boot would be
9539      "2013.10-yocto" given the following statement::
9540
9541         UBOOT_LOCALVERSION = "-yocto"
9542
9543   :term:`UBOOT_MACHINE`
9544      Specifies the value passed on the ``make`` command line when building
9545      a U-Boot image. The value indicates the target platform
9546      configuration. You typically set this variable from the machine
9547      configuration file (i.e. ``conf/machine/machine_name.conf``).
9548
9549      Please see the "Selection of Processor Architecture and Board Type"
9550      section in the U-Boot README for valid values for this variable.
9551
9552   :term:`UBOOT_MAKE_TARGET`
9553      Specifies the target called in the ``Makefile``. The default target
9554      is "all".
9555
9556   :term:`UBOOT_MKIMAGE`
9557      Specifies the name of the mkimage command as used by the
9558      :ref:`ref-classes-kernel-fitimage` class to assemble
9559      the FIT image. This can be used to substitute an alternative command, wrapper
9560      script or function if desired. The default is "uboot-mkimage".
9561
9562   :term:`UBOOT_MKIMAGE_DTCOPTS`
9563      Options for the device tree compiler passed to ``mkimage -D`` feature
9564      while creating a FIT image with the :ref:`ref-classes-kernel-fitimage`
9565      class. If :term:`UBOOT_MKIMAGE_DTCOPTS` is not set then the
9566      :ref:`ref-classes-kernel-fitimage` class will not pass the ``-D`` option
9567      to ``mkimage``.
9568
9569      This variable is also used by the :ref:`ref-classes-uboot-sign` class.
9570
9571   :term:`UBOOT_MKIMAGE_KERNEL_TYPE`
9572      Specifies the type argument for the kernel as passed to ``uboot-mkimage``.
9573      The default value is "kernel".
9574
9575   :term:`UBOOT_MKIMAGE_SIGN`
9576      Specifies the name of the mkimage command as used by the
9577      :ref:`ref-classes-kernel-fitimage` class to sign
9578      the FIT image after it has been assembled (if enabled). This can be used
9579      to substitute an alternative command, wrapper script or function if
9580      desired. The default is "${:term:`UBOOT_MKIMAGE`}".
9581
9582   :term:`UBOOT_MKIMAGE_SIGN_ARGS`
9583      Optionally specifies additional arguments for the
9584      :ref:`ref-classes-kernel-fitimage` class to pass to the
9585      mkimage command when signing the FIT image.
9586
9587   :term:`UBOOT_RD_ENTRYPOINT`
9588      Specifies the entrypoint for the RAM disk image. During FIT image
9589      creation, the :term:`UBOOT_RD_ENTRYPOINT` variable is used in
9590      :ref:`ref-classes-kernel-fitimage` class to specify the entrypoint to be
9591      used in creating the Image Tree Source for the FIT image.
9592
9593   :term:`UBOOT_RD_LOADADDRESS`
9594      Specifies the load address for the RAM disk image. During FIT image
9595      creation, the :term:`UBOOT_RD_LOADADDRESS` variable is used in
9596      :ref:`ref-classes-kernel-fitimage` class to specify the load address to
9597      be used in creating the Image Tree Source for the FIT image.
9598
9599   :term:`UBOOT_SIGN_ENABLE`
9600      Enable signing of FIT image. The default value is "0".
9601
9602      This variable is used by the :ref:`ref-classes-kernel-fitimage`,
9603      :ref:`ref-classes-uboot-config` and :ref:`ref-classes-uboot-sign`
9604      classes.
9605
9606   :term:`UBOOT_SIGN_KEYDIR`
9607      Location of the directory containing the RSA key and certificate used for
9608      signing FIT image, used by the :ref:`ref-classes-kernel-fitimage` and
9609      :ref:`ref-classes-uboot-sign` classes.
9610
9611   :term:`UBOOT_SIGN_KEYNAME`
9612      The name of keys used by the :ref:`ref-classes-kernel-fitimage` class
9613      for signing U-Boot FIT image stored in the :term:`UBOOT_SIGN_KEYDIR`
9614      directory. If we have for example a ``dev.key`` key and a ``dev.crt``
9615      certificate stored in the :term:`UBOOT_SIGN_KEYDIR` directory, you will
9616      have to set :term:`UBOOT_SIGN_KEYNAME` to ``dev``.
9617
9618   :term:`UBOOT_SUFFIX`
9619      Points to the generated U-Boot extension. For example, ``u-boot.sb``
9620      has a ``.sb`` extension.
9621
9622      The default U-Boot extension is ``.bin``
9623
9624   :term:`UBOOT_TARGET`
9625      Specifies the target used for building U-Boot. The target is passed
9626      directly as part of the "make" command (e.g. SPL and AIS). If you do
9627      not specifically set this variable, the OpenEmbedded build process
9628      passes and uses "all" for the target during the U-Boot building
9629      process.
9630
9631   :term:`UNKNOWN_CONFIGURE_OPT_IGNORE`
9632      Specifies a list of options that, if reported by the configure script
9633      as being invalid, should not generate a warning during the
9634      :ref:`ref-tasks-configure` task. Normally, invalid
9635      configure options are simply not passed to the configure script (e.g.
9636      should be removed from :term:`EXTRA_OECONF` or
9637      :term:`PACKAGECONFIG_CONFARGS`).
9638      However, there are common options that are passed to all
9639      configure scripts at a class level, but might not be valid for some
9640      configure scripts. Therefore warnings about these options are useless.
9641      For these cases, the options are added to :term:`UNKNOWN_CONFIGURE_OPT_IGNORE`.
9642
9643      The configure arguments check that uses
9644      :term:`UNKNOWN_CONFIGURE_OPT_IGNORE` is part of the
9645      :ref:`ref-classes-insane` class and is only enabled if the
9646      recipe inherits the :ref:`ref-classes-autotools` class.
9647
9648   :term:`UPDATERCPN`
9649      For recipes inheriting the
9650      :ref:`ref-classes-update-rc.d` class, :term:`UPDATERCPN`
9651      specifies the package that contains the initscript that is enabled.
9652
9653      The default value is "${PN}". Given that almost all recipes that
9654      install initscripts package them in the main package for the recipe,
9655      you rarely need to set this variable in individual recipes.
9656
9657   :term:`UPSTREAM_CHECK_COMMITS`
9658      You can perform a per-recipe check for what the latest upstream
9659      source code version is by calling ``devtool latest-version recipe``. If
9660      the recipe source code is provided from Git repositories, but
9661      releases are not identified by Git tags, set :term:`UPSTREAM_CHECK_COMMITS`
9662      to ``1`` in the recipe, and the OpenEmbedded build system
9663      will compare the latest commit with the one currently specified
9664      by the recipe (:term:`SRCREV`)::
9665
9666         UPSTREAM_CHECK_COMMITS = "1"
9667
9668   :term:`UPSTREAM_CHECK_GITTAGREGEX`
9669      You can perform a per-recipe check for what the latest upstream
9670      source code version is by calling ``devtool latest-version recipe``. If
9671      the recipe source code is provided from Git repositories, the
9672      OpenEmbedded build system determines the latest upstream version by
9673      picking the latest tag from the list of all repository tags.
9674
9675      You can use the :term:`UPSTREAM_CHECK_GITTAGREGEX` variable to provide a
9676      regular expression to filter only the relevant tags should the
9677      default filter not work correctly::
9678
9679         UPSTREAM_CHECK_GITTAGREGEX = "git_tag_regex"
9680
9681   :term:`UPSTREAM_CHECK_REGEX`
9682      Use the :term:`UPSTREAM_CHECK_REGEX` variable to specify a different
9683      regular expression instead of the default one when the package
9684      checking system is parsing the page found using
9685      :term:`UPSTREAM_CHECK_URI`::
9686
9687         UPSTREAM_CHECK_REGEX = "package_regex"
9688
9689   :term:`UPSTREAM_CHECK_URI`
9690      You can perform a per-recipe check for what the latest upstream
9691      source code version is by calling ``devtool latest-version recipe``. If
9692      the source code is provided from tarballs, the latest version is
9693      determined by fetching the directory listing where the tarball is and
9694      attempting to find a later tarball. When this approach does not work,
9695      you can use :term:`UPSTREAM_CHECK_URI` to provide a different URI that
9696      contains the link to the latest tarball::
9697
9698         UPSTREAM_CHECK_URI = "recipe_url"
9699
9700   :term:`UPSTREAM_VERSION_UNKNOWN`
9701      You can perform a per-recipe check for what the latest upstream
9702      source code version is by calling ``devtool latest-version recipe``.
9703      If no combination of the :term:`UPSTREAM_CHECK_URI`, :term:`UPSTREAM_CHECK_REGEX`,
9704      :term:`UPSTREAM_CHECK_GITTAGREGEX` and :term:`UPSTREAM_CHECK_COMMITS` variables in
9705      the recipe allows to determine what the latest upstream version is,
9706      you can set :term:`UPSTREAM_VERSION_UNKNOWN` to ``1`` in the recipe
9707      to acknowledge that the check cannot be performed::
9708
9709         UPSTREAM_VERSION_UNKNOWN = "1"
9710
9711   :term:`USE_DEVFS`
9712      Determines if ``devtmpfs`` is used for ``/dev`` population. The
9713      default value used for :term:`USE_DEVFS` is "1" when no value is
9714      specifically set. Typically, you would set :term:`USE_DEVFS` to "0" for a
9715      statically populated ``/dev`` directory.
9716
9717      See the ":ref:`dev-manual/device-manager:selecting a device manager`" section in
9718      the Yocto Project Development Tasks Manual for information on how to
9719      use this variable.
9720
9721   :term:`USE_VT`
9722      When using
9723      :ref:`SysVinit <dev-manual/new-recipe:enabling system services>`,
9724      determines whether or not to run a :wikipedia:`getty <Getty_(Unix)>`
9725      on any virtual terminals in order to enable logging in through those
9726      terminals.
9727
9728      The default value used for :term:`USE_VT` is "1" when no default value is
9729      specifically set. Typically, you would set :term:`USE_VT` to "0" in the
9730      machine configuration file for machines that do not have a graphical
9731      display attached and therefore do not need virtual terminal
9732      functionality.
9733
9734   :term:`USER_CLASSES`
9735      A list of classes to globally inherit. These classes are used by the
9736      OpenEmbedded build system to enable extra features.
9737
9738      Classes inherited using :term:`USER_CLASSES` must be located in the
9739      ``classes-global/`` or ``classes/`` subdirectories.
9740
9741      The default list is set in your ``local.conf`` file::
9742
9743         USER_CLASSES ?= "buildstats"
9744
9745      For more information, see
9746      ``meta-poky/conf/templates/default/local.conf.sample`` in the
9747      :term:`Source Directory`.
9748
9749   :term:`USERADD_ERROR_DYNAMIC`
9750      If set to ``error``, forces the OpenEmbedded build system to produce
9751      an error if the user identification (``uid``) and group
9752      identification (``gid``) values are not defined in any of the files
9753      listed in :term:`USERADD_UID_TABLES` and
9754      :term:`USERADD_GID_TABLES`. If set to
9755      ``warn``, a warning will be issued instead.
9756
9757      The default behavior for the build system is to dynamically apply
9758      ``uid`` and ``gid`` values. Consequently, the
9759      :term:`USERADD_ERROR_DYNAMIC` variable is by default not set. If you plan
9760      on using statically assigned ``gid`` and ``uid`` values, you should
9761      set the :term:`USERADD_ERROR_DYNAMIC` variable in your ``local.conf``
9762      file as follows::
9763
9764         USERADD_ERROR_DYNAMIC = "error"
9765
9766      Overriding the
9767      default behavior implies you are going to also take steps to set
9768      static ``uid`` and ``gid`` values through use of the
9769      :term:`USERADDEXTENSION`,
9770      :term:`USERADD_UID_TABLES`, and
9771      :term:`USERADD_GID_TABLES` variables.
9772
9773      .. note::
9774
9775         There is a difference in behavior between setting
9776         :term:`USERADD_ERROR_DYNAMIC` to ``error`` and setting it to ``warn``.
9777         When it is set to ``warn``, the build system will report a warning for
9778         every undefined ``uid`` and ``gid`` in any recipe. But when it is set
9779         to ``error``, it will only report errors for recipes that are actually
9780         built.
9781         This saves you from having to add static IDs for recipes that you
9782         know will never be built.
9783
9784   :term:`USERADD_GID_TABLES`
9785      Specifies a password file to use for obtaining static group
9786      identification (``gid``) values when the OpenEmbedded build system
9787      adds a group to the system during package installation.
9788
9789      When applying static group identification (``gid``) values, the
9790      OpenEmbedded build system looks in :term:`BBPATH` for a
9791      ``files/group`` file and then applies those ``uid`` values. Set the
9792      variable as follows in your ``local.conf`` file::
9793
9794
9795         USERADD_GID_TABLES = "files/group"
9796
9797      .. note::
9798
9799         Setting the :term:`USERADDEXTENSION` variable to "useradd-staticids"
9800         causes the build system to use static ``gid`` values.
9801
9802   :term:`USERADD_PACKAGES`
9803      When inheriting the :ref:`ref-classes-useradd` class,
9804      this variable specifies the individual packages within the recipe
9805      that require users and/or groups to be added.
9806
9807      You must set this variable if the recipe inherits the class. For
9808      example, the following enables adding a user for the main package in
9809      a recipe::
9810
9811         USERADD_PACKAGES = "${PN}"
9812
9813      .. note::
9814
9815         It follows that if you are going to use the :term:`USERADD_PACKAGES`
9816         variable, you need to set one or more of the :term:`USERADD_PARAM`,
9817         :term:`GROUPADD_PARAM`, or :term:`GROUPMEMS_PARAM` variables.
9818
9819   :term:`USERADD_PARAM`
9820      When inheriting the :ref:`ref-classes-useradd` class,
9821      this variable specifies for a package what parameters should pass to
9822      the ``useradd`` command if you add a user to the system when the
9823      package is installed.
9824
9825      Here is an example from the ``dbus`` recipe::
9826
9827         USERADD_PARAM:${PN} = "--system --home ${localstatedir}/lib/dbus \
9828                                --no-create-home --shell /bin/false \
9829                                --user-group messagebus"
9830
9831      For information on the
9832      standard Linux shell command ``useradd``, see
9833      https://linux.die.net/man/8/useradd.
9834
9835   :term:`USERADD_UID_TABLES`
9836      Specifies a password file to use for obtaining static user
9837      identification (``uid``) values when the OpenEmbedded build system
9838      adds a user to the system during package installation.
9839
9840      When applying static user identification (``uid``) values, the
9841      OpenEmbedded build system looks in :term:`BBPATH` for a
9842      ``files/passwd`` file and then applies those ``uid`` values. Set the
9843      variable as follows in your ``local.conf`` file::
9844
9845         USERADD_UID_TABLES = "files/passwd"
9846
9847      .. note::
9848
9849         Setting the :term:`USERADDEXTENSION` variable to "useradd-staticids"
9850         causes the build system to use static ``uid`` values.
9851
9852   :term:`USERADDEXTENSION`
9853      When set to "useradd-staticids", causes the OpenEmbedded build system
9854      to base all user and group additions on a static ``passwd`` and
9855      ``group`` files found in :term:`BBPATH`.
9856
9857      To use static user identification (``uid``) and group identification
9858      (``gid``) values, set the variable as follows in your ``local.conf``
9859      file: USERADDEXTENSION = "useradd-staticids"
9860
9861      .. note::
9862
9863         Setting this variable to use static ``uid`` and ``gid``
9864         values causes the OpenEmbedded build system to employ the
9865         :ref:`ref-classes-useradd` class.
9866
9867      If you use static ``uid`` and ``gid`` information, you must also
9868      specify the ``files/passwd`` and ``files/group`` files by setting the
9869      :term:`USERADD_UID_TABLES` and
9870      :term:`USERADD_GID_TABLES` variables.
9871      Additionally, you should also set the
9872      :term:`USERADD_ERROR_DYNAMIC` variable.
9873
9874   :term:`VIRTUAL-RUNTIME`
9875      :term:`VIRTUAL-RUNTIME` is a commonly used prefix for defining virtual
9876      packages for runtime usage, typically for use in :term:`RDEPENDS`
9877      or in image definitions.
9878
9879      An example is ``VIRTUAL-RUNTIME_base-utils`` that makes it possible
9880      to either use BusyBox based utilities::
9881
9882         VIRTUAL-RUNTIME_base-utils = "busybox"
9883
9884      or their full featured implementations from GNU Coreutils
9885      and other projects::
9886
9887         VIRTUAL-RUNTIME_base-utils = "packagegroup-core-base-utils"
9888
9889      Here are two examples using this virtual runtime package. The
9890      first one is in :yocto_git:`initramfs-framework_1.0.bb
9891      </poky/tree/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb?h=scarthgap>`::
9892
9893         RDEPENDS:${PN} += "${VIRTUAL-RUNTIME_base-utils}"
9894
9895      The second example is in the :yocto_git:`core-image-initramfs-boot
9896      </poky/tree/meta/recipes-core/images/core-image-initramfs-boot.bb?h=scarthgap>`
9897      image definition::
9898
9899         PACKAGE_INSTALL = "${INITRAMFS_SCRIPTS} ${VIRTUAL-RUNTIME_base-utils} base-passwd"
9900
9901   :term:`VOLATILE_LOG_DIR`
9902      Specifies the persistence of the target's ``/var/log`` directory,
9903      which is used to house postinstall target log files.
9904
9905      By default, :term:`VOLATILE_LOG_DIR` is set to "yes", which means the
9906      file is not persistent. You can override this setting by setting the
9907      variable to "no" to make the log directory persistent.
9908
9909   :term:`VOLATILE_TMP_DIR`
9910      Specifies the persistence of the target's ``/tmp`` directory.
9911
9912      By default, :term:`VOLATILE_TMP_DIR` is set to "yes", in which case
9913      ``/tmp`` links to a directory which resides in RAM in a ``tmpfs``
9914      filesystem.
9915
9916      If instead, you want the ``/tmp`` directory to be persistent, set the
9917      variable to "no" to make it a regular directory in the root filesystem.
9918
9919      This supports both sysvinit and systemd based systems.
9920
9921   :term:`WARN_QA`
9922      Specifies the quality assurance checks whose failures are reported as
9923      warnings by the OpenEmbedded build system. You set this variable in
9924      your distribution configuration file. For a list of the checks you
9925      can control with this variable, see the
9926      ":ref:`ref-classes-insane`" section.
9927
9928   :term:`WATCHDOG_TIMEOUT`
9929      Specifies the timeout in seconds used by the ``watchdog`` recipe and
9930      also by ``systemd`` during reboot. The default is 60 seconds.
9931
9932   :term:`WIRELESS_DAEMON`
9933      For ``connman`` and ``packagegroup-base``, specifies the wireless
9934      daemon to use. The default is "wpa-supplicant" (note that the value
9935      uses a dash and not an underscore).
9936
9937   :term:`WKS_FILE`
9938      Specifies the location of the Wic kickstart file that is used by the
9939      OpenEmbedded build system to create a partitioned image
9940      (``image.wic``). For information on how to create a partitioned
9941      image, see the
9942      ":ref:`dev-manual/wic:creating partitioned images using wic`"
9943      section in the Yocto Project Development Tasks Manual. For details on
9944      the kickstart file format, see the ":doc:`/ref-manual/kickstart`" Chapter.
9945
9946   :term:`WKS_FILE_DEPENDS`
9947      When placed in the recipe that builds your image, this variable lists
9948      build-time dependencies. The :term:`WKS_FILE_DEPENDS` variable is only
9949      applicable when Wic images are active (i.e. when
9950      :term:`IMAGE_FSTYPES` contains entries related
9951      to Wic). If your recipe does not create Wic images, the variable has
9952      no effect.
9953
9954      The :term:`WKS_FILE_DEPENDS` variable is similar to the
9955      :term:`DEPENDS` variable. When you use the variable in
9956      your recipe that builds the Wic image, dependencies you list in the
9957      :term:`WKS_FILE_DEPENDS` variable are added to the :term:`DEPENDS` variable.
9958
9959      With the :term:`WKS_FILE_DEPENDS` variable, you have the possibility to
9960      specify a list of additional dependencies (e.g. native tools,
9961      bootloaders, and so forth), that are required to build Wic images.
9962      Here is an example::
9963
9964         WKS_FILE_DEPENDS = "some-native-tool"
9965
9966      In the
9967      previous example, some-native-tool would be replaced with an actual
9968      native tool on which the build would depend.
9969
9970   :term:`WKS_FILES`
9971      Specifies a list of candidate Wic kickstart files to be used by the
9972      OpenEmbedded build system to create a partitioned image. Only the
9973      first one that is found, from left to right, will be used.
9974
9975      This is only useful when there are multiple ``.wks`` files that can be
9976      used to produce an image. A typical case is when multiple layers are
9977      used for different hardware platforms, each supplying a different
9978      ``.wks`` file. In this case, you specify all possible ones through
9979      :term:`WKS_FILES`.
9980
9981      If only one ``.wks`` file is used, set :term:`WKS_FILE` instead.
9982
9983   :term:`WORKDIR`
9984      The pathname of the work directory in which the OpenEmbedded build
9985      system builds a recipe. This directory is located within the
9986      :term:`TMPDIR` directory structure and is specific to
9987      the recipe being built and the system for which it is being built.
9988
9989      The :term:`WORKDIR` directory is defined as follows::
9990
9991         ${TMPDIR}/work/${MULTIMACH_TARGET_SYS}/${PN}/${EXTENDPE}${PV}-${PR}
9992
9993      The actual directory depends on several things:
9994
9995      -  :term:`TMPDIR`: The top-level build output directory
9996      -  :term:`MULTIMACH_TARGET_SYS`: The target system identifier
9997      -  :term:`PN`: The recipe name
9998      -  :term:`EXTENDPE`: The epoch --- if :term:`PE` is not specified, which
9999         is usually the case for most recipes, then :term:`EXTENDPE` is blank.
10000      -  :term:`PV`: The recipe version
10001      -  :term:`PR`: The recipe revision
10002
10003      As an example, assume a Source Directory top-level folder name
10004      ``poky``, a default :term:`Build Directory` at ``poky/build``, and a
10005      ``qemux86-poky-linux`` machine target system. Furthermore, suppose
10006      your recipe is named ``foo_1.3.0-r0.bb``. In this case, the work
10007      directory the build system uses to build the package would be as
10008      follows::
10009
10010         poky/build/tmp/work/qemux86-poky-linux/foo/1.3.0-r0
10011
10012   :term:`XSERVER`
10013      Specifies the packages that should be installed to provide an X
10014      server and drivers for the current machine, assuming your image
10015      directly includes ``packagegroup-core-x11-xserver`` or, perhaps
10016      indirectly, includes "x11-base" in
10017      :term:`IMAGE_FEATURES`.
10018
10019      The default value of :term:`XSERVER`, if not specified in the machine
10020      configuration, is "xserver-xorg xf86-video-fbdev xf86-input-evdev".
10021
10022   :term:`XZ_THREADS`
10023      Specifies the number of parallel threads that should be used when
10024      using xz compression.
10025
10026      By default this scales with core count, but is never set less than 2
10027      to ensure that multi-threaded mode is always used so that the output
10028      file contents are deterministic. Builds will work with a value of 1
10029      but the output will differ compared to the output from the compression
10030      generated when more than one thread is used.
10031
10032      On systems where many tasks run in parallel, setting a limit to this
10033      can be helpful in controlling system resource usage.
10034
10035   :term:`XZ_MEMLIMIT`
10036      Specifies the maximum memory the xz compression should use as a percentage
10037      of system memory. If unconstrained the xz compressor can use large amounts of
10038      memory and become problematic with parallelism elsewhere in the build.
10039      "50%" has been found to be a good value.
10040
10041   :term:`ZSTD_THREADS`
10042      Specifies the number of parallel threads that should be used when
10043      using ZStandard compression.
10044
10045      By default this scales with core count, but is never set less than 2
10046      to ensure that multi-threaded mode is always used so that the output
10047      file contents are deterministic. Builds will work with a value of 1
10048      but the output will differ compared to the output from the compression
10049      generated when more than one thread is used.
10050
10051      On systems where many tasks run in parallel, setting a limit to this
10052      can be helpful in controlling system resource usage.
10053