forked from xslate/p5-Text-Xslate
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile.PL
128 lines (98 loc) · 3.24 KB
/
Makefile.PL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
# for developers: "make test_with_env" does all the extra tests
use strict;
use warnings;
BEGIN{
require Carp;
$INC{'Module/Install/ExtraTests.pm'} = 1;# M::I::ExtraTests considered harmful!
# make messages verbose to detect configure problems
$SIG{__DIE__} = \&Carp::confess;
$SIG{__WARN__} = \&Carp::cluck;
}
use inc::Module::Install;
use Module::Install::XSUtil 0.24;
use Module::Install::AuthorTests;
all_from 'lib/Text/Xslate.pm';
requires 'Any::Moose' => '0.13';
# XXX we don't handle Moose stuff here
requires 'Mouse' => '0.61';
requires 'MouseX::Getopt' => '0.2601';
requires 'parent' => '0.221';
requires 'Scalar::Util' => '1.23';
test_requires 'Test::More' => 0.88; # done_testing()
test_requires 'Test::Requires';
#test_requires 'Test::LeakTrace';
install_script 'xslate';
tests_recursive;
author_tests 'xt';
my $want_xs = want_xs();
if($want_xs) {
use_ppport 3.19;
cc_warnings;
cc_src_paths qw(xs);
}
auto_set_repository() if -d '.git';
system "$^X tool/opcode.pl xs/xslate_opcode.inc >xslate_ops.h";
system "$^X tool/opcode_for_pp.pl xs/xslate_opcode.inc > lib/Text/Xslate/PP/Const.pm";
postamble <<'M';
xs/Text-Xslate.xs :: xs/xslate_opcode.inc
# xslate_ops.h is automatically generated by xs/Text-Xslate.xs
xslate_ops.h :: xs/xslate_opcode.inc tool/opcode.pl
$(PERLRUNINST) tool/opcode.pl xs/xslate_opcode.inc >xslate_ops.h
lib/Text/Xslate/PP/Const.pm :: xs/xslate_opcode.inc tool/opcode_for_pp.pl
$(PERLRUNINST) tool/opcode_for_pp.pl xs/xslate_opcode.inc > lib/Text/Xslate/PP/Const.pm
M
sub test_with_env;
if(eval q{ use Moose 1.05 (); 1}) {
test_with_env test_moose => (
ANY_MOOSE => 'Moose',
);
}
if($want_xs) {
test_with_env test_pp => (
XSLATE => 'pp',
MOUSE_PUREPERL => 1,
);
test_with_env test_pp_opcode => (
XSLATE => 'pp=opcode',
);
test_with_env test_pp_booster => (
XSLATE => 'pp=booster',
);
postamble qq{test_dynamic :: test_pp\n\n};
}
sub test_with_env {
my($name, %env) = @_;
my $dir = '.testenv';
if(not -e $dir) {
mkdir $dir or die "Cannot mkdir '.testenv': $!";
}
clean_files($dir);
{
open my $out, '>', "$dir/$name.pl"
or die "Cannot open '$dir/$name.pl' for writing: $!";
print $out "# This file sets the env for 'make $name', \n";
print $out "# generated by $0 at ", scalar(localtime), ".\n";
print $out "# DO NOT EDIT THIS FILE DIRECTLY.\n";
print $out "\n";
while(my($name, $value) = each %env) {
printf $out '$ENV{q{%s}} = q{%s};'."\n", $name, $value;
}
}
# repeat testing for pure Perl mode
# see also ExtUtils::MM_Any::test_via_harness()
my $t = q{$(FULLPERLRUN) -MExtUtils::Command::MM -e}
.q{ "do q{%s}; test_harness($(TEST_VERBOSE), '$(INST_LIB)', '$(INST_ARCHLIB)')"}
.q{ $(TEST_FILES)};
postamble qq{$name :: pure_all\n}
. qq{\t} . q{$(NOECHO) $(ECHO) TESTING: } . $name . qq{\n}
. qq{\t} . sprintf($t, "$dir/$name.pl") . qq{\n\n}
. qq{testall :: $name\n\n};
return;
}
clean_files qw(
Text-Xslate-*
nytprof *.out
cover_db
.xslate_cache
);
WriteAll(check_nmake => 0);