Update automake to version 1.10
[msysgit.git] / share / info / automake.info-2
blob20d8a0424dcd666b035fe3a31c2d8d2add032579
1 This is automake.info, produced by makeinfo version 4.8 from
2 automake.texi.
4    This manual is for GNU Automake (version 1.10, 15 October 2006), a
5 program that creates GNU standards-compliant Makefiles from template
6 files.
8    Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
9 2004, 2005, 2006 Free Software Foundation, Inc.
11      Permission is granted to copy, distribute and/or modify this
12      document under the terms of the GNU Free Documentation License,
13      Version 1.2 or any later version published by the Free Software
14      Foundation; with no Invariant Sections, with the Front-Cover texts
15      being "A GNU Manual," and with the Back-Cover Texts as in (a)
16      below.  A copy of the license is included in the section entitled
17      "GNU Free Documentation License."
19      (a) The FSF's Back-Cover Text is: "You have freedom to copy and
20      modify this GNU Manual, like GNU software.  Copies published by
21      the Free Software Foundation raise funds for GNU development."
23 INFO-DIR-SECTION Software development
24 START-INFO-DIR-ENTRY
25 * Automake: (automake).         Making GNU standards-compliant Makefiles.
26 END-INFO-DIR-ENTRY
28 INFO-DIR-SECTION Individual utilities
29 START-INFO-DIR-ENTRY
30 * aclocal: (automake)Invoking aclocal.          Generating aclocal.m4.
31 * automake: (automake)Invoking Automake.        Generating Makefile.in.
32 END-INFO-DIR-ENTRY
34 \x1f
35 File: automake.info,  Node: Suffixes,  Next: Multilibs,  Prev: Tags,  Up: Miscellaneous
37 18.2 Handling new file extensions
38 =================================
40 It is sometimes useful to introduce a new implicit rule to handle a file
41 type that Automake does not know about.
43    For instance, suppose you had a compiler that could compile `.foo'
44 files to `.o' files.  You would simply define an suffix rule for your
45 language:
47      .foo.o:
48              foocc -c -o $@ $<
50    Then you could directly use a `.foo' file in a `_SOURCES' variable
51 and expect the correct results:
53      bin_PROGRAMS = doit
54      doit_SOURCES = doit.foo
56    This was the simpler and more common case.  In other cases, you will
57 have to help Automake to figure which extensions you are defining your
58 suffix rule for.  This usually happens when your extensions does not
59 start with a dot.  Then, all you have to do is to put a list of new
60 suffixes in the `SUFFIXES' variable *before* you define your implicit
61 rule.
63    For instance, the following definition prevents Automake to
64 misinterpret `.idlC.cpp:' as an attempt to transform `.idlC' files into
65 `.cpp' files.
67      SUFFIXES = .idl C.cpp
68      .idlC.cpp:
69              # whatever
71    As you may have noted, the `SUFFIXES' variable behaves like the
72 `.SUFFIXES' special target of `make'.  You should not touch `.SUFFIXES'
73 yourself, but use `SUFFIXES' instead and let Automake generate the
74 suffix list for `.SUFFIXES'.  Any given `SUFFIXES' go at the start of
75 the generated suffixes list, followed by Automake generated suffixes
76 not already in the list.
78 \x1f
79 File: automake.info,  Node: Multilibs,  Prev: Suffixes,  Up: Miscellaneous
81 18.3 Support for Multilibs
82 ==========================
84 Automake has support for an obscure feature called multilibs.  A
85 "multilib" is a library that is built for multiple different ABIs at a
86 single time; each time the library is built with a different target
87 flag combination.  This is only useful when the library is intended to
88 be cross-compiled, and it is almost exclusively used for compiler
89 support libraries.
91    The multilib support is still experimental.  Only use it if you are
92 familiar with multilibs and can debug problems you might encounter.
94 \x1f
95 File: automake.info,  Node: Include,  Next: Conditionals,  Prev: Miscellaneous,  Up: Top
97 19 Include
98 **********
100 Automake supports an `include' directive that  can be used to include
101 other `Makefile' fragments when `automake' is run.  Note that these
102 fragments are read and interpreted by `automake', not by `make'.  As
103 with conditionals, `make' has no idea that `include' is in use.
105    There are two forms of `include':
107 `include $(srcdir)/file'
108      Include a fragment that is found relative to the current source
109      directory.
111 `include $(top_srcdir)/file'
112      Include a fragment that is found relative to the top source
113      directory.
115    Note that if a fragment is included inside a conditional, then the
116 condition applies to the entire contents of that fragment.
118    Makefile fragments included this way are always distributed because
119 they are needed to rebuild `Makefile.in'.
121 \x1f
122 File: automake.info,  Node: Conditionals,  Next: Gnits,  Prev: Include,  Up: Top
124 20 Conditionals
125 ***************
127 Automake supports a simple type of conditionals.
129 Usage
130 =====
132 Before using a conditional, you must define it by using
133 `AM_CONDITIONAL' in the `configure.ac' file (*note Macros::).
135  -- Macro: AM_CONDITIONAL (CONDITIONAL, CONDITION)
136      The conditional name, CONDITIONAL, should be a simple string
137      starting with a letter and containing only letters, digits, and
138      underscores.  It must be different from `TRUE' and `FALSE' that
139      are reserved by Automake.
141      The shell CONDITION (suitable for use in a shell `if' statement)
142      is evaluated when `configure' is run.  Note that you must arrange
143      for _every_ `AM_CONDITIONAL' to be invoked every time `configure'
144      is run.  If `AM_CONDITIONAL' is run conditionally (e.g., in a
145      shell `if' statement), then the result will confuse automake.
147    Conditionals typically depend upon options that the user provides to
148 the `configure' script.  Here is an example of how to write a
149 conditional that is true if the user uses the `--enable-debug' option.
151      AC_ARG_ENABLE([debug],
152      [  --enable-debug    Turn on debugging],
153      [case "${enableval}" in
154        yes) debug=true ;;
155        no)  debug=false ;;
156        *) AC_MSG_ERROR([bad value ${enableval} for --enable-debug]) ;;
157      esac],[debug=false])
158      AM_CONDITIONAL([DEBUG], [test x$debug = xtrue])
160    Here is an example of how to use that conditional in `Makefile.am':
162      if DEBUG
163      DBG = debug
164      else
165      DBG =
166      endif
167      noinst_PROGRAMS = $(DBG)
169    This trivial example could also be handled using `EXTRA_PROGRAMS'
170 (*note Conditional Programs::).
172    You may only test a single variable in an `if' statement, possibly
173 negated using `!'.  The `else' statement may be omitted.  Conditionals
174 may be nested to any depth.  You may specify an argument to `else' in
175 which case it must be the negation of the condition used for the
176 current `if'.  Similarly you may specify the condition that is closed
177 by an `end':
179      if DEBUG
180      DBG = debug
181      else !DEBUG
182      DBG =
183      endif !DEBUG
185 Unbalanced conditions are errors.
187    The `else' branch of the above two examples could be omitted, since
188 assigning the empty string to an otherwise undefined variable makes no
189 difference.
191 Portability
192 ===========
194 Note that conditionals in Automake are not the same as conditionals in
195 GNU Make.  Automake conditionals are checked at configure time by the
196 `configure' script, and affect the translation from `Makefile.in' to
197 `Makefile'.  They are based on options passed to `configure' and on
198 results that `configure' has discovered about the host system.  GNU
199 Make conditionals are checked at `make' time, and are based on
200 variables passed to the make program or defined in the `Makefile'.
202    Automake conditionals will work with any make program.
204 Limits
205 ======
207 Conditionals should enclose complete statements like variables or rules
208 definitions.  Automake cannot deal with conditionals used inside a
209 variable definition, for instance, and is not even able to diagnose
210 this situation.  The following example would not work:
212      # This syntax is not understood by Automake
213      AM_CPPFLAGS = \
214        -DFEATURE_A \
215      if WANT_DEBUG
216        -DDEBUG \
217      endif
218        -DFEATURE_B
220    However the intended definition of `AM_CPPFLAGS' can be achieved with
222      if WANT_DEBUG
223        DEBUGFLAGS = -DDEBUG
224      endif
225      AM_CPPFLAGS = -DFEATURE_A $(DEBUGFLAGS) -DFEATURE_B
229      AM_CPPFLAGS = -DFEATURE_A
230      if WANT_DEBUG
231      AM_CPPFLAGS += -DDEBUG
232      endif
233      AM_CPPFLAGS += -DFEATURE_B
235 \x1f
236 File: automake.info,  Node: Gnits,  Next: Cygnus,  Prev: Conditionals,  Up: Top
238 21 The effect of `--gnu' and `--gnits'
239 **************************************
241 The `--gnu' option (or `gnu' in the `AUTOMAKE_OPTIONS' variable) causes
242 `automake' to check the following:
244    * The files `INSTALL', `NEWS', `README', `AUTHORS', and `ChangeLog',
245      plus one of `COPYING.LIB', `COPYING.LESSER' or `COPYING', are
246      required at the topmost directory of the package.
248    * The options `no-installman' and `no-installinfo' are prohibited.
250    Note that this option will be extended in the future to do even more
251 checking; it is advisable to be familiar with the precise requirements
252 of the GNU standards.  Also, `--gnu' can require certain non-standard
253 GNU programs to exist for use by various maintainer-only rules; for
254 instance, in the future `pathchk' might be required for `make dist'.
256    The `--gnits' option does everything that `--gnu' does, and checks
257 the following as well:
259    * `make installcheck' will check to make sure that the `--help' and
260      `--version' really print a usage message and a version string,
261      respectively.  This is the `std-options' option (*note Options::).
263    * `make dist' will check to make sure the `NEWS' file has been
264      updated to the current version.
266    * `VERSION' is checked to make sure its format complies with Gnits
267      standards.
269    * If `VERSION' indicates that this is an alpha release, and the file
270      `README-alpha' appears in the topmost directory of a package, then
271      it is included in the distribution.  This is done in `--gnits'
272      mode, and no other, because this mode is the only one where version
273      number formats are constrained, and hence the only mode where
274      Automake can automatically determine whether `README-alpha' should
275      be included.
277    * The file `THANKS' is required.
279 \x1f
280 File: automake.info,  Node: Cygnus,  Next: Not Enough,  Prev: Gnits,  Up: Top
282 22 The effect of `--cygnus'
283 ***************************
285 Some packages, notably GNU GCC and GNU gdb, have a build environment
286 originally written at Cygnus Support (subsequently renamed Cygnus
287 Solutions, and then later purchased by Red Hat).  Packages with this
288 ancestry are sometimes referred to as "Cygnus" trees.
290    A Cygnus tree has slightly different rules for how a `Makefile.in'
291 is to be constructed.  Passing `--cygnus' to `automake' will cause any
292 generated `Makefile.in' to comply with Cygnus rules.
294    Here are the precise effects of `--cygnus':
296    * Info files are always created in the build directory, and not in
297      the source directory.
299    * `texinfo.tex' is not required if a Texinfo source file is
300      specified.  The assumption is that the file will be supplied, but
301      in a place that Automake cannot find.  This assumption is an
302      artifact of how Cygnus packages are typically bundled.
304    * `make dist' is not supported, and the rules for it are not
305      generated.  Cygnus-style trees use their own distribution
306      mechanism.
308    * Certain tools will be searched for in the build tree as well as in
309      the user's `PATH'.  These tools are `runtest', `expect',
310      `makeinfo' and `texi2dvi'.
312    * `--foreign' is implied.
314    * The options `no-installinfo' and `no-dependencies' are implied.
316    * The macros `AM_MAINTAINER_MODE' and `AM_CYGWIN32' are required.
318    * The `check' target doesn't depend on `all'.
320    GNU maintainers are advised to use `gnu' strictness in preference to
321 the special Cygnus mode.  Some day, perhaps, the differences between
322 Cygnus trees and GNU trees will disappear (for instance, as GCC is made
323 more standards compliant).  At that time the special Cygnus mode will be
324 removed.
326 \x1f
327 File: automake.info,  Node: Not Enough,  Next: Distributing,  Prev: Cygnus,  Up: Top
329 23 When Automake Isn't Enough
330 *****************************
332 In some situations, where Automake is not up to one task, one has to
333 resort to handwritten rules or even handwritten `Makefile's.
335 * Menu:
337 * Extending::                   Adding new rules or overriding existing ones.
338 * Third-Party Makefiles::       Integrating Non-Automake `Makefile's.
340 \x1f
341 File: automake.info,  Node: Extending,  Next: Third-Party Makefiles,  Up: Not Enough
343 23.1 Extending Automake Rules
344 =============================
346 With some minor exceptions (like `_PROGRAMS' variables being rewritten
347 to append `$(EXEEXT)'), the contents of a `Makefile.am' is copied to
348 `Makefile.in' verbatim.
350    These copying semantics means that many problems can be worked around
351 by simply adding some `make' variables and rules to `Makefile.am'.
352 Automake will ignore these additions.
354    Since a `Makefile.in' is built from data gathered from three
355 different places (`Makefile.am', `configure.ac', and `automake'
356 itself), it is possible to have conflicting definitions of rules or
357 variables.  When building `Makefile.in' the following priorities are
358 respected by `automake' to ensure the user always have the last word.
359 User defined variables in `Makefile.am' have priority over variables
360 `AC_SUBST'ed from `configure.ac', and `AC_SUBST'ed variables have
361 priority over `automake'-defined variables.  As far rules are
362 concerned, a user-defined rule overrides any `automake'-defined rule
363 for the same target.
365    These overriding semantics make it possible to fine tune some default
366 settings of Automake, or replace some of its rules.  Overriding
367 Automake rules is often inadvisable, particularly in the topmost
368 directory of a package with subdirectories.  The `-Woverride' option
369 (*note Invoking Automake::) comes handy to catch overridden definitions.
371    Note that Automake does not make any difference between rules with
372 commands and rules that only specify dependencies.  So it is not
373 possible to append new dependencies to an `automake'-defined target
374 without redefining the entire rule.
376    However, various useful targets have a `-local' version you can
377 specify in your `Makefile.am'.  Automake will supplement the standard
378 target with these user-supplied targets.
380    The targets that support a local version are `all', `info', `dvi',
381 `ps', `pdf', `html', `check', `install-data', `install-dvi',
382 `install-exec', `install-html', `install-info', `install-pdf',
383 `install-ps', `uninstall', `installdirs', `installcheck' and the
384 various `clean' targets (`mostlyclean', `clean', `distclean', and
385 `maintainer-clean').
387    Note that there are no `uninstall-exec-local' or
388 `uninstall-data-local' targets; just use `uninstall-local'.  It doesn't
389 make sense to uninstall just data or just executables.
391    For instance, here is one way to erase a subdirectory during `make
392 clean' (*note Clean::).
394      clean-local:
395              -rm -rf testSubDir
397    Older version of this manual used to show how to use
398 `install-data-local' to install a file to some hard-coded location, but
399 you should avoid this.  (*note Hard-Coded Install Paths::)
401    Some rule also have a way to run another rule, called a "hook",
402 after their work is done.  The hook is named after the principal target,
403 with `-hook' appended.  The targets allowing hooks are `install-data',
404 `install-exec', `uninstall', `dist', and `distcheck'.  
406    For instance, here is how to create a hard link to an installed
407 program:
409      install-exec-hook:
410              ln $(DESTDIR)$(bindir)/program$(EXEEXT) \
411                 $(DESTDIR)$(bindir)/proglink$(EXEEXT)
413    Although cheaper and more portable than symbolic links, hard links
414 will not work everywhere (for instance, OS/2 does not have `ln').
415 Ideally you should fall back to `cp -p' when `ln' does not work.  An
416 easy way, if symbolic links are acceptable to you, is to add
417 `AC_PROG_LN_S' to `configure.ac' (*note Particular Program Checks:
418 (autoconf)Particular Programs.) and use `$(LN_S)' in `Makefile.am'.
420    For instance, here is how you could install a versioned copy of a
421 program using `$(LN_S)':
423      install-exec-hook:
424              cd $(DESTDIR)$(bindir) && \
425                mv -f prog$(EXEEXT) prog-$(VERSION)$(EXEEXT) && \
426                $(LN_S) prog-$(VERSION)$(EXEEXT) prog$(EXEEXT)
428    Note that we rename the program so that a new version will erase the
429 symbolic link, not the real binary.  Also we `cd' into the destination
430 directory in order to create relative links.
432    When writing `install-exec-hook' or `install-data-hook', please bear
433 in mind that the exec/data distinction is based on the installation
434 directory, not on the primary used (*note Install::).  So a
435 `foo_SCRIPTS' will be installed by `install-data', and a
436 `barexec_SCRIPTS' will be installed by `install-exec'.  You should
437 define your hooks consequently.
439 \x1f
440 File: automake.info,  Node: Third-Party Makefiles,  Prev: Extending,  Up: Not Enough
442 23.2 Third-Party `Makefile's
443 ============================
445 In most projects all `Makefile's are generated by Automake.  In some
446 cases, however, projects need to embed subdirectories with handwritten
447 `Makefile's.  For instance, one subdirectory could be a third-party
448 project with its own build system, not using Automake.
450    It is possible to list arbitrary directories in `SUBDIRS' or
451 `DIST_SUBDIRS' provided each of these directories has a `Makefile' that
452 recognizes all the following recursive targets.
454    When a user runs one of these targets, that target is run recursively
455 in all subdirectories.  This is why it is important that even
456 third-party `Makefile's support them.
458 `all'
459      Compile the entire package.  This is the default target in
460      Automake-generated `Makefile's, but it does not need to be the
461      default in third-party `Makefile's.
463 `distdir'
464      Copy files to distribute into `$(distdir)', before a tarball is
465      constructed.  Of course this target is not required if the
466      `no-dist' option (*note Options::) is used.
468      The variables `$(top_distdir)' and `$(distdir)' (*note Dist::)
469      will be passed from the outer package to the subpackage when the
470      `distdir' target is invoked.  These two variables have been
471      adjusted for the directory that is being recursed into, so they
472      are ready to use.
474 `install'
475 `install-data'
476 `install-exec'
477 `uninstall'
478      Install or uninstall files (*note Install::).
480 `install-dvi'
481 `install-html'
482 `install-info'
483 `install-ps'
484 `install-pdf'
485      Install only some specific documentation format (*note Texinfo::).
487 `installdirs'
488      Create install directories, but do not install any files.
490 `check'
491 `installcheck'
492      Check the package (*note Tests::).
494 `mostlyclean'
495 `clean'
496 `distclean'
497 `maintainer-clean'
498      Cleaning rules (*note Clean::).
500 `dvi'
501 `pdf'
502 `ps'
503 `info'
504 `html'
505      Build the documentation in various formats (*note Texinfo::).
507 `tags'
508 `ctags'
509      Build `TAGS' and `CTAGS' (*note Tags::).
511    If you have ever used Gettext in a project, this is a good example of
512 how third-party `Makefile's can be used with Automake.  The `Makefile's
513 `gettextize' puts in the `po/' and `intl/' directories are handwritten
514 `Makefile's that implement all these targets.  That way they can be
515 added to `SUBDIRS' in Automake packages.
517    Directories that are only listed in `DIST_SUBDIRS' but not in
518 `SUBDIRS' need only the `distclean', `maintainer-clean', and `distdir'
519 rules (*note Conditional Subdirectories::).
521    Usually, many of these rules are irrelevant to the third-party
522 subproject, but they are required for the whole package to work.  It's
523 OK to have a rule that does nothing, so if you are integrating a
524 third-party project with no documentation or tag support, you could
525 simply augment its `Makefile' as follows:
527      EMPTY_AUTOMAKE_TARGETS = dvi pdf ps info html tags ctags
528      .PHONY: $(EMPTY_AUTOMAKE_TARGETS)
529      $(EMPTY_AUTOMAKE_TARGETS):
531    Another aspect of integrating third-party build systems is whether
532 they support VPATH builds (*note VPATH Builds::).  Obviously if the
533 subpackage does not support VPATH builds the whole package will not
534 support VPATH builds.  This in turns means that `make distcheck' will
535 not work, because it relies on VPATH builds.  Some people can live
536 without this (actually, many Automake users have never heard of `make
537 distcheck').  Other people may prefer to revamp the existing
538 `Makefile's to support VPATH.  Doing so does not necessarily require
539 Automake, only Autoconf is needed (*note Build Directories:
540 (autoconf)Build Directories.).  The necessary substitutions:
541 `@srcdir@', `@top_srcdir@', and `@top_builddir@' are defined by
542 `configure' when it processes a `Makefile' (*note Preset Output
543 Variables: (autoconf)Preset Output Variables.), they are not computed
544 by the Makefile like the aforementioned `$(distdir)' and
545 `$(top_distdir)' variables..
547    It is sometimes inconvenient to modify a third-party `Makefile' to
548 introduce the above required targets.  For instance, one may want to
549 keep the third-party sources untouched to ease upgrades to new versions.
551    Here are two other ideas.  If GNU make is assumed, one possibility is
552 to add to that subdirectory a `GNUmakefile' that defines the required
553 targets and include the third-party `Makefile'.  For this to work in
554 VPATH builds, `GNUmakefile' must lie in the build directory; the
555 easiest way to do this is to write a `GNUmakefile.in' instead, and have
556 it processed with `AC_CONFIG_FILES' from the outer package.  For
557 example if we assume `Makefile' defines all targets except the
558 documentation targets, and that the `check' target is actually called
559 `test', we could write `GNUmakefile' (or `GNUmakefile.in') like this:
561      # First, include the real Makefile
562      include Makefile
563      # Then, define the other targets needed by Automake Makefiles.
564      .PHONY: dvi pdf ps info html check
565      dvi pdf ps info html:
566      check: test
568    A similar idea that does not use `include' is to write a proxy
569 `Makefile' that dispatches rules to the real `Makefile', either with
570 `$(MAKE) -f Makefile.real $(AM_MAKEFLAGS) target' (if it's OK to rename
571 the original `Makefile') or with `cd subdir && $(MAKE) $(AM_MAKEFLAGS)
572 target' (if it's OK to store the subdirectory project one directory
573 deeper).  The good news is that this proxy `Makefile' can be generated
574 with Automake.  All we need are `-local' targets (*note Extending::)
575 that perform the dispatch.  Of course the other Automake features are
576 available, so you could decide to let Automake perform distribution or
577 installation.  Here is a possible `Makefile.am':
579      all-local:
580              cd subdir && $(MAKE) $(AM_MAKEFLAGS) all
581      check-local:
582              cd subdir && $(MAKE) $(AM_MAKEFLAGS) test
583      clean-local:
584              cd subdir && $(MAKE) $(AM_MAKEFLAGS) clean
586      # Assuming the package knows how to install itself
587      install-data-local:
588              cd subdir && $(MAKE) $(AM_MAKEFLAGS) install-data
589      install-exec-local:
590              cd subdir && $(MAKE) $(AM_MAKEFLAGS) install-exec
591      uninstall-local:
592              cd subdir && $(MAKE) $(AM_MAKEFLAGS) uninstall
594      # Distribute files from here.
595      EXTRA_DIST = subdir/Makefile subdir/program.c ...
597    Pushing this idea to the extreme, it is also possible to ignore the
598 subproject build system and build everything from this proxy
599 `Makefile.am'.  This might sounds very sensible if you need VPATH
600 builds but the subproject does not support them.
602 \x1f
603 File: automake.info,  Node: Distributing,  Next: API versioning,  Prev: Not Enough,  Up: Top
605 24 Distributing `Makefile.in's
606 ******************************
608 Automake places no restrictions on the distribution of the resulting
609 `Makefile.in's.  We still encourage software authors to distribute
610 their work under terms like those of the GPL, but doing so is not
611 required to use Automake.
613    Some of the files that can be automatically installed via the
614 `--add-missing' switch do fall under the GPL.  However, these also have
615 a special exception allowing you to distribute them with your package,
616 regardless of the licensing you choose.
618 \x1f
619 File: automake.info,  Node: API versioning,  Next: Upgrading,  Prev: Distributing,  Up: Top
621 25 Automake API versioning
622 **************************
624 New Automake releases usually include bug fixes and new features.
625 Unfortunately they may also introduce new bugs and incompatibilities.
626 This makes four reasons why a package may require a particular Automake
627 version.
629    Things get worse when maintaining a large tree of packages, each one
630 requiring a different version of Automake.  In the past, this meant that
631 any developer (and sometime users) had to install several versions of
632 Automake in different places, and switch `$PATH' appropriately for each
633 package.
635    Starting with version 1.6, Automake installs versioned binaries.
636 This means you can install several versions of Automake in the same
637 `$prefix', and can select an arbitrary Automake version by running
638 `automake-1.6' or `automake-1.7' without juggling with `$PATH'.
639 Furthermore, `Makefile''s generated by Automake 1.6 will use
640 `automake-1.6' explicitly in their rebuild rules.
642    The number `1.6' in `automake-1.6' is Automake's API version, not
643 Automake's version.  If a bug fix release is made, for instance
644 Automake 1.6.1, the API version will remain 1.6.  This means that a
645 package that works with Automake 1.6 should also work with 1.6.1; after
646 all, this is what people expect from bug fix releases.
648    If your package relies on a feature or a bug fix introduced in a
649 release, you can pass this version as an option to Automake to ensure
650 older releases will not be used.  For instance, use this in your
651 `configure.ac':
653        AM_INIT_AUTOMAKE([1.6.1])    dnl Require Automake 1.6.1 or better.
654    or, in a particular `Makefile.am':
656        AUTOMAKE_OPTIONS = 1.6.1   # Require Automake 1.6.1 or better.
657    Automake will print an error message if its version is older than
658 the requested version.
660 What is in the API
661 ==================
663 Automake's programming interface is not easy to define.  Basically it
664 should include at least all *documented* variables and targets that a
665 `Makefile.am' author can use, any behavior associated with them (e.g.,
666 the places where `-hook''s are run), the command line interface of
667 `automake' and `aclocal', ...
669 What is not in the API
670 ======================
672 Every undocumented variable, target, or command line option, is not part
673 of the API.  You should avoid using them, as they could change from one
674 version to the other (even in bug fix releases, if this helps to fix a
675 bug).
677    If it turns out you need to use such a undocumented feature, contact
678 <automake@gnu.org> and try to get it documented and exercised by the
679 test-suite.
681 \x1f
682 File: automake.info,  Node: Upgrading,  Next: FAQ,  Prev: API versioning,  Up: Top
684 26 Upgrading a Package to a Newer Automake Version
685 **************************************************
687 Automake maintains three kind of files in a package.
689    * `aclocal.m4'
691    * `Makefile.in's
693    * auxiliary tools like `install-sh' or `py-compile'
695    `aclocal.m4' is generated by `aclocal' and contains some
696 Automake-supplied M4 macros.  Auxiliary tools are installed by
697 `automake --add-missing' when needed.  `Makefile.in's are built from
698 `Makefile.am' by `automake', and rely on the definitions of the M4
699 macros put in `aclocal.m4' as well as the behavior of the auxiliary
700 tools installed.
702    Because all these files are closely related, it is important to
703 regenerate all of them when upgrading to a newer Automake release.  The
704 usual way to do that is
706      aclocal # with any option needed (such a -I m4)
707      autoconf
708      automake --add-missing --force-missing
710 or more conveniently:
712      autoreconf -vfi
714    The use of `--force-missing' ensures that auxiliary tools will be
715 overridden by new versions (*note Invoking Automake::).
717    It is important to regenerate all these files each time Automake is
718 upgraded, even between bug fixes releases.  For instance, it is not
719 unusual for a bug fix to involve changes to both the rules generated in
720 `Makefile.in' and the supporting M4 macros copied to `aclocal.m4'.
722    Presently `automake' is able to diagnose situations where
723 `aclocal.m4' has been generated with another version of `aclocal'.
724 However it never checks whether auxiliary scripts are up-to-date.  In
725 other words, `automake' will tell you when `aclocal' needs to be rerun,
726 but it will never diagnose a missing `--force-missing'.
728    Before upgrading to a new major release, it is a good idea to read
729 the file `NEWS'.  This file lists all changes between releases: new
730 features, obsolete constructs, known incompatibilities, and workarounds.
732 \x1f
733 File: automake.info,  Node: FAQ,  Next: History,  Prev: Upgrading,  Up: Top
735 27 Frequently Asked Questions about Automake
736 ********************************************
738 This chapter covers some questions that often come up on the mailing
739 lists.
741 * Menu:
743 * CVS::                         CVS and generated files
744 * maintainer-mode::             missing and AM_MAINTAINER_MODE
745 * wildcards::                   Why doesn't Automake support wildcards?
746 * limitations on file names::   Limitations on source and installed file names
747 * distcleancheck::              Files left in build directory after distclean
748 * Flag Variables Ordering::     CFLAGS vs. AM_CFLAGS vs. mumble_CFLAGS
749 * renamed objects::             Why are object files sometimes renamed?
750 * Per-Object Flags::            How to simulate per-object flags?
751 * Multiple Outputs::            Writing rules for tools with many output files
752 * Hard-Coded Install Paths::    Installing to Hard-Coded Locations
754 \x1f
755 File: automake.info,  Node: CVS,  Next: maintainer-mode,  Up: FAQ
757 27.1 CVS and generated files
758 ============================
760 27.1.1 Background: distributed generated files
761 ----------------------------------------------
763 Packages made with Autoconf and Automake ship with some generated files
764 like `configure' or `Makefile.in'.  These files were generated on the
765 developer's host and are distributed so that end-users do not have to
766 install the maintainer tools required to rebuild them.  Other generated
767 files like Lex scanners, Yacc parsers, or Info documentation, are
768 usually distributed on similar grounds.
770    Automake outputs rules in `Makefile's to rebuild these files.  For
771 instance, `make' will run `autoconf' to rebuild `configure' whenever
772 `configure.ac' is changed.  This makes development safer by ensuring a
773 `configure' is never out-of-date with respect to `configure.ac'.
775    As generated files shipped in packages are up-to-date, and because
776 `tar' preserves times-tamps, these rebuild rules are not triggered when
777 a user unpacks and builds a package.
779 27.1.2 Background: CVS and timestamps
780 -------------------------------------
782 Unless you use CVS keywords (in which case files must be updated at
783 commit time), CVS preserves timestamp during `cvs commit' and `cvs
784 import -d' operations.
786    When you check out a file using `cvs checkout' its timestamp is set
787 to that of the revision that is being checked out.
789    However, during `cvs update', files will have the date of the
790 update, not the original timestamp of this revision.  This is meant to
791 make sure that `make' notices sources files have been updated.
793    This timestamp shift is troublesome when both sources and generated
794 files are kept under CVS.  Because CVS processes files in alphabetical
795 order, `configure.ac' will appear older than `configure' after a `cvs
796 update' that updates both files, even if `configure' was newer than
797 `configure.ac' when it was checked in.  Calling `make' will then
798 trigger a spurious rebuild of `configure'.
800 27.1.3 Living with CVS in Autoconfiscated projects
801 --------------------------------------------------
803 There are basically two clans amongst maintainers: those who keep all
804 distributed files under CVS, including generated files, and those who
805 keep generated files _out_ of CVS.
807 All files in CVS
808 ................
810    * The CVS repository contains all distributed files so you know
811      exactly what is distributed, and you can checkout any prior
812      version entirely.
814    * Maintainers can see how generated files evolve (for instance, you
815      can see what happens to your `Makefile.in's when you upgrade
816      Automake and make sure they look OK).
818    * Users do not need the autotools to build a checkout of the
819      project, it works just like a released tarball.
821    * If users use `cvs update' to update their copy, instead of `cvs
822      checkout' to fetch a fresh one, timestamps will be inaccurate.
823      Some rebuild rules will be triggered and attempt to run developer
824      tools such as `autoconf' or `automake'.
826      Actually, calls to such tools are all wrapped into a call to the
827      `missing' script discussed later (*note maintainer-mode::).
828      `missing' will take care of fixing the timestamps when these tools
829      are not installed, so that the build can continue.
831    * In distributed development, developers are likely to have different
832      version of the maintainer tools installed.  In this case rebuilds
833      triggered by timestamp lossage will lead to spurious changes to
834      generated files.  There are several solutions to this:
836         * All developers should use the same versions, so that the
837           rebuilt files are identical to files in CVS.  (This starts to
838           be difficult when each project you work on uses different
839           versions.)
841         * Or people use a script to fix the timestamp after a checkout
842           (the GCC folks have such a script).
844         * Or `configure.ac' uses `AM_MAINTAINER_MODE', which will
845           disable all these rebuild rules by default.  This is further
846           discussed in *Note maintainer-mode::.
848    * Although we focused on spurious rebuilds, the converse can also
849      happen.  CVS's timestamp handling can also let you think an
850      out-of-date file is up-to-date.
852      For instance, suppose a developer has modified `Makefile.am' and
853      has rebuilt `Makefile.in'.  He then decide to do a last-minute
854      change to `Makefile.am' right before checking in both files
855      (without rebuilding `Makefile.in' to account for the change).
857      This last change to `Makefile.am' make the copy of `Makefile.in'
858      out-of-date.  Since CVS processes files alphabetically, when
859      another developer `cvs update' his or her tree, `Makefile.in' will
860      happen to be newer than `Makefile.am'.  This other developer will
861      not see `Makefile.in' is out-of-date.
864 Generated files out of CVS
865 ..........................
867 One way to get CVS and `make' working peacefully is to never store
868 generated files in CVS, i.e., do not CVS-control files that are
869 `Makefile' targets (also called _derived_ files).
871    This way developers are not annoyed by changes to generated files.
872 It does not matter if they all have different versions (assuming they
873 are compatible, of course).  And finally, timestamps are not lost,
874 changes to sources files can't be missed as in the
875 `Makefile.am'/`Makefile.in' example discussed earlier.
877    The drawback is that the CVS repository is not an exact copy of what
878 is distributed and that users now need to install various development
879 tools (maybe even specific versions) before they can build a checkout.
880 But, after all, CVS's job is versioning, not distribution.
882    Allowing developers to use different versions of their tools can also
883 hide bugs during distributed development.  Indeed, developers will be
884 using (hence testing) their own generated files, instead of the
885 generated files that will be released actually.  The developer who
886 prepares the tarball might be using a version of the tool that produces
887 bogus output (for instance a non-portable C file), something other
888 developers could have noticed if they weren't using their own versions
889 of this tool.
891 27.1.4 Third-party files
892 ------------------------
894 Another class of files not discussed here (because they do not cause
895 timestamp issues) are files that are shipped with a package, but
896 maintained elsewhere.  For instance, tools like `gettextize' and
897 `autopoint' (from Gettext) or `libtoolize' (from Libtool), will install
898 or update files in your package.
900    These files, whether they are kept under CVS or not, raise similar
901 concerns about version mismatch between developers' tools.  The Gettext
902 manual has a section about this, see *Note CVS Issues: (gettext)CVS
903 Issues.
905 \x1f
906 File: automake.info,  Node: maintainer-mode,  Next: wildcards,  Prev: CVS,  Up: FAQ
908 27.2 `missing' and `AM_MAINTAINER_MODE'
909 =======================================
911 27.2.1 `missing'
912 ----------------
914 The `missing' script is a wrapper around several maintainer tools,
915 designed to warn users if a maintainer tool is required but missing.
916 Typical maintainer tools are `autoconf', `automake', `bison', etc.
917 Because file generated by these tools are shipped with the other
918 sources of a package, these tools shouldn't be required during a user
919 build and they are not checked for in `configure'.
921    However, if for some reason a rebuild rule is triggered and involves
922 a missing tool, `missing' will notice it and warn the user.  Besides
923 the warning, when a tool is missing, `missing' will attempt to fix
924 timestamps in a way that allows the build to continue.  For instance,
925 `missing' will touch `configure' if `autoconf' is not installed.  When
926 all distributed files are kept under CVS, this feature of `missing'
927 allows user _with no maintainer tools_ to build a package off CVS,
928 bypassing any timestamp inconsistency implied by `cvs update'.
930    If the required tool is installed, `missing' will run it and won't
931 attempt to continue after failures.  This is correct during
932 development: developers love fixing failures.  However, users with
933 wrong versions of maintainer tools may get an error when the rebuild
934 rule is spuriously triggered, halting the build.  This failure to let
935 the build continue is one of the arguments of the `AM_MAINTAINER_MODE'
936 advocates.
938 27.2.2 `AM_MAINTAINER_MODE'
939 ---------------------------
941 `AM_MAINTAINER_MODE' disables the so called "rebuild rules" by default.
942 If you have `AM_MAINTAINER_MODE' in `configure.ac', and run
943 `./configure && make', then `make' will *never* attempt to rebuilt
944 `configure', `Makefile.in's, Lex or Yacc outputs, etc.  I.e., this
945 disables build rules for files that are usually distributed and that
946 users should normally not have to update.
948    If you run `./configure --enable-maintainer-mode', then these
949 rebuild rules will be active.
951    People use `AM_MAINTAINER_MODE' either because they do want their
952 users (or themselves) annoyed by timestamps lossage (*note CVS::), or
953 because they simply can't stand the rebuild rules and prefer running
954 maintainer tools explicitly.
956    `AM_MAINTAINER_MODE' also allows you to disable some custom build
957 rules conditionally.  Some developers use this feature to disable rules
958 that need exotic tools that users may not have available.
960    Several years ago Franc,ois Pinard pointed out several arguments
961 against this `AM_MAINTAINER_MODE' macro.  Most of them relate to
962 insecurity.  By removing dependencies you get non-dependable builds:
963 change to sources files can have no effect on generated files and this
964 can be very confusing when unnoticed.  He adds that security shouldn't
965 be reserved to maintainers (what `--enable-maintainer-mode' suggests),
966 on the contrary.  If one user has to modify a `Makefile.am', then
967 either `Makefile.in' should be updated or a warning should be output
968 (this is what Automake uses `missing' for) but the last thing you want
969 is that nothing happens and the user doesn't notice it (this is what
970 happens when rebuild rules are disabled by `AM_MAINTAINER_MODE').
972    Jim Meyering, the inventor of the `AM_MAINTAINER_MODE' macro was
973 swayed by Franc,ois's arguments, and got rid of `AM_MAINTAINER_MODE' in
974 all of his packages.
976    Still many people continue to use `AM_MAINTAINER_MODE', because it
977 helps them working on projects where all files are kept under CVS, and
978 because `missing' isn't enough if you have the wrong version of the
979 tools.
981 \x1f
982 File: automake.info,  Node: wildcards,  Next: limitations on file names,  Prev: maintainer-mode,  Up: FAQ
984 27.3 Why doesn't Automake support wildcards?
985 ============================================
987 Developers are lazy.  They often would like to use wildcards in
988 `Makefile.am's, so they don't need to remember they have to update
989 `Makefile.am's every time they add, delete, or rename a file.
991    There are several objections to this:
992    * When using CVS (or similar) developers need to remember they have
993      to run `cvs add' or `cvs rm' anyway.  Updating `Makefile.am'
994      accordingly quickly becomes a reflex.
996      Conversely, if your application doesn't compile because you forgot
997      to add a file in `Makefile.am', it will help you remember to `cvs
998      add' it.
1000    * Using wildcards makes easy to distribute files by mistake.  For
1001      instance, some code a developer is experimenting with (a test case,
1002      say) but that should not be part of the distribution.
1004    * Using wildcards it's easy to omit some files by mistake.  For
1005      instance, one developer creates a new file, uses it at many places,
1006      but forget to commit it.  Another developer then checkout the
1007      incomplete project and is able to run `make dist' successfully,
1008      even though a file is missing.
1010    * Listing files, you control *exactly* what you distribute.  If some
1011      file that should be distributed is missing from your tree, `make
1012      dist' will complain.  Besides, you don't distribute more than what
1013      you listed.
1015    * Finally it's really hard to `forget' adding a file to
1016      `Makefile.am', because if you don't add it, it doesn't get
1017      compiled nor installed, so you can't even test it.
1019    Still, these are philosophical objections, and as such you may
1020 disagree, or find enough value in wildcards to dismiss all of them.
1021 Before you start writing a patch against Automake to teach it about
1022 wildcards, let's see the main technical issue: portability.
1024    Although `$(wildcard ...)' works with GNU `make', it is not portable
1025 to other `make' implementations.
1027    The only way Automake could support `$(wildcard ...)' is by
1028 expending `$(wildcard ...)' when `automake' is run.  Resulting
1029 `Makefile.in's would be portable since they would list all files and
1030 not use `$(wildcard ...)'.  However that means developers need to
1031 remember they must run `automake' each time they add, delete, or rename
1032 files.
1034    Compared to editing `Makefile.am', this is really little win.  Sure,
1035 it's easier and faster to type `automake; make' than to type `emacs
1036 Makefile.am; make'.  But nobody bothered enough to write a patch add
1037 support for this syntax.  Some people use scripts to generated file
1038 lists in `Makefile.am' or in separate `Makefile' fragments.
1040    Even if you don't care about portability, and are tempted to use
1041 `$(wildcard ...)' anyway because you target only GNU Make, you should
1042 know there are many places where Automake need to know exactly which
1043 files should be processed.  As Automake doesn't know how to expand
1044 `$(wildcard ...)', you cannot use it in these places.  `$(wildcard
1045 ...)' is a black box comparable to `AC_SUBST'ed variables as far
1046 Automake is concerned.
1048    You can get warnings about `$(wildcard ...') constructs using the
1049 `-Wportability' flag.
1051 \x1f
1052 File: automake.info,  Node: limitations on file names,  Next: distcleancheck,  Prev: wildcards,  Up: FAQ
1054 27.4 Limitations on file names
1055 ==============================
1057 Automake attempts to support all kinds of file names, even those that
1058 contain unusual characters or are unusually long.  However, some
1059 limitations are imposed by the underlying operating system and tools.
1061    Most operating systems prohibit the use of the null byte in file
1062 names, and reserve `/' as a directory separator.  Also, they require
1063 that file names are properly encoded for the user's locale.  Automake
1064 is subject to these limits.
1066    Portable packages should limit themselves to POSIX file names.
1067 These can contain ASCII letters and digits, `_', `.', and `-'.  File
1068 names consist of components separated by `/'.  File name components
1069 cannot begin with `-'.
1071    Portable POSIX file names cannot contain components that exceed a
1072 14-byte limit, but nowadays it's normally safe to assume the
1073 more-generous XOPEN limit of 255 bytes.  POSIX limits file names to 255
1074 bytes (XOPEN allows 1023 bytes), but you may want to limit a source
1075 tarball to file names to 99 bytes to avoid interoperability problems
1076 with old versions of `tar'.
1078    If you depart from these rules (e.g., by using non-ASCII characters
1079 in file names, or by using lengthy file names), your installers may
1080 have problems for reasons unrelated to Automake.  However, if this does
1081 not concern you, you should know about the limitations imposed by
1082 Automake itself.  These limitations are undesirable, but some of them
1083 seem to be inherent to underlying tools like Autoconf, Make, M4, and
1084 the shell.  They fall into three categories: install directories, build
1085 directories, and file names.
1087    The following characters:
1089      newline " # $ ' `
1091    should not appear in the names of install directories.  For example,
1092 the operand of `configure''s `--prefix' option should not contain these
1093 characters.
1095    Build directories suffer the same limitations as install directories,
1096 and in addition should not contain the following characters:
1098      & @ \
1100    For example, the full name of the directory containing the source
1101 files should not contain these characters.
1103    Source and installation file names like `main.c' are limited even
1104 further: they should conform to the POSIX/XOPEN rules described above.
1105 In addition, if you plan to port to non-POSIX environments, you should
1106 avoid file names that differ only in case (e.g., `makefile' and
1107 `Makefile').  Nowadays it is no longer worth worrying about the 8.3
1108 limits of DOS file systems.
1110 \x1f
1111 File: automake.info,  Node: distcleancheck,  Next: Flag Variables Ordering,  Prev: limitations on file names,  Up: FAQ
1113 27.5 Files left in build directory after distclean
1114 ==================================================
1116 This is a diagnostic you might encounter while running `make distcheck'.
1118    As explained in *Note Dist::, `make distcheck' attempts to build and
1119 check your package for errors like this one.
1121    `make distcheck' will perform a `VPATH' build of your package (*note
1122 VPATH Builds::), and then call `make distclean'.  Files left in the
1123 build directory after `make distclean' has run are listed after this
1124 error.
1126    This diagnostic really covers two kinds of errors:
1128    * files that are forgotten by distclean;
1130    * distributed files that are erroneously rebuilt.
1132    The former left-over files are not distributed, so the fix is to mark
1133 them for cleaning (*note Clean::), this is obvious and doesn't deserve
1134 more explanations.
1136    The latter bug is not always easy to understand and fix, so let's
1137 proceed with an example.  Suppose our package contains a program for
1138 which we want to build a man page using `help2man'.  GNU `help2man'
1139 produces simple manual pages from the `--help' and `--version' output
1140 of other commands (*note Overview: (help2man)Top.).  Because we don't
1141 to force want our users to install `help2man', we decide to distribute
1142 the generated man page using the following setup.
1144      # This Makefile.am is bogus.
1145      bin_PROGRAMS = foo
1146      foo_SOURCES = foo.c
1147      dist_man_MANS = foo.1
1149      foo.1: foo$(EXEEXT)
1150              help2man --output=foo.1 ./foo$(EXEEXT)
1152    This will effectively distribute the man page.  However, `make
1153 distcheck' will fail with:
1155      ERROR: files left in build directory after distclean:
1156      ./foo.1
1158    Why was `foo.1' rebuilt?  Because although distributed, `foo.1'
1159 depends on a non-distributed built file: `foo$(EXEEXT)'.
1160 `foo$(EXEEXT)' is built by the user, so it will always appear to be
1161 newer than the distributed `foo.1'.
1163    `make distcheck' caught an inconsistency in our package.  Our intent
1164 was to distribute `foo.1' so users do not need installing `help2man',
1165 however since this our rule causes this file to be always rebuilt,
1166 users _do_ need `help2man'.  Either we should ensure that `foo.1' is
1167 not rebuilt by users, or there is no point in distributing `foo.1'.
1169    More generally, the rule is that distributed files should never
1170 depend on non-distributed built files.  If you distribute something
1171 generated, distribute its sources.
1173    One way to fix the above example, while still distributing `foo.1'
1174 is to not depend on `foo$(EXEEXT)'.  For instance, assuming `foo
1175 --version' and `foo --help' do not change unless `foo.c' or
1176 `configure.ac' change, we could write the following `Makefile.am':
1178      bin_PROGRAMS = foo
1179      foo_SOURCES = foo.c
1180      dist_man_MANS = foo.1
1182      foo.1: foo.c $(top_srcdir)/configure.ac
1183              $(MAKE) $(AM_MAKEFLAGS) foo$(EXEEXT)
1184              help2man --output=foo.1 ./foo$(EXEEXT)
1186    This way, `foo.1' will not get rebuilt every time `foo$(EXEEXT)'
1187 changes.  The `make' call makes sure `foo$(EXEEXT)' is up-to-date
1188 before `help2man'.  Another way to ensure this would be to use separate
1189 directories for binaries and man pages, and set `SUBDIRS' so that
1190 binaries are built before man pages.
1192    We could also decide not to distribute `foo.1'.  In this case it's
1193 fine to have `foo.1' dependent upon `foo$(EXEEXT)', since both will
1194 have to be rebuilt.  However it would be impossible to build the
1195 package in a cross-compilation, because building `foo.1' involves an
1196 _execution_ of `foo$(EXEEXT)'.
1198    Another context where such errors are common is when distributed
1199 files are built by tools that are built by the package.  The pattern is
1200 similar:
1202      distributed-file: built-tools distributed-sources
1203              build-command
1205 should be changed to
1207      distributed-file: distributed-sources
1208              $(MAKE) $(AM_MAKEFLAGS) built-tools
1209              build-command
1211 or you could choose not to distribute `distributed-file', if
1212 cross-compilation does not matter.
1214    The points made through these examples are worth a summary:
1216    * Distributed files should never depend upon non-distributed built
1217      files.
1219    * Distributed files should be distributed with all their
1220      dependencies.
1222    * If a file is _intended_ to be rebuilt by users, then there is no
1223      point in distributing it.
1225    For desperate cases, it's always possible to disable this check by
1226 setting `distcleancheck_listfiles' as documented in *Note Dist::.  Make
1227 sure you do understand the reason why `make distcheck' complains before
1228 you do this.  `distcleancheck_listfiles' is a way to _hide_ errors, not
1229 to fix them.  You can always do better.
1231 \x1f
1232 File: automake.info,  Node: Flag Variables Ordering,  Next: renamed objects,  Prev: distcleancheck,  Up: FAQ
1234 27.6 Flag Variables Ordering
1235 ============================
1237      What is the difference between `AM_CFLAGS', `CFLAGS', and
1238      `mumble_CFLAGS'?
1240      Why does `automake' output `CPPFLAGS' after
1241      `AM_CPPFLAGS' on compile lines?  Shouldn't it be the converse?
1243      My `configure' adds some warning flags into `CXXFLAGS'.  In
1244      one `Makefile.am' I would like to append a new flag, however if I
1245      put the flag into `AM_CXXFLAGS' it is prepended to the other
1246      flags, not appended.
1248 27.6.1 Compile Flag Variables
1249 -----------------------------
1251 This section attempts to answer all the above questions.  We will
1252 mostly discuss `CPPFLAGS' in our examples, but actually the answer
1253 holds for all the compile flags used in Automake: `CCASFLAGS',
1254 `CFLAGS', `CPPFLAGS', `CXXFLAGS', `FCFLAGS', `FFLAGS', `GCJFLAGS',
1255 `LDFLAGS', `LFLAGS', `LIBTOOLFLAGS', `OBJCFLAGS', `RFLAGS', `UPCFLAGS',
1256 and `YFLAGS'.
1258    `CPPFLAGS', `AM_CPPFLAGS', and `mumble_CPPFLAGS' are three variables
1259 that can be used to pass flags to the C preprocessor (actually these
1260 variables are also used for other languages like C++ or preprocessed
1261 Fortran).  `CPPFLAGS' is the user variable (*note User Variables::),
1262 `AM_CPPFLAGS' is the Automake variable, and `mumble_CPPFLAGS' is the
1263 variable specific to the `mumble' target (we call this a per-target
1264 variable, *note Program and Library Variables::).
1266    Automake always uses two of these variables when compiling C sources
1267 files.  When compiling an object file for the `mumble' target, the
1268 first variable will be `mumble_CPPFLAGS' if it is defined, or
1269 `AM_CPPFLAGS' otherwise.  The second variable is always `CPPFLAGS'.
1271    In the following example,
1273      bin_PROGRAMS = foo bar
1274      foo_SOURCES = xyz.c
1275      bar_SOURCES = main.c
1276      foo_CPPFLAGS = -DFOO
1277      AM_CPPFLAGS = -DBAZ
1279 `xyz.o' will be compiled with `$(foo_CPPFLAGS) $(CPPFLAGS)', (because
1280 `xyz.o' is part of the `foo' target), while `main.o' will be compiled
1281 with `$(AM_CPPFLAGS) $(CPPFLAGS)' (because there is no per-target
1282 variable for target `bar').
1284    The difference between `mumble_CPPFLAGS' and `AM_CPPFLAGS' being
1285 clear enough, let's focus on `CPPFLAGS'.  `CPPFLAGS' is a user
1286 variable, i.e., a variable that users are entitled to modify in order
1287 to compile the package.  This variable, like many others, is documented
1288 at the end of the output of `configure --help'.
1290    For instance, someone who needs to add `/home/my/usr/include' to the
1291 C compiler's search path would configure a package with
1293      ./configure CPPFLAGS='-I /home/my/usr/include'
1295 and this flag would be propagated to the compile rules of all
1296 `Makefile's.
1298    It is also not uncommon to override a user variable at `make'-time.
1299 Many installers do this with `prefix', but this can be useful with
1300 compiler flags too.  For instance, if, while debugging a C++ project,
1301 you need to disable optimization in one specific object file, you can
1302 run something like
1304      rm file.o
1305      make CXXFLAGS=-O0 file.o
1306      make
1308    The reason `$(CPPFLAGS)' appears after `$(AM_CPPFLAGS)' or
1309 `$(mumble_CPPFLAGS)' in the compile command is that users should always
1310 have the last say.  It probably makes more sense if you think about it
1311 while looking at the `CXXFLAGS=-O0' above, which should supersede any
1312 other switch from `AM_CXXFLAGS' or `mumble_CXXFLAGS' (and this of
1313 course replaces the previous value of `CXXFLAGS').
1315    You should never redefine a user variable such as `CPPFLAGS' in
1316 `Makefile.am'.  Use `automake -Woverride' to diagnose such mistakes.
1317 Even something like
1319      CPPFLAGS = -DDATADIR=\"$(datadir)\" @CPPFLAGS@
1321 is erroneous.  Although this preserves `configure''s value of
1322 `CPPFLAGS', the definition of `DATADIR' will disappear if a user
1323 attempts to override `CPPFLAGS' from the `make' command line.
1325      AM_CPPFLAGS = -DDATADIR=\"$(datadir)\"
1327 is all what is needed here if no per-target flags are used.
1329    You should not add options to these user variables within
1330 `configure' either, for the same reason.  Occasionally you need to
1331 modify these variables to perform a test, but you should reset their
1332 values afterwards.  In contrast, it is OK to modify the `AM_' variables
1333 within `configure' if you `AC_SUBST' them, but it is rather rare that
1334 you need to do this, unless you really want to change the default
1335 definitions of the `AM_' variables in all `Makefile's.
1337    What we recommend is that you define extra flags in separate
1338 variables.  For instance, you may write an Autoconf macro that computes
1339 a set of warning options for the C compiler, and `AC_SUBST' them in
1340 `WARNINGCFLAGS'; you may also have an Autoconf macro that determines
1341 which compiler and which linker flags should be used to link with
1342 library `libfoo', and `AC_SUBST' these in `LIBFOOCFLAGS' and
1343 `LIBFOOLDFLAGS'.  Then, a `Makefile.am' could use these variables as
1344 follows:
1346      AM_CFLAGS = $(WARNINGCFLAGS)
1347      bin_PROGRAMS = prog1 prog2
1348      prog1_SOURCES = ...
1349      prog2_SOURCES = ...
1350      prog2_CFLAGS = $(LIBFOOCFLAGS) $(AM_CFLAGS)
1351      prog2_LDFLAGS = $(LIBFOOLDFLAGS)
1353    In this example both programs will be compiled with the flags
1354 substituted into `$(WARNINGCFLAGS)', and `prog2' will additionally be
1355 compiled with the flags required to link with `libfoo'.
1357    Note that listing `AM_CFLAGS' in a per-target `CFLAGS' variable is a
1358 common idiom to ensure that `AM_CFLAGS' applies to every target in a
1359 `Makefile.in'.
1361    Using variables like this gives you full control over the ordering of
1362 the flags.  For instance, if there is a flag in $(WARNINGCFLAGS) that
1363 you want to negate for a particular target, you can use something like
1364 `prog1_CFLAGS = $(AM_CFLAGS) -no-flag'.  If all these flags had been
1365 forcefully appended to `CFLAGS', there would be no way to disable one
1366 flag.  Yet another reason to leave user variables to users.
1368    Finally, we have avoided naming the variable of the example
1369 `LIBFOO_LDFLAGS' (with an underscore) because that would cause Automake
1370 to think that this is actually a per-target variable (like
1371 `mumble_LDFLAGS') for some non-declared `LIBFOO' target.
1373 27.6.2 Other Variables
1374 ----------------------
1376 There are other variables in Automake that follow similar principles to
1377 allow user options.  For instance, Texinfo rules (*note Texinfo::) use
1378 `MAKEINFOFLAGS' and `AM_MAKEINFOFLAGS'.  Similarly, DejaGnu tests
1379 (*note Tests::) use `RUNTESTDEFAULTFLAGS' and `AM_RUNTESTDEFAULTFLAGS'.
1380 The tags and ctags rules (*note Tags::) use `ETAGSFLAGS',
1381 `AM_ETAGSFLAGS', `CTAGSFLAGS', and `AM_CTAGSFLAGS'.  Java rules (*note
1382 Java::) use `JAVACFLAGS' and `AM_JAVACFLAGS'.  None of these rules do
1383 support per-target flags (yet).
1385    To some extent, even `AM_MAKEFLAGS' (*note Subdirectories::) obeys
1386 this naming scheme.  The slight difference is that `MAKEFLAGS' is
1387 passed to sub-`make's implicitly by `make' itself.
1389    However you should not think that all variables ending with `FLAGS'
1390 follow this convention.  For instance, `DISTCHECK_CONFIGURE_FLAGS'
1391 (*note Dist::), `ACLOCAL_AMFLAGS' (see *Note Rebuilding:: and *Note
1392 Local Macros::), are two variables that are only useful to the
1393 maintainer and have no user counterpart.
1395    `ARFLAGS' (*note A Library::) is usually defined by Automake and has
1396 neither `AM_' nor per-target cousin.
1398    Finally you should not think either that the existence of a
1399 per-target variable implies that of an `AM_' variable or that of a user
1400 variable.  For instance, the `mumble_LDADD' per-target variable
1401 overrides the global `LDADD' variable (which is not a user variable),
1402 and `mumble_LIBADD' exists only as a per-target variable.  *Note
1403 Program and Library Variables::.
1405 \x1f
1406 File: automake.info,  Node: renamed objects,  Next: Per-Object Flags,  Prev: Flag Variables Ordering,  Up: FAQ
1408 27.7 Why are object files sometimes renamed?
1409 ============================================
1411 This happens when per-target compilation flags are used.  Object files
1412 need to be renamed just in case they would clash with object files
1413 compiled from the same sources, but with different flags.  Consider the
1414 following example.
1416      bin_PROGRAMS = true false
1417      true_SOURCES = generic.c
1418      true_CPPFLAGS = -DEXIT_CODE=0
1419      false_SOURCES = generic.c
1420      false_CPPFLAGS = -DEXIT_CODE=1
1421    Obviously the two programs are built from the same source, but it
1422 would be bad if they shared the same object, because `generic.o' cannot
1423 be built with both `-DEXIT_CODE=0' _and_ `-DEXIT_CODE=1'.  Therefore
1424 `automake' outputs rules to build two different objects:
1425 `true-generic.o' and `false-generic.o'.
1427    `automake' doesn't actually look whether source files are shared to
1428 decide if it must rename objects.  It will just rename all objects of a
1429 target as soon as it sees per-target compilation flags are used.
1431    It's OK to share object files when per-target compilation flags are
1432 not used.  For instance, `true' and `false' will both use `version.o'
1433 in the following example.
1435      AM_CPPFLAGS = -DVERSION=1.0
1436      bin_PROGRAMS = true false
1437      true_SOURCES = true.c version.c
1438      false_SOURCES = false.c version.c
1440    Note that the renaming of objects is also affected by the
1441 `_SHORTNAME' variable (*note Program and Library Variables::).
1443 \x1f
1444 File: automake.info,  Node: Per-Object Flags,  Next: Multiple Outputs,  Prev: renamed objects,  Up: FAQ
1446 27.8 Per-Object Flags Emulation
1447 ===============================
1449      One of my source files needs to be compiled with different flags.  How
1450      do I do?
1452    Automake supports per-program and per-library compilation flags (see
1453 *Note Program and Library Variables:: and *Note Flag Variables
1454 Ordering::).  With this you can define compilation flags that apply to
1455 all files compiled for a target.  For instance, in
1457      bin_PROGRAMS = foo
1458      foo_SOURCES = foo.c foo.h bar.c bar.h main.c
1459      foo_CFLAGS = -some -flags
1461 `foo-foo.o', `foo-bar.o', and `foo-main.o' will all be compiled with
1462 `-some -flags'.  (If you wonder about the names of these object files,
1463 see *Note renamed objects::.)  Note that `foo_CFLAGS' gives the flags
1464 to use when compiling all the C sources of the _program_ `foo', it has
1465 nothing to do with `foo.c' or `foo-foo.o' specifically.
1467    What if `foo.c' needs to be compiled into `foo.o' using some
1468 specific flags, that none of the other files require?  Obviously
1469 per-program flags are not directly applicable here.  Something like
1470 per-object flags are expected, i.e., flags that would be used only when
1471 creating `foo-foo.o'.  Automake does not support that, however this is
1472 easy to simulate using a library that contains only that object, and
1473 compiling this library with per-library flags.
1475      bin_PROGRAMS = foo
1476      foo_SOURCES = bar.c bar.h main.c
1477      foo_CFLAGS = -some -flags
1478      foo_LDADD = libfoo.a
1479      noinst_LIBRARIES = libfoo.a
1480      libfoo_a_SOURCES = foo.c foo.h
1481      libfoo_a_CFLAGS = -some -other -flags
1483    Here `foo-bar.o' and `foo-main.o' will all be compiled with `-some
1484 -flags', while `libfoo_a-foo.o' will be compiled using `-some -other
1485 -flags'.  Eventually, all three objects will be linked to form `foo'.
1487    This trick can also be achieved using Libtool convenience libraries,
1488 for instance `noinst_LTLIBRARIES = libfoo.la' (*note Libtool
1489 Convenience Libraries::).
1491    Another tempting idea to implement per-object flags is to override
1492 the compile rules `automake' would output for these files.  Automake
1493 will not define a rule for a target you have defined, so you could
1494 think about defining the `foo-foo.o: foo.c' rule yourself.  We
1495 recommend against this, because this is error prone.  For instance, if
1496 you add such a rule to the first example, it will break the day you
1497 decide to remove `foo_CFLAGS' (because `foo.c' will then be compiled as
1498 `foo.o' instead of `foo-foo.o', *note renamed objects::).  Also in
1499 order to support dependency tracking, the two `.o'/`.obj' extensions,
1500 and all the other flags variables involved in a compilation, you will
1501 end up modifying a copy of the rule previously output by `automake' for
1502 this file.  If a new release of Automake generates a different rule,
1503 your copy will need to be updated by hand.
1505 \x1f
1506 File: automake.info,  Node: Multiple Outputs,  Next: Hard-Coded Install Paths,  Prev: Per-Object Flags,  Up: FAQ
1508 27.9 Handling Tools that Produce Many Outputs
1509 =============================================
1511 This section describes a `make' idiom that can be used when a tool
1512 produces multiple output files.  It is not specific to Automake and can
1513 be used in ordinary `Makefile's.
1515    Suppose we have a program called `foo' that will read one file
1516 called `data.foo' and produce two files named `data.c' and `data.h'.
1517 We want to write a `Makefile' rule that captures this one-to-two
1518 dependency.
1520    The naive rule is incorrect:
1522      # This is incorrect.
1523      data.c data.h: data.foo
1524              foo data.foo
1526 What the above rule really says is that `data.c' and `data.h' each
1527 depend on `data.foo', and can each be built by running `foo data.foo'.
1528 In other words it is equivalent to:
1530      # We do not want this.
1531      data.c: data.foo
1532              foo data.foo
1533      data.h: data.foo
1534              foo data.foo
1536 which means that `foo' can be run twice.  Usually it will not be run
1537 twice, because `make' implementations are smart enough to check for the
1538 existence of the second file after the first one has been built; they
1539 will therefore detect that it already exists.  However there are a few
1540 situations where it can run twice anyway:
1542    * The most worrying case is when running a parallel `make'.  If
1543      `data.c' and `data.h' are built in parallel, two `foo data.foo'
1544      commands will run concurrently.  This is harmful.
1546    * Another case is when the dependency (here `data.foo') is (or
1547      depends upon) a phony target.
1549    A solution that works with parallel `make' but not with phony
1550 dependencies is the following:
1552      data.c data.h: data.foo
1553              foo data.foo
1554      data.h: data.c
1556 The above rules are equivalent to
1558      data.c: data.foo
1559              foo data.foo
1560      data.h: data.foo data.c
1561              foo data.foo
1562    therefore a parallel `make' will have to serialize the builds of
1563 `data.c' and `data.h', and will detect that the second is no longer
1564 needed once the first is over.
1566    Using this pattern is probably enough for most cases.  However it
1567 does not scale easily to more output files (in this scheme all output
1568 files must be totally ordered by the dependency relation), so we will
1569 explore a more complicated solution.
1571    Another idea is to write the following:
1573      # There is still a problem with this one.
1574      data.c: data.foo
1575              foo data.foo
1576      data.h: data.c
1578 The idea is that `foo data.foo' is run only when `data.c' needs to be
1579 updated, but we further state that `data.h' depends upon `data.c'.
1580 That way, if `data.h' is required and `data.foo' is out of date, the
1581 dependency on `data.c' will trigger the build.
1583    This is almost perfect, but suppose we have built `data.h' and
1584 `data.c', and then we erase `data.h'.  Then, running `make data.h' will
1585 not rebuild `data.h'.  The above rules just state that `data.c' must be
1586 up-to-date with respect to `data.foo', and this is already the case.
1588    What we need is a rule that forces a rebuild when `data.h' is
1589 missing.  Here it is:
1591      data.c: data.foo
1592              foo data.foo
1593      data.h: data.c
1594      ## Recover from the removal of $@
1595              @if test -f $@; then :; else \
1596                rm -f data.c; \
1597                $(MAKE) $(AM_MAKEFLAGS) data.c; \
1598              fi
1600    The above scheme can be extended to handle more outputs and more
1601 inputs.  One of the outputs is selected to serve as a witness to the
1602 successful completion of the command, it depends upon all inputs, and
1603 all other outputs depend upon it.  For instance, if `foo' should
1604 additionally read `data.bar' and also produce `data.w' and `data.x', we
1605 would write:
1607      data.c: data.foo data.bar
1608              foo data.foo data.bar
1609      data.h data.w data.x: data.c
1610      ## Recover from the removal of $@
1611              @if test -f $@; then :; else \
1612                rm -f data.c; \
1613                $(MAKE) $(AM_MAKEFLAGS) data.c; \
1614              fi
1616    However there are now two minor problems in this setup.  One is
1617 related to the timestamp ordering of `data.h', `data.w', `data.x', and
1618 `data.c'.  The other one is a race condition if a parallel `make'
1619 attempts to run multiple instances of the recover block at once.
1621    Let us deal with the first problem.  `foo' outputs four files, but
1622 we do not know in which order these files are created.  Suppose that
1623 `data.h' is created before `data.c'.  Then we have a weird situation.
1624 The next time `make' is run, `data.h' will appear older than `data.c',
1625 the second rule will be triggered, a shell will be started to execute
1626 the `if...fi' command, but actually it will just execute the `then'
1627 branch, that is: nothing.  In other words, because the witness we
1628 selected is not the first file created by `foo', `make' will start a
1629 shell to do nothing each time it is run.
1631    A simple riposte is to fix the timestamps when this happens.
1633      data.c: data.foo data.bar
1634              foo data.foo data.bar
1635      data.h data.w data.x: data.c
1636              @if test -f $@; then \
1637                touch $@; \
1638              else \
1639      ## Recover from the removal of $@
1640                rm -f data.c; \
1641                $(MAKE) $(AM_MAKEFLAGS) data.c; \
1642              fi
1644    Another solution is to use a different and dedicated file as witness,
1645 rather than using any of `foo''s outputs.
1647      data.stamp: data.foo data.bar
1648              @rm -f data.tmp
1649              @touch data.tmp
1650              foo data.foo data.bar
1651              @mv -f data.tmp $@
1652      data.c data.h data.w data.x: data.stamp
1653      ## Recover from the removal of $@
1654              @if test -f $@; then :; else \
1655                rm -f data.stamp; \
1656                $(MAKE) $(AM_MAKEFLAGS) data.stamp; \
1657              fi
1659    `data.tmp' is created before `foo' is run, so it has a timestamp
1660 older than output files output by `foo'.  It is then renamed to
1661 `data.stamp' after `foo' has run, because we do not want to update
1662 `data.stamp' if `foo' fails.
1664    This solution still suffers from the second problem: the race
1665 condition in the recover rule.  If, after a successful build, a user
1666 erases `data.c' and `data.h', and runs `make -j', then `make' may start
1667 both recover rules in parallel.  If the two instances of the rule
1668 execute `$(MAKE) $(AM_MAKEFLAGS) data.stamp' concurrently the build is
1669 likely to fail (for instance, the two rules will create `data.tmp', but
1670 only one can rename it).
1672    Admittedly, such a weird situation does not arise during ordinary
1673 builds.  It occurs only when the build tree is mutilated.  Here
1674 `data.c' and `data.h' have been explicitly removed without also
1675 removing `data.stamp' and the other output files.  `make clean; make'
1676 will always recover from these situations even with parallel makes, so
1677 you may decide that the recover rule is solely to help non-parallel
1678 make users and leave things as-is.  Fixing this requires some locking
1679 mechanism to ensure only one instance of the recover rule rebuilds
1680 `data.stamp'.  One could imagine something along the following lines.
1682      data.c data.h data.w data.x: data.stamp
1683      ## Recover from the removal of $@
1684              @if test -f $@; then :; else \
1685                trap 'rm -rf data.lock data.stamp 1 2 13 15; \
1686      ## mkdir is a portable test-and-set
1687                if mkdir data.lock 2>/dev/null; then \
1688      ## This code is being executed by the first process.
1689                  rm -f data.stamp; \
1690                  $(MAKE) $(AM_MAKEFLAGS) data.stamp; \
1691                else \
1692      ## This code is being executed by the follower processes.
1693      ## Wait until the first process is done.
1694                  while test -d data.lock; do sleep 1; done; \
1695      ## Succeed if and only if the first process succeeded.
1696                  test -f data.stamp; exit $$?; \
1697                fi; \
1698              fi
1700    Using a dedicated witness, like `data.stamp', is very handy when the
1701 list of output files is not known beforehand.  As an illustration,
1702 consider the following rules to compile many `*.el' files into `*.elc'
1703 files in a single command.  It does not matter how `ELFILES' is defined
1704 (as long as it is not empty: empty targets are not accepted by POSIX).
1706      ELFILES = one.el two.el three.el ...
1707      ELCFILES = $(ELFILES:=c)
1709      elc-stamp: $(ELFILES)
1710              @rm -f elc-temp
1711              @touch elc-temp
1712              $(elisp_comp) $(ELFILES)
1713              @mv -f elc-temp $@
1715      $(ELCFILES): elc-stamp
1716      ## Recover from the removal of $@
1717              @if test -f $@; then :; else \
1718                trap 'rm -rf elc-lock elc-stamp' 1 2 13 15; \
1719                if mkdir elc-lock 2>/dev/null; then \
1720      ## This code is being executed by the first process.
1721                  rm -f elc-stamp; \
1722                  $(MAKE) $(AM_MAKEFLAGS) elc-stamp; \
1723                  rmdir elc-lock; \
1724                else \
1725      ## This code is being executed by the follower processes.
1726      ## Wait until the first process is done.
1727                  while test -d elc-lock; do sleep 1; done; \
1728      ## Succeed if and only if the first process succeeded.
1729                  test -f elc-stamp; exit $$?; \
1730                fi; \
1731              fi
1733    For completeness it should be noted that GNU `make' is able to
1734 express rules with multiple output files using pattern rules (*note
1735 Pattern Rule Examples: (make)Pattern Examples.).  We do not discuss
1736 pattern rules here because they are not portable, but they can be
1737 convenient in packages that assume GNU `make'.
1739 \x1f
1740 File: automake.info,  Node: Hard-Coded Install Paths,  Prev: Multiple Outputs,  Up: FAQ
1742 27.10 Installing to Hard-Coded Locations
1743 ========================================
1745      My package needs to install some configuration file.  I tried to use
1746      the following rule, but `make distcheck' fails.  Why?
1747           # Do not do this.
1748           install-data-local:
1749                   $(INSTALL_DATA) $(srcdir)/afile $(DESTDIR)/etc/afile
1751      My package needs to populate the installation directory of another
1752      package at install-time.  I can easily compute that installation
1753      directory in `configure', but if I install files therein,
1754      `make distcheck' fails.  How else should I do?
1756    These two setups share their symptoms: `make distcheck' fails
1757 because they are installing files to hard-coded paths.  In the later
1758 case the path is not really hard-coded in the package, but we can
1759 consider it to be hard-coded in the system (or in whichever tool that
1760 supplies the path).  As long as the path does not use any of the
1761 standard directory variables (`$(prefix)', `$(bindir)', `$(datadir)',
1762 etc.), the effect will be the same: user-installations are impossible.
1764    When a (non-root) user wants to install a package, he usually has no
1765 right to install anything in `/usr' or `/usr/local'.  So he does
1766 something like `./configure --prefix ~/usr' to install package in his
1767 own `~/usr' tree.
1769    If a package attempts to install something to some hard-coded path
1770 (e.g., `/etc/afile'), regardless of this `--prefix' setting, then the
1771 installation will fail.  `make distcheck' performs such a `--prefix'
1772 installation, hence it will fail too.
1774    Now, there are some easy solutions.
1776    The above `install-data-local' example for installing `/etc/afile'
1777 would be better replaced by
1779      sysconf_DATA = afile
1781 by default `sysconfdir' will be `$(prefix)/etc', because this is what
1782 the GNU Standards require.  When such a package is installed on a FHS
1783 compliant system, the installer will have to set `--sysconfdir=/etc'.
1784 As the maintainer of the package you should not be concerned by such
1785 site policies: use the appropriate standard directory variable to
1786 install your files so that installer can easily redefine these
1787 variables to match their site conventions.
1789    Installing files that should be used by another package, is slightly
1790 more involved.  Let's take an example and assume you want to install
1791 shared library that is a Python extension module.  If you ask Python
1792 where to install the library, it will answer something like this:
1794      % python -c 'from distutils import sysconfig;
1795                   print sysconfig.get_python_lib(1,0)'
1796      /usr/lib/python2.3/site-packages
1798    If you indeed use this absolute path to install your shared library,
1799 non-root users will not be able to install the package, hence distcheck
1800 fails.
1802    Let's do better.  The `sysconfig.get_python_lib()' function actually
1803 accepts a third argument that will replace Python's installation prefix.
1805      % python -c 'from distutils import sysconfig;
1806                   print sysconfig.get_python_lib(1,0,"${exec_prefix}")'
1807      ${exec_prefix}/lib/python2.3/site-packages
1809    You can also use this new path.  If you do
1810    * root users can install your package with the same `--prefix' as
1811      Python (you get the behavior of the previous attempt)
1813    * non-root users can install your package too, they will have the
1814      extension module in a place that is not searched by Python but they
1815      can work around this using environment variables (and if you
1816      installed scripts that use this shared library, it's easy to tell
1817      Python were to look in the beginning of your script, so the script
1818      works in both cases).
1820    The `AM_PATH_PYTHON' macro uses similar commands to define
1821 `$(pythondir)' and `$(pyexecdir)' (*note Python::).
1823    Of course not all tools are as advanced as Python regarding that
1824 substitution of PREFIX.  So another strategy is to figure the part of
1825 the of the installation directory that must be preserved.  For
1826 instance, here is how `AM_PATH_LISPDIR' (*note Emacs Lisp::) computes
1827 `$(lispdir)':
1829      $EMACS -batch -q -eval '(while load-path
1830        (princ (concat (car load-path) "\n"))
1831        (setq load-path (cdr load-path)))' >conftest.out
1832      lispdir=`sed -n
1833        -e 's,/$,,'
1834        -e '/.*\/lib\/x*emacs\/site-lisp$/{
1835              s,.*/lib/\(x*emacs/site-lisp\)$,${libdir}/\1,;p;q;
1836            }'
1837        -e '/.*\/share\/x*emacs\/site-lisp$/{
1838              s,.*/share/\(x*emacs/site-lisp\),${datarootdir}/\1,;p;q;
1839            }'
1840        conftest.out`
1842    I.e., it just picks the first directory that looks like
1843 `*/lib/*emacs/site-lisp' or `*/share/*emacs/site-lisp' in the search
1844 path of emacs, and then substitutes `${libdir}' or `${datadir}'
1845 appropriately.
1847    The emacs case looks complicated because it processes a list and
1848 expect two possible layouts, otherwise it's easy, and the benefit for
1849 non-root users are really worth the extra `sed' invocation.
1851 \x1f
1852 File: automake.info,  Node: History,  Next: Copying This Manual,  Prev: FAQ,  Up: Top
1854 28 History of Automake
1855 **********************
1857 This chapter presents various aspects of the history of Automake.  The
1858 exhausted reader can safely skip it; this will be more of interest to
1859 nostalgic people, or to those curious to learn about the evolution of
1860 Automake.
1862 * Menu:
1864 * Timeline::                    The Automake story.
1865 * Dependency Tracking Evolution::  Evolution of Automatic Dependency Tracking
1866 * Releases::                    Statistics about Automake Releases
1868 \x1f
1869 File: automake.info,  Node: Timeline,  Next: Dependency Tracking Evolution,  Up: History
1871 28.1 Timeline
1872 =============
1874 1994-09-19 First CVS commit.
1875      If we can trust the CVS repository, David J. MacKenzie (djm)
1876      started working on Automake (or AutoMake, as it was spelt then)
1877      this Monday.
1879      The first version of the `automake' script looks as follows.
1881           #!/bin/sh
1883           status=0
1885           for makefile
1886           do
1887             if test ! -f ${makefile}.am; then
1888               echo "automake: ${makefile}.am: No such honkin' file"
1889               status=1
1890               continue
1891             fi
1893             exec 4> ${makefile}.in
1895           done
1897      From this you can already see that Automake will be about reading
1898      `*.am' file and producing `*.in' files.  You cannot see anything
1899      else, but if you also know that David is the one who created
1900      Autoconf two years before you can guess the rest.
1902      Several commits follow, and by the end of the day Automake is
1903      reported to work for GNU fileutils and GNU m4.
1905      The modus operandi is the one that is still used today: variables
1906      assignments in `Makefile.am' files trigger injections of precanned
1907      `Makefile' fragments into the generated `Makefile.in'.  The use of
1908      `Makefile' fragments was inspired by the 4.4BSD `make' and include
1909      files, however Automake aims to be portable and to conform to the
1910      GNU standards for `Makefile' variables and targets.
1912      At this point, the most recent release of Autoconf is version 1.11,
1913      and David is preparing to release Autoconf 2.0 in late October.
1914      As a matter of fact, he will barely touch Automake after September.
1916 1994-11-05 David MacKenzie's last commit.
1917      At this point Automake is a 200 line portable shell script, plus
1918      332 lines of `Makefile' fragments.  In the `README', David states
1919      his ambivalence between "portable shell" and "more appropriate
1920      language":
1922           I wrote it keeping in mind the possibility of it becoming an
1923           Autoconf macro, so it would run at configure-time.  That
1924           would slow configuration down a bit, but allow users to
1925           modify the Makefile.am without needing to fetch the AutoMake
1926           package.  And, the Makefile.in files wouldn't need to be
1927           distributed.  But all of AutoMake would.  So I might
1928           reimplement AutoMake in Perl, m4, or some other more
1929           appropriate language.
1931      Automake is described as "an experimental Makefile generator".
1932      There is no documentation.  Adventurous users are referred to the
1933      examples and patches needed to use Automake with GNU m4 1.3,
1934      fileutils 3.9, time 1.6, and development versions of find and
1935      indent.
1937      These examples seem to have been lost.  However at the time of
1938      writing (10 years later in September, 2004) the FSF still
1939      distributes a package that uses this version of Automake: check
1940      out GNU termutils 2.0.
1942 1995-11-12 Tom Tromey's first commit.
1943      After one year of inactivity, Tom Tromey takes over the package.
1944      Tom was working on GNU cpio back then, and doing this just for fun,
1945      having trouble finding a project to contribute to.  So while
1946      hacking he wanted to bring the `Makefile.in' up to GNU standards.
1947      This was hard, and one day he saw Automake on
1948      `ftp://alpha.gnu.org/', grabbed it and tried it out.
1950      Tom didn't talk to djm about it until later, just to make sure he
1951      didn't mind if he made a release.  He did a bunch of early
1952      releases to the Gnits folks.
1954      Gnits was (and still is) totally informal, just a few GNU friends
1955      who Franc,ois Pinard knew, who were all interested in making a
1956      common infrastructure for GNU projects, and shared a similar
1957      outlook on how to do it.  So they were able to make some progress.
1958      It came along with Autoconf and extensions thereof, and then
1959      Automake from David and Tom (who were both gnitsians).  One of
1960      their ideas was to write a document paralleling the GNU standards,
1961      that was more strict in some ways and more detailed.  They never
1962      finished the GNITS standards, but the ideas mostly made their way
1963      into Automake.
1965 1995-11-23 Automake 0.20
1966      Besides introducing automatic dependency tracking (*note
1967      Dependency Tracking Evolution::), this version also supplies a
1968      9-page manual.
1970      At this time `aclocal' and `AM_INIT_AUTOMAKE' did not exist, so
1971      many things had to be done by hand.  For instance, here is what a
1972      configure.in (this is the former name of the `configure.ac' we use
1973      today) must contain in order to use Automake 0.20:
1975           PACKAGE=cpio
1976           VERSION=2.3.911
1977           AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
1978           AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
1979           AC_SUBST(PACKAGE)
1980           AC_SUBST(VERSION)
1981           AC_ARG_PROGRAM
1982           AC_PROG_INSTALL
1984      (Today all of the above is achieved by `AC_INIT' and
1985      `AM_INIT_AUTOMAKE'.)
1987      Here is how programs are specified in `Makefile.am':
1989           PROGRAMS = hello
1990           hello_SOURCES = hello.c
1992      This looks pretty much like what we do today, except the
1993      `PROGRAMS' variable has no directory prefix specifying where
1994      `hello' should be installed: all programs are installed in
1995      `$(bindir)'.  `LIBPROGRAMS' can be used to specify programs that
1996      must be built but not installed (it is called `noinst_PROGRAMS'
1997      nowadays).
1999      Programs can be built conditionally using `AC_SUBST'itutions:
2001           PROGRAMS = @progs@
2002           AM_PROGRAMS = foo bar baz
2004      (`AM_PROGRAMS' has since then been renamed to `EXTRA_PROGRAMS'.)
2006      Similarly scripts, static libraries, and data can built and
2007      installed using the `LIBRARIES', `SCRIPTS', and `DATA' variables.
2008      However `LIBRARIES' were treated a bit specially in that Automake
2009      did automatically supply the `lib' and `.a' prefixes.  Therefore
2010      to build `libcpio.a', one had to write
2012           LIBRARIES = cpio
2013           cpio_SOURCES = ...
2015      Extra files to distribute must be listed in `DIST_OTHER' (the
2016      ancestor of `EXTRA_DIST').  Also extra directories that are to be
2017      distributed should appear in `DIST_SUBDIRS', but the manual
2018      describes this as a temporary ugly hack (today extra directories
2019      should also be listed in `EXTRA_DIST', and `DIST_SUBDIRS' is used
2020      for another purpose, *note Conditional Subdirectories::).
2022 1995-11-26 Automake 0.21
2023      In less time that it takes to cook a frozen pizza, Tom rewrites
2024      Automake using Perl.  At this time Perl 5 is only one year old, and
2025      Perl 4.036 is in use at many sites.  Supporting several Perl
2026      versions has been a source of problems through the whole history
2027      of Automake.
2029      If you never used Perl 4, imagine Perl 5 without objects, without
2030      `my' variables (only dynamically scoped `local' variables),
2031      without function prototypes, with function calls that needs to be
2032      prefixed with `&', etc.  Traces of this old style can still be
2033      found in today's `automake'.
2035 1995-11-28 Automake 0.22
2036 1995-11-29 Automake 0.23
2037      Bug fixes.
2039 1995-12-08 Automake 0.24
2040 1995-12-10 Automake 0.25
2041      Releases are raining.  0.24 introduces the uniform naming scheme we
2042      use today, i.e., `bin_PROGRAMS' instead of `PROGRAMS',
2043      `noinst_LIBRARIES' instead of `LIBLIBRARIES', etc.  (However
2044      `EXTRA_PROGRAMS' does not exist yet, `AM_PROGRAMS' is still in
2045      use; and `TEXINFOS' and `MANS' still have no directory prefixes.)
2046      Adding support for prefixes like that was one of the major ideas
2047      in automake; it has lasted pretty well.
2049      AutoMake is renamed to Automake (Tom seems to recall it was
2050      Franc,ois Pinard's doing).
2052      0.25 fixes a Perl 4 portability bug.
2054 1995-12-18 Jim Meyering starts using Automake in GNU Textutils.
2056 1995-12-31 Franc,ois Pinard starts using Automake in GNU tar.
2058 1996-01-03 Automake 0.26
2059 1996-01-03 Automake 0.27
2060      Of the many change and suggestions sent by Franc,ois Pinard and
2061      included in 0.26, the most important is perhaps the advise that to
2062      ease customization a user rule or variable definition should always
2063      override an Automake rule or definition.
2065      Gordon Matzigkeit and Jim Meyering are two other early contributors
2066      that have been sending fixes.
2068      0.27 fixes yet another Perl 4 portability bug.
2070 1996-01-13 Automake 0.28
2071      Automake starts scanning `configure.in' for `LIBOBJS' support.
2072      This is an important step because until this version Automake did
2073      only know about the `Makefile.am's it processed.  `configure.in'
2074      was Autoconf's world and the link between Autoconf and Automake
2075      had to be done by the `Makefile.am' author.  For instance, if
2076      `config.h' was generated by `configure', it was the package
2077      maintainer's responsibility to define the `CONFIG_HEADER' variable
2078      in each `Makefile.am'.
2080      Succeeding releases will rely more and more on scanning
2081      `configure.in' to better automate the Autoconf integration.
2083      0.28 also introduces the `AUTOMAKE_OPTIONS' variable and the
2084      `--gnu' and `--gnits' options, the latter being stricter.
2086 1996-02-07 Automake 0.29
2087      Thanks to `configure.in' scanning, `CONFIG_HEADER' is gone, and
2088      rebuild rules for `configure'-generated file are automatically
2089      output.
2091      `TEXINFOS' and `MANS' converted to the uniform naming scheme.
2093 1996-02-24 Automake 0.30
2094      The test suite is born.  It contains 9 tests.  From now on test
2095      cases will be added pretty regularly (*note Releases::), and this
2096      proved to be really helpful later on.
2098      `EXTRA_PROGRAMS' finally replaces `AM_PROGRAMS'.
2100      All the third-party Autoconf macros, written mostly by Franc,ois
2101      Pinard (and later Jim Meyering), are distributed in Automake's
2102      hand-written `aclocal.m4' file.  Package maintainers are expected
2103      to extract the necessary macros from this file.  (In previous
2104      version you had to copy and paste them from the manual...)
2106 1996-03-11 Automake 0.31
2107      The test suite in 0.30 was run via a long `check-local' rule.  Upon
2108      Ulrich Drepper's suggestion, 0.31 makes it an Automake rule output
2109      whenever the `TESTS' variable is defined.
2111      `DIST_OTHER' is renamed to `EXTRA_DIST', and the `check_' prefix
2112      is introduced.  The syntax is now the same as today.
2114 1996-03-15 Gordon Matzigkeit starts writing libtool.
2116 1996-04-27 Automake 0.32
2117      `-hook' targets are introduced; an idea from Dieter Baron.
2119      `*.info' files, which were output in the build directory are now
2120      built in the source directory, because they are distributed.  It
2121      seems these files like to move back and forth as that will happen
2122      again in future versions.
2124 1996-05-18 Automake 0.33
2125      Gord Matzigkeit's main two contributions:
2127         * very preliminary libtool support
2129         * the distcheck rule
2131      Although they were very basic at this point, these are probably
2132      among the top features for Automake today.
2134      Jim Meyering also provides the infamous `jm_MAINTAINER_MODE',
2135      since then renamed to `AM_MAINTAINER_MODE' and abandoned by its
2136      author (*note maintainer-mode::).
2138 1996-05-28 Automake 1.0
2139      After only six months of heavy development, the automake script is
2140      3134 lines long, plus 973 lines of `Makefile' fragments.  The
2141      package has 30 pages of documentation, and 38 test cases.
2142      `aclocal.m4' contains 4 macros.
2144      From now on and until version 1.4, new releases will occur at a
2145      rate of about one a year.  1.1 did not exist, actually 1.1b to
2146      1.1p have been the name of beta releases for 1.2.  This is the
2147      first time Automake uses suffix letters to designate beta
2148      releases, an habit that lasts.
2150 1996-10-10 Kevin Dalley packages Automake 1.0 for Debian GNU/Linux.
2152 1996-11-26 David J. MacKenzie releases Autoconf 2.12.
2153      Between June and October, the Autoconf development is almost
2154      staled.  Roland McGrath has been working at the beginning of the
2155      year.  David comes back in November to release 2.12, but he won't
2156      touch Autoconf anymore after this year, and Autoconf then really
2157      stagnates.  The desolate Autoconf `ChangeLog' for 1997 lists only
2158      7 commits.
2160 1997-02-28 <automake@gnu.ai.mit.edu> list alive
2161      The mailing list is announced as follows:
2162           I've created the "automake" mailing list.  It is
2163           "automake@gnu.ai.mit.edu".  Administrivia, as always, to
2164           automake-request@gnu.ai.mit.edu.
2166           The charter of this list is discussion of automake, autoconf, and
2167           other configuration/portability tools (e.g., libtool).  It is expected
2168           that discussion will range from pleas for help all the way up to
2169           patches.
2171           This list is archived on the FSF machines.  Offhand I don't know if
2172           you can get the archive without an account there.
2174           This list is open to anybody who wants to join.  Tell all your
2175           friends!
2176           -- Tom Tromey
2178      Before that people were discussing Automake privately, on the Gnits
2179      mailing list (which is not public either), and less frequently on
2180      `gnu.misc.discuss'.
2182      `gnu.ai.mit.edu' is now `gnu.org', in case you never noticed.  The
2183      archives of the early years of the `automake@gnu.org' list have
2184      been lost, so today it is almost impossible to find traces of
2185      discussions that occurred before 1999.  This has been annoying
2186      more than once, as such discussions can be useful to understand
2187      the rationale behind a piece of uncommented code that was
2188      introduced back then.
2190 1997-06-22 Automake 1.2
2191      Automake developments continues, and more and more new Autoconf
2192      macros are required.  Distributing them in `aclocal.m4' and
2193      requiring people to browse this file to extract the relevant
2194      macros becomes uncomfortable.  Ideally, some of them should be
2195      contributed to Autoconf so that they can be used directly, however
2196      Autoconf is currently inactive.  Automake 1.2 consequently
2197      introduces `aclocal' (`aclocal' was actually started on
2198      1996-07-28), a tool that automatically constructs an `aclocal.m4'
2199      file from a repository of third-party macros.  Because Autoconf has
2200      stalled, Automake also becomes a kind of repository for such
2201      third-party macros, even macros completely unrelated to Automake
2202      (for instance macros that fix broken Autoconf macros).
2204      The 1.2 release contains 20 macros, among which the
2205      `AM_INIT_AUTOMAKE' macro that simplifies the creation of
2206      `configure.in'.
2208      Libtool is fully supported using `*_LTLIBRARIES'.
2210      The missing script is introduced by Franc,ois Pinard; it is meant
2211      to be a better solution than `AM_MAINTAINER_MODE' (*note
2212      maintainer-mode::).
2214      Conditionals support was implemented by Ian Lance Taylor.  At the
2215      time, Tom and Ian were working on an internal project at Cygnus.
2216      They were using ILU, which is pretty similar to CORBA.  They
2217      wanted to integrate ILU into their build, which was all
2218      `configure'-based, and Ian thought that adding conditionals to
2219      `automake' was simpler than doing all the work in `configure'
2220      (which was the standard at the time).  So this was actually funded
2221      by Cygnus.
2223      This very useful but tricky feature will take a lot of time to
2224      stabilize.  (At the time this text is written, there are still
2225      primaries that have not been updated to support conditional
2226      definitions in Automake 1.9.)
2228      The `automake' script has almost doubled: 6089 lines of Perl, plus
2229      1294 lines of `Makefile' fragments.
2231 1997-07-08 Gordon Matzigkeit releases Libtool 1.0.
2233 1998-04-05 Automake 1.3
2234      This is a small advance compared to 1.2.  It add support for
2235      assembly, and preliminary support for Java.
2237      Perl 5.004_04 is out, but fixes to support Perl 4 are still
2238      regularly submitted whenever Automake breaks it.
2240 1998-09-06 `sourceware.cygnus.com' is on-line.
2241      Sourceware was setup by Jason Molenda to host open source projects.
2243 1998-09-19  Automake CVS repository moved to `sourceware.cygnus.com'
2244 1998-10-26  `sourceware.cygnus.com' announces it hosts Automake
2245      Automake is now hosted on `sourceware.cygnus.com'.  It has a
2246      publicly accessible CVS repository.  This CVS repository is a copy
2247      of the one Tom was using on his machine, which in turn is based on
2248      a copy of the CVS repository of David MacKenzie.  This is why we
2249      still have to full source history.  (Automake is still on
2250      Sourceware today, but the host has been renamed to
2251      `sources.redhat.com'.)
2253      The oldest file in the administrative directory of the CVS
2254      repository that was created on Sourceware is dated 1998-09-19,
2255      while the announcement that `automake' and `autoconf' had joined
2256      `sourceware' was made on 1998-10-26.  They were among the first
2257      projects to be hosted there.
2259      The heedful reader will have noticed Automake was exactly
2260      4-year-old on 1998-09-19.
2262 1999-01-05 Ben Elliston releases Autoconf 2.13.
2264 1999-01-14 Automake 1.4
2265      This release adds support for Fortran 77 and for the `include'
2266      statement.  Also, `+=' assignments are introduced, but it is still
2267      quite easy to fool Automake when mixing this with conditionals.
2269      These two releases, Automake 1.4 and Autoconf 2.13 makes a duo that
2270      will be used together for years.
2272      `automake' is 7228 lines, plus 1591 lines of Makefile fragment, 20
2273      macros (some 1.3 macros were finally contributed back to
2274      Autoconf), 197 test cases, and 51 pages of documentation.
2276 1999-03-27 The `user-dep-branch' is created on the CVS repository.
2277      This implements a new dependency tracking schemed that should be
2278      able to handle automatic dependency tracking using any compiler
2279      (not just gcc) and any make (not just GNU `make').  In addition,
2280      the new scheme should be more reliable than the old one, as
2281      dependencies are generated on the end user's machine.  Alexandre
2282      Oliva creates depcomp for this purpose.
2284      *Note Dependency Tracking Evolution::, for more details about the
2285      evolution of automatic dependency tracking in Automake.
2287 1999-11-21 The `user-dep-branch' is merged into the main trunk.
2288      This was a huge problem since we also had patches going in on the
2289      trunk.  The merge took a long time and was very painful.
2291 2000-05-10
2292      Since September 1999 and until 2003, Akim Demaille will be
2293      zealously revamping Autoconf.
2295           I think the next release should be called "3.0".
2296           Let's face it: you've basically rewritten autoconf.
2297           Every weekend there are 30 new patches.
2298           I don't see how we could call this "2.15" with a straight
2299           face.
2300           - Tom Tromey on <autoconf@gnu.org>
2302      Actually Akim works like a submarine: he will pile up patches
2303      while he works off-line during the weekend, and flush them in
2304      batch when he resurfaces on Monday.
2306 2001-01-24
2307      On this Wednesday, Autoconf 2.49c, the last beta before Autoconf
2308      2.50 is out, and Akim has to find something to do during his
2309      week-end :)
2311 2001-01-28
2312      Akim sends a batch of 14 patches to <automake@gnu.org>.
2314           Aiieeee!  I was dreading the day that the Demaillator turned
2315           his sights on automake... and now it has arrived! - Tom Tromey
2317      It's only the beginning: in two months he will send 192 patches.
2318      Then he would slow down so Tom can catch up and review all this.
2319      Initially Tom actually read all these patches, then he probably
2320      trustingly answered OK to most of them, and finally gave up and
2321      let Akim apply whatever he wanted.  There was no way to keep up
2322      with that patch rate.
2324           Anyway the patch below won't apply since it predates Akim's
2325           sourcequake; I have yet to figure where the relevant passage
2326           has been moved :) - Alexandre Duret-Lutz
2328      All these patches were sent to and discussed on
2329      <automake@gnu.org>, so subscribed users were literally drown in
2330      technical mails.  Eventually, the <automake-patches@gnu.org>
2331      mailing list was created in May.
2333      Year after year, Automake had drifted away from its initial design:
2334      construct `Makefile.in' by assembling various `Makefile'
2335      fragments.  In 1.4, lots of `Makefile' rules are being emitted at
2336      various places in the `automake' script itself; this does not help
2337      ensuring a consistent treatment of these rules (for instance
2338      making sure that user-defined rules override Automake's own rules).
2339      One of Akim's goal was moving all these hard-coded rules to
2340      separate `Makefile' fragments, so the logic could be centralized
2341      in a `Makefile' fragment processor.
2343      Another significant contribution of Akim is the interface with the
2344      "trace" feature of Autoconf.  The way to scan `configure.in' at
2345      this time was to read the file and grep the various macro of
2346      interest to Automake.  Doing so could break in many unexpected
2347      ways; automake could miss some definition (for instance
2348      `AC_SUBST([$1], [$2])' where the arguments are known only when M4
2349      is run), or conversely it could detect some macro that was not
2350      expanded (because it is called conditionally).  In the CVS version
2351      of Autoconf, Akim had implemented the `--trace' option, which
2352      provides accurate information about where macros are actually
2353      called and with what arguments.  Akim will equip Automake with a
2354      second `configure.in' scanner that uses this `--trace' interface.
2355      Since it was not sensible to drop the Autoconf 2.13 compatibility
2356      yet, this experimental scanner was only used when an environment
2357      variable was set, the traditional grep-scanner being still the
2358      default.
2360 2001-04-25 Gary V. Vaughan releases Libtool 1.4
2361      It has been more than two years since Automake 1.4, CVS Automake
2362      has suffered lot's of heavy changes and still is not ready for
2363      release.  Libtool 1.4 had to be distributed with a patch against
2364      Automake 1.4.
2366 2001-05-08 Automake 1.4-p1
2367 2001-05-24 Automake 1.4-p2
2368      Gary V. Vaughan, the principal Libtool maintainer, makes a "patch
2369      release" of Automake:
2371           The main purpose of this release is to have a stable automake
2372           which is compatible with the latest stable libtool.
2374      The release also contains obvious fixes for bugs in Automake 1.4,
2375      some of which were reported almost monthly.
2377 2001-05-21 Akim Demaille releases Autoconf 2.50
2379 2001-06-07 Automake 1.4-p3
2380 2001-06-10 Automake 1.4-p4
2381 2001-07-15 Automake 1.4-p5
2382      Gary continues his patch-release series.  These also add support
2383      for some new Autoconf 2.50 idioms.  Essentially, Autoconf now
2384      advocates `configure.ac' over `configure.in', and it introduces a
2385      new syntax for `AC_OUTPUT'ing files.
2387 2001-08-23 Automake 1.5
2388      A major and long-awaited release, that comes more than two years
2389      after 1.4.  It brings many changes, among which:
2390         * The new dependency tracking scheme that uses `depcomp'.
2391           Aside from the improvement on the dependency tracking itself
2392           (*note Dependency Tracking Evolution::), this also
2393           streamlines the use of automake generated `Makefile.in's as
2394           the `Makefile.in's used during development are now the same
2395           as those used in distributions.  Before that the
2396           `Makefile.in's generated for maintainers required GNU `make'
2397           and GCC, they were different from the portable `Makefile'
2398           generated for distribution; this was causing some confusion.
2400         * Support for per-target compilation flags.
2402         * Support for reference to files in subdirectories in most
2403           `Makefile.am' variables.
2405         * Introduction of the `dist_', `nodist_', and `nobase_'
2406           prefixes.
2408         * Perl 4 support is finally dropped.
2410      1.5 did broke several packages that worked with 1.4.  Enough so
2411      that Linux distributions could not easily install the new Automake
2412      version without breaking many of the packages for which they had
2413      to run `automake'.
2415      Some of these breakages were effectively bugs that would
2416      eventually be fixed in the next release.  However, a lot of damage
2417      was caused by some changes made deliberately to render Automake
2418      stricter on some setup we did consider bogus.  For instance, `make
2419      distcheck' was improved to check that `make uninstall' did remove
2420      all the files `make install' installed, that `make distclean' did
2421      not omit some file, and that a VPATH build would work even if the
2422      source directory was read-only.  Similarly, Automake now rejects
2423      multiple definitions of the same variable (because that would mix
2424      very badly with conditionals), and `+=' assignments with no
2425      previous definition.  Because these changes all occurred suddenly
2426      after 1.4 had been established for more than two years, it hurt
2427      users.
2429      To make matter worse, meanwhile Autoconf (now at version 2.52) was
2430      facing similar troubles, for similar reasons.
2432 2002-03-05 Automake 1.6
2433      This release introduced versioned installation (*note API
2434      versioning::).  This was mainly pushed by Havoc Pennington, taking
2435      the GNOME source tree as motive: due to incompatibilities between
2436      the autotools it's impossible for the GNOME packages to switch to
2437      Autoconf 2.53 and Automake 1.5 all at once, so they are currently
2438      stuck with Autoconf 2.13 and Automake 1.4.
2440      The idea was to call this version `automake-1.6', call all its
2441      bug-fix versions identically, and switch to `automake-1.7' for the
2442      next release that adds new features or changes some rules.  This
2443      scheme implies maintaining a bug-fix branch in addition to the
2444      development trunk, which means more work from the maintainer, but
2445      providing regular bug-fix releases proved to be really worthwhile.
2447      Like 1.5, 1.6 also introduced a bunch of incompatibilities, meant
2448      or not.  Perhaps the more annoying was the dependence on the newly
2449      released Autoconf 2.53.  Autoconf seemed to have stabilized enough
2450      since its explosive 2.50 release, and included changes required to
2451      fix some bugs in Automake.  In order to upgrade to Automake 1.6,
2452      people now had to upgrade Autoconf too; for some packages it was
2453      no picnic.
2455      While versioned installation helped people to upgrade, it also
2456      unfortunately allowed people not to upgrade.  At the time of
2457      writing, some Linux distributions are shipping packages for
2458      Automake 1.4, 1.5, 1.6, 1.7, 1.8, and 1.9.  Most of these still
2459      install 1.4 by default.  Some distribution also call 1.4 the
2460      "stable" version, and present "1.9" as the development version;
2461      this does not really makes sense since 1.9 is way more solid than
2462      1.4.  All this does not help the newcomer.
2464 2002-04-11 Automake 1.6.1
2465      1.6, and the upcoming 1.4-p6 release were the last release by Tom.
2466      This one and those following will be handled by Alexandre
2467      Duret-Lutz.  Tom is still around, and will be there until about
2468      1.7, but his interest into Automake is drifting away towards
2469      projects like `gcj'.
2471      Alexandre has been using Automake since 2000, and started to
2472      contribute mostly on Akim's incitement (Akim and Alexandre have
2473      been working in the same room from 1999 to 2002).  In 2001 and
2474      2002 he had a lot of free time to enjoy hacking Automake.
2476 2002-06-14 Automake 1.6.2
2478 2002-07-28 Automake 1.6.3
2479 2002-07-28 Automake 1.4-p6
2480      Two releases on the same day.  1.6.3 is a bug-fix release.
2482      Tom Tromey backported the versioned installation mechanism on the
2483      1.4 branch, so that Automake 1.6.x and Automake 1.4-p6 could be
2484      installed side by side.  Another request from the GNOME folks.
2486 2002-09-25 Automake 1.7
2487      This release switches to the new `configure.ac' scanner Akim was
2488      experimenting in 1.5.
2490 2002-10-16 Automake 1.7.1
2491 2002-12-06 Automake 1.7.2
2492 2003-02-20 Automake 1.7.3
2493 2003-04-23 Automake 1.7.4
2494 2003-05-18 Automake 1.7.5
2495 2003-07-10 Automake 1.7.6
2496 2003-09-07 Automake 1.7.7
2497 2003-10-07 Automake 1.7.8
2498      Many bug-fix releases.  1.7 lasted because the development version
2499      (upcoming 1.8) was suffering some major internal revamping.
2501 2003-10-26 Automake on screen
2502      Episode 49, `Repercussions', in the third season of the `Alias' TV
2503      show is first aired.
2505      Marshall, one of the character, is working on a computer virus
2506      that he has to modify before it gets into the wrong hands or
2507      something like that.  The screenshots you see do not show any
2508      program code, they show a `Makefile.in' `generated by automake'...
2510 2003-11-09 Automake 1.7.9
2512 2003-12-10 Automake 1.8
2513      The most striking update is probably that of `aclocal'.
2515      `aclocal' now uses `m4_include' in the produced `aclocal.m4' when
2516      the included macros are already distributed with the package (an
2517      idiom used in many packages), which reduces code duplication.
2518      Many people liked that, but in fact this change was really
2519      introduced to fix a bug in rebuild rules: `Makefile.in' must be
2520      rebuilt whenever a dependency of `configure' changes, but all the
2521      `m4' files included in `aclocal.m4' where unknown from `automake'.
2522      Now `automake' can just trace the `m4_include's to discover the
2523      dependencies.
2525      `aclocal' also starts using the `--trace' Autoconf option in order
2526      to discover used macros more accurately.  This will turn out to be
2527      very tricky (later releases will improve this) as people had
2528      devised many ways to cope with the limitation of previous
2529      `aclocal' versions, notably using handwritten `m4_include's:
2530      `aclocal' must make sure not to redefine a rule that is already
2531      included by such statement.
2533      Automake also has seen its guts rewritten.  Although this rewriting
2534      took a lot of efforts, it is only apparent to the users in that
2535      some constructions previously disallowed by the implementation now
2536      work nicely.  Conditionals, Locations, Variable and Rule
2537      definitions, Options: these items on which Automake works have
2538      been rewritten as separate Perl modules, and documented.
2540 2004-01-11 Automake 1.8.1
2541 2004-01-12 Automake 1.8.2
2542 2004-03-07 Automake 1.8.3
2543 2004-04-25 Automake 1.8.4
2544 2004-05-16 Automake 1.8.5
2546 2004-07-28 Automake 1.9
2547      This release tries to simplify the compilation rules it outputs to
2548      reduce the size of the Makefile.  The complaint initially come from
2549      the libgcj developers.  Their `Makefile.in' generated with
2550      Automake 1.4 and custom build rules (1.4 did not support compiled
2551      Java) is 250KB.  The one generated by 1.8 was over 9MB!  1.9 gets
2552      it down to 1.2MB.
2554      Aside from this it contains mainly minor changes and bug-fixes.
2556 2004-08-11 Automake 1.9.1
2557 2004-09-19 Automake 1.9.2
2558      Automake has ten years.  This chapter of the manual was initially
2559      written for this occasion.
2562 \x1f
2563 File: automake.info,  Node: Dependency Tracking Evolution,  Next: Releases,  Prev: Timeline,  Up: History
2565 28.2 Dependency Tracking in Automake
2566 ====================================
2568 Over the years Automake has deployed three different dependency
2569 tracking methods.  Each method, including the current one, has had
2570 flaws of various sorts.  Here we lay out the different dependency
2571 tracking methods, their flaws, and their fixes.  We conclude with
2572 recommendations for tool writers, and by indicating future directions
2573 for dependency tracking work in Automake.
2575 28.2.1 First Take
2576 -----------------
2578 Description
2579 ...........
2581 Our first attempt at automatic dependency tracking was based on the
2582 method recommended by GNU `make'.  (*note Generating Prerequisites
2583 Automatically: (make)Automatic Prerequisites.)
2585    This version worked by precomputing dependencies ahead of time.  For
2586 each source file, it had a special `.P' file that held the
2587 dependencies.  There was a rule to generate a `.P' file by invoking the
2588 compiler appropriately.  All such `.P' files were included by the
2589 `Makefile', thus implicitly becoming dependencies of `Makefile'.
2591 Bugs
2592 ....
2594 This approach had several critical bugs.
2596    * The code to generate the `.P' file relied on `gcc'.  (A
2597      limitation, not technically a bug.)
2599    * The dependency tracking mechanism itself relied on GNU `make'.  (A
2600      limitation, not technically a bug.)
2602    * Because each `.P' file was a dependency of `Makefile', this meant
2603      that dependency tracking was done eagerly by `make'.  For
2604      instance, `make clean' would cause all the dependency files to be
2605      updated, and then immediately removed.  This eagerness also caused
2606      problems with some configurations; if a certain source file could
2607      not be compiled on a given architecture for some reason,
2608      dependency tracking would fail, aborting the entire build.
2610    * As dependency tracking was done as a pre-pass, compile times were
2611      doubled-the compiler had to be run twice per source file.
2613    * `make dist' re-ran `automake' to generate a `Makefile' that did
2614      not have automatic dependency tracking (and that was thus portable
2615      to any version of `make').  In order to do this portably, Automake
2616      had to scan the dependency files and remove any reference that was
2617      to a source file not in the distribution.  This process was
2618      error-prone.  Also, if `make dist' was run in an environment where
2619      some object file had a dependency on a source file that was only
2620      conditionally created, Automake would generate a `Makefile' that
2621      referred to a file that might not appear in the end user's build.
2622      A special, hacky mechanism was required to work around this.
2624 Historical Note
2625 ...............
2627 The code generated by Automake is often inspired by the `Makefile'
2628 style of a particular author.  In the case of the first implementation
2629 of dependency tracking, I believe the impetus and inspiration was Jim
2630 Meyering.  (I could be mistaken.  If you know otherwise feel free to
2631 correct me.)
2633 28.2.2 Dependencies As Side Effects
2634 -----------------------------------
2636 Description
2637 ...........
2639 The next refinement of Automake's automatic dependency tracking scheme
2640 was to implement dependencies as side effects of the compilation.  This
2641 was aimed at solving the most commonly reported problems with the first
2642 approach.  In particular we were most concerned with eliminating the
2643 weird rebuilding effect associated with make clean.
2645    In this approach, the `.P' files were included using the `-include'
2646 command, which let us create these files lazily.  This avoided the
2647 `make clean' problem.
2649    We only computed dependencies when a file was actually compiled.
2650 This avoided the performance penalty associated with scanning each file
2651 twice.  It also let us avoid the other problems associated with the
2652 first, eager, implementation.  For instance, dependencies would never
2653 be generated for a source file that was not compilable on a given
2654 architecture (because it in fact would never be compiled).
2656 Bugs
2657 ....
2659    * This approach also relied on the existence of `gcc' and GNU
2660      `make'.  (A limitation, not technically a bug.)
2662    * Dependency tracking was still done by the developer, so the
2663      problems from the first implementation relating to massaging of
2664      dependencies by `make dist' were still in effect.
2666    * This implementation suffered from the "deleted header file"
2667      problem.  Suppose a lazily-created `.P' file includes a dependency
2668      on a given header file, like this:
2670           maude.o: maude.c something.h
2672      Now suppose that the developer removes `something.h' and updates
2673      `maude.c' so that this include is no longer needed.  If he runs
2674      `make', he will get an error because there is no way to create
2675      `something.h'.
2677      We fixed this problem in a later release by further massaging the
2678      output of `gcc' to include a dummy dependency for each header file.
2680 28.2.3 Dependencies for the User
2681 --------------------------------
2683 Description
2684 ...........
2686 The bugs associated with `make dist', over time, became a real problem.
2687 Packages using Automake were being built on a large number of
2688 platforms, and were becoming increasingly complex.  Broken dependencies
2689 were distributed in "portable" `Makefile.in's, leading to user
2690 complaints.  Also, the requirement for `gcc' and GNU `make' was a
2691 constant source of bug reports.  The next implementation of dependency
2692 tracking aimed to remove these problems.
2694    We realized that the only truly reliable way to automatically track
2695 dependencies was to do it when the package itself was built.  This
2696 meant discovering a method portable to any version of make and any
2697 compiler.  Also, we wanted to preserve what we saw as the best point of
2698 the second implementation: dependency computation as a side effect of
2699 compilation.
2701    In the end we found that most modern make implementations support
2702 some form of include directive.  Also, we wrote a wrapper script that
2703 let us abstract away differences between dependency tracking methods for
2704 compilers.  For instance, some compilers cannot generate dependencies
2705 as a side effect of compilation.  In this case we simply have the
2706 script run the compiler twice.  Currently our wrapper script
2707 (`depcomp') knows about twelve different compilers (including a
2708 "compiler" that simply invokes `makedepend' and then the real compiler,
2709 which is assumed to be a standard Unix-like C compiler with no way to
2710 do dependency tracking).
2712 Bugs
2713 ....
2715    * Running a wrapper script for each compilation slows down the build.
2717    * Many users don't really care about precise dependencies.
2719    * This implementation, like every other automatic dependency tracking
2720      scheme in common use today (indeed, every one we've ever heard of),
2721      suffers from the "duplicated new header" bug.
2723      This bug occurs because dependency tracking tools, such as the
2724      compiler, only generate dependencies on the successful opening of a
2725      file, and not on every probe.
2727      Suppose for instance that the compiler searches three directories
2728      for a given header, and that the header is found in the third
2729      directory.  If the programmer erroneously adds a header file with
2730      the same name to the first directory, then a clean rebuild from
2731      scratch could fail (suppose the new header file is buggy), whereas
2732      an incremental rebuild will succeed.
2734      What has happened here is that people have a misunderstanding of
2735      what a dependency is.  Tool writers think a dependency encodes
2736      information about which files were read by the compiler.  However,
2737      a dependency must actually encode information about what the
2738      compiler tried to do.
2740      This problem is not serious in practice.  Programmers typically do
2741      not use the same name for a header file twice in a given project.
2742      (At least, not in C or C++.  This problem may be more troublesome
2743      in Java.)  This problem is easy to fix, by modifying dependency
2744      generators to record every probe, instead of every successful open.
2746    * Since automake generates dependencies as a side effect of
2747      compilation, there is a bootstrapping problem when header files
2748      are generated by running a program.  The problem is that, the
2749      first time the build is done, there is no way by default to know
2750      that the headers are required, so make might try to run a
2751      compilation for which the headers have not yet been built.
2753      This was also a problem in the previous dependency tracking
2754      implementation.
2756      The current fix is to use `BUILT_SOURCES' to list built headers
2757      (*note Sources::).  This causes them to be built before any other
2758      other build rules are run.  This is unsatisfactory as a general
2759      solution, however in practice it seems sufficient for most actual
2760      programs.
2762    This code is used since Automake 1.5.
2764    In GCC 3.0, we managed to convince the maintainers to add special
2765 command-line options to help Automake more efficiently do its job.  We
2766 hoped this would let us avoid the use of a wrapper script when
2767 Automake's automatic dependency tracking was used with `gcc'.
2769    Unfortunately, this code doesn't quite do what we want.  In
2770 particular, it removes the dependency file if the compilation fails;
2771 we'd prefer that it instead only touch the file in any way if the
2772 compilation succeeds.
2774    Nevertheless, since Automake 1.7, when a recent `gcc' is detected at
2775 `configure' time, we inline the dependency-generation code and do not
2776 use the `depcomp' wrapper script.  This makes compilations faster for
2777 those using this compiler (probably our primary user base).  The
2778 counterpart is that because we have to encode two compilation rules in
2779 `Makefile' (with or without `depcomp'), the produced `Makefile's are
2780 larger.
2782 28.2.4 Techniques for Computing Dependencies
2783 --------------------------------------------
2785 There are actually several ways for a build tool like Automake to cause
2786 tools to generate dependencies.
2788 `makedepend'
2789      This was a commonly-used method in the past.  The idea is to run a
2790      special program over the source and have it generate dependency
2791      information.  Traditional implementations of `makedepend' are not
2792      completely precise; ordinarily they were conservative and
2793      discovered too many dependencies.
2795 The tool
2796      An obvious way to generate dependencies is to simply write the
2797      tool so that it can generate the information needed by the build
2798      tool.  This is also the most portable method.  Many compilers have
2799      an option to generate dependencies.  Unfortunately, not all tools
2800      provide such an option.
2802 The file system
2803      It is possible to write a special file system that tracks opens,
2804      reads, writes, etc, and then feed this information back to the
2805      build tool.  `clearmake' does this.  This is a very powerful
2806      technique, as it doesn't require cooperation from the tool.
2807      Unfortunately it is also very difficult to implement and also not
2808      practical in the general case.
2810 `LD_PRELOAD'
2811      Rather than use the file system, one could write a special library
2812      to intercept `open' and other syscalls.  This technique is also
2813      quite powerful, but unfortunately it is not portable enough for
2814      use in `automake'.
2816 28.2.5 Recommendations for Tool Writers
2817 ---------------------------------------
2819 We think that every compilation tool ought to be able to generate
2820 dependencies as a side effect of compilation.  Furthermore, at least
2821 while `make'-based tools are nearly universally in use (at least in the
2822 free software community), the tool itself should generate dummy
2823 dependencies for header files, to avoid the deleted header file bug.
2824 Finally, the tool should generate a dependency for each probe, instead
2825 of each successful file open, in order to avoid the duplicated new
2826 header bug.
2828 28.2.6 Future Directions for Automake's Dependency Tracking
2829 -----------------------------------------------------------
2831 Currently, only languages and compilers understood by Automake can have
2832 dependency tracking enabled.  We would like to see if it is practical
2833 (and worthwhile) to let this support be extended by the user to
2834 languages unknown to Automake.
2836 \x1f
2837 File: automake.info,  Node: Releases,  Prev: Dependency Tracking Evolution,  Up: History
2839 28.3 Release Statistics
2840 =======================
2842 The following table (inspired by `perlhist(1)') quantifies the
2843 evolution of Automake using these metrics:
2845 Date, Rel
2846      The date and version of the release.
2849      The number of lines of the `automake' script.
2852      The number of lines of the `aclocal' script.
2855      The number of lines of the `Perl' supporting modules.
2857 `*.am'
2858      The number of lines of the `Makefile' fragments.  The number in
2859      parenthesis is the number of files.
2862      The number of lines (and files) of Autoconf macros.
2865      The number of pages of the documentation (the Postscript version).
2868      The number of test cases in the test suite.
2870 Date         Rel      am     acl    pm     `*.am'      m4          doc   t
2871 ------------------------------------------------------------------------------- 
2872 1994-09-19   CVS      141                  299 (24)                      
2873 1994-11-05   CVS      208                  332 (28)                      
2874 1995-11-23   0.20     533                  458 (35)                9     
2875 1995-11-26   0.21     613                  480 (36)                11    
2876 1995-11-28   0.22     1116                 539 (38)                12    
2877 1995-11-29   0.23     1240                 541 (38)                12    
2878 1995-12-08   0.24     1462                 504 (33)                14    
2879 1995-12-10   0.25     1513                 511 (37)                15    
2880 1996-01-03   0.26     1706                 438 (36)                16    
2881 1996-01-03   0.27     1706                 438 (36)                16    
2882 1996-01-13   0.28     1964                 934 (33)                16    
2883 1996-02-07   0.29     2299                 936 (33)                17    
2884 1996-02-24   0.30     2544                 919 (32)    85 (1)      20    9
2885 1996-03-11   0.31     2877                 919 (32)    85 (1)      29    17
2886 1996-04-27   0.32     3058                 921 (31)    85 (1)      30    26
2887 1996-05-18   0.33     3110                 926 (31)    105 (1)     30    35
2888 1996-05-28   1.0      3134                 973 (32)    105 (1)     30    38
2889 1997-06-22   1.2      6089   385           1294 (36)   592 (20)    37    126
2890 1998-04-05   1.3      6415   422           1470 (39)   741 (23)    39    156
2891 1999-01-14   1.4      7240   426           1591 (40)   734 (20)    51    197
2892 2001-05-08   1.4-p1   7251   426           1591 (40)   734 (20)    51    197
2893 2001-05-24   1.4-p2   7268   439           1591 (40)   734 (20)    49    197
2894 2001-06-07   1.4-p3   7312   439           1591 (40)   734 (20)    49    197
2895 2001-06-10   1.4-p4   7321   439           1591 (40)   734 (20)    49    198
2896 2001-07-15   1.4-p5   7228   426           1596 (40)   734 (20)    51    198
2897 2001-08-23   1.5      8016   475    600    2654 (39)   1166 (29)   63    327
2898 2002-03-05   1.6      8465   475    1136   2732 (39)   1603 (27)   66    365
2899 2002-04-11   1.6.1    8544   475    1136   2741 (39)   1603 (27)   66    372
2900 2002-06-14   1.6.2    8575   475    1136   2800 (39)   1609 (27)   67    386
2901 2002-07-28   1.6.3    8600   475    1153   2809 (39)   1609 (27)   67    391
2902 2002-07-28   1.4-p6   7332   455           1596 (40)   735 (20)    49    197
2903 2002-09-25   1.7      9189   471    1790   2965 (39)   1606 (28)   73    430
2904 2002-10-16   1.7.1    9229   475    1790   2977 (39)   1606 (28)   73    437
2905 2002-12-06   1.7.2    9334   475    1790   2988 (39)   1606 (28)   77    445
2906 2003-02-20   1.7.3    9389   475    1790   3023 (39)   1651 (29)   84    448
2907 2003-04-23   1.7.4    9429   475    1790   3031 (39)   1644 (29)   85    458
2908 2003-05-18   1.7.5    9429   475    1790   3033 (39)   1645 (29)   85    459
2909 2003-07-10   1.7.6    9442   475    1790   3033 (39)   1660 (29)   85    461
2910 2003-09-07   1.7.7    9443   475    1790   3041 (39)   1660 (29)   90    467
2911 2003-10-07   1.7.8    9444   475    1790   3041 (39)   1660 (29)   90    468
2912 2003-11-09   1.7.9    9444   475    1790   3048 (39)   1660 (29)   90    468
2913 2003-12-10   1.8      7171   585    7730   3236 (39)   1666 (31)   104   521
2914 2004-01-11   1.8.1    7217   663    7726   3287 (39)   1686 (31)   104   525
2915 2004-01-12   1.8.2    7217   663    7726   3288 (39)   1686 (31)   104   526
2916 2004-03-07   1.8.3    7214   686    7735   3303 (39)   1695 (31)   111   530
2917 2004-04-25   1.8.4    7214   686    7736   3310 (39)   1701 (31)   112   531
2918 2004-05-16   1.8.5    7240   686    7736   3299 (39)   1701 (31)   112   533
2919 2004-07-28   1.9      7508   715    7794   3352 (40)   1812 (32)   115   551
2920 2004-08-11   1.9.1    7512   715    7794   3354 (40)   1812 (32)   115   552
2921 2004-09-19   1.9.2    7512   715    7794   3354 (40)   1812 (32)   132   554
2922 2004-11-01   1.9.3    7507   718    7804   3354 (40)   1812 (32)   134   556
2923 2004-12-18   1.9.4    7508   718    7856   3361 (40)   1811 (32)   140   560
2924 2005-02-13   1.9.5    7523   719    7859   3373 (40)   1453 (32)   142   562
2925 2005-07-10   1.9.6    7539   699    7867   3400 (40)   1453 (32)   144   570
2926 2006-10-15   1.10     7859   1072   8024   3512 (40)   1496 (34)   172   604
2928 \x1f
2929 File: automake.info,  Node: Copying This Manual,  Next: Indices,  Prev: History,  Up: Top
2931 Appendix A Copying This Manual
2932 ******************************
2934 * Menu:
2936 * GNU Free Documentation License::  License for copying this manual
2938 \x1f
2939 File: automake.info,  Node: GNU Free Documentation License,  Up: Copying This Manual
2941 A.1 GNU Free Documentation License
2942 ==================================
2944                       Version 1.2, November 2002
2946      Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
2947      51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA
2949      Everyone is permitted to copy and distribute verbatim copies
2950      of this license document, but changing it is not allowed.
2952   0. PREAMBLE
2954      The purpose of this License is to make a manual, textbook, or other
2955      functional and useful document "free" in the sense of freedom: to
2956      assure everyone the effective freedom to copy and redistribute it,
2957      with or without modifying it, either commercially or
2958      noncommercially.  Secondarily, this License preserves for the
2959      author and publisher a way to get credit for their work, while not
2960      being considered responsible for modifications made by others.
2962      This License is a kind of "copyleft", which means that derivative
2963      works of the document must themselves be free in the same sense.
2964      It complements the GNU General Public License, which is a copyleft
2965      license designed for free software.
2967      We have designed this License in order to use it for manuals for
2968      free software, because free software needs free documentation: a
2969      free program should come with manuals providing the same freedoms
2970      that the software does.  But this License is not limited to
2971      software manuals; it can be used for any textual work, regardless
2972      of subject matter or whether it is published as a printed book.
2973      We recommend this License principally for works whose purpose is
2974      instruction or reference.
2976   1. APPLICABILITY AND DEFINITIONS
2978      This License applies to any manual or other work, in any medium,
2979      that contains a notice placed by the copyright holder saying it
2980      can be distributed under the terms of this License.  Such a notice
2981      grants a world-wide, royalty-free license, unlimited in duration,
2982      to use that work under the conditions stated herein.  The
2983      "Document", below, refers to any such manual or work.  Any member
2984      of the public is a licensee, and is addressed as "you".  You
2985      accept the license if you copy, modify or distribute the work in a
2986      way requiring permission under copyright law.
2988      A "Modified Version" of the Document means any work containing the
2989      Document or a portion of it, either copied verbatim, or with
2990      modifications and/or translated into another language.
2992      A "Secondary Section" is a named appendix or a front-matter section
2993      of the Document that deals exclusively with the relationship of the
2994      publishers or authors of the Document to the Document's overall
2995      subject (or to related matters) and contains nothing that could
2996      fall directly within that overall subject.  (Thus, if the Document
2997      is in part a textbook of mathematics, a Secondary Section may not
2998      explain any mathematics.)  The relationship could be a matter of
2999      historical connection with the subject or with related matters, or
3000      of legal, commercial, philosophical, ethical or political position
3001      regarding them.
3003      The "Invariant Sections" are certain Secondary Sections whose
3004      titles are designated, as being those of Invariant Sections, in
3005      the notice that says that the Document is released under this
3006      License.  If a section does not fit the above definition of
3007      Secondary then it is not allowed to be designated as Invariant.
3008      The Document may contain zero Invariant Sections.  If the Document
3009      does not identify any Invariant Sections then there are none.
3011      The "Cover Texts" are certain short passages of text that are
3012      listed, as Front-Cover Texts or Back-Cover Texts, in the notice
3013      that says that the Document is released under this License.  A
3014      Front-Cover Text may be at most 5 words, and a Back-Cover Text may
3015      be at most 25 words.
3017      A "Transparent" copy of the Document means a machine-readable copy,
3018      represented in a format whose specification is available to the
3019      general public, that is suitable for revising the document
3020      straightforwardly with generic text editors or (for images
3021      composed of pixels) generic paint programs or (for drawings) some
3022      widely available drawing editor, and that is suitable for input to
3023      text formatters or for automatic translation to a variety of
3024      formats suitable for input to text formatters.  A copy made in an
3025      otherwise Transparent file format whose markup, or absence of
3026      markup, has been arranged to thwart or discourage subsequent
3027      modification by readers is not Transparent.  An image format is
3028      not Transparent if used for any substantial amount of text.  A
3029      copy that is not "Transparent" is called "Opaque".
3031      Examples of suitable formats for Transparent copies include plain
3032      ASCII without markup, Texinfo input format, LaTeX input format,
3033      SGML or XML using a publicly available DTD, and
3034      standard-conforming simple HTML, PostScript or PDF designed for
3035      human modification.  Examples of transparent image formats include
3036      PNG, XCF and JPG.  Opaque formats include proprietary formats that
3037      can be read and edited only by proprietary word processors, SGML or
3038      XML for which the DTD and/or processing tools are not generally
3039      available, and the machine-generated HTML, PostScript or PDF
3040      produced by some word processors for output purposes only.
3042      The "Title Page" means, for a printed book, the title page itself,
3043      plus such following pages as are needed to hold, legibly, the
3044      material this License requires to appear in the title page.  For
3045      works in formats which do not have any title page as such, "Title
3046      Page" means the text near the most prominent appearance of the
3047      work's title, preceding the beginning of the body of the text.
3049      A section "Entitled XYZ" means a named subunit of the Document
3050      whose title either is precisely XYZ or contains XYZ in parentheses
3051      following text that translates XYZ in another language.  (Here XYZ
3052      stands for a specific section name mentioned below, such as
3053      "Acknowledgements", "Dedications", "Endorsements", or "History".)
3054      To "Preserve the Title" of such a section when you modify the
3055      Document means that it remains a section "Entitled XYZ" according
3056      to this definition.
3058      The Document may include Warranty Disclaimers next to the notice
3059      which states that this License applies to the Document.  These
3060      Warranty Disclaimers are considered to be included by reference in
3061      this License, but only as regards disclaiming warranties: any other
3062      implication that these Warranty Disclaimers may have is void and
3063      has no effect on the meaning of this License.
3065   2. VERBATIM COPYING
3067      You may copy and distribute the Document in any medium, either
3068      commercially or noncommercially, provided that this License, the
3069      copyright notices, and the license notice saying this License
3070      applies to the Document are reproduced in all copies, and that you
3071      add no other conditions whatsoever to those of this License.  You
3072      may not use technical measures to obstruct or control the reading
3073      or further copying of the copies you make or distribute.  However,
3074      you may accept compensation in exchange for copies.  If you
3075      distribute a large enough number of copies you must also follow
3076      the conditions in section 3.
3078      You may also lend copies, under the same conditions stated above,
3079      and you may publicly display copies.
3081   3. COPYING IN QUANTITY
3083      If you publish printed copies (or copies in media that commonly
3084      have printed covers) of the Document, numbering more than 100, and
3085      the Document's license notice requires Cover Texts, you must
3086      enclose the copies in covers that carry, clearly and legibly, all
3087      these Cover Texts: Front-Cover Texts on the front cover, and
3088      Back-Cover Texts on the back cover.  Both covers must also clearly
3089      and legibly identify you as the publisher of these copies.  The
3090      front cover must present the full title with all words of the
3091      title equally prominent and visible.  You may add other material
3092      on the covers in addition.  Copying with changes limited to the
3093      covers, as long as they preserve the title of the Document and
3094      satisfy these conditions, can be treated as verbatim copying in
3095      other respects.
3097      If the required texts for either cover are too voluminous to fit
3098      legibly, you should put the first ones listed (as many as fit
3099      reasonably) on the actual cover, and continue the rest onto
3100      adjacent pages.
3102      If you publish or distribute Opaque copies of the Document
3103      numbering more than 100, you must either include a
3104      machine-readable Transparent copy along with each Opaque copy, or
3105      state in or with each Opaque copy a computer-network location from
3106      which the general network-using public has access to download
3107      using public-standard network protocols a complete Transparent
3108      copy of the Document, free of added material.  If you use the
3109      latter option, you must take reasonably prudent steps, when you
3110      begin distribution of Opaque copies in quantity, to ensure that
3111      this Transparent copy will remain thus accessible at the stated
3112      location until at least one year after the last time you
3113      distribute an Opaque copy (directly or through your agents or
3114      retailers) of that edition to the public.
3116      It is requested, but not required, that you contact the authors of
3117      the Document well before redistributing any large number of
3118      copies, to give them a chance to provide you with an updated
3119      version of the Document.
3121   4. MODIFICATIONS
3123      You may copy and distribute a Modified Version of the Document
3124      under the conditions of sections 2 and 3 above, provided that you
3125      release the Modified Version under precisely this License, with
3126      the Modified Version filling the role of the Document, thus
3127      licensing distribution and modification of the Modified Version to
3128      whoever possesses a copy of it.  In addition, you must do these
3129      things in the Modified Version:
3131        A. Use in the Title Page (and on the covers, if any) a title
3132           distinct from that of the Document, and from those of
3133           previous versions (which should, if there were any, be listed
3134           in the History section of the Document).  You may use the
3135           same title as a previous version if the original publisher of
3136           that version gives permission.
3138        B. List on the Title Page, as authors, one or more persons or
3139           entities responsible for authorship of the modifications in
3140           the Modified Version, together with at least five of the
3141           principal authors of the Document (all of its principal
3142           authors, if it has fewer than five), unless they release you
3143           from this requirement.
3145        C. State on the Title page the name of the publisher of the
3146           Modified Version, as the publisher.
3148        D. Preserve all the copyright notices of the Document.
3150        E. Add an appropriate copyright notice for your modifications
3151           adjacent to the other copyright notices.
3153        F. Include, immediately after the copyright notices, a license
3154           notice giving the public permission to use the Modified
3155           Version under the terms of this License, in the form shown in
3156           the Addendum below.
3158        G. Preserve in that license notice the full lists of Invariant
3159           Sections and required Cover Texts given in the Document's
3160           license notice.
3162        H. Include an unaltered copy of this License.
3164        I. Preserve the section Entitled "History", Preserve its Title,
3165           and add to it an item stating at least the title, year, new
3166           authors, and publisher of the Modified Version as given on
3167           the Title Page.  If there is no section Entitled "History" in
3168           the Document, create one stating the title, year, authors,
3169           and publisher of the Document as given on its Title Page,
3170           then add an item describing the Modified Version as stated in
3171           the previous sentence.
3173        J. Preserve the network location, if any, given in the Document
3174           for public access to a Transparent copy of the Document, and
3175           likewise the network locations given in the Document for
3176           previous versions it was based on.  These may be placed in
3177           the "History" section.  You may omit a network location for a
3178           work that was published at least four years before the
3179           Document itself, or if the original publisher of the version
3180           it refers to gives permission.
3182        K. For any section Entitled "Acknowledgements" or "Dedications",
3183           Preserve the Title of the section, and preserve in the
3184           section all the substance and tone of each of the contributor
3185           acknowledgements and/or dedications given therein.
3187        L. Preserve all the Invariant Sections of the Document,
3188           unaltered in their text and in their titles.  Section numbers
3189           or the equivalent are not considered part of the section
3190           titles.
3192        M. Delete any section Entitled "Endorsements".  Such a section
3193           may not be included in the Modified Version.
3195        N. Do not retitle any existing section to be Entitled
3196           "Endorsements" or to conflict in title with any Invariant
3197           Section.
3199        O. Preserve any Warranty Disclaimers.
3201      If the Modified Version includes new front-matter sections or
3202      appendices that qualify as Secondary Sections and contain no
3203      material copied from the Document, you may at your option
3204      designate some or all of these sections as invariant.  To do this,
3205      add their titles to the list of Invariant Sections in the Modified
3206      Version's license notice.  These titles must be distinct from any
3207      other section titles.
3209      You may add a section Entitled "Endorsements", provided it contains
3210      nothing but endorsements of your Modified Version by various
3211      parties--for example, statements of peer review or that the text
3212      has been approved by an organization as the authoritative
3213      definition of a standard.
3215      You may add a passage of up to five words as a Front-Cover Text,
3216      and a passage of up to 25 words as a Back-Cover Text, to the end
3217      of the list of Cover Texts in the Modified Version.  Only one
3218      passage of Front-Cover Text and one of Back-Cover Text may be
3219      added by (or through arrangements made by) any one entity.  If the
3220      Document already includes a cover text for the same cover,
3221      previously added by you or by arrangement made by the same entity
3222      you are acting on behalf of, you may not add another; but you may
3223      replace the old one, on explicit permission from the previous
3224      publisher that added the old one.
3226      The author(s) and publisher(s) of the Document do not by this
3227      License give permission to use their names for publicity for or to
3228      assert or imply endorsement of any Modified Version.
3230   5. COMBINING DOCUMENTS
3232      You may combine the Document with other documents released under
3233      this License, under the terms defined in section 4 above for
3234      modified versions, provided that you include in the combination
3235      all of the Invariant Sections of all of the original documents,
3236      unmodified, and list them all as Invariant Sections of your
3237      combined work in its license notice, and that you preserve all
3238      their Warranty Disclaimers.
3240      The combined work need only contain one copy of this License, and
3241      multiple identical Invariant Sections may be replaced with a single
3242      copy.  If there are multiple Invariant Sections with the same name
3243      but different contents, make the title of each such section unique
3244      by adding at the end of it, in parentheses, the name of the
3245      original author or publisher of that section if known, or else a
3246      unique number.  Make the same adjustment to the section titles in
3247      the list of Invariant Sections in the license notice of the
3248      combined work.
3250      In the combination, you must combine any sections Entitled
3251      "History" in the various original documents, forming one section
3252      Entitled "History"; likewise combine any sections Entitled
3253      "Acknowledgements", and any sections Entitled "Dedications".  You
3254      must delete all sections Entitled "Endorsements."
3256   6. COLLECTIONS OF DOCUMENTS
3258      You may make a collection consisting of the Document and other
3259      documents released under this License, and replace the individual
3260      copies of this License in the various documents with a single copy
3261      that is included in the collection, provided that you follow the
3262      rules of this License for verbatim copying of each of the
3263      documents in all other respects.
3265      You may extract a single document from such a collection, and
3266      distribute it individually under this License, provided you insert
3267      a copy of this License into the extracted document, and follow
3268      this License in all other respects regarding verbatim copying of
3269      that document.
3271   7. AGGREGATION WITH INDEPENDENT WORKS
3273      A compilation of the Document or its derivatives with other
3274      separate and independent documents or works, in or on a volume of
3275      a storage or distribution medium, is called an "aggregate" if the
3276      copyright resulting from the compilation is not used to limit the
3277      legal rights of the compilation's users beyond what the individual
3278      works permit.  When the Document is included in an aggregate, this
3279      License does not apply to the other works in the aggregate which
3280      are not themselves derivative works of the Document.
3282      If the Cover Text requirement of section 3 is applicable to these
3283      copies of the Document, then if the Document is less than one half
3284      of the entire aggregate, the Document's Cover Texts may be placed
3285      on covers that bracket the Document within the aggregate, or the
3286      electronic equivalent of covers if the Document is in electronic
3287      form.  Otherwise they must appear on printed covers that bracket
3288      the whole aggregate.
3290   8. TRANSLATION
3292      Translation is considered a kind of modification, so you may
3293      distribute translations of the Document under the terms of section
3294      4.  Replacing Invariant Sections with translations requires special
3295      permission from their copyright holders, but you may include
3296      translations of some or all Invariant Sections in addition to the
3297      original versions of these Invariant Sections.  You may include a
3298      translation of this License, and all the license notices in the
3299      Document, and any Warranty Disclaimers, provided that you also
3300      include the original English version of this License and the
3301      original versions of those notices and disclaimers.  In case of a
3302      disagreement between the translation and the original version of
3303      this License or a notice or disclaimer, the original version will
3304      prevail.
3306      If a section in the Document is Entitled "Acknowledgements",
3307      "Dedications", or "History", the requirement (section 4) to
3308      Preserve its Title (section 1) will typically require changing the
3309      actual title.
3311   9. TERMINATION
3313      You may not copy, modify, sublicense, or distribute the Document
3314      except as expressly provided for under this License.  Any other
3315      attempt to copy, modify, sublicense or distribute the Document is
3316      void, and will automatically terminate your rights under this
3317      License.  However, parties who have received copies, or rights,
3318      from you under this License will not have their licenses
3319      terminated so long as such parties remain in full compliance.
3321  10. FUTURE REVISIONS OF THIS LICENSE
3323      The Free Software Foundation may publish new, revised versions of
3324      the GNU Free Documentation License from time to time.  Such new
3325      versions will be similar in spirit to the present version, but may
3326      differ in detail to address new problems or concerns.  See
3327      `http://www.gnu.org/copyleft/'.
3329      Each version of the License is given a distinguishing version
3330      number.  If the Document specifies that a particular numbered
3331      version of this License "or any later version" applies to it, you
3332      have the option of following the terms and conditions either of
3333      that specified version or of any later version that has been
3334      published (not as a draft) by the Free Software Foundation.  If
3335      the Document does not specify a version number of this License,
3336      you may choose any version ever published (not as a draft) by the
3337      Free Software Foundation.
3339 A.1.1 ADDENDUM: How to use this License for your documents
3340 ----------------------------------------------------------
3342 To use this License in a document you have written, include a copy of
3343 the License in the document and put the following copyright and license
3344 notices just after the title page:
3346        Copyright (C)  YEAR  YOUR NAME.
3347        Permission is granted to copy, distribute and/or modify this document
3348        under the terms of the GNU Free Documentation License, Version 1.2
3349        or any later version published by the Free Software Foundation;
3350        with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
3351        Texts.  A copy of the license is included in the section entitled ``GNU
3352        Free Documentation License''.
3354    If you have Invariant Sections, Front-Cover Texts and Back-Cover
3355 Texts, replace the "with...Texts." line with this:
3357          with the Invariant Sections being LIST THEIR TITLES, with
3358          the Front-Cover Texts being LIST, and with the Back-Cover Texts
3359          being LIST.
3361    If you have Invariant Sections without Cover Texts, or some other
3362 combination of the three, merge those two alternatives to suit the
3363 situation.
3365    If your document contains nontrivial examples of program code, we
3366 recommend releasing these examples in parallel under your choice of
3367 free software license, such as the GNU General Public License, to
3368 permit their use in free software.
3370 \x1f
3371 File: automake.info,  Node: Indices,  Prev: Copying This Manual,  Up: Top
3373 Appendix B Indices
3374 ******************
3376 * Menu:
3378 * Macro Index::                 Index of Autoconf macros
3379 * Variable Index::              Index of Makefile variables
3380 * General Index::               General index
3382 \x1f
3383 File: automake.info,  Node: Macro Index,  Next: Variable Index,  Up: Indices
3385 B.1 Macro Index
3386 ===============
3388 \0\b[index\0\b]
3389 * Menu:
3391 * _AM_DEPENDENCIES:                      Private macros.      (line  12)
3392 * AC_CANONICAL_BUILD:                    Optional.            (line  11)
3393 * AC_CANONICAL_HOST:                     Optional.            (line  12)
3394 * AC_CANONICAL_TARGET:                   Optional.            (line  13)
3395 * AC_CONFIG_AUX_DIR <1>:                 Subpackages.         (line   6)
3396 * AC_CONFIG_AUX_DIR:                     Optional.            (line  19)
3397 * AC_CONFIG_FILES:                       Requirements.        (line  15)
3398 * AC_CONFIG_HEADERS:                     Optional.            (line  46)
3399 * AC_CONFIG_LIBOBJ_DIR <1>:              LIBOBJS.             (line  48)
3400 * AC_CONFIG_LIBOBJ_DIR:                  Optional.            (line  41)
3401 * AC_CONFIG_LINKS:                       Optional.            (line  55)
3402 * AC_CONFIG_SUBDIRS:                     Subpackages.         (line   6)
3403 * AC_DEFUN:                              Extending aclocal.   (line  33)
3404 * AC_F77_LIBRARY_LDFLAGS:                Optional.            (line  98)
3405 * AC_INIT:                               Public macros.       (line  25)
3406 * AC_LIBOBJ <1>:                         LIBOBJS.             (line  11)
3407 * AC_LIBOBJ <2>:                         LTLIBOBJS.           (line   6)
3408 * AC_LIBOBJ:                             Optional.            (line  65)
3409 * AC_LIBSOURCE <1>:                      LIBOBJS.             (line  17)
3410 * AC_LIBSOURCE:                          Optional.            (line  66)
3411 * AC_LIBSOURCES:                         Optional.            (line  67)
3412 * AC_OUTPUT:                             Requirements.        (line  15)
3413 * AC_PREREQ:                             Extending aclocal.   (line  33)
3414 * AC_PROG_CC_C_O:                        Public macros.       (line  80)
3415 * AC_PROG_CXX:                           Optional.            (line  85)
3416 * AC_PROG_F77:                           Optional.            (line  93)
3417 * AC_PROG_FC:                            Optional.            (line 104)
3418 * AC_PROG_LEX <1>:                       Public macros.       (line  86)
3419 * AC_PROG_LEX:                           Optional.            (line 119)
3420 * AC_PROG_LIBTOOL:                       Optional.            (line 109)
3421 * AC_PROG_OBJC:                          Optional.            (line  89)
3422 * AC_PROG_RANLIB:                        Optional.            (line  81)
3423 * AC_PROG_YACC:                          Optional.            (line 113)
3424 * AC_REQUIRE_AUX_FILE:                   Optional.            (line 123)
3425 * AC_SUBST:                              Optional.            (line 131)
3426 * AM_C_PROTOTYPES <1>:                   ANSI.                (line  34)
3427 * AM_C_PROTOTYPES <2>:                   Obsolete macros.     (line  13)
3428 * AM_C_PROTOTYPES:                       Optional.            (line 142)
3429 * AM_CONDITIONAL:                        Conditionals.        (line  11)
3430 * AM_CONFIG_HEADER:                      Obsolete macros.     (line  20)
3431 * AM_DEP_TRACK:                          Private macros.      (line  14)
3432 * AM_ENABLE_MULTILIB:                    Public macros.       (line   7)
3433 * AM_GNU_GETTEXT:                        Optional.            (line 146)
3434 * AM_GNU_GETTEXT_INTL_SUBDIR:            Optional.            (line 152)
3435 * AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL:  Obsolete macros.     (line  25)
3436 * AM_INIT_AUTOMAKE <1>:                  Public macros.       (line  16)
3437 * AM_INIT_AUTOMAKE:                      Requirements.        (line   6)
3438 * AM_MAINTAINER_MODE <1>:                maintainer-mode.     (line  36)
3439 * AM_MAINTAINER_MODE <2>:                Rebuilding.          (line   9)
3440 * AM_MAINTAINER_MODE:                    Optional.            (line 157)
3441 * AM_MAKE_INCLUDE:                       Private macros.      (line  20)
3442 * AM_OUTPUT_DEPENDENCY_COMMANDS:         Private macros.      (line  15)
3443 * AM_PATH_LISPDIR:                       Public macros.       (line  60)
3444 * AM_PATH_PYTHON:                        Python.              (line  29)
3445 * AM_PROG_AS:                            Public macros.       (line  75)
3446 * AM_PROG_CC_C_O:                        Public macros.       (line  80)
3447 * AM_PROG_GCJ:                           Public macros.       (line  91)
3448 * AM_PROG_INSTALL_STRIP:                 Private macros.      (line  25)
3449 * AM_PROG_LEX:                           Public macros.       (line  86)
3450 * AM_PROG_MKDIR_P:                       Obsolete macros.     (line  31)
3451 * AM_PROG_UPC:                           Public macros.       (line  96)
3452 * AM_SANITY_CHECK:                       Private macros.      (line  30)
3453 * AM_SET_DEPDIR:                         Private macros.      (line  13)
3454 * AM_SYS_POSIX_TERMIOS:                  Obsolete macros.     (line  53)
3455 * AM_WITH_DMALLOC:                       Public macros.       (line 102)
3456 * AM_WITH_REGEX:                         Public macros.       (line 107)
3457 * m4_include <1>:                        Dist.                (line  17)
3458 * m4_include:                            Optional.            (line 165)
3460 \x1f
3461 File: automake.info,  Node: Variable Index,  Next: General Index,  Prev: Macro Index,  Up: Indices
3463 B.2 Variable Index
3464 ==================
3466 \0\b[index\0\b]
3467 * Menu:
3469 * _DATA:                                 Data.                (line   6)
3470 * _HEADERS:                              Headers.             (line   6)
3471 * _LIBRARIES:                            A Library.           (line   6)
3472 * _LISP:                                 Emacs Lisp.          (line   6)
3473 * _LTLIBRARIES:                          Libtool Libraries.   (line   6)
3474 * _MANS:                                 Man pages.           (line   6)
3475 * _PROGRAMS <1>:                         Program Sources.     (line   6)
3476 * _PROGRAMS:                             Uniform.             (line  11)
3477 * _PYTHON:                               Python.              (line   6)
3478 * _SCRIPTS:                              Scripts.             (line   6)
3479 * _SOURCES <1>:                          Default _SOURCES.    (line   6)
3480 * _SOURCES:                              Program Sources.     (line  32)
3481 * _TEXINFOS:                             Texinfo.             (line   6)
3482 * ACLOCAL_AMFLAGS <1>:                   Rebuilding.          (line  12)
3483 * ACLOCAL_AMFLAGS:                       Local Macros.        (line  19)
3484 * ALLOCA <1>:                            LIBOBJS.             (line   6)
3485 * ALLOCA:                                LTLIBOBJS.           (line   6)
3486 * AM_CCASFLAGS:                          Assembly Support.    (line   9)
3487 * AM_CFLAGS:                             Program variables.   (line  36)
3488 * AM_CPPFLAGS <1>:                       Assembly Support.    (line   9)
3489 * AM_CPPFLAGS:                           Program variables.   (line  15)
3490 * AM_CXXFLAGS:                           C++ Support.         (line  22)
3491 * AM_ETAGSFLAGS:                         Tags.                (line  25)
3492 * AM_FCFLAGS:                            Fortran 9x Support.  (line  22)
3493 * AM_FFLAGS:                             Fortran 77 Support.  (line  22)
3494 * AM_GCJFLAGS:                           Java Support.        (line  24)
3495 * AM_INSTALLCHECK_STD_OPTIONS_EXEMPT:    Options.             (line 120)
3496 * AM_JAVACFLAGS:                         Java.                (line  36)
3497 * AM_LDFLAGS <1>:                        Program variables.   (line  46)
3498 * AM_LDFLAGS:                            Linking.             (line  10)
3499 * AM_LFLAGS:                             Yacc and Lex.        (line  56)
3500 * AM_LIBTOOLFLAGS:                       Libtool Flags.       (line   6)
3501 * AM_MAKEFLAGS:                          Subdirectories.      (line  29)
3502 * AM_MAKEINFOFLAGS:                      Texinfo.             (line 101)
3503 * AM_MAKEINFOHTMLFLAGS:                  Texinfo.             (line 102)
3504 * AM_OBJCFLAGS:                          Objective C Support. (line  22)
3505 * AM_RFLAGS:                             Fortran 77 Support.  (line  28)
3506 * AM_RUNTESTFLAGS:                       Tests.               (line  75)
3507 * AM_UPCFLAGS:                           Unified Parallel C Support.
3508                                                               (line  21)
3509 * AM_YFLAGS:                             Yacc and Lex.        (line  33)
3510 * ANSI2KNR:                              Obsolete macros.     (line  13)
3511 * AUTOCONF:                              Invoking Automake.   (line  28)
3512 * AUTOM4TE:                              Invoking aclocal.    (line  45)
3513 * AUTOMAKE_OPTIONS <1>:                  Options.             (line  11)
3514 * AUTOMAKE_OPTIONS <2>:                  Dependencies.        (line  34)
3515 * AUTOMAKE_OPTIONS <3>:                  ANSI.                (line  21)
3516 * AUTOMAKE_OPTIONS:                      Public macros.       (line  19)
3517 * bin_PROGRAMS:                          Program Sources.     (line   6)
3518 * bin_SCRIPTS:                           Scripts.             (line  18)
3519 * build_triplet:                         Optional.            (line  14)
3520 * BUILT_SOURCES:                         Sources.             (line  27)
3521 * CC:                                    Program variables.   (line  11)
3522 * CCAS <1>:                              Assembly Support.    (line   9)
3523 * CCAS:                                  Public macros.       (line  75)
3524 * CCASFLAGS <1>:                         Assembly Support.    (line   9)
3525 * CCASFLAGS:                             Public macros.       (line  75)
3526 * CFLAGS:                                Program variables.   (line  11)
3527 * check_:                                Uniform.             (line  74)
3528 * check_LTLIBRARIES:                     Libtool Convenience Libraries.
3529                                                               (line   6)
3530 * check_PROGRAMS <1>:                    Default _SOURCES.    (line  29)
3531 * check_PROGRAMS:                        Program Sources.     (line   6)
3532 * check_SCRIPTS:                         Scripts.             (line  18)
3533 * CLASSPATH_ENV:                         Java.                (line  45)
3534 * CLEANFILES:                            Clean.               (line  13)
3535 * COMPILE:                               Program variables.   (line  42)
3536 * CONFIG_STATUS_DEPENDENCIES:            Rebuilding.          (line  19)
3537 * CONFIGURE_DEPENDENCIES:                Rebuilding.          (line  19)
3538 * CPPFLAGS <1>:                          Assembly Support.    (line   9)
3539 * CPPFLAGS:                              Program variables.   (line  11)
3540 * CXX:                                   C++ Support.         (line  16)
3541 * CXXCOMPILE:                            C++ Support.         (line  25)
3542 * CXXFLAGS:                              C++ Support.         (line  19)
3543 * CXXLINK <1>:                           How the Linker is Chosen.
3544                                                               (line  12)
3545 * CXXLINK:                               C++ Support.         (line  29)
3546 * DATA <1>:                              Data.                (line   7)
3547 * DATA:                                  Uniform.             (line  79)
3548 * data_DATA:                             Data.                (line   9)
3549 * DEFS:                                  Program variables.   (line  11)
3550 * DEJATOOL:                              Tests.               (line  70)
3551 * DESTDIR <1>:                           Install.             (line  79)
3552 * DESTDIR:                               DESTDIR.             (line   6)
3553 * dist_ <1>:                             Dist.                (line  53)
3554 * dist_:                                 Alternative.         (line  30)
3555 * dist_lisp_LISP:                        Emacs Lisp.          (line  11)
3556 * dist_noinst_LISP:                      Emacs Lisp.          (line  11)
3557 * DIST_SUBDIRS <1>:                      Dist.                (line  41)
3558 * DIST_SUBDIRS:                          Conditional Subdirectories.
3559                                                               (line  84)
3560 * DISTCHECK_CONFIGURE_FLAGS:             Dist.                (line 117)
3561 * distcleancheck_listfiles <1>:          distcleancheck.      (line 115)
3562 * distcleancheck_listfiles:              Dist.                (line 111)
3563 * DISTCLEANFILES <1>:                    Dist.                (line 133)
3564 * DISTCLEANFILES:                        Clean.               (line  13)
3565 * distdir <1>:                           Third-Party Makefiles.
3566                                                               (line  25)
3567 * distdir:                               Dist.                (line  89)
3568 * distuninstallcheck_listfiles:          Dist.                (line 111)
3569 * DVIPS:                                 Texinfo.             (line 127)
3570 * EMACS:                                 Public macros.       (line  60)
3571 * ETAGS_ARGS:                            Tags.                (line  25)
3572 * ETAGSFLAGS:                            Tags.                (line  25)
3573 * EXPECT:                                Tests.               (line  70)
3574 * EXTRA_DIST:                            Dist.                (line  30)
3575 * EXTRA_maude_SOURCES:                   Program and Library Variables.
3576                                                               (line  53)
3577 * EXTRA_PROGRAMS:                        Conditional Programs.
3578                                                               (line  15)
3579 * F77:                                   Fortran 77 Support.  (line  16)
3580 * F77COMPILE:                            Fortran 77 Support.  (line  31)
3581 * F77LINK:                               How the Linker is Chosen.
3582                                                               (line  14)
3583 * FC:                                    Fortran 9x Support.  (line  16)
3584 * FCCOMPILE:                             Fortran 9x Support.  (line  25)
3585 * FCFLAGS:                               Fortran 9x Support.  (line  19)
3586 * FCLINK <1>:                            Fortran 9x Support.  (line  29)
3587 * FCLINK:                                How the Linker is Chosen.
3588                                                               (line  16)
3589 * FFLAGS:                                Fortran 77 Support.  (line  19)
3590 * FLIBS:                                 Mixing Fortran 77 With C and C++.
3591                                                               (line  21)
3592 * FLINK:                                 Fortran 77 Support.  (line  35)
3593 * GCJ:                                   Public macros.       (line  91)
3594 * GCJFLAGS <1>:                          Java Support.        (line  14)
3595 * GCJFLAGS:                              Public macros.       (line  91)
3596 * GCJLINK:                               How the Linker is Chosen.
3597                                                               (line  10)
3598 * GTAGS_ARGS:                            Tags.                (line  49)
3599 * GZIP_ENV:                              Dist.                (line  13)
3600 * HEADERS:                               Uniform.             (line  79)
3601 * host_triplet:                          Optional.            (line  14)
3602 * include_HEADERS:                       Headers.             (line   6)
3603 * INCLUDES:                              Program variables.   (line  30)
3604 * info_TEXINFOS:                         Texinfo.             (line   6)
3605 * JAVA:                                  Uniform.             (line  79)
3606 * JAVAC:                                 Java.                (line  29)
3607 * JAVACFLAGS:                            Java.                (line  32)
3608 * JAVAROOT:                              Java.                (line  41)
3609 * LDADD:                                 Linking.             (line  10)
3610 * LDFLAGS:                               Program variables.   (line  11)
3611 * LFLAGS:                                Yacc and Lex.        (line  56)
3612 * lib_LIBRARIES:                         A Library.           (line   6)
3613 * lib_LTLIBRARIES:                       Libtool Libraries.   (line   6)
3614 * libexec_PROGRAMS:                      Program Sources.     (line   6)
3615 * libexec_SCRIPTS:                       Scripts.             (line  18)
3616 * LIBOBJS <1>:                           LIBOBJS.             (line   6)
3617 * LIBOBJS <2>:                           LTLIBOBJS.           (line   6)
3618 * LIBOBJS:                               Optional.            (line  68)
3619 * LIBRARIES:                             Uniform.             (line  79)
3620 * LIBS:                                  Program variables.   (line  11)
3621 * LIBTOOLFLAGS:                          Libtool Flags.       (line   6)
3622 * LINK <1>:                              How the Linker is Chosen.
3623                                                               (line  22)
3624 * LINK:                                  Program variables.   (line  51)
3625 * LISP:                                  Uniform.             (line  79)
3626 * lisp_LISP:                             Emacs Lisp.          (line   6)
3627 * lispdir:                               Public macros.       (line  60)
3628 * localstate_DATA:                       Data.                (line   9)
3629 * LTALLOCA <1>:                          LIBOBJS.             (line   6)
3630 * LTALLOCA:                              LTLIBOBJS.           (line   6)
3631 * LTLIBOBJS <1>:                         LIBOBJS.             (line   6)
3632 * LTLIBOBJS:                             LTLIBOBJS.           (line   6)
3633 * MAINTAINERCLEANFILES:                  Clean.               (line  13)
3634 * MAKE:                                  Subdirectories.      (line  29)
3635 * MAKEINFO:                              Texinfo.             (line  85)
3636 * MAKEINFOFLAGS:                         Texinfo.             (line  95)
3637 * MAKEINFOHTML:                          Texinfo.             (line  91)
3638 * man_MANS:                              Man pages.           (line   6)
3639 * MANS:                                  Uniform.             (line  79)
3640 * maude_AR:                              Program and Library Variables.
3641                                                               (line  68)
3642 * maude_CCASFLAGS:                       Program and Library Variables.
3643                                                               (line 160)
3644 * maude_CFLAGS:                          Program and Library Variables.
3645                                                               (line 161)
3646 * maude_CPPFLAGS:                        Program and Library Variables.
3647                                                               (line 162)
3648 * maude_CXXFLAGS:                        Program and Library Variables.
3649                                                               (line 163)
3650 * maude_DEPENDENCIES <1>:                Program and Library Variables.
3651                                                               (line 118)
3652 * maude_DEPENDENCIES:                    Linking.             (line  41)
3653 * maude_FFLAGS:                          Program and Library Variables.
3654                                                               (line 164)
3655 * maude_GCJFLAGS:                        Program and Library Variables.
3656                                                               (line 165)
3657 * maude_LDADD <1>:                       Program and Library Variables.
3658                                                               (line  86)
3659 * maude_LDADD:                           Linking.             (line  17)
3660 * maude_LDFLAGS <1>:                     Program and Library Variables.
3661                                                               (line 106)
3662 * maude_LDFLAGS:                         Linking.             (line  37)
3663 * maude_LFLAGS:                          Program and Library Variables.
3664                                                               (line 166)
3665 * maude_LIBADD <1>:                      Program and Library Variables.
3666                                                               (line  78)
3667 * maude_LIBADD:                          A Library.           (line  26)
3668 * maude_LIBTOOLFLAGS <1>:                Program and Library Variables.
3669                                                               (line 111)
3670 * maude_LIBTOOLFLAGS:                    Libtool Flags.       (line   6)
3671 * maude_LINK:                            Program and Library Variables.
3672                                                               (line 149)
3673 * maude_OBJCFLAGS:                       Program and Library Variables.
3674                                                               (line 167)
3675 * maude_RFLAGS:                          Program and Library Variables.
3676                                                               (line 168)
3677 * maude_SHORTNAME:                       Program and Library Variables.
3678                                                               (line 201)
3679 * maude_SOURCES:                         Program and Library Variables.
3680                                                               (line  18)
3681 * maude_UPCFLAGS:                        Program and Library Variables.
3682                                                               (line 169)
3683 * maude_YFLAGS:                          Program and Library Variables.
3684                                                               (line 170)
3685 * mkdir_p:                               Obsolete macros.     (line  31)
3686 * MKDIR_P:                               Obsolete macros.     (line  31)
3687 * MOSTLYCLEANFILES:                      Clean.               (line  13)
3688 * nobase_:                               Alternative.         (line  24)
3689 * nodist_ <1>:                           Dist.                (line  53)
3690 * nodist_:                               Alternative.         (line  30)
3691 * noinst_:                               Uniform.             (line  69)
3692 * noinst_HEADERS:                        Headers.             (line   6)
3693 * noinst_LIBRARIES:                      A Library.           (line   6)
3694 * noinst_LISP:                           Emacs Lisp.          (line   6)
3695 * noinst_LTLIBRARIES:                    Libtool Convenience Libraries.
3696                                                               (line   6)
3697 * noinst_PROGRAMS:                       Program Sources.     (line   6)
3698 * noinst_SCRIPTS:                        Scripts.             (line  18)
3699 * OBJC:                                  Objective C Support. (line  16)
3700 * OBJCCOMPILE:                           Objective C Support. (line  25)
3701 * OBJCFLAGS:                             Objective C Support. (line  19)
3702 * OBJCLINK <1>:                          How the Linker is Chosen.
3703                                                               (line  18)
3704 * OBJCLINK:                              Objective C Support. (line  29)
3705 * oldinclude_HEADERS:                    Headers.             (line   6)
3706 * PACKAGE:                               Dist.                (line   9)
3707 * pkgdata_DATA:                          Data.                (line   9)
3708 * pkgdata_SCRIPTS:                       Scripts.             (line  18)
3709 * pkgdatadir:                            Uniform.             (line  19)
3710 * pkginclude_HEADERS:                    Headers.             (line   6)
3711 * pkgincludedir:                         Uniform.             (line  19)
3712 * pkglib_LIBRARIES:                      A Library.           (line   6)
3713 * pkglib_LTLIBRARIES:                    Libtool Libraries.   (line   6)
3714 * pkglib_PROGRAMS:                       Program Sources.     (line   6)
3715 * pkglibdir:                             Uniform.             (line  19)
3716 * pkgpyexecdir:                          Python.              (line  99)
3717 * pkgpythondir:                          Python.              (line  85)
3718 * PROGRAMS:                              Uniform.             (line  17)
3719 * pyexecdir:                             Python.              (line  90)
3720 * PYTHON <1>:                            Python.              (line  50)
3721 * PYTHON:                                Uniform.             (line  79)
3722 * PYTHON_EXEC_PREFIX:                    Python.              (line  71)
3723 * PYTHON_PLATFORM:                       Python.              (line  76)
3724 * PYTHON_PREFIX:                         Python.              (line  66)
3725 * PYTHON_VERSION:                        Python.              (line  62)
3726 * pythondir:                             Python.              (line  81)
3727 * RFLAGS:                                Fortran 77 Support.  (line  25)
3728 * RUNTEST:                               Tests.               (line  70)
3729 * RUNTESTDEFAULTFLAGS:                   Tests.               (line  65)
3730 * RUNTESTFLAGS:                          Tests.               (line  75)
3731 * sbin_PROGRAMS:                         Program Sources.     (line   6)
3732 * sbin_SCRIPTS:                          Scripts.             (line  18)
3733 * SCRIPTS <1>:                           Scripts.             (line   9)
3734 * SCRIPTS:                               Uniform.             (line  79)
3735 * sharedstate_DATA:                      Data.                (line   9)
3736 * SOURCES <1>:                           Default _SOURCES.    (line   6)
3737 * SOURCES:                               Program Sources.     (line  33)
3738 * SUBDIRS <1>:                           Dist.                (line  41)
3739 * SUBDIRS:                               Subdirectories.      (line   8)
3740 * SUFFIXES:                              Suffixes.            (line   6)
3741 * sysconf_DATA:                          Data.                (line   9)
3742 * TAGS_DEPENDENCIES:                     Tags.                (line  35)
3743 * target_triplet:                        Optional.            (line  14)
3744 * TESTS:                                 Tests.               (line  24)
3745 * TESTS_ENVIRONMENT:                     Tests.               (line  24)
3746 * TEXI2DVI:                              Texinfo.             (line 118)
3747 * TEXI2PDF:                              Texinfo.             (line 123)
3748 * TEXINFO_TEX:                           Texinfo.             (line 131)
3749 * TEXINFOS <1>:                          Texinfo.             (line  59)
3750 * TEXINFOS:                              Uniform.             (line  79)
3751 * top_distdir <1>:                       Third-Party Makefiles.
3752                                                               (line  25)
3753 * top_distdir:                           Dist.                (line  89)
3754 * U:                                     Obsolete macros.     (line  13)
3755 * UPC <1>:                               Unified Parallel C Support.
3756                                                               (line  15)
3757 * UPC:                                   Public macros.       (line  96)
3758 * UPCCOMPILE:                            Unified Parallel C Support.
3759                                                               (line  24)
3760 * UPCFLAGS:                              Unified Parallel C Support.
3761                                                               (line  18)
3762 * UPCLINK <1>:                           How the Linker is Chosen.
3763                                                               (line  20)
3764 * UPCLINK:                               Unified Parallel C Support.
3765                                                               (line  28)
3766 * VERSION:                               Dist.                (line   9)
3767 * WARNINGS <1>:                          aclocal options.     (line  85)
3768 * WARNINGS:                              Invoking Automake.   (line 164)
3769 * WITH_DMALLOC:                          Public macros.       (line 102)
3770 * WITH_REGEX:                            Public macros.       (line 107)
3771 * XFAIL_TESTS:                           Tests.               (line  36)
3772 * YACC:                                  Optional.            (line 114)
3773 * YFLAGS:                                Yacc and Lex.        (line  33)
3775 \x1f
3776 File: automake.info,  Node: General Index,  Prev: Variable Index,  Up: Indices
3778 B.3 General Index
3779 =================
3781 \0\b[index\0\b]
3782 * Menu:
3784 * ## (special Automake comment):         General Operation.   (line  54)
3785 * #serial syntax:                        Serials.             (line   6)
3786 * $(LIBOBJS) and empty libraries:        LIBOBJS.             (line  69)
3787 * +=:                                    General Operation.   (line  23)
3788 * --acdir:                               aclocal options.     (line   9)
3789 * --add-missing:                         Invoking Automake.   (line  41)
3790 * --build=BUILD:                         Cross-Compilation.   (line  14)
3791 * --copy:                                Invoking Automake.   (line  63)
3792 * --cygnus:                              Invoking Automake.   (line  67)
3793 * --diff:                                aclocal options.     (line  13)
3794 * --disable-dependency-tracking:         Dependency Tracking. (line  29)
3795 * --dry-run:                             aclocal options.     (line  18)
3796 * --enable-debug, example:               Conditionals.        (line  26)
3797 * --enable-dependency-tracking:          Dependency Tracking. (line  39)
3798 * --enable-maintainer-mode:              Optional.            (line 158)
3799 * --force:                               aclocal options.     (line  39)
3800 * --force-missing:                       Invoking Automake.   (line  72)
3801 * --foreign:                             Invoking Automake.   (line  78)
3802 * --gnits:                               Invoking Automake.   (line  82)
3803 * --gnits, complete description:         Gnits.               (line  21)
3804 * --gnu:                                 Invoking Automake.   (line  86)
3805 * --gnu, complete description:           Gnits.               (line   6)
3806 * --gnu, required files:                 Gnits.               (line   6)
3807 * --help <1>:                            aclocal options.     (line  22)
3808 * --help:                                Invoking Automake.   (line  90)
3809 * --help check:                          Options.             (line 115)
3810 * --help=recursive:                      Nested Packages.     (line  30)
3811 * --host=HOST:                           Cross-Compilation.   (line  17)
3812 * --include-deps:                        Invoking Automake.   (line  98)
3813 * --install:                             aclocal options.     (line  29)
3814 * --libdir:                              Invoking Automake.   (line  58)
3815 * --no-force:                            Invoking Automake.   (line 103)
3816 * --output:                              aclocal options.     (line  49)
3817 * --output-dir:                          Invoking Automake.   (line 110)
3818 * --prefix:                              Standard Directory Variables.
3819                                                               (line  33)
3820 * --print-ac-dir:                        aclocal options.     (line  52)
3821 * --program-prefix=PREFIX:               Renaming.            (line  16)
3822 * --program-suffix=SUFFIX:               Renaming.            (line  19)
3823 * --program-transform-name=PROGRAM:      Renaming.            (line  22)
3824 * --target=TARGET:                       Cross-Compilation.   (line  56)
3825 * --verbose <1>:                         aclocal options.     (line  58)
3826 * --verbose:                             Invoking Automake.   (line 117)
3827 * --version <1>:                         aclocal options.     (line  61)
3828 * --version:                             Invoking Automake.   (line 121)
3829 * --version check:                       Options.             (line 115)
3830 * --warnings <1>:                        aclocal options.     (line  66)
3831 * --warnings:                            Invoking Automake.   (line 126)
3832 * --with-dmalloc:                        Public macros.       (line 102)
3833 * --with-regex:                          Public macros.       (line 107)
3834 * -a:                                    Invoking Automake.   (line  41)
3835 * -c:                                    Invoking Automake.   (line  62)
3836 * -f:                                    Invoking Automake.   (line  71)
3837 * -hook targets:                         Extending.           (line  61)
3838 * -I:                                    aclocal options.     (line  25)
3839 * -i:                                    Invoking Automake.   (line  94)
3840 * -l and LDADD:                          Linking.             (line  66)
3841 * -local targets:                        Extending.           (line  36)
3842 * -module, libtool:                      Libtool Modules.     (line   6)
3843 * -o:                                    Invoking Automake.   (line 110)
3844 * -v:                                    Invoking Automake.   (line 117)
3845 * -W <1>:                                aclocal options.     (line  66)
3846 * -W:                                    Invoking Automake.   (line 126)
3847 * -Wall:                                 amhello Explained.   (line  38)
3848 * -Werror:                               amhello Explained.   (line  38)
3849 * .la suffix, defined:                   Libtool Concept.     (line   6)
3850 * _DATA primary, defined:                Data.                (line   6)
3851 * _DEPENDENCIES, defined:                Linking.             (line  41)
3852 * _HEADERS primary, defined:             Headers.             (line   6)
3853 * _JAVA primary, defined:                Java.                (line   6)
3854 * _LDFLAGS, defined:                     Linking.             (line  37)
3855 * _LDFLAGS, libtool:                     Libtool Flags.       (line   6)
3856 * _LIBADD, libtool:                      Libtool Flags.       (line   6)
3857 * _LIBRARIES primary, defined:           A Library.           (line   6)
3858 * _LIBTOOLFLAGS, libtool:                Libtool Flags.       (line   6)
3859 * _LISP primary, defined:                Emacs Lisp.          (line   6)
3860 * _LTLIBRARIES primary, defined:         Libtool Libraries.   (line   6)
3861 * _MANS primary, defined:                Man pages.           (line   6)
3862 * _PROGRAMS primary variable:            Uniform.             (line  11)
3863 * _PYTHON primary, defined:              Python.              (line   6)
3864 * _SCRIPTS primary, defined:             Scripts.             (line   6)
3865 * _SOURCES and header files:             Program Sources.     (line  39)
3866 * _SOURCES primary, defined:             Program Sources.     (line  32)
3867 * _SOURCES, default:                     Default _SOURCES.    (line   6)
3868 * _SOURCES, empty:                       Default _SOURCES.    (line  43)
3869 * _TEXINFOS primary, defined:            Texinfo.             (line   6)
3870 * AC_SUBST and SUBDIRS:                  Conditional Subdirectories.
3871                                                               (line  95)
3872 * acinclude.m4, defined:                 Complete.            (line  23)
3873 * aclocal and serial numbers:            Serials.             (line   6)
3874 * aclocal program, introduction:         Complete.            (line  23)
3875 * aclocal search path:                   Macro search path.   (line   6)
3876 * aclocal's scheduled death:             Future of aclocal.   (line   6)
3877 * aclocal, extending:                    Extending aclocal.   (line   6)
3878 * aclocal, Invoking:                     Invoking aclocal.    (line   6)
3879 * aclocal, Options:                      aclocal options.     (line   6)
3880 * aclocal.m4, preexisting:               Complete.            (line  23)
3881 * Adding new SUFFIXES:                   Suffixes.            (line   6)
3882 * all <1>:                               Extending.           (line  40)
3883 * all:                                   Standard Targets.    (line  16)
3884 * all-local:                             Extending.           (line  40)
3885 * ALLOCA, and Libtool:                   LTLIBOBJS.           (line   6)
3886 * ALLOCA, example:                       LIBOBJS.             (line   6)
3887 * ALLOCA, special handling:              LIBOBJS.             (line   6)
3888 * AM_CCASFLAGS and CCASFLAGS:            Flag Variables Ordering.
3889                                                               (line  20)
3890 * AM_CFLAGS and CFLAGS:                  Flag Variables Ordering.
3891                                                               (line  20)
3892 * AM_CONDITIONAL and SUBDIRS:            Conditional Subdirectories.
3893                                                               (line  65)
3894 * AM_CPPFLAGS and CPPFLAGS:              Flag Variables Ordering.
3895                                                               (line  20)
3896 * AM_CXXFLAGS and CXXFLAGS:              Flag Variables Ordering.
3897                                                               (line  20)
3898 * AM_FCFLAGS and FCFLAGS:                Flag Variables Ordering.
3899                                                               (line  20)
3900 * AM_FFLAGS and FFLAGS:                  Flag Variables Ordering.
3901                                                               (line  20)
3902 * AM_GCJFLAGS and GCJFLAGS:              Flag Variables Ordering.
3903                                                               (line  20)
3904 * AM_INIT_AUTOMAKE, example use:         Complete.            (line  11)
3905 * AM_LDFLAGS and LDFLAGS:                Flag Variables Ordering.
3906                                                               (line  20)
3907 * AM_LFLAGS and LFLAGS:                  Flag Variables Ordering.
3908                                                               (line  20)
3909 * AM_LIBTOOLFLAGS and LIBTOOLFLAGS:      Flag Variables Ordering.
3910                                                               (line  20)
3911 * AM_MAINTAINER_MODE, purpose:           maintainer-mode.     (line  36)
3912 * AM_OBJCFLAGS and OBJCFLAGS:            Flag Variables Ordering.
3913                                                               (line  20)
3914 * AM_RFLAGS and RFLAGS:                  Flag Variables Ordering.
3915                                                               (line  20)
3916 * AM_UPCFLAGS and UPCFLAGS:              Flag Variables Ordering.
3917                                                               (line  20)
3918 * AM_YFLAGS and YFLAGS:                  Flag Variables Ordering.
3919                                                               (line  20)
3920 * amhello-1.0.tar.gz, creation:          Hello World.         (line   6)
3921 * amhello-1.0.tar.gz, location:          Use Cases.           (line   6)
3922 * amhello-1.0.tar.gz, use cases:         Use Cases.           (line   6)
3923 * ansi2knr <1>:                          Options.             (line  22)
3924 * ansi2knr:                              ANSI.                (line  21)
3925 * ansi2knr and LIBOBJS:                  ANSI.                (line  56)
3926 * ansi2knr and LTLIBOBJS:                ANSI.                (line  56)
3927 * Append operator:                       General Operation.   (line  23)
3928 * autogen.sh and autoreconf:             Libtool Issues.      (line   9)
3929 * autom4te:                              Invoking aclocal.    (line  45)
3930 * Automake constraints:                  Introduction.        (line  22)
3931 * automake options:                      Invoking Automake.   (line  37)
3932 * Automake requirements <1>:             Requirements.        (line   6)
3933 * Automake requirements:                 Introduction.        (line  27)
3934 * automake, invoking:                    Invoking Automake.   (line   6)
3935 * Automake, recursive operation:         General Operation.   (line  44)
3936 * Automatic dependency tracking:         Dependencies.        (line  11)
3937 * Automatic linker selection:            How the Linker is Chosen.
3938                                                               (line   6)
3939 * autoreconf and libtoolize:             Libtool Issues.      (line   9)
3940 * autoreconf, example:                   Creating amhello.    (line  59)
3941 * autoscan:                              amhello Explained.   (line  90)
3942 * Autotools, introduction:               GNU Build System.    (line  43)
3943 * Autotools, purpose:                    Why Autotools.       (line   6)
3944 * autoupdate:                            Obsolete macros.     (line   6)
3945 * Auxiliary programs:                    Auxiliary Programs.  (line   6)
3946 * Avoiding path stripping:               Alternative.         (line  24)
3947 * Binary package:                        DESTDIR.             (line  22)
3948 * bootstrap.sh and autoreconf:           Libtool Issues.      (line   9)
3949 * Bugs, reporting:                       Introduction.        (line  31)
3950 * build tree and source tree:            VPATH Builds.        (line   6)
3951 * BUILT_SOURCES, defined:                Sources.             (line  27)
3952 * C++ support:                           C++ Support.         (line   6)
3953 * canonicalizing Automake variables:     Canonicalization.    (line   6)
3954 * CCASFLAGS and AM_CCASFLAGS:            Flag Variables Ordering.
3955                                                               (line  20)
3956 * CFLAGS and AM_CFLAGS:                  Flag Variables Ordering.
3957                                                               (line  20)
3958 * cfortran:                              Mixing Fortran 77 With C and C++.
3959                                                               (line   6)
3960 * check <1>:                             Extending.           (line  40)
3961 * check <2>:                             Tests.               (line   6)
3962 * check:                                 Standard Targets.    (line  37)
3963 * check-local:                           Extending.           (line  40)
3964 * check-news:                            Options.             (line  29)
3965 * check_ primary prefix, definition:     Uniform.             (line  74)
3966 * check_PROGRAMS example:                Default _SOURCES.    (line  29)
3967 * clean <1>:                             Extending.           (line  40)
3968 * clean:                                 Standard Targets.    (line  31)
3969 * clean-local <1>:                       Extending.           (line  40)
3970 * clean-local:                           Clean.               (line  15)
3971 * Comment, special to Automake:          General Operation.   (line  54)
3972 * Compile Flag Variables:                Flag Variables Ordering.
3973                                                               (line  20)
3974 * Complete example:                      Complete.            (line   6)
3975 * Conditional example, --enable-debug:   Conditionals.        (line  26)
3976 * conditional libtool libraries:         Conditional Libtool Libraries.
3977                                                               (line   6)
3978 * Conditional programs:                  Conditional Programs.
3979                                                               (line   6)
3980 * Conditional subdirectories:            Conditional Subdirectories.
3981                                                               (line   6)
3982 * Conditional SUBDIRS:                   Conditional Subdirectories.
3983                                                               (line   6)
3984 * Conditionals:                          Conditionals.        (line   6)
3985 * config.guess:                          Invoking Automake.   (line  39)
3986 * config.site example:                   config.site.         (line   6)
3987 * configuration variables, overriding:   Standard Configuration Variables.
3988                                                               (line   6)
3989 * Configuration, basics:                 Basic Installation.  (line   6)
3990 * configure.ac, scanning:                configure.           (line   6)
3991 * conflicting definitions:               Extending.           (line  14)
3992 * Constraints of Automake:               Introduction.        (line  22)
3993 * convenience libraries, libtool:        Libtool Convenience Libraries.
3994                                                               (line   6)
3995 * copying semantics:                     Extending.           (line  10)
3996 * cpio example:                          Uniform.             (line  36)
3997 * CPPFLAGS and AM_CPPFLAGS:              Flag Variables Ordering.
3998                                                               (line  20)
3999 * cross-compilation:                     Cross-Compilation.   (line   6)
4000 * cross-compilation example:             Cross-Compilation.   (line  26)
4001 * CVS and generated files:               CVS.                 (line  49)
4002 * CVS and third-party files:             CVS.                 (line 140)
4003 * CVS and timestamps:                    CVS.                 (line  28)
4004 * cvs-dist:                              General Operation.   (line  12)
4005 * cvs-dist, non-standard example:        General Operation.   (line  12)
4006 * CXXFLAGS and AM_CXXFLAGS:              Flag Variables Ordering.
4007                                                               (line  20)
4008 * cygnus:                                Options.             (line  17)
4009 * cygnus strictness:                     Cygnus.              (line   6)
4010 * DATA primary, defined:                 Data.                (line   6)
4011 * de-ANSI-fication, defined:             ANSI.                (line   6)
4012 * debug build, example:                  VPATH Builds.        (line  47)
4013 * default _SOURCES:                      Default _SOURCES.    (line   6)
4014 * default source, Libtool modules example: Default _SOURCES.  (line  37)
4015 * definitions, conflicts:                Extending.           (line  14)
4016 * dejagnu <1>:                           Options.             (line  33)
4017 * dejagnu:                               Tests.               (line  70)
4018 * depcomp:                               Dependencies.        (line  22)
4019 * dependencies and distributed files:    distcleancheck.      (line   6)
4020 * Dependency tracking <1>:               Dependencies.        (line  11)
4021 * Dependency tracking:                   Dependency Tracking. (line   6)
4022 * Dependency tracking, disabling:        Dependencies.        (line  37)
4023 * directory variables:                   Standard Directory Variables.
4024                                                               (line   6)
4025 * dirlist:                               Macro search path.   (line  62)
4026 * Disabling dependency tracking:         Dependencies.        (line  37)
4027 * dist <1>:                              Dist.                (line   9)
4028 * dist:                                  Standard Targets.    (line  43)
4029 * dist-bzip2 <1>:                        Options.             (line  36)
4030 * dist-bzip2:                            Dist.                (line 192)
4031 * dist-gzip:                             Dist.                (line 195)
4032 * dist-hook <1>:                         Extending.           (line  64)
4033 * dist-hook:                             Dist.                (line  71)
4034 * dist-shar <1>:                         Options.             (line  39)
4035 * dist-shar:                             Dist.                (line 198)
4036 * dist-tarZ <1>:                         Options.             (line  45)
4037 * dist-tarZ:                             Dist.                (line 204)
4038 * dist-zip <1>:                          Options.             (line  42)
4039 * dist-zip:                              Dist.                (line 201)
4040 * dist_ and nobase_:                     Alternative.         (line  30)
4041 * DIST_SUBDIRS, explained:               Conditional Subdirectories.
4042                                                               (line  34)
4043 * distcheck <1>:                         Dist.                (line 111)
4044 * distcheck:                             Creating amhello.    (line  99)
4045 * distcheck better than dist:            Preparing Distributions.
4046                                                               (line  10)
4047 * distcheck example:                     Creating amhello.    (line  99)
4048 * distcheck-hook:                        Dist.                (line 122)
4049 * distclean <1>:                         distcleancheck.      (line   6)
4050 * distclean <2>:                         Extending.           (line  40)
4051 * distclean:                             Standard Targets.    (line  34)
4052 * distclean, diagnostic:                 distcleancheck.      (line   6)
4053 * distclean-local <1>:                   Extending.           (line  40)
4054 * distclean-local:                       Clean.               (line  15)
4055 * distcleancheck <1>:                    distcleancheck.      (line   6)
4056 * distcleancheck:                        Dist.                (line 133)
4057 * distdir:                               Third-Party Makefiles.
4058                                                               (line  25)
4059 * Distributions, preparation:            Preparing Distributions.
4060                                                               (line   6)
4061 * dmalloc, support for:                  Public macros.       (line 102)
4062 * dvi <1>:                               Extending.           (line  40)
4063 * dvi:                                   Texinfo.             (line  19)
4064 * DVI output using Texinfo:              Texinfo.             (line   6)
4065 * dvi-local:                             Extending.           (line  40)
4066 * E-mail, bug reports:                   Introduction.        (line  31)
4067 * EDITION Texinfo flag:                  Texinfo.             (line  29)
4068 * else:                                  Conditionals.        (line  41)
4069 * empty _SOURCES:                        Default _SOURCES.    (line  43)
4070 * Empty libraries:                       A Library.           (line  46)
4071 * Empty libraries and $(LIBOBJS):        LIBOBJS.             (line  69)
4072 * endif:                                 Conditionals.        (line  41)
4073 * Example conditional --enable-debug:    Conditionals.        (line  26)
4074 * Example Hello World:                   Hello World.         (line   6)
4075 * Example of recursive operation:        General Operation.   (line  44)
4076 * Example of shared libraries:           Libtool Libraries.   (line   6)
4077 * Example, EXTRA_PROGRAMS:               Uniform.             (line  36)
4078 * Example, false and true:               true.                (line   6)
4079 * Example, mixed language:               Mixing Fortran 77 With C and C++.
4080                                                               (line  36)
4081 * Executable extension:                  EXEEXT.              (line   6)
4082 * Exit status 77, special interpretation: Tests.              (line  19)
4083 * Expected test failure:                 Tests.               (line  34)
4084 * Extending aclocal:                     Extending aclocal.   (line   6)
4085 * Extending list of installation directories: Uniform.        (line  55)
4086 * Extension, executable:                 EXEEXT.              (line   6)
4087 * Extra files distributed with Automake: Invoking Automake.   (line  39)
4088 * EXTRA_, prepending:                    Uniform.             (line  29)
4089 * EXTRA_prog_SOURCES, defined:           Conditional Sources. (line  18)
4090 * EXTRA_PROGRAMS, defined <1>:           Conditional Programs.
4091                                                               (line  15)
4092 * EXTRA_PROGRAMS, defined:               Uniform.             (line  36)
4093 * false Example:                         true.                (line   6)
4094 * FCFLAGS and AM_FCFLAGS:                Flag Variables Ordering.
4095                                                               (line  20)
4096 * FDL, GNU Free Documentation License:   GNU Free Documentation License.
4097                                                               (line   6)
4098 * Features of the GNU Build System:      Use Cases.           (line   6)
4099 * FFLAGS and AM_FFLAGS:                  Flag Variables Ordering.
4100                                                               (line  20)
4101 * file names, limitations on:            limitations on file names.
4102                                                               (line   6)
4103 * filename-length-max=99:                Options.             (line  48)
4104 * Files distributed with Automake:       Invoking Automake.   (line  39)
4105 * First line of Makefile.am:             General Operation.   (line  60)
4106 * Flag Variables, Ordering:              Flag Variables Ordering.
4107                                                               (line  20)
4108 * Flag variables, ordering:              Flag Variables Ordering.
4109                                                               (line   6)
4110 * FLIBS, defined:                        Mixing Fortran 77 With C and C++.
4111                                                               (line  21)
4112 * foreign <1>:                           Options.             (line  17)
4113 * foreign:                               amhello Explained.   (line  38)
4114 * foreign strictness:                    Strictness.          (line  10)
4115 * Fortran 77 support:                    Fortran 77 Support.  (line   6)
4116 * Fortran 77, mixing with C and C++:     Mixing Fortran 77 With C and C++.
4117                                                               (line   6)
4118 * Fortran 77, Preprocessing:             Preprocessing Fortran 77.
4119                                                               (line   6)
4120 * Fortran 9x support:                    Fortran 9x Support.  (line   6)
4121 * GCJFLAGS and AM_GCJFLAGS:              Flag Variables Ordering.
4122                                                               (line  20)
4123 * generated files and CVS:               CVS.                 (line  49)
4124 * generated files, distributed:          CVS.                 (line   9)
4125 * Gettext support:                       gettext.             (line   6)
4126 * gnits:                                 Options.             (line  17)
4127 * gnits strictness:                      Strictness.          (line  10)
4128 * gnu:                                   Options.             (line  17)
4129 * GNU Build System, basics:              Basic Installation.  (line   6)
4130 * GNU Build System, features:            Use Cases.           (line   6)
4131 * GNU Build System, introduction:        GNU Build System.    (line   6)
4132 * GNU Build System, use cases:           Use Cases.           (line   6)
4133 * GNU Coding Standards:                  GNU Build System.    (line  29)
4134 * GNU Gettext support:                   gettext.             (line   6)
4135 * GNU make extensions:                   General Operation.   (line  19)
4136 * GNU Makefile standards:                Introduction.        (line  12)
4137 * gnu strictness:                        Strictness.          (line  10)
4138 * GNUmakefile including Makefile:        Third-Party Makefiles.
4139                                                               (line 112)
4140 * Header files in _SOURCES:              Program Sources.     (line  39)
4141 * HEADERS primary, defined:              Headers.             (line   6)
4142 * HEADERS, installation directories:     Headers.             (line   6)
4143 * Hello World example:                   Hello World.         (line   6)
4144 * hook targets:                          Extending.           (line  61)
4145 * HP-UX 10, lex problems:                Public macros.       (line  86)
4146 * html <1>:                              Extending.           (line  40)
4147 * html:                                  Texinfo.             (line  19)
4148 * HTML output using Texinfo:             Texinfo.             (line   6)
4149 * html-local:                            Extending.           (line  40)
4150 * id:                                    Tags.                (line  44)
4151 * if:                                    Conditionals.        (line  41)
4152 * include <1>:                           Include.             (line   6)
4153 * include:                               Dist.                (line  17)
4154 * include, distribution:                 Dist.                (line  17)
4155 * Including Makefile fragment:           Include.             (line   6)
4156 * info <1>:                              Extending.           (line  40)
4157 * info:                                  Options.             (line  89)
4158 * info-local:                            Extending.           (line  40)
4159 * install <1>:                           Extending.           (line  40)
4160 * install <2>:                           Install.             (line  45)
4161 * install:                               Standard Targets.    (line  19)
4162 * Install hook:                          Install.             (line  74)
4163 * Install, two parts of:                 Install.             (line  45)
4164 * install-data <1>:                      Extending.           (line  40)
4165 * install-data <2>:                      Install.             (line  45)
4166 * install-data:                          Two-Part Install.    (line  16)
4167 * install-data-hook:                     Extending.           (line  64)
4168 * install-data-local <1>:                Extending.           (line  40)
4169 * install-data-local:                    Install.             (line  68)
4170 * install-dvi <1>:                       Extending.           (line  40)
4171 * install-dvi:                           Texinfo.             (line  19)
4172 * install-dvi-local:                     Extending.           (line  40)
4173 * install-exec <1>:                      Extending.           (line  40)
4174 * install-exec <2>:                      Install.             (line  45)
4175 * install-exec:                          Two-Part Install.    (line  16)
4176 * install-exec-hook:                     Extending.           (line  64)
4177 * install-exec-local <1>:                Extending.           (line  40)
4178 * install-exec-local:                    Install.             (line  68)
4179 * install-html <1>:                      Extending.           (line  40)
4180 * install-html:                          Texinfo.             (line  19)
4181 * install-html-local:                    Extending.           (line  40)
4182 * install-info <1>:                      Extending.           (line  40)
4183 * install-info <2>:                      Options.             (line  89)
4184 * install-info:                          Texinfo.             (line  76)
4185 * install-info target:                   Texinfo.             (line  76)
4186 * install-info-local:                    Extending.           (line  40)
4187 * install-man <1>:                       Options.             (line  95)
4188 * install-man:                           Man pages.           (line  32)
4189 * install-man target:                    Man pages.           (line  32)
4190 * install-pdf <1>:                       Extending.           (line  40)
4191 * install-pdf:                           Texinfo.             (line  19)
4192 * install-pdf-local:                     Extending.           (line  40)
4193 * install-ps <1>:                        Extending.           (line  40)
4194 * install-ps:                            Texinfo.             (line  19)
4195 * install-ps-local:                      Extending.           (line  40)
4196 * install-strip <1>:                     Install.             (line 110)
4197 * install-strip:                         Standard Targets.    (line  23)
4198 * Installation directories, extending list: Uniform.          (line  55)
4199 * Installation support:                  Install.             (line   6)
4200 * Installation, basics:                  Basic Installation.  (line   6)
4201 * installcheck <1>:                      Extending.           (line  40)
4202 * installcheck:                          Standard Targets.    (line  40)
4203 * installcheck-local:                    Extending.           (line  40)
4204 * installdirs <1>:                       Extending.           (line  40)
4205 * installdirs:                           Install.             (line 110)
4206 * installdirs-local:                     Extending.           (line  40)
4207 * Installing headers:                    Headers.             (line   6)
4208 * Installing scripts:                    Scripts.             (line   6)
4209 * installing versioned binaries:         Extending.           (line  80)
4210 * Interfacing with third-party packages: Third-Party Makefiles.
4211                                                               (line   6)
4212 * Invoking aclocal:                      Invoking aclocal.    (line   6)
4213 * Invoking automake:                     Invoking Automake.   (line   6)
4214 * JAVA primary, defined:                 Java.                (line   6)
4215 * JAVA restrictions:                     Java.                (line  19)
4216 * Java support:                          Java Support.        (line   6)
4217 * LDADD and -l:                          Linking.             (line  66)
4218 * LDFLAGS and AM_LDFLAGS:                Flag Variables Ordering.
4219                                                               (line  20)
4220 * lex problems with HP-UX 10:            Public macros.       (line  86)
4221 * lex, multiple lexers:                  Yacc and Lex.        (line  64)
4222 * LFLAGS and AM_LFLAGS:                  Flag Variables Ordering.
4223                                                               (line  20)
4224 * libltdl, introduction:                 Libtool Concept.     (line  30)
4225 * LIBOBJS and ansi2knr:                  ANSI.                (line  56)
4226 * LIBOBJS, and Libtool:                  LTLIBOBJS.           (line   6)
4227 * LIBOBJS, example:                      LIBOBJS.             (line   6)
4228 * LIBOBJS, special handling:             LIBOBJS.             (line   6)
4229 * LIBRARIES primary, defined:            A Library.           (line   6)
4230 * libtool convenience libraries:         Libtool Convenience Libraries.
4231                                                               (line   6)
4232 * libtool libraries, conditional:        Conditional Libtool Libraries.
4233                                                               (line   6)
4234 * libtool library, definition:           Libtool Concept.     (line   6)
4235 * libtool modules:                       Libtool Modules.     (line   6)
4236 * Libtool modules, default source example: Default _SOURCES.  (line  37)
4237 * libtool, introduction:                 Libtool Concept.     (line   6)
4238 * LIBTOOLFLAGS and AM_LIBTOOLFLAGS:      Flag Variables Ordering.
4239                                                               (line  20)
4240 * libtoolize and autoreconf:             Libtool Issues.      (line   9)
4241 * libtoolize, no longer run by automake: Libtool Issues.      (line   9)
4242 * Linking Fortran 77 with C and C++:     Mixing Fortran 77 With C and C++.
4243                                                               (line   6)
4244 * LISP primary, defined:                 Emacs Lisp.          (line   6)
4245 * LN_S example:                          Extending.           (line  80)
4246 * local targets:                         Extending.           (line  36)
4247 * LTALLOCA, special handling:            LTLIBOBJS.           (line   6)
4248 * LTLIBOBJS and ansi2knr:                ANSI.                (line  56)
4249 * LTLIBOBJS, special handling:           LTLIBOBJS.           (line   6)
4250 * LTLIBRARIES primary, defined:          Libtool Libraries.   (line   6)
4251 * ltmain.sh not found:                   Libtool Issues.      (line   9)
4252 * m4_include, distribution:              Dist.                (line  17)
4253 * Macro search path:                     Macro search path.   (line   6)
4254 * macro serial numbers:                  Serials.             (line   6)
4255 * Macros Automake recognizes:            Optional.            (line   6)
4256 * maintainer-clean-local:                Clean.               (line  15)
4257 * make check:                            Tests.               (line   6)
4258 * make clean support:                    Clean.               (line   6)
4259 * make dist:                             Dist.                (line   9)
4260 * make distcheck:                        Dist.                (line 111)
4261 * make distclean, diagnostic:            distcleancheck.      (line   6)
4262 * make distcleancheck:                   Dist.                (line 111)
4263 * make distuninstallcheck:               Dist.                (line 111)
4264 * make install support:                  Install.             (line   6)
4265 * make installcheck, testing --help and --version: Options.   (line 115)
4266 * Make rules, overriding:                General Operation.   (line  32)
4267 * Make targets, overriding:              General Operation.   (line  32)
4268 * Makefile fragment, including:          Include.             (line   6)
4269 * Makefile.am, first line:               General Operation.   (line  60)
4270 * Makefile.am, Hello World:              amhello Explained.   (line  96)
4271 * MANS primary, defined:                 Man pages.           (line   6)
4272 * many outputs, rules with:              Multiple Outputs.    (line   6)
4273 * mdate-sh:                              Texinfo.             (line  29)
4274 * MinGW cross-compilation example:       Cross-Compilation.   (line  26)
4275 * missing, purpose:                      maintainer-mode.     (line   9)
4276 * Mixed language example:                Mixing Fortran 77 With C and C++.
4277                                                               (line  36)
4278 * Mixing Fortran 77 with C and C++:      Mixing Fortran 77 With C and C++.
4279                                                               (line   6)
4280 * Mixing Fortran 77 with C and/or C++:   Mixing Fortran 77 With C and C++.
4281                                                               (line   6)
4282 * mkdir -p, macro check:                 Obsolete macros.     (line  31)
4283 * modules, libtool:                      Libtool Modules.     (line   6)
4284 * mostlyclean:                           Extending.           (line  40)
4285 * mostlyclean-local <1>:                 Extending.           (line  40)
4286 * mostlyclean-local:                     Clean.               (line  15)
4287 * multiple configurations, example:      VPATH Builds.        (line  47)
4288 * Multiple configure.ac files:           Invoking Automake.   (line   6)
4289 * Multiple lex lexers:                   Yacc and Lex.        (line  64)
4290 * multiple outputs, rules with:          Multiple Outputs.    (line   6)
4291 * Multiple yacc parsers:                 Yacc and Lex.        (line  64)
4292 * Nested packages:                       Nested Packages.     (line   6)
4293 * Nesting packages:                      Subpackages.         (line   6)
4294 * no-define <1>:                         Options.             (line  57)
4295 * no-define:                             Public macros.       (line  54)
4296 * no-dependencies <1>:                   Options.             (line  62)
4297 * no-dependencies:                       Dependencies.        (line  34)
4298 * no-dist:                               Options.             (line  69)
4299 * no-dist-gzip:                          Options.             (line  73)
4300 * no-exeext:                             Options.             (line  76)
4301 * no-installinfo <1>:                    Options.             (line  86)
4302 * no-installinfo:                        Texinfo.             (line  76)
4303 * no-installinfo option:                 Texinfo.             (line  76)
4304 * no-installman <1>:                     Options.             (line  92)
4305 * no-installman:                         Man pages.           (line  32)
4306 * no-installman option:                  Man pages.           (line  32)
4307 * no-texinfo.tex <1>:                    Options.             (line 102)
4308 * no-texinfo.tex:                        Texinfo.             (line  71)
4309 * nobase_ and dist_ or nodist_:          Alternative.         (line  30)
4310 * nobase_ prefix:                        Alternative.         (line  24)
4311 * nodist_ and nobase_:                   Alternative.         (line  30)
4312 * noinst_ primary prefix, definition:    Uniform.             (line  69)
4313 * Non-GNU packages:                      Strictness.          (line   6)
4314 * Non-standard targets:                  General Operation.   (line  12)
4315 * nostdinc:                              Options.             (line  98)
4316 * OBJCFLAGS and AM_OBJCFLAGS:            Flag Variables Ordering.
4317                                                               (line  20)
4318 * Objective C support:                   Objective C Support. (line   6)
4319 * Objects in subdirectory:               Program and Library Variables.
4320                                                               (line  51)
4321 * obsolete macros:                       Obsolete macros.     (line   6)
4322 * optimized build, example:              VPATH Builds.        (line  47)
4323 * Option, --warnings=CATEGORY:           Options.             (line 197)
4324 * Option, -WCATEGORY:                    Options.             (line 197)
4325 * Option, ansi2knr:                      Options.             (line  22)
4326 * Option, check-news:                    Options.             (line  29)
4327 * Option, cygnus:                        Options.             (line  17)
4328 * Option, dejagnu:                       Options.             (line  33)
4329 * Option, dist-bzip2:                    Options.             (line  36)
4330 * Option, dist-shar:                     Options.             (line  39)
4331 * Option, dist-tarZ:                     Options.             (line  45)
4332 * Option, dist-zip:                      Options.             (line  42)
4333 * Option, filename-length-max=99:        Options.             (line  48)
4334 * Option, foreign:                       Options.             (line  17)
4335 * Option, gnits:                         Options.             (line  17)
4336 * Option, gnu:                           Options.             (line  17)
4337 * Option, no-define:                     Options.             (line  57)
4338 * Option, no-dependencies:               Options.             (line  62)
4339 * Option, no-dist:                       Options.             (line  69)
4340 * Option, no-dist-gzip:                  Options.             (line  73)
4341 * Option, no-exeext:                     Options.             (line  76)
4342 * Option, no-installinfo <1>:            Options.             (line  86)
4343 * Option, no-installinfo:                Texinfo.             (line  76)
4344 * Option, no-installman <1>:             Options.             (line  92)
4345 * Option, no-installman:                 Man pages.           (line  32)
4346 * Option, no-texinfo.tex:                Options.             (line 102)
4347 * Option, nostdinc:                      Options.             (line  98)
4348 * Option, readme-alpha:                  Options.             (line 106)
4349 * Option, tar-pax:                       Options.             (line 147)
4350 * Option, tar-ustar:                     Options.             (line 147)
4351 * Option, tar-v7:                        Options.             (line 147)
4352 * Option, VERSION:                       Options.             (line 192)
4353 * Option, warnings:                      Options.             (line 197)
4354 * Options, aclocal:                      aclocal options.     (line   6)
4355 * Options, automake:                     Invoking Automake.   (line  37)
4356 * Options, std-options:                  Options.             (line 115)
4357 * Options, subdir-objects:               Options.             (line 135)
4358 * Ordering flag variables:               Flag Variables Ordering.
4359                                                               (line   6)
4360 * Overriding make rules:                 General Operation.   (line  32)
4361 * Overriding make targets:               General Operation.   (line  32)
4362 * Overriding make variables:             General Operation.   (line  37)
4363 * overriding rules:                      Extending.           (line  25)
4364 * overriding semantics:                  Extending.           (line  25)
4365 * PACKAGE, directory:                    Uniform.             (line  19)
4366 * PACKAGE, prevent definition:           Public macros.       (line  54)
4367 * Packages, nested:                      Nested Packages.     (line   6)
4368 * Packages, preparation:                 Preparing Distributions.
4369                                                               (line   6)
4370 * Parallel build trees:                  VPATH Builds.        (line   6)
4371 * Path stripping, avoiding:              Alternative.         (line  24)
4372 * pax format:                            Options.             (line 147)
4373 * pdf <1>:                               Extending.           (line  40)
4374 * pdf:                                   Texinfo.             (line  19)
4375 * PDF output using Texinfo:              Texinfo.             (line   6)
4376 * pdf-local:                             Extending.           (line  40)
4377 * Per-object flags, emulated:            Per-Object Flags.    (line   6)
4378 * per-target compilation flags, defined: Program and Library Variables.
4379                                                               (line 171)
4380 * pkgdatadir, defined:                   Uniform.             (line  19)
4381 * pkgincludedir, defined:                Uniform.             (line  19)
4382 * pkglibdir, defined:                    Uniform.             (line  19)
4383 * POSIX termios headers:                 Obsolete macros.     (line  53)
4384 * Preparing distributions:               Preparing Distributions.
4385                                                               (line   6)
4386 * Preprocessing Fortran 77:              Preprocessing Fortran 77.
4387                                                               (line   6)
4388 * Primary variable, DATA:                Data.                (line   6)
4389 * Primary variable, defined:             Uniform.             (line  11)
4390 * Primary variable, HEADERS:             Headers.             (line   6)
4391 * Primary variable, JAVA:                Java.                (line   6)
4392 * Primary variable, LIBRARIES:           A Library.           (line   6)
4393 * Primary variable, LISP:                Emacs Lisp.          (line   6)
4394 * Primary variable, LTLIBRARIES:         Libtool Libraries.   (line   6)
4395 * Primary variable, MANS:                Man pages.           (line   6)
4396 * Primary variable, PROGRAMS:            Uniform.             (line  11)
4397 * Primary variable, PYTHON:              Python.              (line   6)
4398 * Primary variable, SCRIPTS:             Scripts.             (line   6)
4399 * Primary variable, SOURCES:             Program Sources.     (line  32)
4400 * Primary variable, TEXINFOS:            Texinfo.             (line   6)
4401 * prog_LDADD, defined:                   Linking.             (line  12)
4402 * PROGRAMS primary variable:             Uniform.             (line  11)
4403 * Programs, auxiliary:                   Auxiliary Programs.  (line   6)
4404 * PROGRAMS, bindir:                      Program Sources.     (line   6)
4405 * Programs, conditional:                 Conditional Programs.
4406                                                               (line   6)
4407 * Programs, renaming during installation: Renaming.           (line   6)
4408 * Proxy Makefile for third-party packages: Third-Party Makefiles.
4409                                                               (line 129)
4410 * ps <1>:                                Extending.           (line  40)
4411 * ps:                                    Texinfo.             (line  19)
4412 * PS output using Texinfo:               Texinfo.             (line   6)
4413 * ps-local:                              Extending.           (line  40)
4414 * PYTHON primary, defined:               Python.              (line   6)
4415 * Ratfor programs:                       Preprocessing Fortran 77.
4416                                                               (line   6)
4417 * read-only source tree:                 VPATH Builds.        (line  90)
4418 * README-alpha:                          Gnits.               (line  34)
4419 * readme-alpha:                          Options.             (line 106)
4420 * rebuild rules <1>:                     CVS.                 (line   9)
4421 * rebuild rules:                         Rebuilding.          (line   6)
4422 * Recognized macros by Automake:         Optional.            (line   6)
4423 * Recursive operation of Automake:       General Operation.   (line  44)
4424 * recursive targets and third-party Makefiles: Third-Party Makefiles.
4425                                                               (line  15)
4426 * regex package:                         Public macros.       (line 107)
4427 * Renaming programs:                     Renaming.            (line   6)
4428 * Reporting bugs:                        Introduction.        (line  31)
4429 * Requirements of Automake:              Requirements.        (line   6)
4430 * Requirements, Automake:                Introduction.        (line  27)
4431 * Restrictions for JAVA:                 Java.                (line  19)
4432 * RFLAGS and AM_RFLAGS:                  Flag Variables Ordering.
4433                                                               (line  20)
4434 * rules with multiple outputs:           Multiple Outputs.    (line   6)
4435 * rules, conflicting:                    Extending.           (line  14)
4436 * rules, overriding:                     Extending.           (line  25)
4437 * rx package:                            Public macros.       (line 107)
4438 * Scanning configure.ac:                 configure.           (line   6)
4439 * SCRIPTS primary, defined:              Scripts.             (line   6)
4440 * SCRIPTS, installation directories:     Scripts.             (line  18)
4441 * Selecting the linker automatically:    How the Linker is Chosen.
4442                                                               (line   6)
4443 * serial number and --install:           aclocal options.     (line  32)
4444 * serial numbers in macros:              Serials.             (line   6)
4445 * Shared libraries, support for:         A Shared Library.    (line   6)
4446 * site.exp:                              Tests.               (line  77)
4447 * source tree and build tree:            VPATH Builds.        (line   6)
4448 * source tree, read-only:                VPATH Builds.        (line  90)
4449 * SOURCES primary, defined:              Program Sources.     (line  32)
4450 * Special Automake comment:              General Operation.   (line  54)
4451 * Staged installation:                   DESTDIR.             (line  14)
4452 * std-options:                           Options.             (line 115)
4453 * Strictness, command line:              Invoking Automake.   (line  37)
4454 * Strictness, defined:                   Strictness.          (line  10)
4455 * Strictness, foreign:                   Strictness.          (line  10)
4456 * Strictness, gnits:                     Strictness.          (line  10)
4457 * Strictness, gnu:                       Strictness.          (line  10)
4458 * su, before make install:               Basic Installation.  (line  50)
4459 * subdir-objects:                        Options.             (line 135)
4460 * Subdirectories, building conditionally: Conditional Subdirectories.
4461                                                               (line   6)
4462 * Subdirectories, configured conditionally: Conditional Subdirectories.
4463                                                               (line 119)
4464 * Subdirectories, not distributed:       Conditional Subdirectories.
4465                                                               (line 170)
4466 * Subdirectory, objects in:              Program and Library Variables.
4467                                                               (line  51)
4468 * SUBDIRS and AC_SUBST:                  Conditional Subdirectories.
4469                                                               (line  95)
4470 * SUBDIRS and AM_CONDITIONAL:            Conditional Subdirectories.
4471                                                               (line  65)
4472 * SUBDIRS, conditional:                  Conditional Subdirectories.
4473                                                               (line   6)
4474 * SUBDIRS, explained:                    Subdirectories.      (line   6)
4475 * Subpackages <1>:                       Subpackages.         (line   6)
4476 * Subpackages:                           Nested Packages.     (line   6)
4477 * suffix .la, defined:                   Libtool Concept.     (line   6)
4478 * suffix .lo, defined:                   Libtool Concept.     (line  15)
4479 * SUFFIXES, adding:                      Suffixes.            (line   6)
4480 * Support for C++:                       C++ Support.         (line   6)
4481 * Support for Fortran 77:                Fortran 77 Support.  (line   6)
4482 * Support for Fortran 9x:                Fortran 9x Support.  (line   6)
4483 * Support for GNU Gettext:               gettext.             (line   6)
4484 * Support for Java:                      Java Support.        (line   6)
4485 * Support for Objective C:               Objective C Support. (line   6)
4486 * Support for Unified Parallel C:        Unified Parallel C Support.
4487                                                               (line   6)
4488 * tags:                                  Tags.                (line   9)
4489 * TAGS support:                          Tags.                (line   6)
4490 * tar formats:                           Options.             (line 147)
4491 * tar-pax:                               Options.             (line 147)
4492 * tar-ustar:                             Options.             (line 147)
4493 * tar-v7:                                Options.             (line 147)
4494 * Target, install-info:                  Texinfo.             (line  76)
4495 * Target, install-man:                   Man pages.           (line  32)
4496 * termios POSIX headers:                 Obsolete macros.     (line  53)
4497 * Test suites:                           Tests.               (line   6)
4498 * Tests, expected failure:               Tests.               (line  34)
4499 * Texinfo flag, EDITION:                 Texinfo.             (line  29)
4500 * Texinfo flag, UPDATED:                 Texinfo.             (line  29)
4501 * Texinfo flag, UPDATED-MONTH:           Texinfo.             (line  29)
4502 * Texinfo flag, VERSION:                 Texinfo.             (line  29)
4503 * texinfo.tex:                           Texinfo.             (line  64)
4504 * TEXINFOS primary, defined:             Texinfo.             (line   6)
4505 * third-party files and CVS:             CVS.                 (line 140)
4506 * Third-party packages, interfacing with: Third-Party Makefiles.
4507                                                               (line   6)
4508 * timestamps and CVS:                    CVS.                 (line  28)
4509 * Transforming program names:            Renaming.            (line   6)
4510 * trees, source vs. build:               VPATH Builds.        (line   6)
4511 * true Example:                          true.                (line   6)
4512 * underquoted AC_DEFUN:                  Extending aclocal.   (line  33)
4513 * Unified Parallel C support:            Unified Parallel C Support.
4514                                                               (line   6)
4515 * Uniform naming scheme:                 Uniform.             (line   6)
4516 * uninstall <1>:                         Extending.           (line  40)
4517 * uninstall <2>:                         Install.             (line 110)
4518 * uninstall:                             Standard Targets.    (line  27)
4519 * uninstall-hook:                        Extending.           (line  64)
4520 * uninstall-local:                       Extending.           (line  40)
4521 * Unpacking:                             Basic Installation.  (line  27)
4522 * UPCFLAGS and AM_UPCFLAGS:              Flag Variables Ordering.
4523                                                               (line  20)
4524 * UPDATED Texinfo flag:                  Texinfo.             (line  29)
4525 * UPDATED-MONTH Texinfo flag:            Texinfo.             (line  29)
4526 * Use Cases for the GNU Build System:    Use Cases.           (line   6)
4527 * user variables:                        User Variables.      (line   6)
4528 * ustar format:                          Options.             (line 147)
4529 * v7 tar format:                         Options.             (line 147)
4530 * variables, conflicting:                Extending.           (line  14)
4531 * Variables, overriding:                 General Operation.   (line  37)
4532 * variables, reserved for the user:      User Variables.      (line   6)
4533 * VERSION Texinfo flag:                  Texinfo.             (line  29)
4534 * VERSION, prevent definition:           Public macros.       (line  54)
4535 * version.m4, example:                   Rebuilding.          (line  19)
4536 * version.sh, example:                   Rebuilding.          (line  19)
4537 * versioned binaries, installing:        Extending.           (line  80)
4538 * VPATH builds:                          VPATH Builds.        (line   6)
4539 * wildcards:                             wildcards.           (line   6)
4540 * Windows:                               EXEEXT.              (line   6)
4541 * yacc, multiple parsers:                Yacc and Lex.        (line  64)
4542 * YFLAGS and AM_YFLAGS:                  Flag Variables Ordering.
4543                                                               (line  20)
4544 * ylwrap:                                Yacc and Lex.        (line  64)
4545 * zardoz example:                        Complete.            (line  35)