-
Notifications
You must be signed in to change notification settings - Fork 1
/
Makefile.PL
157 lines (121 loc) · 4.13 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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
# DO NOT EDIT! This file is written by perl_setup_dist.
# If needed, you can add content at the end of the file.
## no critic (Policy)
use 5.026;
use strict;
use warnings;
use ExtUtils::MakeMaker::CPANfile;
WriteMakefile(
NAME => 'Markdown::Perl',
DISTNAME => 'Markdown-Perl',
AUTHOR => q{Mathias Kende <[email protected]>},
VERSION_FROM => 'lib/Markdown/Perl.pm',
ABSTRACT => q{Very configurable Markdown processor written in pure Perl, supporting the CommonMark spec and many extensions},
LICENSE => 'mit',
EXE_FILES => ['script/pmarkdown',],
MIN_PERL_VERSION => '5.026',
MAN3PODS => {},
# Directories in which we look for Makefile.PL. In general could be omitted but is needed in case there
# is a file named Makefile.PL in a sub-directory. Should be customized if such a file needs to be
# processed by ExtUtils.
DIR => [],
NO_MYMETA => 1,
META_MERGE => {
'meta-spec' => { version => 2 },
# Goes with NO_MYMETA (which would provide the dynamic config).
dynamic_config => 0,
no_index => {
directory => [ 'local', 'vendor', 't' ],
},
resources => {
repository => {
type => 'git',
url => '[email protected]:mkende/pmarkdown.git',
web => 'https://github.com/mkende/pmarkdown',
},
bugtracker => {
web => 'https://github.com/mkende/pmarkdown/issues',
},
},
},
dist => { COMPRESS => 'gzip -9f', SUFFIX => '.gz', },
clean => { FILES => 'Markdown-Perl-*' },
);
# These platforms (usually) have GNU Make by default so the syntax that we use
# for our custom targets below will work (especially to export environment
# variables).
# On other platforms, we disable the custom parts of our Makefile generation, as
# the generated Makefile would otherwise not parse correctly.
sub supported_platform {
return $^O =~ m/^(?:linux|cygwin|MSWin32)$/;
}
sub MY::postamble {
my ($self) = @_;
my @postamble;
push @postamble, ::postamble() if *::postamble{CODE};
push @postamble, <<"MAKE_FRAGMENT" if supported_platform();
ALL_PM := \$(shell find lib -name "*.pm")
ALL_EXE := script/pmarkdown
.PHONY: distupload cover critic rawcritic tidy spelling alltest clean clean_coverdb pod2html exe
distupload: distcheck disttest
\t\$(MAKE) tardist
\tcpan-upload --directory Dist-Setup \$(DISTVNAME).tar\$(SUFFIX)
cover:
\tcover -test
critic: export EXTENDED_TESTING = 1
critic: all
\tperl -Ilib t/001-perlcritic.t 2>&1 | less
rawcritic:
\tperlcritic lib script
tidy:
\tperltidy -b -bext='/' \$(ALL_PM) \$(ALL_EXE)
spelling: export EXTENDED_TESTING = 1
spelling:
\t\$(PERLRUN) t/001-spelling.t --interactive
test: export HARNESS_OPTIONS = j8:c
alltest: export EXTENDED_TESTING = 1
alltest: test
clean:: clean_coverdb clean_build clean_pod2html
clean_coverdb:
\trm -fr cover_db
clean_build:
\trm -fr build
clean_pod2html:
\trm -fr pod2html
PM_HTML := \$(patsubst %.pm, pod2html/%.html, \$(ALL_PM))
EXE_HTML := \$(patsubst %, pod2html/%.html, \$(ALL_EXE))
pod2html: \$(PM_HTML) \$(EXE_HTML)
\$(PM_HTML): pod2html/%.html: %.pm
\tmkdir -p \$(shell dirname \$@)
\tpod2html --infile \$< --outfile \$@
\$(EXE_HTML): pod2html/%.html: %
\tmkdir -p \$(shell dirname \$@)
\tpod2html --infile \$< --outfile \$@
EXE_EXE := \$(patsubst %, build/%\$(EXE_EXT), \$(ALL_EXE))
exe: export PAR_VERBATIM=1
exe: build \$(EXE_EXE)
build:
\tmkdir -p build
\$(EXE_EXE): build/%\$(EXE_EXT): %
\tpp -o \$@ -cd build/pp.cache -c -I lib -F "PodStrip=.*\\bMarkdown/Perl\\b(*COMMIT)(*FAIL)|.*" \$<
MAKE_FRAGMENT
return join "\n", @postamble;
}
# You can add below this template a `postamble` sub that returns more content to
# add to the generated Makefile.
# End of the template. You can add custom content below this line.
sub postamble {
return unless supported_platform();
return <<"EOF";
profile:
\t-perl -Ilib -d:NYTProf t/900-cmark-test-suite.t --fast
\tnytprofhtml
\t\@echo Profile is at `pwd`/nytprof/index.html
clean:: clean_nytprof
clean_nytprof:
\trm -fr nytprof nytprof.out
fuzzing: export MAXI_TEST = 1
fuzzing:
\tperl -Ilib t/801-fuzzing.t
EOF
}