ECS Runtime Support Exception

Copyright (C) Florian Negele

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.

This ECS Runtime Support Exception ("Exception") is an additional
permission under section 7 of the GNU General Public License, version
3 ("GPLv3"). It applies to a given file (the "Runtime Support") that
bears a notice placed by the copyright holder of the file stating that
the file is governed by GPLv3 along with this Exception.

When you use the ECS to compile a program, it may combine portions of
certain ECS header and runtime support files with the compiled
program. The purpose of this Exception is to allow compilation of
non-GPL (including proprietary) programs to use, in this way, the
header and runtime support files covered by this Exception.

0. Definitions.

A file is an "Independent Module" if it either requires the Runtime
Support for execution after a Compilation Process, or makes use of an
interface provided by the Runtime Support, but is not otherwise based
on the Runtime Support.

"ECS" means a version of the Eigen Compiler Suite, with or without
modifications, governed by version 3 (or a specified later version) of
the GNU General Public License (GPL) with the option of using any
subsequent versions published by the FSF.

"GPL-compatible Software" is software whose conditions of propagation,
modification and use would permit combination with the ECS in accord
with the license of the ECS.

"Target Code" refers to output from any compiler for a real or virtual
target processor architecture, in executable form or suitable for
input to an assembler, loader, linker and/or execution
phase. Notwithstanding that, Target Code does not include data in any
format that is used as a compiler intermediate representation, or used
for producing a compiler intermediate representation.

The "Compilation Process" transforms code entirely represented in
non-intermediate languages designed for human-written code, and/or in
Java Virtual Machine byte code, into Target Code. Thus, for example,
use of source code generators and preprocessors need not be considered
part of the Compilation Process, since the Compilation Process can be
understood as starting with the output of the generators or
preprocessors.

A Compilation Process is "Eligible" if it is done using the ECS, alone
or with other GPL-compatible software, or if it is done without using
any work based on the ECS. For example, using non-GPL-compatible
Software to optimize any ECS intermediate representations would not
qualify as an Eligible Compilation Process.

1. Grant of Additional Permission.

You have permission to propagate a work of Target Code formed by
combining the Runtime Support with Independent Modules, even if such
propagation would otherwise violate the terms of GPLv3, provided that
all Target Code was generated by Eligible Compilation Processes. You
may then convey such a combination under terms of your choice,
consistent with the licensing of the Independent Modules.

2. No Weakening of ECS Copyleft.

The availability of this Exception does not imply any general
presumption that third-party software is unaffected by the copyleft
requirements of the license of the ECS.
