############################################################################### # # $Id: Makefile.PL,v 1.39 2006/06/30 07:52:26 rjray Exp $ # # This is the MakeMaker skeleton for the RPC-XML extension. Besides the usual # tricks, this has to add rules to make the *.xpl files from *.code in the # methods/ subdir, as well as get them into a place where they get installed # correctly. # ############################################################################### use ExtUtils::MakeMaker; use File::Spec; use File::Find; use Cwd 'cwd'; eval "require LWP;"; if ($LWP::VERSION and $LWP::VERSION < 5.801) { print STDERR <catfile(qw(etc make_method))); $CLEAN .= File::Spec->catfile(qw(methods *.xpl)); @PM_FILES = (); find(sub { push(@PM_FILES, $File::Find::name) if (-f $_ and /\.pm$/) }, 'lib'); # Exclude Apache2 stuff until it's ready for deployment @PM_FILES = grep(! /Apache2/, @PM_FILES); %PM_FILES = map { ($temp = $_) =~ s|^lib|\$\(INST_LIB\)|; $_ => $temp } @PM_FILES; # Handle the method code in "methods" specially: find(sub { if (-f $_ and /\.base$/) { s/\.base$//; $PM_FILES{File::Spec->catfile('methods', "$_.xpl")} = File::Spec->catfile('$(INST_LIB)', 'RPC', 'XML', "$_.xpl"); } }, 'methods'); # Anything stuck under "lib" is more generic find(sub { if (-f $_ and /\.base$/) { $File::Find::name =~ s/base$/xpl/; ($tmp = $File::Find::name) =~ s|^lib|\$(INST_LIB)|; $PM_FILES{$File::Find::name} = $tmp; $CLEAN .= " $File::Find::name"; } }, 'lib'); WriteMakefile( NAME => 'RPC::XML', VERSION => '0.60', AUTHOR => 'Randy J. Ray', ABSTRACT => 'Data, client and server classes for XML-RPC', EXE_FILES => \@scripts, PM => \%PM_FILES, PREREQ_PM => { XML::Parser => 2.31, File::Spec => 0.8, Test::More => 0, LWP => 5.801 }, dist => { COMPRESS => 'gzip -9f' }, clean => { FILES => $CLEAN }, LICENSE => 'perl', SIGN => 'here, please', ); sub MY::post_initialize { my $self = shift; my @text; my $makemeth = File::Spec->catfile(qw(etc make_method)); push(@text, '.SUFFIXES: .xpl .base', '', '.base.xpl:', "\t\$(PERL) $makemeth --base=\$*", ''); join("\n", @text); } sub MY::postamble { my $self = shift; my @text; my $makemeth = File::Spec->catfile(qw(etc make_method)); # Create the dependancy rules for the methods/XPL files for (sort grep(/\.xpl$/, keys %::PM_FILES)) { s/\.xpl$//; push(@text, "$_.xpl: $_.base $_.help $_.code $makemeth"); } join("\n", @text); }