-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathMakefile.PL
186 lines (162 loc) · 4.97 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
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
use strict;
use warnings;
use 5.008001;
my %META = (
name => 'namespace-clean',
license => 'perl_5',
abstract => 'Keep imports and functions out of your namespace',
author => [
'Robert \'phaylon\' Sedlacek <[email protected]>',
'Florian Ragwitz <[email protected]>',
'Jesse Luehrs <[email protected]>',
'Peter Rabbitson <[email protected]>',
'Father Chrysostomos <[email protected]>',
],
prereqs => {
configure => {
requires => {
'ExtUtils::MakeMaker' => 0,
}
},
runtime => {
requires => {
'B::Hooks::EndOfScope' => '0.12',
'perl' => '5.008001',
},
},
test => {
requires => {
'Test::More' => '0.47',
}
},
},
resources => {
x_IRC => 'irc://irc.perl.org/#toolchain',
homepage => 'http://search.cpan.org/dist/namespace-clean',
repository => {
type => 'git',
url => 'git://git.shadowcat.co.uk/p5sagit/namespace-clean.git',
web => 'https://github.com/p5sagit/namespace-clean',
},
bugtracker => {
mailto => '[email protected]',
web => 'http://rt.cpan.org/Public/Dist/Display.html?Name=namespace-clean',
},
},
);
my %MM_ARGS = ( (
# a sub-namer is needed if using the debugger on some perls
do {
# sigh... so much unmitigated stupidity on #p5p these days...
local @INC = ('lib', @INC);
require namespace::clean::_Util;
}
and
namespace::clean::_Util::DEBUGGER_NEEDS_CV_RENAME()
and
namespace::clean::_Util::_namer_load_error()
and
usable_compiler_present()
)
# when changing version, also change $sn_ver in namespace/clean/_Util.pm
? ( PREREQ_PM => { 'Sub::Name' => '0.04' } )
: ()
);
## XS-checking BOILERPLATE ###################################################
sub usable_compiler_present {
return 0 if parse_args()->{PUREPERL_ONLY};
my $ucp;
local $@;
eval {
# poor man's inc::latest
my $euhc_fn = 'ExtUtils/HasCompiler.pm';
my $euhc_found_in_INC_dir;
( ($euhc_found_in_INC_dir) = grep {
not length ref $_
and
-f "$_/$euhc_fn"
and
-r "$_/$euhc_fn"
} @INC )
and
(
MM->parse_version("$euhc_found_in_INC_dir/$euhc_fn")
>
MM->parse_version("inc/$euhc_fn")
)
and
eval { require ExtUtils::HasCompiler };
unless ( $INC{'ExtUtils/HasCompiler.pm'} ) {
local @INC = ( "inc", @INC );
require ExtUtils::HasCompiler;
}
$ucp = ExtUtils::HasCompiler::can_compile_loadable_object(quiet => 1)
? 1
: 0
;
1;
};
if( my $used_fn = $INC{'ExtUtils/HasCompiler.pm'} ) {
printf
"ExtUtils::HasCompiler::can_compile_loadable_object() v%s (loaded from %s) returned: %s\n",
ExtUtils::HasCompiler->VERSION,
$used_fn,
( defined($ucp) ? $ucp : "UNKNOWN" ),
;
}
else {
print "Something went wrong when trying to load/use ExtUtils::HasCompiler:\n$@\n\n";
}
$ucp;
}
# FIXME - this has been cargo-culted from
# https://metacpan.org/source/HAARG/strictures-2.000002/Makefile.PL
# There likely will be better ways to handle %ENV and @ARGV directly within
# EU::HC in the future
sub parse_args {
# copied from EUMM
require ExtUtils::MakeMaker;
require Text::ParseWords;
ExtUtils::MakeMaker::parse_args(
my $tmp = {},
Text::ParseWords::shellwords($ENV{PERL_MM_OPT} || ''),
@ARGV,
);
return $tmp->{ARGS} || {};
}
## END XS-checking BOILERPLATE ###############################################
## BOILERPLATE ###############################################################
require ExtUtils::MakeMaker;
# have to do this since old EUMM dev releases miss the eval $VERSION line
my $eumm_version = eval $ExtUtils::MakeMaker::VERSION;
my $mymeta = $eumm_version >= 6.57_02;
my $mymeta_broken = $mymeta && $eumm_version < 6.57_07;
($MM_ARGS{NAME} = $META{name}) =~ s/-/::/g;
($MM_ARGS{VERSION_FROM} = "lib/$MM_ARGS{NAME}.pm") =~ s{::}{/}g;
$META{license} = [ $META{license} ]
if $META{license} && !ref $META{license};
$MM_ARGS{LICENSE} = $META{license}[0]
if $META{license} && $eumm_version >= 6.30;
$MM_ARGS{NO_MYMETA} = 1
if $mymeta_broken;
$MM_ARGS{META_ADD} = { 'meta-spec' => { version => 2 }, %META }
unless -f 'META.yml';
for (qw(configure build test runtime)) {
my $key = $_ eq 'runtime' ? 'PREREQ_PM' : uc $_.'_REQUIRES';
my $r = $MM_ARGS{$key} = {
%{$META{prereqs}{$_}{requires} || {}},
%{delete $MM_ARGS{$key} || {}},
};
defined $r->{$_} or delete $r->{$_} for keys %$r;
}
$MM_ARGS{MIN_PERL_VERSION} = delete $MM_ARGS{PREREQ_PM}{perl} || 0;
delete $MM_ARGS{MIN_PERL_VERSION}
if $eumm_version < 6.47_01;
$MM_ARGS{BUILD_REQUIRES} = {%{$MM_ARGS{BUILD_REQUIRES}}, %{delete $MM_ARGS{TEST_REQUIRES}}}
if $eumm_version < 6.63_03;
$MM_ARGS{PREREQ_PM} = {%{$MM_ARGS{PREREQ_PM}}, %{delete $MM_ARGS{BUILD_REQUIRES}}}
if $eumm_version < 6.55_01;
delete $MM_ARGS{CONFIGURE_REQUIRES}
if $eumm_version < 6.51_03;
ExtUtils::MakeMaker::WriteMakefile(%MM_ARGS);
## END BOILERPLATE ###########################################################