1package ExtUtils::CBuilder::Platform::Unix; 2 3use warnings; 4use strict; 5use ExtUtils::CBuilder::Base; 6 7our $VERSION = '0.280238'; # VERSION 8our @ISA = qw(ExtUtils::CBuilder::Base); 9 10sub link_executable { 11 my $self = shift; 12 13 # On some platforms (which ones??) $Config{cc} seems to be a better 14 # bet for linking executables than $Config{ld}. Cygwin is a notable 15 # exception. 16 local $self->{config}{ld} = 17 $self->{config}{cc} . " " . $self->{config}{ldflags}; 18 return $self->SUPER::link_executable(@_); 19} 20 21sub link { 22 my $self = shift; 23 my $cf = $self->{config}; 24 25 # Some platforms (notably Mac OS X 10.3, but some others too) expect 26 # the syntax "FOO=BAR /bin/command arg arg" to work in %Config 27 # (notably $Config{ld}). It usually works in system(SCALAR), but we 28 # use system(LIST). We fix it up here with 'env'. 29 30 local $cf->{ld} = $cf->{ld}; 31 if (ref $cf->{ld}) { 32 unshift @{$cf->{ld}}, 'env' if $cf->{ld}[0] =~ /^\s*\w+=/; 33 } else { 34 $cf->{ld} =~ s/^(\s*\w+=)/env $1/; 35 } 36 37 return $self->SUPER::link(@_); 38} 39 401; 41