File: Makefile.PL

package info (click to toggle)
libsereal-encoder-perl 5.004%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,384 kB
  • sloc: ansic: 12,087; perl: 6,049; sh: 25; makefile: 9
file content (139 lines) | stat: -rw-r--r-- 4,790 bytes parent folder | download
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
use 5.008;

use strict;
use warnings;

use ExtUtils::MakeMaker;
use Config;

our $VERSION= '5.004'; # what version are we and what version of Decoder do we need.
$VERSION = eval $VERSION or die "WTF: $VERSION: $@"; # deal with underbars

my $shared_dir= "../shared";
my $its_our_repo_file= "../this_is_the_Sereal_repo.txt";
my $in_source_repo= ( -d "../../.git" &&
                      -d $shared_dir &&
                      -e $its_our_repo_file );
my $do_prompt= !$in_source_repo || $ENV{CPAN_COMPAT};

unshift @INC, ".", "./inc";
unshift @INC, $shared_dir, "$shared_dir/inc"
    if $in_source_repo;

my $module= "Sereal::Encoder";
require inc::Sereal::BuildTools;
if ($in_source_repo) {
    inc::Sereal::BuildTools::link_files($shared_dir);
    inc::Sereal::BuildTools::generate_constant_includes($module);
}

# Note you can Configure/optimize for miniz by modifying miniz.h
#   * Important: For best perf. be sure to customize the below macros for your target platform:
#     #define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 1
#     #define MINIZ_LITTLE_ENDIAN 1
#     #define MINIZ_HAS_64BIT_REGISTERS 1
# Or you can set USE_UNALIGNED in the env before running Makefile.PL

if ($do_prompt and !defined $ENV{USE_UNALIGNED}) {
    my $use_unaligned= prompt("USE_UNALIGNED not set in env. Use unaligned loads and stores? yes/no","no");
    $ENV{USE_UNALIGNED} = $use_unaligned eq "yes";
} else {
    $ENV{USE_UNALIGNED} ||= 1;
    $ENV{USE_UNALIGNED} = 0 if $ENV{USE_UNALIGNED} ne 1
                            && $ENV{USE_UNALIGNED} ne "yes";
}

if ($do_prompt and !defined $ENV{NO_ASM} and !defined $ENV{ZSTD_DISABLE_ASM}) {
    my $use_asm= prompt("neither NO_ASM nor ZSTD_DISABLE_ASM set in env. Use assembly in ZSTD? yes/no","yes");
    $ENV{NO_ASM} = $use_asm ne "yes";
}

my $optimize= inc::Sereal::BuildTools::build_optimize();

my $libs= '';
my $subdirs= [];
my $objects= '$(BASEEXT)$(OBJ_EXT) srl_encoder$(OBJ_EXT)';
my $defines= inc::Sereal::BuildTools::build_defines('ENABLE_DANGEROUS_HACKS');
my $inc= '-I.';
$inc .= ' -I/usr/local/include'
    if $^O =~ /openbsd/;

# Prefer external libraries over the bundled one.
inc::Sereal::BuildTools::check_external_libraries( \$libs, \$defines, \$objects, $subdirs );

if ( $defines !~ /HAVE_CSNAPPY/ ) {
    # from Compress::Snappy
    require Devel::CheckLib;
    my $ctz= Devel::CheckLib::check_lib(
        lib      => 'c',
        function => 'return (__builtin_ctzll(0x100000000LL) != 32);'
    ) ? '-DHAVE_BUILTIN_CTZ' : '';
    $defines .= " $ctz" if $ctz;
}

# See lib/ExtUtils/MakeMaker.pm for details of how to influence
# the contents of the Makefile that is written.
inc::Sereal::BuildTools::WriteMakefile(
    MIN_PERL_VERSION => '5.008',
    META_MERGE       => {
        resources => {
            repository => {
                url => 'git://github.com/Sereal/Sereal.git',
            },
            bugtracker => {
                web => 'https://github.com/Sereal/Sereal/issues',
            },
        },
        'meta-spec' => { version => 2 },
    },
    TEST_REQUIRES => {
        'Data::Dumper'      => '0',
        'File::Spec'        => '0',
        'Hash::Util'        => '0',
        'Scalar::Util'      => '0',
        'Sereal::Decoder'   => $VERSION,
        'Test::Deep'        => '0',
        'Test::Differences' => '0',
        'Test::LongString'  => '0',
        'Test::More'        => '0.88',
        'Test::Warn'        => '0',
    },
    BUILD_REQUIRES => {
        'Data::Dumper'      => '0',
        'ExtUtils::ParseXS' => '2.21',
        'File::Find'        => '0',
        'File::Path'        => '0',
        'File::Spec'        => '0',
        'Hash::Util'        => '0',
        'Scalar::Util'      => '0',
        'Sereal::Decoder'   => $VERSION,
        'Test::Deep'        => '0',
        'Test::Differences' => '0',
        'Test::LongString'  => '0',
        'Test::More'        => '0.88',
        'Test::Warn'        => '0',
    },
    CONFIGURE_REQUIRES => {
        'Devel::CheckLib'       => '1.16',
        'ExtUtils::MakeMaker'   => '7.0',
    },
    NAME         => $module,
    VERSION_FROM => 'lib/Sereal/Encoder.pm',    # finds $VERSION
    PREREQ_PM    => {
        'Sereal::Decoder' => $VERSION,
        'XSLoader' => 0,
    },                                          # e.g., Module::Name => 1.1
    LICENSE       => 'perl',
    ABSTRACT_FROM => 'lib/Sereal/Encoder.pm',
    AUTHOR        => 'Steffen Mueller <smueller@cpan.org>, Yves Orton <yves@cpan.org>',
    LIBS          => [$libs],   # e.g., '-lm'
    DEFINE        => $defines,
    INC      => $inc,           # e.g., '-I. -I/usr/local/include'
    OPTIMIZE => $optimize,
    DIR      => $subdirs,
    OBJECT   => $objects,
    test     => {
        TESTS => "t/*.t t/*/*/*.t",
    },
);
$ENV{OPTIMIZE}= $optimize;