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