Re: Cygwin targetting mingw 32-bit
Vibhu Mohindra <[email protected]> Sun, 2 Oct 2022 05:59:29 +0200
| Newsgroups | gmane.lisp.clisp.devel |
|---|---|
| Message-ID | <VI1PR06MB4320712AAF47157DC0EEF55DCA589@VI1PR06MB4320.eurprd06.prod.outlook.com> |
On 27/09/2022 00:18, Vibhu Mohindra wrote:
> 1. LN_S
I've got past all "ln -s" related problems locally and will describe my
understanding of things.
System: Windows 10 64-bit
Cygwin (32-bit) targetting mingw 32-bit
----
I changed my toplevel Makefile's build-aux target to use "cp -a" instead
of $(LN_S), because LN_S is automatically set to "ln" in this Makefile
and "ln" doesn't work for directories.
----
There are two more kinds of occurrences of ln -s that need fixing.
1) In Makefiles in subdirectories like build/{gllib,i18n,...}/Makefile
2) clisp-link (and perhaps other scripts) which cause full/* to be symlinks
1)
Here's how LN_S gets its value in the Makefiles. The configure script
detects in Cygwin that "ln -s" works and sets LN_S to that. It can't
know that the Windows native clisp that will be produced via mingw won't
actually be able to handle symlinks. (Presumably no native Windows
programs can handle symlinks.) However src/makemake.in (near line 1052)
does know that fact so it replaces LN_S to be "ln". In short, configure
thinks "ln -s" but makemake.in knows to override that to "ln".
But the subsidiary Makefiles take their LN_S values directly from
configure not from makemake.in. Thus they get the configure-detected bad
value "ln -s". I manually changed the LN_S values in these subsidiary
Makefiles to be "ln". I don't know how the build architecture should
change so that they don't require manual editing but are instead born
with the correct value just as the toplevel Makefile is. (Maybe passing
LN_S=ln as a command-line argument to configure will do the trick. If
so, then the solution requiring the least work will be to update
INSTALL.windows to state that. But this hack will still leave the
build's design flawed -- where there's the appearance that makemake gets
to have a say when in reality it doesn't consistently.)
2)
I've got "make full" to complete but I couldn't immediately run the
result. Again, that's because full/* were mostly symlinks. Changing
lisp.exe and lispinit.mem to instead be hard links of the underlying
files made "clisp -K full" start up successfully. I think the symlinks
were created due to clisp-link having "ln -s" in two places. These two
places (or whichever other scripts caused full/* to be symlinks) should
be changed.
--
Vibhu
_______________________________________________
clisp-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/clisp-devel