.. 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 https://www.denx.de/wiki/view/U-Boot/ReleaseCycle 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.
