@c 2004, 2005, 2006 Free Software Foundation, Inc.
@c Permission is granted to copy, distribute and/or modify this document
-@c under the terms of the GNU Free Documentation License, Version 1.1
+@c under the terms of the GNU Free Documentation License, Version 1.2
@c or any later version published by the Free Software Foundation;
@c with no Invariant Sections, with no
@c Front-Cover Texts, and with no Back-Cover Texts.
* Makefile Basics:: General conventions for Makefiles.
* Utilities in Makefiles:: Utilities to be used in Makefiles.
* Command Variables:: Variables for specifying commands.
-* Directory Variables:: Variables for installation directories.
* DESTDIR:: Supporting staged installs.
+* Directory Variables:: Variables for installation directories.
* Standard Targets:: Standard targets for users.
* Install Command Categories:: Three categories of commands in the `install'
rule: normal, pre-install and post-install.
and @code{INSTALL_DATA}. (The default for @code{INSTALL_PROGRAM} should
be @code{$(INSTALL)}; the default for @code{INSTALL_DATA} should be
@code{$@{INSTALL@} -m 644}.) Then it should use those variables as the
-commands for actual installation, for executables and nonexecutables
+commands for actual installation, for executables and non-executables
respectively. Minimal use of these variables is as follows:
@example
$(INSTALL_DATA) libfoo.a $(DESTDIR)$(libdir)/libfoo.a
@end example
-The @code{DESTDIR} variable is specified by the user, either to the
-@file{configure} script or, more commonly, on the @code{make} command
-line. For example:
+The @code{DESTDIR} variable is specified by the user on the @code{make}
+command line. For example:
@example
make DESTDIR=/tmp/stage install
@end example
@noindent
-Since the value of @code{DESTDIR} is only used during installation, it
-should only be supported in the @code{install*} and @code{uninstall*}
-targets.
+@code{DESTDIR} should be supported only in the @code{install*} and
+@code{uninstall*} targets, as those are the only targets where it is
+useful.
If your installation step would normally install
@file{/usr/local/bin/foo} and @file{/usr/local/lib/libfoo.a}, then an
those permissions. Finally, it can be useful with tools such as
@code{stow}, where code is installed in one place but made to appear
to be installed somewhere else using symbolic links or special mount
-operations. So, we recommend GNU packages support @code{DESTDIR},
-though it is not an absolute requirement.
+operations. So, we strongly recommend GNU packages support
+@code{DESTDIR}, though it is not an absolute requirement.
@node Directory Variables
@item srcdir
The directory for the sources being compiled. The value of this
variable is normally inserted by the @code{configure} shell script.
-(If you are using Autconf, use @samp{srcdir = @@srcdir@@}.)
+(If you are using Autoconf, use @samp{srcdir = @@srcdir@@}.)
@end table
For example:
order for this to be useful, all the packages must be designed so that
they will work sensibly when the user does so.
-Not all of these variables may be implemented in the current release
-of Autoconf and/or Automake; right now, that includes at least
-@code{docdir}, @code{psdir}, @code{pdfdir}, @code{htmldir},
-@code{dvidir}. In these cases, the descriptions here serve as
-specifications for what Autoconf will implement. As a programmer, you
-can either use a development version of Autoconf or avoid using these
-variables until a stable release is made which supports them.
+At times, not all of these variables may be implemented in the current
+release of Autoconf and/or Automake; but as of Autoconf@tie{}2.60, we
+believe all of them are. When any are missing, the descriptions here
+serve as specifications for what Autoconf will implement. As a
+programmer, you can either use a development version of Autoconf or
+avoid using these variables until a stable release is made which
+supports them.
@node Standard Targets
certainly want to use subdirectories, or two nodes with the same name
in different manuals will overwrite each other.
-Please make these @code{install-@var{format}} targets depend on the
-correspond @var{format} target.
+Please make these @code{install-@var{format}} targets invoke the
+commands for the @var{format} target, for example, by making
+@var{format} a dependency.
@item uninstall
Delete all the installed files---the copies that the @samp{install}
@itemx html
@itemx pdf
@itemx ps
-Generate documentation files in the given format, if possible.
+Generate documentation files in the given format. These targets
+should always exist, but any or all can be a no-op if the given output
+format cannot be generated. These targets should not be dependencies
+of the @code{all} target; the user must manually invoke them.
+
Here's an example rule for generating DVI files from Texinfo:
@smallexample