diff options
author | Alexandre Duret-Lutz <adl@gnu.org> | 2004-09-19 21:31:09 +0000 |
---|---|---|
committer | Alexandre Duret-Lutz <adl@gnu.org> | 2004-09-19 21:31:09 +0000 |
commit | 5123656363ae7ba84f3844259889e7294ba9e2d8 (patch) | |
tree | d5afe19b9f5d59dabe14f3718b4b2bdb62213551 | |
parent | b208a0a2e5d6d75fa3d1b7a51d290fe90c518b0a (diff) | |
download | automake-5123656363ae7ba84f3844259889e7294ba9e2d8.tar.gz |
* doc/automake.texi (Timeline): New node. Thanks to Karl and Tom
for their comments on a preliminary version of this, Akim for
digging out some old mails, and Jason Molenda for sending the note
about Automake in Alias to Tom.
(Releases): Rename `ac' to `acl', suggested by Akim.
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | doc/automake.texi | 779 | ||||
-rw-r--r-- | doc/stamp-vti | 2 | ||||
-rw-r--r-- | doc/version.texi | 2 |
4 files changed, 778 insertions, 13 deletions
@@ -1,3 +1,11 @@ +2004-09-19 Alexandre Duret-Lutz <adl@gnu.org> + + * doc/automake.texi (Timeline): New node. Thanks to Karl and Tom + for their comments on a preliminary version of this, Akim for + digging out some old mails, and Jason Molenda for sending the note + about Automake in Alias to Tom. + (Releases): Rename `ac' to `acl', suggested by Akim. + 2004-09-15 Alexandre Duret-Lutz <adl@gnu.org> * doc/automake.texi (Releases): New node. diff --git a/doc/automake.texi b/doc/automake.texi index 21b3b9163..beebc1b11 100644 --- a/doc/automake.texi +++ b/doc/automake.texi @@ -260,6 +260,7 @@ Frequently Asked Questions about Automake History of Automake +* Timeline:: The Automake story. * Dependency Tracking Evolution:: Evolution of Automatic Dependency Tracking * Releases:: Statistics about Automake Releases @@ -7869,10 +7870,753 @@ nostalgic people, or to those curious to learn about the evolution of Automake. @menu +* Timeline:: The Automake story. * Dependency Tracking Evolution:: Evolution of Automatic Dependency Tracking * Releases:: Statistics about Automake Releases @end menu +@node Timeline +@section Timeline + +@table @asis +@item 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 @command{automake} script looks as follows. + +@example +#!/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 +@end example + +From this you can already see that Automake will be about reading +@file{*.am} file and producing @file{*.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: variables +assignments in @file{Makefile.am} files trigger injections of +precanned @file{Makefile} fragments into the generated +@file{Makefile.in}. The use of @file{Makefile} fragments was inspired +by the 4.4BSD @command{make} and include files, however Automake aims +to be portable and to conform to the GNU standards for @file{Makefile} +variables and targets. + +At this point, the last 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 almost not touch Automake after September. + +@item 1994-11-05 David MacKenzie's last commit. + +At this point Automake is a 200 line portable shell script, plus 332 +lines of @file{Makefile} fragments. In the @file{README}, David +states his ambivalence between ``portable shell'' and ``more +appropriate language'': + +@quotation +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. +@end quotation + +Automake is described as ``an experimental Makefile generator''. +There is no documentation. Adventurous users are refereed to example +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. + +@item 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 @file{Makefile.in} up to GNU standards. This +was hard, and one day he saw Automake on @url{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 did 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 +Fran@,cois 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. + +@item 1995-11-23 Automake 0.20 + +Besides introducing automatic dependency tracking (@pxref{Dependency +Tracking Evolution}), this version also supplies a 9-page manual. + +At this time @command{aclocal} and @code{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 +@file{configure.ac} we use today) must contain in order to use +Automake 0.20: + +@example +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 +@end example + +(Today all of the above is achieved by @code{AC_INIT} and +@code{AM_INIT_AUTOMAKE}.) + +Here is how programs are specified in @file{Makefile.am}: + +@example +PROGRAMS = hello +hello_SOURCES = hello.c +@end example + +This looks pretty much like we do today, except the @code{PROGRAMS} +variable has no directory prefix specifying where @file{hello} should +be installed: all programs are installed in @code{$(bindir)}. +@code{LIBPROGRAMS} can be used to specify programs that must be built +but not installed (it is called @code{noinst_PROGRAMS} nowadays). + +Programs can be built conditionally using @code{AC_SUBST}itutions: + +@example +PROGRAMS = @@progs@@ +AM_PROGRAMS = foo bar baz +@end example + +(@code{AM_PROGRAMS} has since then been renamed to +@code{EXTRA_PROGRAMS}.) + +Similarly scripts, static libraries, and data can built and installed +using the @code{LIBRARIES}, @code{SCRIPTS}, and @code{DATA} variables. +However @code{LIBRARIES} were treated a bit specially in that Automake +did automatically supply the @file{lib} and @file{.a} prefixes. +Therefore to build @file{libcpio.a}, one had to write + +@example +LIBRARIES = cpio +cpio_SOURCES = ... +@end example + +Extra files to distribute must be listed in @code{DIST_OTHER} (the +ancestor of @code{EXTRA_DIST}). Also extra directories that are to be +distributed should appear in @code{DIST_SUBDIRS}, but the manual +describe this as a temporary ugly hack (today extra directories should +also be listed in @code{EXTRA_DIST}, and @code{DIST_SUBDIRS} is used +for another purpose, see @ref{Conditional Subdirectories}). + +@item 1995-11-26 Automake 0.21 + +In less time that 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 +@code{my} variables (only dynamically scoped @code{local} variables), +without function prototypes, with function calls that needs to be +prefixed with @code{&}, etc. Traces of this old style can still be +found in today's @command{automake}. + +@item 1995-11-28 Automake 0.22 +@itemx 1995-11-29 Automake 0.23 + +Bug fixes. + +@item 1995-12-08 Automake 0.24 +@itemx 1995-12-10 Automake 0.25 + +Releases are raining. 0.24 introduces the uniform naming scheme we +use today, i.e., @code{bin_PROGRAMS} instead of @code{PROGRAMS}, +@code{noinst_LIBRARIES} instead of @code{LIBLIBRARIES}, etc. (However +@code{EXTRA_PROGRAMS} does not exist yet, @code{AM_PROGRAMS} is still +in use; and @code{TEXINFOS} and @code{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 Fran@,cois +Pinard's doing). + +0.25 fixes a Perl 4 portability bug. + +@item 1995-12-18 Jim Meyering starts using Automake in GNU Textutils. +@item 1995-12-31 Fran@,cois Pinard starts using Automake in GNU tar. + +@item 1996-01-03 Automake 0.26 +@itemx 1996-01-03 Automake 0.27 + +Of the many change and suggestions sent by Fran@,cois Pinard and +included in 0.26, the most important is perhaps the advise 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. + +@item 1996-01-13 Automake 0.28 + +Automake starts scanning @file{configure.in} for @code{LIBOBJS} +support. This is an important step because until this version +Automake did only know about the @file{Makefile.am}s it processed. +@file{configure.in} was Autoconf's world and the link between Autoconf +and Automake had to be done by the @file{Makefile.am} author. For +instance if @file{config.h} was generated by @file{configure}, it was the +package maintainer's responsibility to define the @code{CONFIG_HEADER} +variable in each @file{Makefile.am}. + +Succeeding releases will rely more and more on scanning +@file{configure.in} to better automate the Autoconf integration. + +0.28 also introduces the @code{AUTOMAKE_OPTIONS} variable and the +@code{--gnu} and @code{--gnits} options, the later being stricter. + +@item 1996-02-07 Automake 0.29 + +Thanks to @file{configure.in} scanning, @code{CONFIG_HEADER} is gone, +and rebuild rules for @file{configure}-generated file are +automatically output. + +@code{TEXINFOS} and @code{MANS} converted to the uniform naming +scheme. + +@item 1996-02-24 Automake 0.30 + +The test suite is born. It contains 9 tests. From now on test cases +will be added pretty much regularly (@pxref{Releases}), and this +proved to be really helpful later on. + +@code{EXTRA_PROGRAMS} finally replaces @code{AM_PROGRAMS}. + +All the third-party Autoconf macros, written mostly by Fran@,cois +Pinard (and later Jim Meyering), are distributed in Automake's +hand-written @file{aclocal.m4} file. Package maintainers are expected +to extract the necessary macros from this file. (In previous version +you had to copy and paste them from the manual...) + +@item 1996-03-11 Automake 0.31 + +The test suite in 0.30 was run via a long @code{check-local} rule. Upon +Ulrich Drepper's suggestion, 0.31 makes it an Automake rule output +whenever the @code{TESTS} variable is defined. + +@code{DIST_OTHER} is renamed to @code{EXTRA_DIST}, and the @code{check_} +prefix is introduced. The syntax is now the same as today. + +@item 1996-03-15 Gordon Matzigkeit starts writing libtool. + +@item 1996-04-27 Automake 0.32 + +@code{-hook} targets are introduced; an idea from Dieter Baron. + +@file{*.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. + +@item 1996-05-18 Automake 0.33 + +Gord Matzigkeit's main two contributions: + +@itemize +@item very preliminary libtool support +@item the distcheck rule +@end itemize + +Although they were very basic at this point, these are probably +among the top features for Automake today. + +Jim Meyering also provides the infamous @code{jm_MAINTAINER_MODE}, +since then renamed to @code{AM_MAINTAINER_MODE} and abandoned by its +author (@pxref{maintainer-mode}). + +@item 1996-05-28 Automake 1.0 + +After only six months of heavy development, the automake script is +3134 line long, plus 973 lines of @file{Makefile} fragments. The +package has 30 pages of documentation, and 38 test cases. +@file{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, an habit that +lasts. + +@item 1996-10-10 Kevin Dalley packages Automake 1.0 for Debian GNU/Linux. + +@item 1996-11-26 David J. MacKenzie releases Autoconf 2.12. + +Between June and October, the Autoconf development is almost staled. +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 stales. The +desolated Autoconf @file{ChangeLog} for 1997 lists only 7 commits. + +@item 1997-02-28 @email{automake@@gnu.ai.mit.edu} list alive + +The mailing list is announced as follows: +@example +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 (eg 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 +@end example + +Before that people were discussing Automake privately, on the Gnits +mailing list (which is not public either), and less frequently on +@code{gnu.misc.discuss}. + +@code{gnu.ai.mit.edu} is now @code{gnu.org}, in case you never +noticed. The archives of the early years of the +@code{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. + +@item 1997-06-22 Automake 1.2 + +Automake developments continues, and more and more new Autoconf macros +are required. Distributing them in @file{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 +@command{aclocal} (@command{aclocal} was actually started on +1996-07-28), a tool that automatically constructs an @file{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 fixes broken Autoconf macros). + +The 1.2 release contains 20 macros, among which the +@code{AM_INIT_AUTOMAKE} macro that simplifies the creation of +@file{configure.in}. + +Libtool is fully supported using @code{*_LTLIBRARIES}. + +The missing script is introduced by Fran@,cois Pinard; it is meant to be +a better solution than @code{AM_MAINTAINER_MODE} +(@pxref{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 @file{configure}-based, +and Ian thought that adding conditionals to @command{automake} was +simpler than doing all the work in @file{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 @command{automake} script has almost doubled: 6089 lines of Perl, +plus 1294 lines of @file{Makefile} fragments. + +@item 1997-07-08 Gordon Matzigkeit releases Libtool 1.0. + +@item 1998-04-05 Automake 1.3 + +This is a small advance compared to 1.2. +It add 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. + +@item 1998-09-06 @code{sourceware.cygnus.com} is on-line. + +Sourceware was setup by Jason Molenda to host open source projects. + +@item 1998-09-19 Automake CVS repository moved to @code{sourceware.cygnus.com} +@itemx 1998-10-26 @code{sourceware.cygnus.com} announces it hosts Automake +Automake is now hosted on @code{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 is still on Sourceware today, +but the host has been renamed to @code{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 @code{automake} and @code{autoconf} had joined +@code{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-year-old +on 1998-09-19. + +@item 1999-01-05 Ben Elliston releases Autoconf 2.13. + +@item 1999-01-14 Automake 1.4 + +This release adds support for Fortran 77 and for the @code{include} +statement. Also, @code{+=} 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 makes a duo that +will be used together for years. + +@command{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. + +@item 1999-03-27 The @code{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 @command{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. + +@xref{Dependency Tracking Evolution}, for more details about the +evolution of automatic dependency tracking in Automake. + +@item 1999-11-21 The @code{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. + +@item 2000-05-10 + +Since September 1999 and until 2003, Akim Demaille will be zealously +revamping Autoconf. + +@quotation +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 @email{autoconf@@gnu.org} +@end quotation + +Actually Akim works like a submarine: he will pile up patches when he +work off-line on week-end, and flush them in batch when he surfaces +back on Monday. + +@item 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 :) + +@item 2001-01-28 + +Akim sends a batch of 14 patches to @email{automake@@gnu.org}. + +@quotation +Aiieeee! I was dreading the day that the Demaillator turned his +sights on automake... and now it has arrived! -- Tom Tromey +@end quotation + +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 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. + +@quotation +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 +@end quotation + +All these patches were sent to and discussed on +@email{automake@@gnu.org}, so subscribed users were literally drown in +technical mails. Eventually, the @email{automake-patches@@gnu.org} +mailing list was created in May. + +Year after year, Automake had drifted away from its initial design: +construct @file{Makefile.in} by assembling various @file{Makefile} +fragments. In 1.4, lots of @file{Makefile} rules are being emitted at +various places in the @command{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 these hard-coded rules to separate +@file{Makefile} fragments, so the logic could be centralized in a +@file{Makefile} fragment processor. + +Another significant contribution of Akim is the interface with the +``trace'' feature of Autoconf. The way to scan @file{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 @code{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 @code{--trace} option, which provides accurate information about +where macros are actually called and with what arguments. Akim will +equip Automake with a second @file{configure.in} scanner that uses +this @code{--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. + +@item 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. + +@item 2001-05-08 Automake 1.4-p1 +@itemx 2001-05-24 Automake 1.4-p2 + +Gary V. Vaughan, the principal Libtool maintainer, makes a ``patch +release'' of Automake: + +@quotation +The main purpose of this release is to have a stable automake +which is compatible with the latest stable libtool. +@end quotation + +The release also contains obvious fixes for bugs in Automake 1.4, +some of which were reported almost monthly. + +@item 2001-05-21 Akim Demaille releases Autoconf 2.50 + +@item 2001-06-07 Automake 1.4-p3 +@itemx 2001-06-10 Automake 1.4-p4 +@itemx 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 +@file{configure.ac} over @file{configure.in}, and it introduces a new +syntax for @code{AC_OUTPUT}ing files. + +@item 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: +@itemize +@item The new dependency tracking scheme that uses @command{depcomp}. +Aside from the improvement on the dependency tracking itself +(@pxref{Dependency Tracking Evolution}), this also streamlines the use +of automake generated @file{Makefile.in}s as the @file{Makefile.in}s +used during development are now the same as those used in +distributions. Before that the @file{Makefile.in}s generated for +maintainers required GNU @command{make} and GCC, they were different +from the portable @file{Makefile} generated for distribution; this was +causing some confusion. + +@item Support for per-target compilation flags. + +@item Support for reference to files in subdirectories in most +@file{Makefile.am} variables. + +@item Introduction of the @code{dist_}, @code{nodist_}, and @code{nobase_} +prefixes. +@item Perl 4 support is finally dropped. +@end itemize + +1.5 did broke 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 +@command{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 @code{make distcheck} was +improved to check that @code{make uninstall} did remove all the files +@code{make install} installed, that @code{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 @code{+=} assignments with no previous +definition. Because these changes all occurred suddenly after 1.4 had +been established for more that two years, it hurt users. + +To make matter worse, meanwhile Autoconf (now at version 2.52) was +facing similar troubles, for similar reasons. + +@item 2002-03-05 Automake 1.6 + +This release introduced versioned installation (@pxref{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 @file{automake-1.6}, call all its +bug-fix versions identically, and switch to @file{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, meant 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. + +@item 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 the followings 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 +@command{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. + +@item 2002-06-14 Automake 1.6.2 + +@item 2002-07-28 Automake 1.6.3 +@itemx 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. + +@item 2002-09-25 Automake 1.7 + +This release switches to the new @file{configure.ac} scanner Akim +was experimenting in 1.5. + +@item 2002-10-16 Automake 1.7.1 +@itemx 2002-12-06 Automake 1.7.2 +@itemx 2003-02-20 Automake 1.7.3 +@itemx 2003-04-23 Automake 1.7.4 +@itemx 2003-05-18 Automake 1.7.5 +@itemx 2003-07-10 Automake 1.7.6 +@itemx 2003-09-07 Automake 1.7.7 +@itemx 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. + +@item 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 character, 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 @file{Makefile.in} @code{generated by automake}... + +@item 2003-11-09 Automake 1.7.9 + +@item 2003-12-10 Automake 1.8 + +The most striking update is probably that of @command{aclocal}. + +@command{aclocal} now uses @code{m4_include} in the produced +@code{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: @file{Makefile.in} +must be rebuilt whenever a dependency of @file{configure} changes, but +all the @file{m4} files included in @file{aclocal.m4} where unknown +from @command{automake}. Now @command{automake} can just trace the +@code{m4_include}s to discover the dependencies. + +@command{aclocal} also starts using the @code{--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 +@command{aclocal} versions, notably using handwritten +@code{m4_include}s: @command{aclocal} must make sure not to redefine a +rule which 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. + +@itemx 2004-01-11 Automake 1.8.1 +@itemx 2004-01-12 Automake 1.8.2 +@itemx 2004-03-07 Automake 1.8.3 +@itemx 2004-04-25 Automake 1.8.4 +@itemx 2004-05-16 Automake 1.8.5 + +@item 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 @file{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. + +@itemx 2004-08-11 Automake 1.9.1 +@itemx 2004-09-19 Automake 1.9.2 + +Automake has ten years. This chapter of the manual was initially +written for this occasion. + +@end table + @node Dependency Tracking Evolution @section Dependency Tracking in Automake @@ -8153,7 +8897,7 @@ evolution of Automake using these metrics: The date and version of the release. @item am The number of lines of the @command{automake} script. -@item ac +@item acl The number of lines of the @command{aclocal} script. @item pm The number of lines of the @command{Perl} supporting modules. @@ -8169,7 +8913,7 @@ The number of test cases in the test suite. @end table @multitable {8888-88-88} {8.8-p8} {8888} {888} {8888} {8888 (88)} {8888 (88)} {888} {888} -@headitem Date @tab Rel @tab am @tab ac @tab pm @tab @file{*.am} @tab m4 @tab doc @tab t +@headitem Date @tab Rel @tab am @tab acl @tab pm @tab @file{*.am} @tab m4 @tab doc @tab t @item 1994-09-19 @tab CVS @tab 141 @tab @tab @tab 299 (24) @tab @tab @tab @item 1994-11-05 @tab CVS @tab 208 @tab @tab @tab 332 (28) @tab @tab @tab @item 1995-11-23 @tab 0.20 @tab 533 @tab @tab @tab 458 (35) @tab @tab 9 @tab @@ -8182,11 +8926,11 @@ The number of test cases in the test suite. @item 1996-01-03 @tab 0.27 @tab 1706 @tab @tab @tab 438 (36) @tab @tab 16 @tab @item 1996-01-13 @tab 0.28 @tab 1964 @tab @tab @tab 934 (33) @tab @tab 16 @tab @item 1996-02-07 @tab 0.29 @tab 2299 @tab @tab @tab 936 (33) @tab @tab 17 @tab -@item 1996-02-24 @tab 0.30 @tab 2544 @tab @tab @tab 919 (32) @tab @tab 20 @tab 9 -@item 1996-03-11 @tab 0.31 @tab 2877 @tab @tab @tab 919 (32) @tab @tab 29 @tab 17 -@item 1996-04-27 @tab 0.32 @tab 3058 @tab @tab @tab 921 (31) @tab @tab 30 @tab 26 -@item 1996-05-18 @tab 0.33 @tab 3110 @tab @tab @tab 926 (31) @tab @tab 30 @tab 35 -@item 1996-05-28 @tab 1.0 @tab 3134 @tab @tab @tab 973 (32) @tab @tab 30 @tab 38 +@item 1996-02-24 @tab 0.30 @tab 2544 @tab @tab @tab 919 (32) @tab 85 (1) @tab 20 @tab 9 +@item 1996-03-11 @tab 0.31 @tab 2877 @tab @tab @tab 919 (32) @tab 85 (1) @tab 29 @tab 17 +@item 1996-04-27 @tab 0.32 @tab 3058 @tab @tab @tab 921 (31) @tab 85 (1) @tab 30 @tab 26 +@item 1996-05-18 @tab 0.33 @tab 3110 @tab @tab @tab 926 (31) @tab 105 (1) @tab 30 @tab 35 +@item 1996-05-28 @tab 1.0 @tab 3134 @tab @tab @tab 973 (32) @tab 105 (1) @tab 30 @tab 38 @item 1997-06-22 @tab 1.2 @tab 6089 @tab 385 @tab @tab 1294 (36) @tab 592 (23) @tab 37 @tab 126 @item 1998-04-05 @tab 1.3 @tab 6415 @tab 422 @tab @tab 1470 (39) @tab 741 (26) @tab 39 @tab 156 @item 1999-01-14 @tab 1.4 @tab 7240 @tab 426 @tab @tab 1591 (40) @tab 734 (23) @tab 51 @tab 197 @@ -8219,6 +8963,7 @@ The number of test cases in the test suite. @item 2004-05-16 @tab 1.8.5 @tab 7240 @tab 686 @tab 7736 @tab 3299 (39) @tab 1701 (36) @tab 112 @tab 533 @item 2004-07-28 @tab 1.9 @tab 7508 @tab 715 @tab 7794 @tab 3352 (40) @tab 1812 (37) @tab 115 @tab 551 @item 2004-08-11 @tab 1.9.1 @tab 7512 @tab 715 @tab 7794 @tab 3354 (40) @tab 1812 (37) @tab 115 @tab 552 +@item 2004-09-19 @tab 1.9.2 @tab 7512 @tab 715 @tab 7794 @tab 3354 (40) @tab 1812 (37) @tab 132 @tab 554 @end multitable @@ -8310,12 +9055,24 @@ The number of test cases in the test suite. @c LocalWords: RUNTESTDEFAULTFLAGS toolchain RUNTESTFLAGS asis readme DVIPS @c LocalWords: installcheck gzipped tarZ std utils etags mkid multilibbing cd @c LocalWords: ARGS taggable ETAGSFLAGS lang ctags CTAGSFLAGS GTAGS gtags idl -@c LocalWords: foocc doit idlC multilibs ABIs cmindex defmac ARG enableval -@c LocalWords: MSG xtrue DBG pathchk CYGWIN afile proglink versioned CVS's +@c LocalWords: foocc doit idlC multilibs ABIs cmindex defmac ARG enableval FC +@c LocalWords: MSG xtrue DBG pathchk CYGWIN afile proglink versioned CVS's TE @c LocalWords: wildcards Autoconfiscated subsubheading autotools Meyering API @c LocalWords: ois's wildcard Wportability cartouche vrindex printindex Duret @c LocalWords: DSOMEFLAG DVERSION automake Lutz insertcopying versioning FAQ @c LocalWords: LTLIBOBJ Libtool's libtool's libltdl dlopening itutions libbar @c LocalWords: WANTEDLIBS libhello sublibraries libtop libsub dlopened Ratfor -@c LocalWords: mymodule timestamps timestamp underquoted MAKEINFOHTMLFLAGS -@c LocalWords: GNUmakefile buildir Subpackages subpackage's subpackages +@c LocalWords: mymodule timestamps timestamp underquoted MAKEINFOHTMLFLAGS te +@c LocalWords: GNUmakefile buildir Subpackages subpackage's subpackages aux +@c LocalWords: detailmenu Timeline pwd reldir AUTOM autom PREREQ FOOBAR libc +@c LocalWords: libhand subpackage moduleN libmain libmisc FCFLAGS FCCOMPILE +@c LocalWords: FCLINK subst sed ELCFILES elc MAKEINFOHTML dvips esyscmd ustar +@c LocalWords: tarballs Woverride scrdir vfi ELFILES djm AutoMake honkin FSF +@c LocalWords: fileutils precanned MacKenzie's reimplement termutils Tromey's +@c LocalWords: cois gnitsians LIBPROGRAMS progs LIBLIBRARIES Textutils Ulrich +@c LocalWords: Matzigkeit Drepper's Gord Matzigkeit's jm Dalley Debian eg org +@c LocalWords: Administrivia ILU CORBA Sourceware Molenda sourceware Elliston +@c LocalWords: dep Oliva Akim Demaille Aiieeee Demaillator Akim's sourcequake +@c LocalWords: grep backported screenshots libgcj KB unnumberedsubsubsec pre +@c LocalWords: precomputing hacky makedepend inline clearmake LD PRELOAD Rel +@c LocalWords: syscalls perlhist acl pm multitable headitem fdl appendixsec diff --git a/doc/stamp-vti b/doc/stamp-vti index da043544f..3ca0cda22 100644 --- a/doc/stamp-vti +++ b/doc/stamp-vti @@ -1,4 +1,4 @@ -@set UPDATED 16 September 2004 +@set UPDATED 19 September 2004 @set UPDATED-MONTH September 2004 @set EDITION 1.9.1a @set VERSION 1.9.1a diff --git a/doc/version.texi b/doc/version.texi index da043544f..3ca0cda22 100644 --- a/doc/version.texi +++ b/doc/version.texi @@ -1,4 +1,4 @@ -@set UPDATED 16 September 2004 +@set UPDATED 19 September 2004 @set UPDATED-MONTH September 2004 @set EDITION 1.9.1a @set VERSION 1.9.1a |