1use ExtUtils::MakeMaker;
2
3my $mm_ver = $ExtUtils::MakeMaker::VERSION;
4if ($mm_ver =~ /_/) { # dev version
5    $mm_ver = eval $mm_ver;
6    die $@ if $@;
7}
8
9my @REQUIRES = (
10    'strict'    => 0,
11    'warnings'  => 0,
12    'Exporter'  => 0,
13    'vars'      => 0,
14    'Carp'      => 0,
15);
16
17my @TEST_REQUIRES = (
18    'Test::More'    => 0.88,
19);
20
21push(@REQUIRES, @TEST_REQUIRES) if $mm_ver < 6.64;
22
23warn "Carp::Assert likes to have B::Deparse but can't find it.\n" unless
24  eval { require B::Deparse };
25
26WriteMakefile(
27    NAME        => 'Carp::Assert',
28    VERSION_FROM => 'lib/Carp/Assert.pm', # finds $VERSION
29    PREREQ_PM   => { @REQUIRES },
30    'dist'      => {COMPRESS => 'gzip -9',
31                    SUFFIX   => '.gz',
32                    DIST_DEFAULT => 'all tardist',
33                   },
34
35    ($mm_ver >= 6.64
36        ? (TEST_REQUIRES => { @TEST_REQUIRES })
37        : ()
38    ),
39
40    ($mm_ver >= 6.31 ? (LICENSE => 'perl') : ()),
41
42    ($mm_ver >= 6.48
43        ? (MIN_PERL_VERSION => 5.006)
44        : ()
45    ),
46
47    ($mm_ver <= 6.45 ? () : (META_MERGE => {
48        'meta-spec' => { version => 2 },
49        resources => {
50            repository  => {
51                type => 'git',
52                web  => 'https://github.com/schwern/Carp-Assert',
53                url  => 'git://github.com/schwern/Carp-Assert.git',
54            },
55        },
56    })),
57
58);
59
60{
61    package MY;
62    sub top_targets {
63        my($self) = @_;
64
65        return $self->SUPER::top_targets(@_) unless
66          eval { require Pod::Tests; 1 };
67
68        my $out = "POD2TEST_EXE = pod2test\n";
69
70        $out .= $self->SUPER::top_targets(@_);
71        $out =~ s/^(pure_all\b.*)/$1 testifypods/m;
72
73        foreach my $pod (keys %{$self->{MAN1PODS}},
74                         keys %{$self->{MAN3PODS}})
75        {
76            (my $test = $pod) =~ s/\.(pm|pod)$//;
77            $test =~ s/^lib\W//;
78            $test =~ s/\W/-/;
79            $test = "t/embedded-$test.t";
80
81            $pod2test{$pod} = $test;
82        }
83
84        $out .= <<"END_OF_MAKE";
85
86testifypods : @{[ join " ", values %pod2test ]}
87\t\$(NOECHO) \$(NOOP)
88
89END_OF_MAKE
90
91        for my $pod (keys %pod2test) {
92            my $test = $pod2test{$pod};
93
94            $out .= <<"END_OF_MAKE";
95$test : $pod
96\t\$(NOECHO) \$(ECHO) Testifying $pod to $test
97\t\$(NOECHO) \$(POD2TEST_EXE) $pod $test
98
99END_OF_MAKE
100        }
101
102        return $out;
103    }
104
105
106    sub test_via_harness {
107        my($self, $orig_perl, $tests) = @_;
108
109        my @perls = ($orig_perl);
110        push @perls, qw(bleadperl
111                        perl5.6.1
112                        perl5.005_03
113                        perl5.004_05
114                        perl5.004_04
115                        perl5.004
116                       )
117          if $ENV{PERL_TEST_ALL};
118
119        my $out;
120        foreach my $perl (@perls) {
121            $out .= $self->SUPER::test_via_harness($perl, $tests);
122        }
123
124        return $out;
125    }
126}
127