1use 5.006;
2
3use strict;
4use warnings;
5
6use Module::Build;
7
8my $force_pp = grep { $_ eq '--pp' } @ARGV;
9
10my @pp = _make_pp_tests();
11
12my $builder = Module::Build->new(
13    module_name => 'DateTime',
14    license     => 'perl',
15    c_source    => 'c',
16    requires    => {
17        'DateTime::Locale'   => '0.41',
18        'DateTime::TimeZone' => '0.59',
19        'Params::Validate'   => '0.76',
20        'Scalar::Util'       => '0',
21        'Time::Local'        => '1.04',
22    },
23    build_requires => {
24        'Pod::Man'        => '1.14',
25        'Test::Exception' => '0',
26        'Test::More'      => '0.34',
27    },
28    add_to_cleanup => \@pp,
29    create_readme  => 1,
30    sign           => 1,
31    meta_merge     => {
32        resources => {
33            homepage   => 'http://datetime.perl.org/',
34            bugtracker => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=DateTime',
35            repository =>
36                'https://perl-date-time.svn.sourceforge.net/svnroot/perl-date-time',
37        },
38    },
39);
40
41if ($force_pp) {
42    $builder->build_elements(
43        [ grep { $_ ne 'xs' } @{ $builder->build_elements() } ] );
44}
45
46$builder->create_build_script();
47
48sub _make_pp_tests {
49    return unless -d '.svn';
50
51    require File::Slurp;
52    File::Slurp->import(qw( read_file write_file ));
53
54    opendir my $dh, 't'
55        or die "Cannot read t: $!";
56
57    my @pp;
58    foreach my $file ( grep {/^\d.+\.t$/} readdir $dh ) {
59        next if $file eq '26dt_leapsecond_pm.t';
60        next if $file eq '39no-so.t';
61        next if $file !~ /^\d/;
62
63        my $test = read_file("t/$file");
64        $test
65            = "#!/usr/bin/perl -w\n\nBEGIN { \$ENV{PERL_DATETIME_PP} = 1 }\n\n$test";
66
67        my $new_file = "t/pp_$file";
68        write_file( $new_file, $test );
69
70        push @pp, $new_file;
71    }
72
73    return @pp;
74}
75