Re: Texinfo 7.2.90 build with mingw.org's MinGW: configury

Patrice Dumas <[email protected]>
Newsgroups gmane.comp.tex.texinfo.bugs
Message-ID <[email protected]>
On Wed, Jan 14, 2026 at 06:44:08PM +0200, Eli Zaretskii wrote:
>   $ /d/usr/Perl/bin/perl -V:perllibs
>   perllibs='-lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -lversion -lodbc32 -lodbccp32 -lcomctl32';
> 
> All of the libraries it mentions are Windows system libraries.  The
> only exception is -luuid, which is missing.  To overcome that problem,
> I simply built and installed libuuid, which gave me an import library
> and a DLL.  This solved the problem of libtool refusing to build XS as
> shared libraries.  None of the built DLLs actually need libuuid, so
> its only role here is to pacify the linker, which sees the -luuid
> switch and therefore must find a corresponding import library in order
> to be able to produce a DLL.

In the mean time, I removed perllibs from the link command...  I do not
have a good feeling on what should be best.  In theory it should be
better with it, but in practice, it has never been needed and has
occasionally posed problem.

> The other problem was to avoid putting junk into tta/C/Makefile
> because of the error message "perl -MExtUtils::Embed -e ldopts" emits.
> I suggest to solve this by redirecting its stderr to the null device,
> like this:
> 
>   PERL_EXTUTILS_EMBED_ccopts=
>   PERL_EXTUTILS_EMBED_ldopts=
>   if test "z$extutils_embed" = 'zyes' ; then
>     PERL_EXTUTILS_EMBED_ccopts=`${PERL} -MExtUtils::Embed -e ccopts 2> /dev/null`
>     PERL_EXTUTILS_EMBED_ldopts=`${PERL} -MExtUtils::Embed -e ldopts 2> /dev/null`
>   fi
> 
> In addition, I think we should run the output through a Sed script
> that replaces backslashes with forward slashes.  That's because the
> output is
> 
>    -s -static-libgcc -static-libstdc++ -L"D:\usr\Perl\lib\CORE" -L"C:\MinGW\i686-w64-mingw32\lib"  D:\usr\Perl\lib\CORE\libperl520.a
> 
> and the backslashes then cause Bash to produce nonsensical file names
> like D:usrPerllibCORElibperl520.a, which then fails generation of XS
> shared libraries down the line (libtool doesn't find the file, and
> assumes it's a static archive, not an import library).  Something like
> this:
> 
>   PERL_EXTUTILS_EMBED_ldopts=`${PERL} -MExtUtils::Embed -e ldopts 2> /dev/null | sed -e 's,\\,/,g'`
> 
> and similarly with ccopts.  I think this can be done on all platforms,
> since only on Windows Perl might report file names with backslashes.

In the mean time I also removed the use of ExtUtils::Embed, and replaced
by an explicit selection of options, but I think that it is a good thing
to be able to at least see the ExtUtils::Embed output, so I left the
code in comment, I'll apply what you propose.

-- 
Pat
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.