diff options
-rw-r--r-- | lib/ExtUtils/MM_Unix.pm | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/lib/ExtUtils/MM_Unix.pm b/lib/ExtUtils/MM_Unix.pm index 88240764d4..9d14e973cb 100644 --- a/lib/ExtUtils/MM_Unix.pm +++ b/lib/ExtUtils/MM_Unix.pm @@ -425,7 +425,19 @@ clean :: '); # clean subdirectories first for $dir (@{$self->{DIR}}) { - push @m, "\t-cd $dir && \$(TEST_F) $self->{MAKEFILE} && \$(MAKE) clean\n"; + if ($Is_Win32 && Win32::IsWin95()) { + push @m, <<EOT; + cd $dir + \$(TEST_F) $self->{MAKEFILE} + \$(MAKE) clean + cd .. +EOT + } + else { + push @m, <<EOT; + -cd $dir && \$(TEST_F) $self->{MAKEFILE} && \$(MAKE) clean +EOT + } } my(@otherfiles) = values %{$self->{XS}}; # .c files from *.xs files @@ -3071,7 +3083,9 @@ sub realclean { realclean purge :: clean '); # realclean subdirectories first (already cleaned) - my $sub = "\t-cd %s && \$(TEST_F) %s && \$(MAKE) %s realclean\n"; + my $sub = ($Is_Win32 && Win32::IsWin95()) ? + "\tcd %s\n\t\$(TEST_F) %s\n\t\$(MAKE) %s realclean\n\tcd ..\n" : + "\t-cd %s && \$(TEST_F) %s && \$(MAKE) %s realclean\n"; foreach(@{$self->{DIR}}){ push(@m, sprintf($sub,$_,"$self->{MAKEFILE}.old","-f $self->{MAKEFILE}.old")); push(@m, sprintf($sub,$_,"$self->{MAKEFILE}",'')); @@ -3215,12 +3229,22 @@ Helper subroutine for subdirs sub subdir_x { my($self, $subdir) = @_; my(@m); - qq{ + if ($Is_Win32 && Win32::IsWin95()) { + return <<EOT; +subdirs :: + cd $subdir + \$(MAKE) all \$(PASTHRU) + cd .. +EOT + } + else { + return <<EOT; subdirs :: $self->{NOECHO}cd $subdir && \$(MAKE) all \$(PASTHRU) -}; +EOT + } } =item subdirs (o) |