Hi Dmitry,

On Thu, 2020-12-10 at 01:20 +0300, Dmitry V. Levin wrote:
> 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?

Unfortunately our version control only goes back 15 years and this
particular change was from before that. I think they are noinst because
they have explicit install rules. But it probably should have been
noinst_DATA instead. The old backends libraries (when we would still
create and install that before commit 4f937e24d) used noinst_DATA
instead.

But using noinst_DATA instead gives the following warnings:

libasm/Makefile.am:66: warning: variable 'libasm_so_SOURCES' is defined but no 
program or
libasm/Makefile.am:66: library has 'libasm_so' as canonical name (possible typo)
libdw/Makefile.am:114: warning: variable 'libdw_so_SOURCES' is defined but no 
program or
libdw/Makefile.am:114: library has 'libdw_so' as canonical name (possible typo)
libelf/Makefile.am:116: warning: variable 'libelf_so_SOURCES' is defined but no 
program or
libelf/Makefile.am:116: library has 'libelf_so' as canonical name (possible 
typo)

And just adding them to noinst_LIBRARIES says:

libasm/Makefile.am:37: error: 'libasm.so' is not a standard library name
libasm/Makefile.am:37: did you mean 'libasm.a'?
libdw/Makefile.am:38: error: 'libdw.so' is not a standard library name
libdw/Makefile.am:38: did you mean 'libdw.a'?
libelf/Makefile.am:38: error: 'libelf.so' is not a standard library name
libelf/Makefile.am:38: did you mean 'libelf.a'?

Hohum. I don't know what the correct hack/tweak is in this case.

Cheers,

Mark

Reply via email to