@titlepage
@title GNU Automake
@subtitle For version @value{VERSION}, @value{UPDATED}
-@c copyright page
+@author David MacKenzie and Tom Tromey
+
@page
@vskip 0pt plus 1filll
Copyright @copyright{} 1995, 96 Free Software Foundation, Inc.
@c Define an index of targets.
@defcodeindex tr
+@c Put everything in one index (arbitrarily chosen to be the concept index).
+@syncodeindex cv cp
+@syncodeindex op cp
+@syncodeindex tr cp
+
@ifinfo
@node Top, Introduction, (dir), (dir)
@comment node-name, next, previous, up
* Options:: Changing Automake's behavior
* Miscellaneous:: Miscellaneous rules
* Gnits:: The effect of --gnu and --gnits
+* Cygnus:: The effect of --cygnus
* Extending:: Extending Automake
* Distributing:: Distributing the Makefile.in
* Examples:: Some example packages
* Future:: Some ideas for the future
-* Variables:: Index of variables
-* Configure variables:: Index of configure variables and macros
-* Targets:: Index of targets
+* Index:: General index
@end menu
@end ifinfo
@file{Makefile.in}s are compliant with the GNU Makefile standards.
The GNU Makefile Standards Document
-(@pxref{Makefile Conventions, , , standards.info, The GNU Coding Standards})
+(@pxref{Makefile Conventions, , , standards, The GNU Coding Standards})
is long, complicated, and subject to change. The goal of Automake is to
remove the burden of Makefile maintenance from the back of the
individual GNU maintainer (and put it on the back of the Automake
Automake does constrain a project in certain ways; for instance it
assumes that the project uses Autoconf
-(@pxref{Top, , The Autoconf Manual, autoconf.info, The Autoconf Manual}),
+(@pxref{Top, , The Autoconf Manual, autoconf, The Autoconf Manual}),
and enforces certain restrictions on the @file{configure.in} contents.
@code{Automake} requires @code{perl} in order to generate the
including dependencies into a @file{Makefile.in} generated by @code{make
dist}; it should not be used otherwise.
+@item --cygnus
+Causes the generated @file{Makefile.in}s to follow Cygnus rules, instead
+of GNU or Gnits rules. @xref{Cygnus} for more information.
+
@item --foreign
-Set the global strictness to @samp{foreign}. @xref{Generalities} for
-more information.
+Set the global strictness to @samp{foreign}. @xref{Strictness} for more
+information.
@item --gnits
-Set the global strictness to @samp{gnits}. @xref{Generalities} for
-more information.
+Set the global strictness to @samp{gnits}. @xref{Gnits} for more
+information.
@item --gnu
-Set the global strictness to @samp{gnu}. @xref{Generalities} for
-more information.
+Set the global strictness to @samp{gnu}. @xref{Gnits} for more
+information.
@item --help
Print a summary of the command line options and exit.
distributions.
@item --srcdir-name=@var{dir}
-Tell Automake the name of the source directory used in the current
-build. This option is used when including dependencies into a
+Tell Automake the name of the source directory associated with the
+current build. This option is used when including dependencies into a
@file{Makefile.in} generated by @code{make dist}; it should not be used
otherwise.
variables, but have a prefix indicating which standard directory should
be used as the installation directory. The standard directory names are
given in the GNU standards
-(@pxref{Directory Variables, , , standards.info, The GNU Coding
+(@pxref{Directory Variables, , , standards, The GNU Coding
Standards}).
@code{automake} extends this list with @code{pkglibdir},
@code{pkgincludedir}, and @code{pkgdatadir}; these are the same as the
@item AM_PROG_LIBTOOL
Automake will turn on processing for @code{libtool} (@pxref{Top, , The
-Libtool Manual, libtool.info, The Libtool Manual}).
+Libtool Manual, libtool, The Libtool Manual}).
@cvindex AM_PROG_LIBTOOL
@item AC_PROG_YACC
This is required when using automatic de-ANSI-fication, see @ref{ANSI}.
@cvindex AM_C_PROTOTYPES
-@item ud_GNU_GETTEXT
+@item AM_GNU_GETTEXT
This macro is required for packages which use GNU gettext
(@pxref{gettext}). It is distributed with gettext. If Automake sees
this macro it ensures that the package meets some of gettext's
requirements.
-@cvindex ud_GNU_GETTEXT
+@cvindex AM_GNU_GETTEXT
@item AM_MAINTAINER_MODE
This macro adds a @samp{--enable-maintainer-mode} option to
@unnumberedsubsec Building Libraries with @code{libtool}
The innovation used by GNU Libtool (@pxref{Top, , The Libtool Manual,
-libtool.info, The Libtool Manual}) is that libraries are programs.
+libtool, The Libtool Manual}) is that libraries are programs.
So, if you have GNU Libtool and want to use it to build your libraries,
you should use the @samp{lib_PROGRAMS} variable (@pxref{Using Automake,
-, Using Automake with Libtool, libtool.info, The Libtool Manual}).
+, Using Automake with Libtool, libtool, The Libtool Manual}).
@node LIBOBJS
@section Special handling for LIBOBJS and ALLOCA
When you decide to make a distribution, the @code{dist} target will
@trindex dist
-re-run @code{automake} with the @samp{--include-deps} option. This
-@c FIXME XREF?
-causes the previously generated dependencies to be inserted into the
-generated @file{Makefile.in}, and thus into the distribution.
-@samp{--include-deps} also turns off inclusion of the dependency
-generation code.
-
-This mode can be suppressed by putting @code{no-dependencies} in the
-variable @code{AUTOMAKE_OPTIONS}.
+re-run @code{automake} with @samp{--include-deps} and other options.
+This will cause the previously generated dependencies to be inserted
+into the generated @file{Makefile.in}, and thus into the distribution.
+This step also turns off inclusion of the dependency generation code.
+
+When added to the @file{Makefile.in}, the dependencies have all
+system-specific dependencies automatically removed. This can be done by
+listing the files in @samp{OMIT_DEPENDENCIES}.
+@vindex OMIT_DEPENDENCIES
+For instance all references to system header files are removed by
+@code{automake}. Sometimes it is useful to specify that a certain
+header file should be removed. For instance if your @file{configure.in}
+uses @samp{AM_WITH_REGEX}, then any dependency on @file{rx.h} or
+@file{regex.h} should be removed, because the correct one cannot be
+known until the user configures the package.
+
+As it turns out, @code{automake} is actually smart enough to handle this
+particular case. It will also automatically omit @file{libintl.h} if
+@samp{AM_GNU_GETTEXT} is used.
+
+Automatic dependency tracking can be suppressed by putting
+@code{no-dependencies} in the variable @code{AUTOMAKE_OPTIONS}.
@vindex AUTOMAKE_OPTIONS
@opindex no-dependencies
If you unpack a distribution made by @code{make dist}, and you want to
-turn on the dependency-tracking code again, simply run @code{automake}
-with no arguments.
+turn on the dependency-tracking code again, simply re-run
+@code{automake}.
@node Other objects
@node gettext
@section Gettext
-If @code{ud_GNU_GETTEXT} is seen in @file{configure.in}, then Automake
+If @code{AM_GNU_GETTEXT} is seen in @file{configure.in}, then Automake
turns on support for GNU gettext, a message catalog system for
internationalization
-(@pxref{GNU Gettext, , , gettext.info, GNU gettext utilities}).
+(@pxref{GNU Gettext, , , gettext, GNU gettext utilities}).
The @code{gettext} support in Automake requires the addition of two
subdirectories to the package, @file{intl} and @file{po}. Automake
@section Man pages
A package can also include man pages. (Though see the GNU standards on
-this matter, @ref{Man Pages, , , standards.info, The GNU Coding
+this matter, @ref{Man Pages, , , standards, The GNU Coding
Standards}.) Man pages are declared using the @samp{MANS} primary.
Generally the @code{man_MANS} macro is used. Man pages are
automatically installed in the correct subdirectory of @code{mandir},
@vindex MANS
@vindex man_MANS
-@c Use @samp{make install} per documentation: (texi.info)code.
+@c Use @samp{make install} per documentation: (texi)code.
By default, man pages are installed by @samp{make install}. However,
since the GNU project does not require man pages, many maintainers do
not expend effort to keep the man pages up to date. In these cases, the
@end itemize
+@node Cygnus
+@chapter The effect of --cygnus
+
+Cygnus Support has slightly different rules for how a @file{Makefile.in}
+is to be constructed. Passing @samp{--cygnus} to @code{automake} will
+cause any generated @file{Makefile.in} to comply with Cygnus rules.
+
+Here are the precise effects of @samp{--cygnus}:
+
+@itemize @bullet
+@item
+Info files are always created in the build directory, and not in the
+source directory.
+
+@item
+@file{texinfo.tex} is not required if a Texinfo source file is
+specified. The assumption is that the file will be supplied, but in a
+place that @code{automake} cannot find. This assumption is an artifact
+of how Cygnus packages are typically bundled.
+
+@item
+@samp{make dist} will look for files in the build directory as well as
+the source directory. This is required to support putting info files
+into the build directory.
+
+@item
+Certain tools will be searched for in the build tree as well as in the
+user's @samp{PATH}. These tools are @code{runtest}, @code{expect},
+@code{makeinfo} and @code{texi2dvi}.
+
+@item
+@samp{--foreign} is implied.
+
+@item
+The options @samp{no-installinfo} and @samp{no-dependencies} are
+implied.
+
+@item
+The macro @samp{AM_MAINTAINER_MODE} is required.
+@end itemize
+
+
@node Extending
@chapter When Automake Isn't Enough
RPM packages).
@end itemize
-@node Variables
-@unnumbered Index of Variables
-
-@printindex vr
-
-
-@node Configure variables
-@unnumbered Index of Configure Variables and Macros
-
-@printindex cv
-
-
-@node Targets
-@unnumbered Index of Targets
-
-@printindex tr
+@node Index
+@unnumbered Index
+@printindex cp
+@contents
@bye