automake-1.16: Conditional Libtool Sources
8.3.4 Libtool Libraries with Conditional Sources
------------------------------------------------
Conditional compilation of sources in a library can be achieved in the
same way as conditional compilation of sources in a program (⇒
Conditional Sources). The only difference is that ‘_LIBADD’ should be
used instead of ‘_LDADD’ and that it should mention libtool objects
(‘.lo’ files).
So, to mimic the ‘hello’ example from ⇒Conditional Sources, we
could build a ‘libhello.la’ library using either ‘hello-linux.c’ or
‘hello-generic.c’ with the following ‘Makefile.am’.
lib_LTLIBRARIES = libhello.la
libhello_la_SOURCES = hello-common.c
EXTRA_libhello_la_SOURCES = hello-linux.c hello-generic.c
libhello_la_LIBADD = $(HELLO_SYSTEM)
libhello_la_DEPENDENCIES = $(HELLO_SYSTEM)
And make sure ‘configure’ defines ‘HELLO_SYSTEM’ as either
‘hello-linux.lo’ or ‘hello-generic.lo’.
Or we could simply use an Automake conditional as follows.
lib_LTLIBRARIES = libhello.la
libhello_la_SOURCES = hello-common.c
if LINUX
libhello_la_SOURCES += hello-linux.c
else
libhello_la_SOURCES += hello-generic.c
endif