This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update Scalar-List-Utils to CPAN version 1.54
[perl5.git] / cpan / Scalar-List-Utils / Makefile.PL
1 # -*- perl -*-
2 BEGIN { require 5.006; }
3 use strict;
4 use warnings;
5 use Config;
6 use File::Spec;
7 use ExtUtils::MakeMaker;
8 my $PERL_CORE = grep { $_ eq 'PERL_CORE=1' } @ARGV;
9 my $defines = $ENV{PERL_CORE} ? q[-DPERL_EXT] : q[-DPERL_EXT -DUSE_PPPORT_H];
10
11 my $nv_digits;
12
13 my $ivsize = $Config{ivsize} * 8;
14 my $uv_digits = 1 + int(log(2) / log(10) * $ivsize);
15
16 my $nvsize = $Config{nvsize} * 8;
17 # we want NV and UV numbers in the same range to format the same, so make sure
18 # NVs are given at least as many digits as UVs.  If IV/UVs have equal or
19 # greater bits, there's no reason to check NV size since it won't be able to
20 # have as much mantissa.
21 if ($ivsize >= $nvsize) {
22   $nv_digits = $uv_digits;
23 }
24 else {
25   # maximum possible digits that could fit in something NV size
26   my $max_digits = 1 + int(log(2) / log(10) * $nvsize);
27
28   my $float = sprintf '%0.'.$max_digits.'g', 1/9;
29   my ($accurate_digits) = $float =~ /(1+)/;
30   # additional digit provides 'partial' accuracy
31   $nv_digits = 1 + length $accurate_digits;
32
33   if ($nv_digits < $uv_digits) {
34     $nv_digits = $uv_digits;
35   }
36 }
37
38 $defines .= " -DNV_MAX_PRECISION=$nv_digits";
39
40 WriteMakefile(
41   NAME         => q[List::Util],
42   ABSTRACT     => q[Common Scalar and List utility subroutines],
43   AUTHOR       => q[Graham Barr <gbarr@cpan.org>],
44   DEFINE       => $defines,
45   DISTNAME     => q[Scalar-List-Utils],
46   VERSION_FROM => 'lib/List/Util.pm',
47
48   # We go through the ListUtil.xs trickery to foil platforms
49   # that have the feature combination of
50   # (1) static builds
51   # (2) allowing only one object by the same name in the static library
52   # (3) the object name matching being case-blind
53   # This means that we can't have the top-level util.o
54   # and the extension-level Util.o in the same build.
55   # One such platform is the POSIX-BC BS2000 EBCDIC mainframe platform.
56   XS     => {'ListUtil.xs' => 'ListUtil.c'},
57   OBJECT => 'ListUtil$(OBJ_EXT)',
58   ( $PERL_CORE
59     ? ()
60     : (
61       INSTALLDIRS      => ($] < 5.011 ? q[perl] : q[site]),
62       PREREQ_PM        => {'Test::More' => 0,},
63       (eval { ExtUtils::MakeMaker->VERSION(6.31) } ? (LICENSE => 'perl') : ()),
64       (eval { ExtUtils::MakeMaker->VERSION(6.48) } ? (MIN_PERL_VERSION => '5.006') : ()),
65       ( eval { ExtUtils::MakeMaker->VERSION(6.46) } ? (
66           META_MERGE => {
67             'meta-spec' => { version => 2 },
68             dynamic_config => 0,
69             resources => {    ##
70               repository => {
71                 url => 'https://github.com/Scalar-List-Utils/Scalar-List-Utils.git',
72                 web => 'https://github.com/Scalar-List-Utils/Scalar-List-Utils',
73                 type => 'git',
74               },
75               bugtracker => {
76                 mailto => 'bug-Scalar-List-Utils@rt.cpan.org',
77                 web => 'https://rt.cpan.org/Public/Dist/Display.html?Name=Scalar-List-Utils',
78               },
79             },
80           }
81           )
82         : ()
83       ),
84     )
85   ),
86 );