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

Reply via email to