ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/cvsroot/staticperl/perl/lib/ExtUtils/MM.pm
Revision: 1.1
Committed: Thu Jun 30 14:27:10 2005 UTC (21 years, 4 months ago) by root
Branch: MAIN
CVS Tags: PERL-5-8-7, HEAD
Branch point for: PERL
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 root 1.1 package ExtUtils::MM;
2    
3     use strict;
4     use Config;
5     use vars qw(@ISA $VERSION);
6     $VERSION = 0.04;
7    
8     require ExtUtils::Liblist;
9     require ExtUtils::MakeMaker;
10    
11     @ISA = qw(ExtUtils::Liblist ExtUtils::MakeMaker);
12    
13     =head1 NAME
14    
15     ExtUtils::MM - OS adjusted ExtUtils::MakeMaker subclass
16    
17     =head1 SYNOPSIS
18    
19     require ExtUtils::MM;
20     my $mm = MM->new(...);
21    
22     =head1 DESCRIPTION
23    
24     B<FOR INTERNAL USE ONLY>
25    
26     ExtUtils::MM is a subclass of ExtUtils::MakeMaker which automatically
27     chooses the appropriate OS specific subclass for you
28     (ie. ExtUils::MM_Unix, etc...).
29    
30     It also provides a convenient alias via the MM class (I didn't want
31     MakeMaker modules outside of ExtUtils/).
32    
33     This class might turn out to be a temporary solution, but MM won't go
34     away.
35    
36     =cut
37    
38     {
39     # Convenient alias.
40     package MM;
41     use vars qw(@ISA);
42     @ISA = qw(ExtUtils::MM);
43     sub DESTROY {}
44     }
45    
46     my %Is = ();
47     $Is{VMS} = 1 if $^O eq 'VMS';
48     $Is{OS2} = 1 if $^O eq 'os2';
49     $Is{MacOS} = 1 if $^O eq 'MacOS';
50     if( $^O eq 'MSWin32' ) {
51     Win32::IsWin95() ? $Is{Win95} = 1 : $Is{Win32} = 1;
52     }
53     $Is{UWIN} = 1 if $^O eq 'uwin';
54     $Is{Cygwin} = 1 if $^O eq 'cygwin';
55     $Is{NW5} = 1 if $Config{osname} eq 'NetWare'; # intentional
56     $Is{BeOS} = 1 if $^O =~ /beos/i; # XXX should this be that loose?
57     $Is{DOS} = 1 if $^O eq 'dos';
58    
59     $Is{Unix} = 1 if !keys %Is;
60    
61     if( $Is{NW5} ) {
62     $^O = 'NetWare';
63     delete $Is{Win32};
64     }
65    
66     _assert( keys %Is == 1 );
67     my($OS) = keys %Is;
68    
69    
70     my $class = "ExtUtils::MM_$OS";
71     eval "require $class" unless $INC{"ExtUtils/MM_$OS.pm"};
72     die $@ if $@;
73     unshift @ISA, $class;
74    
75    
76     sub _assert {
77     my $sanity = shift;
78     die sprintf "Assert failed at %s line %d\n", (caller)[1,2] unless $sanity;
79     return;
80     }