]> 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 26210152a201790efcc50e450525ce14efc6c34a..35a23d675b12bd620855206d38ee9eb768ad727a 100644 (file)
@@ -6,34 +6,10 @@
 
 package Debian::Debhelper::Buildsystem::perl_build;
 
-=head1 NAME
-
-B<perl_build> - Perl Module::Build (Build.PL)
-
-=head1 SYNOPSIS
-
-B<dh_auto_*> [B<--buildsystem>=I<perl_build>] ...
-
-=head1 DESCRIPTION
-
-Module::Build is a system for building, testing, and installing Perl modules.
-It does not require a C<make> on your system - most of the Module::Build code is
-pure-perl and written in a very cross-platform way. Its only prerequisites are
-modules that are included with perl 5.6.0. Typically, Module::Build build system
-can be identified by presence of the F<Build.PL> script in the source
-directory.
-
-=head1 DH_AUTO NOTES
-
-Out of source tree building is not supported. C<MODULEBUILDRC=/dev/null>
-environment variable is exported in each building step.
-
-=head1 BUILD PROCESS
-
-=cut
-
 use strict;
+use Debian::Debhelper::Dh_Lib qw(compat);
 use base 'Debian::Debhelper::Buildsystem';
+use Config;
 
 sub DESCRIPTION {
        "Perl Module::Build (Build.PL)"
@@ -47,12 +23,11 @@ sub check_auto_buildable {
        if ($step ne "configure") {
                $ret &&= -e $this->get_sourcepath("Build");
        }
-       return $ret;
+       return $ret ? 1 : 0;
 }
 
 sub do_perl {
        my $this=shift;
-       $ENV{MODULEBUILDRC} = "/dev/null";
        $this->doit_in_sourcedir("perl", @_);
 }
 
@@ -63,128 +38,40 @@ sub new {
        return $this;
 }
 
-=head2 Configure step
-
-=over 4
-
-=item I<Behaviour>
-
-Execute C<perl Build.PL> passing C<installdirs=vendor> parameter by default.
-Environment variable C<PERL_MM_USE_DEFAULT> is set before running the script.
-
-=item I<Auto-selection>
-
-If F<configure>, F<Makefile.PL>, F<setup.py> do not exist, but F<Build.PL>
-exists in the source directory.
-
-=back
-
-=cut
 sub configure {
        my $this=shift;
+       my @flags;
        $ENV{PERL_MM_USE_DEFAULT}=1;
-       $this->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, @_);
 }
 
-=head2 Build step
-
-=over 4
-
-=item I<Behaviour>
-
-Execute C<perl Build>.
-
-=item I<Auto-selection>
-
-If F<Makefile>, F<makefile>, F<GNUmakefile> (build directory) and F<setup.py>
-(source directory) do not exist, but F<Build.PL> and F<Build> files exist in
-the source directory.
-
-=back
-
-=cut
 sub build {
        my $this=shift;
        $this->do_perl("Build", @_);
 }
 
-=head2 Test step
-
-=over 4
-
-=item I<Behaviour>
-
-Execute C<perl Build test>.
-
-=item I<Auto-selection>
-
-If F<Makefile>, F<makefile>, F<GNUmakefile> (build directory) and F<setup.py>
-(source directory) do not exist, but F<Build.PL> and F<Build> files exist in
-the source directory.
-
-=back
-
-=cut
 sub test {
        my $this=shift;
        $this->do_perl("Build", "test", @_);
 }
 
-=head2 Install step
-
-=over 4
-
-=item I<Behaviour>
-
-Execute C<perl Build install destdir=$destdir create_packlist=0>. $destdir is
-the path to the temporary installation directory (see L<dh_auto_install(1)>).
-
-=item I<Auto-selection>
-
-If F<Makefile>, F<makefile>, F<GNUmakefile> (build directory) and F<setup.py>
-(source directory) do not exist, but F<Build.PL> and F<Build> files exist in
-the source directory.
-
-=back
-
-=cut
 sub install {
        my $this=shift;
        my $destdir=shift;
        $this->do_perl("Build", "install", "destdir=$destdir", "create_packlist=0", @_);
 }
 
-=head2 Clean step
-
-=over 4
-
-=item I<Behaviour>
-
-Execute C<perl Build --allow_mb_mismatch 1 distclean>.
-
-=item I<Auto-selection>
-
-If F<Makefile>, F<makefile>, F<GNUmakefile> (build directory) and F<setup.py>
-(source directory) do not exist, but F<Build.PL> and F<Build> files exist in
-the source directory.
-
-=back
-
-=cut
 sub clean {
        my $this=shift;
-       $this->do_perl("Build", "--allow_mb_mismatch", 1, "distclean", @_);
+       if (-e $this->get_sourcepath("Build")) {
+               $this->do_perl("Build", "--allow_mb_mismatch", 1, "distclean", @_);
+       }
 }
 
-=head1 SEE ALSO
-
-L<dh_auto(7)>
-
-=head1 AUTHORS
-
- Joey Hess <joeyh@debian.org>
- Modestas Vainius <modestas@vainius.eu>
-
-=cut
-
-1;
+1