On Sat, Feb 21, 2026 at 09:55:00AM +0200, Eli Zaretskii wrote:
> So texi2any.exe is being installed from tta/C/.libs, whereas
> makeinfo.exe is installed from its parent directory tta/C, because
> $texi2any_f lacks the ".libs/" prefix. Does that explain why the
> wrapper is installed? ("cp -pR" is there because that's the emulation
> of "ln -s" on Windows: using symlinks on Windows is possible, but is
> not portable across Windows versions, and requires admin privileges
> when available.)
>
> Btw, I think the command which installs makeinfo.exe should use the
> just-installed texi2any.exe as the source of the symlink, not the
> texi2any.exe produced in the build tree. Because the build tree could
> be removed, which would make makeinfo.exe a dangling symlink, right?
"ln -s" works but other commands wouldn't.
$ ls -l /usr/local/bin/makeinfo
lrwxrwxrwx 1 root root 8 Jan 10 18:44 /usr/local/bin/makeinfo -> texi2any
$
The symlink contains the text "texi2any" which is interpreted relative
to the containing directory "/usr/local/bin".
The autoconf manual cautions against this usage of $(LN_S):
If you make a link in a directory other than the current directory,
its meaning depends on whether ‘ln’ or ‘ln -s’ is used. To safely
create links using ‘$(LN_S)’, either find out which form is used
and adjust the arguments, or always invoke ‘ln’ in the directory
where the link is to be created.
In other words, it does not work to do:
$(LN_S) foo /x/bar
Instead, do:
(cd /x && $(LN_S) foo bar)
This rule for installing "makeinfo" is present in both
C/Makefile.am and perl/Makefile.am (as "install-data-hook").