This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Time::HiRes: Do not create files in blib directories under core
[perl5.git] / lib / ExtUtils / MM_Win95.pm
CommitLineData
f6d6199c
MS
1package ExtUtils::MM_Win95;
2
3use vars qw($VERSION @ISA);
e0678a30 4$VERSION = 0.02;
f6d6199c
MS
5
6require ExtUtils::MM_Win32;
7@ISA = qw(ExtUtils::MM_Win32);
479d2113
MS
8
9use Config;\r
10my $DMAKE = 1 if $Config{'make'} =~ /^dmake/i;
11my $NMAKE = 1 if $Config{'make'} =~ /^nmake/i;
12
f6d6199c 13
f582e489
MS
14=head1 NAME
15
16ExtUtils::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
24This is a subclass of ExtUtils::MM_Win32 containing changes necessary
25to get MakeMaker playing nice with command.com and other Win9Xisms.
26
479d2113
MS
27=head2 Overriden methods
28
29Most of these make up for limitations in the Win9x command shell.
30Namely the lack of && and that a chdir is global, so you have to chdir
31back at the end.
32
33=over 4
34
35=item dist_test
36
37&& and chdir problem.
38
f582e489 39=cut
f6d6199c 40
e0678a30
MS
41sub dist_test {
42 my($self) = shift;
43 return q{
44disttest : distdir
415c4738
MB
45 cd $(DISTVNAME)
46 $(ABSPERLRUN) Makefile.PL
47 $(MAKE) $(PASTHRU)
48 $(MAKE) test $(PASTHRU)
49 cd ..
e0678a30
MS
50};
51}
52
479d2113
MS
53=item subdir_x
54
55&& and chdir problem.
56
57Also, dmake has an odd way of making a command series silent.
58
59=cut
60
61sub 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
69subdirs ::
70@[
71 cd %s
72 $(MAKE) all $(PASTHRU)
73 cd ..
74]
75EOT
76 }
77 else {
78 return sprintf <<'EOT', $subdir;
79
80subdirs ::
81 $(NOECHO)cd %s
82 $(NOECHO)$(MAKE) all $(PASTHRU)
83 $(NOECHO)cd ..
84EOT
85 }
86}
87
88=item xs_c
89
90The && problem.
91
92=cut
93
f6d6199c
MS
94sub xs_c {
95 my($self) = shift;
96 return '' unless $self->needs_linking();
97 '
98.xs.c:
479d2113 99 $(PERLRUN) $(XSUBPP) $(XSPROTOARG) $(XSUBPPARGS) $*.xs > $*.c
f6d6199c
MS
100 '
101}
102
479d2113
MS
103
104=item xs_cpp
105
106The && problem
107
108=cut
109
f6d6199c
MS
110sub xs_cpp {
111 my($self) = shift;
112 return '' unless $self->needs_linking();
113 '
114.xs.cpp:
479d2113 115 $(PERLRUN) $(XSUBPP) $(XSPROTOARG) $(XSUBPPARGS) $*.xs > $*.cpp
f6d6199c
MS
116 ';
117}
118
479d2113
MS
119=item xs_o
120
121The && problem.
122
123=cut
124
f6d6199c
MS
125sub xs_o {
126 my($self) = shift;
127 return '' unless $self->needs_linking();
128 '
129.xs$(OBJ_EXT):
479d2113 130 $(PERLRUN) $(XSUBPP) $(XSPROTOARG) $(XSUBPPARGS) $*.xs > $*.c
f6d6199c
MS
131 $(CCCMD) $(CCCDLFLAGS) -I$(PERL_INC) $(DEFINE) $*.c
132 ';
133}
4da32025 134
479d2113
MS
135=item clean_subdirs_target
136
137&& and chdir problem.
138
139=cut
140
141sub clean_subdirs_target {
142 my($self) = shift;
143
144 # No subdirectories, no cleaning.
145 return <<'NOOP_FRAG' unless @{$self->{DIR}};
146clean_subdirs :
147 $(NOECHO)$(NOOP)
148NOOP_FRAG
149
150
151 my $clean = "clean_subdirs :\n";
152
153 for my $dir (@{$self->{DIR}}) {
154 $clean .= sprintf <<'MAKE_FRAG', $dir;
155 cd %s
156 $(TEST_F) $(FIRST_MAKEFILE)
157 $(MAKE) clean
158 cd ..
159MAKE_FRAG
160 }
161
162 return $clean;
163}
164
165
166=item realclean_subdirs_target
167
168&& and chdir problem.
169
170=cut
171
172sub realclean_subdirs_target {
173 my $self = shift;
174
175 return <<'NOOP_FRAG' unless @{$self->{DIR}};
176realclean_subdirs :
177 $(NOECHO)$(NOOP)
178NOOP_FRAG
179
180 my $rclean = "realclean_subdirs :\n";
181
182 foreach my $dir (@{$self->{DIR}}){
183 $rclean .= sprintf <<'RCLEAN', $dir;
184 -cd %s
185 -$(PERLRUN) -e "exit unless -f shift; system q{$(MAKE) realclean}" $(FIRST_MAKEFILE)
186 -cd ..
187RCLEAN
188
189 }
190
191 return $rclean;
192}
193
194
195=item max_exec_len
196
197Setting to 2500, a value obtained by experimentation.
198
199=cut
200
201sub max_exec_len {
202 my $self = shift;
203
204 return $self->{_MAX_EXEC_LEN} ||= 2500;
205}
206
207=back
208
209
210=head1 AUTHOR
211
212Code originally inside MM_Win32. Original author unknown.
213
214Currently maintained by Michael G Schwern <schwern@pobox.com>.
215
216Send patches and ideas to <F<makemaker@perl.org>>.
217
218See http://www.makemaker.org.
219
220=cut
221
222
4da32025 2231;