Previous: Conditional Sources, Up: A Program
Sometimes it is useful to determine the programs that are to be built
at configure time. For instance, GNU cpio only builds
mt and rmt under special circumstances. The means to
achieve conditional compilation of programs are the same you can use
to compile source files conditionally: substitutions or conditionals.
In this case, you must notify Automake of all the programs that can
possibly be built, but at the same time cause the generated
Makefile.in to use the programs specified by configure.
This is done by having configure substitute values into each
_PROGRAMS definition, while listing all optionally built programs
in EXTRA_PROGRAMS.
bin_PROGRAMS = cpio pax $(MT)
libexec_PROGRAMS = $(RMT)
EXTRA_PROGRAMS = mt rmt
As explained in EXEEXT, Automake will rewrite
bin_PROGRAMS, libexec_PROGRAMS, and
EXTRA_PROGRAMS, appending ‘$(EXEEXT)’ to each binary.
Obviously it cannot rewrite values obtained at run-time through
configure substitutions, therefore you should take care of
appending ‘$(EXEEXT)’ yourself, as in ‘AC_SUBST([MT],
['mt${EXEEXT}'])’.
You can also use Automake conditionals (see Conditionals) to
select programs to be built. In this case you don't have to worry
about ‘$(EXEEXT)’ or EXTRA_PROGRAMS.
bin_PROGRAMS = cpio pax
if WANT_MT
bin_PROGRAMS += mt
endif
if WANT_RMT
libexec_PROGRAMS = rmt
endif