Commit | Line | Data |
---|---|---|
4eb6bdb8 | 1 | require 5.003000; |
128cbdba | 2 | |
65484cb9 | 3 | use strict; |
6bc89f92 SP |
4 | use ExtUtils::MakeMaker; |
5 | use Getopt::Std; | |
560a4009 | 6 | use Config qw(%Config); |
6bc89f92 | 7 | |
207902b1 CBW |
8 | use vars qw($opt_t $opt_w $opt_x); |
9 | ||
4eb6bdb8 | 10 | my $PM = 'lib/Digest/SHA.pm'; |
207902b1 CBW |
11 | my $SHASUM = 'shasum'; |
12 | ||
13 | # 'use warnings' if possible, but stay portable | |
4eb6bdb8 | 14 | |
207902b1 CBW |
15 | my($use_warnings, @EDITs); |
16 | my $warn_1 = 'BEGIN { $^W = 1 }'; | |
17 | my $warn_0 = 'BEGIN { $^W = 0 }'; | |
18 | { | |
19 | eval "require warnings; import warnings"; | |
20 | $use_warnings = $@ ? 0 : 1; | |
21 | ||
22 | local(@ARGV) = ($PM, $SHASUM); | |
23 | while (<>) { | |
24 | if ( | |
25 | (!$use_warnings && /^(use|no) warnings\b/) || | |
26 | ( $use_warnings && /^\Q$warn_1\E # use warnings\b/) || | |
27 | ( $use_warnings && /^\Q$warn_0\E # no warnings\b/)) { | |
28 | push @EDITs, $ARGV; | |
29 | close ARGV; | |
30 | } | |
31 | } | |
32 | } | |
33 | ||
34 | if (@EDITs) { | |
35 | local($^I, @ARGV) = ('', @EDITs); | |
36 | while (<>) { | |
37 | if ($use_warnings) { | |
38 | s/^\Q$warn_1\E # (.*)$/$1/; | |
39 | s/^\Q$warn_0\E # (.*)$/$1/; | |
40 | } | |
41 | else { | |
42 | s/^(use warnings\b.*)$/$warn_1 # $1/; | |
43 | s/^(no warnings\b.*)$/$warn_0 # $1/; | |
44 | } | |
45 | print; | |
46 | } | |
47 | } | |
48 | ||
49 | getopts('twx'); # -t is no longer used, but allow it anyway | |
6bc89f92 | 50 | |
4eb6bdb8 | 51 | my @defines; |
207902b1 | 52 | push(@defines, '-DNO_SHA_384_512') if $opt_x; |
6bc89f92 SP |
53 | my $define = join(' ', @defines); |
54 | ||
2ff8a1ae | 55 | # Workaround for DEC compiler bug, adapted from Digest::MD5 |
560a4009 CB |
56 | |
57 | my @extra = (); | |
58 | if ($^O eq 'VMS') { | |
59 | if (defined($Config{ccname})) { | |
60 | if (grep(/VMS_VAX/, @INC) && ($Config{ccname} eq 'DEC')) { | |
207902b1 | 61 | # VAX optimizer, even up to v6.4, gets stuck |
560a4009 CB |
62 | push(@extra, OPTIMIZE => "/Optimize=(NODISJOINT)"); |
63 | } | |
64 | } | |
65 | } | |
66 | ||
a21a75c8 CBW |
67 | # Enhance performance on Intel when using gcc |
68 | ||
69 | if ($Config{archname} =~ /^i[3456]86/ && $Config{ccname} eq 'gcc') { | |
70 | push(@extra, OPTIMIZE => '-O1 -fomit-frame-pointer'); | |
71 | } | |
72 | ||
207902b1 CBW |
73 | push(@extra, CCFLAGS => '-W -Wall ' . $Config{ccflags}) if $opt_w; |
74 | ||
75 | my %attr = ( | |
6bc89f92 | 76 | 'NAME' => 'Digest::SHA', |
4eb6bdb8 | 77 | 'VERSION_FROM' => $PM, |
6bc89f92 | 78 | 'LIBS' => [''], |
6bc89f92 SP |
79 | 'DEFINE' => $define, |
80 | 'INC' => '-I.', | |
207902b1 | 81 | 'EXE_FILES' => [ $SHASUM ], |
7ce06b7d | 82 | 'INSTALLDIRS' => ($] >= 5.010 and $] < 5.011) ? 'perl' : 'site', |
560a4009 | 83 | @extra, |
6bc89f92 | 84 | ); |
4eb6bdb8 | 85 | |
207902b1 CBW |
86 | my $MMversion = $ExtUtils::MakeMaker::VERSION || '0.00_00'; |
87 | $attr{NO_META} = 1 if $MMversion ge '6.10_03'; | |
4eb6bdb8 | 88 | |
207902b1 | 89 | WriteMakefile(%attr); |