1#line 1 2package Module::Install::Can; 3 4use strict; 5use Module::Install::Base; 6use Config (); 7### This adds a 5.005 Perl version dependency. 8### This is a bug and will be fixed. 9use File::Spec (); 10use ExtUtils::MakeMaker (); 11 12use vars qw{$VERSION $ISCORE @ISA}; 13BEGIN { 14 $VERSION = '0.62'; 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 21sub 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 35sub 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 50sub 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(); 63if ( $^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 781; 79 80__END__ 81 82#line 157 83