1 |
#line 1 |
2 |
package Module::Install::Can; |
3 |
|
4 |
use strict; |
5 |
use Module::Install::Base; |
6 |
use Config (); |
7 |
### This adds a 5.005 Perl version dependency. |
8 |
### This is a bug and will be fixed. |
9 |
use File::Spec (); |
10 |
use ExtUtils::MakeMaker (); |
11 |
|
12 |
use vars qw{$VERSION $ISCORE @ISA}; |
13 |
BEGIN { |
14 |
$VERSION = '0.75'; |
15 |
$ISCORE = 1; |
16 |
@ISA = qw{Module::Install::Base}; |
17 |
} |
18 |
|
19 |
# check if we can load some module |
20 |
### Upgrade this to not have to load the module if possible |
21 |
sub can_use { |
22 |
my ($self, $mod, $ver) = @_; |
23 |
$mod =~ s{::|\\}{/}g; |
24 |
$mod .= '.pm' unless $mod =~ /\.pm$/i; |
25 |
|
26 |
my $pkg = $mod; |
27 |
$pkg =~ s{/}{::}g; |
28 |
$pkg =~ s{\.pm$}{}i; |
29 |
|
30 |
local $@; |
31 |
eval { require $mod; $pkg->VERSION($ver || 0); 1 }; |
32 |
} |
33 |
|
34 |
# check if we can run some command |
35 |
sub can_run { |
36 |
my ($self, $cmd) = @_; |
37 |
|
38 |
my $_cmd = $cmd; |
39 |
return $_cmd if (-x $_cmd or $_cmd = MM->maybe_command($_cmd)); |
40 |
|
41 |
for my $dir ((split /$Config::Config{path_sep}/, $ENV{PATH}), '.') { |
42 |
my $abs = File::Spec->catfile($dir, $_[1]); |
43 |
return $abs if (-x $abs or $abs = MM->maybe_command($abs)); |
44 |
} |
45 |
|
46 |
return; |
47 |
} |
48 |
|
49 |
# can we locate a (the) C compiler |
50 |
sub can_cc { |
51 |
my $self = shift; |
52 |
my @chunks = split(/ /, $Config::Config{cc}) or return; |
53 |
|
54 |
# $Config{cc} may contain args; try to find out the program part |
55 |
while (@chunks) { |
56 |
return $self->can_run("@chunks") || (pop(@chunks), next); |
57 |
} |
58 |
|
59 |
return; |
60 |
} |
61 |
|
62 |
# Fix Cygwin bug on maybe_command(); |
63 |
if ( $^O eq 'cygwin' ) { |
64 |
require ExtUtils::MM_Cygwin; |
65 |
require ExtUtils::MM_Win32; |
66 |
if ( ! defined(&ExtUtils::MM_Cygwin::maybe_command) ) { |
67 |
*ExtUtils::MM_Cygwin::maybe_command = sub { |
68 |
my ($self, $file) = @_; |
69 |
if ($file =~ m{^/cygdrive/}i and ExtUtils::MM_Win32->can('maybe_command')) { |
70 |
ExtUtils::MM_Win32->maybe_command($file); |
71 |
} else { |
72 |
ExtUtils::MM_Unix->maybe_command($file); |
73 |
} |
74 |
} |
75 |
} |
76 |
} |
77 |
|
78 |
1; |
79 |
|
80 |
__END__ |
81 |
|
82 |
#line 157 |