-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile.PL
executable file
·136 lines (107 loc) · 3.63 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
use strict;
use warnings;
use Config;
use ExtUtils::MakeMaker;
require 5.006;
$| = 1;
our %args = map { split /\s*=\s*/ } @ARGV;
our $LIBS = $args{ LIBS } || "-lgmp";
our $INC = $args{ INC };
our $DEFS = '';
print "\nThis module requires gmp-4.2.0 (or later)\n\n";
my $use_64_bit_int = 0; # Let perl decide whether to include 64-bit 'long long' support
my $use_long_double = 0; # Let perl decide whether to include 'long double' support
my $use_quadmath = 0; # Let perl decide whether to include 'quadmath' support
my $defines = $] < 5.008 ? "-DOLDPERL" : "-DNEWPERL";
unless($Config{ivsize} < 8 || $Config{ivtype} eq 'long') {
$defines .= " -DMATH_GMPQ_NEED_LONG_LONG_INT";
}
if($Config::Config{nvsize} > 8 ) {
if($Config{nvtype} eq '__float128') {$use_quadmath = 1}
else {$use_long_double = 1}
}
$defines =~ /-DMATH_GMPQ_NEED_LONG_LONG_INT/ ? print "Building with 64-bit'long long' support\n" :
print "Building without 64-bit 'long long' support\n";
$use_long_double == 1 ? print "Building with 'long double' support\n" :
print "Building without 'long double' support\n";
$use_quadmath == 1 ? print "Building with '__float128' support\n" :
print "Building without '__float128' support\n";
if($^O =~ /MSWin32/i && $] < 5.022) {$defines .= " -D_WIN32_BIZARRE_INFNAN"}
# Next, we check to see whether there's some unhelpful beaviour regarding
# the setting of the POK flag - but only if $] < 5.035010.
# This typically occurs in versions of perl prior to 5.22.0, but it can
# arise elsewhere, eg:
# http://www.cpantesters.org/cpan/report/dc52fbe6-900b-11ec-bfc9-d1f1448276d4
# This procedure is stolen from:
# https://metacpan.org/release/HAARG/Sub-Quote-2.006006/source/t/quotify.t
# Thank you, Haarg.
if($] < 5.035010) {
use B qw(svref_2object);
my %flags;
{
no strict 'refs';
for my $flag (qw(
SVf_IOK
SVf_NOK
SVf_POK
SVp_IOK
SVp_NOK
SVp_POK
)) {
if (defined &{'B::'.$flag}) {
$flags{$flag} = &{'B::'.$flag};
}
}
}
sub flags {
my $flags = B::svref_2object(\($_[0]))->FLAGS;
join ' ', sort grep $flags & $flags{$_}, keys %flags;
}
my $pv_nv_bug = 0;
my $test_nv = 1.3;
my $buggery = "$test_nv";
my $f = flags($test_nv);
if($f =~ /SVf_POK/) {
print "Dealing with unhelpful setting of POK flag\n";
$pv_nv_bug = 1;
}
if($pv_nv_bug) {
print "\n Defining GMPQ_PV_NV_BUG\n\n";
$defines .= " -DGMPQ_PV_NV_BUG";
$DEFS .= " -DGMPQ_PV_NV_BUG";
}
else {
print "\n Not defining GMPQ_PV_NV_BUG\n\n";
}
}
else { print "Not defining GMPQ_PV_NV_BUG as perl version >= 5.035010\n\n" }
####################################
my $libopts = '-lgmp';
$libopts = '-lquadmath -lgmp'
if ($^O eq 'cygwin' && $use_quadmath);
my %options = (
NAME => 'Math::GMPq',
AUTHOR => 'Sisyphus (sisyphus at (@) cpan dot (.) org)',
ABSTRACT => 'Perl interface to the GMP rational functions',
DEFINE => $defines,
LIBS => [
$libopts
],
LICENSE => 'perl',
VERSION_FROM => 'GMPq.pm',
PREREQ_PM => {'Exporter' => '5.58', 'Test::More' => '0.88'},
clean => { FILES => 'out1.txt out2.txt out3.txt out4.txt out5.txt out6.txt out7.txt out21.txt out22.txt' },
META_MERGE => {
'meta-spec' => { version => 2 },
resources => {
repository => {
type => 'git',
url => 'https://github.com/sisyphus/math-gmpq.git',
web => 'https://github.com/sisyphus/math-gmpq',
},
},
},
);
WriteMakefile(%options);
# Remove the Makefile dependency. Causes problems on a few systems.
# sub MY::makefile { '' }