Many Automake variables follow a naming scheme that determines how programs and other derived objects are built and installed. Such a variable name consists of several pieces which are concatenated together: optional special prefixes, followed by a directory prefix, followed by a primary.
We refer to the piece that tells
automake the type of object
being listed as the primary. For instance, a variable based on
PROGRAMS holds a
list of programs that are to be compiled and linked.
The current primary names are ‘PROGRAMS’, ‘LIBRARIES’,
‘LTLIBRARIES’, ‘LISP’, ‘PYTHON’, ‘JAVA’,
‘SCRIPTS’, ‘DATA’, ‘HEADERS’, ‘MANS’, and
The writer of Makefile.am uses the directory prefix to declare which
directory the built
objects should be installed in. The standard directory names are given
in the GNU standards
(see Directory Variables in The GNU Coding Standards).
Automake extends this list with
pkglibexecdir; these are the same as the
non-‘pkg’ versions, but with ‘$(PACKAGE)’ appended. For instance,
pkglibdir is defined as ‘$(libdir)/$(PACKAGE)’. See Standard installation directories for a full list.
The ‘dir’ suffix is removed when constructing the
variable names: thus the variable for listing programs to be installed
bindir is ‘bin_PROGRAMS’.
The prefix ‘noinst_’ indicates that the objects in question should be built but not installed at all. This is usually used for objects required to build the rest of your package, for instance static libraries (see Libraries), or helper scripts.
Automake will not permit some combinations of primary and directory prefix where it would not normally make sense to install objects of that type in the directory specified, and will give an error if this is attempted. (However if you really need to, see Adding installation directories for how to override this check.)
Some primaries also allow additional prefixes.
At most one of ‘nobase_’, and ‘notrans_’ may be used,
followed by at most one of ‘dist_’ and ‘nodist_’.
nodist_ are also meaningful for some variables
that are not based on primaries; see the next section.
These prefixes are explained later (see Program and Library Variables)
(see Man Pages).
The special prefix ‘check_’ indicates that the objects in question should not be built until the ‘make check’ command is run. Those objects are not installed either.