X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FExtUtils%2FMakeMaker.pm;h=64d2335931ec085b959f99ba4a14636bca0704d8;hb=14fe70c2d1778829732c0549106909ab5b329425;hp=51477a4001807c348b6965bd4fe08f16f501299a;hpb=ffbaec2a8fe592331bb95ad6288802d907f301d7;p=p5sagit%2Fp5-mst-13.2.git diff --git a/lib/ExtUtils/MakeMaker.pm b/lib/ExtUtils/MakeMaker.pm index 51477a4..64d2335 100644 --- a/lib/ExtUtils/MakeMaker.pm +++ b/lib/ExtUtils/MakeMaker.pm @@ -2,7 +2,7 @@ BEGIN {require 5.002;} # MakeMaker 5.17 was the last MakeMaker that was compatib package ExtUtils::MakeMaker; -$VERSION = "5.46"; +$VERSION = "5.47"; $Version_OK = "5.17"; # Makefiles older than $Version_OK will die # (Will be checked from MakeMaker version 4.13 onwards) ($Revision = substr(q$Revision: 1.222 $, 10)) =~ s/\s+$//; @@ -150,8 +150,9 @@ sub prompt ($;$) { sub eval_in_subdirs { my($self) = @_; my($dir); - use Cwd 'cwd'; + use Cwd qw(cwd abs_path); my $pwd = cwd(); + local @INC = map eval {abs_path($_) if -e} || $_, @INC; foreach $dir (@{$self->{DIR}}){ my($abs) = $self->catdir($pwd,$dir); @@ -335,6 +336,7 @@ sub ExtUtils::MakeMaker::new { check_hints($self); + my %configure_att; # record &{$self->{CONFIGURE}} attributes my(%initial_att) = %$self; # record initial attributes my($prereq); @@ -343,7 +345,8 @@ sub ExtUtils::MakeMaker::new { eval $eval; if ($@) { - warn "Warning: prerequisite $prereq failed to load: $@"; + warn "Warning: prerequisite $prereq $self->{PREREQ_PM}->{$prereq} not found. We have " + . ($prereq->VERSION || 'unknown version'); } elsif ($prereq->VERSION < $self->{PREREQ_PM}->{$prereq} ){ warn "Warning: prerequisite $prereq $self->{PREREQ_PM}->{$prereq} not found"; @@ -374,7 +377,8 @@ sub ExtUtils::MakeMaker::new { if (defined $self->{CONFIGURE}) { if (ref $self->{CONFIGURE} eq 'CODE') { - $self = { %$self, %{&{$self->{CONFIGURE}}}}; + %configure_att = %{&{$self->{CONFIGURE}}}; + $self = { %$self, %configure_att }; } else { Carp::croak "Attribute 'CONFIGURE' to WriteMakefile() not a code reference\n"; } @@ -411,7 +415,7 @@ sub ExtUtils::MakeMaker::new { } if ($self->{PARENT}) { $self->{PARENT}->{CHILDREN}->{$newclass} = $self; - foreach my $opt (qw(CAPI POLLUTE)) { + foreach my $opt (qw(POLLUTE PERL_CORE)) { if (exists $self->{PARENT}->{$opt} and not exists $self->{$opt}) { @@ -420,6 +424,8 @@ sub ExtUtils::MakeMaker::new { } } } + my @fm = grep /^FIRST_MAKEFILE=/, @ARGV; + parse_args($self,@fm) if @fm; } else { parse_args($self,split(' ', $ENV{PERL_MM_OPT} || ''),@ARGV); } @@ -480,6 +486,27 @@ END $v =~ tr/\n/ /s; push @{$self->{RESULT}}, "# $key => $v"; } + undef %initial_att; # free memory + + if (defined $self->{CONFIGURE}) { + push @{$self->{RESULT}}, < 0) { + foreach $key (sort keys %configure_att){ + my($v) = neatvalue($configure_att{$key}); + $v =~ s/(CODE|HASH|ARRAY|SCALAR)\([\dxa-f]+\)/$1\(...\)/; + $v =~ tr/\n/ /s; + push @{$self->{RESULT}}, "# $key => $v"; + } + } + else + { + push @{$self->{RESULT}}, "# no values returned"; + } + undef %configure_att; # free memory + } # turn the SKIP array into a SKIPHASH hash my (%skip,$skip); @@ -520,14 +547,20 @@ END } sub WriteEmptyMakefile { - if (-f 'Makefile.old') { - chmod 0666, 'Makefile.old'; - unlink 'Makefile.old' or warn "unlink Makefile.old: $!"; - } - rename 'Makefile', 'Makefile.old' or warn "rename Makefile Makefile.old: $!" - if -f 'Makefile'; - open MF, '> Makefile' or die "open Makefile for write: $!"; - print MF <<'EOP'; + Carp::croak "WriteEmptyMakefile: Need even number of args" if @_ % 2; + local $SIG{__WARN__} = \&warnhandler; + + my %att = @_; + my $self = MM->new(\%att); + if (-f "$self->{MAKEFILE}.old") { + chmod 0666, "$self->{MAKEFILE}.old"; + unlink "$self->{MAKEFILE}.old" or warn "unlink $self->{MAKEFILE}.old: $!"; + } + rename $self->{MAKEFILE}, "$self->{MAKEFILE}.old" + or warn "rename $self->{MAKEFILE} $self->{MAKEFILE}.old: $!" + if -f $self->{MAKEFILE}; + open MF, '>', $self->{MAKEFILE} or die "open $self->{MAKEFILE} for write: $!"; + print MF <<'EOP'; all: clean: @@ -539,7 +572,7 @@ makemakerdflt: test: EOP - close MF or die "close Makefile for write: $!"; + close MF or die "close $self->{MAKEFILE} for write: $!"; } sub check_manifest { @@ -1202,17 +1235,6 @@ Ref to array of *.c file names. Initialised from a directory scan and the values portion of the XS attribute hash. This is not currently used by MakeMaker but may be handy in Makefile.PLs. -=item CAPI - -[This attribute is obsolete in Perl 5.6. PERL_OBJECT builds are C-compatible -by default.] - -Switch to force usage of the Perl C API even when compiling for PERL_OBJECT. - -Note that this attribute is passed through to any recursive build, -but if and only if the submodule's Makefile.PL itself makes no mention -of the 'CAPI' attribute. - =item CCFLAGS String that will be included in the compiler call command line between @@ -1647,12 +1669,15 @@ of memory allocations, etc. =item PERLRUN - $(PERL) -I$(PERL_ARCH) -I$(PERL_LIB) - +Use this instead of $(PERL) or $(FULLPERL) when you wish to run perl. +It will set up extra necessary flags for you. + =item PERLRUNINST - - $(PERL) -I$(INST_ARCH) -I$(INST_LIB) -I$(PERL_ARCH) -I$(PERL_LIB) - + +Use this instead of $(PERL) or $(FULLPERL) when you wish to run +perl to work with modules. It will add things like -I$(INST_ARCH) +and other necessary flags. + =item PERL_SRC Directory containing the Perl source code (use of this should be @@ -1772,8 +1797,9 @@ if you really need it. =item TEST_LIBS -The set of -I's necessary to run a "make test". - +The set of -I's necessary to run a "make test". Use as: +$(PERL) $(TEST_LIBS) -e '...' for example. + =item TYPEMAPS Ref to array of typemap file names. Use this when the typemaps are