WHAT: Rename MCA DSO filenames from "mca_<framework>_<component>.so"
to "libmca_<framework>_<component>.so" (backwards compatibility can be
preserved if we want it; see below)
WHY: Allows simplifying component Makefile.am's
WHEN: No real rush; just wanted to get the idea out there (does *not*
need to be before v1.3; more explanation below)
WHERE: autogen.sh, some stuff in opal/mca/base, and every component's
Makefile.am
TIMEOUT: Fri, 8 Aug 2008
------------------------------------------------------------------------
In reviewing some old SVN/HG trees that I had hanging around, I
discovered one about significantly simplifying (and slightly
optimizing) component Makefile.am's. I believe that these ideas came
from Brian, Ralf, and possibly others. Here's a "simple" current
Makefile.am (the TCP BTL):
https://svn.open-mpi.org/trac/ompi/browser/trunk/ompi/mca/btl/tcp/Makefile.am
At the end of this mail, I include what the meat of the TCP BTL
Makefile.am can be reduced to.
However, to do this, we need to use the same output filename for both
the static and dynamic builds (i.e., as a standalone DSO and as a
convenience LT library). Libtool will complain if we build a
convenience library with a filename that does not begin with "lib".
Note that there are two parts involved:
1. touching each Makefile.am and converting to the simpler format.
2. converting the MCA base to look for "libmca_<fw>_<comp>"
filenames. NOTE: we can optionally have the MCA base *also* look for
the old-style name "mca_<fw>_<comp>" if backwards compatibility is
desired.
Because of the backwards compatibility possibility, there is no need
to do this before v1.3 -- it could be done for v1.3.x or even v1.4
(there's no real rush). It's just an idea that has been around for a
while, so I thought I'd turn it into an RFC. If the community agrees,
I'll likely file a ticket about this and we'll get to it someday.
Below is what the TCP BTL Makefile.am can be reduced to (compare the
end of this file to the end of the current TCP BTL Makefile.am). Note
that the whole "if" logic at the end could possibly be hidden in
autogen -- I haven't thought that through, but it's a possibility (we
can't hide that stuff in autogen until we unify the output filename;
we can't do it in today's build system, for example).
-----
libmca_btl_tcp_la_SOURCES = \
btl_tcp.c \
btl_tcp.h \
btl_tcp_addr.h \
btl_tcp_component.c \
btl_tcp_endpoint.c \
btl_tcp_endpoint.h \
btl_tcp_frag.c \
btl_tcp_frag.h \
btl_tcp_hdr.h \
btl_tcp_proc.c \
btl_tcp_proc.h \
btl_tcp_ft.c \
btl_tcp_ft.h
libmca_btl_tcp_la_LDFLAGS = -module -avoid-version
if OMPI_BUILD_btl_tcp_DSO
mcacomponentdir = $(pkglibdir)
mcacomponent_LTLIBRARIES = libmca_btl_tcp.la
else
noinst_LTLIBRARIES = libmca_btl_tcp.la
endif
-----
--
Jeff Squyres
Cisco Systems