1SPDX-License-Identifier: GPL-2.0
   3  U-Boot is Free Software.  It is copyrighted by Wolfgang Denk and
   4many others who contributed code (see the actual source code and the
   5git commit messages for details).  You can redistribute U-Boot and/or
   6modify it under the terms of version 2 of the GNU General Public
   7License as published by the Free Software Foundation.  Most of it can
   8also be distributed, at your option, under any later version of the
   9GNU General Public License -- see individual files for exceptions.
  11  NOTE! This license does *not* cover the so-called "standalone"
  12applications that use U-Boot services by means of the jump table
  13provided by U-Boot exactly for this purpose - this is merely
  14considered normal use of U-Boot, and does *not* fall under the
  15heading of "derived work" -- see file  Licenses/Exceptions  for
  18  Also note that the GPL and the other licenses are copyrighted by
  19the Free Software Foundation and other organizations, but the
  20instance of code that they refer to (the U-Boot source code) is
  21copyrighted by me and others who actually wrote it.
  22-- Wolfgang Denk
  25Like many other projects, U-Boot has a tradition of including big
  26blocks of License headers in all files.  This not only blows up the
  27source code with mostly redundant information, but also makes it very
  28difficult to generate License Clearing Reports.  An additional problem
  29is that even the same licenses are referred to by a number of
  30slightly varying text blocks (full, abbreviated, different
  31indentation, line wrapping and/or white space, with obsolete address
  32information, ...) which makes automatic processing a nightmare.
  34To make this easier, such license headers in the source files will be
  35replaced with a single line reference to Unique License Identifiers
  36as defined by the Linux Foundation's SPDX project [1].
  38If a "SPDX-License-Identifier:" line references more than one Unique
  39License Identifier, then this means that the respective file can be
  40used under the terms of either of these licenses, i. e. with
  42        SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
  44you can choose between GPL-2.0+ and BSD-3-Clause licensing.
  46We use the SPDX Unique License Identifiers here; these are available
  47at [2].
  49License identifier syntax
  521. Placement:
  54   The SPDX license identifier in U-Boot files shall be added at the first
  55   possible line in a file which can contain a comment.  For the majority
  56   or files this is the first line, except for scripts which require the
  57   '#!PATH_TO_INTERPRETER' in the first line.  For those scripts the SPDX
  58   identifier goes into the second line.
  622. Style:
  64   The SPDX license identifier is added in form of a comment.  The comment
  65   style depends on the file type::
  67      C source: // SPDX-License-Identifier: <SPDX License Expression>
  68      C header: /* SPDX-License-Identifier: <SPDX License Expression> */
  69      ASM:      /* SPDX-License-Identifier: <SPDX License Expression> */
  70      scripts:  # SPDX-License-Identifier: <SPDX License Expression>
  71      .rst:     .. SPDX-License-Identifier: <SPDX License Expression>
  72      .dts{i}:  // SPDX-License-Identifier: <SPDX License Expression>
  74   If a specific tool cannot handle the standard comment style, then the
  75   appropriate comment mechanism which the tool accepts shall be used. This
  76   is the reason for having the "/\* \*/" style comment in C header
  77   files. There was build breakage observed with generated .lds files where
  78   'ld' failed to parse the C++ comment. This has been fixed by now, but
  79   there are still older assembler tools which cannot handle C++ style
  843. Syntax:
  86   A <SPDX License Expression> is either an SPDX short form license
  87   identifier found on the SPDX License List, or the combination of two
  88   SPDX short form license identifiers separated by "WITH" when a license
  89   exception applies. When multiple licenses apply, an expression consists
  90   of keywords "AND", "OR" separating sub-expressions and surrounded by
  91   "(", ")" .
  93   License identifiers for licenses like [L]GPL with the 'or later' option
  94   are constructed by using a "+" for indicating the 'or later' option.::
  96      // SPDX-License-Identifier: GPL-2.0+
  97      // SPDX-License-Identifier: LGPL-2.1+
  99   WITH should be used when there is a modifier to a license needed.
 100   For example, the linux kernel UAPI files use the expression::
 102      // SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
 103      // SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note
 105   Other examples using WITH exceptions found in the linux kernel are::
 107      // SPDX-License-Identifier: GPL-2.0 WITH mif-exception
 108      // SPDX-License-Identifier: GPL-2.0+ WITH GCC-exception-2.0
 110   Exceptions can only be used with particular License identifiers. The
 111   valid License identifiers are listed in the tags of the exception text
 112   file.
 114   OR should be used if the file is dual licensed and only one license is
 115   to be selected.  For example, some dtsi files are available under dual
 116   licenses::
 118      // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
 120   Examples from U-Boot for license expressions in dual licensed files::
 122      // SPDX-License-Identifier: GPL-2.0 OR MIT
 123      // SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
 125   AND should be used if the file has multiple licenses whose terms all
 126   apply to use the file. For example, if code is inherited from another
 127   project and permission has been given to put it in U-Boot, but the
 128   original license terms need to remain in effect::
 130      // SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note) AND MIT
 132   Another other example where both sets of license terms need to be
 133   adhered to is::
 135      // SPDX-License-Identifier: GPL-1.0+ AND LGPL-2.1+
 137[1] http://spdx.org/
 138[2] http://spdx.org/licenses/
 140Full name                                       SPDX Identifier OSI Approved    File name               URI
 142GNU General Public License v2.0 only            GPL-2.0         Y               gpl-2.0.txt             http://www.gnu.org/licenses/gpl-2.0.txt
 143GNU General Public License v2.0 or later        GPL-2.0+        Y               gpl-2.0.txt             http://www.gnu.org/licenses/gpl-2.0.txt
 144GNU Library General Public License v2 or later  LGPL-2.0+       Y               lgpl-2.0.txt            http://www.gnu.org/licenses/old-licenses/lgpl-2.0.txt
 145GNU Lesser General Public License v2.1 or later LGPL-2.1+       Y               lgpl-2.1.txt            http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt
 146eCos license version 2.0                        eCos-2.0                        eCos-2.0.txt            http://www.gnu.org/licenses/ecos-license.html
 147BSD 2-Clause License                            BSD-2-Clause    Y               bsd-2-clause.txt        http://spdx.org/licenses/BSD-2-Clause
 148BSD 3-clause "New" or "Revised" License         BSD-3-Clause    Y               bsd-3-clause.txt        http://spdx.org/licenses/BSD-3-Clause#licenseText
 149IBM PIBS (PowerPC Initialization and            IBM-pibs                        ibm-pibs.txt
 150        Boot Software) license
 151ISC License                                     ISC             Y               isc.txt                 https://spdx.org/licenses/ISC
 152MIT License                                     MIT             Y               mit.txt                 https://spdx.org/licenses/MIT.html
 153SIL OPEN FONT LICENSE (OFL-1.1)                 OFL-1.1         Y               OFL.txt                 https://spdx.org/licenses/OFL-1.1.html
 154X11 License                                     X11                             x11.txt                 https://spdx.org/licenses/X11.html