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