Re: Fix 34200 on Cygwin
Reini Urban [Sun, 24 Aug 2008 10:47:23 +0000 (12:47 +0200)]
Message-ID: <48B1201B.3080705@x-ray.at>

p4raw-id: //depot/perl@34219

installperl
lib/ExtUtils/CBuilder/Platform/cygwin.pm
lib/ExtUtils/t/Embed.t

index c717750..b014f80 100755 (executable)
@@ -364,7 +364,14 @@ if ($Is_VMS) {  # We did core file selection during build
     $coredir =~ tr/./_/;
     map { s|^$coredir/||i; } @corefiles = <$coredir/*.*>;
 }
-else {
+elsif ($Is_Cygwin) { # On Cygwin symlink it to CORE to make Makefile happy
+    my $coredll = "$installarchlib/CORE/$libperl";
+    ( $Config{'d_link'} eq 'define' &&
+      eval { CORE::link "$installbin/$libperl", $coredll } ) ||
+    eval { symlink "$installbin/$libperl", $coredll }  ||
+    copy("$installbin/$libperl", $coredll);
+    @corefiles = <*.h libperl*.* perl*$Config{lib_ext}>;
+} else {
     # [als] hard-coded 'libperl' name... not good!
     @corefiles = <*.h libperl*.* perl*$Config{lib_ext}>;
 
index f72f5f7..99ff6d8 100644 (file)
@@ -17,9 +17,8 @@ sub link_executable {
 
 sub link {
   my ($self, %args) = @_;
-  # libperl.dll.a fails with -Uusedl. -L../CORE -lperl is better
   $args{extra_linker_flags} = [
-    '-L'.$self->perl_inc().' -lperl',
+    $self->perl_inc().'/'.($self->{config}{useshrplib} ? 'libperl.dll.a' : 'libperl.a'),
     $self->split_like_shell($args{extra_linker_flags})
   ];
 
index b9e954b..2aece54 100644 (file)
@@ -105,6 +105,9 @@ if ($^O eq 'VMS') {
         s!-bE:(\S+)!-bE:$perl_exp!;
     }
    }
+   elsif ($^O eq 'cygwin') { # Cygwin needs no special treatment like below
+       ;
+   }
    elsif ($Config{'libperl'} !~ /\Alibperl\./) {
      # Everyone needs libperl copied if it's not found by '-lperl'.
      $testlib = $Config{'libperl'};