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