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