ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/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

# Content
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;