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