> From: Gavin Smith <[email protected]>
> Date: Sat, 17 Jan 2026 21:08:53 +0000
> 
> On Sat, Jan 17, 2026 at 09:43:44PM +0100, [email protected] wrote:
> > > > > Which brings me to the installation.  I've just run "make install",
> > > > > and I see that various libtexinfo*.dll DLLs are installed in
> > > > > $prefix/lib/bin.
> > > > 
> > > > That is somewhat unexpected.  In tta/C/Makefile.am, there is
> > > > 
> > > > converterlibdir = $(libdir)/$(CONVERTER)
> > > > xsdir = $(converterlibdir)
> > > > 
> > > > and the libraries are in xs_LTLIBRARIES, and therefore should be
> > > > installed in $(libdir)/texi2any, since CONVERTER=texi2any.
> > > > 
> > > > xs_LTLIBRARIES += libtexinfo.la
> > > 
> > > I think the reason is libtool.  It "knows" that shared libraries on
> > > Windows need to be installed in the 'bin' subdirectory, not in the
> > > 'lib' subdirectory as on Posix systems.
> > > 
> > > So I guess this calls for some Makefile wizardry, to make sure
> > > libtexinfo*.dll libraries end up in lib/texi2any/ instead.
> > 
> > Ok.  I guess we have to bypass libtool on that.
> 
> Is this a new problem?

Yes.

> Were the libraries installed in the wrong place with Texinfo 7.2?

No, they were installed together with the XS DLLs.  But Texinfo 7.2
didn't use libtool for that, did it?

> I know libtool is used for installation, as sometimes it needs to relink
> a library file so it works in the new location.  But installing in a
> completely different location sounds like a bad idea.
> 
> The .la files can contain a "libdir" line which may affect where the
> files are installed.  For example:
> 
> # Directory that this library needs to be installed in:
> libdir='/usr/local/lib/texi2any'

I have $prefix/lib/texi2any/libtexinfo.la file which says:

  # Directory that this library needs to be installed in:
  libdir='d:/usr/lib/texi2any'

(my $prefix is "d:/usr").  This is okay for finding the *.dll.a import
libraries, as this entry says:

  # Names of this library.
  library_names='libtexinfo.dll.a'

but XSLoader needs to use the entry below, in addition to libdir, to
load the DLL itself:

  # The name that we can dlopen(3).
  dlname='../bin/libtexinfo-1.dll'

> Eli: can you check the contents of some of the .la files before they
> are installed, to confirm which location the libdir= lines refer to?

There are two: one in tta/C/, the other in tta/C/.libs.  They are
identical, and also identical to the installed file, with one
difference: the dlname entry says

  # The name that we can dlopen(3).
  dlname='libtexinfo-1.dll'


Reply via email to