> I discovered 'make languages' yesterday.  The enclosed patch cleans up a
> lot of small nits I found in the build process.  In a number of cases, the
> Makefiles were running perl scripts as
>       ./script
> rather than as
>       $(PERL) script
>
> A few other places called a plain 'perl' instead of $(PERL).

Thanks for cleaning these up. Applied.

> Second, Configure.pl was putting the wrong flags in to build a shared
> library.  (Or, more precisely, it was apparently unconditionally using
> flags that work for GNU binutils.)  I have replaced ld_shared by what I
> suspect is the appropriate perl5 Config variable.  I left ld_shared_flags
> empty because I don't know what is supposed to go there, but the value
> Configure.pl used to use is definitely not right for Solaris's linker.

I applied the ld_shared_flags portion of this. When I went to get things
working on win32/cygwin, I didn't know what "-Wl,-soname,libparrot$(SO)"
was for, so I left it in. Taking it out as your patch had, seems to work
fine.

However, I did not apply the following:

> -    ld_shared     => '-shared',
> +    ld_shared     => $Config{lddlflags},

With that bit applied, I get the following error during "make shared"

make[1]: Leaving directory `/cygdrive/d/p/parrot-manfree/parrot/classes'

gcc -s -L/usr/local/lib  -s -L/usr/local/lib  -o blib/lib/libparrot.so
exceptions.o ...(lots of .o files)... chartypes/usascii.o -lcrypt

/usr/lib/libcygwin.a(libcmain.o)(.text+0x6a): undefined reference to `WinMain@16'

collect2: ld returned 1 exit status

Where
LD_SHARED = -shared -L/usr/local/lib

It seems that cygwin GCC does not like the -s, and would much rather
prefer -shared to work properly. The Makefile was built using cygwin perl
(that's why its using cygwin GCC), so perhaps cygwin perl's
$Config{lddlflags} is incorrect? Any ideas on how to resolve this?

Thanks,
Mike Lambert

Reply via email to