Index: llvm/LICENSE.TXT =================================================================== --- llvm/LICENSE.TXT +++ llvm/LICENSE.TXT @@ -1,5 +1,240 @@ ============================================================================== -LLVM Release License +The LLVM Project is under the Apache License v2.0 with LLVM Exceptions: +============================================================================== + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +--- LLVM Exceptions to the Apache 2.0 License ---- + +As an exception, if, as a result of your compiling your source code, portions +of this Software are embedded into an Object form of such source code, you +may redistribute such embedded portions in such Object form without complying +with the conditions of Sections 4(a), 4(b) and 4(d) of the License. + +In addition, if you combine or link compiled forms of this Software with +software that is licensed under the GPLv2 ("Combined Software") and if a +court of competent jurisdiction determines that the patent provision (Section +3), the indemnity provision (Section 9) or other Section of the License +conflicts with the conditions of the GPLv2, you may retroactively and +prospectively choose to deem waived or otherwise exclude such Section(s) of +the License, but only in their entirety and only with respect to the Combined +Software. + +============================================================================== +Software from third parties included in the LLVM Project: +============================================================================== +The LLVM Project contains third party software which is under different license +terms. All such code will be identified clearly using at least one of two +mechanisms: +1) It will be in a separate directory tree with its own `LICENSE.txt` or + `LICENSE` file at the top containing the specific license and restructions + which apply to that software, or +2) It will contain specific license and restriction terms at the top of every + file. + +============================================================================== +Legacy LLVM License (ttps://llvm.org/docs/DeveloperPolicy.html#legacy): ============================================================================== University of Illinois/NCSA Open Source License @@ -42,27 +277,3 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE SOFTWARE. -============================================================================== -Copyrights and Licenses for Third Party Software Distributed with LLVM: -============================================================================== -The LLVM software contains code written by third parties. Such software will -have its own individual LICENSE.TXT file in the directory in which it appears. -This file will describe the copyrights, license, and restrictions which apply -to that code. - -The disclaimer of warranty in the University of Illinois Open Source License -applies to all code in the LLVM Distribution, and nothing in any of the -other licenses gives permission to use the names of the LLVM Team or the -University of Illinois to endorse or promote products derived from this -Software. - -The following pieces of software have additional or alternate copyrights, -licenses, and/or restrictions: - -Program Directory -------- --------- -Google Test llvm/utils/unittest/googletest -OpenBSD regex llvm/lib/Support/{reg*, COPYRIGHT.regex} -pyyaml tests llvm/test/YAMLParser/{*.data, LICENSE.TXT} -ARM contributions llvm/lib/Target/ARM/LICENSE.TXT -md5 contributions llvm/lib/Support/MD5.cpp llvm/include/llvm/Support/MD5.h Index: llvm/docs/DeveloperPolicy.rst =================================================================== --- llvm/docs/DeveloperPolicy.rst +++ llvm/docs/DeveloperPolicy.rst @@ -113,8 +113,8 @@ program. When submitting patches, please do not add confidentiality or non-disclosure -notices to the patches themselves. These notices conflict with the `LLVM -License`_ and may result in your contribution being excluded. +notices to the patches themselves. These notices conflict with the LLVM +licensing terms and may result in your contribution being excluded. .. _code review: @@ -646,44 +646,226 @@ .. note:: This section deals with legal matters but does not provide legal advice. We - are not lawyers --- please seek legal counsel from an attorney. + are not lawyers --- please seek legal counsel from a licensed attorney. This section addresses the issues of copyright, license and patents for the LLVM -project. The copyright for the code is held by the individual contributors of -the code and the terms of its license to LLVM users and developers is the -`University of Illinois/NCSA Open Source License -`_ (with portions dual licensed -under the `MIT License `_, -see below). As contributor to the LLVM project, you agree to allow any -contributions to the project to licensed under these terms. +project. The copyright for the code is held by the contributors of +the code. The code is licensed under permissive `open source licensing terms`_, +namely the Apache 2 license, which includes a copyright and `patent license`_. +When you contribute code to the LLVM project, you license it under these terms. + +If you have questions or comments about these topics, please contact the +`LLVM Developer's Mailing List `_. However, +please realize that most compiler developers are not lawyers, and therefore you +will not be getting official legal advice. Copyright --------- -The LLVM project does not require copyright assignments, which means that the -copyright for the code in the project is held by its respective contributors who -have each agreed to release their contributed code under the terms of the `LLVM -License`_. +The LLVM project does not collect copyright assignments, which means that the +copyright for the code in the project is held by the respective contributors. +Because you (or your company) +retain ownership of the code you contribute, you know it may only be used under +the terms of the open source license you contributed it under: the license for +your contributions cannot be changed in the future without your approval. + +Because the LLVM project does not require copyright assignments, changing the +LLVM license requires tracking down the +contributors to LLVM and getting them to agree that a license change is +acceptable for their contributions. We feel that a high burden for relicensing +is good for the project, because contributors do not have to fear that their +code will be used in a way with which they disagree. + +Relicensing +----------- + +The last paragraph notwithstanding, the LLVM Project is in the middle of a large +effort to change licenses, which aims to solve several problems: + +* The old licenses made it difficult to move code from (e.g.) the compiler to + runtime libraries, because runtime libraries used a different license from the + rest of the compiler. +* Some contributions were not submitted to LLVM due to concerns that + the patent grant required by the project was overly broad. +* The patent grant was unique to the LLVM Project, not written by a lawyer, and + was difficult to determine what was protection was provided (if any). + +The scope of relicensing is all code that is considered part of the LLVM +project, including the main LLVM repository, runtime libraries (compiler_rt, +OpenMP, etc), Polly, and all other subprojects. There are a few exceptions: + +* Code imported from other projects (e.g. Google Test, Autoconf, etc) will + remain as it is. This code isn't developed as part of the LLVM project, it + is used by LLVM. +* Some subprojects are impractical or uninteresting to relicense (e.g. llvm-gcc + and dragonegg). These will be split off from the LLVM project (e.g. to + separate Github projects), allowing interested people to continue their + development elsewhere. + +To relicense LLVM, we will be seeking approval from all of the copyright holders +of code in the repository, or potentially remove/rewrite code if we cannot. +This is a large +and challenging project which will take a significant amount of time to +complete. In the interim, **all contributions to the project will be made under +the terms of both the new license and the legacy license scheme** (each of which +is described below). The exception to this is the legacy patent grant, which +will not be required for new contributions. + +When all of the code in the project has been converted to the new license or +removed, we will drop the requirement to contribute under the legacy license. +This will achieve the goal of having +a single standardized license for the entire codebase. + +If you are a prior contributor to LLVM and have not done so already, please do +*TODO* to allow us to use your code. *Add a link to a separate page here, which +is probably a click through web form or something like that. Details to be +determined later*. + + +.. _open source licensing terms: + +New LLVM Project License Framework +---------------------------------- + +Contributions to LLVM are licensed under the `Apache License, Version 2.0 +`_, with two limited +exceptions intended to ensure that LLVM is very permissively licensed. +Collectively, the name of this license is "Apache 2.0 License with LLVM +exceptions". The exceptions read: + +:: + + ---- LLVM Exceptions to the Apache 2.0 License ---- + + As an exception, if, as a result of your compiling your source code, portions + of this Software are embedded into an Object form of such source code, you + may redistribute such embedded portions in such Object form without complying + with the conditions of Sections 4(a), 4(b) and 4(d) of the License. + + In addition, if you combine or link compiled forms of this Software with + software that is licensed under the GPLv2 ("Combined Software") and if a + court of competent jurisdiction determines that the patent provision (Section + 3), the indemnity provision (Section 9) or other Section of the License + conflicts with the conditions of the GPLv2, you may retroactively and + prospectively choose to deem waived or otherwise exclude such Section(s) of + the License, but only in their entirety and only with respect to the Combined + Software. + + +We intend to keep LLVM perpetually open source and available under a permissive +license - this fosters the widest adoption of LLVM by +**allowing commercial products to be derived from LLVM** with few restrictions +and without a requirement for making any derived works also open source. In +particular, LLVM's license is not a "copyleft" license like the GPL. + +The "Apache 2.0 License with LLVM exceptions" allows you to: + +* freely download and use LLVM (in whole or in part) for personal, internal, or + commercial purposes. +* include LLVM in packages or distributions you create. +* combine LLVM with code licensed under every other major open source + license (including BSD, MIT, GPLv2, GPLv3...). +* make changes to LLVM code without being required to contribute it back + to the project - contributions are appreciated though! + +However, it imposes these limitations on you: + +* You must retain the copyright notice if you redistribute LLVM: You cannot + strip the copyright headers off or replace them with your own. +* Binaries that include LLVM must reproduce the copyright notice (e.g. in an + included README file or in an "About" box), unless the LLVM code was added as + a by-product of compilation. For example, if an LLVM runtime library like + compiler_rt or libc++ was automatically included into your application by the + compiler, you do not need to attribute it. +* You can't use our names to promote your products (LLVM derived or not) - + though you can make truthful statements about your use of the LLVM code, + without implying our sponsorship. +* There's no warranty on LLVM at all. + +We want LLVM code to be widely used, and believe that this provides a model that +is great for contributors and users of the project. For more information about +the Apache 2.0 License, please see the `Apache License FAQ +`_, maintained by the +Apache Project. + + +.. note:: -An implication of this is that the LLVM license is unlikely to ever change: -changing it would require tracking down all the contributors to LLVM and getting -them to agree that a license change is acceptable for their contribution. Since -there are no plans to change the license, this is not a cause for concern. + The LLVM Project includes some really old subprojects (dragonegg, + llvm-gcc-4.0, and llvm-gcc-4.2), which are licensed under **GPL + licenses**. This code is not actively maintained - it does not even + build successfully. This code is cleanly separated into distinct SVN + repositories from the rest of LLVM, and the LICENSE.txt files specifically + indicate that they contain GPL code. When LLVM transitions from SVN to Git, + we plan to drop these code bases from the new repository structure. -As a contributor to the project, this means that you (or your company) retain -ownership of the code you contribute, that it cannot be used in a way that -contradicts the license (which is a liberal BSD-style license), and that the -license for your contributions won't change without your approval in the -future. -.. _LLVM License: +.. _patent license: -License +Patents ------- -We intend to keep LLVM perpetually open source and to use a liberal open source -license. **As a contributor to the project, you agree that any contributions be -licensed under the terms of the corresponding subproject.** All of the code in +Section 3 of the Apache 2.0 license is a patent grant under which +contributors of code to the project contribute the rights to use any of +their patents that would otherwise be infringed by that code contribution +(protecting uses of that code). Further, the patent grant is revoked +from anyone who files a patent lawsuit about code in LLVM - this protects the +community by providing a "patent commons" for the code base and reducing the +odds of patent lawsuits in general. + +The license specifically scopes which patents are included with code +contributions. To help explain this, the `Apache License FAQ +`_ explains this scope using +some questions and answers, which we reproduce here for your convenience (for +reference, the "ASF" is the Apache Software Foundation, the guidance still +holds though):: + + Q1: If I own a patent and contribute to a Work, and, at the time my + contribution is included in that Work, none of my patent's claims are subject + to Apache's Grant of Patent License, is there a way any of those claims would + later become subject to the Grant of Patent License solely due to subsequent + contributions by other parties who are not licensees of that patent. + + A1: No. + + Q2: If at any time after my contribution, I am able to license other patent + claims that would have been subject to Apache's Grant of Patent License if + they were licenseable by me at the time of my contribution, do those other + claims become subject to the Grant of Patent License? + + A2: Yes. + + Q3: If I own or control a licensable patent and contribute code to a specific + Apache product, which of my patent claims are subject to Apache's Grant of + Patent License? + + A3: The only patent claims that are licensed to the ASF are those you own or + have the right to license that read on your contribution or on the + combination of your contribution with the specific Apache product to which + you contributed as it existed at the time of your contribution. No additional + patent claims become licensed as a result of subsequent combinations of your + contribution with any other software. Note, however, that licensable patent + claims include those that you acquire in the future, as long as they read on + your original contribution as made at the original time. Once a patent claim + is subject to Apache's Grant of Patent License, it is licensed under the + terms of that Grant to the ASF and to recipients of any software distributed + by the ASF for any Apache software product whatsoever. + + +Legacy License Structure +------------------------ + +.. note:: + The code base was previously licensed under the Terms described here. + We are in the middle of relicensing to a new approach (described above), but + until this effort is complete, the code is also still available under these + terms. Once we finish the relicensing project, new versions of the code will + not be available under these terms. However, nothing takes away your right + to use old versions under the licensing terms under which they were + originally released. + +We intend to keep LLVM perpetually open source and to use a permissive open +source license. The code in LLVM is available under the `University of Illinois/NCSA Open Source License `_, which boils down to this: @@ -691,13 +873,13 @@ * You can freely distribute LLVM. * You must retain the copyright notice if you redistribute LLVM. * Binaries derived from LLVM must reproduce the copyright notice (e.g. in an - included readme file). + included README file). * You can't use our names to promote your LLVM derived products. * There's no warranty on LLVM at all. We believe this fosters the widest adoption of LLVM because it **allows commercial products to be derived from LLVM** with few restrictions and without -a requirement for making any derived works also open source (i.e. LLVM's +a requirement for making any derived works also open source (i.e. LLVM's license is not a "copyleft" license like the GPL). We suggest that you read the `License `_ if further clarification is needed. @@ -715,30 +897,3 @@ to move code from (e.g.) libc++ to the LLVM core without concern, but that code cannot be moved from the LLVM core to libc++ without the copyright owner's permission. - -Note that the LLVM Project does distribute dragonegg, **which is -GPL.** This means that anything "linked" into dragonegg must itself be compatible -with the GPL, and must be releasable under the terms of the GPL. This implies -that **any code linked into dragonegg and distributed to others may be subject to -the viral aspects of the GPL** (for example, a proprietary code generator linked -into dragonegg must be made available under the GPL). This is not a problem for -code already distributed under a more liberal license (like the UIUC license), -and GPL-containing subprojects are kept in separate SVN repositories whose -LICENSE.txt files specifically indicate that they contain GPL code. - -Patents -------- - -To the best of our knowledge, LLVM does not infringe on any patents (we have -actually removed code from LLVM in the past that was found to infringe). Having -code in LLVM that infringes on patents would violate an important goal of the -project by making it hard or impossible to reuse the code for arbitrary purposes -(including commercial use). - -When contributing code, we expect contributors to notify us of any potential for -patent-related trouble with their changes (including from third parties). If -you or your employer own the rights to a patent and would like to contribute -code to LLVM that relies on it, we require that the copyright owner sign an -agreement that allows any other user of LLVM to freely use your patent. Please -contact the `LLVM Foundation Board of Directors `_ for more -details.