|
- # SPDX-License-Identifier: GPL-2.0-or-later OR GFDL-1.2-no-invariants-or-later
-
- OpenOCD licensing rules
- =======================
-
- The OpenOCD source code is provided under the terms of the GNU General
- Public License version 2 or later (GPL-2.0-or-later), as provided in
- LICENSES/preferred/GPL-2.0.
-
- The OpenOCD documentation is provided under the terms of the GNU Free
- Documentation License version 1.2 or later without Invariant Sections
- (GFDL-1.2-no-invariants-or-later).
-
- Few stand-alone applications coexist in the same code tree of OpenOCD
- and are provided under the terms of the GNU General Public License
- version 3 (GPL-3.0), as provided in LICENSES/stand-alone/GPL-3.0.
-
- This documentation file provides a description of how each source file
- should be annotated to make its license clear and unambiguous.
- It doesn't replace the OpenOCD's license.
-
- The license described in the COPYING file applies to the OpenOCD source
- as a whole, though individual source files can have a different license
- which is required to be compatible with the GPL-2.0:
-
- GPL-1.0-or-later : GNU General Public License v1.0 or later
- GPL-2.0-or-later : GNU General Public License v2.0 or later
- LGPL-2.0 : GNU Library General Public License v2 only
- LGPL-2.0-or-later : GNU Library General Public License v2 or later
- LGPL-2.1 : GNU Lesser General Public License v2.1 only
- LGPL-2.1-or-later : GNU Lesser General Public License v2.1 or later
-
- Aside from that, individual files can be provided under a dual license,
- e.g. one of the compatible GPL variants and alternatively under a
- permissive license like BSD, MIT etc.
-
- The common way of expressing the license of a source file is to add the
- matching boilerplate text into the top comment of the file. Due to
- formatting, typos etc. these "boilerplates" are hard to validate for
- tools which are used in the context of license compliance.
-
- An alternative to boilerplate text is the use of Software Package Data
- Exchange (SPDX) license identifiers in each source file. SPDX license
- identifiers are machine parsable and precise shorthands for the license
- under which the content of the file is contributed. SPDX license
- identifiers are managed by the SPDX Workgroup at the Linux Foundation and
- have been agreed on by partners throughout the industry, tool vendors, and
- legal teams. For further information see https://spdx.org/
-
- OpenOCD requires the precise SPDX identifier in all source files.
- The valid identifiers used in OpenOCD are explained in the section
- `License identifiers` and have been retrieved from the official SPDX
- license list at https://spdx.org/licenses/ along with the license texts.
-
- License identifier syntax
- -------------------------
-
- 1. Placement:
-
- The SPDX license identifier in OpenOCD files shall be added at the
- first possible line in a file which can contain a comment. For the
- majority of 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> */
- makefiles: # SPDX-License-Identifier: <SPDX License Expression>
- scripts: # SPDX-License-Identifier: <SPDX License Expression>
- texinfo: @c SPDX-License-Identifier: <SPDX License Expression>
- text: # 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 "-or-later":
-
- // SPDX-License-Identifier: GPL-2.0-or-later
- // SPDX-License-Identifier: LGPL-2.1-or-later
-
- WITH should be used when there is a modifier to a license needed.
- 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 source files are available under dual
- licenses:
-
- // SPDX-License-Identifier: GPL-2.0-or-later OR BSD-1-Clause
- // SPDX-License-Identifier: GPL-2.0-or-later OR BSD-2-Clause
- // SPDX-License-Identifier: GPL-2.0-or-later 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 OpenOCD, but the
- original license terms need to remain in effect::
-
- // SPDX-License-Identifier: GPL-2.0-or-later AND MIT
-
- License identifiers
- -------------------
-
- The licenses currently used, as well as the licenses for code added to
- OpenOCD, can be broken down into:
-
- 1. `Preferred licenses`:
-
- Whenever possible these licenses should be used as they are known to be
- fully compatible and widely used. These licenses are available from the
- directory:
-
- LICENSES/preferred/
-
- in the OpenOCD source tree.
-
- The files in this directory contain the full license text and
- `Metatags`. The file names are identical to the SPDX license
- identifier which shall be used for the license in source files.
-
- Examples:
-
- LICENSES/preferred/GPL-2.0
-
- Contains the GPL version 2 license text and the required metatags.
-
- `Metatags`:
-
- The following meta tags must be available in a license file:
-
- - Valid-License-Identifier:
-
- One or more lines which declare which License Identifiers are valid
- inside the project to reference this particular license text. Usually
- this is a single valid identifier, but e.g. for licenses with the 'or
- later' options two identifiers are valid.
-
- - SPDX-URL:
-
- The URL of the SPDX page which contains additional information related
- to the license.
-
- - Usage-Guidance:
-
- Freeform text for usage advice. The text must include correct examples
- for the SPDX license identifiers as they should be put into source
- files according to the `License identifier syntax` guidelines.
-
- - License-Text:
-
- All text after this tag is treated as the original license text
-
- File format examples::
-
- Valid-License-Identifier: GPL-2.0
- Valid-License-Identifier: GPL-2.0-only
- Valid-License-Identifier: GPL-2.0-or-later
- SPDX-URL: https://spdx.org/licenses/GPL-2.0.html
- Usage-Guide:
- To use this license in source code, put one of the following SPDX
- tag/value pairs into a comment according to the placement
- guidelines in the licensing rules documentation.
- For 'GNU General Public License (GPL) version 2 only' use:
- SPDX-License-Identifier: GPL-2.0
- or
- SPDX-License-Identifier: GPL-2.0-only
- For 'GNU General Public License (GPL) version 2 or any later version' use:
- SPDX-License-Identifier: GPL-2.0-or-later
- License-Text:
- Full license text
-
- 2. Stand-alone licenses:
-
- These licenses should only be used for stand-alone applications that are
- distributed with OpenOCD but are not included in the OpenOCD binary.
- These licenses are available from the directory:
-
- LICENSES/stand-alone/
-
- in the OpenOCD source tree.
-
- Examples:
-
- SPDX-License-Identifier: GPL-3.0
-
- The format and requirements of the license files in the other sub-directories
- of directory
-
- LICENSES
-
- have to follow the same format and requirements of the `Preferred licenses`.
-
- All SPDX license identifiers and exceptions must have a corresponding file
- in the LICENSES subdirectories. This is required to allow tool
- verification (e.g. checkpatch.pl) and to have the licenses ready to read
- and extract right from the source, which is recommended by various FOSS
- organizations, e.g. the `FSFE REUSE initiative <https://reuse.software/>`.
|