1679 lines
76 KiB
Plaintext
Executable File
1679 lines
76 KiB
Plaintext
Executable File
This is automake-history.info, produced by makeinfo version 5.2 from
|
||
automake-history.texi.
|
||
|
||
This manual describes (part of) the history of GNU Automake, a program
|
||
that creates GNU standards-compliant Makefiles from template files.
|
||
|
||
Copyright (C) 1995-2014 Free Software Foundation, Inc.
|
||
|
||
Permission is granted to copy, distribute and/or modify this
|
||
document under the terms of the GNU Free Documentation License,
|
||
Version 1.3 or any later version published by the Free Software
|
||
Foundation; with no Invariant Sections, with no Front-Cover texts,
|
||
and with no Back-Cover Texts. A copy of the license is included in
|
||
the section entitled "GNU Free Documentation License."
|
||
|
||
|
||
File: automake-history.info, Node: Top, Next: Timeline, Up: (dir)
|
||
|
||
Brief History of Automake
|
||
*************************
|
||
|
||
This manual describes (part of) the history of GNU Automake, a program
|
||
that creates GNU standards-compliant Makefiles from template files.
|
||
|
||
Copyright (C) 1995-2014 Free Software Foundation, Inc.
|
||
|
||
Permission is granted to copy, distribute and/or modify this
|
||
document under the terms of the GNU Free Documentation License,
|
||
Version 1.3 or any later version published by the Free Software
|
||
Foundation; with no Invariant Sections, with no Front-Cover texts,
|
||
and with no Back-Cover Texts. A copy of the license is included in
|
||
the section entitled "GNU Free Documentation License."
|
||
|
||
* Menu:
|
||
|
||
* Timeline:: The Automake story.
|
||
* Dependency Tracking Evolution:: Evolution of Automatic Dependency Tracking
|
||
* Releases:: Release statistics
|
||
* Copying This Manual:: How to make copies of this manual
|
||
|
||
-- The Detailed Node Listing --
|
||
|
||
Evolution of Automatic Dependency Tracking
|
||
|
||
* First Take on Dependencies:: Precomputed dependency tracking
|
||
* Dependencies As Side Effects:: Update at developer compile time
|
||
* Dependencies for the User:: Update at user compile time
|
||
* Techniques for Dependencies:: Alternative approaches
|
||
|
||
Techniques for Computing Dependencies
|
||
|
||
* Recommendations for Tool Writers::
|
||
* Future Directions for Dependencies::
|
||
|
||
Copying This Manual
|
||
|
||
* GNU Free Documentation License:: License for copying this manual
|
||
|
||
|
||
|
||
File: automake-history.info, Node: Timeline, Next: Dependency Tracking Evolution, Prev: Top, Up: Top
|
||
|
||
1 Timeline
|
||
**********
|
||
|
||
1994-09-19 First CVS commit.
|
||
|
||
If we can trust the CVS repository, David J. MacKenzie (djm)
|
||
started working on Automake (or AutoMake, as it was spelt then)
|
||
this Monday.
|
||
|
||
The first version of the 'automake' script looks as follows.
|
||
|
||
#!/bin/sh
|
||
|
||
status=0
|
||
|
||
for makefile
|
||
do
|
||
if test ! -f ${makefile}.am; then
|
||
echo "automake: ${makefile}.am: No such honkin' file"
|
||
status=1
|
||
continue
|
||
fi
|
||
|
||
exec 4> ${makefile}.in
|
||
|
||
done
|
||
|
||
From this you can already see that Automake will be about reading
|
||
'*.am' file and producing '*.in' files. You cannot see anything
|
||
else, but if you also know that David is the one who created
|
||
Autoconf two years before you can guess the rest.
|
||
|
||
Several commits follow, and by the end of the day Automake is
|
||
reported to work for GNU fileutils and GNU m4.
|
||
|
||
The modus operandi is the one that is still used today: variable
|
||
assignments in 'Makefile.am' files trigger injections of precanned
|
||
'Makefile' fragments into the generated 'Makefile.in'. The use of
|
||
'Makefile' fragments was inspired by the 4.4BSD 'make' and include
|
||
files, however Automake aims to be portable and to conform to the
|
||
GNU standards for 'Makefile' variables and targets.
|
||
|
||
At this point, the most recent release of Autoconf is version 1.11,
|
||
and David is preparing to release Autoconf 2.0 in late October. As
|
||
a matter of fact, he will barely touch Automake after September.
|
||
|
||
1994-11-05 David MacKenzie's last commit.
|
||
|
||
At this point Automake is a 200 line portable shell script, plus
|
||
332 lines of 'Makefile' fragments. In the 'README', David states
|
||
his ambivalence between "portable shell" and "more appropriate
|
||
language":
|
||
|
||
I wrote it keeping in mind the possibility of it becoming an
|
||
Autoconf macro, so it would run at configure-time. That would
|
||
slow configuration down a bit, but allow users to modify the
|
||
Makefile.am without needing to fetch the AutoMake package.
|
||
And, the Makefile.in files wouldn't need to be distributed.
|
||
But all of AutoMake would. So I might reimplement AutoMake in
|
||
Perl, m4, or some other more appropriate language.
|
||
|
||
Automake is described as "an experimental Makefile generator".
|
||
There is no documentation. Adventurous users are referred to the
|
||
examples and patches needed to use Automake with GNU m4 1.3,
|
||
fileutils 3.9, time 1.6, and development versions of find and
|
||
indent.
|
||
|
||
These examples seem to have been lost. However at the time of
|
||
writing (10 years later in September, 2004) the FSF still
|
||
distributes a package that uses this version of Automake: check out
|
||
GNU termutils 2.0.
|
||
|
||
1995-11-12 Tom Tromey's first commit.
|
||
|
||
After one year of inactivity, Tom Tromey takes over the package.
|
||
Tom was working on GNU cpio back then, and doing this just for fun,
|
||
having trouble finding a project to contribute to. So while
|
||
hacking he wanted to bring the 'Makefile.in' up to GNU standards.
|
||
This was hard, and one day he saw Automake on
|
||
<ftp://alpha.gnu.org/>, grabbed it and tried it out.
|
||
|
||
Tom didn't talk to djm about it until later, just to make sure he
|
||
didn't mind if he made a release. He did a bunch of early releases
|
||
to the Gnits folks.
|
||
|
||
Gnits was (and still is) totally informal, just a few GNU friends
|
||
who Franc,ois Pinard knew, who were all interested in making a
|
||
common infrastructure for GNU projects, and shared a similar
|
||
outlook on how to do it. So they were able to make some progress.
|
||
It came along with Autoconf and extensions thereof, and then
|
||
Automake from David and Tom (who were both gnitsians). One of
|
||
their ideas was to write a document paralleling the GNU standards,
|
||
that was more strict in some ways and more detailed. They never
|
||
finished the GNITS standards, but the ideas mostly made their way
|
||
into Automake.
|
||
|
||
1995-11-23 Automake 0.20
|
||
|
||
Besides introducing automatic dependency tracking (*note Dependency
|
||
Tracking Evolution::), this version also supplies a 9-page manual.
|
||
|
||
At this time 'aclocal' and 'AM_INIT_AUTOMAKE' did not exist, so
|
||
many things had to be done by hand. For instance, here is what a
|
||
configure.in (this is the former name of the 'configure.ac' we use
|
||
today) must contain in order to use Automake 0.20:
|
||
|
||
PACKAGE=cpio
|
||
VERSION=2.3.911
|
||
AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
|
||
AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
|
||
AC_SUBST(PACKAGE)
|
||
AC_SUBST(VERSION)
|
||
AC_ARG_PROGRAM
|
||
AC_PROG_INSTALL
|
||
|
||
(Today all of the above is achieved by 'AC_INIT' and
|
||
'AM_INIT_AUTOMAKE'.)
|
||
|
||
Here is how programs are specified in 'Makefile.am':
|
||
|
||
PROGRAMS = hello
|
||
hello_SOURCES = hello.c
|
||
|
||
This looks pretty much like what we do today, except the 'PROGRAMS'
|
||
variable has no directory prefix specifying where 'hello' should be
|
||
installed: all programs are installed in '$(bindir)'.
|
||
'LIBPROGRAMS' can be used to specify programs that must be built
|
||
but not installed (it is called 'noinst_PROGRAMS' nowadays).
|
||
|
||
Programs can be built conditionally using 'AC_SUBST'itutions:
|
||
|
||
PROGRAMS = @progs@
|
||
AM_PROGRAMS = foo bar baz
|
||
|
||
('AM_PROGRAMS' has since then been renamed to 'EXTRA_PROGRAMS'.)
|
||
|
||
Similarly scripts, static libraries, and data can be built and
|
||
installed using the 'LIBRARIES', 'SCRIPTS', and 'DATA' variables.
|
||
However 'LIBRARIES' were treated a bit specially in that Automake
|
||
did automatically supply the 'lib' and '.a' prefixes. Therefore to
|
||
build 'libcpio.a', one had to write
|
||
|
||
LIBRARIES = cpio
|
||
cpio_SOURCES = ...
|
||
|
||
Extra files to distribute must be listed in 'DIST_OTHER' (the
|
||
ancestor of 'EXTRA_DIST'). Also extra directories that are to be
|
||
distributed should appear in 'DIST_SUBDIRS', but the manual
|
||
describes this as a temporary ugly hack (today extra directories
|
||
should also be listed in 'EXTRA_DIST', and 'DIST_SUBDIRS' is used
|
||
for another purpose, *note Conditional Subdirectories:
|
||
(automake)Conditional Subdirectories.).
|
||
|
||
1995-11-26 Automake 0.21
|
||
|
||
In less time than it takes to cook a frozen pizza, Tom rewrites
|
||
Automake using Perl. At this time Perl 5 is only one year old, and
|
||
Perl 4.036 is in use at many sites. Supporting several Perl
|
||
versions has been a source of problems through the whole history of
|
||
Automake.
|
||
|
||
If you never used Perl 4, imagine Perl 5 without objects, without
|
||
'my' variables (only dynamically scoped 'local' variables), without
|
||
function prototypes, with function calls that needs to be prefixed
|
||
with '&', etc. Traces of this old style can still be found in
|
||
today's 'automake'.
|
||
|
||
1995-11-28 Automake 0.22
|
||
1995-11-29 Automake 0.23
|
||
|
||
Bug fixes.
|
||
|
||
1995-12-08 Automake 0.24
|
||
1995-12-10 Automake 0.25
|
||
|
||
Releases are raining. 0.24 introduces the uniform naming scheme we
|
||
use today, i.e., 'bin_PROGRAMS' instead of 'PROGRAMS',
|
||
'noinst_LIBRARIES' instead of 'LIBLIBRARIES', etc. (However
|
||
'EXTRA_PROGRAMS' does not exist yet, 'AM_PROGRAMS' is still in use;
|
||
and 'TEXINFOS' and 'MANS' still have no directory prefixes.)
|
||
Adding support for prefixes like that was one of the major ideas in
|
||
'automake'; it has lasted pretty well.
|
||
|
||
AutoMake is renamed to Automake (Tom seems to recall it was
|
||
Franc,ois Pinard's doing).
|
||
|
||
0.25 fixes a Perl 4 portability bug.
|
||
|
||
1995-12-18 Jim Meyering starts using Automake in GNU Textutils.
|
||
1995-12-31 Franc,ois Pinard starts using Automake in GNU tar.
|
||
|
||
1996-01-03 Automake 0.26
|
||
1996-01-03 Automake 0.27
|
||
|
||
Of the many changes and suggestions sent by Franc,ois Pinard and
|
||
included in 0.26, perhaps the most important is the advice that to
|
||
ease customization a user rule or variable definition should always
|
||
override an Automake rule or definition.
|
||
|
||
Gordon Matzigkeit and Jim Meyering are two other early contributors
|
||
that have been sending fixes.
|
||
|
||
0.27 fixes yet another Perl 4 portability bug.
|
||
|
||
1996-01-13 Automake 0.28
|
||
|
||
Automake starts scanning 'configure.in' for 'LIBOBJS' support.
|
||
This is an important step because until this version Automake only
|
||
knew about the 'Makefile.am's it processed. 'configure.in' was
|
||
Autoconf's world and the link between Autoconf and Automake had to
|
||
be done by the 'Makefile.am' author. For instance, if 'config.h'
|
||
was generated by 'configure', it was the package maintainer's
|
||
responsibility to define the 'CONFIG_HEADER' variable in each
|
||
'Makefile.am'.
|
||
|
||
Succeeding releases will rely more and more on scanning
|
||
'configure.in' to better automate the Autoconf integration.
|
||
|
||
0.28 also introduces the 'AUTOMAKE_OPTIONS' variable and the
|
||
'--gnu' and '--gnits' options, the latter being stricter.
|
||
|
||
1996-02-07 Automake 0.29
|
||
|
||
Thanks to 'configure.in' scanning, 'CONFIG_HEADER' is gone, and
|
||
rebuild rules for 'configure'-generated file are automatically
|
||
output.
|
||
|
||
'TEXINFOS' and 'MANS' converted to the uniform naming scheme.
|
||
|
||
1996-02-24 Automake 0.30
|
||
|
||
The test suite is born. It contains 9 tests. From now on test
|
||
cases will be added pretty regularly (*note Releases::), and this
|
||
proved to be really helpful later on.
|
||
|
||
'EXTRA_PROGRAMS' finally replaces 'AM_PROGRAMS'.
|
||
|
||
All the third-party Autoconf macros, written mostly by Franc,ois
|
||
Pinard (and later Jim Meyering), are distributed in Automake's
|
||
hand-written 'aclocal.m4' file. Package maintainers are expected
|
||
to extract the necessary macros from this file. (In previous
|
||
versions you had to copy and paste them from the manual...)
|
||
|
||
1996-03-11 Automake 0.31
|
||
|
||
The test suite in 0.30 was run via a long 'check-local' rule. Upon
|
||
Ulrich Drepper's suggestion, 0.31 makes it an Automake rule output
|
||
whenever the 'TESTS' variable is defined.
|
||
|
||
'DIST_OTHER' is renamed to 'EXTRA_DIST', and the 'check_' prefix is
|
||
introduced. The syntax is now the same as today.
|
||
|
||
1996-03-15 Gordon Matzigkeit starts writing libtool.
|
||
|
||
1996-04-27 Automake 0.32
|
||
|
||
'-hook' targets are introduced; an idea from Dieter Baron.
|
||
|
||
'*.info' files, which were output in the build directory are now
|
||
built in the source directory, because they are distributed. It
|
||
seems these files like to move back and forth as that will happen
|
||
again in future versions.
|
||
|
||
1996-05-18 Automake 0.33
|
||
|
||
Gord Matzigkeit's main two contributions:
|
||
|
||
* very preliminary libtool support
|
||
* the distcheck rule
|
||
|
||
Although they were very basic at this point, these are probably
|
||
among the top features for Automake today.
|
||
|
||
Jim Meyering also provides the infamous 'jm_MAINTAINER_MODE', since
|
||
then renamed to 'AM_MAINTAINER_MODE' and abandoned by its author
|
||
(*note maintainer-mode: (automake)maintainer-mode.).
|
||
|
||
1996-05-28 Automake 1.0
|
||
|
||
After only six months of heavy development, the 'automake' script
|
||
is 3134 lines long, plus 973 lines of 'Makefile' fragments. The
|
||
package has 30 pages of documentation, and 38 test cases.
|
||
'aclocal.m4' contains 4 macros.
|
||
|
||
From now on and until version 1.4, new releases will occur at a
|
||
rate of about one a year. 1.1 did not exist, actually 1.1b to 1.1p
|
||
have been the name of beta releases for 1.2. This is the first
|
||
time Automake uses suffix letters to designate beta releases, a
|
||
habit that lasts.
|
||
|
||
1996-10-10 Kevin Dalley packages Automake 1.0 for Debian GNU/Linux.
|
||
|
||
1996-11-26 David J. MacKenzie releases Autoconf 2.12.
|
||
|
||
Between June and October, the Autoconf development is almost
|
||
stalled. Roland McGrath has been working at the beginning of the
|
||
year. David comes back in November to release 2.12, but he won't
|
||
touch Autoconf anymore after this year, and Autoconf then really
|
||
stagnates. The desolate Autoconf 'ChangeLog' for 1997 lists only 7
|
||
commits.
|
||
|
||
1997-02-28 <automake@gnu.ai.mit.edu> list alive
|
||
|
||
The mailing list is announced as follows:
|
||
I've created the "automake" mailing list. It is
|
||
"automake@gnu.ai.mit.edu". Administrivia, as always, to
|
||
automake-request@gnu.ai.mit.edu.
|
||
|
||
The charter of this list is discussion of automake, autoconf, and
|
||
other configuration/portability tools (e.g., libtool). It is expected
|
||
that discussion will range from pleas for help all the way up to
|
||
patches.
|
||
|
||
This list is archived on the FSF machines. Offhand I don't know if
|
||
you can get the archive without an account there.
|
||
|
||
This list is open to anybody who wants to join. Tell all your
|
||
friends!
|
||
-- Tom Tromey
|
||
|
||
Before that people were discussing Automake privately, on the Gnits
|
||
mailing list (which is not public either), and less frequently on
|
||
'gnu.misc.discuss'.
|
||
|
||
'gnu.ai.mit.edu' is now 'gnu.org', in case you never noticed. The
|
||
archives of the early years of the 'automake@gnu.org' list have
|
||
been lost, so today it is almost impossible to find traces of
|
||
discussions that occurred before 1999. This has been annoying more
|
||
than once, as such discussions can be useful to understand the
|
||
rationale behind a piece of uncommented code that was introduced
|
||
back then.
|
||
|
||
1997-06-22 Automake 1.2
|
||
|
||
Automake developments continues, and more and more new Autoconf
|
||
macros are required. Distributing them in 'aclocal.m4' and
|
||
requiring people to browse this file to extract the relevant macros
|
||
becomes uncomfortable. Ideally, some of them should be contributed
|
||
to Autoconf so that they can be used directly, however Autoconf is
|
||
currently inactive. Automake 1.2 consequently introduces 'aclocal'
|
||
('aclocal' was actually started on 1996-07-28), a tool that
|
||
automatically constructs an 'aclocal.m4' file from a repository of
|
||
third-party macros. Because Autoconf has stalled, Automake also
|
||
becomes a kind of repository for such third-party macros, even
|
||
macros completely unrelated to Automake (for instance macros that
|
||
fix broken Autoconf macros).
|
||
|
||
The 1.2 release contains 20 macros, including the
|
||
'AM_INIT_AUTOMAKE' macro that simplifies the creation of
|
||
'configure.in'.
|
||
|
||
Libtool is fully supported using '*_LTLIBRARIES'.
|
||
|
||
The missing script is introduced by Franc,ois Pinard; it is meant
|
||
to be a better solution than 'AM_MAINTAINER_MODE' (*note
|
||
maintainer-mode: (automake)maintainer-mode.).
|
||
|
||
Conditionals support was implemented by Ian Lance Taylor. At the
|
||
time, Tom and Ian were working on an internal project at Cygnus.
|
||
They were using ILU, which is pretty similar to CORBA. They wanted
|
||
to integrate ILU into their build, which was all 'configure'-based,
|
||
and Ian thought that adding conditionals to 'automake' was simpler
|
||
than doing all the work in 'configure' (which was the standard at
|
||
the time). So this was actually funded by Cygnus.
|
||
|
||
This very useful but tricky feature will take a lot of time to
|
||
stabilize. (At the time this text is written, there are still
|
||
primaries that have not been updated to support conditional
|
||
definitions in Automake 1.9.)
|
||
|
||
The 'automake' script has almost doubled: 6089 lines of Perl, plus
|
||
1294 lines of 'Makefile' fragments.
|
||
|
||
1997-07-08 Gordon Matzigkeit releases Libtool 1.0.
|
||
|
||
1998-04-05 Automake 1.3
|
||
|
||
This is a small advance compared to 1.2. It adds support for
|
||
assembly, and preliminary support for Java.
|
||
|
||
Perl 5.004_04 is out, but fixes to support Perl 4 are still
|
||
regularly submitted whenever Automake breaks it.
|
||
|
||
1998-09-06 'sourceware.cygnus.com' is on-line.
|
||
|
||
Sourceware was setup by Jason Molenda to host open source projects.
|
||
|
||
1998-09-19 Automake CVS repository moved to 'sourceware.cygnus.com'
|
||
1998-10-26 'sourceware.cygnus.com' announces it hosts Automake:
|
||
Automake is now hosted on 'sourceware.cygnus.com'. It has a
|
||
publicly accessible CVS repository. This CVS repository is a copy
|
||
of the one Tom was using on his machine, which in turn is based on
|
||
a copy of the CVS repository of David MacKenzie. This is why we
|
||
still have to full source history. (Automake was on Sourceware
|
||
until 2007-10-29, when it moved to a git repository on
|
||
'savannah.gnu.org', but the Sourceware host had been renamed to
|
||
'sources.redhat.com'.)
|
||
|
||
The oldest file in the administrative directory of the CVS
|
||
repository that was created on Sourceware is dated 1998-09-19,
|
||
while the announcement that 'automake' and 'autoconf' had joined
|
||
'sourceware' was made on 1998-10-26. They were among the first
|
||
projects to be hosted there.
|
||
|
||
The heedful reader will have noticed Automake was exactly 4 years
|
||
old on 1998-09-19.
|
||
|
||
1999-01-05 Ben Elliston releases Autoconf 2.13.
|
||
|
||
1999-01-14 Automake 1.4
|
||
|
||
This release adds support for Fortran 77 and for the 'include'
|
||
statement. Also, '+=' assignments are introduced, but it is still
|
||
quite easy to fool Automake when mixing this with conditionals.
|
||
|
||
These two releases, Automake 1.4 and Autoconf 2.13 make a duo that
|
||
will be used together for years.
|
||
|
||
'automake' is 7228 lines, plus 1591 lines of Makefile fragment, 20
|
||
macros (some 1.3 macros were finally contributed back to Autoconf),
|
||
197 test cases, and 51 pages of documentation.
|
||
|
||
1999-03-27 The 'user-dep-branch' is created on the CVS repository.
|
||
|
||
This implements a new dependency tracking schemed that should be
|
||
able to handle automatic dependency tracking using any compiler
|
||
(not just gcc) and any make (not just GNU 'make'). In addition,
|
||
the new scheme should be more reliable than the old one, as
|
||
dependencies are generated on the end user's machine. Alexandre
|
||
Oliva creates depcomp for this purpose.
|
||
|
||
*Note Dependency Tracking Evolution::, for more details about the
|
||
evolution of automatic dependency tracking in Automake.
|
||
|
||
1999-11-21 The 'user-dep-branch' is merged into the main trunk.
|
||
|
||
This was a huge problem since we also had patches going in on the
|
||
trunk. The merge took a long time and was very painful.
|
||
|
||
2000-05-10
|
||
|
||
Since September 1999 and until 2003, Akim Demaille will be
|
||
zealously revamping Autoconf.
|
||
|
||
I think the next release should be called "3.0".
|
||
Let's face it: you've basically rewritten autoconf.
|
||
Every weekend there are 30 new patches.
|
||
I don't see how we could call this "2.15" with a straight
|
||
face.
|
||
- Tom Tromey on <autoconf@gnu.org>
|
||
|
||
Actually Akim works like a submarine: he will pile up patches while
|
||
he works off-line during the weekend, and flush them in batch when
|
||
he resurfaces on Monday.
|
||
|
||
2001-01-24
|
||
|
||
On this Wednesday, Autoconf 2.49c, the last beta before Autoconf
|
||
2.50 is out, and Akim has to find something to do during his
|
||
week-end :)
|
||
|
||
2001-01-28
|
||
|
||
Akim sends a batch of 14 patches to <automake@gnu.org>.
|
||
|
||
Aiieeee! I was dreading the day that the Demaillator turned
|
||
his sights on automake... and now it has arrived! - Tom
|
||
Tromey
|
||
|
||
It's only the beginning: in two months he will send 192 patches.
|
||
Then he would slow down so Tom can catch up and review all this.
|
||
Initially Tom actually read all of these patches, then he probably
|
||
trustingly answered OK to most of them, and finally gave up and let
|
||
Akim apply whatever he wanted. There was no way to keep up with
|
||
that patch rate.
|
||
|
||
Anyway the patch below won't apply since it predates Akim's
|
||
sourcequake; I have yet to figure where the relevant passage
|
||
has been moved :) - Alexandre Duret-Lutz
|
||
|
||
All of these patches were sent to and discussed on
|
||
<automake@gnu.org>, so subscribed users were literally drowning in
|
||
technical mails. Eventually, the <automake-patches@gnu.org>
|
||
mailing list was created in May.
|
||
|
||
Year after year, Automake had drifted away from its initial design:
|
||
construct 'Makefile.in' by assembling various 'Makefile' fragments.
|
||
In 1.4, lots of 'Makefile' rules are being emitted at various
|
||
places in the 'automake' script itself; this does not help ensuring
|
||
a consistent treatment of these rules (for instance making sure
|
||
that user-defined rules override Automake's own rules). One of
|
||
Akim's goal was moving all of these hard-coded rules to separate
|
||
'Makefile' fragments, so the logic could be centralized in a
|
||
'Makefile' fragment processor.
|
||
|
||
Another significant contribution of Akim is the interface with the
|
||
"trace" feature of Autoconf. The way to scan 'configure.in' at
|
||
this time was to read the file and grep the various macro of
|
||
interest to Automake. Doing so could break in many unexpected
|
||
ways; 'automake' could miss some definition (for instance
|
||
'AC_SUBST([$1], [$2])' where the arguments are known only when M4
|
||
is run), or conversely it could detect some macro that was not
|
||
expanded (because it is called conditionally). In the CVS version
|
||
of Autoconf, Akim had implemented the '--trace' option, which
|
||
provides accurate information about where macros are actually
|
||
called and with what arguments. Akim will equip Automake with a
|
||
second 'configure.in' scanner that uses this '--trace' interface.
|
||
Since it was not sensible to drop the Autoconf 2.13 compatibility
|
||
yet, this experimental scanner was only used when an environment
|
||
variable was set, the traditional grep-scanner being still the
|
||
default.
|
||
|
||
2001-04-25 Gary V. Vaughan releases Libtool 1.4
|
||
|
||
It has been more than two years since Automake 1.4, CVS Automake
|
||
has suffered lot's of heavy changes and still is not ready for
|
||
release. Libtool 1.4 had to be distributed with a patch against
|
||
Automake 1.4.
|
||
|
||
2001-05-08 Automake 1.4-p1
|
||
2001-05-24 Automake 1.4-p2
|
||
|
||
Gary V. Vaughan, the principal Libtool maintainer, makes a "patch
|
||
release" of Automake:
|
||
|
||
The main purpose of this release is to have a stable automake
|
||
which is compatible with the latest stable libtool.
|
||
|
||
The release also contains obvious fixes for bugs in Automake 1.4,
|
||
some of which were reported almost monthly.
|
||
|
||
2001-05-21 Akim Demaille releases Autoconf 2.50
|
||
|
||
2001-06-07 Automake 1.4-p3
|
||
2001-06-10 Automake 1.4-p4
|
||
2001-07-15 Automake 1.4-p5
|
||
|
||
Gary continues his patch-release series. These also add support
|
||
for some new Autoconf 2.50 idioms. Essentially, Autoconf now
|
||
advocates 'configure.ac' over 'configure.in', and it introduces a
|
||
new syntax for 'AC_OUTPUT'ing files.
|
||
|
||
2001-08-23 Automake 1.5
|
||
|
||
A major and long-awaited release, that comes more than two years
|
||
after 1.4. It brings many changes, among which:
|
||
* The new dependency tracking scheme that uses 'depcomp'. Aside
|
||
from the improvement on the dependency tracking itself (*note
|
||
Dependency Tracking Evolution::), this also streamlines the
|
||
use of 'automake'-generated 'Makefile.in's as the
|
||
'Makefile.in's used during development are now the same as
|
||
those used in distributions. Before that the 'Makefile.in's
|
||
generated for maintainers required GNU 'make' and GCC, they
|
||
were different from the portable 'Makefile' generated for
|
||
distribution; this was causing some confusion.
|
||
|
||
* Support for per-target compilation flags.
|
||
|
||
* Support for reference to files in subdirectories in most
|
||
'Makefile.am' variables.
|
||
|
||
* Introduction of the 'dist_', 'nodist_', and 'nobase_'
|
||
prefixes.
|
||
* Perl 4 support is finally dropped.
|
||
|
||
1.5 did break several packages that worked with 1.4. Enough so
|
||
that Linux distributions could not easily install the new Automake
|
||
version without breaking many of the packages for which they had to
|
||
run 'automake'.
|
||
|
||
Some of these breakages were effectively bugs that would eventually
|
||
be fixed in the next release. However, a lot of damage was caused
|
||
by some changes made deliberately to render Automake stricter on
|
||
some setup we did consider bogus. For instance, 'make distcheck'
|
||
was improved to check that 'make uninstall' did remove all the
|
||
files 'make install' installed, that 'make distclean' did not omit
|
||
some file, and that a VPATH build would work even if the source
|
||
directory was read-only. Similarly, Automake now rejects multiple
|
||
definitions of the same variable (because that would mix very badly
|
||
with conditionals), and '+=' assignments with no previous
|
||
definition. Because these changes all occurred suddenly after 1.4
|
||
had been established for more than two years, it hurt users.
|
||
|
||
To make matter worse, meanwhile Autoconf (now at version 2.52) was
|
||
facing similar troubles, for similar reasons.
|
||
|
||
2002-03-05 Automake 1.6
|
||
|
||
This release introduced versioned installation (*note API
|
||
Versioning: (automake)API Versioning.). This was mainly pushed by
|
||
Havoc Pennington, taking the GNOME source tree as motive: due to
|
||
incompatibilities between the autotools it's impossible for the
|
||
GNOME packages to switch to Autoconf 2.53 and Automake 1.5 all at
|
||
once, so they are currently stuck with Autoconf 2.13 and Automake
|
||
1.4.
|
||
|
||
The idea was to call this version 'automake-1.6', call all its
|
||
bug-fix versions identically, and switch to 'automake-1.7' for the
|
||
next release that adds new features or changes some rules. This
|
||
scheme implies maintaining a bug-fix branch in addition to the
|
||
development trunk, which means more work from the maintainer, but
|
||
providing regular bug-fix releases proved to be really worthwhile.
|
||
|
||
Like 1.5, 1.6 also introduced a bunch of incompatibilities,
|
||
intentional or not. Perhaps the more annoying was the dependence
|
||
on the newly released Autoconf 2.53. Autoconf seemed to have
|
||
stabilized enough since its explosive 2.50 release and included
|
||
changes required to fix some bugs in Automake. In order to upgrade
|
||
to Automake 1.6, people now had to upgrade Autoconf too; for some
|
||
packages it was no picnic.
|
||
|
||
While versioned installation helped people to upgrade, it also
|
||
unfortunately allowed people not to upgrade. At the time of
|
||
writing, some Linux distributions are shipping packages for
|
||
Automake 1.4, 1.5, 1.6, 1.7, 1.8, and 1.9. Most of these still
|
||
install 1.4 by default. Some distribution also call 1.4 the
|
||
"stable" version, and present "1.9" as the development version;
|
||
this does not really makes sense since 1.9 is way more solid than
|
||
1.4. All this does not help the newcomer.
|
||
|
||
2002-04-11 Automake 1.6.1
|
||
|
||
1.6, and the upcoming 1.4-p6 release were the last release by Tom.
|
||
This one and those following will be handled by Alexandre
|
||
Duret-Lutz. Tom is still around, and will be there until about
|
||
1.7, but his interest into Automake is drifting away towards
|
||
projects like 'gcj'.
|
||
|
||
Alexandre has been using Automake since 2000, and started to
|
||
contribute mostly on Akim's incitement (Akim and Alexandre have
|
||
been working in the same room from 1999 to 2002). In 2001 and 2002
|
||
he had a lot of free time to enjoy hacking Automake.
|
||
|
||
2002-06-14 Automake 1.6.2
|
||
|
||
2002-07-28 Automake 1.6.3
|
||
2002-07-28 Automake 1.4-p6
|
||
|
||
Two releases on the same day. 1.6.3 is a bug-fix release.
|
||
|
||
Tom Tromey backported the versioned installation mechanism on the
|
||
1.4 branch, so that Automake 1.6.x and Automake 1.4-p6 could be
|
||
installed side by side. Another request from the GNOME folks.
|
||
|
||
2002-09-25 Automake 1.7
|
||
|
||
This release switches to the new 'configure.ac' scanner Akim was
|
||
experimenting in 1.5.
|
||
|
||
2002-10-16 Automake 1.7.1
|
||
2002-12-06 Automake 1.7.2
|
||
2003-02-20 Automake 1.7.3
|
||
2003-04-23 Automake 1.7.4
|
||
2003-05-18 Automake 1.7.5
|
||
2003-07-10 Automake 1.7.6
|
||
2003-09-07 Automake 1.7.7
|
||
2003-10-07 Automake 1.7.8
|
||
|
||
Many bug-fix releases. 1.7 lasted because the development version
|
||
(upcoming 1.8) was suffering some major internal revamping.
|
||
|
||
2003-10-26 Automake on screen
|
||
|
||
Episode 49, 'Repercussions', in the third season of the 'Alias' TV
|
||
show is first aired.
|
||
|
||
Marshall, one of the characters, is working on a computer virus
|
||
that he has to modify before it gets into the wrong hands or
|
||
something like that. The screenshots you see do not show any
|
||
program code, they show a 'Makefile.in' generated by automake...
|
||
|
||
2003-11-09 Automake 1.7.9
|
||
|
||
2003-12-10 Automake 1.8
|
||
|
||
The most striking update is probably that of 'aclocal'.
|
||
|
||
'aclocal' now uses 'm4_include' in the produced 'aclocal.m4' when
|
||
the included macros are already distributed with the package (an
|
||
idiom used in many packages), which reduces code duplication. Many
|
||
people liked that, but in fact this change was really introduced to
|
||
fix a bug in rebuild rules: 'Makefile.in' must be rebuilt whenever
|
||
a dependency of 'configure' changes, but all the 'm4' files
|
||
included in 'aclocal.m4' where unknown from 'automake'. Now
|
||
'automake' can just trace the 'm4_include's to discover the
|
||
dependencies.
|
||
|
||
'aclocal' also starts using the '--trace' Autoconf option in order
|
||
to discover used macros more accurately. This will turn out to be
|
||
very tricky (later releases will improve this) as people had
|
||
devised many ways to cope with the limitation of previous 'aclocal'
|
||
versions, notably using handwritten 'm4_include's: 'aclocal' must
|
||
make sure not to redefine a rule that is already included by such
|
||
statement.
|
||
|
||
Automake also has seen its guts rewritten. Although this rewriting
|
||
took a lot of efforts, it is only apparent to the users in that
|
||
some constructions previously disallowed by the implementation now
|
||
work nicely. Conditionals, Locations, Variable and Rule
|
||
definitions, Options: these items on which Automake works have been
|
||
rewritten as separate Perl modules, and documented.
|
||
|
||
2004-01-11 Automake 1.8.1
|
||
2004-01-12 Automake 1.8.2
|
||
2004-03-07 Automake 1.8.3
|
||
2004-04-25 Automake 1.8.4
|
||
2004-05-16 Automake 1.8.5
|
||
|
||
2004-07-28 Automake 1.9
|
||
|
||
This release tries to simplify the compilation rules it outputs to
|
||
reduce the size of the Makefile. The complaint initially come from
|
||
the libgcj developers. Their 'Makefile.in' generated with Automake
|
||
1.4 and custom build rules (1.4 did not support compiled Java) is
|
||
250KB. The one generated by 1.8 was over 9MB! 1.9 gets it down to
|
||
1.2MB.
|
||
|
||
Aside from this it contains mainly minor changes and bug-fixes.
|
||
|
||
2004-08-11 Automake 1.9.1
|
||
2004-09-19 Automake 1.9.2
|
||
|
||
Automake has ten years. This chapter of the manual was initially
|
||
written for this occasion.
|
||
|
||
2007-10-29 Automake repository moves to 'savannah.gnu.org'
|
||
and uses git as primary repository.
|
||
|
||
|
||
File: automake-history.info, Node: Dependency Tracking Evolution, Next: Releases, Prev: Timeline, Up: Top
|
||
|
||
2 Evolution of Automatic Dependency Tracking
|
||
********************************************
|
||
|
||
Over the years Automake has deployed three different dependency tracking
|
||
methods. Each method, including the current one, has had flaws of
|
||
various sorts. Here we lay out the different dependency tracking
|
||
methods, their flaws, and their fixes. We conclude with recommendations
|
||
for tool writers, and by indicating future directions for dependency
|
||
tracking work in Automake.
|
||
|
||
* Menu:
|
||
|
||
* First Take on Dependencies:: Precomputed dependency tracking
|
||
* Dependencies As Side Effects:: Update at developer compile time
|
||
* Dependencies for the User:: Update at user compile time
|
||
* Techniques for Dependencies:: Alternative approaches
|
||
|
||
|
||
File: automake-history.info, Node: First Take on Dependencies, Next: Dependencies As Side Effects, Up: Dependency Tracking Evolution
|
||
|
||
2.1 First Take on Dependency Tracking
|
||
=====================================
|
||
|
||
Description
|
||
-----------
|
||
|
||
Our first attempt at automatic dependency tracking was based on the
|
||
method recommended by GNU 'make'. (*note Generating Prerequisites
|
||
Automatically: (make)Automatic Prerequisites.)
|
||
|
||
This version worked by precomputing dependencies ahead of time. For
|
||
each source file, it had a special '.P' file that held the dependencies.
|
||
There was a rule to generate a '.P' file by invoking the compiler
|
||
appropriately. All such '.P' files were included by the 'Makefile',
|
||
thus implicitly becoming dependencies of 'Makefile'.
|
||
|
||
Bugs
|
||
----
|
||
|
||
This approach had several critical bugs.
|
||
|
||
* The code to generate the '.P' file relied on 'gcc'. (A limitation,
|
||
not technically a bug.)
|
||
* The dependency tracking mechanism itself relied on GNU 'make'. (A
|
||
limitation, not technically a bug.)
|
||
* Because each '.P' file was a dependency of 'Makefile', this meant
|
||
that dependency tracking was done eagerly by 'make'. For instance,
|
||
'make clean' would cause all the dependency files to be updated,
|
||
and then immediately removed. This eagerness also caused problems
|
||
with some configurations; if a certain source file could not be
|
||
compiled on a given architecture for some reason, dependency
|
||
tracking would fail, aborting the entire build.
|
||
* As dependency tracking was done as a pre-pass, compile times were
|
||
doubled-the compiler had to be run twice per source file.
|
||
* 'make dist' re-ran 'automake' to generate a 'Makefile' that did not
|
||
have automatic dependency tracking (and that was thus portable to
|
||
any version of 'make'). In order to do this portably, Automake had
|
||
to scan the dependency files and remove any reference that was to a
|
||
source file not in the distribution. This process was error-prone.
|
||
Also, if 'make dist' was run in an environment where some object
|
||
file had a dependency on a source file that was only conditionally
|
||
created, Automake would generate a 'Makefile' that referred to a
|
||
file that might not appear in the end user's build. A special,
|
||
hacky mechanism was required to work around this.
|
||
|
||
Historical Note
|
||
---------------
|
||
|
||
The code generated by Automake is often inspired by the 'Makefile' style
|
||
of a particular author. In the case of the first implementation of
|
||
dependency tracking, I believe the impetus and inspiration was Jim
|
||
Meyering. (I could be mistaken. If you know otherwise feel free to
|
||
correct me.)
|
||
|
||
|
||
File: automake-history.info, Node: Dependencies As Side Effects, Next: Dependencies for the User, Prev: First Take on Dependencies, Up: Dependency Tracking Evolution
|
||
|
||
2.2 Dependencies As Side Effects
|
||
================================
|
||
|
||
Description
|
||
-----------
|
||
|
||
The next refinement of Automake's automatic dependency tracking scheme
|
||
was to implement dependencies as side effects of the compilation. This
|
||
was aimed at solving the most commonly reported problems with the first
|
||
approach. In particular we were most concerned with eliminating the
|
||
weird rebuilding effect associated with make clean.
|
||
|
||
In this approach, the '.P' files were included using the '-include'
|
||
command, which let us create these files lazily. This avoided the 'make
|
||
clean' problem.
|
||
|
||
We only computed dependencies when a file was actually compiled.
|
||
This avoided the performance penalty associated with scanning each file
|
||
twice. It also let us avoid the other problems associated with the
|
||
first, eager, implementation. For instance, dependencies would never be
|
||
generated for a source file that was not compilable on a given
|
||
architecture (because it in fact would never be compiled).
|
||
|
||
Bugs
|
||
----
|
||
|
||
* This approach also relied on the existence of 'gcc' and GNU 'make'.
|
||
(A limitation, not technically a bug.)
|
||
* Dependency tracking was still done by the developer, so the
|
||
problems from the first implementation relating to massaging of
|
||
dependencies by 'make dist' were still in effect.
|
||
* This implementation suffered from the "deleted header file"
|
||
problem. Suppose a lazily-created '.P' file includes a dependency
|
||
on a given header file, like this:
|
||
|
||
maude.o: maude.c something.h
|
||
|
||
Now suppose that you remove 'something.h' and update 'maude.c' so
|
||
that this include is no longer needed. If you run 'make', you will
|
||
get an error because there is no way to create 'something.h'.
|
||
|
||
We fixed this problem in a later release by further massaging the
|
||
output of 'gcc' to include a dummy dependency for each header file.
|
||
|
||
|
||
File: automake-history.info, Node: Dependencies for the User, Next: Techniques for Dependencies, Prev: Dependencies As Side Effects, Up: Dependency Tracking Evolution
|
||
|
||
2.3 Dependencies for the User
|
||
=============================
|
||
|
||
Description
|
||
-----------
|
||
|
||
The bugs associated with 'make dist', over time, became a real problem.
|
||
Packages using Automake were being built on a large number of platforms,
|
||
and were becoming increasingly complex. Broken dependencies were
|
||
distributed in "portable" 'Makefile.in's, leading to user complaints.
|
||
Also, the requirement for 'gcc' and GNU 'make' was a constant source of
|
||
bug reports. The next implementation of dependency tracking aimed to
|
||
remove these problems.
|
||
|
||
We realized that the only truly reliable way to automatically track
|
||
dependencies was to do it when the package itself was built. This meant
|
||
discovering a method portable to any version of make and any compiler.
|
||
Also, we wanted to preserve what we saw as the best point of the second
|
||
implementation: dependency computation as a side effect of compilation.
|
||
|
||
In the end we found that most modern make implementations support
|
||
some form of include directive. Also, we wrote a wrapper script that
|
||
let us abstract away differences between dependency tracking methods for
|
||
compilers. For instance, some compilers cannot generate dependencies as
|
||
a side effect of compilation. In this case we simply have the script
|
||
run the compiler twice. Currently our wrapper script ('depcomp') knows
|
||
about twelve different compilers (including a "compiler" that simply
|
||
invokes 'makedepend' and then the real compiler, which is assumed to be
|
||
a standard Unix-like C compiler with no way to do dependency tracking).
|
||
|
||
Bugs
|
||
----
|
||
|
||
* Running a wrapper script for each compilation slows down the build.
|
||
* Many users don't really care about precise dependencies.
|
||
* This implementation, like every other automatic dependency tracking
|
||
scheme in common use today (indeed, every one we've ever heard of),
|
||
suffers from the "duplicated new header" bug.
|
||
|
||
This bug occurs because dependency tracking tools, such as the
|
||
compiler, only generate dependencies on the successful opening of a
|
||
file, and not on every probe.
|
||
|
||
Suppose for instance that the compiler searches three directories
|
||
for a given header, and that the header is found in the third
|
||
directory. If the programmer erroneously adds a header file with
|
||
the same name to the first directory, then a clean rebuild from
|
||
scratch could fail (suppose the new header file is buggy), whereas
|
||
an incremental rebuild will succeed.
|
||
|
||
What has happened here is that people have a misunderstanding of
|
||
what a dependency is. Tool writers think a dependency encodes
|
||
information about which files were read by the compiler. However,
|
||
a dependency must actually encode information about what the
|
||
compiler tried to do.
|
||
|
||
This problem is not serious in practice. Programmers typically do
|
||
not use the same name for a header file twice in a given project.
|
||
(At least, not in C or C++. This problem may be more troublesome
|
||
in Java.) This problem is easy to fix, by modifying dependency
|
||
generators to record every probe, instead of every successful open.
|
||
|
||
* Since Automake generates dependencies as a side effect of
|
||
compilation, there is a bootstrapping problem when header files are
|
||
generated by running a program. The problem is that, the first
|
||
time the build is done, there is no way by default to know that the
|
||
headers are required, so make might try to run a compilation for
|
||
which the headers have not yet been built.
|
||
|
||
This was also a problem in the previous dependency tracking
|
||
implementation.
|
||
|
||
The current fix is to use 'BUILT_SOURCES' to list built headers
|
||
(*note Sources: (automake)Sources.). This causes them to be built
|
||
before any other build rules are run. This is unsatisfactory as a
|
||
general solution, however in practice it seems sufficient for most
|
||
actual programs.
|
||
|
||
This code is used since Automake 1.5.
|
||
|
||
In GCC 3.0, we managed to convince the maintainers to add special
|
||
command-line options to help Automake more efficiently do its job. We
|
||
hoped this would let us avoid the use of a wrapper script when
|
||
Automake's automatic dependency tracking was used with 'gcc'.
|
||
|
||
Unfortunately, this code doesn't quite do what we want. In
|
||
particular, it removes the dependency file if the compilation fails;
|
||
we'd prefer that it instead only touch the file in any way if the
|
||
compilation succeeds.
|
||
|
||
Nevertheless, since Automake 1.7, when a recent 'gcc' is detected at
|
||
'configure' time, we inline the dependency-generation code and do not
|
||
use the 'depcomp' wrapper script. This makes compilations faster for
|
||
those using this compiler (probably our primary user base). The
|
||
counterpart is that because we have to encode two compilation rules in
|
||
'Makefile' (with or without 'depcomp'), the produced 'Makefile's are
|
||
larger.
|
||
|
||
|
||
File: automake-history.info, Node: Techniques for Dependencies, Prev: Dependencies for the User, Up: Dependency Tracking Evolution
|
||
|
||
2.4 Techniques for Computing Dependencies
|
||
=========================================
|
||
|
||
There are actually several ways for a build tool like Automake to cause
|
||
tools to generate dependencies.
|
||
|
||
'makedepend'
|
||
This was a commonly-used method in the past. The idea is to run a
|
||
special program over the source and have it generate dependency
|
||
information. Traditional implementations of 'makedepend' are not
|
||
completely precise; ordinarily they were conservative and
|
||
discovered too many dependencies.
|
||
The tool
|
||
An obvious way to generate dependencies is to simply write the tool
|
||
so that it can generate the information needed by the build tool.
|
||
This is also the most portable method. Many compilers have an
|
||
option to generate dependencies. Unfortunately, not all tools
|
||
provide such an option.
|
||
The file system
|
||
It is possible to write a special file system that tracks opens,
|
||
reads, writes, etc, and then feed this information back to the
|
||
build tool. 'clearmake' does this. This is a very powerful
|
||
technique, as it doesn't require cooperation from the tool.
|
||
Unfortunately it is also very difficult to implement and also not
|
||
practical in the general case.
|
||
'LD_PRELOAD'
|
||
Rather than use the file system, one could write a special library
|
||
to intercept 'open' and other syscalls. This technique is also
|
||
quite powerful, but unfortunately it is not portable enough for use
|
||
in 'automake'.
|
||
|
||
* Menu:
|
||
|
||
* Recommendations for Tool Writers::
|
||
* Future Directions for Dependencies::
|
||
|
||
|
||
File: automake-history.info, Node: Recommendations for Tool Writers, Next: Future Directions for Dependencies, Up: Techniques for Dependencies
|
||
|
||
2.4.1 Recommendations for Tool Writers
|
||
--------------------------------------
|
||
|
||
We think that every compilation tool ought to be able to generate
|
||
dependencies as a side effect of compilation. Furthermore, at least
|
||
while 'make'-based tools are nearly universally in use (at least in the
|
||
free software community), the tool itself should generate dummy
|
||
dependencies for header files, to avoid the deleted header file bug.
|
||
Finally, the tool should generate a dependency for each probe, instead
|
||
of each successful file open, in order to avoid the duplicated new
|
||
header bug.
|
||
|
||
|
||
File: automake-history.info, Node: Future Directions for Dependencies, Prev: Recommendations for Tool Writers, Up: Techniques for Dependencies
|
||
|
||
2.4.2 Future Directions for Dependencies
|
||
----------------------------------------
|
||
|
||
Currently, only languages and compilers understood by Automake can have
|
||
dependency tracking enabled. We would like to see if it is practical
|
||
(and worthwhile) to let this support be extended by the user to
|
||
languages unknown to Automake.
|
||
|
||
|
||
File: automake-history.info, Node: Releases, Next: Copying This Manual, Prev: Dependency Tracking Evolution, Up: Top
|
||
|
||
3 Release Statistics
|
||
********************
|
||
|
||
The following table (inspired by 'perlhist(1)') quantifies the evolution
|
||
of Automake using these metrics:
|
||
|
||
Date, Rel
|
||
The date and version of the release.
|
||
am
|
||
The number of lines of the 'automake' script.
|
||
acl
|
||
The number of lines of the 'aclocal' script.
|
||
pm
|
||
The number of lines of the 'Perl' supporting modules.
|
||
'*.am'
|
||
The number of lines of the 'Makefile' fragments. The number in
|
||
parentheses is the number of files.
|
||
m4
|
||
The number of lines (and files) of Autoconf macros.
|
||
doc
|
||
The number of pages of the documentation (the Postscript version).
|
||
t
|
||
The number of test cases in the test suite. Of those, the number
|
||
in parentheses is the number of generated test cases.
|
||
|
||
Date Rel am acl pm '*.am' m4 doc t
|
||
------------------------------------------------------------------------------------
|
||
1994-09-19 CVS 141 299 (24)
|
||
1994-11-05 CVS 208 332 (28)
|
||
1995-11-23 0.20 533 458 (35) 9
|
||
1995-11-26 0.21 613 480 (36) 11
|
||
1995-11-28 0.22 1116 539 (38) 12
|
||
1995-11-29 0.23 1240 541 (38) 12
|
||
1995-12-08 0.24 1462 504 (33) 14
|
||
1995-12-10 0.25 1513 511 (37) 15
|
||
1996-01-03 0.26 1706 438 (36) 16
|
||
1996-01-03 0.27 1706 438 (36) 16
|
||
1996-01-13 0.28 1964 934 (33) 16
|
||
1996-02-07 0.29 2299 936 (33) 17
|
||
1996-02-24 0.30 2544 919 (32) 85 (1) 20 9
|
||
1996-03-11 0.31 2877 919 (32) 85 (1) 29 17
|
||
1996-04-27 0.32 3058 921 (31) 85 (1) 30 26
|
||
1996-05-18 0.33 3110 926 (31) 105 (1) 30 35
|
||
1996-05-28 1.0 3134 973 (32) 105 (1) 30 38
|
||
1997-06-22 1.2 6089 385 1294 (36) 592 (20) 37 126
|
||
1998-04-05 1.3 6415 422 1470 (39) 741 (23) 39 156
|
||
1999-01-14 1.4 7240 426 1591 (40) 734 (20) 51 197
|
||
2001-05-08 1.4-p1 7251 426 1591 (40) 734 (20) 51 197
|
||
2001-05-24 1.4-p2 7268 439 1591 (40) 734 (20) 49 197
|
||
2001-06-07 1.4-p3 7312 439 1591 (40) 734 (20) 49 197
|
||
2001-06-10 1.4-p4 7321 439 1591 (40) 734 (20) 49 198
|
||
2001-07-15 1.4-p5 7228 426 1596 (40) 734 (20) 51 198
|
||
2001-08-23 1.5 8016 475 600 2654 (39) 1166 (29) 63 327
|
||
2002-03-05 1.6 8465 475 1136 2732 (39) 1603 (27) 66 365
|
||
2002-04-11 1.6.1 8544 475 1136 2741 (39) 1603 (27) 66 372
|
||
2002-06-14 1.6.2 8575 475 1136 2800 (39) 1609 (27) 67 386
|
||
2002-07-28 1.6.3 8600 475 1153 2809 (39) 1609 (27) 67 391
|
||
2002-07-28 1.4-p6 7332 455 1596 (40) 735 (20) 49 197
|
||
2002-09-25 1.7 9189 471 1790 2965 (39) 1606 (28) 73 430
|
||
2002-10-16 1.7.1 9229 475 1790 2977 (39) 1606 (28) 73 437
|
||
2002-12-06 1.7.2 9334 475 1790 2988 (39) 1606 (28) 77 445
|
||
2003-02-20 1.7.3 9389 475 1790 3023 (39) 1651 (29) 84 448
|
||
2003-04-23 1.7.4 9429 475 1790 3031 (39) 1644 (29) 85 458
|
||
2003-05-18 1.7.5 9429 475 1790 3033 (39) 1645 (29) 85 459
|
||
2003-07-10 1.7.6 9442 475 1790 3033 (39) 1660 (29) 85 461
|
||
2003-09-07 1.7.7 9443 475 1790 3041 (39) 1660 (29) 90 467
|
||
2003-10-07 1.7.8 9444 475 1790 3041 (39) 1660 (29) 90 468
|
||
2003-11-09 1.7.9 9444 475 1790 3048 (39) 1660 (29) 90 468
|
||
2003-12-10 1.8 7171 585 7730 3236 (39) 1666 (31) 104 521
|
||
2004-01-11 1.8.1 7217 663 7726 3287 (39) 1686 (31) 104 525
|
||
2004-01-12 1.8.2 7217 663 7726 3288 (39) 1686 (31) 104 526
|
||
2004-03-07 1.8.3 7214 686 7735 3303 (39) 1695 (31) 111 530
|
||
2004-04-25 1.8.4 7214 686 7736 3310 (39) 1701 (31) 112 531
|
||
2004-05-16 1.8.5 7240 686 7736 3299 (39) 1701 (31) 112 533
|
||
2004-07-28 1.9 7508 715 7794 3352 (40) 1812 (32) 115 551
|
||
2004-08-11 1.9.1 7512 715 7794 3354 (40) 1812 (32) 115 552
|
||
2004-09-19 1.9.2 7512 715 7794 3354 (40) 1812 (32) 132 554
|
||
2004-11-01 1.9.3 7507 718 7804 3354 (40) 1812 (32) 134 556
|
||
2004-12-18 1.9.4 7508 718 7856 3361 (40) 1811 (32) 140 560
|
||
2005-02-13 1.9.5 7523 719 7859 3373 (40) 1453 (32) 142 562
|
||
2005-07-10 1.9.6 7539 699 7867 3400 (40) 1453 (32) 144 570
|
||
2006-10-15 1.10 7859 1072 8024 3512 (40) 1496 (34) 172 604
|
||
2008-01-19 1.10.1 7870 1089 8025 3520 (40) 1499 (34) 173 617
|
||
2008-11-23 1.10.2 7882 1089 8027 3540 (40) 1509 (34) 176 628
|
||
2009-05-17 1.11 8721 1092 8289 4164 (42) 1714 (37) 181 732 (20)
|
||
|
||
|
||
File: automake-history.info, Node: Copying This Manual, Prev: Releases, Up: Top
|
||
|
||
Appendix A Copying This Manual
|
||
******************************
|
||
|
||
* Menu:
|
||
|
||
* GNU Free Documentation License:: License for copying this manual
|
||
|
||
|
||
File: automake-history.info, Node: GNU Free Documentation License, Up: Copying This Manual
|
||
|
||
A.1 GNU Free Documentation License
|
||
==================================
|
||
|
||
Version 1.3, 3 November 2008
|
||
|
||
Copyright (C) 2000-2014 Free Software Foundation, Inc.
|
||
<http://fsf.org/>
|
||
|
||
Everyone is permitted to copy and distribute verbatim copies
|
||
of this license document, but changing it is not allowed.
|
||
|
||
0. PREAMBLE
|
||
|
||
The purpose of this License is to make a manual, textbook, or other
|
||
functional and useful document "free" in the sense of freedom: to
|
||
assure everyone the effective freedom to copy and redistribute it,
|
||
with or without modifying it, either commercially or
|
||
noncommercially. Secondarily, this License preserves for the
|
||
author and publisher a way to get credit for their work, while not
|
||
being considered responsible for modifications made by others.
|
||
|
||
This License is a kind of "copyleft", which means that derivative
|
||
works of the document must themselves be free in the same sense.
|
||
It complements the GNU General Public License, which is a copyleft
|
||
license designed for free software.
|
||
|
||
We have designed this License in order to use it for manuals for
|
||
free software, because free software needs free documentation: a
|
||
free program should come with manuals providing the same freedoms
|
||
that the software does. But this License is not limited to
|
||
software manuals; it can be used for any textual work, regardless
|
||
of subject matter or whether it is published as a printed book. We
|
||
recommend this License principally for works whose purpose is
|
||
instruction or reference.
|
||
|
||
1. APPLICABILITY AND DEFINITIONS
|
||
|
||
This License applies to any manual or other work, in any medium,
|
||
that contains a notice placed by the copyright holder saying it can
|
||
be distributed under the terms of this License. Such a notice
|
||
grants a world-wide, royalty-free license, unlimited in duration,
|
||
to use that work under the conditions stated herein. The
|
||
"Document", below, refers to any such manual or work. Any member
|
||
of the public is a licensee, and is addressed as "you". You accept
|
||
the license if you copy, modify or distribute the work in a way
|
||
requiring permission under copyright law.
|
||
|
||
A "Modified Version" of the Document means any work containing the
|
||
Document or a portion of it, either copied verbatim, or with
|
||
modifications and/or translated into another language.
|
||
|
||
A "Secondary Section" is a named appendix or a front-matter section
|
||
of the Document that deals exclusively with the relationship of the
|
||
publishers or authors of the Document to the Document's overall
|
||
subject (or to related matters) and contains nothing that could
|
||
fall directly within that overall subject. (Thus, if the Document
|
||
is in part a textbook of mathematics, a Secondary Section may not
|
||
explain any mathematics.) The relationship could be a matter of
|
||
historical connection with the subject or with related matters, or
|
||
of legal, commercial, philosophical, ethical or political position
|
||
regarding them.
|
||
|
||
The "Invariant Sections" are certain Secondary Sections whose
|
||
titles are designated, as being those of Invariant Sections, in the
|
||
notice that says that the Document is released under this License.
|
||
If a section does not fit the above definition of Secondary then it
|
||
is not allowed to be designated as Invariant. The Document may
|
||
contain zero Invariant Sections. If the Document does not identify
|
||
any Invariant Sections then there are none.
|
||
|
||
The "Cover Texts" are certain short passages of text that are
|
||
listed, as Front-Cover Texts or Back-Cover Texts, in the notice
|
||
that says that the Document is released under this License. A
|
||
Front-Cover Text may be at most 5 words, and a Back-Cover Text may
|
||
be at most 25 words.
|
||
|
||
A "Transparent" copy of the Document means a machine-readable copy,
|
||
represented in a format whose specification is available to the
|
||
general public, that is suitable for revising the document
|
||
straightforwardly with generic text editors or (for images composed
|
||
of pixels) generic paint programs or (for drawings) some widely
|
||
available drawing editor, and that is suitable for input to text
|
||
formatters or for automatic translation to a variety of formats
|
||
suitable for input to text formatters. A copy made in an otherwise
|
||
Transparent file format whose markup, or absence of markup, has
|
||
been arranged to thwart or discourage subsequent modification by
|
||
readers is not Transparent. An image format is not Transparent if
|
||
used for any substantial amount of text. A copy that is not
|
||
"Transparent" is called "Opaque".
|
||
|
||
Examples of suitable formats for Transparent copies include plain
|
||
ASCII without markup, Texinfo input format, LaTeX input format,
|
||
SGML or XML using a publicly available DTD, and standard-conforming
|
||
simple HTML, PostScript or PDF designed for human modification.
|
||
Examples of transparent image formats include PNG, XCF and JPG.
|
||
Opaque formats include proprietary formats that can be read and
|
||
edited only by proprietary word processors, SGML or XML for which
|
||
the DTD and/or processing tools are not generally available, and
|
||
the machine-generated HTML, PostScript or PDF produced by some word
|
||
processors for output purposes only.
|
||
|
||
The "Title Page" means, for a printed book, the title page itself,
|
||
plus such following pages as are needed to hold, legibly, the
|
||
material this License requires to appear in the title page. For
|
||
works in formats which do not have any title page as such, "Title
|
||
Page" means the text near the most prominent appearance of the
|
||
work's title, preceding the beginning of the body of the text.
|
||
|
||
The "publisher" means any person or entity that distributes copies
|
||
of the Document to the public.
|
||
|
||
A section "Entitled XYZ" means a named subunit of the Document
|
||
whose title either is precisely XYZ or contains XYZ in parentheses
|
||
following text that translates XYZ in another language. (Here XYZ
|
||
stands for a specific section name mentioned below, such as
|
||
"Acknowledgements", "Dedications", "Endorsements", or "History".)
|
||
To "Preserve the Title" of such a section when you modify the
|
||
Document means that it remains a section "Entitled XYZ" according
|
||
to this definition.
|
||
|
||
The Document may include Warranty Disclaimers next to the notice
|
||
which states that this License applies to the Document. These
|
||
Warranty Disclaimers are considered to be included by reference in
|
||
this License, but only as regards disclaiming warranties: any other
|
||
implication that these Warranty Disclaimers may have is void and
|
||
has no effect on the meaning of this License.
|
||
|
||
2. VERBATIM COPYING
|
||
|
||
You may copy and distribute the Document in any medium, either
|
||
commercially or noncommercially, provided that this License, the
|
||
copyright notices, and the license notice saying this License
|
||
applies to the Document are reproduced in all copies, and that you
|
||
add no other conditions whatsoever to those of this License. You
|
||
may not use technical measures to obstruct or control the reading
|
||
or further copying of the copies you make or distribute. However,
|
||
you may accept compensation in exchange for copies. If you
|
||
distribute a large enough number of copies you must also follow the
|
||
conditions in section 3.
|
||
|
||
You may also lend copies, under the same conditions stated above,
|
||
and you may publicly display copies.
|
||
|
||
3. COPYING IN QUANTITY
|
||
|
||
If you publish printed copies (or copies in media that commonly
|
||
have printed covers) of the Document, numbering more than 100, and
|
||
the Document's license notice requires Cover Texts, you must
|
||
enclose the copies in covers that carry, clearly and legibly, all
|
||
of these Cover Texts: Front-Cover Texts on the front cover, and
|
||
Back-Cover Texts on the back cover. Both covers must also clearly
|
||
and legibly identify you as the publisher of these copies. The
|
||
front cover must present the full title with all words of the title
|
||
equally prominent and visible. You may add other material on the
|
||
covers in addition. Copying with changes limited to the covers, as
|
||
long as they preserve the title of the Document and satisfy these
|
||
conditions, can be treated as verbatim copying in other respects.
|
||
|
||
If the required texts for either cover are too voluminous to fit
|
||
legibly, you should put the first ones listed (as many as fit
|
||
reasonably) on the actual cover, and continue the rest onto
|
||
adjacent pages.
|
||
|
||
If you publish or distribute Opaque copies of the Document
|
||
numbering more than 100, you must either include a machine-readable
|
||
Transparent copy along with each Opaque copy, or state in or with
|
||
each Opaque copy a computer-network location from which the general
|
||
network-using public has access to download using public-standard
|
||
network protocols a complete Transparent copy of the Document, free
|
||
of added material. If you use the latter option, you must take
|
||
reasonably prudent steps, when you begin distribution of Opaque
|
||
copies in quantity, to ensure that this Transparent copy will
|
||
remain thus accessible at the stated location until at least one
|
||
year after the last time you distribute an Opaque copy (directly or
|
||
through your agents or retailers) of that edition to the public.
|
||
|
||
It is requested, but not required, that you contact the authors of
|
||
the Document well before redistributing any large number of copies,
|
||
to give them a chance to provide you with an updated version of the
|
||
Document.
|
||
|
||
4. MODIFICATIONS
|
||
|
||
You may copy and distribute a Modified Version of the Document
|
||
under the conditions of sections 2 and 3 above, provided that you
|
||
release the Modified Version under precisely this License, with the
|
||
Modified Version filling the role of the Document, thus licensing
|
||
distribution and modification of the Modified Version to whoever
|
||
possesses a copy of it. In addition, you must do these things in
|
||
the Modified Version:
|
||
|
||
A. Use in the Title Page (and on the covers, if any) a title
|
||
distinct from that of the Document, and from those of previous
|
||
versions (which should, if there were any, be listed in the
|
||
History section of the Document). You may use the same title
|
||
as a previous version if the original publisher of that
|
||
version gives permission.
|
||
|
||
B. List on the Title Page, as authors, one or more persons or
|
||
entities responsible for authorship of the modifications in
|
||
the Modified Version, together with at least five of the
|
||
principal authors of the Document (all of its principal
|
||
authors, if it has fewer than five), unless they release you
|
||
from this requirement.
|
||
|
||
C. State on the Title page the name of the publisher of the
|
||
Modified Version, as the publisher.
|
||
|
||
D. Preserve all the copyright notices of the Document.
|
||
|
||
E. Add an appropriate copyright notice for your modifications
|
||
adjacent to the other copyright notices.
|
||
|
||
F. Include, immediately after the copyright notices, a license
|
||
notice giving the public permission to use the Modified
|
||
Version under the terms of this License, in the form shown in
|
||
the Addendum below.
|
||
|
||
G. Preserve in that license notice the full lists of Invariant
|
||
Sections and required Cover Texts given in the Document's
|
||
license notice.
|
||
|
||
H. Include an unaltered copy of this License.
|
||
|
||
I. Preserve the section Entitled "History", Preserve its Title,
|
||
and add to it an item stating at least the title, year, new
|
||
authors, and publisher of the Modified Version as given on the
|
||
Title Page. If there is no section Entitled "History" in the
|
||
Document, create one stating the title, year, authors, and
|
||
publisher of the Document as given on its Title Page, then add
|
||
an item describing the Modified Version as stated in the
|
||
previous sentence.
|
||
|
||
J. Preserve the network location, if any, given in the Document
|
||
for public access to a Transparent copy of the Document, and
|
||
likewise the network locations given in the Document for
|
||
previous versions it was based on. These may be placed in the
|
||
"History" section. You may omit a network location for a work
|
||
that was published at least four years before the Document
|
||
itself, or if the original publisher of the version it refers
|
||
to gives permission.
|
||
|
||
K. For any section Entitled "Acknowledgements" or "Dedications",
|
||
Preserve the Title of the section, and preserve in the section
|
||
all the substance and tone of each of the contributor
|
||
acknowledgements and/or dedications given therein.
|
||
|
||
L. Preserve all the Invariant Sections of the Document, unaltered
|
||
in their text and in their titles. Section numbers or the
|
||
equivalent are not considered part of the section titles.
|
||
|
||
M. Delete any section Entitled "Endorsements". Such a section
|
||
may not be included in the Modified Version.
|
||
|
||
N. Do not retitle any existing section to be Entitled
|
||
"Endorsements" or to conflict in title with any Invariant
|
||
Section.
|
||
|
||
O. Preserve any Warranty Disclaimers.
|
||
|
||
If the Modified Version includes new front-matter sections or
|
||
appendices that qualify as Secondary Sections and contain no
|
||
material copied from the Document, you may at your option designate
|
||
some or all of these sections as invariant. To do this, add their
|
||
titles to the list of Invariant Sections in the Modified Version's
|
||
license notice. These titles must be distinct from any other
|
||
section titles.
|
||
|
||
You may add a section Entitled "Endorsements", provided it contains
|
||
nothing but endorsements of your Modified Version by various
|
||
parties--for example, statements of peer review or that the text
|
||
has been approved by an organization as the authoritative
|
||
definition of a standard.
|
||
|
||
You may add a passage of up to five words as a Front-Cover Text,
|
||
and a passage of up to 25 words as a Back-Cover Text, to the end of
|
||
the list of Cover Texts in the Modified Version. Only one passage
|
||
of Front-Cover Text and one of Back-Cover Text may be added by (or
|
||
through arrangements made by) any one entity. If the Document
|
||
already includes a cover text for the same cover, previously added
|
||
by you or by arrangement made by the same entity you are acting on
|
||
behalf of, you may not add another; but you may replace the old
|
||
one, on explicit permission from the previous publisher that added
|
||
the old one.
|
||
|
||
The author(s) and publisher(s) of the Document do not by this
|
||
License give permission to use their names for publicity for or to
|
||
assert or imply endorsement of any Modified Version.
|
||
|
||
5. COMBINING DOCUMENTS
|
||
|
||
You may combine the Document with other documents released under
|
||
this License, under the terms defined in section 4 above for
|
||
modified versions, provided that you include in the combination all
|
||
of the Invariant Sections of all of the original documents,
|
||
unmodified, and list them all as Invariant Sections of your
|
||
combined work in its license notice, and that you preserve all
|
||
their Warranty Disclaimers.
|
||
|
||
The combined work need only contain one copy of this License, and
|
||
multiple identical Invariant Sections may be replaced with a single
|
||
copy. If there are multiple Invariant Sections with the same name
|
||
but different contents, make the title of each such section unique
|
||
by adding at the end of it, in parentheses, the name of the
|
||
original author or publisher of that section if known, or else a
|
||
unique number. Make the same adjustment to the section titles in
|
||
the list of Invariant Sections in the license notice of the
|
||
combined work.
|
||
|
||
In the combination, you must combine any sections Entitled
|
||
"History" in the various original documents, forming one section
|
||
Entitled "History"; likewise combine any sections Entitled
|
||
"Acknowledgements", and any sections Entitled "Dedications". You
|
||
must delete all sections Entitled "Endorsements."
|
||
|
||
6. COLLECTIONS OF DOCUMENTS
|
||
|
||
You may make a collection consisting of the Document and other
|
||
documents released under this License, and replace the individual
|
||
copies of this License in the various documents with a single copy
|
||
that is included in the collection, provided that you follow the
|
||
rules of this License for verbatim copying of each of the documents
|
||
in all other respects.
|
||
|
||
You may extract a single document from such a collection, and
|
||
distribute it individually under this License, provided you insert
|
||
a copy of this License into the extracted document, and follow this
|
||
License in all other respects regarding verbatim copying of that
|
||
document.
|
||
|
||
7. AGGREGATION WITH INDEPENDENT WORKS
|
||
|
||
A compilation of the Document or its derivatives with other
|
||
separate and independent documents or works, in or on a volume of a
|
||
storage or distribution medium, is called an "aggregate" if the
|
||
copyright resulting from the compilation is not used to limit the
|
||
legal rights of the compilation's users beyond what the individual
|
||
works permit. When the Document is included in an aggregate, this
|
||
License does not apply to the other works in the aggregate which
|
||
are not themselves derivative works of the Document.
|
||
|
||
If the Cover Text requirement of section 3 is applicable to these
|
||
copies of the Document, then if the Document is less than one half
|
||
of the entire aggregate, the Document's Cover Texts may be placed
|
||
on covers that bracket the Document within the aggregate, or the
|
||
electronic equivalent of covers if the Document is in electronic
|
||
form. Otherwise they must appear on printed covers that bracket
|
||
the whole aggregate.
|
||
|
||
8. TRANSLATION
|
||
|
||
Translation is considered a kind of modification, so you may
|
||
distribute translations of the Document under the terms of section
|
||
4. Replacing Invariant Sections with translations requires special
|
||
permission from their copyright holders, but you may include
|
||
translations of some or all Invariant Sections in addition to the
|
||
original versions of these Invariant Sections. You may include a
|
||
translation of this License, and all the license notices in the
|
||
Document, and any Warranty Disclaimers, provided that you also
|
||
include the original English version of this License and the
|
||
original versions of those notices and disclaimers. In case of a
|
||
disagreement between the translation and the original version of
|
||
this License or a notice or disclaimer, the original version will
|
||
prevail.
|
||
|
||
If a section in the Document is Entitled "Acknowledgements",
|
||
"Dedications", or "History", the requirement (section 4) to
|
||
Preserve its Title (section 1) will typically require changing the
|
||
actual title.
|
||
|
||
9. TERMINATION
|
||
|
||
You may not copy, modify, sublicense, or distribute the Document
|
||
except as expressly provided under this License. Any attempt
|
||
otherwise to copy, modify, sublicense, or distribute it is void,
|
||
and will automatically terminate your rights under this License.
|
||
|
||
However, if you cease all violation of this License, then your
|
||
license from a particular copyright holder is reinstated (a)
|
||
provisionally, unless and until the copyright holder explicitly and
|
||
finally terminates your license, and (b) permanently, if the
|
||
copyright holder fails to notify you of the violation by some
|
||
reasonable means prior to 60 days after the cessation.
|
||
|
||
Moreover, your license from a particular copyright holder is
|
||
reinstated permanently if the copyright holder notifies you of the
|
||
violation by some reasonable means, this is the first time you have
|
||
received notice of violation of this License (for any work) from
|
||
that copyright holder, and you cure the violation prior to 30 days
|
||
after your receipt of the notice.
|
||
|
||
Termination of your rights under this section does not terminate
|
||
the licenses of parties who have received copies or rights from you
|
||
under this License. If your rights have been terminated and not
|
||
permanently reinstated, receipt of a copy of some or all of the
|
||
same material does not give you any rights to use it.
|
||
|
||
10. FUTURE REVISIONS OF THIS LICENSE
|
||
|
||
The Free Software Foundation may publish new, revised versions of
|
||
the GNU Free Documentation License from time to time. Such new
|
||
versions will be similar in spirit to the present version, but may
|
||
differ in detail to address new problems or concerns. See
|
||
<http://www.gnu.org/copyleft/>.
|
||
|
||
Each version of the License is given a distinguishing version
|
||
number. If the Document specifies that a particular numbered
|
||
version of this License "or any later version" applies to it, you
|
||
have the option of following the terms and conditions either of
|
||
that specified version or of any later version that has been
|
||
published (not as a draft) by the Free Software Foundation. If the
|
||
Document does not specify a version number of this License, you may
|
||
choose any version ever published (not as a draft) by the Free
|
||
Software Foundation. If the Document specifies that a proxy can
|
||
decide which future versions of this License can be used, that
|
||
proxy's public statement of acceptance of a version permanently
|
||
authorizes you to choose that version for the Document.
|
||
|
||
11. RELICENSING
|
||
|
||
"Massive Multiauthor Collaboration Site" (or "MMC Site") means any
|
||
World Wide Web server that publishes copyrightable works and also
|
||
provides prominent facilities for anybody to edit those works. A
|
||
public wiki that anybody can edit is an example of such a server.
|
||
A "Massive Multiauthor Collaboration" (or "MMC") contained in the
|
||
site means any set of copyrightable works thus published on the MMC
|
||
site.
|
||
|
||
"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
|
||
license published by Creative Commons Corporation, a not-for-profit
|
||
corporation with a principal place of business in San Francisco,
|
||
California, as well as future copyleft versions of that license
|
||
published by that same organization.
|
||
|
||
"Incorporate" means to publish or republish a Document, in whole or
|
||
in part, as part of another Document.
|
||
|
||
An MMC is "eligible for relicensing" if it is licensed under this
|
||
License, and if all works that were first published under this
|
||
License somewhere other than this MMC, and subsequently
|
||
incorporated in whole or in part into the MMC, (1) had no cover
|
||
texts or invariant sections, and (2) were thus incorporated prior
|
||
to November 1, 2008.
|
||
|
||
The operator of an MMC Site may republish an MMC contained in the
|
||
site under CC-BY-SA on the same site at any time before August 1,
|
||
2009, provided the MMC is eligible for relicensing.
|
||
|
||
ADDENDUM: How to use this License for your documents
|
||
====================================================
|
||
|
||
To use this License in a document you have written, include a copy of
|
||
the License in the document and put the following copyright and license
|
||
notices just after the title page:
|
||
|
||
Copyright (C) YEAR YOUR NAME.
|
||
Permission is granted to copy, distribute and/or modify this document
|
||
under the terms of the GNU Free Documentation License, Version 1.3
|
||
or any later version published by the Free Software Foundation;
|
||
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
|
||
Texts. A copy of the license is included in the section entitled ``GNU
|
||
Free Documentation License''.
|
||
|
||
If you have Invariant Sections, Front-Cover Texts and Back-Cover
|
||
Texts, replace the "with...Texts." line with this:
|
||
|
||
with the Invariant Sections being LIST THEIR TITLES, with
|
||
the Front-Cover Texts being LIST, and with the Back-Cover Texts
|
||
being LIST.
|
||
|
||
If you have Invariant Sections without Cover Texts, or some other
|
||
combination of the three, merge those two alternatives to suit the
|
||
situation.
|
||
|
||
If your document contains nontrivial examples of program code, we
|
||
recommend releasing these examples in parallel under your choice of free
|
||
software license, such as the GNU General Public License, to permit
|
||
their use in free software.
|
||
|
||
|
||
|
||
Tag Table:
|
||
Node: Top702
|
||
Node: Timeline2236
|
||
Node: Dependency Tracking Evolution33697
|
||
Node: First Take on Dependencies34539
|
||
Node: Dependencies As Side Effects37197
|
||
Node: Dependencies for the User39256
|
||
Node: Techniques for Dependencies44286
|
||
Node: Recommendations for Tool Writers45984
|
||
Node: Future Directions for Dependencies46703
|
||
Node: Releases47173
|
||
Node: Copying This Manual52560
|
||
Node: GNU Free Documentation License52787
|
||
|
||
End Tag Table
|