Hi Peter, On 6 Oct 2012, at 06:20, Peter Rosin <p...@lysator.liu.se> wrote: > Over to mdemo.at. It fails on MinGW because I do not have > any installed libltdl in MinGW. Temporarily moving the > installed Cygwin libltdl out of the lib search path makes > the test fail on Cygwin as well. So, I believe this is > a generic failure.
Nice catch! And thanks for the analysis, that allowed me to get to the root of the problem pretty quickly: Legacy mdemo{,2} tests tricked their respective builds into reusing the main project's libltdlc.la, where I tried to retool the replacement Autotest to do what a user would do and use the project's own ltdl subproject. Only I didn't remove all of the trickery while rewriting the test :-( > Without an installed libltdl, I get this > during configure: > > checking where to find libltdl headers... -I$(top_srcdir)/libltdl > checking where to find libltdl library... > $(top_build_prefix)libltdl/libltdlc.la > > and this when making: > > ../../libtool-msvc/tests/mdemo.at:646: $unset LIBTOOL LIBTOOLIZE; $MAKE > $target > stderr: > Makefile:1090: warning: overriding commands for target `libltdl/libltdlc.la' > Makefile:573: warning: ignoring old commands for target `libltdl/libltdlc.la' > Makefile:1090: warning: overriding commands for target `libltdl/libltdlc.la' > Makefile:573: warning: ignoring old commands for target `libltdl/libltdlc.la' > libtool: link: cannot find the library `libltdl/libltdlc.la' or unhandled > argument `libltdl/libltdlc.la' > make[1]: *** [libmlib.la] Error 1 This means LTDL_INIT is finding the ltdl subtree, but I forgot to remove the Makefile.am trickery to point $(LIBLTDL) back to $(top_srcdir)/libltdl. > On Cygwin, with the installed libltdl intact, I get this during > configure: > > checking where to find libltdl headers... > checking where to find libltdl library... -lltdl > > (and the test is ok, in so far one can consider using the > installed libltdl ok...) And I also forgot to pass --with-included-ltdl to configure :( > I'm also noting that some time ago, mdemo had this in it's > Makefile.am: > > ## use @LIBLTDL@ because some broken makes do not accept macros in targets > ## we can only do this because our LIBLTDL does not contain ${top_builddir} > top_distdir = ../.. > @LIBLTDL@: $(top_distdir)/libtool \ > $(top_distdir)/config.h $(srcdir)/$(top_distdir)/libltdl/ltdl.c \ > $(srcdir)/$(top_distdir)/libltdl/ltdl.h > (cd $(top_distdir); $(MAKE) `echo $(LIBLTDL) | sed > 's,.*\.\./libltdl/,libltdl/,g'`) > > but somewhere along the way, that comment was removed, probably at > the same time @LIBLTDL@ was converted into $(LIBLTDL). Anyway, > mdemo.at has this: > > \$(LIBLTDL): ${top_build_prefix}libtool \ > ${top_build_prefix}config.h $top_srcdir/libltdl/ltdl.c \ > $top_srcdir/libltdl/ltdl.h > cd $top_build_prefix; \$(MAKE) \`echo \$(LIBLTDL) | sed > 's|.*\.\./\.\./libltdl/|libltdl/|g'\` > > But the second line of the removed comment seems crucial and > as our $(LIBLTDL) is not the expected "libltdl/libltdlc.la", > Automake is fooled into creating two targets for the same > file. Or something. Something. This is the trickery I'm talking about, which needs removing to let mdemo.at use it's own libltdl. > Also, the old mdemo had LTDL_CONVENIENCE([../../libltdl]), and the > new mdemo.at have LT_CONFIG_LTDL_DIR([libltdl]) and > LTDL_INIT([nonrecursive]), which does not seem entirely equivalent? Right, because I tried to convert from reusing top-level libltdlc.la to actually building our own subproject libltdl per-test. > I don't have enough autofuu to fix this. I've pushed a patch that fixes all of the above. Pending as-yet-undiscovered Windows madness, I think that should allow the test to work on your test environments too. Cheers, -- Gary V. Vaughan (gary AT gnu DOT org)