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.