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").



Reply via email to