in reply to Re^2: XS build error
in thread XS build error

I was thinking it would get some args from Config, but I really don't know much about that. I have ActivePerl (built using MS compiler) and an MS compiler.

Replies are listed 'Best First'.
Re^4: XS build error
by syphilis (Archbishop) on Jan 05, 2010 at 02:44 UTC
    I was thinking it would get some args from Config

    That was my first thought, too, but I couldn't find any instances of -out in either Config.pm or Config_heavy.pl.

    I did find this, however, in ExtUtils::MM_Win32:
    push(@m, q{ $(LD) -out:$@ $(LDDLFLAGS) }.$ldfrom.q{ $(OTHERLDFLAGS) } .q{$(MYEXTLIB) $(PERL_ARCHIVE) $(LDLOADLIBS) -def:$(EXPORT_LIST) +});
    and wondered whether that might be where the botch up occurs. With MinGW, $(LD) will be g++ (so that part fits with what we're seeing from the op), but I'm not sure what's contained in the other symbols and haven't checked. In any case, that code comes from a block that should only be entered if 'cl' is the compiler.

    There was a significant change from perl 5.10.0 to 5.10.1 on windows regarding $Config{cc}. With the former it was just plain old 'gcc' or 'cl' (or whatever), but with the latter it becomes 'X:/full/path/to/Y.exe' (where 'X' is the drive letter, and 'Y' is the name of the compiler.)
    This meant that, in EU::MM_Win32:
    my $GCC = 1 if $Config{'cc'} =~ /^gcc/i;
    had to be changed to:
    my $GCC = $Config{'cc'} =~ /\bgcc/i ? 1 : 0;
    I don't quite see how all this fits in with the op's problem (and probably never will without perl -V and the version of EU::MM), but it looks a bit supicious.

    Cheers,
    Rob