d26ba0ed94aa6a4a2fde63c2fed6190cbd39bbf6
[platform/upstream/automake.git] / doc / automake-history.texi
1 \input texinfo   @c -*-texinfo-*-
2 @c %**start of header
3 @setfilename automake-history.info
4 @settitle automake-history
5 @setchapternewpage on
6 @c %**end of header
7
8 @copying
9
10 This manual describes (part of) the history of GNU Automake, a program
11 that creates GNU standards-compliant Makefiles from template files.
12
13 Copyright @copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
14 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software
15 Foundation, Inc.
16
17 @quotation
18 Permission is granted to copy, distribute and/or modify this document
19 under the terms of the GNU Free Documentation License,
20 Version 1.3 or any later version published by the Free Software
21 Foundation; with no Invariant Sections, with no Front-Cover texts,
22 and with no Back-Cover Texts.  A copy of the license is included in the
23 section entitled ``GNU Free Documentation License.''
24
25 @end quotation
26 @end copying
27
28 @titlepage
29 @title Brief History of Automake
30 @author David MacKenzie
31 @author Tom Tromey
32 @author Alexandre Duret-Lutz
33 @page
34 @vskip 0pt plus 1filll
35 @insertcopying
36 @end titlepage
37
38 @contents
39
40 @ifnottex
41 @node Top
42 @comment  node-name,  next,  previous,  up
43 @top Brief History of Automake
44
45 @insertcopying
46
47 @menu
48 * Timeline::                      The Automake story.
49 * Dependency Tracking Evolution:: Evolution of Automatic Dependency Tracking
50 * Releases::                      Release statistics
51 * Copying This Manual::           How to make copies of this manual
52
53 @detailmenu
54  --- The Detailed Node Listing ---
55
56 Evolution of Automatic Dependency Tracking
57
58 * First Take on Dependencies::    Precomputed dependency tracking
59 * Dependencies As Side Effects::  Update at developer compile time
60 * Dependencies for the User::     Update at user compile time
61 * Techniques for Dependencies::   Alternative approaches
62
63 Techniques for Computing Dependencies
64
65 * Recommendations for Tool Writers::
66 * Future Directions for Dependencies::
67
68 Copying This Manual
69
70 * GNU Free Documentation License::  License for copying this manual
71
72 @end detailmenu
73 @end menu
74
75 @end ifnottex
76
77 @node Timeline
78 @chapter Timeline
79
80 @table @asis
81 @item 1994-09-19 First CVS commit.
82
83 If we can trust the CVS repository, David J.@tie{}MacKenzie (djm) started
84 working on Automake (or AutoMake, as it was spelt then) this Monday.
85
86 The first version of the @command{automake} script looks as follows.
87
88 @example
89 #!/bin/sh
90
91 status=0
92
93 for makefile
94 do
95   if test ! -f $@{makefile@}.am; then
96     echo "automake: $@{makefile@}.am: No such honkin' file"
97     status=1
98     continue
99   fi
100
101   exec 4> $@{makefile@}.in
102
103 done
104 @end example
105
106 From this you can already see that Automake will be about reading
107 @file{*.am} file and producing @file{*.in} files.  You cannot see
108 anything else, but if you also know that David is the one who created
109 Autoconf two years before you can guess the rest.
110
111 Several commits follow, and by the end of the day Automake is
112 reported to work for GNU fileutils and GNU m4.
113
114 The modus operandi is the one that is still used today: variable
115 assignments in @file{Makefile.am} files trigger injections of
116 precanned @file{Makefile} fragments into the generated
117 @file{Makefile.in}.  The use of @file{Makefile} fragments was inspired
118 by the 4.4BSD @command{make} and include files, however Automake aims
119 to be portable and to conform to the GNU standards for @file{Makefile}
120 variables and targets.
121
122 At this point, the most recent release of Autoconf is version 1.11,
123 and David is preparing to release Autoconf 2.0 in late October.  As a
124 matter of fact, he will barely touch Automake after September.
125
126 @item 1994-11-05 David MacKenzie's last commit.
127
128 At this point Automake is a 200 line portable shell script, plus 332
129 lines of @file{Makefile} fragments.  In the @file{README}, David
130 states his ambivalence between ``portable shell'' and ``more
131 appropriate language'':
132
133 @quotation
134 I wrote it keeping in mind the possibility of it becoming an Autoconf
135 macro, so it would run at configure-time.  That would slow
136 configuration down a bit, but allow users to modify the Makefile.am
137 without needing to fetch the AutoMake package.  And, the Makefile.in
138 files wouldn't need to be distributed.  But all of AutoMake would.  So
139 I might reimplement AutoMake in Perl, m4, or some other more
140 appropriate language.
141 @end quotation
142
143 Automake is described as ``an experimental Makefile generator''.
144 There is no documentation.  Adventurous users are referred to the
145 examples and patches needed to use Automake with GNU m4 1.3, fileutils
146 3.9, time 1.6, and development versions of find and indent.
147
148 These examples seem to have been lost.  However at the time of writing
149 (10 years later in September, 2004) the FSF still distributes a
150 package that uses this version of Automake: check out GNU termutils
151 2.0.
152
153 @item 1995-11-12 Tom Tromey's first commit.
154
155 After one year of inactivity, Tom Tromey takes over the package.
156 Tom was working on GNU cpio back then, and doing this just for fun,
157 having trouble finding a project to contribute to.  So while hacking
158 he wanted to bring the @file{Makefile.in} up to GNU standards.  This
159 was hard, and one day he saw Automake on @url{ftp://alpha.gnu.org/},
160 grabbed it and tried it out.
161
162 Tom didn't talk to djm about it until later, just to make sure he
163 didn't mind if he made a release.  He did a bunch of early releases to
164 the Gnits folks.
165
166 Gnits was (and still is) totally informal, just a few GNU friends who
167 Fran@,cois Pinard knew, who were all interested in making a common
168 infrastructure for GNU projects, and shared a similar outlook on how
169 to do it.  So they were able to make some progress.  It came along
170 with Autoconf and extensions thereof, and then Automake from David and
171 Tom (who were both gnitsians).  One of their ideas was to write a
172 document paralleling the GNU standards, that was more strict in some
173 ways and more detailed.  They never finished the GNITS standards, but
174 the ideas mostly made their way into Automake.
175
176 @item 1995-11-23 Automake 0.20
177
178 Besides introducing automatic dependency tracking (@pxref{Dependency
179 Tracking Evolution}), this version also supplies a 9-page manual.
180
181 At this time @command{aclocal} and @code{AM_INIT_AUTOMAKE} did not
182 exist, so many things had to be done by hand.  For instance, here is
183 what a configure.in (this is the former name of the
184 @file{configure.ac} we use today) must contain in order to use
185 Automake 0.20:
186
187 @example
188 PACKAGE=cpio
189 VERSION=2.3.911
190 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
191 AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
192 AC_SUBST(PACKAGE)
193 AC_SUBST(VERSION)
194 AC_ARG_PROGRAM
195 AC_PROG_INSTALL
196 @end example
197
198 (Today all of the above is achieved by @code{AC_INIT} and
199 @code{AM_INIT_AUTOMAKE}.)
200
201 Here is how programs are specified in @file{Makefile.am}:
202
203 @example
204 PROGRAMS = hello
205 hello_SOURCES = hello.c
206 @end example
207
208 This looks pretty much like what we do today, except the
209 @code{PROGRAMS} variable has no directory prefix specifying where
210 @file{hello} should be installed: all programs are installed in
211 @samp{$(bindir)}.  @code{LIBPROGRAMS} can be used to specify programs
212 that must be built but not installed (it is called
213 @code{noinst_PROGRAMS} nowadays).
214
215 Programs can be built conditionally using @code{AC_SUBST}itutions:
216
217 @example
218 PROGRAMS = @@progs@@
219 AM_PROGRAMS = foo bar baz
220 @end example
221
222 (@code{AM_PROGRAMS} has since then been renamed to
223 @code{EXTRA_PROGRAMS}.)
224
225 Similarly scripts, static libraries, and data can be built and installed
226 using the @code{LIBRARIES}, @code{SCRIPTS}, and @code{DATA} variables.
227 However @code{LIBRARIES} were treated a bit specially in that Automake
228 did automatically supply the @file{lib} and @file{.a} prefixes.
229 Therefore to build @file{libcpio.a}, one had to write
230
231 @example
232 LIBRARIES = cpio
233 cpio_SOURCES = ...
234 @end example
235
236 Extra files to distribute must be listed in @code{DIST_OTHER} (the
237 ancestor of @code{EXTRA_DIST}).  Also extra directories that are to be
238 distributed should appear in @code{DIST_SUBDIRS}, but the manual
239 describes this as a temporary ugly hack (today extra directories should
240 also be listed in @code{EXTRA_DIST}, and @code{DIST_SUBDIRS} is used
241 for another purpose, @pxref{Conditional Subdirectories, , Conditional
242 Subdirectories, automake, GNU Automake}).
243
244 @item 1995-11-26 Automake 0.21
245
246 In less time than it takes to cook a frozen pizza, Tom rewrites
247 Automake using Perl.  At this time Perl 5 is only one year old, and
248 Perl 4.036 is in use at many sites.  Supporting several Perl versions
249 has been a source of problems through the whole history of Automake.
250
251 If you never used Perl 4, imagine Perl 5 without objects, without
252 @samp{my} variables (only dynamically scoped @samp{local} variables),
253 without function prototypes, with function calls that needs to be
254 prefixed with @samp{&}, etc.  Traces of this old style can still be
255 found in today's @command{automake}.
256
257 @item 1995-11-28 Automake 0.22
258 @itemx 1995-11-29 Automake 0.23
259
260 Bug fixes.
261
262 @item 1995-12-08 Automake 0.24
263 @itemx 1995-12-10 Automake 0.25
264
265 Releases are raining.  0.24 introduces the uniform naming scheme we
266 use today, i.e., @code{bin_PROGRAMS} instead of @code{PROGRAMS},
267 @code{noinst_LIBRARIES} instead of @code{LIBLIBRARIES}, etc.  (However
268 @code{EXTRA_PROGRAMS} does not exist yet, @code{AM_PROGRAMS} is still
269 in use; and @code{TEXINFOS} and @code{MANS} still have no directory
270 prefixes.)  Adding support for prefixes like that was one of the major
271 ideas in @command{automake}; it has lasted pretty well.
272
273 AutoMake is renamed to Automake (Tom seems to recall it was Fran@,cois
274 Pinard's doing).
275
276 0.25 fixes a Perl 4 portability bug.
277
278 @item 1995-12-18 Jim Meyering starts using Automake in GNU Textutils.
279 @item 1995-12-31 Fran@,cois Pinard starts using Automake in GNU tar.
280
281 @item 1996-01-03 Automake 0.26
282 @itemx 1996-01-03 Automake 0.27
283
284 Of the many changes and suggestions sent by Fran@,cois Pinard and
285 included in 0.26, perhaps the most important is the advice that to
286 ease customization a user rule or variable definition should always
287 override an Automake rule or definition.
288
289 Gordon Matzigkeit and Jim Meyering are two other early contributors
290 that have been sending fixes.
291
292 0.27 fixes yet another Perl 4 portability bug.
293
294 @item 1996-01-13 Automake 0.28
295
296 Automake starts scanning @file{configure.in} for @code{LIBOBJS}
297 support.  This is an important step because until this version
298 Automake only knew about the @file{Makefile.am}s it processed.
299 @file{configure.in} was Autoconf's world and the link between Autoconf
300 and Automake had to be done by the @file{Makefile.am} author.  For
301 instance, if @file{config.h} was generated by @file{configure}, it was the
302 package maintainer's responsibility to define the @code{CONFIG_HEADER}
303 variable in each @file{Makefile.am}.
304
305 Succeeding releases will rely more and more on scanning
306 @file{configure.in} to better automate the Autoconf integration.
307
308 0.28 also introduces the @code{AUTOMAKE_OPTIONS} variable and the
309 @option{--gnu} and @option{--gnits} options, the latter being stricter.
310
311 @item 1996-02-07 Automake 0.29
312
313 Thanks to @file{configure.in} scanning, @code{CONFIG_HEADER} is gone,
314 and rebuild rules for @file{configure}-generated file are
315 automatically output.
316
317 @code{TEXINFOS} and @code{MANS} converted to the uniform naming
318 scheme.
319
320 @item 1996-02-24 Automake 0.30
321
322 The test suite is born.  It contains 9 tests.  From now on test cases
323 will be added pretty regularly (@pxref{Releases}), and this proved to
324 be really helpful later on.
325
326 @code{EXTRA_PROGRAMS} finally replaces @code{AM_PROGRAMS}.
327
328 All the third-party Autoconf macros, written mostly by Fran@,cois
329 Pinard (and later Jim Meyering), are distributed in Automake's
330 hand-written @file{aclocal.m4} file.  Package maintainers are expected
331 to extract the necessary macros from this file.  (In previous versions
332 you had to copy and paste them from the manual...)
333
334 @item 1996-03-11 Automake 0.31
335
336 The test suite in 0.30 was run via a long @code{check-local} rule.  Upon
337 Ulrich Drepper's suggestion, 0.31 makes it an Automake rule output
338 whenever the @code{TESTS} variable is defined.
339
340 @code{DIST_OTHER} is renamed to @code{EXTRA_DIST}, and the @code{check_}
341 prefix is introduced.  The syntax is now the same as today.
342
343 @item 1996-03-15 Gordon Matzigkeit starts writing libtool.
344
345 @item 1996-04-27 Automake 0.32
346
347 @code{-hook} targets are introduced; an idea from Dieter Baron.
348
349 @file{*.info} files, which were output in the build directory are
350 now built in the source directory, because they are distributed.  It
351 seems these files like to move back and forth as that will happen
352 again in future versions.
353
354 @item 1996-05-18 Automake 0.33
355
356 Gord Matzigkeit's main two contributions:
357
358 @itemize
359 @item very preliminary libtool support
360 @item the distcheck rule
361 @end itemize
362
363 Although they were very basic at this point, these are probably
364 among the top features for Automake today.
365
366 Jim Meyering also provides the infamous @code{jm_MAINTAINER_MODE}, since
367 then renamed to @code{AM_MAINTAINER_MODE} and abandoned by its author
368 (@pxref{maintainer-mode, , maintainer-mode, automake, GNU Automake}).
369
370 @item 1996-05-28 Automake 1.0
371
372 After only six months of heavy development, the @command{automake} script is
373 3134 lines long, plus 973 lines of @file{Makefile} fragments.  The
374 package has 30 pages of documentation, and 38 test cases.
375 @file{aclocal.m4} contains 4 macros.
376
377 From now on and until version 1.4, new releases will occur at a rate
378 of about one a year.  1.1 did not exist, actually 1.1b to 1.1p have
379 been the name of beta releases for 1.2.  This is the first time
380 Automake uses suffix letters to designate beta releases, a habit that
381 lasts.
382
383 @item 1996-10-10 Kevin Dalley packages Automake 1.0 for Debian GNU/Linux.
384
385 @item 1996-11-26 David J.@tie{}MacKenzie releases Autoconf 2.12.
386
387 Between June and October, the Autoconf development is almost stalled.
388 Roland McGrath has been working at the beginning of the year.  David
389 comes back in November to release 2.12, but he won't touch Autoconf
390 anymore after this year, and Autoconf then really stagnates.  The
391 desolate Autoconf @file{ChangeLog} for 1997 lists only 7 commits.
392
393 @item 1997-02-28 @email{automake@@gnu.ai.mit.edu} list alive
394
395 The mailing list is announced as follows:
396 @smallexample
397 I've created the "automake" mailing list.  It is
398 "automake@@gnu.ai.mit.edu".  Administrivia, as always, to
399 automake-request@@gnu.ai.mit.edu.
400
401 The charter of this list is discussion of automake, autoconf, and
402 other configuration/portability tools (e.g., libtool).  It is expected
403 that discussion will range from pleas for help all the way up to
404 patches.
405
406 This list is archived on the FSF machines.  Offhand I don't know if
407 you can get the archive without an account there.
408
409 This list is open to anybody who wants to join.  Tell all your
410 friends!
411 -- Tom Tromey
412 @end smallexample
413
414 Before that people were discussing Automake privately, on the Gnits
415 mailing list (which is not public either), and less frequently on
416 @code{gnu.misc.discuss}.
417
418 @code{gnu.ai.mit.edu} is now @code{gnu.org}, in case you never
419 noticed.  The archives of the early years of the
420 @code{automake@@gnu.org} list have been lost, so today it is almost
421 impossible to find traces of discussions that occurred before 1999.
422 This has been annoying more than once, as such discussions can be
423 useful to understand the rationale behind a piece of uncommented code
424 that was introduced back then.
425
426 @item 1997-06-22 Automake 1.2
427
428 Automake developments continues, and more and more new Autoconf macros
429 are required.  Distributing them in @file{aclocal.m4} and requiring
430 people to browse this file to extract the relevant macros becomes
431 uncomfortable.  Ideally, some of them should be contributed to
432 Autoconf so that they can be used directly, however Autoconf is
433 currently inactive.  Automake 1.2 consequently introduces
434 @command{aclocal} (@command{aclocal} was actually started on
435 1996-07-28), a tool that automatically constructs an @file{aclocal.m4}
436 file from a repository of third-party macros.  Because Autoconf has
437 stalled, Automake also becomes a kind of repository for such
438 third-party macros, even macros completely unrelated to Automake (for
439 instance macros that fix broken Autoconf macros).
440
441 The 1.2 release contains 20 macros, including the
442 @code{AM_INIT_AUTOMAKE} macro that simplifies the creation of
443 @file{configure.in}.
444
445 Libtool is fully supported using @code{*_LTLIBRARIES}.
446
447 The missing script is introduced by Fran@,cois Pinard; it is meant
448 to be a better solution than @code{AM_MAINTAINER_MODE}
449 (@pxref{maintainer-mode, , maintainer-mode, automake, GNU Automake}).
450
451 Conditionals support was implemented by Ian Lance Taylor.  At the
452 time, Tom and Ian were working on an internal project at Cygnus.  They
453 were using ILU, which is pretty similar to CORBA@.  They wanted to
454 integrate ILU into their build, which was all @file{configure}-based,
455 and Ian thought that adding conditionals to @command{automake} was
456 simpler than doing all the work in @file{configure} (which was the
457 standard at the time).  So this was actually funded by Cygnus.
458
459 This very useful but tricky feature will take a lot of time to
460 stabilize.  (At the time this text is written, there are still
461 primaries that have not been updated to support conditional
462 definitions in Automake 1.9.)
463
464 The @command{automake} script has almost doubled: 6089 lines of Perl,
465 plus 1294 lines of @file{Makefile} fragments.
466
467 @item 1997-07-08 Gordon Matzigkeit releases Libtool 1.0.
468
469 @item 1998-04-05 Automake 1.3
470
471 This is a small advance compared to 1.2.
472 It adds support for assembly, and preliminary support for Java.
473
474 Perl 5.004_04 is out, but fixes to support Perl 4 are still
475 regularly submitted whenever Automake breaks it.
476
477 @item 1998-09-06 @code{sourceware.cygnus.com} is on-line.
478
479 Sourceware was setup by Jason Molenda to host open source projects.
480
481 @item 1998-09-19  Automake CVS repository moved to @code{sourceware.cygnus.com}
482 @itemx 1998-10-26  @code{sourceware.cygnus.com} announces it hosts Automake:
483 Automake is now hosted on @code{sourceware.cygnus.com}.  It has a
484 publicly accessible CVS repository.  This CVS repository is a copy of
485 the one Tom was using on his machine, which in turn is based on
486 a copy of the CVS repository of David MacKenzie.  This is why we still
487 have to full source history.  (Automake was on Sourceware until 2007-10-29,
488 when it moved to a git repository on @code{savannah.gnu.org},
489 but the Sourceware host had been renamed to @code{sources.redhat.com}.)
490
491 The oldest file in the administrative directory of the CVS repository
492 that was created on Sourceware is dated 1998-09-19, while the
493 announcement that @command{automake} and @command{autoconf} had joined
494 @command{sourceware} was made on 1998-10-26.  They were among the
495 first projects to be hosted there.
496
497 The heedful reader will have noticed Automake was exactly 4 years old
498 on 1998-09-19.
499
500 @item 1999-01-05 Ben Elliston releases Autoconf 2.13.
501
502 @item 1999-01-14 Automake 1.4
503
504 This release adds support for Fortran 77 and for the @code{include}
505 statement.  Also, @samp{+=} assignments are introduced, but it is
506 still quite easy to fool Automake when mixing this with conditionals.
507
508 These two releases, Automake 1.4 and Autoconf 2.13 make a duo that
509 will be used together for years.
510
511 @command{automake} is 7228 lines, plus 1591 lines of Makefile
512 fragment, 20 macros (some 1.3 macros were finally contributed back to
513 Autoconf), 197 test cases, and 51 pages of documentation.
514
515 @item 1999-03-27 The @code{user-dep-branch} is created on the CVS repository.
516
517 This implements a new dependency tracking schemed that should be
518 able to handle automatic dependency tracking using any compiler (not
519 just gcc) and any make (not just GNU @command{make}).  In addition,
520 the new scheme should be more reliable than the old one, as
521 dependencies are generated on the end user's machine.  Alexandre Oliva
522 creates depcomp for this purpose.
523
524 @xref{Dependency Tracking Evolution}, for more details about the
525 evolution of automatic dependency tracking in Automake.
526
527 @item 1999-11-21 The @code{user-dep-branch} is merged into the main trunk.
528
529 This was a huge problem since we also had patches going in on the
530 trunk.  The merge took a long time and was very painful.
531
532 @item 2000-05-10
533
534 Since September 1999 and until 2003, Akim Demaille will be zealously
535 revamping Autoconf.
536
537 @quotation
538 I think the next release should be called "3.0".@*
539 Let's face it: you've basically rewritten autoconf.@*
540 Every weekend there are 30 new patches.@*
541 I don't see how we could call this "2.15" with a straight face.@*
542 -- Tom Tromey on @email{autoconf@@gnu.org}
543 @end quotation
544
545 Actually Akim works like a submarine: he will pile up patches while he
546 works off-line during the weekend, and flush them in batch when he
547 resurfaces on Monday.
548
549 @item 2001-01-24
550
551 On this Wednesday, Autoconf 2.49c, the last beta before Autoconf 2.50
552 is out, and Akim has to find something to do during his week-end :)
553
554 @item 2001-01-28
555
556 Akim sends a batch of 14 patches to @email{automake@@gnu.org}.
557
558 @quotation
559 Aiieeee!  I was dreading the day that the Demaillator turned his
560 sights on automake@dots{} and now it has arrived! -- Tom Tromey
561 @end quotation
562
563 It's only the beginning: in two months he will send 192 patches.  Then
564 he would slow down so Tom can catch up and review all this.  Initially
565 Tom actually read all these patches, then he probably trustingly
566 answered OK to most of them, and finally gave up and let Akim apply
567 whatever he wanted.  There was no way to keep up with that patch rate.
568
569 @quotation
570 Anyway the patch below won't apply since it predates Akim's
571 sourcequake; I have yet to figure where the relevant passage has
572 been moved :) -- Alexandre Duret-Lutz
573 @end quotation
574
575 All these patches were sent to and discussed on
576 @email{automake@@gnu.org}, so subscribed users were literally drowning in
577 technical mails.  Eventually, the @email{automake-patches@@gnu.org}
578 mailing list was created in May.
579
580 Year after year, Automake had drifted away from its initial design:
581 construct @file{Makefile.in} by assembling various @file{Makefile}
582 fragments.  In 1.4, lots of @file{Makefile} rules are being emitted at
583 various places in the @command{automake} script itself; this does not
584 help ensuring a consistent treatment of these rules (for instance
585 making sure that user-defined rules override Automake's own rules).
586 One of Akim's goal was moving all these hard-coded rules to separate
587 @file{Makefile} fragments, so the logic could be centralized in a
588 @file{Makefile} fragment processor.
589
590 Another significant contribution of Akim is the interface with the
591 ``trace'' feature of Autoconf.  The way to scan @file{configure.in} at
592 this time was to read the file and grep the various macro of interest
593 to Automake.  Doing so could break in many unexpected ways; @command{automake}
594 could miss some definition (for instance @samp{AC_SUBST([$1], [$2])}
595 where the arguments are known only when M4 is run), or conversely it
596 could detect some macro that was not expanded (because it is called
597 conditionally).  In the CVS version of Autoconf, Akim had implemented
598 the @option{--trace} option, which provides accurate information about
599 where macros are actually called and with what arguments.  Akim will
600 equip Automake with a second @file{configure.in} scanner that uses
601 this @option{--trace} interface.  Since it was not sensible to drop the
602 Autoconf 2.13 compatibility yet, this experimental scanner was only
603 used when an environment variable was set, the traditional
604 grep-scanner being still the default.
605
606 @item 2001-04-25 Gary V.@tie{}Vaughan releases Libtool 1.4
607
608 It has been more than two years since Automake 1.4, CVS Automake has
609 suffered lot's of heavy changes and still is not ready for release.
610 Libtool 1.4 had to be distributed with a patch against Automake 1.4.
611
612 @item 2001-05-08 Automake 1.4-p1
613 @itemx 2001-05-24 Automake 1.4-p2
614
615 Gary V.@tie{}Vaughan, the principal Libtool maintainer, makes a ``patch
616 release'' of Automake:
617
618 @quotation
619 The main purpose of this release is to have a stable automake
620 which is compatible with the latest stable libtool.
621 @end quotation
622
623 The release also contains obvious fixes for bugs in Automake 1.4,
624 some of which were reported almost monthly.
625
626 @item 2001-05-21 Akim Demaille releases Autoconf 2.50
627
628 @item 2001-06-07 Automake 1.4-p3
629 @itemx 2001-06-10 Automake 1.4-p4
630 @itemx 2001-07-15 Automake 1.4-p5
631
632 Gary continues his patch-release series.  These also add support for
633 some new Autoconf 2.50 idioms.  Essentially, Autoconf now advocates
634 @file{configure.ac} over @file{configure.in}, and it introduces a new
635 syntax for @code{AC_OUTPUT}ing files.
636
637 @item 2001-08-23 Automake 1.5
638
639 A major and long-awaited release, that comes more than two years after
640 1.4.  It brings many changes, among which:
641 @itemize
642 @item The new dependency tracking scheme that uses @command{depcomp}.
643 Aside from the improvement on the dependency tracking itself
644 (@pxref{Dependency Tracking Evolution}), this also streamlines the use
645 of @command{automake}-generated @file{Makefile.in}s as the @file{Makefile.in}s
646 used during development are now the same as those used in
647 distributions.  Before that the @file{Makefile.in}s generated for
648 maintainers required GNU @command{make} and GCC, they were different
649 from the portable @file{Makefile} generated for distribution; this was
650 causing some confusion.
651
652 @item Support for per-target compilation flags.
653
654 @item Support for reference to files in subdirectories in most
655 @file{Makefile.am} variables.
656
657 @item Introduction of the @code{dist_}, @code{nodist_}, and @code{nobase_}
658 prefixes.
659 @item Perl 4 support is finally dropped.
660 @end itemize
661
662 1.5 did break several packages that worked with 1.4.  Enough so that
663 Linux distributions could not easily install the new Automake version
664 without breaking many of the packages for which they had to run
665 @command{automake}.
666
667 Some of these breakages were effectively bugs that would eventually be
668 fixed in the next release.  However, a lot of damage was caused by
669 some changes made deliberately to render Automake stricter on some
670 setup we did consider bogus.  For instance, @samp{make distcheck} was
671 improved to check that @samp{make uninstall} did remove all the files
672 @samp{make install} installed, that @samp{make distclean} did not omit
673 some file, and that a VPATH build would work even if the source
674 directory was read-only.  Similarly, Automake now rejects multiple
675 definitions of the same variable (because that would mix very badly
676 with conditionals), and @samp{+=} assignments with no previous
677 definition.  Because these changes all occurred suddenly after 1.4 had
678 been established for more than two years, it hurt users.
679
680 To make matter worse, meanwhile Autoconf (now at version 2.52) was
681 facing similar troubles, for similar reasons.
682
683 @item 2002-03-05 Automake 1.6
684
685 This release introduced versioned installation (@pxref{API Versioning, ,
686 API Versioning, automake, GNU Automake}). This was mainly pushed by
687 Havoc Pennington, taking the GNOME source tree as motive: due to
688 incompatibilities between the autotools it's impossible for the GNOME
689 packages to switch to Autoconf 2.53 and Automake 1.5 all at once, so
690 they are currently stuck with Autoconf 2.13 and Automake 1.4.
691
692 The idea was to call this version @file{automake-1.6}, call all its
693 bug-fix versions identically, and switch to @file{automake-1.7} for
694 the next release that adds new features or changes some rules.  This
695 scheme implies maintaining a bug-fix branch in addition to the
696 development trunk, which means more work from the maintainer, but
697 providing regular bug-fix releases proved to be really worthwhile.
698
699 Like 1.5, 1.6 also introduced a bunch of incompatibilities, intentional or
700 not.  Perhaps the more annoying was the dependence on the newly
701 released Autoconf 2.53.  Autoconf seemed to have stabilized enough
702 since its explosive 2.50 release and included changes required to fix
703 some bugs in Automake.  In order to upgrade to Automake 1.6, people
704 now had to upgrade Autoconf too; for some packages it was no picnic.
705
706 While versioned installation helped people to upgrade, it also
707 unfortunately allowed people not to upgrade.  At the time of writing,
708 some Linux distributions are shipping packages for Automake 1.4, 1.5,
709 1.6, 1.7, 1.8, and 1.9.  Most of these still install 1.4 by default.
710 Some distribution also call 1.4 the ``stable'' version, and present
711 ``1.9'' as the development version; this does not really makes sense
712 since 1.9 is way more solid than 1.4.  All this does not help the
713 newcomer.
714
715 @item 2002-04-11 Automake 1.6.1
716
717 1.6, and the upcoming 1.4-p6 release were the last release by Tom.
718 This one and those following will be handled by Alexandre
719 Duret-Lutz.  Tom is still around, and will be there until about 1.7,
720 but his interest into Automake is drifting away towards projects like
721 @command{gcj}.
722
723 Alexandre has been using Automake since 2000, and started to
724 contribute mostly on Akim's incitement (Akim and Alexandre have been
725 working in the same room from 1999 to 2002).  In 2001 and 2002 he had
726 a lot of free time to enjoy hacking Automake.
727
728 @item 2002-06-14 Automake 1.6.2
729
730 @item 2002-07-28 Automake 1.6.3
731 @itemx 2002-07-28 Automake 1.4-p6
732
733 Two releases on the same day.  1.6.3 is a bug-fix release.
734
735 Tom Tromey backported the versioned installation mechanism on the 1.4
736 branch, so that Automake 1.6.x and Automake 1.4-p6 could be installed
737 side by side.  Another request from the GNOME folks.
738
739 @item 2002-09-25 Automake 1.7
740
741 This release switches to the new @file{configure.ac} scanner Akim
742 was experimenting in 1.5.
743
744 @item 2002-10-16 Automake 1.7.1
745 @itemx 2002-12-06 Automake 1.7.2
746 @itemx 2003-02-20 Automake 1.7.3
747 @itemx 2003-04-23 Automake 1.7.4
748 @itemx 2003-05-18 Automake 1.7.5
749 @itemx 2003-07-10 Automake 1.7.6
750 @itemx 2003-09-07 Automake 1.7.7
751 @itemx 2003-10-07 Automake 1.7.8
752
753 Many bug-fix releases.  1.7 lasted because the development version
754 (upcoming 1.8) was suffering some major internal revamping.
755
756 @item 2003-10-26 Automake on screen
757
758 Episode 49, `Repercussions', in the third season of the `Alias' TV
759 show is first aired.
760
761 Marshall, one of the characters, is working on a computer virus that he
762 has to modify before it gets into the wrong hands or something like
763 that.  The screenshots you see do not show any program code, they show
764 a @file{Makefile.in} generated by automake...
765
766 @item 2003-11-09 Automake 1.7.9
767
768 @item 2003-12-10 Automake 1.8
769
770 The most striking update is probably that of @command{aclocal}.
771
772 @command{aclocal} now uses @code{m4_include} in the produced
773 @file{aclocal.m4} when the included macros are already distributed
774 with the package (an idiom used in many packages), which reduces code
775 duplication.  Many people liked that, but in fact this change was
776 really introduced to fix a bug in rebuild rules: @file{Makefile.in}
777 must be rebuilt whenever a dependency of @file{configure} changes, but
778 all the @file{m4} files included in @file{aclocal.m4} where unknown
779 from @command{automake}.  Now @command{automake} can just trace the
780 @code{m4_include}s to discover the dependencies.
781
782 @command{aclocal} also starts using the @option{--trace} Autoconf option
783 in order to discover used macros more accurately.  This will turn out
784 to be very tricky (later releases will improve this) as people had
785 devised many ways to cope with the limitation of previous
786 @command{aclocal} versions, notably using handwritten
787 @code{m4_include}s: @command{aclocal} must make sure not to redefine a
788 rule that is already included by such statement.
789
790 Automake also has seen its guts rewritten.  Although this rewriting
791 took a lot of efforts, it is only apparent to the users in that some
792 constructions previously disallowed by the implementation now work
793 nicely.  Conditionals, Locations, Variable and Rule definitions,
794 Options: these items on which Automake works have been rewritten as
795 separate Perl modules, and documented.
796
797 @itemx 2004-01-11 Automake 1.8.1
798 @itemx 2004-01-12 Automake 1.8.2
799 @itemx 2004-03-07 Automake 1.8.3
800 @itemx 2004-04-25 Automake 1.8.4
801 @itemx 2004-05-16 Automake 1.8.5
802
803 @item 2004-07-28 Automake 1.9
804
805 This release tries to simplify the compilation rules it outputs to
806 reduce the size of the Makefile.  The complaint initially come from
807 the libgcj developers.  Their @file{Makefile.in} generated with
808 Automake 1.4 and custom build rules (1.4 did not support compiled
809 Java) is 250KB@.  The one generated by 1.8 was over 9MB@!  1.9 gets it
810 down to 1.2MB@.
811
812 Aside from this it contains mainly minor changes and bug-fixes.
813
814 @itemx 2004-08-11 Automake 1.9.1
815 @itemx 2004-09-19 Automake 1.9.2
816
817 Automake has ten years.  This chapter of the manual was initially
818 written for this occasion.
819
820 @itemx 2007-10-29 Automake repository moves to @code{savannah.gnu.org}
821 and uses git as primary repository.
822
823 @end table
824
825 @node Dependency Tracking Evolution
826 @chapter Evolution of Automatic Dependency Tracking
827
828 Over the years Automake has deployed three different dependency
829 tracking methods.  Each method, including the current one, has had
830 flaws of various sorts.  Here we lay out the different dependency
831 tracking methods, their flaws, and their fixes.  We conclude with
832 recommendations for tool writers, and by indicating future directions
833 for dependency tracking work in Automake.
834
835 @menu
836 * First Take on Dependencies::    Precomputed dependency tracking
837 * Dependencies As Side Effects::  Update at developer compile time
838 * Dependencies for the User::     Update at user compile time
839 * Techniques for Dependencies::   Alternative approaches
840 @end menu
841
842 @node First Take on Dependencies
843 @section First Take on Dependency Tracking
844 @unnumberedsubsec Description
845
846 Our first attempt at automatic dependency tracking was based on the
847 method recommended by GNU @command{make}.  (@pxref{Automatic
848 Prerequisites, , Generating Prerequisites Automatically, make, The GNU
849 make Manual})
850
851 This version worked by precomputing dependencies ahead of time.  For
852 each source file, it had a special @file{.P} file that held the
853 dependencies.  There was a rule to generate a @file{.P} file by
854 invoking the compiler appropriately.  All such @file{.P} files were
855 included by the @file{Makefile}, thus implicitly becoming dependencies
856 of @file{Makefile}.
857
858 @unnumberedsubsec Bugs
859
860 This approach had several critical bugs.
861
862 @itemize
863 @item
864 The code to generate the @file{.P} file relied on @command{gcc}.
865 (A limitation, not technically a bug.)
866 @item
867 The dependency tracking mechanism itself relied on GNU @command{make}.
868 (A limitation, not technically a bug.)
869 @item
870 Because each @file{.P} file was a dependency of @file{Makefile}, this
871 meant that dependency tracking was done eagerly by @command{make}.
872 For instance, @samp{make clean} would cause all the dependency files
873 to be updated, and then immediately removed.  This eagerness also
874 caused problems with some configurations; if a certain source file
875 could not be compiled on a given architecture for some reason,
876 dependency tracking would fail, aborting the entire build.
877 @item
878 As dependency tracking was done as a pre-pass, compile times were
879 doubled--the compiler had to be run twice per source file.
880 @item
881 @samp{make dist} re-ran @command{automake} to generate a
882 @file{Makefile} that did not have automatic dependency tracking (and
883 that was thus portable to any version of @command{make}).  In order to
884 do this portably, Automake had to scan the dependency files and remove
885 any reference that was to a source file not in the distribution.
886 This process was error-prone.  Also, if @samp{make dist} was run in an
887 environment where some object file had a dependency on a source file
888 that was only conditionally created, Automake would generate a
889 @file{Makefile} that referred to a file that might not appear in the
890 end user's build.  A special, hacky mechanism was required to work
891 around this.
892 @end itemize
893
894 @unnumberedsubsec Historical Note
895
896 The code generated by Automake is often inspired by the
897 @file{Makefile} style of a particular author.  In the case of the first
898 implementation of dependency tracking, I believe the impetus and
899 inspiration was Jim Meyering.  (I could be mistaken.  If you know
900 otherwise feel free to correct me.)
901
902 @node Dependencies As Side Effects
903 @section Dependencies As Side Effects
904 @unnumberedsubsec Description
905
906 The next refinement of Automake's automatic dependency tracking scheme
907 was to implement dependencies as side effects of the compilation.
908 This was aimed at solving the most commonly reported problems with the
909 first approach.  In particular we were most concerned with eliminating
910 the weird rebuilding effect associated with make clean.
911
912 In this approach, the @file{.P} files were included using the
913 @code{-include} command, which let us create these files lazily.  This
914 avoided the @samp{make clean} problem.
915
916 We only computed dependencies when a file was actually compiled.  This
917 avoided the performance penalty associated with scanning each file
918 twice.  It also let us avoid the other problems associated with the
919 first, eager, implementation.  For instance, dependencies would never
920 be generated for a source file that was not compilable on a given
921 architecture (because it in fact would never be compiled).
922
923 @unnumberedsubsec Bugs
924
925 @itemize
926 @item
927 This approach also relied on the existence of @command{gcc} and GNU
928 @command{make}.  (A limitation, not technically a bug.)
929 @item
930 Dependency tracking was still done by the developer, so the problems
931 from the first implementation relating to massaging of dependencies by
932 @samp{make dist} were still in effect.
933 @item
934 This implementation suffered from the ``deleted header file'' problem.
935 Suppose a lazily-created @file{.P} file includes a dependency on a
936 given header file, like this:
937
938 @example
939 maude.o: maude.c something.h
940 @end example
941
942 Now suppose that you remove @file{something.h} and update @file{maude.c}
943 so that this include is no longer needed.  If you run @command{make},
944 you will get an error because there is no way to create
945 @file{something.h}.
946
947 We fixed this problem in a later release by further massaging the
948 output of @command{gcc} to include a dummy dependency for each header
949 file.
950 @end itemize
951
952 @node Dependencies for the User
953 @section Dependencies for the User
954 @unnumberedsubsec Description
955
956 The bugs associated with @samp{make dist}, over time, became a real
957 problem.  Packages using Automake were being built on a large number
958 of platforms, and were becoming increasingly complex.  Broken
959 dependencies were distributed in ``portable'' @file{Makefile.in}s,
960 leading to user complaints.  Also, the requirement for @command{gcc}
961 and GNU @command{make} was a constant source of bug reports.  The next
962 implementation of dependency tracking aimed to remove these problems.
963
964 We realized that the only truly reliable way to automatically track
965 dependencies was to do it when the package itself was built.  This
966 meant discovering a method portable to any version of make and any
967 compiler.  Also, we wanted to preserve what we saw as the best point
968 of the second implementation: dependency computation as a side effect
969 of compilation.
970
971 In the end we found that most modern make implementations support some
972 form of include directive.  Also, we wrote a wrapper script that let
973 us abstract away differences between dependency tracking methods for
974 compilers.  For instance, some compilers cannot generate dependencies
975 as a side effect of compilation.  In this case we simply have the
976 script run the compiler twice.  Currently our wrapper script
977 (@command{depcomp}) knows about twelve different compilers (including
978 a "compiler" that simply invokes @command{makedepend} and then the
979 real compiler, which is assumed to be a standard Unix-like C compiler
980 with no way to do dependency tracking).
981
982 @unnumberedsubsec Bugs
983
984 @itemize
985 @item
986 Running a wrapper script for each compilation slows down the build.
987 @item
988 Many users don't really care about precise dependencies.
989 @item
990 This implementation, like every other automatic dependency tracking
991 scheme in common use today (indeed, every one we've ever heard of),
992 suffers from the ``duplicated new header'' bug.
993
994 This bug occurs because dependency tracking tools, such as the
995 compiler, only generate dependencies on the successful opening of a
996 file, and not on every probe.
997
998 Suppose for instance that the compiler searches three directories for
999 a given header, and that the header is found in the third directory.
1000 If the programmer erroneously adds a header file with the same name to
1001 the first directory, then a clean rebuild from scratch could fail
1002 (suppose the new header file is buggy), whereas an incremental rebuild
1003 will succeed.
1004
1005 What has happened here is that people have a misunderstanding of what
1006 a dependency is.  Tool writers think a dependency encodes information
1007 about which files were read by the compiler.  However, a dependency
1008 must actually encode information about what the compiler tried to do.
1009
1010 This problem is not serious in practice.  Programmers typically do not
1011 use the same name for a header file twice in a given project.  (At
1012 least, not in C or C++.  This problem may be more troublesome in
1013 Java.)  This problem is easy to fix, by modifying dependency
1014 generators to record every probe, instead of every successful open.
1015
1016 @item
1017 Since Automake generates dependencies as a side effect of compilation,
1018 there is a bootstrapping problem when header files are generated by
1019 running a program.  The problem is that, the first time the build is
1020 done, there is no way by default to know that the headers are
1021 required, so make might try to run a compilation for which the headers
1022 have not yet been built.
1023
1024 This was also a problem in the previous dependency tracking implementation.
1025
1026 The current fix is to use @code{BUILT_SOURCES} to list built headers
1027 (@pxref{Sources, , Sources, automake, GNU Automake}).  This causes them
1028 to be built before any other build rules are run.  This is unsatisfactory
1029 as a general solution, however in practice it seems sufficient for most
1030 actual programs.
1031 @end itemize
1032
1033 This code is used since Automake 1.5.
1034
1035 In GCC 3.0, we managed to convince the maintainers to add special
1036 command-line options to help Automake more efficiently do its job.  We
1037 hoped this would let us avoid the use of a wrapper script when
1038 Automake's automatic dependency tracking was used with @command{gcc}.
1039
1040 Unfortunately, this code doesn't quite do what we want.  In
1041 particular, it removes the dependency file if the compilation fails;
1042 we'd prefer that it instead only touch the file in any way if the
1043 compilation succeeds.
1044
1045 Nevertheless, since Automake 1.7, when a recent @command{gcc} is
1046 detected at @command{configure} time, we inline the
1047 dependency-generation code and do not use the @command{depcomp}
1048 wrapper script.  This makes compilations faster for those using this
1049 compiler (probably our primary user base).  The counterpart is that
1050 because we have to encode two compilation rules in @file{Makefile}
1051 (with or without @command{depcomp}), the produced @file{Makefile}s are
1052 larger.
1053
1054 @node Techniques for Dependencies
1055 @section Techniques for Computing Dependencies
1056
1057 There are actually several ways for a build tool like Automake to
1058 cause tools to generate dependencies.
1059
1060 @table @asis
1061 @item @command{makedepend}
1062 This was a commonly-used method in the past.  The idea is to run a
1063 special program over the source and have it generate dependency
1064 information.  Traditional implementations of @command{makedepend} are
1065 not completely precise; ordinarily they were conservative and
1066 discovered too many dependencies.
1067 @item The tool
1068 An obvious way to generate dependencies is to simply write the tool so
1069 that it can generate the information needed by the build tool.  This is
1070 also the most portable method.  Many compilers have an option to
1071 generate dependencies.  Unfortunately, not all tools provide such an
1072 option.
1073 @item The file system
1074 It is possible to write a special file system that tracks opens,
1075 reads, writes, etc, and then feed this information back to the build
1076 tool.  @command{clearmake} does this.  This is a very powerful
1077 technique, as it doesn't require cooperation from the
1078 tool.  Unfortunately it is also very difficult to implement and also
1079 not practical in the general case.
1080 @item @code{LD_PRELOAD}
1081 Rather than use the file system, one could write a special library to
1082 intercept @code{open} and other syscalls.  This technique is also quite
1083 powerful, but unfortunately it is not portable enough for use in
1084 @command{automake}.
1085 @end table
1086
1087 @menu
1088 * Recommendations for Tool Writers::
1089 * Future Directions for Dependencies::
1090 @end menu
1091
1092 @node Recommendations for Tool Writers
1093 @subsection Recommendations for Tool Writers
1094
1095 We think that every compilation tool ought to be able to generate
1096 dependencies as a side effect of compilation.  Furthermore, at least
1097 while @command{make}-based tools are nearly universally in use (at
1098 least in the free software community), the tool itself should generate
1099 dummy dependencies for header files, to avoid the deleted header file
1100 bug.  Finally, the tool should generate a dependency for each probe,
1101 instead of each successful file open, in order to avoid the duplicated
1102 new header bug.
1103
1104 @node Future Directions for Dependencies
1105 @subsection Future Directions for Dependencies
1106
1107 Currently, only languages and compilers understood by Automake can
1108 have dependency tracking enabled.  We would like to see if it is
1109 practical (and worthwhile) to let this support be extended by the user
1110 to languages unknown to Automake.
1111
1112 @node Releases
1113 @chapter Release Statistics
1114
1115 The following table (inspired by @samp{perlhist(1)}) quantifies the
1116 evolution of Automake using these metrics:
1117
1118 @table @asis
1119 @item Date, Rel
1120 The date and version of the release.
1121 @item am
1122 The number of lines of the @command{automake} script.
1123 @item acl
1124 The number of lines of the @command{aclocal} script.
1125 @item pm
1126 The number of lines of the @command{Perl} supporting modules.
1127 @item @file{*.am}
1128 The number of lines of the @file{Makefile} fragments.  The number in
1129 parentheses is the number of files.
1130 @item m4
1131 The number of lines (and files) of Autoconf macros.
1132 @item doc
1133 The number of pages of the documentation (the Postscript version).
1134 @item t
1135 The number of test cases in the test suite.  Of those, the number in
1136 parentheses is the number of generated test cases.
1137 @end table
1138
1139 @multitable {8888-88-88} {8.8-p8} {8888} {8888} {8888} {8888 (88)} {8888 (88)} {888} {888 (88)}
1140 @headitem Date   @tab Rel    @tab   am @tab acl @tab   pm @tab @file{*.am} @tab m4 @tab doc @tab t
1141 @item 1994-09-19 @tab CVS    @tab  141 @tab     @tab      @tab  299 (24) @tab           @tab     @tab
1142 @item 1994-11-05 @tab CVS    @tab  208 @tab     @tab      @tab  332 (28) @tab           @tab     @tab
1143 @item 1995-11-23 @tab 0.20   @tab  533 @tab     @tab      @tab  458 (35) @tab           @tab   9 @tab
1144 @item 1995-11-26 @tab 0.21   @tab  613 @tab     @tab      @tab  480 (36) @tab           @tab  11 @tab
1145 @item 1995-11-28 @tab 0.22   @tab 1116 @tab     @tab      @tab  539 (38) @tab           @tab  12 @tab
1146 @item 1995-11-29 @tab 0.23   @tab 1240 @tab     @tab      @tab  541 (38) @tab           @tab  12 @tab
1147 @item 1995-12-08 @tab 0.24   @tab 1462 @tab     @tab      @tab  504 (33) @tab           @tab  14 @tab
1148 @item 1995-12-10 @tab 0.25   @tab 1513 @tab     @tab      @tab  511 (37) @tab           @tab  15 @tab
1149 @item 1996-01-03 @tab 0.26   @tab 1706 @tab     @tab      @tab  438 (36) @tab           @tab  16 @tab
1150 @item 1996-01-03 @tab 0.27   @tab 1706 @tab     @tab      @tab  438 (36) @tab           @tab  16 @tab
1151 @item 1996-01-13 @tab 0.28   @tab 1964 @tab     @tab      @tab  934 (33) @tab           @tab  16 @tab
1152 @item 1996-02-07 @tab 0.29   @tab 2299 @tab     @tab      @tab  936 (33) @tab           @tab  17 @tab
1153 @item 1996-02-24 @tab 0.30   @tab 2544 @tab     @tab      @tab  919 (32) @tab   85 (1)  @tab  20 @tab 9
1154 @item 1996-03-11 @tab 0.31   @tab 2877 @tab     @tab      @tab  919 (32) @tab   85 (1)  @tab  29 @tab 17
1155 @item 1996-04-27 @tab 0.32   @tab 3058 @tab     @tab      @tab  921 (31) @tab   85 (1)  @tab  30 @tab 26
1156 @item 1996-05-18 @tab 0.33   @tab 3110 @tab     @tab      @tab  926 (31) @tab  105 (1)  @tab  30 @tab 35
1157 @item 1996-05-28 @tab 1.0    @tab 3134 @tab     @tab      @tab  973 (32) @tab  105 (1)  @tab  30 @tab 38
1158 @item 1997-06-22 @tab 1.2    @tab 6089 @tab 385 @tab      @tab 1294 (36) @tab  592 (20) @tab  37 @tab 126
1159 @item 1998-04-05 @tab 1.3    @tab 6415 @tab 422 @tab      @tab 1470 (39) @tab  741 (23) @tab  39 @tab 156
1160 @item 1999-01-14 @tab 1.4    @tab 7240 @tab 426 @tab      @tab 1591 (40) @tab  734 (20) @tab  51 @tab 197
1161 @item 2001-05-08 @tab 1.4-p1 @tab 7251 @tab 426 @tab      @tab 1591 (40) @tab  734 (20) @tab  51 @tab 197
1162 @item 2001-05-24 @tab 1.4-p2 @tab 7268 @tab 439 @tab      @tab 1591 (40) @tab  734 (20) @tab  49 @tab 197
1163 @item 2001-06-07 @tab 1.4-p3 @tab 7312 @tab 439 @tab      @tab 1591 (40) @tab  734 (20) @tab  49 @tab 197
1164 @item 2001-06-10 @tab 1.4-p4 @tab 7321 @tab 439 @tab      @tab 1591 (40) @tab  734 (20) @tab  49 @tab 198
1165 @item 2001-07-15 @tab 1.4-p5 @tab 7228 @tab 426 @tab      @tab 1596 (40) @tab  734 (20) @tab  51 @tab 198
1166 @item 2001-08-23 @tab 1.5    @tab 8016 @tab 475 @tab  600 @tab 2654 (39) @tab 1166 (29) @tab  63 @tab 327
1167 @item 2002-03-05 @tab 1.6    @tab 8465 @tab 475 @tab 1136 @tab 2732 (39) @tab 1603 (27) @tab  66 @tab 365
1168 @item 2002-04-11 @tab 1.6.1  @tab 8544 @tab 475 @tab 1136 @tab 2741 (39) @tab 1603 (27) @tab  66 @tab 372
1169 @item 2002-06-14 @tab 1.6.2  @tab 8575 @tab 475 @tab 1136 @tab 2800 (39) @tab 1609 (27) @tab  67 @tab 386
1170 @item 2002-07-28 @tab 1.6.3  @tab 8600 @tab 475 @tab 1153 @tab 2809 (39) @tab 1609 (27) @tab  67 @tab 391
1171 @item 2002-07-28 @tab 1.4-p6 @tab 7332 @tab 455 @tab      @tab 1596 (40) @tab  735 (20) @tab  49 @tab 197
1172 @item 2002-09-25 @tab 1.7    @tab 9189 @tab 471 @tab 1790 @tab 2965 (39) @tab 1606 (28) @tab  73 @tab 430
1173 @item 2002-10-16 @tab 1.7.1  @tab 9229 @tab 475 @tab 1790 @tab 2977 (39) @tab 1606 (28) @tab  73 @tab 437
1174 @item 2002-12-06 @tab 1.7.2  @tab 9334 @tab 475 @tab 1790 @tab 2988 (39) @tab 1606 (28) @tab  77 @tab 445
1175 @item 2003-02-20 @tab 1.7.3  @tab 9389 @tab 475 @tab 1790 @tab 3023 (39) @tab 1651 (29) @tab  84 @tab 448
1176 @item 2003-04-23 @tab 1.7.4  @tab 9429 @tab 475 @tab 1790 @tab 3031 (39) @tab 1644 (29) @tab  85 @tab 458
1177 @item 2003-05-18 @tab 1.7.5  @tab 9429 @tab 475 @tab 1790 @tab 3033 (39) @tab 1645 (29) @tab  85 @tab 459
1178 @item 2003-07-10 @tab 1.7.6  @tab 9442 @tab 475 @tab 1790 @tab 3033 (39) @tab 1660 (29) @tab  85 @tab 461
1179 @item 2003-09-07 @tab 1.7.7  @tab 9443 @tab 475 @tab 1790 @tab 3041 (39) @tab 1660 (29) @tab  90 @tab 467
1180 @item 2003-10-07 @tab 1.7.8  @tab 9444 @tab 475 @tab 1790 @tab 3041 (39) @tab 1660 (29) @tab  90 @tab 468
1181 @item 2003-11-09 @tab 1.7.9  @tab 9444 @tab 475 @tab 1790 @tab 3048 (39) @tab 1660 (29) @tab  90 @tab 468
1182 @item 2003-12-10 @tab 1.8    @tab 7171 @tab 585 @tab 7730 @tab 3236 (39) @tab 1666 (31) @tab 104 @tab 521
1183 @item 2004-01-11 @tab 1.8.1  @tab 7217 @tab 663 @tab 7726 @tab 3287 (39) @tab 1686 (31) @tab 104 @tab 525
1184 @item 2004-01-12 @tab 1.8.2  @tab 7217 @tab 663 @tab 7726 @tab 3288 (39) @tab 1686 (31) @tab 104 @tab 526
1185 @item 2004-03-07 @tab 1.8.3  @tab 7214 @tab 686 @tab 7735 @tab 3303 (39) @tab 1695 (31) @tab 111 @tab 530
1186 @item 2004-04-25 @tab 1.8.4  @tab 7214 @tab 686 @tab 7736 @tab 3310 (39) @tab 1701 (31) @tab 112 @tab 531
1187 @item 2004-05-16 @tab 1.8.5  @tab 7240 @tab 686 @tab 7736 @tab 3299 (39) @tab 1701 (31) @tab 112 @tab 533
1188 @item 2004-07-28 @tab 1.9    @tab 7508 @tab 715 @tab 7794 @tab 3352 (40) @tab 1812 (32) @tab 115 @tab 551
1189 @item 2004-08-11 @tab 1.9.1  @tab 7512 @tab 715 @tab 7794 @tab 3354 (40) @tab 1812 (32) @tab 115 @tab 552
1190 @item 2004-09-19 @tab 1.9.2  @tab 7512 @tab 715 @tab 7794 @tab 3354 (40) @tab 1812 (32) @tab 132 @tab 554
1191 @item 2004-11-01 @tab 1.9.3  @tab 7507 @tab 718 @tab 7804 @tab 3354 (40) @tab 1812 (32) @tab 134 @tab 556
1192 @item 2004-12-18 @tab 1.9.4  @tab 7508 @tab 718 @tab 7856 @tab 3361 (40) @tab 1811 (32) @tab 140 @tab 560
1193 @item 2005-02-13 @tab 1.9.5  @tab 7523 @tab 719 @tab 7859 @tab 3373 (40) @tab 1453 (32) @tab 142 @tab 562
1194 @item 2005-07-10 @tab 1.9.6  @tab 7539 @tab 699 @tab 7867 @tab 3400 (40) @tab 1453 (32) @tab 144 @tab 570
1195 @item 2006-10-15 @tab 1.10   @tab 7859 @tab 1072 @tab 8024 @tab 3512 (40) @tab 1496 (34) @tab 172 @tab 604
1196 @item 2008-01-19 @tab 1.10.1 @tab 7870 @tab 1089 @tab 8025 @tab 3520 (40) @tab 1499 (34) @tab 173 @tab 617
1197 @item 2008-11-23 @tab 1.10.2 @tab 7882 @tab 1089 @tab 8027 @tab 3540 (40) @tab 1509 (34) @tab 176 @tab 628
1198 @item 2009-05-17 @tab 1.11   @tab 8721 @tab 1092 @tab 8289 @tab 4164 (42) @tab 1714 (37) @tab 181 @tab 732 (20)
1199 @end multitable
1200
1201
1202 @c ========================================================== Appendices
1203
1204 @page
1205 @node Copying This Manual
1206 @appendix Copying This Manual
1207
1208 @menu
1209 * GNU Free Documentation License::  License for copying this manual
1210 @end menu
1211
1212 @node GNU Free Documentation License
1213 @appendixsec GNU Free Documentation License
1214 @include fdl.texi
1215
1216 @bye