.. 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_STRING (string #define)
      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

   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.

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_DMI_DATE "01/06/2021"  (US format only)
   #define U_BOOT_BUILD_DATE 0x20210106  (hex yyyymmdd format)
   #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.
