[PATCH] Drop $(EXEEXT) suffix from shared libraries

Dmitry V. Levin ldv@altlinux.org
Wed Dec 9 22:20:09 GMT 2020


On Thu, Dec 10, 2020 at 01:04:14AM +0300, Dmitry V. Levin wrote:
> On Wed, Dec 09, 2020 at 08:55:23PM +0100, Mark Wielaard wrote:
> > On Sun, 2020-12-06 at 12:49 +0100, Mark Wielaard wrote:
> > > On Mon, 2020-11-30 at 21:35 +0100, Mark Wielaard wrote:
> > > > On Mon, Nov 30, 2020 at 08:00:00AM +0000, Dmitry V. Levin wrote:
> > > > > According to GNU Automake documentation [1], $(EXEEXT) is the
> > > > > suffix
> > > > > that should be used for executables, it is not applicable for
> > > > > shared libraries.
> > > > > 
> > > > > [1] 
> > > > > https://www.gnu.org/software/automake/manual/html_node/EXEEXT.html
> > > > 
> > > > I think you are right and this patch is correct.  This probably only
> > > > affects non-posix or windows setups.  Ulf (on CC now) was working on
> > > > building on windows (although I think we never integrated all the
> > > > patches for that). Maybe he has an opinion on this patch?
> > > 
> > > Lets assume that no objection equals patch is good (for now, we can
> > > always revert or change it later of course).
> > 
> > hmmm, I do now get warnings from autoreconf 2.69:
> > 
> > autoreconf: running: automake --add-missing --copy --force-missing
> > libasm/Makefile.am:66: warning: deprecated feature: target 'libasm.so' overrides 'libasm.so$(EXEEXT)'
> > libasm/Makefile.am:66: change your target to read 'libasm.so$(EXEEXT)'
> > /usr/share/automake-1.13/am/program.am: target 'libasm.so$(EXEEXT)' was defined here
> > libasm/Makefile.am:37:   while processing program 'libasm.so'
> > libdw/Makefile.am:114: warning: deprecated feature: target 'libdw.so' overrides 'libdw.so$(EXEEXT)'
> > libdw/Makefile.am:114: change your target to read 'libdw.so$(EXEEXT)'
> > /usr/share/automake-1.13/am/program.am: target 'libdw.so$(EXEEXT)' was defined here
> > libdw/Makefile.am:38:   while processing program 'libdw.so'
> > libelf/Makefile.am:116: warning: deprecated feature: target 'libelf.so' overrides 'libelf.so$(EXEEXT)'
> > libelf/Makefile.am:116: change your target to read 'libelf.so$(EXEEXT)'
> > /usr/share/automake-1.13/am/program.am: target 'libelf.so$(EXEEXT)' was defined here
> > libelf/Makefile.am:38:   while processing program 'libelf.so'
> > autoreconf: Leaving directory `.'
> > 
> > Is this because I am using automake 1.13 and I really should upgrade to
> > something newer? Or do newer automakes also yell and scream about this?
> 
> I see the same set of warnings with automake 1.16.3 too, although 
> for some reason there are no complains about libdebuginfod.so target.
> 
> There must be something odd with automake, I'll have a look.

OK, there was no mystery at all:

$ git grep '_PROGRAMS.*_LIBRARIES'
libasm/Makefile.am:noinst_PROGRAMS = $(noinst_LIBRARIES:_pic.a=.so)
libdw/Makefile.am:noinst_PROGRAMS = $(noinst_LIBRARIES:_pic.a=.so)
libelf/Makefile.am:noinst_PROGRAMS = $(noinst_LIBRARIES:_pic.a=.so)

In other words, automake was told that libasm.so, libdw.so, and libelf.so
are noinst_PROGRAMS, and rightfully decided that they shall have $(EXEEXT)
suffix.

What was the reason for including these libraries into noinst_PROGRAMS?


-- 
ldv


More information about the Elfutils-devel mailing list