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
|
require 5.003000;
use strict;
use ExtUtils::MakeMaker;
use Getopt::Std;
use Config qw(%Config);
my $PM = 'lib/Digest/SHA.pm';
my %opts;
getopts('tx', \%opts);
my @defines;
push(@defines, '-DSHA_PERL_MODULE') if $] >= 5.004;
push(@defines, '-DSHA_THREAD_SAFE') if $opts{'t'};
push(@defines, '-DNO_SHA_384_512') if $opts{'x'};
# Configure SHA source to use static arrays for
# message schedules if compiling on Intel platforms.
# This seems to speed things up a bit. However,
# DON'T do this if thread-safe option is in force.
if ($Config{archname} =~ /^i[3456]86/) {
push(@defines, '-DSHA_STO_CLASS=static') unless $opts{'t'};
}
my $define = join(' ', @defines);
# Workaround for DEC compiler bug, adapted from Digest::MD5
my @extra = ();
if ($^O eq 'VMS') {
if (defined($Config{ccname})) {
if (grep(/VMS_VAX/, @INC) && ($Config{ccname} eq 'DEC')) {
# VAX compiler optimizer even up to v6.4 gets stuck
push(@extra, OPTIMIZE => "/Optimize=(NODISJOINT)");
}
}
}
# Enhance performance on Intel when using gcc
if ($Config{archname} =~ /^i[3456]86/ && $Config{ccname} eq 'gcc') {
push(@extra, OPTIMIZE => '-O1 -fomit-frame-pointer');
}
my %att = (
'NAME' => 'Digest::SHA',
'VERSION_FROM' => $PM,
'LIBS' => [''],
'DEFINE' => $define,
'INC' => '-I.',
'EXE_FILES' => [ 'shasum' ],
'INSTALLDIRS' => ($] >= 5.010 and $] < 5.011) ? 'perl' : 'site',
@extra,
);
my $MMversion = $ExtUtils::MakeMaker::VERSION || 0;
$att{NO_META} = 1 unless $MMversion < 6.10_03;
WriteMakefile(%att);
|