# -*- perl -*-
use strict;
use ExtUtils::MakeMaker ();
use Config ();
use DBI::DBD ();
use lib "../lib";
require DBD::~~dbd_driver~~::Install::Config;
use vars qw($cfg);
$cfg = $DBD::~~dbd_driver~~::Install::Config::configuration;
if (!$cfg) {
die "Missing driver configuration";
}
my @pl_files = (%{$cfg->{'files'}});
if ($cfg->{'install_nodbd'}) {
push(@pl_files, (%{$cfg->{'files_nodbd'}}));
}
my %hash = %{$cfg->{'makemaker'}};
$hash{'NAME'} = 'DBD::' . $cfg->{'dbd_driver'};
$hash{'PL_FILES'} = { @pl_files };
$hash{'OBJECT'} = '$(O_FILES)';
$hash{'VERSION'} = $cfg->{'dbd_version'};
$hash{'clean'} = { 'FILES' => '*.xsi' };
$hash{'CAPI'} = 'TRUE'
if ($ExtUtils::MakeMaker::VERSION >= 5.43
&& $Config::Config{'archname'} =~ /-object\b/i);
ExtUtils::MakeMaker::WriteMakefile(%hash);
package MY;
sub libscan {
my($self, $path) = @_;
($path =~ /(Install\.pm|,v|~)$/) ? undef : $path;
}
sub processPL {
my($self) = shift;
my @output;
my $cfg = "../lib/DBD/~~dbd_driver~~/Install/Config.pm";
my($from, $to);
while (($from, $to) = each %{$self->{'PL_FILES'}}) {
$from = "../$from";
if ($to =~ /^~~dbd_driver~~\//) {
$to =~ s/^~~dbd_driver~~\///;
} else {
$to = "../$to";
}
push(@output, <<"PART");
pm_to_blib: $to
$to: $from
\$(PERL) -I\$(INST_ARCHLIB) -I\$(INST_LIB) -I\$(PERL_ARCHLIB) \\
-I\$(PERL_LIB) -I../lib -MExtUtils::PerlPP \\
-e "ppp('$from', '$to', '$cfg')"
PART
}
join "", @output;
}
sub postamble { "\n" . DBI::DBD::dbd_postamble(@_) };
sub const_loadlibs {
my $self = shift;
my $str = $self->SUPER::const_loadlibs(@_);
if (my $el = $::cfg->{'static_libs'}) {
$str =~ s/((?:EXTRALIBS|LDLOADLIBS)\s+=\s+)/$1$el /sg;
}
if (my $fl = $::cfg->{'final_libs'}) {
$str =~ s/((?:EXTRALIBS|LDLOADLIBS)\s+=\s+.*?)(\r?\n)/$1 $fl$2/sg;
}
$str;
}