11

I found the following text in licenses to some software I am considering to use:

As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.

or

As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program. This Exception is an additional permission under section 7
# of the GNU General Public License, version 3 ("GPLv3").

or

As a special exception to the GNU General Public License, if you
# distribute this file as part of a program or library that is built
# using GNU Libtool, you may include this file under the  same
# distribution terms that you use for the rest of that program.

I am confused.. if I switch my main application to use Autoconf or Libtool, then I can bundle GPL code under proprietary terms?

6
  • Does this link help? gnu.org/licenses/autoconf-exception-3.0.en.html (for older versions I found this: spdx.org/licenses/GPL-2.0-with-autoconf-exception.html Jan 18, 2022 at 9:14
  • hmm. so the exceptions only apply to build scripts/build programs?
    – scrrr
    Jan 18, 2022 at 9:24
  • 5
    The exception very clearly says "if you distribute this file". It does not apply to anything which is not that one specific file. I'm not really sure how this could be any more clear - could you explain what you are having difficulty understanding here? Jan 18, 2022 at 9:45
  • 4
    @PhilipKendall I suppose I am bad at reading legalese. I parsed 'it' as belonging to the program, but it refers to 'this file'. Which now seems obvious, but it confused me nevertheless.
    – scrrr
    Jan 18, 2022 at 10:44
  • 1
    The "you may include it under the same terms [as] the rest of that program." part should also make it somewhat clear that "it" can't really be "that program". That interpretation would make the sentence rather lacking in meaning and wouldn't say anything about what those terms of distribution should or could be. Not that the autoconf/libtool authors could give a carte blanche permission on behalf of other GPL authors anyway.
    – ilkkachu
    Jan 19, 2022 at 16:05

3 Answers 3

34

The exception says that “you may include it”, where it is the build scripts generated by autoconf.

This is not a broad GPL exception that would apply to any GPL-licensed software. The autotools authors are not the copyright holders of other GPL-licensed software and are therefore not authorized to issue such exceptions.

Autoconf needs such an exception for the generated scripts because Autoconf itself is GPL-licensed. The generated build scripts include code from autoconf, so by default those build scripts would be GPL-licensed as well. This would introduce onerous obligations for people who distribute source code that should be configured/built with autoconf. This exception avoids those problems, and ensures that autoconf can be used in any kind of project.

Similar problems occur in all softwares that contain templates or include copyright-eligible fragments into their output. It is thus common for such projects to have similar exceptions. E.g. the GCC compiler has a similar exception, and the Boost license places no conditions on distribution in compiled form.

3
  • 2
    "The autotools authors are not the copyright holders of other GPL-licensed software and are therefore not authorized to issue such exceptions." — much if not all of autotools' copyright belongs to the FSF, which also has copyright to a lot of other GNU packages. They are authorized to issue such exceptions for these packages (although indeed this isn't one).
    – Ruslan
    Jan 18, 2022 at 21:21
  • 4
    GNU flex and GNU bison, I believe, also have similar exceptions, since their whole point is essentially to copy snippets of C into the user's code. Jan 18, 2022 at 23:15
  • 1
    No, the license exception applies to the file in which it appears. The only build script actually generated by Autoconf itself is configure, and it bears its own, much more permissive statement of rights. Although not build scripts per se, the Makefile.in files generated by Automake also have separate, much more permissive statements of rights. There are several scripts that may be copied wholesale from the Autotools into projects, and each of them bears a rights statement granting a special exception. These are the files for which a special exception is needed. Jan 20, 2022 at 22:28
6

No

As a special exception to the GNU General Public License, if you distribute this file as part of a program that contains a configuration script generated by Autoconf, you may include it under the same distribution terms that you use for the rest of that program.

This paragraph refers to the one file it is found in - not the entire software product you found it in.

It's saying that you can distribute that one file under the same terms as the rest of your product, so that you aren't forced to distribute your product under the GPL.

It's not giving you permission to distribute anything other than that one file.

5
  • 3
    Actually I think "it" refers to "a configuration script generated by Autoconf", as said in the other answer. The exception isn't needed for "this file", because of the GPL's "mere aggregation" clause.
    – Barmar
    Jan 19, 2022 at 15:52
  • 2
    @Barmar, you're reading it as saying "if you include file A ('this file'), then you can also include file B (configuration scripts)"? That would seem to be a somewhat awkward way to phrase it. Why not just say e.g. "you may distribute the configuration scripts [under other terms], as long as you include this copyright statement". But then again, why would the copyright statement (GPL+exception) need to be included if nothing is actually under those terms...
    – ilkkachu
    Jan 19, 2022 at 16:14
  • The issue is that the config file that's generated is technically a derivative work of "this file". Without the exception, that means it must be distributed in accordance with GPL rather than the program's normal license.
    – Barmar
    Jan 19, 2022 at 16:18
  • 1
    I figured "it" surely had to refer to "this file", because it talks about distributing "this file" and then the "distribution terms" for "it". If "it" refers to something else then perhaps this text needs to be written a bit more clearly :)
    – Keiji
    Jan 20, 2022 at 7:48
  • 1
    It does refer to "this file", @Keiji. There is a licensing issue with some of the autotools-generated files, but that is handled separately, in statements of rights included directly in those files. The ones in which the quoted license exceptions appear are not autotools-generated but rather copied in whole from the autotools, and they are licensed to allow redistribution in non-GPL projects. Jan 20, 2022 at 23:13
2

if I switch my main application to use Autoconf or Libtool, then I can bundle GPL code under proprietary terms?

No, unless in the very unlikely case that the specific GPL code in question grants you that right as its own special exception. Only someone who controls the rights to a given project can offer you license terms for that project, no matter what technologies are involved. A third party cannot grant you an exception.

What you are looking at are special terms in the licenses of various scripts from the Autotools that are copied (usually by the Autotools themselves) into the project source tree, with the intent that they be distributed with the project. This copying and redistribution serves the Autotools' design goal of providing for independent software distributions. That is, you don't, in principle, need to have the Autotools themselves installed to build a project that has an Autotools-based build system.

Although these scripts are part of the Autotools, the Autotools maintainers do not want to limit the Autotools' use to GPL-licensed projects. Each license exception is therefore granted to allow the script in which it appears to be distributed as part of an autotools-based build system for any project (the "it" refers to "this file"). That also explains why the various exceptions carry a limitation to projects with an Autotools-based configure script or that are built with libtool, and why it specifies that the scripts may be distributed under the same terms as the rest of the project: the exceptions are tailored to be as narrow as possible while serving their purpose.


There is a related issue revolving around the configure script generated by autoconf and the Makefile.in templates generated by automake. These generated files contain significant pieces of code that belong to the respective tools, and they are intended to be distributed with the project. I take these to be what @amon means by "the build scripts generated by autoconf", but these are not the files to which the license exceptions in question apply. Instead, each of these files bears its own, much more permissive license grant. For example, from a configure script generated by autoconf 2.69:

# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
#
#
#
# This configure script is free software; the Free Software Foundation
# gives unlimited permission to copy, distribute and modify it.

More generally, although it is not an absolute rule, the FSF is pretty consistent about putting copyright statements and statements of rights directly in the files to which they apply, and it is their recommendation that others do the same.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.