[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
8.1.4 Conditional compilation of programs
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.
Conditional Programs using configure
Substitutions
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 Support for executable extensions, 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}'])’.
Conditional Programs using Automake Conditionals
You can also use Automake conditionals (see section 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 |