root / tools / perl / lib / ExtUtils / CBuilder / Platform / Unix.pm @ fa47cac2
History | View | Annotate | Download (1 kB)
| 1 |
package ExtUtils::CBuilder::Platform::Unix; |
|---|---|
| 2 |
|
| 3 |
use strict; |
| 4 |
use ExtUtils::CBuilder::Base; |
| 5 |
|
| 6 |
use vars qw($VERSION @ISA); |
| 7 |
$VERSION = '0.2703'; |
| 8 |
@ISA = qw(ExtUtils::CBuilder::Base); |
| 9 |
|
| 10 |
sub 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 |
|
| 21 |
sub 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 |
|
| 40 |
1; |