1 This is automake.info, produced by makeinfo version 4.8 from
4 This manual is for GNU Automake (version 1.10, 15 October 2006), a
5 program that creates GNU standards-compliant Makefiles from template
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
25 * Automake: (automake). Making GNU standards-compliant Makefiles.
28 INFO-DIR-SECTION Individual utilities
30 * aclocal: (automake)Invoking aclocal. Generating aclocal.m4.
31 * automake: (automake)Invoking Automake. Generating Makefile.in.
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
50 Then you could directly use a `.foo' file in a `_SOURCES' variable
51 and expect the correct results:
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
63 For instance, the following definition prevents Automake to
64 misinterpret `.idlC.cpp:' as an attempt to transform `.idlC' files into
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.
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
91 The multilib support is still experimental. Only use it if you are
92 familiar with multilibs and can debug problems you might encounter.
95 File: automake.info, Node: Include, Next: Conditionals, Prev: Miscellaneous, Up: Top
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
111 `include $(top_srcdir)/file'
112 Include a fragment that is found relative to the top source
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'.
122 File: automake.info, Node: Conditionals, Next: Gnits, Prev: Include, Up: Top
127 Automake supports a simple type of conditionals.
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
156 *) AC_MSG_ERROR([bad value ${enableval} for --enable-debug]) ;;
158 AM_CONDITIONAL([DEBUG], [test x$debug = xtrue])
160 Here is an example of how to use that conditional in `Makefile.am':
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
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
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.
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
220 However the intended definition of `AM_CPPFLAGS' can be achieved with
225 AM_CPPFLAGS = -DFEATURE_A $(DEBUGFLAGS) -DFEATURE_B
229 AM_CPPFLAGS = -DFEATURE_A
231 AM_CPPFLAGS += -DDEBUG
233 AM_CPPFLAGS += -DFEATURE_B
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
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
277 * The file `THANKS' is required.
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
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
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.
337 * Extending:: Adding new rules or overriding existing ones.
338 * Third-Party Makefiles:: Integrating Non-Automake `Makefile's.
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
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
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::).
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
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)':
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.
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.
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.
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
478 Install or uninstall files (*note Install::).
485 Install only some specific documentation format (*note Texinfo::).
488 Create install directories, but do not install any files.
492 Check the package (*note Tests::).
498 Cleaning rules (*note Clean::).
505 Build the documentation in various formats (*note Texinfo::).
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
563 # Then, define the other targets needed by Automake Makefiles.
564 .PHONY: dvi pdf ps info html check
565 dvi pdf ps info html:
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':
580 cd subdir && $(MAKE) $(AM_MAKEFLAGS) all
582 cd subdir && $(MAKE) $(AM_MAKEFLAGS) test
584 cd subdir && $(MAKE) $(AM_MAKEFLAGS) clean
586 # Assuming the package knows how to install itself
588 cd subdir && $(MAKE) $(AM_MAKEFLAGS) install-data
590 cd subdir && $(MAKE) $(AM_MAKEFLAGS) install-exec
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.
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.
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
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
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
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.
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
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
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.
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
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)
708 automake --add-missing --force-missing
710 or more conveniently:
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.
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
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
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.
810 * The CVS repository contains all distributed files so you know
811 exactly what is distributed, and you can checkout any prior
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
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
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
906 File: automake.info, Node: maintainer-mode, Next: wildcards, Prev: CVS, Up: FAQ
908 27.2 `missing' and `AM_MAINTAINER_MODE'
909 =======================================
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'
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
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
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
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
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
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.
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:
1091 should not appear in the names of install directories. For example,
1092 the operand of `configure''s `--prefix' option should not contain these
1095 Build directories suffer the same limitations as install directories,
1096 and in addition should not contain the following characters:
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.
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
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
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.
1147 dist_man_MANS = foo.1
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:
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':
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
1202 distributed-file: built-tools distributed-sources
1205 should be changed to
1207 distributed-file: distributed-sources
1208 $(MAKE) $(AM_MAKEFLAGS) built-tools
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
1219 * Distributed files should be distributed with all their
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.
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
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',
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
1275 bar_SOURCES = main.c
1276 foo_CPPFLAGS = -DFOO
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
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
1305 make CXXFLAGS=-O0 file.o
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.
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
1346 AM_CFLAGS = $(WARNINGCFLAGS)
1347 bin_PROGRAMS = prog1 prog2
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
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::.
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
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::).
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
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
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.
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.
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
1520 The naive rule is incorrect:
1522 # This is incorrect.
1523 data.c data.h: 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.
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
1556 The above rules are equivalent to
1560 data.h: data.foo data.c
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.
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:
1594 ## Recover from the removal of $@
1595 @if test -f $@; then :; else \
1597 $(MAKE) $(AM_MAKEFLAGS) data.c; \
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
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 \
1613 $(MAKE) $(AM_MAKEFLAGS) data.c; \
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 \
1639 ## Recover from the removal of $@
1641 $(MAKE) $(AM_MAKEFLAGS) data.c; \
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
1650 foo data.foo data.bar
1652 data.c data.h data.w data.x: data.stamp
1653 ## Recover from the removal of $@
1654 @if test -f $@; then :; else \
1656 $(MAKE) $(AM_MAKEFLAGS) data.stamp; \
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.
1690 $(MAKE) $(AM_MAKEFLAGS) data.stamp; \
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 $$?; \
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)
1712 $(elisp_comp) $(ELFILES)
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.
1722 $(MAKE) $(AM_MAKEFLAGS) elc-stamp; \
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 $$?; \
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'.
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?
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
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
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
1829 $EMACS -batch -q -eval '(while load-path
1830 (princ (concat (car load-path) "\n"))
1831 (setq load-path (cdr load-path)))' >conftest.out
1834 -e '/.*\/lib\/x*emacs\/site-lisp$/{
1835 s,.*/lib/\(x*emacs/site-lisp\)$,${libdir}/\1,;p;q;
1837 -e '/.*\/share\/x*emacs\/site-lisp$/{
1838 s,.*/share/\(x*emacs/site-lisp\),${datarootdir}/\1,;p;q;
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}'
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.
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
1864 * Timeline:: The Automake story.
1865 * Dependency Tracking Evolution:: Evolution of Automatic Dependency Tracking
1866 * Releases:: Statistics about Automake Releases
1869 File: automake.info, Node: Timeline, Next: Dependency Tracking Evolution, Up: History
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)
1879 The first version of the `automake' script looks as follows.
1887 if test ! -f ${makefile}.am; then
1888 echo "automake: ${makefile}.am: No such honkin' file"
1893 exec 4> ${makefile}.in
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
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
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
1965 1995-11-23 Automake 0.20
1966 Besides introducing automatic dependency tracking (*note
1967 Dependency Tracking Evolution::), this version also supplies a
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:
1977 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
1978 AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
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':
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'
1999 Programs can be built conditionally using `AC_SUBST'itutions:
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
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
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
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
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
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
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
2178 Before that people were discussing Automake privately, on the Gnits
2179 mailing list (which is not public either), and less frequently on
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
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
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
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.
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
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.
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
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
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
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_'
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
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
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
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
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
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.
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.
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'.
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.
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
2633 28.2.2 Dependencies As Side Effects
2634 -----------------------------------
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).
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
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 --------------------------------
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
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).
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
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
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
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.
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.
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.
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.
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
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
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.
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:
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.
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
2929 File: automake.info, Node: Copying This Manual, Next: Indices, Prev: History, Up: Top
2931 Appendix A Copying This Manual
2932 ******************************
2936 * GNU Free Documentation License:: License for copying this manual
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.
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
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
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.
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
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
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.
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
3158 G. Preserve in that license notice the full lists of Invariant
3159 Sections and required Cover Texts given in the Document's
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
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
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
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
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.
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
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
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
3361 If you have Invariant Sections without Cover Texts, or some other
3362 combination of the three, merge those two alternatives to suit the
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.
3371 File: automake.info, Node: Indices, Prev: Copying This Manual, Up: Top
3378 * Macro Index:: Index of Autoconf macros
3379 * Variable Index:: Index of Makefile variables
3380 * General Index:: General index
3383 File: automake.info, Node: Macro Index, Next: Variable Index, Up: Indices
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)
3461 File: automake.info, Node: Variable Index, Next: General Index, Prev: Macro Index, Up: Indices
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.
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.
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.
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.
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.
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.
3577 * EXTRA_PROGRAMS: Conditional Programs.
3579 * F77: Fortran 77 Support. (line 16)
3580 * F77COMPILE: Fortran 77 Support. (line 31)
3581 * F77LINK: How the Linker is Chosen.
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.
3589 * FFLAGS: Fortran 77 Support. (line 19)
3590 * FLIBS: Mixing Fortran 77 With C and C++.
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.
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.
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.
3642 * maude_CCASFLAGS: Program and Library Variables.
3644 * maude_CFLAGS: Program and Library Variables.
3646 * maude_CPPFLAGS: Program and Library Variables.
3648 * maude_CXXFLAGS: Program and Library Variables.
3650 * maude_DEPENDENCIES <1>: Program and Library Variables.
3652 * maude_DEPENDENCIES: Linking. (line 41)
3653 * maude_FFLAGS: Program and Library Variables.
3655 * maude_GCJFLAGS: Program and Library Variables.
3657 * maude_LDADD <1>: Program and Library Variables.
3659 * maude_LDADD: Linking. (line 17)
3660 * maude_LDFLAGS <1>: Program and Library Variables.
3662 * maude_LDFLAGS: Linking. (line 37)
3663 * maude_LFLAGS: Program and Library Variables.
3665 * maude_LIBADD <1>: Program and Library Variables.
3667 * maude_LIBADD: A Library. (line 26)
3668 * maude_LIBTOOLFLAGS <1>: Program and Library Variables.
3670 * maude_LIBTOOLFLAGS: Libtool Flags. (line 6)
3671 * maude_LINK: Program and Library Variables.
3673 * maude_OBJCFLAGS: Program and Library Variables.
3675 * maude_RFLAGS: Program and Library Variables.
3677 * maude_SHORTNAME: Program and Library Variables.
3679 * maude_SOURCES: Program and Library Variables.
3681 * maude_UPCFLAGS: Program and Library Variables.
3683 * maude_YFLAGS: Program and Library Variables.
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.
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.
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.
3753 * top_distdir: Dist. (line 89)
3754 * U: Obsolete macros. (line 13)
3755 * UPC <1>: Unified Parallel C Support.
3757 * UPC: Public macros. (line 96)
3758 * UPCCOMPILE: Unified Parallel C Support.
3760 * UPCFLAGS: Unified Parallel C Support.
3762 * UPCLINK <1>: How the Linker is Chosen.
3764 * UPCLINK: Unified Parallel C Support.
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)
3776 File: automake.info, Node: General Index, Prev: Variable Index, Up: Indices
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.
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.
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.
3890 * AM_CFLAGS and CFLAGS: Flag Variables Ordering.
3892 * AM_CONDITIONAL and SUBDIRS: Conditional Subdirectories.
3894 * AM_CPPFLAGS and CPPFLAGS: Flag Variables Ordering.
3896 * AM_CXXFLAGS and CXXFLAGS: Flag Variables Ordering.
3898 * AM_FCFLAGS and FCFLAGS: Flag Variables Ordering.
3900 * AM_FFLAGS and FFLAGS: Flag Variables Ordering.
3902 * AM_GCJFLAGS and GCJFLAGS: Flag Variables Ordering.
3904 * AM_INIT_AUTOMAKE, example use: Complete. (line 11)
3905 * AM_LDFLAGS and LDFLAGS: Flag Variables Ordering.
3907 * AM_LFLAGS and LFLAGS: Flag Variables Ordering.
3909 * AM_LIBTOOLFLAGS and LIBTOOLFLAGS: Flag Variables Ordering.
3911 * AM_MAINTAINER_MODE, purpose: maintainer-mode. (line 36)
3912 * AM_OBJCFLAGS and OBJCFLAGS: Flag Variables Ordering.
3914 * AM_RFLAGS and RFLAGS: Flag Variables Ordering.
3916 * AM_UPCFLAGS and UPCFLAGS: Flag Variables Ordering.
3918 * AM_YFLAGS and YFLAGS: Flag Variables Ordering.
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.
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.
3956 * CFLAGS and AM_CFLAGS: Flag Variables Ordering.
3958 * cfortran: Mixing Fortran 77 With C and C++.
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.
3974 * Complete example: Complete. (line 6)
3975 * Conditional example, --enable-debug: Conditionals. (line 26)
3976 * conditional libtool libraries: Conditional Libtool Libraries.
3978 * Conditional programs: Conditional Programs.
3980 * Conditional subdirectories: Conditional Subdirectories.
3982 * Conditional SUBDIRS: Conditional Subdirectories.
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.
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.
3995 * copying semantics: Extending. (line 10)
3996 * cpio example: Uniform. (line 36)
3997 * CPPFLAGS and AM_CPPFLAGS: Flag Variables Ordering.
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.
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.
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.
4043 * distcheck <1>: Dist. (line 111)
4044 * distcheck: Creating amhello. (line 99)
4045 * distcheck better than dist: Preparing Distributions.
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.
4059 * Distributions, preparation: Preparing Distributions.
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++.
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.
4092 * EXTRA_PROGRAMS, defined: Uniform. (line 36)
4093 * false Example: true. (line 6)
4094 * FCFLAGS and AM_FCFLAGS: Flag Variables Ordering.
4096 * FDL, GNU Free Documentation License: GNU Free Documentation License.
4098 * Features of the GNU Build System: Use Cases. (line 6)
4099 * FFLAGS and AM_FFLAGS: Flag Variables Ordering.
4101 * file names, limitations on: limitations on file names.
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.
4108 * Flag variables, ordering: Flag Variables Ordering.
4110 * FLIBS, defined: Mixing Fortran 77 With C and C++.
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++.
4118 * Fortran 77, Preprocessing: Preprocessing Fortran 77.
4120 * Fortran 9x support: Fortran 9x Support. (line 6)
4121 * GCJFLAGS and AM_GCJFLAGS: Flag Variables Ordering.
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.
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.
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.
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.
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.
4232 * libtool libraries, conditional: Conditional Libtool Libraries.
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.
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++.
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++.
4278 * Mixing Fortran 77 with C and C++: Mixing Fortran 77 With C and C++.
4280 * Mixing Fortran 77 with C and/or C++: Mixing Fortran 77 With C and C++.
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.
4318 * Objective C support: Objective C Support. (line 6)
4319 * Objects in subdirectory: Program and Library Variables.
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.
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.
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.
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.
4386 * Preprocessing Fortran 77: Preprocessing Fortran 77.
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.
4407 * Programs, renaming during installation: Renaming. (line 6)
4408 * Proxy Makefile for third-party packages: Third-Party Makefiles.
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.
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.
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.
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.
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.
4462 * Subdirectories, configured conditionally: Conditional Subdirectories.
4464 * Subdirectories, not distributed: Conditional Subdirectories.
4466 * Subdirectory, objects in: Program and Library Variables.
4468 * SUBDIRS and AC_SUBST: Conditional Subdirectories.
4470 * SUBDIRS and AM_CONDITIONAL: Conditional Subdirectories.
4472 * SUBDIRS, conditional: Conditional Subdirectories.
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.
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.
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.
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.
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.
4544 * ylwrap: Yacc and Lex. (line 64)
4545 * zardoz example: Complete. (line 35)