ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/cvsroot/staticperl/perl/lib/ExtUtils/MM_Win95.pm
Revision: 1.1
Committed: Thu Jun 30 14:27:11 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_Win95;
2    
3     use vars qw($VERSION @ISA);
4     $VERSION = 0.03_01;
5    
6     require ExtUtils::MM_Win32;
7     @ISA = qw(ExtUtils::MM_Win32);
8    
9     use Config;
10     my $DMAKE = $Config{'make'} =~ /^dmake/i;
11     my $NMAKE = $Config{'make'} =~ /^nmake/i;
12    
13    
14     =head1 NAME
15    
16     ExtUtils::MM_Win95 - method to customize MakeMaker for Win9X
17    
18     =head1 SYNOPSIS
19    
20     You should not be using this module directly.
21    
22     =head1 DESCRIPTION
23    
24     This is a subclass of ExtUtils::MM_Win32 containing changes necessary
25     to get MakeMaker playing nice with command.com and other Win9Xisms.
26    
27     =head2 Overriden methods
28    
29     Most of these make up for limitations in the Win9x command shell.
30     Namely the lack of && and that a chdir is global, so you have to chdir
31     back at the end.
32    
33     =over 4
34    
35     =item dist_test
36    
37     && and chdir problem.
38    
39     =cut
40    
41     sub dist_test {
42     my($self) = shift;
43     return q{
44     disttest : distdir
45     cd $(DISTVNAME)
46     $(ABSPERLRUN) Makefile.PL
47     $(MAKE) $(PASTHRU)
48     $(MAKE) test $(PASTHRU)
49     cd ..
50     };
51     }
52    
53     =item subdir_x
54    
55     && and chdir problem.
56    
57     Also, dmake has an odd way of making a command series silent.
58    
59     =cut
60    
61     sub subdir_x {
62     my($self, $subdir) = @_;
63    
64     # Win-9x has nasty problem in command.com that can't cope with
65     # &&. Also, Dmake has an odd way of making a commandseries silent:
66     if ($DMAKE) {
67     return sprintf <<'EOT', $subdir;
68    
69     subdirs ::
70     @[
71     cd %s
72     $(MAKE) all $(PASTHRU)
73     cd ..
74     ]
75     EOT
76     }
77     else {
78     return sprintf <<'EOT', $subdir;
79    
80     subdirs ::
81     $(NOECHO)cd %s
82     $(NOECHO)$(MAKE) all $(PASTHRU)
83     $(NOECHO)cd ..
84     EOT
85     }
86     }
87    
88     =item xs_c
89    
90     The && problem.
91    
92     =cut
93    
94     sub xs_c {
95     my($self) = shift;
96     return '' unless $self->needs_linking();
97     '
98     .xs.c:
99     $(PERLRUN) $(XSUBPP) $(XSPROTOARG) $(XSUBPPARGS) $*.xs > $*.c
100     '
101     }
102    
103    
104     =item xs_cpp
105    
106     The && problem
107    
108     =cut
109    
110     sub xs_cpp {
111     my($self) = shift;
112     return '' unless $self->needs_linking();
113     '
114     .xs.cpp:
115     $(PERLRUN) $(XSUBPP) $(XSPROTOARG) $(XSUBPPARGS) $*.xs > $*.cpp
116     ';
117     }
118    
119     =item xs_o
120    
121     The && problem.
122    
123     =cut
124    
125     sub xs_o {
126     my($self) = shift;
127     return '' unless $self->needs_linking();
128     # Having to choose between .xs -> .c -> .o and .xs -> .o confuses dmake.
129     return '' if $DMAKE;
130     '
131     .xs$(OBJ_EXT):
132     $(PERLRUN) $(XSUBPP) $(XSPROTOARG) $(XSUBPPARGS) $*.xs > $*.c
133     $(CCCMD) $(CCCDLFLAGS) -I$(PERL_INC) $(DEFINE) $*.c
134     ';
135     }
136    
137     =item clean_subdirs_target
138    
139     && and chdir problem.
140    
141     =cut
142    
143     sub clean_subdirs_target {
144     my($self) = shift;
145    
146     # No subdirectories, no cleaning.
147     return <<'NOOP_FRAG' unless @{$self->{DIR}};
148     clean_subdirs :
149     $(NOECHO)$(NOOP)
150     NOOP_FRAG
151    
152    
153     my $clean = "clean_subdirs :\n";
154    
155     for my $dir (@{$self->{DIR}}) {
156     $clean .= sprintf <<'MAKE_FRAG', $dir;
157     cd %s
158     $(TEST_F) $(FIRST_MAKEFILE)
159     $(MAKE) clean
160     cd ..
161     MAKE_FRAG
162     }
163    
164     return $clean;
165     }
166    
167    
168     =item realclean_subdirs_target
169    
170     && and chdir problem.
171    
172     =cut
173    
174     sub realclean_subdirs_target {
175     my $self = shift;
176    
177     return <<'NOOP_FRAG' unless @{$self->{DIR}};
178     realclean_subdirs :
179     $(NOECHO)$(NOOP)
180     NOOP_FRAG
181    
182     my $rclean = "realclean_subdirs :\n";
183    
184     foreach my $dir (@{$self->{DIR}}){
185     $rclean .= sprintf <<'RCLEAN', $dir;
186     -cd %s
187     -$(PERLRUN) -e "exit unless -f shift; system q{$(MAKE) realclean}" $(FIRST_MAKEFILE)
188     -cd ..
189     RCLEAN
190    
191     }
192    
193     return $rclean;
194     }
195    
196    
197     =item os_flavor
198    
199     Win95 and Win98 and WinME are collectively Win9x and Win32
200    
201     =cut
202    
203     sub os_flavor {
204     my $self = shift;
205     return ($self->SUPER::os_flavor, 'Win9x');
206     }
207    
208    
209     =back
210    
211    
212     =head1 AUTHOR
213    
214     Code originally inside MM_Win32. Original author unknown.
215    
216     Currently maintained by Michael G Schwern <schwern@pobox.com>.
217    
218     Send patches and ideas to <F<makemaker@perl.org>>.
219    
220     See http://www.makemaker.org.
221    
222     =cut
223    
224    
225     1;