If you need to link against libraries that are not found by
configure, you can use LDADD to do so. This variable is
used to specify additional objects or libraries to link with; it is
inappropriate for specifying specific linker flags, you should use
AM_LDFLAGS for this purpose.
Sometimes, multiple programs are built in one directory but do not share
the same link-time requirements. In this case, you can use the
prog_LDADD variable (where prog is the name of the
program as it appears in some _PROGRAMS variable, and usually
written in lowercase) to override the global LDADD. If this
variable exists for a given program, then that program is not linked
using LDADD.
For instance, in GNU cpio, pax, cpio and mt are
linked against the library libcpio.a. However, rmt is
built in the same directory, and has no such link requirement. Also,
mt and rmt are only built on certain architectures. Here
is what cpio's src/Makefile.am looks like (abridged):
bin_PROGRAMS = cpio pax @MT@
libexec_PROGRAMS = @RMT@
EXTRA_PROGRAMS = mt rmt
LDADD = ../lib/libcpio.a @INTLLIBS@
rmt_LDADD =
cpio_SOURCES = ...
pax_SOURCES = ...
mt_SOURCES = ...
rmt_SOURCES = ...
prog_LDADD is inappropriate for passing program-specific
linker flags (except for -l, -L, -dlopen and
-dlpreopen). So, use the prog_LDFLAGS variable for
this purpose.
It is also occasionally useful to have a program depend on some other
target which is not actually part of that program. This can be done
using the prog_DEPENDENCIES variable. Each program depends
on the contents of such a variable, but no further interpretation is
done.
If prog_DEPENDENCIES is not supplied, it is computed by
Automake. The automatically-assigned value is the contents of
prog_LDADD, with most configure substitutions, -l,
-L, -dlopen and -dlpreopen options removed. The
configure substitutions that are left in are only @LIBOBJS@ and
@ALLOCA@; these are left because it is known that they will not
cause an invalid value for prog_DEPENDENCIES to be
generated.