automake-history.info 77 KB

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