automake-1.16: Conditional Programs
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 ⇒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}'])’.
Conditional Programs using Automake Conditionals
................................................
You can also use Automake conditionals (⇒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