Load XML-Feed-0.08 into trunk.
[catagits/XML-Feed.git] / inc / Module / Install / Makefile.pm
CommitLineData
ecac864a 1#line 1 "inc/Module/Install/Makefile.pm - /Library/Perl/5.8.6/Module/Install/Makefile.pm"
0d5e38d1 2package Module::Install::Makefile;
0d5e38d1 3
4use strict 'vars';
ecac864a 5use Module::Install::Base;
0d5e38d1 6use ExtUtils::MakeMaker ();
7
ecac864a 8use vars qw{$VERSION @ISA};
9BEGIN {
10 $VERSION = '0.57';
11 @ISA = qw{Module::Install::Base};
12}
13
0d5e38d1 14sub Makefile { $_[0] }
15
ecac864a 16sub prompt {
0d5e38d1 17 shift;
18 goto &ExtUtils::MakeMaker::prompt;
19}
20
21sub makemaker_args {
22 my $self = shift;
23 my $args = ($self->{makemaker_args} ||= {});
24 %$args = ( %$args, @_ ) if @_;
25 $args;
26}
27
ecac864a 28# For mm args that take multiple space-seperated args,
29# append an argument to the current list.
30sub makemaker_append {
0d5e38d1 31 my $self = shift;
ecac864a 32 my $name = shift;
33 my $args = $self->makemaker_args;
34 $args->{name} = defined $args->{$name}
35 ? join( ' ', $args->{name}, @_ )
36 : join( ' ', @_ );
37}
38
39sub build_subdirs {
40 my $self = shift;
41 my $subdirs = $self->makemaker_args->{DIR} ||= [];
42 for my $subdir (@_) {
43 push @$subdirs, $subdir;
44 }
45}
46
47sub clean_files {
48 my $self = shift;
0d5e38d1 49 my $clean = $self->makemaker_args->{clean} ||= {};
50 %$clean = (
51 %$clean,
ecac864a 52 FILES => join(' ', grep length, $clean->{FILES}, @_),
0d5e38d1 53 );
54}
55
56sub libs {
57 my $self = shift;
ecac864a 58 my $libs = ref $_[0] ? shift : [ shift ];
0d5e38d1 59 $self->makemaker_args( LIBS => $libs );
60}
61
62sub inc {
63 my $self = shift;
64 $self->makemaker_args( INC => shift );
65}
66
67sub write {
68 my $self = shift;
69 die "&Makefile->write() takes no arguments\n" if @_;
70
71 my $args = $self->makemaker_args;
72
73 $args->{DISTNAME} = $self->name;
74 $args->{NAME} = $self->module_name || $self->name || $self->determine_NAME($args);
75 $args->{VERSION} = $self->version || $self->determine_VERSION($args);
76 $args->{NAME} =~ s/-/::/g;
77
ecac864a 78 $args->{test} = {TESTS => $self->tests} if $self->tests;
79
0d5e38d1 80 if ($] >= 5.005) {
ecac864a 81 $args->{ABSTRACT} = $self->abstract;
82 $args->{AUTHOR} = $self->author;
0d5e38d1 83 }
84 if ( eval($ExtUtils::MakeMaker::VERSION) >= 6.10 ) {
85 $args->{NO_META} = 1;
86 }
87 if ( eval($ExtUtils::MakeMaker::VERSION) > 6.17 ) {
ecac864a 88 $args->{SIGN} = 1 if $self->sign;
0d5e38d1 89 }
90 delete $args->{SIGN} unless $self->is_admin;
91
92 # merge both kinds of requires into prereq_pm
93 my $prereq = ($args->{PREREQ_PM} ||= {});
94 %$prereq = ( %$prereq, map { @$_ } map { @$_ } grep $_,
95 ($self->build_requires, $self->requires) );
96
97 # merge both kinds of requires into prereq_pm
ecac864a 98 my $subdirs = ($args->{DIR} ||= []);
0d5e38d1 99 if ($self->bundles) {
ecac864a 100 foreach my $bundle (@{ $self->bundles }) {
101 my ($file, $dir) = @$bundle;
102 push @$subdirs, $dir if -d $dir;
103 delete $prereq->{$file};
104 }
0d5e38d1 105 }
106
107 if (my $perl_version = $self->perl_version) {
108 eval "use $perl_version; 1"
109 or die "ERROR: perl: Version $] is installed, ".
110 "but we need version >= $perl_version";
111 }
112
113 my %args = map {($_ => $args->{$_})} grep {defined($args->{$_})} keys %$args;
114
115 if ($self->admin->preop) {
116 $args{dist} = $self->admin->preop;
117 }
118
119 ExtUtils::MakeMaker::WriteMakefile(%args);
120
121 $self->fix_up_makefile();
122}
123
124sub fix_up_makefile {
125 my $self = shift;
126 my $top_class = ref($self->_top) || '';
127 my $top_version = $self->_top->VERSION || '';
128
129 my $preamble = $self->preamble
130 ? "# Preamble by $top_class $top_version\n" . $self->preamble
131 : '';
132 my $postamble = "# Postamble by $top_class $top_version\n" .
133 ($self->postamble || '');
134
ecac864a 135 local *MAKEFILE;
0d5e38d1 136 open MAKEFILE, '< Makefile' or die $!;
137 my $makefile = do { local $/; <MAKEFILE> };
ecac864a 138 close MAKEFILE or die $!;
0d5e38d1 139
140 $makefile =~ s/\b(test_harness\(\$\(TEST_VERBOSE\), )/$1'inc', /;
141 $makefile =~ s/( -I\$\(INST_ARCHLIB\))/ -Iinc$1/g;
142 $makefile =~ s/( "-I\$\(INST_LIB\)")/ "-Iinc"$1/g;
143
144 $makefile =~ s/^(FULLPERL = .*)/$1 -Iinc/m;
145 $makefile =~ s/^(PERL = .*)/$1 -Iinc/m;
146
147 open MAKEFILE, '> Makefile' or die $!;
ecac864a 148 print MAKEFILE "$preamble$makefile$postamble" or die $!;
149 close MAKEFILE or die $!;
150
151 1;
0d5e38d1 152}
153
154sub preamble {
155 my ($self, $text) = @_;
156 $self->{preamble} = $text . $self->{preamble} if defined $text;
157 $self->{preamble};
158}
159
160sub postamble {
161 my ($self, $text) = @_;
0d5e38d1 162 $self->{postamble} ||= $self->admin->postamble;
163 $self->{postamble} .= $text if defined $text;
164 $self->{postamble}
165}
166
1671;
168
169__END__
170
ecac864a 171#line 295