.. SPDX-License-Identifier: GPL-2.0+
.. Copyright (c) 2013 The Chromium OS Authors.

Version information
===================

U-Boot releases are named by year and patch level, for example 2020.10 means the
release that came out in October 2020. Release candidates are tagged every few
weeks as the project heads to the next release. So 2020.10-rc1 was the first
release candidate (RC), tagged soon after 2020.07 was released.

See :doc:`release_cycle` for full details.

Within the build system, various Makefile variables are created, making use of
VERSION, PATCHLEVEL and EXTRAVERSION defined at the top of 'Makefile'. There is
also SUBLEVEL available for downstream use. See also CONFIG_IDENT_STRING.

Some variables end up in a generated header file at
include/generated/version_autogenerated.h and can be accessed from C source by
including <version.h>

The following are available:

   UBOOTRELEASE (Makefile)
      Full release version as a string. If this is not a tagged release, it also
      includes the number of commits since the last tag as well as the the git
      hash.  If there are uncommitted changes a '-dirty' suffix is added too.

      This is written by scripts/setlocalversion (maintained by Linux) to
      include/config/uboot.release and ends up in the UBOOTRELEASE Makefile
      variable.

      Examples::

         2020.10-rc3
         2021.01-rc5-00248-g60dd854f3ba-dirty

   PLAIN_VERSION (string #define)
      This is UBOOTRELEASE but available in C source.

      Examples::

         2020.10
         2021.01-rc5-00248-g60dd854f3ba-dirty

   UBOOTVERSION (Makefile)
      This holds just the first three components of UBOOTRELEASE (i.e. not the
      git hash, etc.)

      Examples::

         2020.10
         2021.01-rc5

   U_BOOT_VERSION (string #define)
      "U-Boot " followed by UBOOTRELEASE, for example::

         U-Boot 2020.10
         U-Boot 2021.01-rc5

      This is used as part of the banner string when U-Boot starts.

   U_BOOT_VERSION_NUM (integer #define)
      Release year, e.g. 2021 for release 2021.01. Note
      this is an integer, not a string.

   U_BOOT_VERSION_NUM_PATCH (integer #define)
      Patch number, e.g. 1 for release 2020.01. Note
      this is an integer, not a string.

Human readable U-Boot version string is available in header file
include/version_string.h in following variable:

   version_string (const char[])
      U_BOOT_VERSION followed by build-time information
      and CONFIG_IDENT_STRING.

      Examples::

         U-Boot 2020.10 (Jan 06 2021 - 08:50:36 -0700)
         U-Boot 2021.01-rc5-00248-g60dd854f3ba-dirty (Jan 06 2021 - 08:50:36 -0700) for spring

Build date/time is also included. See the generated file
include/generated/timestamp_autogenerated.h for the available
fields. For example::

   #define U_BOOT_DATE "Jan 06 2021"     (US format only)
   #define U_BOOT_TIME "08:50:36"        (24-hour clock)
   #define U_BOOT_TZ "-0700"             (Time zone in hours)
   #define U_BOOT_EPOCH 1609948236

The Epoch is the number of seconds since midnight on 1/1/70. You can convert
this to a time with::

   $ date -u -d @1609948236
   Wed 06 Jan 2021 03:50:36 PM UTC
   $ date -d 'Wed 06 Jan 2021 03:50:36 PM UTC' +%s
   1609948236

Every time you build U-Boot this will update based on the time
on your build machine. See 'Reproducible builds' if you want to
avoid that.
