should put inverse of @MAINT@ before `.PHONY: configure'
-* some options must be turned off when --gnu or higher
- eg no-installinfo
-
* must update GNU Hello
** when can aclocal.m4 be auto-generated?
Document:
-
-Defined variables, their meanings, and their effects:
-
-DEFS cpp definitions
-INCLUDES -I options to cpp
-CPPFLAGS more cpp flags
-CFLAGS flags to cc
-COMPILE how to compile a C program
-LINK how to link a C program
-
-DIST_SUBDIRS directories which are copied verbatim into the
- distribution. Used eg for directories holding
- only example code (which don't have their own
- makefile). This variable might be a bad idea.
- [ should just require a new Makefile.am. They are supposed to be
- easy to write ]
-
Document customary ordering of Makefile.am. From François.
must document that @ALLOCA@ works in _LDADD
Should include extended version of diagram from Autoconf (suggested by
Greg Woods)
-Must document macros which can be used when writing one's own rules.
-Must document INCLUDES
-
Document gettext support
Make a definition of the term "source"
document how to use Automake with CVS. Idea from Mark Galassi. Also
include Greg Woods' more sophisticated "cvs-dist" target.
-document that there is no uninstall-{exec,data}
-
document rebuilding configure. CONFIGURE_DEPENDENCIES
-document TAGS_DEPENDENCIES
-
document new variables introduced when AC_CANONICAL_* used
-document _LISP handling
-
document canonicalization for texinfos
automake must be run in each directory with a configure.in
document actual uses of PACKAGE and VERSION
-> Oh, ok. This should be documented: make the last argument of your
-> AC_OUTPUT line look like this:
->
-> test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h
-
Must document aclocal program
djm says:
}
$output_vars .= "o = .\@U\@o\n";
- $output_vars .= "ANSI2KNR = " . $options{'ansi2knr'} . "\n";
+
+ # Make sure ansi2knr can be found: if no path specified,
+ # specify "./".
+ local ($apath) = $options{'ansi2knr'};
+ $apath = './' . $apath
+ unless $apath =~ /\//;
+ $output_vars .= "ANSI2KNR = " . $apath . "\n";
$output_rules .= &file_contents ('compile-kr');
$output_rules .= &file_contents ('clean-kr');
if ($regen_aclocal)
{
- $output_rules .= ("aclocal.m4: configure.in"
+ $output_rules .= ("aclocal.m4: \@MAINT\@configure.in"
. ($acinclude ? ' acinclude.m4' : '')
. "\n\t"
. 'cd $(srcdir) && aclocal'
&require_file ($GNU, 'INSTALL', 'NEWS', 'README', 'COPYING',
'AUTHORS', 'ChangeLog');
}
+
+ if ($strictness >= $GNU)
+ {
+ if (defined $options{'no-installman'})
+ {
+ &am_line_error ('AUTOMAKE_OPTIONS',
+ "option \`no-installman' disallowed by GNU standards");
+ }
+
+ if (defined $options{'no-installinfo'})
+ {
+ &am_line_error ('AUTOMAKE_OPTIONS',
+ "option \`no-installinfo' disallowed by GNU standards");
+ }
+ }
}
# Do any extra checking for GNITS standards.
$_ .= "\n"
unless substr ($_, -1, 1) eq "\n";
- $_ =~ s/\@MAINT\@//g
+ $_ =~ s/\@(UN)?MAINT\@//g
unless $seen_maint_mode;
if (/$IGNORE_PATTERN/o)
while (<FC_FILE>)
{
- $_ =~ s/\@MAINT\@//g
+ $_ =~ s/\@UNMAINT\@//g
unless $seen_maint_mode;
eval $command;
* Top level:: The top-level Makefile.am
* Programs:: Building programs and libraries
* Other objects:: Other derived objects
+* Emacs Lisp:: Emacs Lisp support
* Documentation:: Building documentation
* Install:: What gets installed
* Clean:: What gets cleaned
@file{stamp-h.in}. It can be empty. Also, the @code{AC_OUTPUT} command
in @file{configure.in} must create @file{stamp-h}, eg:
@example
-AC_OUTPUT(Makefile, [test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h])
+AC_OUTPUT(Makefile,
+[test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h])
@end example
@cvindex AC_CONFIG_HEADER
@menu
* A Program:: Building a program
* A Library:: Building a library
+* Program variables:: Variables used when building a program
+* Yacc and Lex:: Yacc and Lex support
+* C++:: C++ and other languages
* ANSI:: Automatic de-ANSI-fication
* Dependencies:: Automatic dependency tracking
@end menu
handled in the dependency-tracking scheme, see @xref{Dependencies}.
+@node Program variables
+@section Variables used when building a program
+
+@table @code
+@item CC
+@item CFLAGS
+@item CPPFLAGS
+@item CXX
+@item CXXFLAGS
+@item DEFS
+@item LDFLAGS
+@item LIBS
+
+@item INCLUDES
+@item COMPILE
+@item LINK
+@end table
+
+
+@node Yacc and Lex
+@section Yacc and Lex support
+
+Y
+
+@node C++
+@section C++ and other languages
+
+Automake includes full support for C++, and rudimentary support for
+other languages. Support for other languages will be improved based on
+demand.
+
+
+
+
@node ANSI
@section Automatic de-ANSI-fication
distribution.
+@node Emacs Lisp
+@chapter Emacs Lisp
+
+Automake provides some support for Emacs Lisp. The @samp{LISP} primary
+is used to hold a list of @samp{.el} files. Possible prefixes for this
+primary are @samp{lisp_} and @samp{noinst_}. Note that if
+@code{lisp_LISP} is defined, then @file{configure.in} must run
+@code{AM_PATH_LISPDIR} (fixme xref).
+@vindex LISP
+@vindex lisp_LISP
+@vindex noinst_LISP
+
+By default Automake will byte-compile all Emacs Lisp source files using
+the Emacs found by @code{AM_PATH_LISPDIR}. If you wish to avoid
+byte-compiling, simply define the variable @samp{ELCFILES} to be empty.
+@vindex ELCFILES
+
@node Documentation
@chapter Building documentation
@item @code{no-installman}
The generated @file{Makefile.in} will not cause man pages to be
installed by default. However, an @code{install-man} target will still
-be available for optional installation.
+be available for optional installation. This option is disallowed at
+@samp{GNU} strictness and above.
@trindex install-man
@item @code{no-installinfo}
The generated @file{Makefile.in} will not cause info pages to be built
or installed by default. However, @code{info} and @code{install-info}
-targets will still be available.
+targets will still be available. This option is disallowed at
+@samp{GNU} strictness and above.
@trindex info
@trindex install-info
@item @code{ansi2knr}
-Turn on automatic de-ANSI-fication.
+@item @code{path/ansi2knr}
+Turn on automatic de-ANSI-fication. If preceeded by a path, the
+generated @file{Makefile.in} will look in the specified directory to
+find the @file{ansi2knr} program. Generally the path should be a
+relative path to another directory in the same distribution (though
+Automake currently does not check this). It is up to you to make sure
+that the specified directory is built before the current directory; if
+@file{ansi2knr} does not exist then the build will fail.
+
+@item @code{dejagnu}
+Cause @code{dejagnu}-specific rules to be generated. @xref{Tests}.
@item @code{dist-shar}
Generate a @code{dist-shar} target as well as the ordinary @code{dist}
-target.
+target. This new target will create a shar archive of the
+distribution.
@trindex dist-shar
@item @code{dist-zip}
Generate a @code{dist-zip} target as well as the ordinary @code{dist}
-target.
+target. This new target will create a zip archive of the distribution.
@trindex dist-zip
+@item @code{dist-tarZ}
+Generate a @code{dist-tarZ} target as well as the ordinary @code{dist}
+target. This new target will create a compressed tar archive of the
+distribution; a traditional @code{tar} and @code{compress} will be
+assumed. Warning: if you are actually using @code{GNU tar}, then the
+generated archive might contain nonportable constructs.
+@trindex dist-tarZ
+
@item @code{no-dependencies}
This is similar to using @samp{--include-deps} on the command line, but
is useful for those situations where you don't have the necessary bits
Also, if the variable @code{ETAGS_ARGS} is defined, a @code{tags} target
will be generated. This variable is intended for use in directories
which contain taggable source that @code{etags} does not understand.
+@vindex ETAGS_ARGS
Here is how Automake generates tags for its source, and for nodes in its
Texinfo file:
--regex='/^@@node[ \t]+\([^,]+\)/\1/' automake.texi
@end example
+If you add filenames to @var{ETAGS_ARGS}, you will probably also
+want to set @var{TAGS_DEPENDENCIES}. The contents of this variable
+are added directly to the dependencies for the @code{tags} target.
+@vindex TAGS_DEPENDENCIES
+
Automake will also generate an @code{ID} target which will run
@code{mkid} on the source. This is only supported on a
directory-by-directory basis.
The targets that support a local version are @code{all}, @code{info},
@code{dvi}, @code{check}, @code{install-data}, @code{install-exec}, and
-@code{uninstall}.
+@code{uninstall}. Note that there are no @code{uninstall-exec-local} or
+@code{uninstall-data-local} targets; just use @code{uninstall-local}.
+It doesn't make sense to uninstall just data or just executables.
@trindex all
@trindex info
@trindex dvi