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