]> git.donarmstrong.com Git - debhelper.git/blobdiff - Debian/Debhelper/Buildsystem/perl_build.pm
Pass CPPFLAGS and LDFLAGS to Makefile.PL and Build.PL
[debhelper.git] / Debian / Debhelper / Buildsystem / perl_build.pm
index 6365530422a19c33c6bda7924af28cabacd6889e..35a23d675b12bd620855206d38ee9eb768ad727a 100644 (file)
@@ -1,4 +1,4 @@
-# A buildsystem plugin for handling Perl Build based projects.
+# A build system class for handling Perl Build based projects.
 #
 # Copyright: © 2008-2009 Joey Hess
 #            © 2008-2009 Modestas Vainius
@@ -7,70 +7,71 @@
 package Debian::Debhelper::Buildsystem::perl_build;
 
 use strict;
-use Debian::Debhelper::Dh_Lib;
-use base 'Debian::Debhelper::Dh_Buildsystem';
+use Debian::Debhelper::Dh_Lib qw(compat);
+use base 'Debian::Debhelper::Buildsystem';
+use Config;
 
 sub DESCRIPTION {
-       "support for building Perl Build.PL based packages (in-source only)"
+       "Perl Module::Build (Build.PL)"
 }
 
 sub check_auto_buildable {
-       my ($self, $action) = @_;
+       my ($this, $step) = @_;
 
        # Handles everything
-       my $ret = -e "Build.PL";
-       # XXX JEH what happens here if they run dh_auto_build,
-       # forgetting dh_auto_configure? I think it will just
-       # think it's not auto buildable and, assuming no other buildsystems
-       # succeed, silently do nothing. Perhaps it would be better, then,
-       # to omit the test below. Then, it would try to run ./Build
-       # which doesn't exist, which should result in a semi-useful error.
-       # XXX MDX Agreed. But it would not be fully backwards compatible
-       #         (see comment in autotools.mk why). Your call.
-       if ($action ne "configure") {
-               $ret &&= -e "Build";
+       my $ret = -e $this->get_sourcepath("Build.PL");
+       if ($step ne "configure") {
+               $ret &&= -e $this->get_sourcepath("Build");
        }
-       return $ret;
+       return $ret ? 1 : 0;
 }
 
 sub do_perl {
-       my $self=shift;
-       $ENV{MODULEBUILDRC} = "/dev/null";
-       doit("perl", @_);
+       my $this=shift;
+       $this->doit_in_sourcedir("perl", @_);
 }
 
 sub new {
-       my $cls=shift;
-       my $self= $cls->SUPER::new(@_);
-       $self->enforce_in_source_building();
-       return $self;
+       my $class=shift;
+       my $this= $class->SUPER::new(@_);
+       $this->enforce_in_source_building();
+       return $this;
 }
 
 sub configure {
-       my $self=shift;
+       my $this=shift;
+       my @flags;
        $ENV{PERL_MM_USE_DEFAULT}=1;
-       $self->do_perl("Build.PL", "installdirs=vendor", @_);
+       if ($ENV{CFLAGS} && ! compat(8)) {
+               push @flags, "config=optimize=$ENV{CFLAGS} $ENV{CPPFLAGS}";
+       }
+       if ($ENV{LDFLAGS} && ! compat(8)) {
+               push @flags, "config=ld=$Config{ld} $ENV{LDFLAGS}";
+       }
+       $this->do_perl("Build.PL", "installdirs=vendor", @flags, @_);
 }
 
 sub build {
-       my $self=shift;
-       $self->do_perl("Build", @_);
+       my $this=shift;
+       $this->do_perl("Build", @_);
 }
 
 sub test {
-       my $self=shift;
-       $self->do_perl("Build", "test", @_);
+       my $this=shift;
+       $this->do_perl("Build", "test", @_);
 }
 
 sub install {
-       my $self=shift;
+       my $this=shift;
        my $destdir=shift;
-       $self->do_perl("Build", "install", "destdir=$destdir", "create_packlist=0", @_);
+       $this->do_perl("Build", "install", "destdir=$destdir", "create_packlist=0", @_);
 }
 
 sub clean {
-       my $self=shift;
-       $self->do_perl("Build", "--allow_mb_mismatch", 1, "distclean", @_);
+       my $this=shift;
+       if (-e $this->get_sourcepath("Build")) {
+               $this->do_perl("Build", "--allow_mb_mismatch", 1, "distclean", @_);
+       }
 }
 
-1;
+1