Next: Header files, Up: Other Derived Objects [Contents][Index]
It is possible to define and install programs which are scripts. Such programs are listed using the ‘SCRIPTS’ primary name. Automake doesn’t define any dependencies for scripts; the Makefile.am should include the appropriate rules.
Automake does not assume that scripts are derived objects; such objects must be deleted by hand (see What Gets Cleaned).
The automake
program itself is a Perl script that is generated
from automake.in. Here is how this is handled:
bin_SCRIPTS = automake CLEANFILES = $(bin_SCRIPTS) do_subst = sed -e 's,[@]datadir[@],$(datadir),g' \ -e 's,[@]PERL[@],$(PERL),g' \ -e 's,[@]PACKAGE[@],$(PACKAGE),g' \ -e 's,[@]VERSION[@],$(VERSION),g' \ … automake: automake.in Makefile $(do_subst) < $(srcdir)/automake.in > automake chmod +x automake
Because—as we have just seen—scripts can be built, they are not
distributed by default. Scripts that should be distributed can be
specified using a dist_
prefix as in other primaries. For
instance the following Makefile.am declares that
my_script should be distributed and installed in
$(sbindir)
.
dist_sbin_SCRIPTS = my_script
Script objects can be installed in bindir
, sbindir
,
libexecdir
, or pkgdatadir
.
Scripts that need not being installed can be listed in
noinst_SCRIPTS
, and among them, those which are needed only by
make check
should go in check_SCRIPTS
.