On Wed, 9 Jan 2002, Dan Sugalski wrote:
> At 10:56 AM 1/9/2002 -0500, Andy Dougherty wrote:
> >For perl5, the main makefile calls (essentially)
> >
> > $(CC) -o perl
> >
> >while the parrot Makefile calls
> >
> > $(LD) -o test_main
> >
> >I tend to think parrot's wrong here, but there might have been a good
> >reason for doing that way that I am unaware of.
>
> It's a platform-independence issue. Non-Unix platforms need to call the
> linker, unix ones don't. Which means we've either got the makefile wrong,
> or have got the switches set in incorrect ways. Or both. Probably both--let
> me think about this some.
I think we've got lots of things mixed up on all ends. Perl5's
Unix-centric Configure is showing up again.
Specifically, Perl5's $Config{ld} is documented as follows:
ld: This variable indicates the program to be used to link
libraries for dynamic loading. On some systems, it is 'ld'.
On ELF systems, it should be $cc. Mostly, we'll try to respect
the hint file setting.
The problem is that we really need at least *three* variables, something
like the following:
Variable description
cc Compiler -- used to turn .c files into object files.
(Usually cc or cl, or something like that.)
link Linker, used to link object files (plus libraries) into
an executable. (Usually $cc on Unix-ish systems. VMS and
Win32 might use "Link".
lib_ld Tool used to build dynamically loadable libraries. Often
$cc on Unix-ish systems, but apparently sometimes it's ld.
For perl5, $Config{ld} is what I labeled lib_ld in the little table above.
Perl5's Configure/Makefile.SH build system incorrectly _assumes_ that
linker=$cc.
One possible "fix" for now is to introduce these *three* variables into
parrot's Configure, and letting $c{linker} default to $c{cc} for now,
unless overridden by a hints file. The parrot Makefile would then call
(essentially)
$(LINK) -o test_main
and HP/UX would work again.
--
Andy Dougherty [EMAIL PROTECTED]
Dept. of Physics
Lafayette College, Easton PA 18042