Blame Makefile.PL

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);