"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "doc/automake.info" between
automake-1.16.2.tar.xz and automake-1.16.3.tar.xz

About: GNU Automake is a Makefile generator (input Makefile.am, output Makefile.in; intended for use with autoconf).

automake.info  (automake-1.16.2.tar.xz):automake.info  (automake-1.16.3.tar.xz)
File: automake.info, Node: Top, Next: Introduction, Up: (dir) File: automake.info, Node: Top, Next: Introduction, Up: (dir)
GNU Automake GNU Automake
************ ************
This manual is for GNU Automake (version 1.16.2, 1 February 2020), a This manual is for GNU Automake (version 1.16.3, 19 November 2020), a
program that creates GNU standards-compliant Makefiles from template program that creates GNU standards-compliant Makefiles from template
files. files.
Copyright © 1995–2020 Free Software Foundation, Inc. Copyright © 1995–2020 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, document under the terms of the GNU Free Documentation License,
Version 1.3 or any later version published by the Free Software Version 1.3 or any later version published by the Free Software
Foundation; with no Invariant Sections, with no Front-Cover texts, Foundation; with no Invariant Sections, with no Front-Cover texts,
and with no Back-Cover Texts. A copy of the license is included in and with no Back-Cover Texts. A copy of the license is included in
skipping to change at line 42 skipping to change at line 42
* Install:: What gets installed * Install:: What gets installed
* Clean:: What gets cleaned * Clean:: What gets cleaned
* Dist:: What goes in a distribution * Dist:: What goes in a distribution
* Tests:: Support for test suites * Tests:: Support for test suites
* Rebuilding:: Automatic rebuilding of Makefile * Rebuilding:: Automatic rebuilding of Makefile
* Options:: Changing Automake’s behavior * Options:: Changing Automake’s behavior
* Miscellaneous:: Miscellaneous rules * Miscellaneous:: Miscellaneous rules
* Include:: Including extra files in an Automake template * Include:: Including extra files in an Automake template
* Conditionals:: Conditionals * Conditionals:: Conditionals
* Silencing Make:: Obtain less verbose output from ‘make’ * Silencing Make:: Obtain less verbose output from ‘make’
* Gnits:: The effect of ‘--gnu’ and ‘--gnits’
* Not Enough:: When Automake is not Enough * Not Enough:: When Automake is not Enough
* Distributing:: Distributing the Makefile.in * Distributing:: Distributing the Makefile.in
* API Versioning:: About compatibility between Automake versions * API Versioning:: About compatibility between Automake versions
* Upgrading:: Upgrading to a Newer Automake Version * Upgrading:: Upgrading to a Newer Automake Version
* FAQ:: Frequently Asked Questions * FAQ:: Frequently Asked Questions
* Copying This Manual:: How to make copies of this manual * Copying This Manual:: How to make copies of this manual
* Indices:: Indices of variables, macros, and concepts * Indices:: Indices of variables, macros, and concepts
— The Detailed Node Listing — — The Detailed Node Listing —
skipping to change at line 374 skipping to change at line 373
‘Makefile.am’, ‘aclocal.m4’, ..., some of them claiming to be _generated ‘Makefile.am’, ‘aclocal.m4’, ..., some of them claiming to be _generated
by_ Autoconf or Automake. But the exact purpose of these files and by_ Autoconf or Automake. But the exact purpose of these files and
their relations is probably fuzzy. The goal of this chapter is to their relations is probably fuzzy. The goal of this chapter is to
introduce you to this machinery, to show you how it works and how introduce you to this machinery, to show you how it works and how
powerful it is. If you’ve never installed or seen such a package, do powerful it is. If you’ve never installed or seen such a package, do
not worry: this chapter will walk you through it. not worry: this chapter will walk you through it.
If you need some teaching material, more illustrations, or a less If you need some teaching material, more illustrations, or a less
‘automake’-centered continuation, some slides for this introduction are ‘automake’-centered continuation, some slides for this introduction are
available in Alexandre Duret-Lutz’s Autotools Tutorial available in Alexandre Duret-Lutz’s Autotools Tutorial
(http://www.lrde.epita.fr/~adl/autotools.html). This chapter is the (https://www.lrde.epita.fr/~adl/autotools.html). This chapter is the
written version of the first part of his tutorial. written version of the first part of his tutorial.
* Menu: * Menu:
* GNU Build System:: Introducing the GNU Build System * GNU Build System:: Introducing the GNU Build System
* Use Cases:: Use Cases for the GNU Build System * Use Cases:: Use Cases for the GNU Build System
* Why Autotools:: How Autotools Help * Why Autotools:: How Autotools Help
* Hello World:: A Small Hello World Package * Hello World:: A Small Hello World Package
File: automake.info, Node: GNU Build System, Next: Use Cases, Up: Autotools I ntroduction File: automake.info, Node: GNU Build System, Next: Use Cases, Up: Autotools I ntroduction
skipping to change at line 1015 skipping to change at line 1014
We have already mentioned ‘make dist’. This target collects all your We have already mentioned ‘make dist’. This target collects all your
source files and the necessary parts of the build system to create a source files and the necessary parts of the build system to create a
tarball named ‘PACKAGE-VERSION.tar.gz’. tarball named ‘PACKAGE-VERSION.tar.gz’.
Another, more useful command is ‘make distcheck’. The ‘distcheck’ Another, more useful command is ‘make distcheck’. The ‘distcheck’
target constructs ‘PACKAGE-VERSION.tar.gz’ just as well as ‘dist’, but target constructs ‘PACKAGE-VERSION.tar.gz’ just as well as ‘dist’, but
it additionally ensures most of the use cases presented so far work: it additionally ensures most of the use cases presented so far work:
• It attempts a full compilation of the package (*note Basic • It attempts a full compilation of the package (*note Basic
Installation::), unpacking the newly constructed tarball, running Installation::): unpacking the newly constructed tarball, running
‘make’, ‘make check’, ‘make install’, as well as ‘make ‘make’, ‘make dvi’, ‘make check’, ‘make install’, as well as ‘make
installcheck’, and even ‘make dist’, installcheck’, and even ‘make dist’,
• it tests VPATH builds with read-only source tree (*note VPATH • it tests VPATH builds with read-only source tree (*note VPATH
Builds::), Builds::),
• it makes sure ‘make clean’, ‘make distclean’, and ‘make uninstall’ • it makes sure ‘make clean’, ‘make distclean’, and ‘make uninstall’
do not omit any file (*note Standard Targets::), do not omit any file (*note Standard Targets::),
• and it checks that ‘DESTDIR’ installations work (*note DESTDIR::). • and it checks that ‘DESTDIR’ installations work (*note DESTDIR::).
All of these actions are performed in a temporary directory, so that All of these actions are performed in a temporary directory, so that
no root privileges are required. Please note that the exact location no root privileges are required. The exact location and the exact
and the exact structure of such a subdirectory (where the extracted structure of such a subdirectory (where the extracted sources are
sources are placed, how the temporary build and install directories are placed, how the temporary build and install directories are named and
named and how deeply they are nested, etc.) is to be considered an how deeply they are nested, etc.) is to be considered an implementation
implementation detail, which can change at any time; so do not rely on detail, which can change at any time; so do not rely on it.
it.
Releasing a package that fails ‘make distcheck’ means that one of the Releasing a package that fails ‘make distcheck’ means that one of the
scenarios we presented will not work and some users will be scenarios we presented will not work and some users will be
disappointed. Therefore it is a good practice to release a package only disappointed. Therefore it is a good practice to release a package only
after a successful ‘make distcheck’. This of course does not imply that after a successful ‘make distcheck’. This of course does not imply that
the package will be flawless, but at least it will prevent some of the the package will be flawless, but at least it will prevent some of the
embarrassing errors you may find in packages released by people who have embarrassing errors you may find in packages released by people who have
never heard about ‘distcheck’ (like ‘DESTDIR’ not working because of a never heard about ‘distcheck’ (like ‘DESTDIR’ not working because of a
typo, or a distributed file being erased by ‘make clean’, or even typo, or a distributed file being erased by ‘make clean’, or even
‘VPATH’ builds not working). ‘VPATH’ builds not working).
skipping to change at line 1577 skipping to change at line 1575
File: automake.info, Node: Strictness, Next: Uniform, Prev: General Operation , Up: Generalities File: automake.info, Node: Strictness, Next: Uniform, Prev: General Operation , Up: Generalities
3.2 Strictness 3.2 Strictness
============== ==============
While Automake is intended to be used by maintainers of GNU packages, it While Automake is intended to be used by maintainers of GNU packages, it
does make some effort to accommodate those who wish to use it, but do does make some effort to accommodate those who wish to use it, but do
not want to use all the GNU conventions. not want to use all the GNU conventions.
To this end, Automake supports three levels of “strictness”—the To this end, Automake supports three levels of “strictness”—how
strictness indicating how stringently Automake should check standards stringently Automake should enforce conformance with GNU conventions.
conformance. Each strictness level can be selected using an option of the same name;
see *note Options::.
The valid strictness levels are: The strictness levels are:
‘gnu’
This is the default level of strictness. Automake will check for
basic compliance with the GNU standards for software packaging.
*Note (standards)Top:: for full details of these standards.
Currently the following checks are made:
• The files ‘INSTALL’, ‘NEWS’, ‘README’, ‘AUTHORS’, and
‘ChangeLog’, plus one of ‘COPYING.LIB’, ‘COPYING.LESSER’ or
‘COPYING’, are required at the topmost directory of the
package.
If the ‘--add-missing’ option is given, ‘automake’ will add a
generic version of the ‘INSTALL’ file as well as the ‘COPYING’
file containing the text of the current version of the GNU
General Public License existing at the time of this Automake
release (version 3 as this is written,
<https://www.gnu.org/copyleft/gpl.html>). However, an
existing ‘COPYING’ file will never be overwritten by
‘automake’.
• The options ‘no-installman’ and ‘no-installinfo’ are
prohibited.
Future versions of Automake will add more checks at this level of
strictness; it is advisable to be familiar with the precise
requirements of the GNU standards.
Future versions of Automake may, at this level of strictness,
require certain non-standard GNU tools to be available to
maintainer-only Makefile rules. For instance, in the future
‘pathchk’ (*note (coreutils)pathchk invocation::) may be required
to run ‘make dist’.
‘foreign’ ‘foreign’
Automake will check for only those things that are absolutely Automake will check for only those things that are absolutely
required for proper operation. For instance, whereas GNU standards required for proper operation. For instance, whereas GNU standards
dictate the existence of a ‘NEWS’ file, it will not be required in dictate the existence of a ‘NEWS’ file, it will not be required in
this mode. This strictness will also turn off some warnings by this mode. This strictness will also turn off some warnings by
default (among them, portability warnings). The name comes from default (among them, portability warnings).
the fact that Automake is intended to be used for GNU programs;
these relaxed rules are not the standard mode of operation.
‘gnu’
Automake will check—as much as possible—for compliance to the GNU
standards for packages. This is the default.
‘gnits’ ‘gnits’
Automake will check for compliance to the as-yet-unwritten “Gnits Automake will check for compliance to the as-yet-unwritten “Gnits
standards”. These are based on the GNU standards, but are even standards”. These are based on the GNU standards, but are even
more detailed. Unless you are a Gnits standards contributor, it is more detailed. Unless you are a Gnits standards contributor, it is
recommended that you avoid this option until such time as the Gnits recommended that you avoid this option until such time as the Gnits
standard is actually published (which may never happen). standard is actually published (which may never happen).
*Note Gnits::, for more information on the precise implications of Currently, ‘--gnits’ does all the checks that ‘--gnu’ does, and
the strictness level. checks the following as well:
• ‘make installcheck’ will check to make sure that the ‘--help’
and ‘--version’ really print a usage message and a version
string, respectively. This is the ‘std-options’ option (*note
Options::).
• ‘make dist’ will check to make sure the ‘NEWS’ file has been
updated to the current version.
• ‘VERSION’ is checked to make sure its format complies with
Gnits standards.
• If ‘VERSION’ indicates that this is an alpha release, and the
file ‘README-alpha’ appears in the topmost directory of a
package, then it is included in the distribution. This is
done in ‘--gnits’ mode, and no other, because this mode is the
only one where version number formats are constrained, and
hence the only mode where Automake can automatically determine
whether ‘README-alpha’ should be included.
• The file ‘THANKS’ is required.
File: automake.info, Node: Uniform, Next: Length Limitations, Prev: Strictnes s, Up: Generalities File: automake.info, Node: Uniform, Next: Length Limitations, Prev: Strictnes s, Up: Generalities
3.3 The Uniform Naming Scheme 3.3 The Uniform Naming Scheme
============================= =============================
Automake variables generally follow a “uniform naming scheme” that makes Automake variables generally follow a “uniform naming scheme” that makes
it easy to decide how programs (and other derived objects) are built, it easy to decide how programs (and other derived objects) are built,
and how they are installed. This scheme also supports ‘configure’ time and how they are installed. This scheme also supports ‘configure’ time
determination of what should be built. determination of what should be built.
skipping to change at line 1722 skipping to change at line 1769
Pages::). Pages::).
File: automake.info, Node: Length Limitations, Next: Canonicalization, Prev: Uniform, Up: Generalities File: automake.info, Node: Length Limitations, Next: Canonicalization, Prev: Uniform, Up: Generalities
3.4 Staying below the command line length limit 3.4 Staying below the command line length limit
=============================================== ===============================================
Traditionally, most unix-like systems have a length limitation for the Traditionally, most unix-like systems have a length limitation for the
command line arguments and environment contents when creating new command line arguments and environment contents when creating new
processes (see for example processes (see for example
<http://www.in-ulm.de/~mascheck/various/argmax/> for an overview on this <https://www.in-ulm.de/~mascheck/various/argmax/> for an overview on
issue), which of course also applies to commands spawned by ‘make’. this issue), which of course also applies to commands spawned by ‘make’.
POSIX requires this limit to be at least 4096 bytes, and most modern POSIX requires this limit to be at least 4096 bytes, and most modern
systems have quite high limits (or are unlimited). systems have quite high limits (or are unlimited).
In order to create portable Makefiles that do not trip over these In order to create portable Makefiles that do not trip over these
limits, it is necessary to keep the length of file lists bounded. limits, it is necessary to keep the length of file lists bounded.
Unfortunately, it is not possible to do so fully transparently within Unfortunately, it is not possible to do so fully transparently within
Automake, so your help may be needed. Typically, you can split long Automake, so your help may be needed. Typically, you can split long
file lists manually and use different installation directory names for file lists manually and use different installation directory names for
each list. For example, each list. For example,
skipping to change at line 1891 skipping to change at line 1938
longer installed automatically, and it should be safe to remove it. longer installed automatically, and it should be safe to remove it.
‘py-compile’ ‘py-compile’
This is used to byte-compile Python scripts. This is used to byte-compile Python scripts.
‘test-driver’ ‘test-driver’
This implements the default test driver offered by the parallel This implements the default test driver offered by the parallel
testsuite harness. testsuite harness.
‘texinfo.tex’ ‘texinfo.tex’
Not a program, this file is required for ‘make dvi’, ‘make ps’ and When Texinfo sources are in the package, this file is required for
‘make pdf’ to work when Texinfo sources are in the package. The ‘make dvi’, ‘make ps’ and ‘make pdf’. The latest version can be
latest version can be downloaded from downloaded from <https://www.gnu.org/software/texinfo/>. A working
<https://www.gnu.org/software/texinfo/>. TeX distribution, or at least a ‘tex’ program, is also required.
Furthermore, ‘make dist’ invokes ‘make dvi’, so these become
requirements for making a distribution with Texinfo sources.
‘ylwrap’ ‘ylwrap’
This program wraps ‘lex’ and ‘yacc’ to rename their output files. This program wraps ‘lex’ and ‘yacc’ to rename their output files.
It also ensures that, for instance, multiple ‘yacc’ instances can It also ensures that, for instance, multiple ‘yacc’ instances can
be invoked in a single directory in parallel. be invoked in a single directory in parallel.
File: automake.info, Node: Examples, Next: automake Invocation, Prev: General ities, Up: Top File: automake.info, Node: Examples, Next: automake Invocation, Prev: General ities, Up: Top
4 Some example packages 4 Some example packages
*********************** ***********************
skipping to change at line 2125 skipping to change at line 2174
reinstalled even if they already exist in the source tree. This reinstalled even if they already exist in the source tree. This
involves removing the file from the source tree before creating the involves removing the file from the source tree before creating the
new symlink (or, with ‘--copy’, copying the new file). new symlink (or, with ‘--copy’, copying the new file).
‘--foreign’ ‘--foreign’
Set the global strictness to ‘foreign’. For more information, see Set the global strictness to ‘foreign’. For more information, see
*note Strictness::. *note Strictness::.
‘--gnits’ ‘--gnits’
Set the global strictness to ‘gnits’. For more information, see Set the global strictness to ‘gnits’. For more information, see
*note Gnits::. *note Strictness::.
‘--gnu’ ‘--gnu’
Set the global strictness to ‘gnu’. For more information, see Set the global strictness to ‘gnu’. For more information, see
*note Gnits::. This is the default strictness. *note Strictness::. This is the default strictness.
‘--help’ ‘--help’
Print a summary of the command line options and exit. Print a summary of the command line options and exit.
‘-i’ ‘-i’
‘--ignore-deps’ ‘--ignore-deps’
This disables the dependency tracking feature in generated This disables the dependency tracking feature in generated
‘Makefile’s; see *note Dependencies::. ‘Makefile’s; see *note Dependencies::.
‘--include-deps’ ‘--include-deps’
skipping to change at line 2165 skipping to change at line 2214
future release. future release.
‘-v’ ‘-v’
‘--verbose’ ‘--verbose’
Cause Automake to print information about which files are being Cause Automake to print information about which files are being
read or created. read or created.
‘--version’ ‘--version’
Print the version number of Automake and exit. Print the version number of Automake and exit.
‘-W CATEGORY’ ‘-W CATEGORY[,CATEGORY...]’
‘--warnings=CATEGORY’ ‘--warnings=CATEGORY[,CATEGORY...]’
Output warnings falling in CATEGORY. CATEGORY can be one of: Output warnings about a CATEGORY of potential problems with the
package. CATEGORY can be any of:
‘cross’
Constructs compromising the ability to cross-compile the
package.
‘gnu’ ‘gnu’
warnings related to the GNU Coding Standards (*note Minor deviations from the GNU Coding Standards (*note
(standards)Top::). (standards)Top::).
‘obsolete’ ‘obsolete’
obsolete features or constructions Obsolete features or constructions.
‘override’ ‘override’
user redefinitions of Automake rules or variables Redefinitions of Automake rules or variables.
‘portability’ ‘portability’
portability issues (e.g., use of ‘make’ features that are Portability issues (e.g., use of ‘make’ features that are
known to be not portable) known to be not portable).
‘portability-recursive’
Recursive, or nested, Make variable expansions (‘$(foo$(x))’).
These are not universally supported, but are more portable
than the other non-portable constructs diagnosed by
‘-Wportability’. These warnings are turned on by
‘-Wportability’ but can then be turned off specifically by
‘-Wno-portability-recursive’.
‘extra-portability’ ‘extra-portability’
extra portability issues related to obscure tools. One Extra portability issues, related to rarely-used tools such as
example of such a tool is the Microsoft ‘lib’ archiver. the Microsoft ‘lib’ archiver.
‘syntax’ ‘syntax’
weird syntax, unused variables, typos Questionable syntax, unused variables, typos, etc.
‘unsupported’ ‘unsupported’
unsupported or incomplete features Unsupported or incomplete features.
‘all’ ‘all’
all the warnings Turn on all the above categories of warnings.
‘none’ ‘none’
turn off all the warnings Turn off all the above categories of warnings.
‘error’ ‘error’
treat warnings as errors Treat warnings as errors.
A category can be turned off by prefixing its name with ‘no-’. For A category can be turned off by prefixing its name with ‘no-’. For
instance, ‘-Wno-syntax’ will hide the warnings about unused instance, ‘-Wno-syntax’ will hide the warnings about unused
variables. variables.
The categories output by default are ‘obsolete’, ‘syntax’ and Warnings in the ‘gnu’, ‘obsolete’, ‘portability’, ‘syntax’, and
‘unsupported’. Additionally, ‘gnu’ and ‘portability’ are enabled ‘unsupported’ categories are turned on by default. The ‘gnu’ and
in ‘--gnu’ and ‘--gnits’ strictness. ‘portability’ categories are turned off in ‘--foreign’ strictness.
Turning off ‘portability’ will also turn off ‘extra-portability’, Turning off ‘portability’ will also turn off ‘extra-portability’,
and similarly turning on ‘extra-portability’ will also turn on and similarly turning on ‘extra-portability’ will also turn on
‘portability’. However, turning on ‘portability’ or turning off ‘portability’. However, turning on ‘portability’ or turning off
‘extra-portability’ will not affect the other category. ‘extra-portability’ will not affect the other category.
Unknown warning categories supplied as an argument to ‘-W’ will
themselves produce a warning, in the ‘unsupported’ category. This
warning is never treated as an error.
The environment variable ‘WARNINGS’ can contain a comma separated The environment variable ‘WARNINGS’ can contain a comma separated
list of categories to enable. It will be taken into account before list of categories to enable. ‘-W’ settings on the command line
the command-line switches, this way ‘-Wnone’ will also ignore any take precedence; for instance, ‘-Wnone’ also turns off any warning
warning category enabled by ‘WARNINGS’. This variable is also used categories enabled by ‘WARNINGS’.
by other tools like ‘autoconf’; unknown categories are ignored for
this reason. Unknown warning categories named in ‘WARNINGS’ are silently
ignored.
If the environment variable ‘AUTOMAKE_JOBS’ contains a positive If the environment variable ‘AUTOMAKE_JOBS’ contains a positive
number, it is taken as the maximum number of Perl threads to use in number, it is taken as the maximum number of Perl threads to use in
‘automake’ for generating multiple ‘Makefile.in’ files concurrently. ‘automake’ for generating multiple ‘Makefile.in’ files concurrently.
This is an experimental feature. This is an experimental feature.
File: automake.info, Node: configure, Next: Directories, Prev: automake Invoc ation, Up: Top File: automake.info, Node: configure, Next: Directories, Prev: automake Invoc ation, Up: Top
6 Scanning ‘configure.ac’, using ‘aclocal’ 6 Scanning ‘configure.ac’, using ‘aclocal’
****************************************** ******************************************
skipping to change at line 3307 skipping to change at line 3373
will instead invoke the ‘missing’ script, in order to give useful will instead invoke the ‘missing’ script, in order to give useful
advice to the user about the missing maintainer tool. *Note advice to the user about the missing maintainer tool. *Note
maintainer-mode::, for more information on when the ‘missing’ maintainer-mode::, for more information on when the ‘missing’
script is appropriate. script is appropriate.
‘AM_SILENT_RULES’ ‘AM_SILENT_RULES’
Control the machinery for less verbose build output (*note Automake Control the machinery for less verbose build output (*note Automake
Silent Rules::). Silent Rules::).
‘AM_WITH_DMALLOC’ ‘AM_WITH_DMALLOC’
Add support for the Dmalloc package (http://dmalloc.com/). If the Add support for the Dmalloc package (https://dmalloc.com/). If the
user runs ‘configure’ with ‘--with-dmalloc’, then define user runs ‘configure’ with ‘--with-dmalloc’, then define
‘WITH_DMALLOC’ and add ‘-ldmalloc’ to ‘LIBS’. ‘WITH_DMALLOC’ and add ‘-ldmalloc’ to ‘LIBS’.
File: automake.info, Node: Obsolete Macros, Next: Private Macros, Prev: Publi c Macros, Up: Macros File: automake.info, Node: Obsolete Macros, Next: Private Macros, Prev: Publi c Macros, Up: Macros
6.4.2 Obsolete Macros 6.4.2 Obsolete Macros
--------------------- ---------------------
Although using some of the following macros was required in past Although using some of the following macros was required in past
releases, you should not use any of them in new code. _All these macros releases, you should not use any of them in new code. _All these macros
skipping to change at line 3683 skipping to change at line 3749
to avoid this check is to use the ‘AC_SUBST’ method to declare to avoid this check is to use the ‘AC_SUBST’ method to declare
conditional directories; since ‘automake’ does not know the values of conditional directories; since ‘automake’ does not know the values of
‘AC_SUBST’ variables it cannot ensure the corresponding directory ‘AC_SUBST’ variables it cannot ensure the corresponding directory
exists. exists.
File: automake.info, Node: Alternative, Next: Subpackages, Prev: Conditional Subdirectories, Up: Directories File: automake.info, Node: Alternative, Next: Subpackages, Prev: Conditional Subdirectories, Up: Directories
7.3 An Alternative Approach to Subdirectories 7.3 An Alternative Approach to Subdirectories
============================================= =============================================
If you’ve ever read Peter Miller’s excellent paper, Recursive Make If you’ve ever read Peter Miller’s excellent paper, ‘Recursive Make
Considered Harmful (http://miller.emu.id.au/pmiller/books/rmch/), the Considered Harmful’, the preceding sections on the use of make recursion
preceding sections on the use of make recursion will probably come as will probably come as unwelcome advice. For those who haven’t read the
unwelcome advice. For those who haven’t read the paper, Miller’s main paper, Miller’s main thesis is that recursive ‘make’ invocations are
thesis is that recursive ‘make’ invocations are both slow and both slow and error-prone.
error-prone.
Automake provides sufficient cross-directory support (1) to enable Automake provides sufficient cross-directory support (1) to enable
you to write a single ‘Makefile.am’ for a complex multi-directory you to write a single ‘Makefile.am’ for a complex multi-directory
package. package.
By default an installable file specified in a subdirectory will have By default an installable file specified in a subdirectory will have
its directory name stripped before installation. For instance, in this its directory name stripped before installation. For instance, in this
example, the header file will be installed as ‘$(includedir)/stdio.h’: example, the header file will be installed as ‘$(includedir)/stdio.h’:
include_HEADERS = inc/stdio.h include_HEADERS = inc/stdio.h
skipping to change at line 4211 skipping to change at line 4276
8.3.1 The Libtool Concept 8.3.1 The Libtool Concept
------------------------- -------------------------
Libtool abstracts shared and static libraries into a unified concept Libtool abstracts shared and static libraries into a unified concept
henceforth called “libtool libraries”. Libtool libraries are files henceforth called “libtool libraries”. Libtool libraries are files
using the ‘.la’ suffix, and can designate a static library, a shared using the ‘.la’ suffix, and can designate a static library, a shared
library, or maybe both. Their exact nature cannot be determined until library, or maybe both. Their exact nature cannot be determined until
‘./configure’ is run: not all platforms support all kinds of libraries, ‘./configure’ is run: not all platforms support all kinds of libraries,
and users can explicitly select which libraries should be built. and users can explicitly select which libraries should be built.
(However the package’s maintainers can tune the default; *note The (However the package’s maintainers can tune the default; *note The
AC_PROG_LIBTOOL’ macro: (libtool)AC_PROG_LIBTOOL.) LT_INIT’ macro: (libtool)LT_INIT.)
Because object files for shared and static libraries must be compiled Because object files for shared and static libraries must be compiled
differently, libtool is also used during compilation. Object files differently, libtool is also used during compilation. Object files
built by libtool are called “libtool objects”: these are files using the built by libtool are called “libtool objects”: these are files using the
‘.lo’ suffix. Libtool libraries are built from these libtool objects. ‘.lo’ suffix. Libtool libraries are built from these libtool objects.
You should not assume anything about the structure of ‘.la’ or ‘.lo’ You should not assume anything about the structure of ‘.la’ or ‘.lo’
files and how libtool constructs them: this is libtool’s concern, and files and how libtool constructs them: this is libtool’s concern, and
the last thing one wants is to learn about libtool’s guts. However the the last thing one wants is to learn about libtool’s guts. However the
existence of these files matters, because they are used as targets and existence of these files matters, because they are used as targets and
skipping to change at line 5513 skipping to change at line 5578
in ‘foo_LDADD’ and ‘libfoo_la_LIBADD’, then Automake would have issued a in ‘foo_LDADD’ and ‘libfoo_la_LIBADD’, then Automake would have issued a
warning. warning.
* Menu: * Menu:
* How the Linker is Chosen:: Automatic linker selection * How the Linker is Chosen:: Automatic linker selection
---------- Footnotes ---------- ---------- Footnotes ----------
(1) For example, the cfortran package (1) For example, the cfortran package
(http://www-zeus.desy.de/~burow/cfortran/) addresses all of these (https://www-zeus.desy.de/~burow/cfortran/) addresses all of these
inter-language issues, and runs under nearly all Fortran 77, C and C++ inter-language issues, and runs under nearly all Fortran 77, C and C++
compilers on nearly all platforms. However, ‘cfortran’ is not yet Free compilers on nearly all platforms. However, ‘cfortran’ is not yet Free
Software, but it will be in the next major release. Software, but it will be in the next major release.
File: automake.info, Node: How the Linker is Chosen, Up: Mixing Fortran 77 Wit h C and C++ File: automake.info, Node: How the Linker is Chosen, Up: Mixing Fortran 77 Wit h C and C++
8.14.3.1 How the Linker is Chosen 8.14.3.1 How the Linker is Chosen
................................. .................................
When a program or library mixes several languages, Automake chooses the When a program or library mixes several languages, Automake chooses the
skipping to change at line 5648 skipping to change at line 5713
When linking, ‘gcj’ requires that the main class be specified using When linking, ‘gcj’ requires that the main class be specified using
the ‘--main=’ option. The easiest way to do this is to use the the ‘--main=’ option. The easiest way to do this is to use the
‘_LDFLAGS’ variable for the program. ‘_LDFLAGS’ variable for the program.
File: automake.info, Node: Vala Support, Next: Support for Other Languages, P rev: Java Support with gcj, Up: Programs File: automake.info, Node: Vala Support, Next: Support for Other Languages, P rev: Java Support with gcj, Up: Programs
8.17 Vala Support 8.17 Vala Support
================= =================
Automake provides initial support for Vala Automake provides initial support for Vala
(<http://www.vala-project.org/>). This requires valac version 0.7.0 or (<https://www.vala-project.org/>). This requires valac version 0.7.0 or
later, and currently requires the user to use GNU ‘make’. later, and currently requires the user to use GNU ‘make’.
foo_SOURCES = foo.vala bar.vala zardoc.c foo_SOURCES = foo.vala bar.vala zardoc.c
Any ‘.vala’ file listed in a ‘_SOURCES’ variable will be compiled Any ‘.vala’ file listed in a ‘_SOURCES’ variable will be compiled
into C code by the Vala compiler. The generated ‘.c’ files are into C code by the Vala compiler. The generated ‘.c’ files are
distributed. The end user does not need to have a Vala compiler distributed. The end user does not need to have a Vala compiler
installed. installed.
Automake ships with an Autoconf macro called ‘AM_PROG_VALAC’ that Automake ships with an Autoconf macro called ‘AM_PROG_VALAC’ that
will locate the Vala compiler and optionally check its version number. will locate the Vala compiler and optionally check its version number.
-- Macro: AM_PROG_VALAC ([MINIMUM-VERSION], [ACTION-IF-FOUND], -- Macro: AM_PROG_VALAC ([MINIMUM-VERSION], [ACTION-IF-FOUND],
[ACTION-IF-NOT-FOUND]) Search for a Vala compiler in ‘PATH’. If it [ACTION-IF-NOT-FOUND]) Search for a Vala compiler in ‘PATH’. If it
is found, the variable ‘VALAC’ is set to point to it (see below for is found, the variable ‘VALAC’ is set to point to it (see below for
more details). This macro takes three optional arguments. The more details). This macro takes three optional arguments. The
first argument, if present, is the minimum version of the Vala first argument, if present, is the minimum version of the Vala API
compiler required to compile this package. If a compiler is found required to compile this package. For Vala releases, this is the
and satisfies MINIMUM-VERSION, then ACTION-IF-FOUND is run (this same as the major and minor release number; e.g., when ‘valac
defaults to do nothing). Otherwise, ACTION-IF-NOT-FOUND is run. --version’ reports ‘0.48.7’, ‘valac --api-version’ reports ‘0.48’.
If ACTION-IF-NOT-FOUND is not specified, the default value is to If a compiler is found and satisfies MINIMUM-VERSION, then
print a warning in case no compiler is found, or if a too-old ACTION-IF-FOUND is run (this defaults to do nothing). Otherwise,
version of the compiler is found. ACTION-IF-NOT-FOUND is run. If ACTION-IF-NOT-FOUND is not
specified, the default value is to print a warning in case no
compiler is found, or if a too-old version of the compiler is
found.
There are a few variables that are used when compiling Vala sources: There are a few variables that are used when compiling Vala sources:
‘VALAC’ ‘VALAC’
Absolute path to the Vala compiler, or simply ‘valac’ if no Absolute path to the Vala compiler, or simply ‘valac’ if no
suitable Vala compiler could be found at configure runtime. suitable Vala compiler could be found at configure runtime.
‘VALAFLAGS’ ‘VALAFLAGS’
Additional arguments for the Vala compiler. Additional arguments for the Vala compiler.
skipping to change at line 5972 skipping to change at line 6040
(regardless of the dependencies), or accurate dependencies exist and (regardless of the dependencies), or accurate dependencies exist and
they can be used to decide whether ‘foo.o’ should be rebuilt. they can be used to decide whether ‘foo.o’ should be rebuilt.
It’s a different story if ‘foo.h’ doesn’t exist by the first ‘make’ It’s a different story if ‘foo.h’ doesn’t exist by the first ‘make’
run. For instance, there might be a rule to build ‘foo.h’. This time run. For instance, there might be a rule to build ‘foo.h’. This time
‘file.o’’s build will fail because the compiler can’t find ‘foo.h’. ‘file.o’’s build will fail because the compiler can’t find ‘foo.h’.
‘make’ failed to trigger the rule to build ‘foo.h’ first by lack of ‘make’ failed to trigger the rule to build ‘foo.h’ first by lack of
dependency information. dependency information.
The ‘BUILT_SOURCES’ variable is a workaround for this problem. A The ‘BUILT_SOURCES’ variable is a workaround for this problem. A
source file listed in ‘BUILT_SOURCES’ is made on ‘make all’ or ‘make source file listed in ‘BUILT_SOURCES’ is made when ‘make all’, ‘make
check’ (or even ‘make install’) before other targets are processed. check’, ‘make install’, ‘make install-exec’ (or ‘make dist’) is run,
However, such a source file is not _compiled_ unless explicitly before other targets are processed. However, such a source file is not
requested by mentioning it in some other ‘_SOURCES’ variable. _compiled_ unless explicitly requested by mentioning it in some other
‘_SOURCES’ variable.
So, to conclude our introductory example, we could use ‘BUILT_SOURCES So, to conclude our introductory example, we could use ‘BUILT_SOURCES
= foo.h’ to ensure ‘foo.h’ gets built before any other target (including = foo.h’ to ensure ‘foo.h’ gets built before any other target (including
‘foo.o’) during ‘make all’ or ‘make check’. ‘foo.o’) during ‘make all’ or ‘make check’.
‘BUILT_SOURCES’ is actually a bit of a misnomer, as any file which ‘BUILT_SOURCES’ is actually a bit of a misnomer, as any file which
must be created early in the build process can be listed in this must be created early in the build process can be listed in this
variable. Moreover, all built sources do not necessarily have to be variable. Moreover, all built sources do not necessarily have to be
listed in ‘BUILT_SOURCES’. For instance, a generated ‘.c’ file doesn’t listed in ‘BUILT_SOURCES’. For instance, a generated ‘.c’ file doesn’t
need to appear in ‘BUILT_SOURCES’ (unless it is included by another need to appear in ‘BUILT_SOURCES’ (unless it is included by another
source), because it’s a known dependency of the associated object. source), because it’s a known dependency of the associated object.
It might be important to emphasize that ‘BUILT_SOURCES’ is honored To emphasize, ‘BUILT_SOURCES’ is honored only by ‘make all’, ‘make
only by ‘make all’, ‘make check’ and ‘make install’. This means you check’, ‘make install’, and ‘make install-exec’ (and ‘make dist’). This
cannot build a specific target (e.g., ‘make foo’) in a clean tree if it means you cannot build an arbitrary target (e.g., ‘make foo’) in a clean
depends on a built source. However it will succeed if you have run tree if it depends on a built source. However it will succeed if you
‘make all’ earlier, because accurate dependencies are already available. have run ‘make all’ earlier, because accurate dependencies are already
available.
The next section illustrates and discusses the handling of built The next section illustrates and discusses the handling of built
sources on a toy example. sources on a toy example.
* Menu: * Menu:
* Built Sources Example:: Several ways to handle built sources. * Built Sources Example:: Several ways to handle built sources.
File: automake.info, Node: Built Sources Example, Up: Sources File: automake.info, Node: Built Sources Example, Up: Sources
skipping to change at line 6398 skipping to change at line 6468
Assuming ACTION-IF-NOT-FOUND is used (otherwise ‘./configure’ will Assuming ACTION-IF-NOT-FOUND is used (otherwise ‘./configure’ will
abort if Python is absent), the value of ‘PYTHON’ can be used to abort if Python is absent), the value of ‘PYTHON’ can be used to
set up a conditional in order to disable the relevant part of a set up a conditional in order to disable the relevant part of a
build as follows. build as follows.
AM_PATH_PYTHON(,, [:]) AM_PATH_PYTHON(,, [:])
AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :]) AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
‘PYTHON_VERSION’ ‘PYTHON_VERSION’
The Python version number, in the form MAJOR.MINOR (e.g., ‘2.5’). The Python version number, in the form MAJOR.MINOR (e.g., ‘2.5’).
This is currently the value of ‘sys.version[:3]’. This is currently the value of ‘'%u.%u' % sys.version_info[:2]’.
‘PYTHON_PREFIX’ ‘PYTHON_PREFIX’
The string ‘${prefix}’. This term may be used in future work that The string ‘${prefix}’. This term may be used in future work that
needs the contents of Python’s ‘sys.prefix’, but general consensus needs the contents of Python’s ‘sys.prefix’, but general consensus
is to always use the value from ‘configure’. is to always use the value from ‘configure’.
‘PYTHON_EXEC_PREFIX’ ‘PYTHON_EXEC_PREFIX’
The string ‘${exec_prefix}’. This term may be used in future work The string ‘${exec_prefix}’. This term may be used in future work
that needs the contents of Python’s ‘sys.exec_prefix’, but general that needs the contents of Python’s ‘sys.exec_prefix’, but general
consensus is to always use the value from ‘configure’. consensus is to always use the value from ‘configure’.
skipping to change at line 6603 skipping to change at line 6673
‘TEXI2PDF’ ‘TEXI2PDF’
The name of the command that translates a ‘.texi’ file into a The name of the command that translates a ‘.texi’ file into a
‘.pdf’ file. This defaults to ‘$(TEXI2DVI) --pdf --batch’. ‘.pdf’ file. This defaults to ‘$(TEXI2DVI) --pdf --batch’.
‘DVIPS’ ‘DVIPS’
The name of the command that builds a ‘.ps’ file out of a ‘.dvi’ The name of the command that builds a ‘.ps’ file out of a ‘.dvi’
file. This defaults to ‘dvips’. file. This defaults to ‘dvips’.
‘TEXINFO_TEX’ ‘TEXINFO_TEX’
If your package has Texinfo files in many directories, you can use If your package has Texinfo files in many directories, you can use
the variable ‘TEXINFO_TEX’ to tell Automake where to find the the variable ‘TEXINFO_TEX’ to tell Automake where to find the
canonical ‘texinfo.tex’ for your package. The value of this canonical ‘texinfo.tex’ for your package. The value of this
variable should be the relative path from the current ‘Makefile.am’ variable should be the relative path from the current ‘Makefile.am’
to ‘texinfo.tex’: to ‘texinfo.tex’:
TEXINFO_TEX = ../doc/texinfo.tex TEXINFO_TEX = ../doc/texinfo.tex
File: automake.info, Node: Man Pages, Prev: Texinfo, Up: Documentation File: automake.info, Node: Man Pages, Prev: Texinfo, Up: Documentation
skipping to change at line 6903 skipping to change at line 6972
14.1 Basics of Distribution 14.1 Basics of Distribution
=========================== ===========================
The ‘dist’ rule in the generated ‘Makefile.in’ can be used to generate a The ‘dist’ rule in the generated ‘Makefile.in’ can be used to generate a
gzipped ‘tar’ file and other flavors of archive for distribution. The gzipped ‘tar’ file and other flavors of archive for distribution. The
file is named based on the ‘PACKAGE’ and ‘VERSION’ variables file is named based on the ‘PACKAGE’ and ‘VERSION’ variables
automatically defined by either the ‘AC_INIT’ invocation or by a automatically defined by either the ‘AC_INIT’ invocation or by a
_deprecated_ two-arguments invocation of the ‘AM_INIT_AUTOMAKE’ macro _deprecated_ two-arguments invocation of the ‘AM_INIT_AUTOMAKE’ macro
(see *note Public Macros:: for how these variables get their values, (see *note Public Macros:: for how these variables get their values,
from either defaults or explicit values – it’s slightly trickier than from either defaults or explicit values—it’s slightly trickier than one
one would expect). More precisely the gzipped ‘tar’ file is named would expect). More precisely the gzipped ‘tar’ file is named
‘${PACKAGE}-${VERSION}.tar.gz’. You can use the ‘make’ variable ‘${PACKAGE}-${VERSION}.tar.gz’.
‘GZIP_ENV’ to control how gzip is run. The default setting is ‘--best’.
You can use the ‘make’ variable ‘GZIP_ENV’ to control how gzip is
run. The default setting is ‘--best’.
You can set the environment variable ‘TAR’ to override the tar
program used; it defaults to ‘tar’.
For the most part, the files to distribute are automatically found by For the most part, the files to distribute are automatically found by
Automake: all source files are automatically included in a distribution, Automake: all source files are automatically included in a distribution,
as are all ‘Makefile.am’ and ‘Makefile.in’ files. Automake also has a as are all ‘Makefile.am’ and ‘Makefile.in’ files. Automake also has a
built-in list of commonly used files that are automatically included if built-in list of commonly used files that are automatically included if
they are found in the current directory (either physically, or as the they are found in the current directory (either physically, or as the
target of a ‘Makefile.am’ rule); this list is printed by ‘automake target of a ‘Makefile.am’ rule); this list is printed by ‘automake
--help’. Note that some files in this list are actually distributed --help’. Note that some files in this list are actually distributed
only if other certain conditions hold (for example, the ‘config.h.top’ only if other certain conditions hold (for example, the ‘config.h.top’
and ‘config.h.bot’ files are automatically distributed only if, e.g., and ‘config.h.bot’ files are automatically distributed only if, e.g.,
skipping to change at line 6980 skipping to change at line 7054
Occasionally it is useful to be able to change the distribution before Occasionally it is useful to be able to change the distribution before
it is packaged up. If the ‘dist-hook’ rule exists, it is run after the it is packaged up. If the ‘dist-hook’ rule exists, it is run after the
distribution directory is filled, but before the actual distribution distribution directory is filled, but before the actual distribution
archives are created. One way to use this is for removing unnecessary archives are created. One way to use this is for removing unnecessary
files that get recursively included by specifying a directory in files that get recursively included by specifying a directory in
‘EXTRA_DIST’: ‘EXTRA_DIST’:
EXTRA_DIST = doc EXTRA_DIST = doc
dist-hook: dist-hook:
chmod -R u+w $(distdir)/doc
rm -rf `find $(distdir)/doc -type d -name .svn` rm -rf `find $(distdir)/doc -type d -name .svn`
Note that the ‘dist-hook’ recipe shouldn’t assume that the regular files Note that the ‘dist-hook’ recipe shouldn’t assume that the regular files
in the distribution directory are writable; this might not be the case in the distribution directory are writable; this might not be the case
if one is packaging from a read-only source tree, or when a ‘make if one is packaging from a read-only source tree, or when a ‘make
distcheck’ is being done. For similar reasons, the recipe shouldn’t distcheck’ is being done. For similar reasons, the recipe shouldn’t
assume that the subdirectories put into the distribution directory as an assume that the subdirectories put into the distribution directory as an
effect of having them listed in ‘EXTRA_DIST’ are writable. So, if the effect of having them listed in ‘EXTRA_DIST’ are writable. So, if the
‘dist-hook’ recipe wants to modify the content of an existing file (or ‘dist-hook’ recipe wants to modify the content of an existing file (or
‘EXTRA_DIST’ subdirectory) in the distribution directory, it should ‘EXTRA_DIST’ subdirectory) in the distribution directory, it should
explicitly to make it writable first: explicitly to make it writable first:
EXTRA_DIST = README doc EXTRA_DIST = README doc
dist-hook: dist-hook:
chmod u+w $(distdir)/README $(distdir)/doc chmod u+w $(distdir)/README $(distdir)/doc
echo "Distribution date: `date`" >> README echo "Distribution date: `date`" >> $(distdir)/README
rm -f $(distdir)/doc/HACKING rm -f $(distdir)/doc/HACKING
Two variables that come handy when writing ‘dist-hook’ rules are Two variables that come handy when writing ‘dist-hook’ rules are
‘$(distdir)’ and ‘$(top_distdir)’. ‘$(distdir)’ and ‘$(top_distdir)’.
‘$(distdir)’ points to the directory where the ‘dist’ rule will copy ‘$(distdir)’ points to the directory where the ‘dist’ rule will copy
files from the current directory before creating the tarball. If you files from the current directory before creating the tarball. If you
are at the top-level directory, then ‘distdir = $(PACKAGE)-$(VERSION)’. are at the top-level directory, then ‘distdir = $(PACKAGE)-$(VERSION)’.
When used from subdirectory named ‘foo/’, then ‘distdir = When used from subdirectory named ‘foo/’, then ‘distdir =
../$(PACKAGE)-$(VERSION)/foo’. ‘$(distdir)’ can be a relative or ../$(PACKAGE)-$(VERSION)/foo’. ‘$(distdir)’ can be a relative or
skipping to change at line 7025 skipping to change at line 7100
the package where ‘make dist’ was run, not to any sub-packages involved. the package where ‘make dist’ was run, not to any sub-packages involved.
File: automake.info, Node: Checking the Distribution, Next: The Types of Distr ibutions, Prev: The dist Hook, Up: Dist File: automake.info, Node: Checking the Distribution, Next: The Types of Distr ibutions, Prev: The dist Hook, Up: Dist
14.4 Checking the Distribution 14.4 Checking the Distribution
============================== ==============================
Automake also generates a ‘distcheck’ rule that can be of help to ensure Automake also generates a ‘distcheck’ rule that can be of help to ensure
that a given distribution will actually work. Simplifying a bit, we can that a given distribution will actually work. Simplifying a bit, we can
say this rule first makes a distribution, and then, _operating from it_, say this rule first makes a distribution, and then, _operating from it_,
takes the following steps: takes the following steps (in this order):
• tries to do a ‘VPATH’ build (*note VPATH Builds::), with the • tries to do a ‘VPATH’ build (*note VPATH Builds::), with the
‘srcdir’ and all its content made _read-only_; ‘srcdir’ and all its content made _read-only_;
• tries to make the printable documentation, if any (with ‘make
dvi’),
• runs the test suite (with ‘make check’) on this fresh build; • runs the test suite (with ‘make check’) on this fresh build;
• installs the package in a temporary directory (with ‘make • installs the package in a temporary directory (with ‘make
install’), and runs the test suite on the resulting installation install’), and runs the test suite on the resulting installation
(with ‘make installcheck’); (with ‘make installcheck’);
• checks that the package can be correctly uninstalled (by ‘make • checks that the package can be correctly uninstalled (by ‘make
uninstall’) and cleaned (by ‘make distclean’); uninstall’) and cleaned (by ‘make distclean’);
• finally, makes another tarball to ensure the distribution is • finally, makes another tarball to ensure the distribution is
self-contained. self-contained.
All of these actions are performed in a temporary directory. Please All of these actions are performed in a temporary directory. The
note that the exact location and the exact structure of such a directory exact location and the exact structure of such a directory (where the
(where the read-only sources are placed, how the temporary build and read-only sources are placed, how the temporary build and install
install directories are named and how deeply they are nested, etc.) is directories are named and how deeply they are nested, etc.) is to be
to be considered an implementation detail, which can change at any time; considered an implementation detail, which can change at any time; so do
so do not rely on it. not rely on it.
DISTCHECK_CONFIGURE_FLAGS DISTCHECK_CONFIGURE_FLAGS
------------------------- -------------------------
Building the package involves running ‘./configure’. If you need to Building the package involves running ‘./configure’. If you need to
supply additional flags to ‘configure’, define them in the supply additional flags to ‘configure’, define them in the
‘AM_DISTCHECK_CONFIGURE_FLAGS’ variable in your top-level ‘Makefile.am’. ‘AM_DISTCHECK_CONFIGURE_FLAGS’ variable in your top-level ‘Makefile.am’.
The user can still extend or override the flags provided there by The user can still extend or override the flags provided there by
defining the ‘DISTCHECK_CONFIGURE_FLAGS’ variable, on the command line defining the ‘DISTCHECK_CONFIGURE_FLAGS’ variable, on the command line
when invoking ‘make’. It’s worth noting that ‘make distcheck’ needs when invoking ‘make’. It’s worth noting that ‘make distcheck’ needs
skipping to change at line 7071 skipping to change at line 7148
justified. GNU ‘m4’ offers an example. GNU ‘m4’ configures by default justified. GNU ‘m4’ offers an example. GNU ‘m4’ configures by default
with its experimental and seldom used "changeword" feature disabled; so with its experimental and seldom used "changeword" feature disabled; so
in this case it is useful to have ‘make distcheck’ run configure with in this case it is useful to have ‘make distcheck’ run configure with
the ‘--with-changeword’ option, to ensure that the code for changeword the ‘--with-changeword’ option, to ensure that the code for changeword
support still compiles correctly. GNU ‘m4’ also employs the support still compiles correctly. GNU ‘m4’ also employs the
‘AM_DISTCHECK_CONFIGURE_FLAGS’ variable to stress-test the use of ‘AM_DISTCHECK_CONFIGURE_FLAGS’ variable to stress-test the use of
‘--program-prefix=g’, since at one point the ‘m4’ build system had a bug ‘--program-prefix=g’, since at one point the ‘m4’ build system had a bug
where ‘make installcheck’ was wrongly assuming it could blindly test where ‘make installcheck’ was wrongly assuming it could blindly test
"‘m4’", rather than the just-installed "‘gm4’". "‘m4’", rather than the just-installed "‘gm4’".
dvi and distcheck
-----------------
Ordinarily, ‘make distcheck’ runs ‘make dvi’. It does nothing if the
distribution contains no Texinfo sources. If the distribution does
contain a Texinfo manual, by default the ‘dvi’ target will run TeX to
make sure it can be successfully processed (*note Texinfo::).
However, you may wish to test the manual by producing ‘pdf’ (e.g., if
your manual uses images in formats other than ‘eps’), ‘html’ (if you
don’t have TeX at all), some other format, or just skip the test
entirely (not recommended). You can change the target that is run by
setting the variable ‘AM_DISTCHECK_DVI_TARGET’ in your ‘Makefile.am’;
for example,
AM_DISTCHECK_DVI_TARGET = pdf
To make ‘dvi’ into a do-nothing target, see the example for
‘EMPTY_AUTOMAKE_TARGETS’ in *note Third-Party Makefiles::.
distcheck-hook distcheck-hook
-------------- --------------
If the ‘distcheck-hook’ rule is defined in your top-level ‘Makefile.am’, If the ‘distcheck-hook’ rule is defined in your top-level ‘Makefile.am’,
then it will be invoked by ‘distcheck’ after the new distribution has then it will be invoked by ‘distcheck’ after the new distribution has
been unpacked, but before the unpacked copy is configured and built. been unpacked, but before the unpacked copy is configured and built.
Your ‘distcheck-hook’ can do almost anything, though as always caution Your ‘distcheck-hook’ can do almost anything, though as always caution
is advised. Generally this hook is used to check for potential is advised. Generally this hook is used to check for potential
distribution errors not caught by the standard mechanism. Note that distribution errors not caught by the standard mechanism. Note that
‘distcheck-hook’ as well as ‘AM_DISTCHECK_CONFIGURE_FLAGS’ and ‘distcheck-hook’ as well as ‘AM_DISTCHECK_CONFIGURE_FLAGS’ and
skipping to change at line 7261 skipping to change at line 7358
wildly, and we’ll attempt no precise definition. wildly, and we’ll attempt no precise definition.
A test is said to _pass_ when it can determine that the condition or A test is said to _pass_ when it can determine that the condition or
behaviour it means to verify holds, and is said to _fail_ when it can behaviour it means to verify holds, and is said to _fail_ when it can
determine that such condition of behaviour does _not_ hold. determine that such condition of behaviour does _not_ hold.
Sometimes, tests can rely on non-portable tools or prerequisites, or Sometimes, tests can rely on non-portable tools or prerequisites, or
simply make no sense on a given system (for example, a test checking a simply make no sense on a given system (for example, a test checking a
Windows-specific feature makes no sense on a GNU/Linux system). In this Windows-specific feature makes no sense on a GNU/Linux system). In this
case, accordingly to the definition above, the tests can neither be case, accordingly to the definition above, the tests can neither be
considered passed nor failed; instead, they are _skipped_i.e., they considered passed nor failed; instead, they are _skipped_- –i.e., they
are not run, or their result is anyway ignored for what concerns the are not run, or their result is anyway ignored for what concerns the
count of failures and successes. Skips are usually explicitly reported count of failures and successes. Skips are usually explicitly reported
though, so that the user will be aware that not all of the testsuite has though, so that the user will be aware that not all of the testsuite has
really run. really run.
It’s not uncommon, especially during early development stages, that It’s not uncommon, especially during early development stages, that
some tests fail for known reasons, and that the developer doesn’t want some tests fail for known reasons, and that the developer doesn’t want
to tackle these failures immediately (this is especially true when the to tackle these failures immediately (this is especially true when the
failing tests deal with corner cases). In this situation, the better failing tests deal with corner cases). In this situation, the better
policy is to declare that each of those failures is an _expected policy is to declare that each of those failures is an _expected
skipping to change at line 7315 skipping to change at line 7412
Test scripts can be executed serially or concurrently. Automake Test scripts can be executed serially or concurrently. Automake
supports both these kinds of test execution, with the parallel test supports both these kinds of test execution, with the parallel test
harness being the default. The concurrent test harness relies on the harness being the default. The concurrent test harness relies on the
concurrence capabilities (if any) offered by the underlying ‘make’ concurrence capabilities (if any) offered by the underlying ‘make’
implementation, and can thus only be as good as those are. implementation, and can thus only be as good as those are.
By default, only the exit statuses of the test scripts are considered By default, only the exit statuses of the test scripts are considered
when determining the testsuite outcome. But Automake allows also the when determining the testsuite outcome. But Automake allows also the
use of more complex test protocols, either standard (*note Using the TAP use of more complex test protocols, either standard (*note Using the TAP
test protocol::) or custom (*note Custom Test Drivers::). Note that you test protocol::) or custom (*note Custom Test Drivers::). You can’t
can’t enable such protocols when the serial harness is used, though. In enable such protocols when the serial harness is used, though. In the
the rest of this section we are going to concentrate mostly on rest of this section we are going to concentrate mostly on protocol-less
protocol-less tests, since we cover test protocols in a later section tests, since we cover test protocols in a later section (again, *note
(again, *note Custom Test Drivers::). Custom Test Drivers::).
When no test protocol is in use, an exit status of 0 from a test When no test protocol is in use, an exit status of 0 from a test
script will denote a success, an exit status of 77 a skipped test, an script will denote a success, an exit status of 77 a skipped test, an
exit status of 99 a hard error, and any other exit status will denote a exit status of 99 a hard error, and any other exit status will denote a
failure. failure.
You may define the variable ‘XFAIL_TESTS’ to a list of tests (usually You may define the variable ‘XFAIL_TESTS’ to a list of tests (usually
a subset of ‘TESTS’) that are expected to fail; this will effectively a subset of ‘TESTS’) that are expected to fail; this will effectively
reverse the result of those tests (with the provision that skips and reverse the result of those tests (with the provision that skips and
hard errors remain untouched). You may also instruct the testsuite hard errors remain untouched). You may also instruct the testsuite
skipping to change at line 7359 skipping to change at line 7456
PASS: zardoz.tap 1 - Daemon started PASS: zardoz.tap 1 - Daemon started
PASS: zardoz.tap 2 - Daemon responding PASS: zardoz.tap 2 - Daemon responding
SKIP: zardoz.tap 3 - Daemon uses /proc # SKIP /proc is not mounted SKIP: zardoz.tap 3 - Daemon uses /proc # SKIP /proc is not mounted
PASS: zardoz.tap 4 - Daemon stopped PASS: zardoz.tap 4 - Daemon stopped
SKIP: bar.sh SKIP: bar.sh
PASS: mu.tap 1 PASS: mu.tap 1
XFAIL: mu.tap 2 # TODO frobnication not yet implemented XFAIL: mu.tap 2 # TODO frobnication not yet implemented
A testsuite summary (expected to report at least the number of run, A testsuite summary (expected to report at least the number of run,
skipped and failed tests) will be printed at the end of the testsuite skipped and failed tests) will be printed at the end of the testsuite
run. run. By default, the first line of the summary has the form:
Testsuite summary for PACKAGE-STRING
where PACKAGE-STRING is the name and version of the package. If you
have several independent test suites for different parts of the package,
though, it can be misleading for each suite to imply it is for the whole
package. Or, in complex projects, you may wish to add the current
directory or other information to the testsuite header line. So you can
override the ‘ for PACKAGE-STRING’ suffix on that line by setting the
‘AM_TESTSUITE_SUMMARY_HEADER’ variable. The value of this variable is
used unquoted in a shell echo command, so you must include any necessary
quotes. For example, the default value is
AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
including the double quotes (interpreted by the shell) and the leading
space (since the value is output directly after the ‘Testsuite
summary’). The ‘$(PACKAGE_STRING)’ is substituted by ‘make’.
If the standard output is connected to a capable terminal, then the If the standard output is connected to a capable terminal, then the
test results and the summary are colored appropriately. The developer test results and the summary are colored appropriately. The developer
and the user can disable colored output by setting the ‘make’ variable and the user can disable colored output by setting the ‘make’ variable
‘AM_COLOR_TESTS=no’; the user can in addition force colored output even ‘AM_COLOR_TESTS=no’; the user can in addition force colored output even
without a connecting terminal with ‘AM_COLOR_TESTS=always’. It’s also without a connecting terminal with ‘AM_COLOR_TESTS=always’. It’s also
worth noting that some ‘make’ implementations, when used in parallel worth noting that some ‘make’ implementations, when used in parallel
mode, have slightly different semantics (*note (autoconf)Parallel mode, have slightly different semantics (*note (autoconf)Parallel
make::), which can break the automatic detection of a connection to a make::), which can break the automatic detection of a connection to a
capable terminal. If this is the case, the user will have to resort to capable terminal. If this is the case, the user will have to resort to
skipping to change at line 7952 skipping to change at line 8067
called “TAP producers” in this context) write test results in a simple called “TAP producers” in this context) write test results in a simple
format on standard output; a test harness (also called “TAP consumer”) format on standard output; a test harness (also called “TAP consumer”)
will parse and interpret these results, and properly present them to the will parse and interpret these results, and properly present them to the
user, and/or register them for later analysis. The exact details of how user, and/or register them for later analysis. The exact details of how
this is accomplished can vary among different test harnesses. The this is accomplished can vary among different test harnesses. The
Automake harness will present the results on the console in the usual Automake harness will present the results on the console in the usual
fashion (*note Testsuite progress on console::), and will use the ‘.trs’ fashion (*note Testsuite progress on console::), and will use the ‘.trs’
files (*note Basics of test metadata::) to store the test results and files (*note Basics of test metadata::) to store the test results and
related metadata. Apart from that, it will try to remain as compatible related metadata. Apart from that, it will try to remain as compatible
as possible with pre-existing and widespread utilities, such as the as possible with pre-existing and widespread utilities, such as the
‘prove’ utility (http://search.cpan.org/~andya/Test-Harness/bin/prove), ‘prove’ utility
at least for the simpler usages. (https://metacpan.org/pod/distribution/Test-Harness/bin/prove), at least
for the simpler usages.
TAP started its life as part of the test harness for Perl, but today TAP started its life as part of the test harness for Perl, but today
it has been (mostly) standardized, and has various independent it has been (mostly) standardized, and has various independent
implementations in different languages; among them, C, C++, Perl, implementations in different languages; among them, C, C++, Perl,
Python, PHP, and Java. For a semi-official specification of the TAP Python, PHP, and Java. For a semi-official specification of the TAP
protocol, please refer to the documentation of ‘Test::Harness::TAP’ protocol, please refer to the documentation of ‘Test::Harness’
(http://search.cpan.org/~petdance/Test-Harness/lib/Test/Harness/TAP.pod). (https://metacpan.org/pod/Test::Harness).
The most relevant real-world usages of TAP are obviously in the The most relevant real-world usages of TAP are obviously in the
testsuites of ‘perl’ and of many perl modules. Still, other important testsuites of ‘perl’ and of many Perl modules. Still, other important
third-party packages, such as ‘git’ (http://git-scm.com/), also use TAP third-party packages, such as ‘git’ (https://git-scm.com/), also use TAP
in their testsuite. in their testsuite.
File: automake.info, Node: Use TAP with the Automake test harness, Next: Incom patibilities with other TAP parsers and drivers, Prev: Introduction to TAP, Up : Using the TAP test protocol File: automake.info, Node: Use TAP with the Automake test harness, Next: Incom patibilities with other TAP parsers and drivers, Prev: Introduction to TAP, Up : Using the TAP test protocol
15.4.2 Use TAP with the Automake test harness 15.4.2 Use TAP with the Automake test harness
--------------------------------------------- ---------------------------------------------
Currently, the TAP driver that comes with Automake requires some by-hand Currently, the TAP driver that comes with Automake requires some by-hand
steps on the developer’s part (this situation should hopefully be steps on the developer’s part (this situation should hopefully be
improved in future Automake versions). You’ll have to grab the improved in future Automake versions). You’ll have to grab the
skipping to change at line 8124 skipping to change at line 8240
incompatibilities, especially in corner cases or with rare usages. incompatibilities, especially in corner cases or with rare usages.
File: automake.info, Node: Links and external resources on TAP, Prev: Incompat ibilities with other TAP parsers and drivers, Up: Using the TAP test protocol File: automake.info, Node: Links and external resources on TAP, Prev: Incompat ibilities with other TAP parsers and drivers, Up: Using the TAP test protocol
15.4.4 Links and external resources on TAP 15.4.4 Links and external resources on TAP
------------------------------------------ ------------------------------------------
Here are some links to more extensive official or third-party Here are some links to more extensive official or third-party
documentation and resources about the TAP protocol and related tools and documentation and resources about the TAP protocol and related tools and
libraries. libraries.
‘Test::Harness::TAP’ ‘Test::Harness’ (https://metacpan.org/pod/Test::Harness), the
(http://search.cpan.org/~petdance/Test-Harness/lib/Test/Harness/TAP.pod), (mostly) official documentation about the TAP format and protocol.
the (mostly) official documentation about the TAP format and • ‘prove’
protocol. (https://metacpan.org/pod/distribution/Test-Harness/bin/prove), the
• ‘prove’ (http://search.cpan.org/~andya/Test-Harness/bin/prove), most famous command-line TAP test driver, included in the
the most famous command-line TAP test driver, included in the
distribution of ‘perl’ and ‘Test::Harness’ distribution of ‘perl’ and ‘Test::Harness’
(http://search.cpan.org/~andya/Test-Harness/lib/Test/Harness.pm). (https://metacpan.org/pod/distribution/Test-Harness/lib/Test/Harness.pm).
• The TAP wiki (http://testanything.org/wiki/index.php/Main_Page). • The TAP wiki (https://testanything.org/).
• A “gentle introduction” to testing for perl coders: • A “gentle introduction” to testing for Perl coders:
‘Test::Tutorial’ ‘Test::Tutorial’
(http://search.cpan.org/dist/Test-Simple/lib/Test/Tutorial.pod). (https://metacpan.org/pod/distribution/Test-Simple/lib/Test/Tutorial.pod).
• ‘Test::Simple’ • ‘Test::Simple’
(http://search.cpan.org/~mschwern/Test-Simple/lib/Test/Simple.pm) (https://metacpan.org/pod/distribution/Test-Simple/lib/Test/Simple.pm)
and ‘Test::More’ and ‘Test::More’
(http://search.cpan.org/~mschwern/Test-Simple/lib/Test/More.pm), (https://metacpan.org/pod/distribution/Test-Simple/lib/Test/More.pm),
the standard perl testing libraries, which are based on TAP. the standard Perl testing libraries, which are based on TAP.
• C TAP Harness • C TAP Harness
(http://www.eyrie.org/~eagle/software/c-tap-harness/), a C-based (https://www.eyrie.org/~eagle/software/c-tap-harness/), a C-based
project implementing both a TAP producer and a TAP consumer. project implementing both a TAP producer and a TAP consumer.
• tap4j (http://www.tap4j.org/), a Java-based project implementing • tap4j (https://tap4j.org/), a Java-based project implementing both
both a TAP producer and a TAP consumer. a TAP producer and a TAP consumer.
File: automake.info, Node: DejaGnu Tests, Next: Install Tests, Prev: Using th e TAP test protocol, Up: Tests File: automake.info, Node: DejaGnu Tests, Next: Install Tests, Prev: Using th e TAP test protocol, Up: Tests
15.5 DejaGnu Tests 15.5 DejaGnu Tests
================== ==================
If ‘dejagnu’ (https://ftp.gnu.org/gnu/dejagnu/) appears in If ‘dejagnu’ (*note Introduction: (dejagnu)Top.) appears in
‘AUTOMAKE_OPTIONS’, then a ‘dejagnu’-based test suite is assumed. The ‘AUTOMAKE_OPTIONS’, then a ‘dejagnu’-based test suite is assumed. The
variable ‘DEJATOOL’ is a list of names that are passed, one at a time, variable ‘DEJATOOL’ is a list of names that are passed, one at a time,
as the ‘--tool’ argument to ‘runtest’ invocations; it defaults to the as the ‘--tool’ argument to ‘runtest’ invocations; it defaults to the
name of the package. name of the package.
The variable ‘RUNTESTDEFAULTFLAGS’ holds the ‘--tool’ and ‘--srcdir’ The variable ‘RUNTESTDEFAULTFLAGS’ holds the ‘--tool’ and ‘--srcdir’
flags that are passed to dejagnu by default; this can be overridden if flags that are passed to dejagnu by default; this can be overridden if
necessary. necessary.
The variables ‘EXPECT’ and ‘RUNTEST’ can also be overridden to The variables ‘EXPECT’ and ‘RUNTEST’ can also be overridden to
skipping to change at line 8334 skipping to change at line 8449
File: automake.info, Node: List of Automake options, Prev: Options generalitie s, Up: Options File: automake.info, Node: List of Automake options, Prev: Options generalitie s, Up: Options
17.2 List of Automake options 17.2 List of Automake options
============================= =============================
‘gnits’ ‘gnits’
‘gnu’ ‘gnu’
‘foreign’ ‘foreign’
Set the strictness as appropriate. The ‘gnits’ option also implies Set the strictness as appropriate. *Note Strictness::. The
options ‘readme-alpha’ and ‘check-news’. ‘gnits’ option also implies options ‘readme-alpha’ and
‘check-news’.
‘check-news’ ‘check-news’
Cause ‘make dist’ to fail unless the current version number appears Cause ‘make dist’ to fail unless the current version number appears
in the first few lines of the ‘NEWS’ file. in the first few lines of the ‘NEWS’ file.
‘dejagnu’ ‘dejagnu’
Cause ‘dejagnu’-specific rules to be generated. *Note DejaGnu Cause ‘dejagnu’-specific rules to be generated. *Note DejaGnu
Tests::. Tests::.
‘dist-bzip2’ ‘dist-bzip2’
skipping to change at line 8854 skipping to change at line 8970
AM_CPPFLAGS += -DDEBUG AM_CPPFLAGS += -DDEBUG
endif endif
AM_CPPFLAGS += -DFEATURE_B AM_CPPFLAGS += -DFEATURE_B
More details and examples of conditionals are described alongside More details and examples of conditionals are described alongside
various Automake features in this manual (*note Conditional various Automake features in this manual (*note Conditional
Subdirectories::, *note Conditional Sources::, *note Conditional Subdirectories::, *note Conditional Sources::, *note Conditional
Programs::, *note Conditional Libtool Libraries::, *note Conditional Programs::, *note Conditional Libtool Libraries::, *note Conditional
Libtool Sources::). Libtool Sources::).
File: automake.info, Node: Silencing Make, Next: Gnits, Prev: Conditionals, Up: Top File: automake.info, Node: Silencing Make, Next: Not Enough, Prev: Conditiona ls, Up: Top
21 Silencing ‘make’ 21 Silencing ‘make’
******************* *******************
* Menu: * Menu:
* Make verbosity:: Make is verbose by default * Make verbosity:: Make is verbose by default
* Tricks For Silencing Make:: Standard and generic ways to silence make * Tricks For Silencing Make:: Standard and generic ways to silence make
* Automake Silent Rules:: How Automake can help in silencing make * Automake Silent Rules:: How Automake can help in silencing make
skipping to change at line 9101 skipping to change at line 9217
pkg_verbose_ = $(pkg_verbose_@AM_DEFAULT_V@) pkg_verbose_ = $(pkg_verbose_@AM_DEFAULT_V@)
pkg_verbose_0 = @echo PKG-GEN $@; pkg_verbose_0 = @echo PKG-GEN $@;
foo: foo.in foo: foo.in
$(pkg_verbose)cp $(srcdir)/foo.in $@ $(pkg_verbose)cp $(srcdir)/foo.in $@
As a final note, observe that, even when silent rules are enabled, As a final note, observe that, even when silent rules are enabled,
the ‘--no-print-directory’ option is still required with GNU ‘make’ if the ‘--no-print-directory’ option is still required with GNU ‘make’ if
the “Entering/Leaving directory ...” messages are to be disabled. the “Entering/Leaving directory ...” messages are to be disabled.
File: automake.info, Node: Gnits, Next: Not Enough, Prev: Silencing Make, Up File: automake.info, Node: Not Enough, Next: Distributing, Prev: Silencing Ma
: Top ke, Up: Top
22 The effect of ‘--gnu’ and ‘--gnits’
**************************************
The ‘--gnu’ option (or ‘gnu’ in the ‘AUTOMAKE_OPTIONS’ variable) causes
‘automake’ to check the following:
• The files ‘INSTALL’, ‘NEWS’, ‘README’, ‘AUTHORS’, and ‘ChangeLog’,
plus one of ‘COPYING.LIB’, ‘COPYING.LESSER’ or ‘COPYING’, are
required at the topmost directory of the package.
If the ‘--add-missing’ option is given, ‘automake’ will add a
generic version of the ‘INSTALL’ file as well as the ‘COPYING’ file
containing the text of the current version of the GNU General
Public License existing at the time of this Automake release
(version 3 as this is written,
<https://www.gnu.org/copyleft/gpl.html>). However, an existing
‘COPYING’ file will never be overwritten by ‘automake’.
• The options ‘no-installman’ and ‘no-installinfo’ are prohibited.
Note that this option will be extended in the future to do even more 22 When Automake Isn’t Enough
checking; it is advisable to be familiar with the precise requirements
of the GNU standards. Also, ‘--gnu’ can require certain non-standard
GNU programs to exist for use by various maintainer-only rules; for
instance, in the future ‘pathchk’ might be required for ‘make dist’.
The ‘--gnits’ option does everything that ‘--gnu’ does, and checks
the following as well:
• ‘make installcheck’ will check to make sure that the ‘--help’ and
‘--version’ really print a usage message and a version string,
respectively. This is the ‘std-options’ option (*note Options::).
• ‘make dist’ will check to make sure the ‘NEWS’ file has been
updated to the current version.
• ‘VERSION’ is checked to make sure its format complies with Gnits
standards.
• If ‘VERSION’ indicates that this is an alpha release, and the file
‘README-alpha’ appears in the topmost directory of a package, then
it is included in the distribution. This is done in ‘--gnits’
mode, and no other, because this mode is the only one where version
number formats are constrained, and hence the only mode where
Automake can automatically determine whether ‘README-alpha’ should
be included.
• The file ‘THANKS’ is required.
File: automake.info, Node: Not Enough, Next: Distributing, Prev: Gnits, Up:
Top
23 When Automake Isn’t Enough
***************************** *****************************
In some situations, where Automake is not up to one task, one has to In some situations, where Automake is not up to one task, one has to
resort to handwritten rules or even handwritten ‘Makefile’s. resort to handwritten rules or even handwritten ‘Makefile’s.
* Menu: * Menu:
* Extending:: Adding new rules or overriding existing ones. * Extending:: Adding new rules or overriding existing ones.
* Third-Party Makefiles:: Integrating Non-Automake ‘Makefile’s. * Third-Party Makefiles:: Integrating Non-Automake ‘Makefile’s.
File: automake.info, Node: Extending, Next: Third-Party Makefiles, Up: Not En ough File: automake.info, Node: Extending, Next: Third-Party Makefiles, Up: Not En ough
23.1 Extending Automake Rules 22.1 Extending Automake Rules
============================= =============================
With some minor exceptions (for example ‘_PROGRAMS’ variables, ‘TESTS’, With some minor exceptions (for example ‘_PROGRAMS’ variables, ‘TESTS’,
or ‘XFAIL_TESTS’) being rewritten to append ‘$(EXEEXT)’), the contents or ‘XFAIL_TESTS’) being rewritten to append ‘$(EXEEXT)’), the contents
of a ‘Makefile.am’ is copied to ‘Makefile.in’ verbatim. of a ‘Makefile.am’ is copied to ‘Makefile.in’ verbatim.
These copying semantics mean that many problems can be worked around These copying semantics mean that many problems can be worked around
by simply adding some ‘make’ variables and rules to ‘Makefile.am’. by simply adding some ‘make’ variables and rules to ‘Makefile.am’.
Automake will ignore these additions. Automake will ignore these additions.
skipping to change at line 9271 skipping to change at line 9336
When writing ‘install-exec-hook’ or ‘install-data-hook’, please bear When writing ‘install-exec-hook’ or ‘install-data-hook’, please bear
in mind that the exec/data distinction is based on the installation in mind that the exec/data distinction is based on the installation
directory, not on the primary used (*note The Two Parts of Install::). directory, not on the primary used (*note The Two Parts of Install::).
So a ‘foo_SCRIPTS’ will be installed by ‘install-data’, and a So a ‘foo_SCRIPTS’ will be installed by ‘install-data’, and a
‘barexec_SCRIPTS’ will be installed by ‘install-exec’. You should ‘barexec_SCRIPTS’ will be installed by ‘install-exec’. You should
define your hooks accordingly. define your hooks accordingly.
File: automake.info, Node: Third-Party Makefiles, Prev: Extending, Up: Not En ough File: automake.info, Node: Third-Party Makefiles, Prev: Extending, Up: Not En ough
23.2 Third-Party ‘Makefile’s 22.2 Third-Party ‘Makefile’s
============================ ============================
In most projects all ‘Makefile’s are generated by Automake. In some In most projects all ‘Makefile’s are generated by Automake. In some
cases, however, projects need to embed subdirectories with handwritten cases, however, projects need to embed subdirectories with handwritten
‘Makefile’s. For instance, one subdirectory could be a third-party ‘Makefile’s. For instance, one subdirectory could be a third-party
project with its own build system, not using Automake. project with its own build system, not using Automake.
It is possible to list arbitrary directories in ‘SUBDIRS’ or It is possible to list arbitrary directories in ‘SUBDIRS’ or
‘DIST_SUBDIRS’ provided each of these directories has a ‘Makefile’ that ‘DIST_SUBDIRS’ provided each of these directories has a ‘Makefile’ that
recognizes all the following recursive targets. recognizes all the following recursive targets.
skipping to change at line 9360 skipping to change at line 9425
Usually, many of these rules are irrelevant to the third-party Usually, many of these rules are irrelevant to the third-party
subproject, but they are required for the whole package to work. It’s subproject, but they are required for the whole package to work. It’s
OK to have a rule that does nothing, so if you are integrating a OK to have a rule that does nothing, so if you are integrating a
third-party project with no documentation or tag support, you could third-party project with no documentation or tag support, you could
simply augment its ‘Makefile’ as follows: simply augment its ‘Makefile’ as follows:
EMPTY_AUTOMAKE_TARGETS = dvi pdf ps info html tags ctags EMPTY_AUTOMAKE_TARGETS = dvi pdf ps info html tags ctags
.PHONY: $(EMPTY_AUTOMAKE_TARGETS) .PHONY: $(EMPTY_AUTOMAKE_TARGETS)
$(EMPTY_AUTOMAKE_TARGETS): $(EMPTY_AUTOMAKE_TARGETS):
To be clear, there is nothing special about the variable name
‘EMPTY_AUTOMAKE_TARGETS’; the name could be anything.
Another aspect of integrating third-party build systems is whether Another aspect of integrating third-party build systems is whether
they support VPATH builds (*note VPATH Builds::). Obviously if the they support VPATH builds (*note VPATH Builds::). Obviously if the
subpackage does not support VPATH builds the whole package will not subpackage does not support VPATH builds the whole package will not
support VPATH builds. This in turns means that ‘make distcheck’ will support VPATH builds. This in turns means that ‘make distcheck’ will
not work, because it relies on VPATH builds. Some people can live not work, because it relies on VPATH builds. Some people can live
without this (actually, many Automake users have never heard of ‘make without this (actually, many Automake users have never heard of ‘make
distcheck’). Other people may prefer to revamp the existing ‘Makefile’s distcheck’). Other people may prefer to revamp the existing ‘Makefile’s
to support VPATH. Doing so does not necessarily require Automake; only to support VPATH. Doing so does not necessarily require Automake; only
Autoconf is needed (*note Build Directories: (autoconf)Build Autoconf is needed (*note Build Directories: (autoconf)Build
Directories.). The necessary substitutions: ‘@srcdir@’, ‘@top_srcdir@’, Directories.). The necessary substitutions: ‘@srcdir@’, ‘@top_srcdir@’,
skipping to change at line 9432 skipping to change at line 9500
# Distribute files from here. # Distribute files from here.
EXTRA_DIST = subdir/Makefile subdir/program.c ... EXTRA_DIST = subdir/Makefile subdir/program.c ...
Pushing this idea to the extreme, it is also possible to ignore the Pushing this idea to the extreme, it is also possible to ignore the
subproject build system and build everything from this proxy subproject build system and build everything from this proxy
‘Makefile.am’. This might sound very sensible if you need VPATH builds ‘Makefile.am’. This might sound very sensible if you need VPATH builds
but the subproject does not support them. but the subproject does not support them.
File: automake.info, Node: Distributing, Next: API Versioning, Prev: Not Enou gh, Up: Top File: automake.info, Node: Distributing, Next: API Versioning, Prev: Not Enou gh, Up: Top
24 Distributing ‘Makefile.in’s 23 Distributing ‘Makefile.in’s
****************************** ******************************
Automake places no restrictions on the distribution of the resulting Automake places no restrictions on the distribution of the resulting
‘Makefile.in’s. We still encourage software authors to distribute their ‘Makefile.in’s. We still encourage software authors to distribute their
work under terms like those of the GPL, but doing so is not required to work under terms like those of the GPL, but doing so is not required to
use Automake. use Automake.
Some of the files that can be automatically installed via the Some of the files that can be automatically installed via the
‘--add-missing’ switch do fall under the GPL. However, these also have ‘--add-missing’ switch do fall under the GPL. However, these also have
a special exception allowing you to distribute them with your package, a special exception allowing you to distribute them with your package,
regardless of the licensing you choose. regardless of the licensing you choose.
File: automake.info, Node: API Versioning, Next: Upgrading, Prev: Distributin g, Up: Top File: automake.info, Node: API Versioning, Next: Upgrading, Prev: Distributin g, Up: Top
25 Automake API Versioning 24 Automake API Versioning
************************** **************************
New Automake releases usually include bug fixes and new features. New Automake releases usually include bug fixes and new features.
Unfortunately they may also introduce new bugs and incompatibilities. Unfortunately they may also introduce new bugs and incompatibilities.
This makes four reasons why a package may require a particular Automake This makes four reasons why a package may require a particular Automake
version. version.
Things get worse when maintaining a large tree of packages, each one Things get worse when maintaining a large tree of packages, each one
requiring a different version of Automake. In the past, this meant that requiring a different version of Automake. In the past, this meant that
any developer (and sometimes users) had to install several versions of any developer (and sometimes users) had to install several versions of
skipping to change at line 9511 skipping to change at line 9579
of the API. You should avoid using them, as they could change from one of the API. You should avoid using them, as they could change from one
version to the other (even in bug fix releases, if this helps to fix a version to the other (even in bug fix releases, if this helps to fix a
bug). bug).
If it turns out you need to use such an undocumented feature, contact If it turns out you need to use such an undocumented feature, contact
<automake@gnu.org> and try to get it documented and exercised by the <automake@gnu.org> and try to get it documented and exercised by the
test-suite. test-suite.
File: automake.info, Node: Upgrading, Next: FAQ, Prev: API Versioning, Up: T op File: automake.info, Node: Upgrading, Next: FAQ, Prev: API Versioning, Up: T op
26 Upgrading a Package to a Newer Automake Version 25 Upgrading a Package to a Newer Automake Version
************************************************** **************************************************
Automake maintains three kinds of files in a package. Automake maintains three kinds of files in a package.
• ‘aclocal.m4’ • ‘aclocal.m4’
• ‘Makefile.in’s • ‘Makefile.in’s
• auxiliary tools like ‘install-sh’ or ‘py-compile’ • auxiliary tools like ‘install-sh’ or ‘py-compile’
‘aclocal.m4’ is generated by ‘aclocal’ and contains some ‘aclocal.m4’ is generated by ‘aclocal’ and contains some
Automake-supplied M4 macros. Auxiliary tools are installed by ‘automake Automake-supplied M4 macros. Auxiliary tools are installed by ‘automake
skipping to change at line 9558 skipping to change at line 9626
However it never checks whether auxiliary scripts are up-to-date. In However it never checks whether auxiliary scripts are up-to-date. In
other words, ‘automake’ will tell you when ‘aclocal’ needs to be rerun, other words, ‘automake’ will tell you when ‘aclocal’ needs to be rerun,
but it will never diagnose a missing ‘--force-missing’. but it will never diagnose a missing ‘--force-missing’.
Before upgrading to a new major release, it is a good idea to read Before upgrading to a new major release, it is a good idea to read
the file ‘NEWS’. This file lists all changes between releases: new the file ‘NEWS’. This file lists all changes between releases: new
features, obsolete constructs, known incompatibilities, and workarounds. features, obsolete constructs, known incompatibilities, and workarounds.
File: automake.info, Node: FAQ, Next: Copying This Manual, Prev: Upgrading, Up: Top File: automake.info, Node: FAQ, Next: Copying This Manual, Prev: Upgrading, Up: Top
27 Frequently Asked Questions about Automake 26 Frequently Asked Questions about Automake
******************************************** ********************************************
This chapter covers some questions that often come up on the mailing This chapter covers some questions that often come up on the mailing
lists. lists.
* Menu: * Menu:
* CVS:: CVS and generated files * CVS:: CVS and generated files
* maintainer-mode:: missing and AM_MAINTAINER_MODE * maintainer-mode:: missing and AM_MAINTAINER_MODE
* Wildcards:: Why doesn’t Automake support wildcards? * Wildcards:: Why doesn’t Automake support wildcards?
skipping to change at line 9581 skipping to change at line 9649
* Flag Variables Ordering:: CFLAGS vs. AM_CFLAGS vs. mumble_CFLAGS * Flag Variables Ordering:: CFLAGS vs. AM_CFLAGS vs. mumble_CFLAGS
* Renamed Objects:: Why are object files sometimes renamed? * Renamed Objects:: Why are object files sometimes renamed?
* Per-Object Flags:: How to simulate per-object flags? * Per-Object Flags:: How to simulate per-object flags?
* Multiple Outputs:: Writing rules for tools with many output files * Multiple Outputs:: Writing rules for tools with many output files
* Hard-Coded Install Paths:: Installing to hard-coded locations * Hard-Coded Install Paths:: Installing to hard-coded locations
* Debugging Make Rules:: Strategies when things don’t work as expected * Debugging Make Rules:: Strategies when things don’t work as expected
* Reporting Bugs:: Feedback on bugs and feature requests * Reporting Bugs:: Feedback on bugs and feature requests
File: automake.info, Node: CVS, Next: maintainer-mode, Up: FAQ File: automake.info, Node: CVS, Next: maintainer-mode, Up: FAQ
27.1 CVS and generated files 26.1 CVS and generated files
============================ ============================
Background: distributed generated Files Background: distributed generated Files
--------------------------------------- ---------------------------------------
Packages made with Autoconf and Automake ship with some generated files Packages made with Autoconf and Automake ship with some generated files
like ‘configure’ or ‘Makefile.in’. These files were generated on the like ‘configure’ or ‘Makefile.in’. These files were generated on the
developer’s machine and are distributed so that end-users do not have to developer’s machine and are distributed so that end-users do not have to
install the maintainer tools required to rebuild them. Other generated install the maintainer tools required to rebuild them. Other generated
files like Lex scanners, Yacc parsers, or Info documentation are usually files like Lex scanners, Yacc parsers, or Info documentation are usually
skipping to change at line 9754 skipping to change at line 9822
----------------- -----------------
Another class of files not discussed here (because they do not cause Another class of files not discussed here (because they do not cause
timestamp issues) are files that are shipped with a package, but timestamp issues) are files that are shipped with a package, but
maintained elsewhere. For instance, tools like ‘gettextize’ and maintained elsewhere. For instance, tools like ‘gettextize’ and
‘autopoint’ (from Gettext) or ‘libtoolize’ (from Libtool), will install ‘autopoint’ (from Gettext) or ‘libtoolize’ (from Libtool), will install
or update files in your package. or update files in your package.
These files, whether they are kept under CVS or not, raise similar These files, whether they are kept under CVS or not, raise similar
concerns about version mismatch between developers’ tools. The Gettext concerns about version mismatch between developers’ tools. The Gettext
manual has a section about this; see *note CVS Issues: (gettext)CVS manual has a section about this; see *note Integrating with Version
Issues. Control Systems: (gettext)Version Control Issues.
File: automake.info, Node: maintainer-mode, Next: Wildcards, Prev: CVS, Up: FAQ File: automake.info, Node: maintainer-mode, Next: Wildcards, Prev: CVS, Up: FAQ
27.2 ‘missing’ and ‘AM_MAINTAINER_MODE’ 26.2 ‘missing’ and ‘AM_MAINTAINER_MODE’
======================================= =======================================
‘missing’ ‘missing’
--------- ---------
The ‘missing’ script is a wrapper around several maintainer tools, The ‘missing’ script is a wrapper around several maintainer tools,
designed to warn users if a maintainer tool is required but missing. designed to warn users if a maintainer tool is required but missing.
Typical maintainer tools are ‘autoconf’, ‘automake’, ‘bison’, etc. Typical maintainer tools are ‘autoconf’, ‘automake’, ‘bison’, etc.
Because files generated by these tools are shipped with the other Because files generated by these tools are shipped with the other
sources of a package, these tools shouldn’t be required during a user sources of a package, these tools shouldn’t be required during a user
skipping to change at line 9840 skipping to change at line 9908
swayed by François’ arguments, and got rid of ‘AM_MAINTAINER_MODE’ in swayed by François’ arguments, and got rid of ‘AM_MAINTAINER_MODE’ in
all of his packages. all of his packages.
Still many people continue to use ‘AM_MAINTAINER_MODE’, because it Still many people continue to use ‘AM_MAINTAINER_MODE’, because it
helps them working on projects where all files are kept under version helps them working on projects where all files are kept under version
control, and because ‘missing’ isn’t enough if you have the wrong control, and because ‘missing’ isn’t enough if you have the wrong
version of the tools. version of the tools.
File: automake.info, Node: Wildcards, Next: Limitations on File Names, Prev: maintainer-mode, Up: FAQ File: automake.info, Node: Wildcards, Next: Limitations on File Names, Prev: maintainer-mode, Up: FAQ
27.3 Why doesn’t Automake support wildcards? 26.3 Why doesn’t Automake support wildcards?
============================================ ============================================
Developers are lazy. They would often like to use wildcards in Developers are lazy. They would often like to use wildcards in
‘Makefile.am’s, so that they would not need to remember to update ‘Makefile.am’s, so that they would not need to remember to update
‘Makefile.am’s every time they add, delete, or rename a file. ‘Makefile.am’s every time they add, delete, or rename a file.
There are several objections to this: There are several objections to this:
• When using CVS (or similar) developers need to remember they have • When using CVS (or similar) developers need to remember they have
to run ‘cvs add’ or ‘cvs rm’ anyway. Updating ‘Makefile.am’ to run ‘cvs add’ or ‘cvs rm’ anyway. Updating ‘Makefile.am’
accordingly quickly becomes a reflex. accordingly quickly becomes a reflex.
skipping to change at line 9908 skipping to change at line 9976
files should be processed. As Automake doesn’t know how to expand files should be processed. As Automake doesn’t know how to expand
‘$(wildcard ...)’, you cannot use it in these places. ‘$(wildcard ...)’ ‘$(wildcard ...)’, you cannot use it in these places. ‘$(wildcard ...)’
is a black box comparable to ‘AC_SUBST’ed variables as far Automake is is a black box comparable to ‘AC_SUBST’ed variables as far Automake is
concerned. concerned.
You can get warnings about ‘$(wildcard ...’) constructs using the You can get warnings about ‘$(wildcard ...’) constructs using the
‘-Wportability’ flag. ‘-Wportability’ flag.
File: automake.info, Node: Limitations on File Names, Next: Errors with distcl ean, Prev: Wildcards, Up: FAQ File: automake.info, Node: Limitations on File Names, Next: Errors with distcl ean, Prev: Wildcards, Up: FAQ
27.4 Limitations on File Names 26.4 Limitations on File Names
============================== ==============================
Automake attempts to support all kinds of file names, even those that Automake attempts to support all kinds of file names, even those that
contain unusual characters or are unusually long. However, some contain unusual characters or are unusually long. However, some
limitations are imposed by the underlying operating system and tools. limitations are imposed by the underlying operating system and tools.
Most operating systems prohibit the use of the null byte in file Most operating systems prohibit the use of the null byte in file
names, and reserve ‘/’ as a directory separator. Also, they require names, and reserve ‘/’ as a directory separator. Also, they require
that file names are properly encoded for the user’s locale. Automake is that file names are properly encoded for the user’s locale. Automake is
subject to these limits. subject to these limits.
skipping to change at line 9966 skipping to change at line 10034
Source and installation file names like ‘main.c’ are limited even Source and installation file names like ‘main.c’ are limited even
further: they should conform to the POSIX/XOPEN rules described above. further: they should conform to the POSIX/XOPEN rules described above.
In addition, if you plan to port to non-POSIX environments, you should In addition, if you plan to port to non-POSIX environments, you should
avoid file names that differ only in case (e.g., ‘makefile’ and avoid file names that differ only in case (e.g., ‘makefile’ and
‘Makefile’). Nowadays it is no longer worth worrying about the 8.3 ‘Makefile’). Nowadays it is no longer worth worrying about the 8.3
limits of DOS file systems. limits of DOS file systems.
File: automake.info, Node: Errors with distclean, Next: Flag Variables Orderin g, Prev: Limitations on File Names, Up: FAQ File: automake.info, Node: Errors with distclean, Next: Flag Variables Orderin g, Prev: Limitations on File Names, Up: FAQ
27.5 Errors with distclean 26.5 Errors with distclean
========================== ==========================
This is a diagnostic you might encounter while running ‘make distcheck’. This is a diagnostic you might encounter while running ‘make distcheck’.
As explained in *note Checking the Distribution::, ‘make distcheck’ As explained in *note Checking the Distribution::, ‘make distcheck’
attempts to build and check your package for errors like this one. attempts to build and check your package for errors like this one.
‘make distcheck’ will perform a ‘VPATH’ build of your package (*note ‘make distcheck’ will perform a ‘VPATH’ build of your package (*note
VPATH Builds::), and then call ‘make distclean’. Files left in the VPATH Builds::), and then call ‘make distclean’. Files left in the
build directory after ‘make distclean’ has run are listed after this build directory after ‘make distclean’ has run are listed after this
skipping to change at line 10083 skipping to change at line 10151
point in distributing it. point in distributing it.
For desperate cases, it’s always possible to disable this check by For desperate cases, it’s always possible to disable this check by
setting ‘distcleancheck_listfiles’ as documented in *note Checking the setting ‘distcleancheck_listfiles’ as documented in *note Checking the
Distribution::. Make sure you do understand the reason why ‘make Distribution::. Make sure you do understand the reason why ‘make
distcheck’ complains before you do this. ‘distcleancheck_listfiles’ is distcheck’ complains before you do this. ‘distcleancheck_listfiles’ is
a way to _hide_ errors, not to fix them. You can always do better. a way to _hide_ errors, not to fix them. You can always do better.
File: automake.info, Node: Flag Variables Ordering, Next: Renamed Objects, Pr ev: Errors with distclean, Up: FAQ File: automake.info, Node: Flag Variables Ordering, Next: Renamed Objects, Pr ev: Errors with distclean, Up: FAQ
27.6 Flag Variables Ordering 26.6 Flag Variables Ordering
============================ ============================
What is the difference between ‘AM_CFLAGS’, ‘CFLAGS’, and What is the difference between ‘AM_CFLAGS’, ‘CFLAGS’, and
‘mumble_CFLAGS’? ‘mumble_CFLAGS’?
Why does ‘automake’ output ‘CPPFLAGS’ after Why does ‘automake’ output ‘CPPFLAGS’ after
‘AM_CPPFLAGS’ on compile lines? Shouldn’t it be the converse? ‘AM_CPPFLAGS’ on compile lines? Shouldn’t it be the converse?
My ‘configure’ adds some warning flags into ‘CXXFLAGS’. In My ‘configure’ adds some warning flags into ‘CXXFLAGS’. In
one ‘Makefile.am’ I would like to append a new flag, however if I one ‘Makefile.am’ I would like to append a new flag, however if I
skipping to change at line 10250 skipping to change at line 10318
Finally you should not think that the existence of a per-target Finally you should not think that the existence of a per-target
variable implies the existence of an ‘AM_’ variable or of a user variable implies the existence of an ‘AM_’ variable or of a user
variable. For instance, the ‘mumble_LDADD’ per-target variable variable. For instance, the ‘mumble_LDADD’ per-target variable
overrides the makefile-wide ‘LDADD’ variable (which is not a user overrides the makefile-wide ‘LDADD’ variable (which is not a user
variable), and ‘mumble_LIBADD’ exists only as a per-target variable. variable), and ‘mumble_LIBADD’ exists only as a per-target variable.
*Note Program and Library Variables::. *Note Program and Library Variables::.
File: automake.info, Node: Renamed Objects, Next: Per-Object Flags, Prev: Fla g Variables Ordering, Up: FAQ File: automake.info, Node: Renamed Objects, Next: Per-Object Flags, Prev: Fla g Variables Ordering, Up: FAQ
27.7 Why are object files sometimes renamed? 26.7 Why are object files sometimes renamed?
============================================ ============================================
This happens when per-target compilation flags are used. Object files This happens when per-target compilation flags are used. Object files
need to be renamed just in case they would clash with object files need to be renamed just in case they would clash with object files
compiled from the same sources, but with different flags. Consider the compiled from the same sources, but with different flags. Consider the
following example. following example.
bin_PROGRAMS = true false bin_PROGRAMS = true false
true_SOURCES = generic.c true_SOURCES = generic.c
true_CPPFLAGS = -DEXIT_CODE=0 true_CPPFLAGS = -DEXIT_CODE=0
skipping to change at line 10288 skipping to change at line 10356
AM_CPPFLAGS = -DVERSION=1.0 AM_CPPFLAGS = -DVERSION=1.0
bin_PROGRAMS = true false bin_PROGRAMS = true false
true_SOURCES = true.c version.c true_SOURCES = true.c version.c
false_SOURCES = false.c version.c false_SOURCES = false.c version.c
Note that the renaming of objects is also affected by the Note that the renaming of objects is also affected by the
‘_SHORTNAME’ variable (*note Program and Library Variables::). ‘_SHORTNAME’ variable (*note Program and Library Variables::).
File: automake.info, Node: Per-Object Flags, Next: Multiple Outputs, Prev: Re named Objects, Up: FAQ File: automake.info, Node: Per-Object Flags, Next: Multiple Outputs, Prev: Re named Objects, Up: FAQ
27.8 Per-Object Flags Emulation 26.8 Per-Object Flags Emulation
=============================== ===============================
One of my source files needs to be compiled with different flags. How One of my source files needs to be compiled with different flags. How
do I do that? do I do that?
Automake supports per-program and per-library compilation flags (see Automake supports per-program and per-library compilation flags (see
*note Program and Library Variables:: and *note Flag Variables *note Program and Library Variables:: and *note Flag Variables
Ordering::). With this you can define compilation flags that apply to Ordering::). With this you can define compilation flags that apply to
all files compiled for a target. For instance, in all files compiled for a target. For instance, in
skipping to change at line 10349 skipping to change at line 10417
remove ‘foo_CFLAGS’ (because ‘foo.c’ will then be compiled as ‘foo.o’ remove ‘foo_CFLAGS’ (because ‘foo.c’ will then be compiled as ‘foo.o’
instead of ‘foo-foo.o’, *note Renamed Objects::). Also in order to instead of ‘foo-foo.o’, *note Renamed Objects::). Also in order to
support dependency tracking, the two ‘.o’/‘.obj’ extensions, and all the support dependency tracking, the two ‘.o’/‘.obj’ extensions, and all the
other flags variables involved in a compilation, you will end up other flags variables involved in a compilation, you will end up
modifying a copy of the rule previously output by ‘automake’ for this modifying a copy of the rule previously output by ‘automake’ for this
file. If a new release of Automake generates a different rule, your file. If a new release of Automake generates a different rule, your
copy will need to be updated by hand. copy will need to be updated by hand.
File: automake.info, Node: Multiple Outputs, Next: Hard-Coded Install Paths, Prev: Per-Object Flags, Up: FAQ File: automake.info, Node: Multiple Outputs, Next: Hard-Coded Install Paths, Prev: Per-Object Flags, Up: FAQ
27.9 Handling Tools that Produce Many Outputs 26.9 Handling Tools that Produce Many Outputs
============================================= =============================================
This section describes a ‘make’ idiom that can be used when a tool This section describes a ‘make’ idiom that can be used when a tool
produces multiple output files. It is not specific to Automake and can produces multiple output files. It is not specific to Automake and can
be used in ordinary ‘Makefile’s. be used in ordinary ‘Makefile’s.
Suppose we have a program called ‘foo’ that will read one file called Suppose we have a program called ‘foo’ that will read one file called
‘data.foo’ and produce two files named ‘data.c’ and ‘data.h’. We want ‘data.foo’ and produce two files named ‘data.c’ and ‘data.h’. We want
to write a ‘Makefile’ rule that captures this one-to-two dependency. to write a ‘Makefile’ rule that captures this one-to-two dependency.
skipping to change at line 10435 skipping to change at line 10503
not rebuild ‘data.h’. The above rules just state that ‘data.c’ must be not rebuild ‘data.h’. The above rules just state that ‘data.c’ must be
up-to-date with respect to ‘data.foo’, and this is already the case. up-to-date with respect to ‘data.foo’, and this is already the case.
What we need is a rule that forces a rebuild when ‘data.h’ is What we need is a rule that forces a rebuild when ‘data.h’ is
missing. Here it is: missing. Here it is:
data.c: data.foo data.c: data.foo
foo data.foo foo data.foo
data.h: data.c data.h: data.c
## Recover from the removal of $@ ## Recover from the removal of $@
@test -f $@ || rm -f data.c
@test -f $@ || $(MAKE) $(AM_MAKEFLAGS) data.c
It is tempting to use a single test as follows:
data.h: data.c
## Recover from the removal of $@
@if test -f $@; then :; else \ @if test -f $@; then :; else \
rm -f data.c; \ rm -f data.c; \
$(MAKE) $(AM_MAKEFLAGS) data.c; \ $(MAKE) $(AM_MAKEFLAGS) data.c; \
fi fi
but that would break ‘make -n’: at least GNU ‘make’ and Solaris ‘make’
execute recipes containing the ‘$(MAKE)’ string even when they are
running in dry mode. So if we didn’t break the recipe above in two
invocations, the file ‘data.c’ would be removed even upon ‘make -n’.
Not nice.
The above scheme can be extended to handle more outputs and more The above scheme can be extended to handle more outputs and more
inputs. One of the outputs is selected to serve as a witness to the inputs. One of the outputs is selected to serve as a witness to the
successful completion of the command, it depends upon all inputs, and successful completion of the command, it depends upon all inputs, and
all other outputs depend upon it. For instance, if ‘foo’ should all other outputs depend upon it. For instance, if ‘foo’ should
additionally read ‘data.bar’ and also produce ‘data.w’ and ‘data.x’, we additionally read ‘data.bar’ and also produce ‘data.w’ and ‘data.x’, we
would write: would write:
data.c: data.foo data.bar data.c: data.foo data.bar
foo data.foo data.bar foo data.foo data.bar
data.h data.w data.x: data.c data.h data.w data.x: data.c
## Recover from the removal of $@ ## Recover from the removal of $@
@if test -f $@; then :; else \ @test -f $@ || rm -f data.c
rm -f data.c; \ @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) data.c
$(MAKE) $(AM_MAKEFLAGS) data.c; \
fi
However there are now three minor problems in this setup. One is However there are now three minor problems in this setup. One is
related to the timestamp ordering of ‘data.h’, ‘data.w’, ‘data.x’, and related to the timestamp ordering of ‘data.h’, ‘data.w’, ‘data.x’, and
‘data.c’. Another one is a race condition if a parallel ‘make’ attempts ‘data.c’. Another one is a race condition if a parallel ‘make’ attempts
to run multiple instances of the recover block at once. Finally, the to run multiple instances of the recover block at once. Finally, the
recursive rule breaks ‘make -n’ when run with GNU ‘make’ (as well as recursive rule breaks ‘make -n’ when run with GNU ‘make’ (as well as
some other ‘make’ implementations), as it may remove ‘data.h’ even when some other ‘make’ implementations), as it may remove ‘data.h’ even when
it should not (*note How the ‘MAKE’ Variable Works: (make)MAKE it should not (*note How the ‘MAKE’ Variable Works: (make)MAKE
Variable.). Variable.).
skipping to change at line 10480 skipping to change at line 10559
the ‘if...fi’ command, but actually it will just execute the ‘then’ the ‘if...fi’ command, but actually it will just execute the ‘then’
branch, that is: nothing. In other words, because the witness we branch, that is: nothing. In other words, because the witness we
selected is not the first file created by ‘foo’, ‘make’ will start a selected is not the first file created by ‘foo’, ‘make’ will start a
shell to do nothing each time it is run. shell to do nothing each time it is run.
A simple riposte is to fix the timestamps when this happens. A simple riposte is to fix the timestamps when this happens.
data.c: data.foo data.bar data.c: data.foo data.bar
foo data.foo data.bar foo data.foo data.bar
data.h data.w data.x: data.c data.h data.w data.x: data.c
@if test -f $@; then \ @test ! -f $@ || touch $@
touch $@; \
else \
## Recover from the removal of $@ ## Recover from the removal of $@
rm -f data.c; \ @test -f $@ || rm -f data.c
$(MAKE) $(AM_MAKEFLAGS) data.c; \ @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) data.c
fi
Another solution is to use a different and dedicated file as witness, Another solution is to use a different and dedicated file as witness,
rather than using any of ‘foo’’s outputs. rather than using any of ‘foo’’s outputs.
data.stamp: data.foo data.bar data.stamp: data.foo data.bar
@rm -f data.tmp @rm -f data.tmp
@touch data.tmp @touch data.tmp
foo data.foo data.bar foo data.foo data.bar
@mv -f data.tmp $@ @mv -f data.tmp $@
data.c data.h data.w data.x: data.stamp data.c data.h data.w data.x: data.stamp
## Recover from the removal of $@ ## Recover from the removal of $@
@if test -f $@; then :; else \ @test -f $@ || rm -f data.stamp
rm -f data.stamp; \ @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) data.stamp
$(MAKE) $(AM_MAKEFLAGS) data.stamp; \
fi
‘data.tmp’ is created before ‘foo’ is run, so it has a timestamp ‘data.tmp’ is created before ‘foo’ is run, so it has a timestamp
older than output files output by ‘foo’. It is then renamed to older than output files output by ‘foo’. It is then renamed to
‘data.stamp’ after ‘foo’ has run, because we do not want to update ‘data.stamp’ after ‘foo’ has run, because we do not want to update
‘data.stamp’ if ‘foo’ fails. ‘data.stamp’ if ‘foo’ fails.
This solution still suffers from the second problem: the race This solution still suffers from the second problem: the race
condition in the recover rule. If, after a successful build, a user condition in the recover rule. If, after a successful build, a user
erases ‘data.c’ and ‘data.h’, and runs ‘make -j’, then ‘make’ may start erases ‘data.c’ and ‘data.h’, and runs ‘make -j’, then ‘make’ may start
both recover rules in parallel. If the two instances of the rule both recover rules in parallel. If the two instances of the rule
skipping to change at line 10631 skipping to change at line 10705
fi fi
For completeness it should be noted that GNU ‘make’ is able to For completeness it should be noted that GNU ‘make’ is able to
express rules with multiple output files using pattern rules (*note express rules with multiple output files using pattern rules (*note
Pattern Rule Examples: (make)Pattern Examples.). We do not discuss Pattern Rule Examples: (make)Pattern Examples.). We do not discuss
pattern rules here because they are not portable, but they can be pattern rules here because they are not portable, but they can be
convenient in packages that assume GNU ‘make’. convenient in packages that assume GNU ‘make’.
File: automake.info, Node: Hard-Coded Install Paths, Next: Debugging Make Rule s, Prev: Multiple Outputs, Up: FAQ File: automake.info, Node: Hard-Coded Install Paths, Next: Debugging Make Rule s, Prev: Multiple Outputs, Up: FAQ
27.10 Installing to Hard-Coded Locations 26.10 Installing to Hard-Coded Locations
======================================== ========================================
My package needs to install some configuration file. I tried to use My package needs to install some configuration file. I tried to use
the following rule, but ‘make distcheck’ fails. Why? the following rule, but ‘make distcheck’ fails. Why?
# Do not do this. # Do not do this.
install-data-local: install-data-local:
$(INSTALL_DATA) $(srcdir)/afile $(DESTDIR)/etc/afile $(INSTALL_DATA) $(srcdir)/afile $(DESTDIR)/etc/afile
My package needs to populate the installation directory of another My package needs to populate the installation directory of another
skipping to change at line 10743 skipping to change at line 10817
‘*/lib/*emacs/site-lisp’ or ‘*/share/*emacs/site-lisp’ in the search ‘*/lib/*emacs/site-lisp’ or ‘*/share/*emacs/site-lisp’ in the search
path of emacs, and then substitutes ‘${libdir}’ or ‘${datadir}’ path of emacs, and then substitutes ‘${libdir}’ or ‘${datadir}’
appropriately. appropriately.
The emacs case looks complicated because it processes a list and The emacs case looks complicated because it processes a list and
expects two possible layouts; otherwise it’s easy, and the benefits for expects two possible layouts; otherwise it’s easy, and the benefits for
non-root users are really worth the extra ‘sed’ invocation. non-root users are really worth the extra ‘sed’ invocation.
File: automake.info, Node: Debugging Make Rules, Next: Reporting Bugs, Prev: Hard-Coded Install Paths, Up: FAQ File: automake.info, Node: Debugging Make Rules, Next: Reporting Bugs, Prev: Hard-Coded Install Paths, Up: FAQ
27.11 Debugging Make Rules 26.11 Debugging Make Rules
========================== ==========================
The rules and dependency trees generated by ‘automake’ can get rather The rules and dependency trees generated by ‘automake’ can get rather
complex, and leave the developer head-scratching when things don’t work complex, and leave the developer head-scratching when things don’t work
as expected. Besides the debug options provided by the ‘make’ command as expected. Besides the debug options provided by the ‘make’ command
(*note (make)Options Summary::), here’s a couple of further hints for (*note (make)Options Summary::), here’s a couple of further hints for
debugging makefiles generated by ‘automake’ effectively: debugging makefiles generated by ‘automake’ effectively:
• If less verbose output has been enabled in the package with the use • If less verbose output has been enabled in the package with the use
of silent rules (*note Automake Silent Rules::), you can use ‘make of silent rules (*note Automake Silent Rules::), you can use ‘make
skipping to change at line 10785 skipping to change at line 10859
variables, and calling rules interactively, much like a debugger. variables, and calling rules interactively, much like a debugger.
---------- Footnotes ---------- ---------- Footnotes ----------
(1) Automake’s ‘dist’ and ‘distcheck’ rules had a bug in this regard (1) Automake’s ‘dist’ and ‘distcheck’ rules had a bug in this regard
in that they created directories even with ‘-n’, but this has been fixed in that they created directories even with ‘-n’, but this has been fixed
in Automake 1.11. in Automake 1.11.
File: automake.info, Node: Reporting Bugs, Prev: Debugging Make Rules, Up: FA Q File: automake.info, Node: Reporting Bugs, Prev: Debugging Make Rules, Up: FA Q
27.12 Reporting Bugs 26.12 Reporting Bugs
==================== ====================
Most nontrivial software has bugs. Automake is no exception. Although Most nontrivial software has bugs. Automake is no exception. Although
we cannot promise we can or will fix a bug, and we might not even agree we cannot promise we can or will fix a bug, and we might not even agree
that it is a bug, we want to hear about problems you encounter. Often that it is a bug, we want to hear about problems you encounter. Often
we agree they are bugs and want to fix them. we agree they are bugs and want to fix them.
To make it possible for us to fix a bug, please report it. In order To make it possible for us to fix a bug, please report it. In order
to do so effectively, it helps to know when and how to do it. to do so effectively, it helps to know when and how to do it.
Before reporting a bug, it is a good idea to see if it is already Before reporting a bug, it is a good idea to see if it is already
known. You can look at the GNU Bug Tracker (https://debbugs.gnu.org/) known. You can look at the GNU Bug Tracker (https://debbugs.gnu.org/)
and the bug-automake mailing list archives and the bug-automake mailing list archives
(https://lists.gnu.org/archive/html/bug-automake/) for previous bug (https://lists.gnu.org/archive/html/bug-automake/) for previous bug
reports. We previously used a Gnats database reports. We previously used a Gnats database for bug tracking, but it
(http://sourceware.org/cgi-bin/gnatsweb.pl?database=automake) for bug is no longer online.
tracking, so some bugs might have been reported there already. Please
do not use it for new bug reports, however.
If the bug is not already known, it should be reported. It is very If the bug is not already known, it should be reported. It is very
important to report bugs in a way that is useful and efficient. For important to report bugs in a way that is useful and efficient. For
this, please familiarize yourself with How to Report Bugs Effectively this, please familiarize yourself with How to Report Bugs Effectively
(http://www.chiark.greenend.org.uk/~sgtatham/bugs.html) and How to Ask (https://www.chiark.greenend.org.uk/~sgtatham/bugs.html) and How to Ask
Questions the Smart Way Questions the Smart Way
(http://catb.org/~esr/faqs/smart-questions.html). This helps you and (http://catb.org/~esr/faqs/smart-questions.html). This helps you and
developers to save time, which can then be spent on fixing more bugs and developers to save time, which can then be spent on fixing more bugs and
implementing more features. implementing more features.
For a bug report, a feature request or other suggestions, please send For a bug report, a feature request or other suggestions, please send
email to <bug-automake@gnu.org>. This will then open a new bug in the email to <bug-automake@gnu.org>. This will then open a new bug in the
bug tracker (https://debbugs.gnu.org/automake). Be sure to include the bug tracker (https://debbugs.gnu.org/automake). Be sure to include the
versions of Autoconf and Automake that you use. Ideally, post a minimal versions of Autoconf and Automake that you use. Ideally, post a minimal
‘Makefile.am’ and ‘configure.ac’ that reproduces the problem you ‘Makefile.am’ and ‘configure.ac’ that reproduces the problem you
skipping to change at line 11404 skipping to change at line 11476
* AM_PROG_LEX: Public Macros. (line 94) * AM_PROG_LEX: Public Macros. (line 94)
* AM_PROG_MKDIR_P: Obsolete Macros. (line 14) * AM_PROG_MKDIR_P: Obsolete Macros. (line 14)
* AM_PROG_UPC: Public Macros. (line 104) * AM_PROG_UPC: Public Macros. (line 104)
* AM_PROG_VALAC: Vala Support. (line 20) * AM_PROG_VALAC: Vala Support. (line 20)
* AM_SANITY_CHECK: Private Macros. (line 30) * AM_SANITY_CHECK: Private Macros. (line 30)
* AM_SET_DEPDIR: Private Macros. (line 13) * AM_SET_DEPDIR: Private Macros. (line 13)
* AM_SILENT_RULES: Public Macros. (line 118) * AM_SILENT_RULES: Public Macros. (line 118)
* AM_SUBST_NOTMAKE(VAR): Optional. (line 180) * AM_SUBST_NOTMAKE(VAR): Optional. (line 180)
* AM_WITH_DMALLOC: Public Macros. (line 122) * AM_WITH_DMALLOC: Public Macros. (line 122)
* m4_include: Basics of Distribution. * m4_include: Basics of Distribution.
(line 17) (line 22)
* m4_include <1>: Optional. (line 190) * m4_include <1>: Optional. (line 190)
File: automake.info, Node: Variable Index, Next: General Index, Prev: Macro I ndex, Up: Indices File: automake.info, Node: Variable Index, Next: General Index, Prev: Macro I ndex, Up: Indices
B.2 Variable Index B.2 Variable Index
================== ==================
* Menu: * Menu:
* _DATA: Data. (line 6) * _DATA: Data. (line 6)
skipping to change at line 11445 skipping to change at line 11517
* _SOURCES <1>: Program Sources. (line 33) * _SOURCES <1>: Program Sources. (line 33)
* _SOURCES <2>: Default _SOURCES. (line 6) * _SOURCES <2>: Default _SOURCES. (line 6)
* _TEXINFOS: Texinfo. (line 6) * _TEXINFOS: Texinfo. (line 6)
* _TEXINFOS <1>: Texinfo. (line 65) * _TEXINFOS <1>: Texinfo. (line 65)
* ACLOCAL_AUTOMAKE_DIR: aclocal Options. (line 12) * ACLOCAL_AUTOMAKE_DIR: aclocal Options. (line 12)
* ALLOCA: LTLIBOBJS. (line 6) * ALLOCA: LTLIBOBJS. (line 6)
* ALLOCA <1>: LIBOBJS. (line 6) * ALLOCA <1>: LIBOBJS. (line 6)
* AM_CCASFLAGS: Assembly Support. (line 10) * AM_CCASFLAGS: Assembly Support. (line 10)
* AM_CFLAGS: Program Variables. (line 50) * AM_CFLAGS: Program Variables. (line 50)
* AM_COLOR_TESTS: Scripts-based Testsuites. * AM_COLOR_TESTS: Scripts-based Testsuites.
(line 67) (line 85)
* AM_CPPFLAGS: Program Variables. (line 16) * AM_CPPFLAGS: Program Variables. (line 16)
* AM_CPPFLAGS <1>: Assembly Support. (line 10) * AM_CPPFLAGS <1>: Assembly Support. (line 10)
* AM_CXXFLAGS: C++ Support. (line 22) * AM_CXXFLAGS: C++ Support. (line 22)
* AM_DEFAULT_SOURCE_EXT: Default _SOURCES. (line 6) * AM_DEFAULT_SOURCE_EXT: Default _SOURCES. (line 6)
* AM_DEFAULT_V: Automake Silent Rules. * AM_DEFAULT_V: Automake Silent Rules.
(line 120) (line 120)
* AM_DEFAULT_VERBOSITY: Automake Silent Rules. * AM_DEFAULT_VERBOSITY: Automake Silent Rules.
(line 120) (line 120)
* AM_DISTCHECK_CONFIGURE_FLAGS: Checking the Distribution. * AM_DISTCHECK_CONFIGURE_FLAGS: Checking the Distribution.
(line 28) (line 30)
* AM_ETAGSFLAGS: Tags. (line 25) * AM_ETAGSFLAGS: Tags. (line 25)
* AM_EXT_LOG_DRIVER_FLAGS: Declaring Custom Test Drivers. * AM_EXT_LOG_DRIVER_FLAGS: Declaring Custom Test Drivers.
(line 6) (line 6)
* AM_EXT_LOG_FLAGS: Parallel Test Harness. * AM_EXT_LOG_FLAGS: Parallel Test Harness.
(line 51) (line 51)
* AM_FCFLAGS: Fortran 9x Support. (line 22) * AM_FCFLAGS: Fortran 9x Support. (line 22)
* AM_FFLAGS: Fortran 77 Support. (line 22) * AM_FFLAGS: Fortran 77 Support. (line 22)
* AM_GCJFLAGS: Java Support with gcj. * AM_GCJFLAGS: Java Support with gcj.
(line 26) (line 26)
* AM_INSTALLCHECK_STD_OPTIONS_EXEMPT: List of Automake options. * AM_INSTALLCHECK_STD_OPTIONS_EXEMPT: List of Automake options.
(line 138) (line 139)
* AM_JAVACFLAGS: Java. (line 44) * AM_JAVACFLAGS: Java. (line 44)
* AM_LDFLAGS: Linking. (line 10) * AM_LDFLAGS: Linking. (line 10)
* AM_LDFLAGS <1>: Program Variables. (line 59) * AM_LDFLAGS <1>: Program Variables. (line 59)
* AM_LFLAGS: Yacc and Lex. (line 60) * AM_LFLAGS: Yacc and Lex. (line 60)
* AM_LIBTOOLFLAGS: Libtool Flags. (line 6) * AM_LIBTOOLFLAGS: Libtool Flags. (line 6)
* AM_LOG_DRIVER_FLAGS: Declaring Custom Test Drivers. * AM_LOG_DRIVER_FLAGS: Declaring Custom Test Drivers.
(line 6) (line 6)
* AM_LOG_FLAGS: Parallel Test Harness. * AM_LOG_FLAGS: Parallel Test Harness.
(line 51) (line 51)
* AM_MAKEFLAGS: Subdirectories. (line 29) * AM_MAKEFLAGS: Subdirectories. (line 29)
* AM_MAKEINFOFLAGS: Texinfo. (line 115) * AM_MAKEINFOFLAGS: Texinfo. (line 115)
* AM_MAKEINFOHTMLFLAGS: Texinfo. (line 116) * AM_MAKEINFOHTMLFLAGS: Texinfo. (line 116)
* AM_OBJCFLAGS: Objective C Support. (line 22) * AM_OBJCFLAGS: Objective C Support. (line 22)
* AM_OBJCXXFLAGS: Objective C++ Support. * AM_OBJCXXFLAGS: Objective C++ Support.
(line 22) (line 22)
* AM_RFLAGS: Fortran 77 Support. (line 28) * AM_RFLAGS: Fortran 77 Support. (line 28)
* AM_RUNTESTFLAGS: DejaGnu Tests. (line 24) * AM_RUNTESTFLAGS: DejaGnu Tests. (line 24)
* AM_TESTSUITE_SUMMARY_HEADER: Scripts-based Testsuites.
(line 69)
* AM_TESTS_ENVIRONMENT: Scripts-based Testsuites. * AM_TESTS_ENVIRONMENT: Scripts-based Testsuites.
(line 86) (line 104)
* AM_TESTS_FD_REDIRECT: Scripts-based Testsuites. * AM_TESTS_FD_REDIRECT: Scripts-based Testsuites.
(line 94) (line 112)
* AM_UPCFLAGS: Unified Parallel C Support. * AM_UPCFLAGS: Unified Parallel C Support.
(line 21) (line 21)
* AM_UPDATE_INFO_DIR: Texinfo. (line 92) * AM_UPDATE_INFO_DIR: Texinfo. (line 92)
* AM_V: Automake Silent Rules. * AM_V: Automake Silent Rules.
(line 120) (line 120)
* AM_VALAFLAGS: Vala Support. (line 41) * AM_VALAFLAGS: Vala Support. (line 44)
* AM_V_at: Automake Silent Rules. * AM_V_at: Automake Silent Rules.
(line 120) (line 120)
* AM_V_GEN: Automake Silent Rules. * AM_V_GEN: Automake Silent Rules.
(line 120) (line 120)
* AM_YFLAGS: Yacc and Lex. (line 37) * AM_YFLAGS: Yacc and Lex. (line 37)
* AR: Public Macros. (line 75) * AR: Public Macros. (line 75)
* AUTOCONF: automake Invocation. (line 28) * AUTOCONF: automake Invocation. (line 28)
* AUTOM4TE: aclocal Invocation. (line 44) * AUTOM4TE: aclocal Invocation. (line 44)
* AUTOMAKE_JOBS: automake Invocation. (line 178) * AUTOMAKE_JOBS: automake Invocation. (line 195)
* AUTOMAKE_LIBDIR: automake Invocation. (line 64) * AUTOMAKE_LIBDIR: automake Invocation. (line 64)
* AUTOMAKE_OPTIONS: Public Macros. (line 10) * AUTOMAKE_OPTIONS: Public Macros. (line 10)
* AUTOMAKE_OPTIONS <1>: Dependencies. (line 34) * AUTOMAKE_OPTIONS <1>: Dependencies. (line 34)
* AUTOMAKE_OPTIONS <2>: List of Automake options. * AUTOMAKE_OPTIONS <2>: List of Automake options.
(line 6) (line 6)
* bin_PROGRAMS: Program Sources. (line 6) * bin_PROGRAMS: Program Sources. (line 6)
* bin_SCRIPTS: Scripts. (line 18) * bin_SCRIPTS: Scripts. (line 18)
* build_triplet: Optional. (line 14) * build_triplet: Optional. (line 14)
* BUILT_SOURCES: Sources. (line 27) * BUILT_SOURCES: Sources. (line 27)
* BZIP2: The Types of Distributions. * BZIP2: The Types of Distributions.
skipping to change at line 11549 skipping to change at line 11623
* DATA: Uniform. (line 101) * DATA: Uniform. (line 101)
* DATA <1>: Data. (line 7) * DATA <1>: Data. (line 7)
* data_DATA: Data. (line 9) * data_DATA: Data. (line 9)
* DEFS: Program Variables. (line 12) * DEFS: Program Variables. (line 12)
* DEJATOOL: DejaGnu Tests. (line 19) * DEJATOOL: DejaGnu Tests. (line 19)
* DESTDIR: DESTDIR. (line 6) * DESTDIR: DESTDIR. (line 6)
* DESTDIR <1>: Staged Installs. (line 6) * DESTDIR <1>: Staged Installs. (line 6)
* DISABLE_HARD_ERRORS: Scripts-based Testsuites. * DISABLE_HARD_ERRORS: Scripts-based Testsuites.
(line 32) (line 32)
* DISTCHECK_CONFIGURE_FLAGS: Checking the Distribution. * DISTCHECK_CONFIGURE_FLAGS: Checking the Distribution.
(line 28) (line 30)
* distcleancheck_listfiles: Checking the Distribution. * distcleancheck_listfiles: Checking the Distribution.
(line 70) (line 92)
* distcleancheck_listfiles <1>: Errors with distclean. * distcleancheck_listfiles <1>: Errors with distclean.
(line 112) (line 112)
* DISTCLEANFILES: Clean. (line 13) * DISTCLEANFILES: Clean. (line 13)
* DISTCLEANFILES <1>: Checking the Distribution. * DISTCLEANFILES <1>: Checking the Distribution.
(line 70) (line 92)
* distdir: The dist Hook. (line 33) * distdir: The dist Hook. (line 34)
* distdir <1>: Third-Party Makefiles. * distdir <1>: Third-Party Makefiles.
(line 25) (line 25)
* distuninstallcheck_listfiles: Checking the Distribution. * distuninstallcheck_listfiles: Checking the Distribution.
(line 106) (line 128)
* dist_: Alternative. (line 29) * dist_: Alternative. (line 28)
* dist_ <1>: Fine-grained Distribution Control. * dist_ <1>: Fine-grained Distribution Control.
(line 6) (line 6)
* dist_lisp_LISP: Emacs Lisp. (line 11) * dist_lisp_LISP: Emacs Lisp. (line 11)
* dist_noinst_LISP: Emacs Lisp. (line 11) * dist_noinst_LISP: Emacs Lisp. (line 11)
* DIST_SUBDIRS: Subdirectories with AM_CONDITIONAL. * DIST_SUBDIRS: Subdirectories with AM_CONDITIONAL.
(line 25) (line 25)
* DIST_SUBDIRS <1>: Basics of Distribution. * DIST_SUBDIRS <1>: Basics of Distribution.
(line 47) (line 52)
* DVIPS: Texinfo. (line 141) * DVIPS: Texinfo. (line 141)
* EMACS: Public Macros. (line 60) * EMACS: Public Macros. (line 60)
* EMPTY_AUTOMAKE_TARGETS: Third-Party Makefiles.
(line 88)
* ETAGSFLAGS: Tags. (line 25) * ETAGSFLAGS: Tags. (line 25)
* ETAGS_ARGS: Tags. (line 25) * ETAGS_ARGS: Tags. (line 25)
* EXPECT: DejaGnu Tests. (line 19) * EXPECT: DejaGnu Tests. (line 19)
* EXTRA_DIST: Basics of Distribution. * EXTRA_DIST: Basics of Distribution.
(line 34) (line 39)
* EXTRA_maude_DEPENDENCIES: Linking. (line 41) * EXTRA_maude_DEPENDENCIES: Linking. (line 41)
* EXTRA_maude_DEPENDENCIES <1>: Program and Library Variables. * EXTRA_maude_DEPENDENCIES <1>: Program and Library Variables.
(line 119) (line 119)
* EXTRA_maude_SOURCES: Program and Library Variables. * EXTRA_maude_SOURCES: Program and Library Variables.
(line 53) (line 53)
* EXTRA_PROGRAMS: Conditional Programs. * EXTRA_PROGRAMS: Conditional Programs.
(line 15) (line 15)
* EXT_LOG_COMPILE: Parallel Test Harness. * EXT_LOG_COMPILE: Parallel Test Harness.
(line 51) (line 51)
* EXT_LOG_COMPILER: Parallel Test Harness. * EXT_LOG_COMPILER: Parallel Test Harness.
skipping to change at line 11617 skipping to change at line 11693
(line 21) (line 21)
* FLINK: Fortran 77 Support. (line 35) * FLINK: Fortran 77 Support. (line 35)
* GCJ: Public Macros. (line 99) * GCJ: Public Macros. (line 99)
* GCJFLAGS: Public Macros. (line 99) * GCJFLAGS: Public Macros. (line 99)
* GCJFLAGS <1>: Java Support with gcj. * GCJFLAGS <1>: Java Support with gcj.
(line 16) (line 16)
* GCJLINK: How the Linker is Chosen. * GCJLINK: How the Linker is Chosen.
(line 10) (line 10)
* GTAGS_ARGS: Tags. (line 60) * GTAGS_ARGS: Tags. (line 60)
* GZIP_ENV: Basics of Distribution. * GZIP_ENV: Basics of Distribution.
(line 14) (line 16)
* HEADERS: Uniform. (line 101) * HEADERS: Uniform. (line 101)
* host_triplet: Optional. (line 14) * host_triplet: Optional. (line 14)
* INCLUDES: Program Variables. (line 44) * INCLUDES: Program Variables. (line 44)
* include_HEADERS: Headers. (line 6) * include_HEADERS: Headers. (line 6)
* info_TEXINFOS: Texinfo. (line 6) * info_TEXINFOS: Texinfo. (line 6)
* JAVA: Uniform. (line 101) * JAVA: Uniform. (line 101)
* JAVAC: Java. (line 37) * JAVAC: Java. (line 37)
* JAVACFLAGS: Java. (line 40) * JAVACFLAGS: Java. (line 40)
* JAVAROOT: Java. (line 49) * JAVAROOT: Java. (line 49)
* LDADD: Linking. (line 10) * LDADD: Linking. (line 10)
skipping to change at line 11720 skipping to change at line 11796
* maude_SOURCES: Program and Library Variables. * maude_SOURCES: Program and Library Variables.
(line 18) (line 18)
* maude_UPCFLAGS: Program and Library Variables. * maude_UPCFLAGS: Program and Library Variables.
(line 180) (line 180)
* maude_YFLAGS: Program and Library Variables. * maude_YFLAGS: Program and Library Variables.
(line 181) (line 181)
* MISSING: Public Macros. (line 110) * MISSING: Public Macros. (line 110)
* MKDIR_P: Obsolete Macros. (line 14) * MKDIR_P: Obsolete Macros. (line 14)
* mkdir_p: Obsolete Macros. (line 14) * mkdir_p: Obsolete Macros. (line 14)
* MOSTLYCLEANFILES: Clean. (line 13) * MOSTLYCLEANFILES: Clean. (line 13)
* nobase_: Alternative. (line 23) * nobase_: Alternative. (line 22)
* nodist_: Alternative. (line 29) * nodist_: Alternative. (line 28)
* nodist_ <1>: Fine-grained Distribution Control. * nodist_ <1>: Fine-grained Distribution Control.
(line 6) (line 6)
* noinst_: Uniform. (line 90) * noinst_: Uniform. (line 90)
* noinst_HEADERS: Headers. (line 6) * noinst_HEADERS: Headers. (line 6)
* noinst_HEADERS <1>: Headers. (line 23) * noinst_HEADERS <1>: Headers. (line 23)
* noinst_LIBRARIES: A Library. (line 6) * noinst_LIBRARIES: A Library. (line 6)
* noinst_LISP: Emacs Lisp. (line 6) * noinst_LISP: Emacs Lisp. (line 6)
* noinst_LTLIBRARIES: Libtool Convenience Libraries. * noinst_LTLIBRARIES: Libtool Convenience Libraries.
(line 6) (line 6)
* noinst_PROGRAMS: Program Sources. (line 6) * noinst_PROGRAMS: Program Sources. (line 6)
skipping to change at line 11791 skipping to change at line 11867
* RUNTESTFLAGS: DejaGnu Tests. (line 24) * RUNTESTFLAGS: DejaGnu Tests. (line 24)
* sbin_PROGRAMS: Program Sources. (line 6) * sbin_PROGRAMS: Program Sources. (line 6)
* sbin_SCRIPTS: Scripts. (line 18) * sbin_SCRIPTS: Scripts. (line 18)
* SCRIPTS: Uniform. (line 101) * SCRIPTS: Uniform. (line 101)
* SCRIPTS <1>: Scripts. (line 9) * SCRIPTS <1>: Scripts. (line 9)
* sharedstate_DATA: Data. (line 9) * sharedstate_DATA: Data. (line 9)
* SOURCES: Program Sources. (line 33) * SOURCES: Program Sources. (line 33)
* SOURCES <1>: Default _SOURCES. (line 6) * SOURCES <1>: Default _SOURCES. (line 6)
* SUBDIRS: Subdirectories. (line 8) * SUBDIRS: Subdirectories. (line 8)
* SUBDIRS <1>: Basics of Distribution. * SUBDIRS <1>: Basics of Distribution.
(line 47) (line 52)
* SUFFIXES: Suffixes. (line 6) * SUFFIXES: Suffixes. (line 6)
* sysconf_DATA: Data. (line 9) * sysconf_DATA: Data. (line 9)
* TAGS_DEPENDENCIES: Tags. (line 35) * TAGS_DEPENDENCIES: Tags. (line 35)
* TAR: Basics of Distribution.
(line 19)
* target_triplet: Optional. (line 14) * target_triplet: Optional. (line 14)
* TESTS: Scripts-based Testsuites. * TESTS: Scripts-based Testsuites.
(line 86) (line 104)
* TESTS <1>: Parallel Test Harness. * TESTS <1>: Parallel Test Harness.
(line 12) (line 12)
* TESTS_ENVIRONMENT: Scripts-based Testsuites. * TESTS_ENVIRONMENT: Scripts-based Testsuites.
(line 86) (line 104)
* TEST_EXTENSIONS: Parallel Test Harness. * TEST_EXTENSIONS: Parallel Test Harness.
(line 34) (line 34)
* TEST_LOGS: Parallel Test Harness. * TEST_LOGS: Parallel Test Harness.
(line 34) (line 34)
* TEST_SUITE_LOG: Parallel Test Harness. * TEST_SUITE_LOG: Parallel Test Harness.
(line 12) (line 12)
* TEXI2DVI: Texinfo. (line 132) * TEXI2DVI: Texinfo. (line 132)
* TEXI2PDF: Texinfo. (line 137) * TEXI2PDF: Texinfo. (line 137)
* TEXINFOS: Uniform. (line 101) * TEXINFOS: Uniform. (line 101)
* TEXINFOS <1>: Texinfo. (line 65) * TEXINFOS <1>: Texinfo. (line 65)
* TEXINFO_TEX: Texinfo. (line 145) * TEXINFO_TEX: Texinfo. (line 145)
* top_distdir: The dist Hook. (line 33) * top_distdir: The dist Hook. (line 34)
* top_distdir <1>: Third-Party Makefiles. * top_distdir <1>: Third-Party Makefiles.
(line 25) (line 25)
* UPC: Public Macros. (line 104) * UPC: Public Macros. (line 104)
* UPC <1>: Unified Parallel C Support. * UPC <1>: Unified Parallel C Support.
(line 15) (line 15)
* UPCCOMPILE: Unified Parallel C Support. * UPCCOMPILE: Unified Parallel C Support.
(line 24) (line 24)
* UPCFLAGS: Unified Parallel C Support. * UPCFLAGS: Unified Parallel C Support.
(line 18) (line 18)
* UPCLINK: Unified Parallel C Support. * UPCLINK: Unified Parallel C Support.
(line 28) (line 28)
* UPCLINK <1>: How the Linker is Chosen. * UPCLINK <1>: How the Linker is Chosen.
(line 16) (line 16)
* V: Automake Silent Rules. * V: Automake Silent Rules.
(line 88) (line 88)
* VALAC: Vala Support. (line 34) * VALAC: Vala Support. (line 37)
* VALAFLAGS: Vala Support. (line 38) * VALAFLAGS: Vala Support. (line 41)
* VERBOSE: Parallel Test Harness. * VERBOSE: Parallel Test Harness.
(line 26) (line 26)
* VERSION: Basics of Distribution. * VERSION: Basics of Distribution.
(line 6) (line 6)
* WARNINGS: automake Invocation. (line 171) * WARNINGS: automake Invocation. (line 187)
* WARNINGS <1>: aclocal Options. (line 95) * WARNINGS <1>: aclocal Options. (line 95)
* WITH_DMALLOC: Public Macros. (line 122) * WITH_DMALLOC: Public Macros. (line 122)
* XFAIL_TESTS: Scripts-based Testsuites. * XFAIL_TESTS: Scripts-based Testsuites.
(line 32) (line 32)
* XZ_OPT: The Types of Distributions. * XZ_OPT: The Types of Distributions.
(line 24) (line 24)
* YACC: Optional. (line 122) * YACC: Optional. (line 122)
* YFLAGS: Yacc and Lex. (line 37) * YFLAGS: Yacc and Lex. (line 37)
* ZSTD_CLEVEL: The Types of Distributions. * ZSTD_CLEVEL: The Types of Distributions.
(line 47) (line 47)
skipping to change at line 11878 skipping to change at line 11956
(line 85) (line 85)
* --dry-run: aclocal Options. (line 27) * --dry-run: aclocal Options. (line 27)
* --enable-debug, example: Usage of Conditionals. * --enable-debug, example: Usage of Conditionals.
(line 21) (line 21)
* --enable-dependency-tracking: Dependency Tracking. (line 43) * --enable-dependency-tracking: Dependency Tracking. (line 43)
* --enable-maintainer-mode: Optional. (line 173) * --enable-maintainer-mode: Optional. (line 173)
* --enable-silent-rules: Automake Silent Rules. * --enable-silent-rules: Automake Silent Rules.
(line 85) (line 85)
* --force: aclocal Options. (line 49) * --force: aclocal Options. (line 49)
* --force-missing: automake Invocation. (line 80) * --force-missing: automake Invocation. (line 80)
* --foreign: automake Invocation. (line 86) * --foreign: Strictness. (line 51)
* --gnits: automake Invocation. (line 90) * --foreign <1>: automake Invocation. (line 86)
* --gnits, complete description: Gnits. (line 29) * --gnits: Strictness. (line 58)
* --gnu: automake Invocation. (line 94) * --gnits <1>: automake Invocation. (line 90)
* --gnu, complete description: Gnits. (line 6) * --gnu: Strictness. (line 18)
* --gnu, required files: Gnits. (line 6) * --gnu <1>: automake Invocation. (line 94)
* --help: automake Invocation. (line 98) * --help: automake Invocation. (line 98)
* --help <1>: aclocal Options. (line 31) * --help <1>: aclocal Options. (line 31)
* --help check: List of Automake options. * --help check: List of Automake options.
(line 132) (line 133)
* --help=recursive: Nested Packages. (line 30) * --help=recursive: Nested Packages. (line 30)
* --host=HOST: Cross-Compilation. (line 16) * --host=HOST: Cross-Compilation. (line 16)
* --include-deps: automake Invocation. (line 106) * --include-deps: automake Invocation. (line 106)
* --install: aclocal Options. (line 38) * --install: aclocal Options. (line 38)
* --libdir: automake Invocation. (line 61) * --libdir: automake Invocation. (line 61)
* --no-force: automake Invocation. (line 111) * --no-force: automake Invocation. (line 111)
* --output: aclocal Options. (line 59) * --output: aclocal Options. (line 59)
* --output-dir: automake Invocation. (line 118) * --output-dir: automake Invocation. (line 118)
* --prefix: Standard Directory Variables. * --prefix: Standard Directory Variables.
(line 33) (line 33)
skipping to change at line 11910 skipping to change at line 11988
* --program-prefix=PREFIX: Renaming. (line 16) * --program-prefix=PREFIX: Renaming. (line 16)
* --program-suffix=SUFFIX: Renaming. (line 18) * --program-suffix=SUFFIX: Renaming. (line 18)
* --program-transform-name=PROGRAM: Renaming. (line 20) * --program-transform-name=PROGRAM: Renaming. (line 20)
* --system-acdir: aclocal Options. (line 17) * --system-acdir: aclocal Options. (line 17)
* --target=TARGET: Cross-Compilation. (line 55) * --target=TARGET: Cross-Compilation. (line 55)
* --verbose: automake Invocation. (line 125) * --verbose: automake Invocation. (line 125)
* --verbose <1>: aclocal Options. (line 73) * --verbose <1>: aclocal Options. (line 73)
* --version: automake Invocation. (line 129) * --version: automake Invocation. (line 129)
* --version <1>: aclocal Options. (line 76) * --version <1>: aclocal Options. (line 76)
* --version check: List of Automake options. * --version check: List of Automake options.
(line 132) (line 133)
* --warnings: automake Invocation. (line 133) * --warnings: automake Invocation. (line 133)
* --warnings <1>: aclocal Options. (line 80) * --warnings <1>: aclocal Options. (line 80)
* --with-dmalloc: Public Macros. (line 122) * --with-dmalloc: Public Macros. (line 122)
* -a: automake Invocation. (line 41) * -a: automake Invocation. (line 41)
* -c: automake Invocation. (line 74) * -c: automake Invocation. (line 74)
* -f: automake Invocation. (line 79) * -f: automake Invocation. (line 79)
* -hook targets: Extending. (line 66) * -hook targets: Extending. (line 66)
* -i: automake Invocation. (line 102) * -i: automake Invocation. (line 102)
* -I: aclocal Options. (line 34) * -I: aclocal Options. (line 34)
* -l and LDADD: Linking. (line 70) * -l and LDADD: Linking. (line 70)
skipping to change at line 12025 skipping to change at line 12103
(line 20) (line 20)
* AM_OBJCXXFLAGS and OBJXXCFLAGS: Flag Variables Ordering. * AM_OBJCXXFLAGS and OBJXXCFLAGS: Flag Variables Ordering.
(line 20) (line 20)
* AM_RFLAGS and RFLAGS: Flag Variables Ordering. * AM_RFLAGS and RFLAGS: Flag Variables Ordering.
(line 20) (line 20)
* AM_UPCFLAGS and UPCFLAGS: Flag Variables Ordering. * AM_UPCFLAGS and UPCFLAGS: Flag Variables Ordering.
(line 20) (line 20)
* AM_YFLAGS and YFLAGS: Flag Variables Ordering. * AM_YFLAGS and YFLAGS: Flag Variables Ordering.
(line 20) (line 20)
* Append operator: General Operation. (line 24) * Append operator: General Operation. (line 24)
* ar-lib: Auxiliary Programs. (line 16)
* ARG_MAX: Length Limitations. (line 6) * ARG_MAX: Length Limitations. (line 6)
* autogen.sh and autoreconf: Error required file ltmain.sh not found . * autogen.sh and autoreconf: Error required file ltmain.sh not found .
(line 6) (line 6)
* autom4te: aclocal Invocation. (line 44) * autom4te: aclocal Invocation. (line 44)
* Automake constraints: Introduction. (line 21) * Automake constraints: Introduction. (line 21)
* automake options: automake Invocation. (line 37) * automake options: automake Invocation. (line 37)
* Automake parser, limitations of: General Operation. (line 33) * Automake parser, limitations of: General Operation. (line 33)
* Automake requirements: Introduction. (line 26) * Automake requirements: Introduction. (line 26)
* Automake requirements <1>: Requirements. (line 6) * Automake requirements <1>: Requirements. (line 6)
* Automake targets, no-op: Third-Party Makefiles.
(line 88)
* automake, invocation: automake Invocation. (line 6) * automake, invocation: automake Invocation. (line 6)
* automake, invoking: automake Invocation. (line 6) * automake, invoking: automake Invocation. (line 6)
* Automake, recursive operation: General Operation. (line 58) * Automake, recursive operation: General Operation. (line 58)
* Automatic dependency tracking: Dependencies. (line 11) * Automatic dependency tracking: Dependencies. (line 11)
* Automatic linker selection: How the Linker is Chosen. * Automatic linker selection: How the Linker is Chosen.
(line 6) (line 6)
* autoreconf and libtoolize: Error required file ltmain.sh not found . * autoreconf and libtoolize: Error required file ltmain.sh not found .
(line 6) (line 6)
* autoreconf, example: Creating amhello. (line 59) * autoreconf, example: Creating amhello. (line 59)
* autoscan: amhello's configure.ac Setup Explained. * autoscan: amhello's configure.ac Setup Explained.
(line 89) (line 89)
* Autotools, introduction: GNU Build System. (line 43) * Autotools, introduction: GNU Build System. (line 43)
* Autotools, purpose: Why Autotools. (line 6) * Autotools, purpose: Why Autotools. (line 6)
* autoupdate: Obsolete Macros. (line 6) * autoupdate: Obsolete Macros. (line 6)
* Auxiliary programs: Auxiliary Programs. (line 6) * Auxiliary programs: Auxiliary Programs. (line 6)
* Avoiding man page renaming: Man Pages. (line 54) * Avoiding man page renaming: Man Pages. (line 54)
* Avoiding path stripping: Alternative. (line 23) * Avoiding path stripping: Alternative. (line 22)
* Binary package: DESTDIR. (line 22) * Binary package: DESTDIR. (line 22)
* bootstrap and autoreconf: Error required file ltmain.sh not found . * bootstrap and autoreconf: Error required file ltmain.sh not found .
(line 6) (line 6)
* Bugs, reporting: Introduction. (line 30) * Bugs, reporting: Introduction. (line 30)
* build tree and source tree: VPATH Builds. (line 6) * build tree and source tree: VPATH Builds. (line 6)
* BUILT_SOURCES, defined: Sources. (line 27) * BUILT_SOURCES, defined: Sources. (line 27)
* C++ support: C++ Support. (line 6) * C++ support: C++ Support. (line 6)
* canonicalizing Automake variables: Canonicalization. (line 6) * canonicalizing Automake variables: Canonicalization. (line 6)
* CCASFLAGS and AM_CCASFLAGS: Flag Variables Ordering. * CCASFLAGS and AM_CCASFLAGS: Flag Variables Ordering.
(line 20) (line 20)
* CFLAGS and AM_CFLAGS: Flag Variables Ordering. * CFLAGS and AM_CFLAGS: Flag Variables Ordering.
(line 20) (line 20)
* cfortran: Mixing Fortran 77 With C and C++. * cfortran: Mixing Fortran 77 With C and C++.
(line 6) (line 6)
* check: Standard Targets. (line 31) * check: Standard Targets. (line 31)
* check <1>: Tests. (line 6) * check <1>: Tests. (line 6)
* check <2>: Extending. (line 41) * check <2>: Extending. (line 41)
* check-local: Extending. (line 41) * check-local: Extending. (line 41)
* check-news: List of Automake options. * check-news: List of Automake options.
(line 14) (line 15)
* check_ primary prefix, definition: Uniform. (line 95) * check_ primary prefix, definition: Uniform. (line 95)
* check_PROGRAMS example: Default _SOURCES. (line 28) * check_PROGRAMS example: Default _SOURCES. (line 28)
* clean: Standard Targets. (line 27) * clean: Standard Targets. (line 27)
* clean <1>: Extending. (line 41) * clean <1>: Extending. (line 41)
* clean-local: Clean. (line 15) * clean-local: Clean. (line 15)
* clean-local <1>: Extending. (line 41) * clean-local <1>: Extending. (line 41)
* Colorized testsuite output: Scripts-based Testsuites. * Colorized testsuite output: Scripts-based Testsuites.
(line 67) (line 85)
* command line length limit: Length Limitations. (line 6) * command line length limit: Length Limitations. (line 6)
* Comment, special to Automake: General Operation. (line 68) * Comment, special to Automake: General Operation. (line 68)
* Compilation of Java to bytecode: Java. (line 6) * Compilation of Java to bytecode: Java. (line 6)
* Compilation of Java to native code: Java Support with gcj. * Compilation of Java to native code: Java Support with gcj.
(line 6) (line 6)
* compile: Auxiliary Programs. (line 20)
* Compile Flag Variables: Flag Variables Ordering. * Compile Flag Variables: Flag Variables Ordering.
(line 20) (line 20)
* Complete example: Complete. (line 6) * Complete example: Complete. (line 6)
* Conditional example, --enable-debug: Usage of Conditionals. * Conditional example, --enable-debug: Usage of Conditionals.
(line 21) (line 21)
* conditional libtool libraries: Conditional Libtool Libraries. * conditional libtool libraries: Conditional Libtool Libraries.
(line 6) (line 6)
* Conditional programs: Conditional Programs. * Conditional programs: Conditional Programs.
(line 6) (line 6)
* Conditional subdirectories: Conditional Subdirectories. * Conditional subdirectories: Conditional Subdirectories.
(line 6) (line 6)
* Conditional SUBDIRS: Conditional Subdirectories. * Conditional SUBDIRS: Conditional Subdirectories.
(line 6) (line 6)
* Conditionals: Conditionals. (line 6) * Conditionals: Conditionals. (line 6)
* config.guess: automake Invocation. (line 39) * config.guess: Auxiliary Programs. (line 30)
* config.guess <1>: automake Invocation. (line 39)
* config.site example: config.site. (line 6) * config.site example: config.site. (line 6)
* config.sub: Auxiliary Programs. (line 30)
* configuration variables, overriding: Standard Configuration Variables. * configuration variables, overriding: Standard Configuration Variables.
(line 6) (line 6)
* Configuration, basics: Basic Installation. (line 6) * Configuration, basics: Basic Installation. (line 6)
* Configure substitutions in TESTS: Parallel Test Harness. * Configure substitutions in TESTS: Parallel Test Harness.
(line 46) (line 46)
* configure.ac, Hello World: amhello's configure.ac Setup Explained. * configure.ac, Hello World: amhello's configure.ac Setup Explained.
(line 6) (line 6)
* configure.ac, scanning: configure. (line 6) * configure.ac, scanning: configure. (line 6)
* conflicting definitions: Extending. (line 14) * conflicting definitions: Extending. (line 14)
* Constraints of Automake: Introduction. (line 21) * Constraints of Automake: Introduction. (line 21)
skipping to change at line 12134 skipping to change at line 12218
* debug build, example: VPATH Builds. (line 48) * debug build, example: VPATH Builds. (line 48)
* debugging rules: Debugging Make Rules. * debugging rules: Debugging Make Rules.
(line 6) (line 6)
* default source, Libtool modules example: Default _SOURCES. (line 38) * default source, Libtool modules example: Default _SOURCES. (line 38)
* default verbosity for silent rules: Automake Silent Rules. * default verbosity for silent rules: Automake Silent Rules.
(line 92) (line 92)
* default _SOURCES: Default _SOURCES. (line 6) * default _SOURCES: Default _SOURCES. (line 6)
* definitions, conflicts: Extending. (line 14) * definitions, conflicts: Extending. (line 14)
* dejagnu: DejaGnu Tests. (line 19) * dejagnu: DejaGnu Tests. (line 19)
* dejagnu <1>: List of Automake options. * dejagnu <1>: List of Automake options.
(line 18) (line 19)
* depcomp: Dependencies. (line 22) * depcomp: Auxiliary Programs. (line 40)
* depcomp <1>: Dependencies. (line 22)
* dependencies and distributed files: Errors with distclean. * dependencies and distributed files: Errors with distclean.
(line 6) (line 6)
* Dependency tracking: Dependency Tracking. (line 6) * Dependency tracking: Dependency Tracking. (line 6)
* Dependency tracking <1>: Dependencies. (line 11) * Dependency tracking <1>: Dependencies. (line 11)
* Dependency tracking, disabling: Dependencies. (line 36) * Dependency tracking, disabling: Dependencies. (line 36)
* directory variables: Standard Directory Variables. * directory variables: Standard Directory Variables.
(line 6) (line 6)
* dirlist: Macro Search Path. (line 52) * dirlist: Macro Search Path. (line 52)
* Disabling dependency tracking: Dependencies. (line 37) * Disabling dependency tracking: Dependencies. (line 37)
* Disabling hard errors: Scripts-based Testsuites. * Disabling hard errors: Scripts-based Testsuites.
(line 32) (line 32)
* dist: Standard Targets. (line 35) * dist: Standard Targets. (line 35)
* dist <1>: Basics of Distribution. * dist <1>: Basics of Distribution.
(line 6) (line 6)
* dist-bzip2: The Types of Distributions. * dist-bzip2: The Types of Distributions.
(line 18) (line 18)
* dist-bzip2 <1>: List of Automake options. * dist-bzip2 <1>: List of Automake options.
(line 22) (line 23)
* dist-bzip2 <2>: List of Automake options. * dist-bzip2 <2>: List of Automake options.
(line 22) (line 23)
* dist-gzip: The Types of Distributions. * dist-gzip: The Types of Distributions.
(line 11) (line 11)
* dist-hook: The dist Hook. (line 6) * dist-hook: The dist Hook. (line 6)
* dist-hook <1>: Extending. (line 66) * dist-hook <1>: Extending. (line 66)
* dist-lzip: The Types of Distributions. * dist-lzip: The Types of Distributions.
(line 22) (line 22)
* dist-lzip <1>: List of Automake options. * dist-lzip <1>: List of Automake options.
(line 25) (line 26)
* dist-lzip <2>: List of Automake options. * dist-lzip <2>: List of Automake options.
(line 25) (line 26)
* dist-shar: The Types of Distributions. * dist-shar: The Types of Distributions.
(line 45) (line 45)
* dist-shar <1>: List of Automake options. * dist-shar <1>: List of Automake options.
(line 39) (line 40)
* dist-shar <2>: List of Automake options. * dist-shar <2>: List of Automake options.
(line 37) (line 38)
* dist-tarZ: The Types of Distributions. * dist-tarZ: The Types of Distributions.
(line 39) (line 39)
* dist-tarZ <1>: List of Automake options. * dist-tarZ <1>: List of Automake options.
(line 44) (line 45)
* dist-tarZ <2>: List of Automake options. * dist-tarZ <2>: List of Automake options.
(line 42) (line 43)
* dist-xz: The Types of Distributions. * dist-xz: The Types of Distributions.
(line 30) (line 30)
* dist-xz <1>: List of Automake options. * dist-xz <1>: List of Automake options.
(line 28) (line 29)
* dist-xz <2>: List of Automake options. * dist-xz <2>: List of Automake options.
(line 28) (line 29)
* dist-zip: The Types of Distributions. * dist-zip: The Types of Distributions.
(line 33) (line 33)
* dist-zip <1>: List of Automake options. * dist-zip <1>: List of Automake options.
(line 31) (line 32)
* dist-zip <2>: List of Automake options. * dist-zip <2>: List of Automake options.
(line 31) (line 32)
* dist-zstd: The Types of Distributions. * dist-zstd: The Types of Distributions.
(line 55) (line 55)
* dist-zstd <1>: List of Automake options. * dist-zstd <1>: List of Automake options.
(line 34) (line 35)
* dist-zstd <2>: List of Automake options. * dist-zstd <2>: List of Automake options.
(line 34) (line 35)
* distcheck: Creating amhello. (line 100) * distcheck: Creating amhello. (line 100)
* distcheck <1>: Checking the Distribution. * distcheck <1>: Checking the Distribution.
(line 6) (line 6)
* distcheck better than dist: Preparing Distributions. * distcheck better than dist: Preparing Distributions.
(line 10) (line 10)
* distcheck example: Creating amhello. (line 100) * distcheck example: Creating amhello. (line 100)
* distcheck-hook: Checking the Distribution. * distcheck-hook: Checking the Distribution.
(line 55) (line 77)
* distclean: Standard Targets. (line 29) * distclean: Standard Targets. (line 29)
* distclean <1>: Extending. (line 41) * distclean <1>: Extending. (line 41)
* distclean <2>: Errors with distclean. * distclean <2>: Errors with distclean.
(line 6) (line 6)
* distclean, diagnostic: Errors with distclean. * distclean, diagnostic: Errors with distclean.
(line 6) (line 6)
* distclean-local: Clean. (line 15) * distclean-local: Clean. (line 15)
* distclean-local <1>: Extending. (line 41) * distclean-local <1>: Extending. (line 41)
* distcleancheck: Checking the Distribution. * distcleancheck: Checking the Distribution.
(line 70) (line 92)
* distdir: Third-Party Makefiles. * distdir: Third-Party Makefiles.
(line 25) (line 25)
* Distinction between errors and failures in testsuites: Generalities about Test ing. * Distinction between errors and failures in testsuites: Generalities about Test ing.
(line 48) (line 48)
* Distributions, preparation: Preparing Distributions. * Distributions, preparation: Preparing Distributions.
(line 6) (line 6)
* distuninstallcheck: Checking the Distribution. * distuninstallcheck: Checking the Distribution.
(line 106) (line 128)
* dist_ and nobase_: Alternative. (line 29) * dist_ and nobase_: Alternative. (line 28)
* dist_ and notrans_: Man Pages. (line 63) * dist_ and notrans_: Man Pages. (line 63)
* DIST_SUBDIRS, explained: SUBDIRS vs DIST_SUBDIRS. * DIST_SUBDIRS, explained: SUBDIRS vs DIST_SUBDIRS.
(line 6) (line 6)
* dmalloc, support for: Public Macros. (line 122) * dmalloc, support for: Public Macros. (line 122)
* do-nothing Automake targets: Third-Party Makefiles.
(line 88)
* dvi: Texinfo. (line 25) * dvi: Texinfo. (line 25)
* dvi <1>: Extending. (line 41) * dvi <1>: Checking the Distribution.
(line 57)
* dvi <2>: Extending. (line 41)
* DVI output using Texinfo: Texinfo. (line 6) * DVI output using Texinfo: Texinfo. (line 6)
* dvi-local: Extending. (line 41) * dvi-local: Extending. (line 41)
* E-mail, bug reports: Introduction. (line 30) * E-mail, bug reports: Introduction. (line 30)
* EDITION Texinfo flag: Texinfo. (line 35) * EDITION Texinfo flag: Texinfo. (line 35)
* else: Usage of Conditionals. * else: Usage of Conditionals.
(line 36) (line 36)
* empty Automake targets: Third-Party Makefiles.
(line 88)
* Empty libraries: A Library. (line 48) * Empty libraries: A Library. (line 48)
* Empty libraries and $(LIBOBJS): LIBOBJS. (line 72) * Empty libraries and $(LIBOBJS): LIBOBJS. (line 72)
* empty _SOURCES: Default _SOURCES. (line 44) * empty _SOURCES: Default _SOURCES. (line 44)
* endif: Usage of Conditionals. * endif: Usage of Conditionals.
(line 36) (line 36)
* eps images: Checking the Distribution.
(line 60)
* Example conditional --enable-debug: Usage of Conditionals. * Example conditional --enable-debug: Usage of Conditionals.
(line 21) (line 21)
* Example conditional AC_CONFIG_FILES: Usage of Conditionals. * Example conditional AC_CONFIG_FILES: Usage of Conditionals.
(line 79) (line 79)
* Example Hello World: Hello World. (line 6) * Example Hello World: Hello World. (line 6)
* Example of recursive operation: General Operation. (line 58) * Example of recursive operation: General Operation. (line 58)
* Example of shared libraries: Libtool Libraries. (line 6) * Example of shared libraries: Libtool Libraries. (line 6)
* Example, EXTRA_PROGRAMS: Uniform. (line 36) * Example, EXTRA_PROGRAMS: Uniform. (line 36)
* Example, false and true: true. (line 6) * Example, false and true: true. (line 6)
* Example, mixed language: Mixing Fortran 77 With C and C++. * Example, mixed language: Mixing Fortran 77 With C and C++.
skipping to change at line 12280 skipping to change at line 12373
* EXTRA_prog_SOURCES, defined: Conditional Sources. (line 18) * EXTRA_prog_SOURCES, defined: Conditional Sources. (line 18)
* false Example: true. (line 6) * false Example: true. (line 6)
* FCFLAGS and AM_FCFLAGS: Flag Variables Ordering. * FCFLAGS and AM_FCFLAGS: Flag Variables Ordering.
(line 20) (line 20)
* Features of the GNU Build System: Use Cases. (line 6) * Features of the GNU Build System: Use Cases. (line 6)
* FFLAGS and AM_FFLAGS: Flag Variables Ordering. * FFLAGS and AM_FFLAGS: Flag Variables Ordering.
(line 20) (line 20)
* file names, limitations on: Limitations on File Names. * file names, limitations on: Limitations on File Names.
(line 6) (line 6)
* filename-length-max=99: List of Automake options. * filename-length-max=99: List of Automake options.
(line 47) (line 48)
* Files distributed with Automake: automake Invocation. (line 39) * Files distributed with Automake: automake Invocation. (line 39)
* First line of Makefile.am: General Operation. (line 74) * First line of Makefile.am: General Operation. (line 74)
* Flag variables, ordering: Flag Variables Ordering. * Flag variables, ordering: Flag Variables Ordering.
(line 6) (line 6)
* Flag Variables, Ordering: Flag Variables Ordering. * Flag Variables, Ordering: Flag Variables Ordering.
(line 20) (line 20)
* FLIBS, defined: Mixing Fortran 77 With C and C++. * FLIBS, defined: Mixing Fortran 77 With C and C++.
(line 21) (line 21)
* foreign: amhello's configure.ac Setup Explained. * foreign: amhello's configure.ac Setup Explained.
(line 38) (line 38)
* foreign <1>: List of Automake options. * foreign <1>: List of Automake options.
(line 9) (line 9)
* foreign strictness: Strictness. (line 10) * foreign strictness: Strictness. (line 51)
* Fortran 77 support: Fortran 77 Support. (line 6) * Fortran 77 support: Fortran 77 Support. (line 6)
* Fortran 77, mixing with C and C++: Mixing Fortran 77 With C and C++. * Fortran 77, mixing with C and C++: Mixing Fortran 77 With C and C++.
(line 6) (line 6)
* Fortran 77, Preprocessing: Preprocessing Fortran 77. * Fortran 77, Preprocessing: Preprocessing Fortran 77.
(line 6) (line 6)
* Fortran 9x support: Fortran 9x Support. (line 6) * Fortran 9x support: Fortran 9x Support. (line 6)
* GCJFLAGS and AM_GCJFLAGS: Flag Variables Ordering. * GCJFLAGS and AM_GCJFLAGS: Flag Variables Ordering.
(line 20) (line 20)
* generated files and CVS: CVS. (line 50) * generated files and CVS: CVS. (line 50)
* generated files, distributed: CVS. (line 9) * generated files, distributed: CVS. (line 9)
* Gettext support: gettext. (line 6) * Gettext support: gettext. (line 6)
* git-dist: General Operation. (line 12) * git-dist: General Operation. (line 12)
* git-dist, non-standard example: General Operation. (line 12) * git-dist, non-standard example: General Operation. (line 12)
* gnits: List of Automake options. * gnits: List of Automake options.
(line 9) (line 9)
* gnits strictness: Strictness. (line 10) * gnits strictness: Strictness. (line 58)
* gnu: List of Automake options. * gnu: List of Automake options.
(line 9) (line 9)
* GNU Build System, basics: Basic Installation. (line 6) * GNU Build System, basics: Basic Installation. (line 6)
* GNU Build System, features: Use Cases. (line 6) * GNU Build System, features: Use Cases. (line 6)
* GNU Build System, introduction: GNU Build System. (line 6) * GNU Build System, introduction: GNU Build System. (line 6)
* GNU Build System, use cases: Use Cases. (line 6) * GNU Build System, use cases: Use Cases. (line 6)
* GNU Coding Standards: GNU Build System. (line 29) * GNU Coding Standards: GNU Build System. (line 29)
* GNU Gettext support: gettext. (line 6) * GNU Gettext support: gettext. (line 6)
* GNU make extensions: General Operation. (line 20) * GNU make extensions: General Operation. (line 20)
* GNU Makefile standards: Introduction. (line 12) * GNU Makefile standards: Introduction. (line 12)
* gnu strictness: Strictness. (line 10) * gnu strictness: Strictness. (line 18)
* GNUmakefile including Makefile: Third-Party Makefiles. * GNUmakefile including Makefile: Third-Party Makefiles.
(line 111) (line 114)
* hard error: Generalities about Testing. * hard error: Generalities about Testing.
(line 48) (line 48)
* Header files in _SOURCES: Program Sources. (line 39) * Header files in _SOURCES: Program Sources. (line 39)
* HEADERS primary, defined: Headers. (line 6) * HEADERS primary, defined: Headers. (line 6)
* HEADERS, installation directories: Headers. (line 6) * HEADERS, installation directories: Headers. (line 6)
* Hello World example: Hello World. (line 6) * Hello World example: Hello World. (line 6)
* hook targets: Extending. (line 66) * hook targets: Extending. (line 66)
* HP-UX 10, lex problems: Public Macros. (line 94) * HP-UX 10, lex problems: Public Macros. (line 94)
* html: Texinfo. (line 25) * html: Texinfo. (line 25)
* html <1>: Extending. (line 41) * html <1>: Extending. (line 41)
* HTML output using Texinfo: Texinfo. (line 6) * HTML output using Texinfo: Texinfo. (line 6)
* html-local: Extending. (line 41) * html-local: Extending. (line 41)
* id: Tags. (line 43) * id: Tags. (line 43)
* if: Usage of Conditionals. * if: Usage of Conditionals.
(line 36) (line 36)
* include: Basics of Distribution. * include: Basics of Distribution.
(line 17) (line 22)
* include <1>: Include. (line 6) * include <1>: Include. (line 6)
* include, distribution: Basics of Distribution. * include, distribution: Basics of Distribution.
(line 17) (line 22)
* Including Makefile fragment: Include. (line 6) * Including Makefile fragment: Include. (line 6)
* indentation in Makefile.am: General Operation. (line 33) * indentation in Makefile.am: General Operation. (line 33)
* info: List of Automake options. * info: List of Automake options.
(line 96) (line 97)
* info <1>: Extending. (line 41) * info <1>: Extending. (line 41)
* info-in-builddir: List of Automake options. * info-in-builddir: List of Automake options.
(line 56) (line 57)
* info-local: Extending. (line 41) * info-local: Extending. (line 41)
* install: Standard Targets. (line 18) * install: Standard Targets. (line 18)
* install <1>: The Two Parts of Install. * install <1>: The Two Parts of Install.
(line 14) (line 14)
* install <2>: Extending. (line 41) * install <2>: Extending. (line 41)
* Install hook: Extending Installation. * Install hook: Extending Installation.
(line 15) (line 15)
* Install, two parts of: The Two Parts of Install. * Install, two parts of: The Two Parts of Install.
(line 14) (line 14)
* install-data: Two-Part Install. (line 16) * install-data: Two-Part Install. (line 16)
skipping to change at line 12383 skipping to change at line 12476
* install-exec <2>: Extending. (line 41) * install-exec <2>: Extending. (line 41)
* install-exec-hook: Extending. (line 66) * install-exec-hook: Extending. (line 66)
* install-exec-local: Extending Installation. * install-exec-local: Extending Installation.
(line 9) (line 9)
* install-exec-local <1>: Extending. (line 41) * install-exec-local <1>: Extending. (line 41)
* install-html: Texinfo. (line 25) * install-html: Texinfo. (line 25)
* install-html <1>: Extending. (line 41) * install-html <1>: Extending. (line 41)
* install-html-local: Extending. (line 41) * install-html-local: Extending. (line 41)
* install-info: Texinfo. (line 85) * install-info: Texinfo. (line 85)
* install-info <1>: List of Automake options. * install-info <1>: List of Automake options.
(line 96) (line 97)
* install-info <2>: Extending. (line 41) * install-info <2>: Extending. (line 41)
* install-info target: Texinfo. (line 85) * install-info target: Texinfo. (line 85)
* install-info-local: Extending. (line 41) * install-info-local: Extending. (line 41)
* install-man: Man Pages. (line 32) * install-man: Man Pages. (line 32)
* install-man <1>: List of Automake options. * install-man <1>: List of Automake options.
(line 102) (line 103)
* install-man target: Man Pages. (line 32) * install-man target: Man Pages. (line 32)
* install-pdf: Texinfo. (line 25) * install-pdf: Texinfo. (line 25)
* install-pdf <1>: Extending. (line 41) * install-pdf <1>: Extending. (line 41)
* install-pdf-local: Extending. (line 41) * install-pdf-local: Extending. (line 41)
* install-ps: Texinfo. (line 25) * install-ps: Texinfo. (line 25)
* install-ps <1>: Extending. (line 41) * install-ps <1>: Extending. (line 41)
* install-ps-local: Extending. (line 41) * install-ps-local: Extending. (line 41)
* install-sh: Auxiliary Programs. (line 46)
* install-strip: Standard Targets. (line 21) * install-strip: Standard Targets. (line 21)
* install-strip <1>: Install Rules for the User. * install-strip <1>: Install Rules for the User.
(line 7) (line 7)
* Installation directories, extending list: Uniform. (line 56) * Installation directories, extending list: Uniform. (line 56)
* Installation support: Install. (line 6) * Installation support: Install. (line 6)
* Installation, basics: Basic Installation. (line 6) * Installation, basics: Basic Installation. (line 6)
* installcheck: Standard Targets. (line 33) * installcheck: Standard Targets. (line 33)
* installcheck <1>: Extending. (line 41) * installcheck <1>: Extending. (line 41)
* installcheck-local: Extending. (line 41) * installcheck-local: Extending. (line 41)
* installdirs: Install Rules for the User. * installdirs: Install Rules for the User.
skipping to change at line 12466 skipping to change at line 12560
(line 6) (line 6)
* LISP primary, defined: Emacs Lisp. (line 6) * LISP primary, defined: Emacs Lisp. (line 6)
* LN_S example: Extending. (line 86) * LN_S example: Extending. (line 86)
* local targets: Extending. (line 37) * local targets: Extending. (line 37)
* LTALLOCA, special handling: LTLIBOBJS. (line 6) * LTALLOCA, special handling: LTLIBOBJS. (line 6)
* LTLIBOBJS, special handling: LTLIBOBJS. (line 6) * LTLIBOBJS, special handling: LTLIBOBJS. (line 6)
* LTLIBRARIES primary, defined: Libtool Libraries. (line 6) * LTLIBRARIES primary, defined: Libtool Libraries. (line 6)
* ltmain.sh not found: Error required file ltmain.sh not found . * ltmain.sh not found: Error required file ltmain.sh not found .
(line 6) (line 6)
* m4_include, distribution: Basics of Distribution. * m4_include, distribution: Basics of Distribution.
(line 17) (line 22)
* Macro search path: Macro Search Path. (line 6) * Macro search path: Macro Search Path. (line 6)
* macro serial numbers: Serials. (line 6) * macro serial numbers: Serials. (line 6)
* Macros Automake recognizes: Optional. (line 6) * Macros Automake recognizes: Optional. (line 6)
* maintainer-clean-local: Clean. (line 15) * maintainer-clean-local: Clean. (line 15)
* make check: Tests. (line 6) * make check: Tests. (line 6)
* make clean support: Clean. (line 6) * make clean support: Clean. (line 6)
* make dist: Basics of Distribution. * make dist: Basics of Distribution.
(line 6) (line 6)
* make distcheck: Checking the Distribution. * make distcheck: Checking the Distribution.
(line 6) (line 6)
* make distclean, diagnostic: Errors with distclean. * make distclean, diagnostic: Errors with distclean.
(line 6) (line 6)
* make distcleancheck: Checking the Distribution. * make distcleancheck: Checking the Distribution.
(line 70) (line 92)
* make distuninstallcheck: Checking the Distribution. * make distuninstallcheck: Checking the Distribution.
(line 106) (line 128)
* make install support: Install. (line 6) * make install support: Install. (line 6)
* make installcheck, testing --help and --version: List of Automake options. * make installcheck, testing --help and --version: List of Automake options.
(line 132) (line 133)
* Make rules, overriding: General Operation. (line 46) * Make rules, overriding: General Operation. (line 46)
* Make targets, overriding: General Operation. (line 46) * Make targets, overriding: General Operation. (line 46)
* Makefile fragment, including: Include. (line 6) * Makefile fragment, including: Include. (line 6)
* Makefile.am, first line: General Operation. (line 74) * Makefile.am, first line: General Operation. (line 74)
* Makefile.am, Hello World: amhello's Makefile.am Setup Explained. * Makefile.am, Hello World: amhello's Makefile.am Setup Explained.
(line 6) (line 6)
* Man page renaming, avoiding: Man Pages. (line 54) * Man page renaming, avoiding: Man Pages. (line 54)
* MANS primary, defined: Man Pages. (line 6) * MANS primary, defined: Man Pages. (line 6)
* many outputs, rules with: Multiple Outputs. (line 6) * many outputs, rules with: Multiple Outputs. (line 6)
* mdate-sh: Texinfo. (line 35) * mdate-sh: Auxiliary Programs. (line 50)
* mdate-sh <1>: Texinfo. (line 35)
* MinGW cross-compilation example: Cross-Compilation. (line 25) * MinGW cross-compilation example: Cross-Compilation. (line 25)
* missing program: Auxiliary Programs. (line 54)
* missing, purpose: maintainer-mode. (line 9) * missing, purpose: maintainer-mode. (line 9)
* Mixed language example: Mixing Fortran 77 With C and C++. * Mixed language example: Mixing Fortran 77 With C and C++.
(line 34) (line 34)
* Mixing Fortran 77 with C and C++: Mixing Fortran 77 With C and C++. * Mixing Fortran 77 with C and C++: Mixing Fortran 77 With C and C++.
(line 6) (line 6)
* Mixing Fortran 77 with C and/or C++: Mixing Fortran 77 With C and C++. * Mixing Fortran 77 with C and/or C++: Mixing Fortran 77 With C and C++.
(line 6) (line 6)
* mkdir -p, macro check: Obsolete Macros. (line 14) * mkdir -p, macro check: Obsolete Macros. (line 14)
* mkinstalldirs: Auxiliary Programs. (line 60)
* modules, libtool: Libtool Modules. (line 6) * modules, libtool: Libtool Modules. (line 6)
* mostlyclean: Extending. (line 41) * mostlyclean: Extending. (line 41)
* mostlyclean-local: Clean. (line 15) * mostlyclean-local: Clean. (line 15)
* mostlyclean-local <1>: Extending. (line 41) * mostlyclean-local <1>: Extending. (line 41)
* multiple configurations, example: VPATH Builds. (line 48) * multiple configurations, example: VPATH Builds. (line 48)
* Multiple configure.ac files: automake Invocation. (line 6) * Multiple configure.ac files: automake Invocation. (line 6)
* Multiple lex lexers: Yacc and Lex. (line 68) * Multiple lex lexers: Yacc and Lex. (line 68)
* multiple outputs, rules with: Multiple Outputs. (line 6) * multiple outputs, rules with: Multiple Outputs. (line 6)
* Multiple yacc parsers: Yacc and Lex. (line 68) * Multiple yacc parsers: Yacc and Lex. (line 68)
* Nested packages: Nested Packages. (line 6) * Nested packages: Nested Packages. (line 6)
* Nesting packages: Subpackages. (line 6) * Nesting packages: Subpackages. (line 6)
* no-define: Public Macros. (line 54) * no-define: Public Macros. (line 54)
* no-define <1>: List of Automake options. * no-define <1>: List of Automake options.
(line 61) (line 62)
* no-dependencies: Dependencies. (line 34) * no-dependencies: Dependencies. (line 34)
* no-dependencies <1>: List of Automake options. * no-dependencies <1>: List of Automake options.
(line 69) (line 70)
* no-dist: List of Automake options. * no-dist: List of Automake options.
(line 76) (line 77)
* no-dist-gzip: List of Automake options. * no-dist-gzip: List of Automake options.
(line 80) (line 81)
* no-dist-gzip <1>: List of Automake options. * no-dist-gzip <1>: List of Automake options.
(line 80) (line 81)
* no-exeext: List of Automake options. * no-exeext: List of Automake options.
(line 83) (line 84)
* no-installinfo: Texinfo. (line 85) * no-installinfo: Texinfo. (line 85)
* no-installinfo <1>: List of Automake options. * no-installinfo <1>: List of Automake options.
(line 93) (line 94)
* no-installinfo option: Texinfo. (line 85) * no-installinfo option: Texinfo. (line 85)
* no-installman: Man Pages. (line 32) * no-installman: Man Pages. (line 32)
* no-installman <1>: List of Automake options. * no-installman <1>: List of Automake options.
(line 99) (line 100)
* no-installman option: Man Pages. (line 32) * no-installman option: Man Pages. (line 32)
* no-op Automake targets: Third-Party Makefiles.
(line 88)
* no-texinfo.tex: List of Automake options. * no-texinfo.tex: List of Automake options.
(line 109) (line 110)
* nobase_ and dist_ or nodist_: Alternative. (line 29) * nobase_ and dist_ or nodist_: Alternative. (line 28)
* nobase_ prefix: Alternative. (line 23) * nobase_ prefix: Alternative. (line 22)
* nodist_ and nobase_: Alternative. (line 29) * nodist_ and nobase_: Alternative. (line 28)
* nodist_ and notrans_: Man Pages. (line 63) * nodist_ and notrans_: Man Pages. (line 63)
* noinst_ primary prefix, definition: Uniform. (line 90) * noinst_ primary prefix, definition: Uniform. (line 90)
* Non-GNU packages: Strictness. (line 6) * Non-GNU packages: Strictness. (line 6)
* Non-standard targets: General Operation. (line 12) * Non-standard targets: General Operation. (line 12)
* nostdinc: List of Automake options. * nostdinc: List of Automake options.
(line 105) (line 106)
* notrans_ and dist_ or nodist_: Man Pages. (line 63) * notrans_ and dist_ or nodist_: Man Pages. (line 63)
* notrans_ prefix: Man Pages. (line 54) * notrans_ prefix: Man Pages. (line 54)
* OBJCFLAGS and AM_OBJCFLAGS: Flag Variables Ordering. * OBJCFLAGS and AM_OBJCFLAGS: Flag Variables Ordering.
(line 20) (line 20)
* OBJCXXFLAGS and AM_OBJCXXFLAGS: Flag Variables Ordering. * OBJCXXFLAGS and AM_OBJCXXFLAGS: Flag Variables Ordering.
(line 20) (line 20)
* Objective C support: Objective C Support. (line 6) * Objective C support: Objective C Support. (line 6)
* Objective C++ support: Objective C++ Support. * Objective C++ support: Objective C++ Support.
(line 6) (line 6)
* Objects in subdirectory: Program and Library Variables. * Objects in subdirectory: Program and Library Variables.
(line 51) (line 51)
* obsolete macros: Obsolete Macros. (line 6) * obsolete macros: Obsolete Macros. (line 6)
* optimized build, example: VPATH Builds. (line 48) * optimized build, example: VPATH Builds. (line 48)
* Option, --warnings=CATEGORY: List of Automake options. * Option, --warnings=CATEGORY: List of Automake options.
(line 216) (line 217)
* Option, -WCATEGORY: List of Automake options. * Option, -WCATEGORY: List of Automake options.
(line 216) (line 217)
* Option, check-news: List of Automake options. * Option, check-news: List of Automake options.
(line 14) (line 15)
* Option, dejagnu: List of Automake options. * Option, dejagnu: List of Automake options.
(line 18) (line 19)
* Option, dist-bzip2: List of Automake options. * Option, dist-bzip2: List of Automake options.
(line 22) (line 23)
* Option, dist-lzip: List of Automake options. * Option, dist-lzip: List of Automake options.
(line 25) (line 26)
* Option, dist-shar: List of Automake options. * Option, dist-shar: List of Automake options.
(line 37) (line 38)
* Option, dist-tarZ: List of Automake options. * Option, dist-tarZ: List of Automake options.
(line 42) (line 43)
* Option, dist-xz: List of Automake options. * Option, dist-xz: List of Automake options.
(line 28) (line 29)
* Option, dist-zip: List of Automake options. * Option, dist-zip: List of Automake options.
(line 31) (line 32)
* Option, dist-zstd: List of Automake options. * Option, dist-zstd: List of Automake options.
(line 34) (line 35)
* Option, filename-length-max=99: List of Automake options. * Option, filename-length-max=99: List of Automake options.
(line 47) (line 48)
* Option, foreign: List of Automake options. * Option, foreign: List of Automake options.
(line 9) (line 9)
* Option, gnits: List of Automake options. * Option, gnits: List of Automake options.
(line 9) (line 9)
* Option, gnu: List of Automake options. * Option, gnu: List of Automake options.
(line 9) (line 9)
* Option, info-in-builddir: List of Automake options. * Option, info-in-builddir: List of Automake options.
(line 56) (line 57)
* Option, no-define: List of Automake options. * Option, no-define: List of Automake options.
(line 61) (line 62)
* Option, no-dependencies: List of Automake options. * Option, no-dependencies: List of Automake options.
(line 69) (line 70)
* Option, no-dist: List of Automake options. * Option, no-dist: List of Automake options.
(line 76) (line 77)
* Option, no-dist-gzip: List of Automake options. * Option, no-dist-gzip: List of Automake options.
(line 80) (line 81)
* Option, no-exeext: List of Automake options. * Option, no-exeext: List of Automake options.
(line 83) (line 84)
* Option, no-installinfo: Texinfo. (line 85) * Option, no-installinfo: Texinfo. (line 85)
* Option, no-installinfo <1>: List of Automake options. * Option, no-installinfo <1>: List of Automake options.
(line 93) (line 94)
* Option, no-installman: Man Pages. (line 32) * Option, no-installman: Man Pages. (line 32)
* Option, no-installman <1>: List of Automake options. * Option, no-installman <1>: List of Automake options.
(line 99) (line 100)
* Option, no-texinfo.tex: List of Automake options. * Option, no-texinfo.tex: List of Automake options.
(line 109) (line 110)
* Option, nostdinc: List of Automake options. * Option, nostdinc: List of Automake options.
(line 105) (line 106)
* Option, parallel-tests: List of Automake options. * Option, parallel-tests: List of Automake options.
(line 117) (line 118)
* Option, readme-alpha: List of Automake options. * Option, readme-alpha: List of Automake options.
(line 123) (line 124)
* Option, serial-tests: List of Automake options. * Option, serial-tests: List of Automake options.
(line 113) (line 114)
* Option, tar-pax: List of Automake options. * Option, tar-pax: List of Automake options.
(line 162) (line 163)
* Option, tar-ustar: List of Automake options. * Option, tar-ustar: List of Automake options.
(line 162) (line 163)
* Option, tar-v7: List of Automake options. * Option, tar-v7: List of Automake options.
(line 162) (line 163)
* Option, VERSION: List of Automake options. * Option, VERSION: List of Automake options.
(line 211) (line 212)
* Option, warnings: List of Automake options. * Option, warnings: List of Automake options.
(line 216) (line 217)
* Options, aclocal: aclocal Options. (line 6) * Options, aclocal: aclocal Options. (line 6)
* Options, automake: automake Invocation. (line 37) * Options, automake: automake Invocation. (line 37)
* Options, std-options: List of Automake options. * Options, std-options: List of Automake options.
(line 132) (line 133)
* Options, subdir-objects: List of Automake options. * Options, subdir-objects: List of Automake options.
(line 153) (line 154)
* Ordering flag variables: Flag Variables Ordering. * Ordering flag variables: Flag Variables Ordering.
(line 6) (line 6)
* Overriding make rules: General Operation. (line 46) * Overriding make rules: General Operation. (line 46)
* Overriding make targets: General Operation. (line 46) * Overriding make targets: General Operation. (line 46)
* Overriding make variables: General Operation. (line 51) * Overriding make variables: General Operation. (line 51)
* overriding rules: Extending. (line 26) * overriding rules: Extending. (line 26)
* overriding semantics: Extending. (line 26) * overriding semantics: Extending. (line 26)
* PACKAGE, directory: Uniform. (line 19) * PACKAGE, directory: Uniform. (line 19)
* PACKAGE, prevent definition: Public Macros. (line 54) * PACKAGE, prevent definition: Public Macros. (line 54)
* Packages, nested: Nested Packages. (line 6) * Packages, nested: Nested Packages. (line 6)
* Packages, preparation: Preparing Distributions. * Packages, preparation: Preparing Distributions.
(line 6) (line 6)
* Parallel build trees: VPATH Builds. (line 6) * Parallel build trees: VPATH Builds. (line 6)
* parallel-tests: List of Automake options. * parallel-tests: List of Automake options.
(line 117) (line 118)
* Path stripping, avoiding: Alternative. (line 23) * Path stripping, avoiding: Alternative. (line 22)
* pax format: List of Automake options. * pax format: List of Automake options.
(line 162) (line 163)
* pdf: Texinfo. (line 25) * pdf: Texinfo. (line 25)
* pdf <1>: Extending. (line 41) * pdf <1>: Extending. (line 41)
* PDF output using Texinfo: Texinfo. (line 6) * PDF output using Texinfo: Texinfo. (line 6)
* pdf-local: Extending. (line 41) * pdf-local: Extending. (line 41)
* Per-object flags, emulated: Per-Object Flags. (line 6) * Per-object flags, emulated: Per-Object Flags. (line 6)
* per-target compilation flags, defined: Program and Library Variables. * per-target compilation flags, defined: Program and Library Variables.
(line 182) (line 182)
* pkgdatadir, defined: Uniform. (line 19) * pkgdatadir, defined: Uniform. (line 19)
* pkgincludedir, defined: Uniform. (line 19) * pkgincludedir, defined: Uniform. (line 19)
* pkglibdir, defined: Uniform. (line 19) * pkglibdir, defined: Uniform. (line 19)
skipping to change at line 12690 skipping to change at line 12789
* Primary variable, SOURCES: Program Sources. (line 32) * Primary variable, SOURCES: Program Sources. (line 32)
* Primary variable, TEXINFOS: Texinfo. (line 6) * Primary variable, TEXINFOS: Texinfo. (line 6)
* PROGRAMS primary variable: Uniform. (line 11) * PROGRAMS primary variable: Uniform. (line 11)
* Programs, auxiliary: Auxiliary Programs. (line 6) * Programs, auxiliary: Auxiliary Programs. (line 6)
* PROGRAMS, bindir: Program Sources. (line 6) * PROGRAMS, bindir: Program Sources. (line 6)
* Programs, conditional: Conditional Programs. * Programs, conditional: Conditional Programs.
(line 6) (line 6)
* Programs, renaming during installation: Renaming. (line 6) * Programs, renaming during installation: Renaming. (line 6)
* prog_LDADD, defined: Linking. (line 12) * prog_LDADD, defined: Linking. (line 12)
* Proxy Makefile for third-party packages: Third-Party Makefiles. * Proxy Makefile for third-party packages: Third-Party Makefiles.
(line 128) (line 131)
* ps: Texinfo. (line 25) * ps: Texinfo. (line 25)
* ps <1>: Extending. (line 41) * ps <1>: Extending. (line 41)
* PS output using Texinfo: Texinfo. (line 6) * PS output using Texinfo: Texinfo. (line 6)
* ps-local: Extending. (line 41) * ps-local: Extending. (line 41)
* py-compile: Auxiliary Programs. (line 70)
* PYTHON primary, defined: Python. (line 6) * PYTHON primary, defined: Python. (line 6)
* Ratfor programs: Preprocessing Fortran 77. * Ratfor programs: Preprocessing Fortran 77.
(line 6) (line 6)
* read-only source tree: VPATH Builds. (line 91) * read-only source tree: VPATH Builds. (line 91)
* readme-alpha: List of Automake options. * readme-alpha: List of Automake options.
(line 123) (line 124)
* README-alpha: Gnits. (line 42) * README-alpha: Strictness. (line 78)
* rebuild rules: Rebuilding. (line 6) * rebuild rules: Rebuilding. (line 6)
* rebuild rules <1>: CVS. (line 9) * rebuild rules <1>: CVS. (line 9)
* recheck: Parallel Test Harness. * recheck: Parallel Test Harness.
(line 130) (line 130)
* Recognized macros by Automake: Optional. (line 6) * Recognized macros by Automake: Optional. (line 6)
* Recursive operation of Automake: General Operation. (line 58) * Recursive operation of Automake: General Operation. (line 58)
* recursive targets and third-party Makefiles: Third-Party Makefiles. * recursive targets and third-party Makefiles: Third-Party Makefiles.
(line 15) (line 15)
* Register test case result: Log files generation and test results r ecording. * Register test case result: Log files generation and test results r ecording.
(line 24) (line 24)
skipping to change at line 12742 skipping to change at line 12842
(line 6) (line 6)
* rules, overriding: Extending. (line 26) * rules, overriding: Extending. (line 26)
* Scanning configure.ac: configure. (line 6) * Scanning configure.ac: configure. (line 6)
* SCRIPTS primary, defined: Scripts. (line 6) * SCRIPTS primary, defined: Scripts. (line 6)
* SCRIPTS, installation directories: Scripts. (line 18) * SCRIPTS, installation directories: Scripts. (line 18)
* Selecting the linker automatically: How the Linker is Chosen. * Selecting the linker automatically: How the Linker is Chosen.
(line 6) (line 6)
* serial number and --install: aclocal Options. (line 42) * serial number and --install: aclocal Options. (line 42)
* serial numbers in macros: Serials. (line 6) * serial numbers in macros: Serials. (line 6)
* serial-tests: List of Automake options. * serial-tests: List of Automake options.
(line 113) (line 114)
* serial-tests, Using: Serial Test Harness. (line 6) * serial-tests, Using: Serial Test Harness. (line 6)
* Shared libraries, support for: A Shared Library. (line 6) * Shared libraries, support for: A Shared Library. (line 6)
* Silencing make: Silencing Make. (line 6) * Silencing make: Silencing Make. (line 6)
* Silent make: Silencing Make. (line 6) * Silent make: Silencing Make. (line 6)
* Silent make rules: Silencing Make. (line 6) * Silent make rules: Silencing Make. (line 6)
* Silent rules: Silencing Make. (line 6) * Silent rules: Silencing Make. (line 6)
* silent rules and libtool: Automake Silent Rules. * silent rules and libtool: Automake Silent Rules.
(line 59) (line 59)
* site.exp: DejaGnu Tests. (line 26) * site.exp: DejaGnu Tests. (line 26)
* source tree and build tree: VPATH Builds. (line 6) * source tree and build tree: VPATH Builds. (line 6)
* source tree, read-only: VPATH Builds. (line 91) * source tree, read-only: VPATH Builds. (line 91)
* SOURCES primary, defined: Program Sources. (line 32) * SOURCES primary, defined: Program Sources. (line 32)
* Special Automake comment: General Operation. (line 68) * Special Automake comment: General Operation. (line 68)
* Staged installation: DESTDIR. (line 14) * Staged installation: DESTDIR. (line 14)
* std-options: List of Automake options. * std-options: List of Automake options.
(line 132) (line 133)
* Strictness, command line: automake Invocation. (line 37) * Strictness, command line: automake Invocation. (line 37)
* Strictness, defined: Strictness. (line 10) * Strictness, defined: Strictness. (line 10)
* Strictness, foreign: Strictness. (line 10) * Strictness, foreign: Strictness. (line 51)
* Strictness, gnits: Strictness. (line 10) * Strictness, gnits: Strictness. (line 58)
* Strictness, gnu: Strictness. (line 10) * Strictness, gnu: Strictness. (line 18)
* su, before make install: Basic Installation. (line 49) * su, before make install: Basic Installation. (line 49)
* subdir-objects: List of Automake options. * subdir-objects: List of Automake options.
(line 153) (line 154)
* Subdirectories, building conditionally: Conditional Subdirectories. * Subdirectories, building conditionally: Conditional Subdirectories.
(line 6) (line 6)
* Subdirectories, configured conditionally: Unconfigured Subdirectories. * Subdirectories, configured conditionally: Unconfigured Subdirectories.
(line 6) (line 6)
* Subdirectories, not distributed: Unconfigured Subdirectories. * Subdirectories, not distributed: Unconfigured Subdirectories.
(line 55) (line 55)
* Subdirectory, objects in: Program and Library Variables. * Subdirectory, objects in: Program and Library Variables.
(line 51) (line 51)
* SUBDIRS and AC_SUBST: Subdirectories with AC_SUBST. * SUBDIRS and AC_SUBST: Subdirectories with AC_SUBST.
(line 6) (line 6)
skipping to change at line 12802 skipping to change at line 12902
(line 6) (line 6)
* Support for Objective C: Objective C Support. (line 6) * Support for Objective C: Objective C Support. (line 6)
* Support for Objective C++: Objective C++ Support. * Support for Objective C++: Objective C++ Support.
(line 6) (line 6)
* Support for Unified Parallel C: Unified Parallel C Support. * Support for Unified Parallel C: Unified Parallel C Support.
(line 6) (line 6)
* Support for Vala: Vala Support. (line 6) * Support for Vala: Vala Support. (line 6)
* tags: Tags. (line 9) * tags: Tags. (line 9)
* TAGS support: Tags. (line 6) * TAGS support: Tags. (line 6)
* tar formats: List of Automake options. * tar formats: List of Automake options.
(line 162) (line 163)
* tar-pax: List of Automake options. * tar-pax: List of Automake options.
(line 162) (line 163)
* tar-ustar: List of Automake options. * tar-ustar: List of Automake options.
(line 162) (line 163)
* tar-v7: List of Automake options. * tar-v7: List of Automake options.
(line 162) (line 163)
* Target, install-info: Texinfo. (line 85) * Target, install-info: Texinfo. (line 85)
* Target, install-man: Man Pages. (line 32) * Target, install-man: Man Pages. (line 32)
* targets, making into no-op: Third-Party Makefiles.
(line 88)
* test case: Generalities about Testing. * test case: Generalities about Testing.
(line 11) (line 11)
* Test case result, registering: Log files generation and test results r ecording. * Test case result, registering: Log files generation and test results r ecording.
(line 24) (line 24)
* test failure: Generalities about Testing. * test failure: Generalities about Testing.
(line 25) (line 25)
* test harness: Generalities about Testing. * test harness: Generalities about Testing.
(line 18) (line 18)
* test metadata: Parallel Test Harness. * test metadata: Parallel Test Harness.
(line 12) (line 12)
* test pass: Generalities about Testing. * test pass: Generalities about Testing.
(line 25) (line 25)
* Test result, registering: Log files generation and test results r ecording. * Test result, registering: Log files generation and test results r ecording.
(line 24) (line 24)
* test skip: Generalities about Testing. * test skip: Generalities about Testing.
(line 29) (line 29)
* Test suites: Tests. (line 6) * Test suites: Tests. (line 6)
* test-driver: Auxiliary Programs. (line 73)
* Tests, expected failure: Scripts-based Testsuites. * Tests, expected failure: Scripts-based Testsuites.
(line 32) (line 32)
* testsuite harness: Generalities about Testing. * testsuite harness: Generalities about Testing.
(line 18) (line 18)
* Testsuite progress on console: Scripts-based Testsuites. * Testsuite progress on console: Scripts-based Testsuites.
(line 45) (line 45)
* Texinfo flag, EDITION: Texinfo. (line 35) * Texinfo flag, EDITION: Texinfo. (line 35)
* Texinfo flag, UPDATED: Texinfo. (line 35) * Texinfo flag, UPDATED: Texinfo. (line 35)
* Texinfo flag, UPDATED-MONTH: Texinfo. (line 35) * Texinfo flag, UPDATED-MONTH: Texinfo. (line 35)
* Texinfo flag, VERSION: Texinfo. (line 35) * Texinfo flag, VERSION: Texinfo. (line 35)
* texinfo.tex: Texinfo. (line 70) * texinfo.tex: Auxiliary Programs. (line 77)
* texinfo.tex <1>: Texinfo. (line 70)
* TEXINFOS primary, defined: Texinfo. (line 6) * TEXINFOS primary, defined: Texinfo. (line 6)
* third-party files and CVS: CVS. (line 168) * third-party files and CVS: CVS. (line 168)
* Third-party packages, interfacing with: Third-Party Makefiles. * Third-party packages, interfacing with: Third-Party Makefiles.
(line 6) (line 6)
* timestamps and CVS: CVS. (line 29) * timestamps and CVS: CVS. (line 29)
* Transforming program names: Renaming. (line 6) * Transforming program names: Renaming. (line 6)
* trees, source vs. build: VPATH Builds. (line 6) * trees, source vs. build: VPATH Builds. (line 6)
* true Example: true. (line 6) * true Example: true. (line 6)
* underquoted AC_DEFUN: Extending aclocal. (line 36) * underquoted AC_DEFUN: Extending aclocal. (line 36)
* unexpected pass: Generalities about Testing. * unexpected pass: Generalities about Testing.
skipping to change at line 12872 skipping to change at line 12976
(line 154) (line 154)
* Unpacking: Basic Installation. (line 27) * Unpacking: Basic Installation. (line 27)
* UPCFLAGS and AM_UPCFLAGS: Flag Variables Ordering. * UPCFLAGS and AM_UPCFLAGS: Flag Variables Ordering.
(line 20) (line 20)
* UPDATED Texinfo flag: Texinfo. (line 35) * UPDATED Texinfo flag: Texinfo. (line 35)
* UPDATED-MONTH Texinfo flag: Texinfo. (line 35) * UPDATED-MONTH Texinfo flag: Texinfo. (line 35)
* Use Cases for the GNU Build System: Use Cases. (line 6) * Use Cases for the GNU Build System: Use Cases. (line 6)
* user variables: User Variables. (line 6) * user variables: User Variables. (line 6)
* Using aclocal: configure. (line 6) * Using aclocal: configure. (line 6)
* ustar format: List of Automake options. * ustar format: List of Automake options.
(line 162) (line 163)
* v7 tar format: List of Automake options. * v7 tar format: List of Automake options.
(line 162) (line 163)
* Vala Support: Vala Support. (line 6) * Vala Support: Vala Support. (line 6)
* variables, conflicting: Extending. (line 14) * variables, conflicting: Extending. (line 14)
* Variables, overriding: General Operation. (line 51) * Variables, overriding: General Operation. (line 51)
* variables, reserved for the user: User Variables. (line 6) * variables, reserved for the user: User Variables. (line 6)
* VERSION Texinfo flag: Texinfo. (line 35) * VERSION Texinfo flag: Texinfo. (line 35)
* VERSION, prevent definition: Public Macros. (line 54) * VERSION, prevent definition: Public Macros. (line 54)
* version.m4, example: Rebuilding. (line 12) * version.m4, example: Rebuilding. (line 12)
* version.sh, example: Rebuilding. (line 12) * version.sh, example: Rebuilding. (line 12)
* versioned binaries, installing: Extending. (line 86) * versioned binaries, installing: Extending. (line 86)
* VPATH builds: VPATH Builds. (line 6) * VPATH builds: VPATH Builds. (line 6)
* wildcards: Wildcards. (line 6) * wildcards: Wildcards. (line 6)
* Windows: EXEEXT. (line 6) * Windows: EXEEXT. (line 6)
* xfail: Generalities about Testing. * xfail: Generalities about Testing.
(line 39) (line 39)
* xpass: Generalities about Testing. * xpass: Generalities about Testing.
(line 39) (line 39)
* yacc, multiple parsers: Yacc and Lex. (line 68) * yacc, multiple parsers: Yacc and Lex. (line 68)
* YFLAGS and AM_YFLAGS: Flag Variables Ordering. * YFLAGS and AM_YFLAGS: Flag Variables Ordering.
(line 20) (line 20)
* ylwrap: Yacc and Lex. (line 68) * ylwrap: Auxiliary Programs. (line 85)
* ylwrap <1>: Yacc and Lex. (line 68)
* zardoz example: Complete. (line 35) * zardoz example: Complete. (line 35)
 End of changes. 229 change blocks. 
362 lines changed or deleted 466 lines changed or added

Home  |  About  |  Features  |  All  |  Newest  |  Dox  |  Diffs  |  RSS Feeds  |  Screenshots  |  Comments  |  Imprint  |  Privacy  |  HTTP(S)