1 #line 1 "inc/Module/Install/Makefile.pm - /Users/ingy/local/lib/perl5/site_perl/5.8.6/Module/Install/Makefile.pm"
2 package Module::Install::Makefile;
3 use Module::Install::Base; @ISA = qw(Module::Install::Base);
10 use ExtUtils::MakeMaker ();
12 sub Makefile { $_[0] }
16 goto &ExtUtils::MakeMaker::prompt;
21 my $args = ($self->{makemaker_args} ||= {});
22 %$args = ( %$args, @_ ) if @_;
28 my $subdirs = $self->makemaker_args->{DIR} ||= [];
30 push @$subdirs, $subdir;
36 my $clean = $self->makemaker_args->{clean} ||= {};
39 FILES => join(" ", grep length, $clean->{FILES}, @_),
45 my $libs = ref $_[0] ? shift : [shift];
46 $self->makemaker_args( LIBS => $libs );
51 $self->makemaker_args( INC => shift );
56 die "&Makefile->write() takes no arguments\n" if @_;
58 my $args = $self->makemaker_args;
60 $args->{DISTNAME} = $self->name;
61 $args->{NAME} = $self->module_name || $self->name || $self->determine_NAME($args);
62 $args->{VERSION} = $self->version || $self->determine_VERSION($args);
63 $args->{NAME} =~ s/-/::/g;
65 $args->{test} = {TESTS => $self->tests} if $self->tests;
68 $args->{ABSTRACT} = $self->abstract;
69 $args->{AUTHOR} = $self->author;
71 if ( eval($ExtUtils::MakeMaker::VERSION) >= 6.10 ) {
74 if ( eval($ExtUtils::MakeMaker::VERSION) > 6.17 ) {
75 $args->{SIGN} = 1 if $self->sign;
77 delete $args->{SIGN} unless $self->is_admin;
79 # merge both kinds of requires into prereq_pm
80 my $prereq = ($args->{PREREQ_PM} ||= {});
81 %$prereq = ( %$prereq, map { @$_ } map { @$_ } grep $_,
82 ($self->build_requires, $self->requires) );
84 # merge both kinds of requires into prereq_pm
85 my $subdirs = ($args->{DIR} ||= []);
87 foreach my $bundle (@{ $self->bundles }) {
88 my ($file, $dir) = @$bundle;
89 push @$subdirs, $dir if -d $dir;
90 delete $prereq->{$file};
94 if (my $perl_version = $self->perl_version) {
95 eval "use $perl_version; 1"
96 or die "ERROR: perl: Version $] is installed, ".
97 "but we need version >= $perl_version";
100 my %args = map {($_ => $args->{$_})} grep {defined($args->{$_})} keys %$args;
102 if ($self->admin->preop) {
103 $args{dist} = $self->admin->preop;
106 ExtUtils::MakeMaker::WriteMakefile(%args);
108 $self->fix_up_makefile();
111 sub fix_up_makefile {
113 my $top_class = ref($self->_top) || '';
114 my $top_version = $self->_top->VERSION || '';
116 my $preamble = $self->preamble
117 ? "# Preamble by $top_class $top_version\n" . $self->preamble
119 my $postamble = "# Postamble by $top_class $top_version\n" .
120 ($self->postamble || '');
123 open MAKEFILE, '< Makefile' or die $!;
124 my $makefile = do { local $/; <MAKEFILE> };
127 $makefile =~ s/\b(test_harness\(\$\(TEST_VERBOSE\), )/$1'inc', /;
128 $makefile =~ s/( -I\$\(INST_ARCHLIB\))/ -Iinc$1/g;
129 $makefile =~ s/( "-I\$\(INST_LIB\)")/ "-Iinc"$1/g;
131 $makefile =~ s/^(FULLPERL = .*)/$1 -Iinc/m;
132 $makefile =~ s/^(PERL = .*)/$1 -Iinc/m;
134 open MAKEFILE, '> Makefile' or die $!;
135 print MAKEFILE "$preamble$makefile$postamble";
140 my ($self, $text) = @_;
141 $self->{preamble} = $text . $self->{preamble} if defined $text;
146 my ($self, $text) = @_;
148 $self->{postamble} ||= $self->admin->postamble;
149 $self->{postamble} .= $text if defined $text;