|
Packit |
fa4fcc |
require 5.003000;
|
|
Packit |
fa4fcc |
|
|
Packit |
fa4fcc |
use strict;
|
|
Packit |
fa4fcc |
use ExtUtils::MakeMaker;
|
|
Packit |
fa4fcc |
use Getopt::Std;
|
|
Packit |
fa4fcc |
use Config qw(%Config);
|
|
Packit |
fa4fcc |
|
|
Packit |
fa4fcc |
use vars qw($opt_t $opt_w $opt_x);
|
|
Packit |
fa4fcc |
|
|
Packit |
fa4fcc |
my $PM = 'lib/Digest/SHA.pm';
|
|
Packit |
fa4fcc |
my $SHASUM = 'shasum';
|
|
Packit |
fa4fcc |
|
|
Packit |
fa4fcc |
# 'use warnings' if possible, but stay portable
|
|
Packit |
fa4fcc |
|
|
Packit |
fa4fcc |
my($use_warnings, @EDITs);
|
|
Packit |
fa4fcc |
my $warn_1 = 'BEGIN { $^W = 1 }';
|
|
Packit |
fa4fcc |
my $warn_0 = 'BEGIN { $^W = 0 }';
|
|
Packit |
fa4fcc |
{
|
|
Packit |
fa4fcc |
eval "require warnings; import warnings";
|
|
Packit |
fa4fcc |
$use_warnings = $@ ? 0 : 1;
|
|
Packit |
fa4fcc |
|
|
Packit |
fa4fcc |
local(@ARGV) = ($PM, $SHASUM);
|
|
Packit |
fa4fcc |
while (<>) {
|
|
Packit |
fa4fcc |
if (
|
|
Packit |
fa4fcc |
(!$use_warnings && /^(use|no) warnings\b/) ||
|
|
Packit |
fa4fcc |
( $use_warnings && /^\Q$warn_1\E # use warnings\b/) ||
|
|
Packit |
fa4fcc |
( $use_warnings && /^\Q$warn_0\E # no warnings\b/)) {
|
|
Packit |
fa4fcc |
push @EDITs, $ARGV;
|
|
Packit |
fa4fcc |
close ARGV;
|
|
Packit |
fa4fcc |
}
|
|
Packit |
fa4fcc |
}
|
|
Packit |
fa4fcc |
}
|
|
Packit |
fa4fcc |
|
|
Packit |
fa4fcc |
if (@EDITs) {
|
|
Packit |
fa4fcc |
local($^I, @ARGV) = ('', @EDITs);
|
|
Packit |
fa4fcc |
while (<>) {
|
|
Packit |
fa4fcc |
if ($use_warnings) {
|
|
Packit |
fa4fcc |
s/^\Q$warn_1\E # (.*)$/$1/;
|
|
Packit |
fa4fcc |
s/^\Q$warn_0\E # (.*)$/$1/;
|
|
Packit |
fa4fcc |
}
|
|
Packit |
fa4fcc |
else {
|
|
Packit |
fa4fcc |
s/^(use warnings\b.*)$/$warn_1 # $1/;
|
|
Packit |
fa4fcc |
s/^(no warnings\b.*)$/$warn_0 # $1/;
|
|
Packit |
fa4fcc |
}
|
|
Packit |
fa4fcc |
print;
|
|
Packit |
fa4fcc |
}
|
|
Packit |
fa4fcc |
}
|
|
Packit |
fa4fcc |
|
|
Packit |
fa4fcc |
getopts('twx'); # -t is no longer used, but allow it anyway
|
|
Packit |
fa4fcc |
|
|
Packit |
fa4fcc |
my @defines;
|
|
Packit |
fa4fcc |
push(@defines, '-DNO_SHA_384_512') if $opt_x;
|
|
Packit |
fa4fcc |
my $define = join(' ', @defines);
|
|
Packit |
fa4fcc |
|
|
Packit |
fa4fcc |
# Workaround for DEC compiler bug, adapted from Digest::MD5
|
|
Packit |
fa4fcc |
|
|
Packit |
fa4fcc |
my @extra = ();
|
|
Packit |
fa4fcc |
if ($^O eq 'VMS') {
|
|
Packit |
fa4fcc |
if (defined($Config{ccname})) {
|
|
Packit |
fa4fcc |
if (grep(/VMS_VAX/, @INC) && ($Config{ccname} eq 'DEC')) {
|
|
Packit |
fa4fcc |
# VAX optimizer, even up to v6.4, gets stuck
|
|
Packit |
fa4fcc |
push(@extra, OPTIMIZE => "/Optimize=(NODISJOINT)");
|
|
Packit |
fa4fcc |
}
|
|
Packit |
fa4fcc |
}
|
|
Packit |
fa4fcc |
}
|
|
Packit |
fa4fcc |
|
|
Packit |
fa4fcc |
# Enhance performance on Intel when using gcc
|
|
Packit |
fa4fcc |
|
|
Packit |
fa4fcc |
if ($Config{archname} =~ /^i[3456]86/ && $Config{ccname} eq 'gcc') {
|
|
Packit |
fa4fcc |
push(@extra, OPTIMIZE => '-O1 -fomit-frame-pointer');
|
|
Packit |
fa4fcc |
}
|
|
Packit |
fa4fcc |
|
|
Packit |
fa4fcc |
my $fussy = '-Wall -Wextra -Wconversion -Wcast-align -Wpointer-arith ';
|
|
Packit |
fa4fcc |
push(@extra, CCFLAGS => $fussy . $Config{ccflags}) if $opt_w;
|
|
Packit |
fa4fcc |
|
|
Packit |
fa4fcc |
my %attr = (
|
|
Packit |
fa4fcc |
'NAME' => 'Digest::SHA',
|
|
Packit |
fa4fcc |
'VERSION_FROM' => $PM,
|
|
Packit |
fa4fcc |
'LIBS' => [''],
|
|
Packit |
fa4fcc |
'DEFINE' => $define,
|
|
Packit |
fa4fcc |
'INC' => '-I.',
|
|
Packit |
fa4fcc |
'EXE_FILES' => [ $SHASUM ],
|
|
Packit |
fa4fcc |
'INSTALLDIRS' => ($] >= 5.010 and $] < 5.011) ? 'perl' : 'site',
|
|
Packit |
fa4fcc |
@extra,
|
|
Packit |
fa4fcc |
);
|
|
Packit |
fa4fcc |
|
|
Packit |
fa4fcc |
my $MMversion = $ExtUtils::MakeMaker::VERSION || '0.00_00';
|
|
Packit |
fa4fcc |
$attr{NO_META} = 1 if $MMversion ge '6.10_03';
|
|
Packit |
fa4fcc |
|
|
Packit |
fa4fcc |
WriteMakefile(%attr);
|