| SPDX-License-Identifier: GPL-2.0 | |
| U-Boot is Free Software. It is copyrighted by Wolfgang Denk and | |
| many others who contributed code (see the actual source code and the | |
| git commit messages for details). You can redistribute U-Boot and/or | |
| modify it under the terms of version 2 of the GNU General Public | |
| License as published by the Free Software Foundation. Most of it can | |
| also be distributed, at your option, under any later version of the | |
| GNU General Public License -- see individual files for exceptions. | |
| NOTE! This license does *not* cover the so-called "standalone" | |
| applications that use U-Boot services by means of the jump table | |
| provided by U-Boot exactly for this purpose - this is merely | |
| considered normal use of U-Boot, and does *not* fall under the | |
| heading of "derived work" -- see file Licenses/Exceptions for | |
| details. | |
| Also note that the GPL and the other licenses are copyrighted by | |
| the Free Software Foundation and other organizations, but the | |
| instance of code that they refer to (the U-Boot source code) is | |
| copyrighted by me and others who actually wrote it. | |
| -- Wolfgang Denk | |
| Like many other projects, U-Boot has a tradition of including big | |
| blocks of License headers in all files. This not only blows up the | |
| source code with mostly redundant information, but also makes it very | |
| difficult to generate License Clearing Reports. An additional problem | |
| is that even the same licenses are referred to by a number of | |
| slightly varying text blocks (full, abbreviated, different | |
| indentation, line wrapping and/or white space, with obsolete address | |
| information, ...) which makes automatic processing a nightmare. | |
| To make this easier, such license headers in the source files will be | |
| replaced with a single line reference to Unique License Identifiers | |
| as defined by the Linux Foundation's SPDX project [1]. | |
| If a "SPDX-License-Identifier:" line references more than one Unique | |
| License Identifier, then this means that the respective file can be | |
| used under the terms of either of these licenses, i. e. with | |
| SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause | |
| you can choose between GPL-2.0+ and BSD-3-Clause licensing. | |
| We use the SPDX Unique License Identifiers here; these are available | |
| at [2]. | |
| License identifier syntax | |
| ------------------------- | |
| 1. Placement: | |
| The SPDX license identifier in U-Boot files shall be added at the first | |
| possible line in a file which can contain a comment. For the majority | |
| or files this is the first line, except for scripts which require the | |
| '#!PATH_TO_INTERPRETER' in the first line. For those scripts the SPDX | |
| identifier goes into the second line. | |
| | | |
| 2. Style: | |
| The SPDX license identifier is added in form of a comment. The comment | |
| style depends on the file type:: | |
| C source: // SPDX-License-Identifier: <SPDX License Expression> | |
| C header: /* SPDX-License-Identifier: <SPDX License Expression> */ | |
| ASM: /* SPDX-License-Identifier: <SPDX License Expression> */ | |
| scripts: # SPDX-License-Identifier: <SPDX License Expression> | |
| .rst: .. SPDX-License-Identifier: <SPDX License Expression> | |
| .dts{i}: // SPDX-License-Identifier: <SPDX License Expression> | |
| If a specific tool cannot handle the standard comment style, then the | |
| appropriate comment mechanism which the tool accepts shall be used. This | |
| is the reason for having the "/\* \*/" style comment in C header | |
| files. There was build breakage observed with generated .lds files where | |
| 'ld' failed to parse the C++ comment. This has been fixed by now, but | |
| there are still older assembler tools which cannot handle C++ style | |
| comments. | |
| | | |
| 3. Syntax: | |
| A <SPDX License Expression> is either an SPDX short form license | |
| identifier found on the SPDX License List, or the combination of two | |
| SPDX short form license identifiers separated by "WITH" when a license | |
| exception applies. When multiple licenses apply, an expression consists | |
| of keywords "AND", "OR" separating sub-expressions and surrounded by | |
| "(", ")" . | |
| License identifiers for licenses like [L]GPL with the 'or later' option | |
| are constructed by using a "+" for indicating the 'or later' option.:: | |
| // SPDX-License-Identifier: GPL-2.0+ | |
| // SPDX-License-Identifier: LGPL-2.1+ | |
| WITH should be used when there is a modifier to a license needed. | |
| For example, the linux kernel UAPI files use the expression:: | |
| // SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note | |
| // SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note | |
| Other examples using WITH exceptions found in the linux kernel are:: | |
| // SPDX-License-Identifier: GPL-2.0 WITH mif-exception | |
| // SPDX-License-Identifier: GPL-2.0+ WITH GCC-exception-2.0 | |
| Exceptions can only be used with particular License identifiers. The | |
| valid License identifiers are listed in the tags of the exception text | |
| file. | |
| OR should be used if the file is dual licensed and only one license is | |
| to be selected. For example, some dtsi files are available under dual | |
| licenses:: | |
| // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause | |
| Examples from U-Boot for license expressions in dual licensed files:: | |
| // SPDX-License-Identifier: GPL-2.0 OR MIT | |
| // SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause | |
| AND should be used if the file has multiple licenses whose terms all | |
| apply to use the file. For example, if code is inherited from another | |
| project and permission has been given to put it in U-Boot, but the | |
| original license terms need to remain in effect:: | |
| // SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note) AND MIT | |
| Another other example where both sets of license terms need to be | |
| adhered to is:: | |
| // SPDX-License-Identifier: GPL-1.0+ AND LGPL-2.1+ | |
| [1] http://spdx.org/ | |
| [2] http://spdx.org/licenses/ | |
| Full name SPDX Identifier OSI Approved File name URI | |
| ======================================================================================================================================= | |
| GNU General Public License v2.0 only GPL-2.0 Y gpl-2.0.txt http://www.gnu.org/licenses/gpl-2.0.txt | |
| GNU General Public License v2.0 or later GPL-2.0+ Y gpl-2.0.txt http://www.gnu.org/licenses/gpl-2.0.txt | |
| GNU 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 | |
| GNU 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 | |
| eCos license version 2.0 eCos-2.0 eCos-2.0.txt http://www.gnu.org/licenses/ecos-license.html | |
| BSD 2-Clause License BSD-2-Clause Y bsd-2-clause.txt http://spdx.org/licenses/BSD-2-Clause | |
| BSD 3-clause "New" or "Revised" License BSD-3-Clause Y bsd-3-clause.txt http://spdx.org/licenses/BSD-3-Clause#licenseText | |
| IBM PIBS (PowerPC Initialization and IBM-pibs ibm-pibs.txt | |
| Boot Software) license | |
| ISC License ISC Y isc.txt https://spdx.org/licenses/ISC | |
| SIL OPEN FONT LICENSE (OFL-1.1) OFL-1.1 Y OFL.txt https://spdx.org/licenses/OFL-1.1.html | |
| X11 License X11 x11.txt https://spdx.org/licenses/X11.html |