Blame Build.PL

Packit b3426c
{ use 5.006; }
Packit b3426c
use warnings;
Packit b3426c
use strict;
Packit b3426c
Packit b3426c
use Module::Build;
Packit b3426c
Packit b3426c
Module::Build->subclass(code => q{
Packit b3426c
	unless(__PACKAGE__->can("cbuilder")) {
Packit b3426c
		*cbuilder = sub { $_[0]->_cbuilder or die "no C support" };
Packit b3426c
	}
Packit b3426c
	sub link_c {
Packit b3426c
		no strict "refs";
Packit b3426c
		my($self, $spec) = @_;
Packit b3426c
		my $cb = $self->cbuilder;
Packit b3426c
		my $cbclass = ref($cb);
Packit b3426c
		my $orig_cb_prelink = $cb->can("prelink");
Packit b3426c
		local *{"${cbclass}::prelink"} = sub {
Packit b3426c
			use strict "refs";
Packit b3426c
			my($self, %args) = @_;
Packit b3426c
			if($args{dl_name} eq "Devel::CallChecker") {
Packit b3426c
				$args{dl_func_list} = [
Packit b3426c
					@{$args{dl_func_list}||[]},
Packit b3426c
					("$]" >= 5.013006 ? () : qw(
Packit b3426c
						xAd8NP3gxZglovQRL5Hn_roc0
Packit b3426c
						xAd8NP3gxZglovQRL5Hn_eal0
Packit b3426c
						xAd8NP3gxZglovQRL5Hn_eap0
Packit b3426c
						xAd8NP3gxZglovQRL5Hn_ean0
Packit b3426c
						xAd8NP3gxZglovQRL5Hn_gcc0
Packit b3426c
						xAd8NP3gxZglovQRL5Hn_scc0
Packit b3426c
					)),
Packit b3426c
				];
Packit b3426c
				$args{dl_funcs} ||= {};
Packit b3426c
				my $pname = $args{dl_name};
Packit b3426c
				unless(exists $args{dl_funcs}->{$pname}) {
Packit b3426c
					$args{dl_funcs} = {
Packit b3426c
						%{$args{dl_funcs}},
Packit b3426c
						$pname => [],
Packit b3426c
					};
Packit b3426c
				}
Packit b3426c
			}
Packit b3426c
			@_ = ($self, %args);
Packit b3426c
			goto &$orig_cb_prelink;
Packit b3426c
		};
Packit b3426c
		my($libfile, $impfile);
Packit b3426c
		if($^O eq "MSWin32") {
Packit b3426c
			my $dlext = $cb->{config}->{dlext};
Packit b3426c
			my $libext = $cb->{config}->{lib_ext};
Packit b3426c
			$libfile = $spec->{lib_file};
Packit b3426c
			($impfile = $libfile) =~ s/\.\Q$dlext\E\z/$libext/
Packit b3426c
				or die "can't generate import library name";
Packit b3426c
			unlink $libfile, $impfile
Packit b3426c
				unless $self->up_to_date($libfile, $impfile);
Packit b3426c
		}
Packit b3426c
		my $orig_cb_flk = $cb->can("format_linker_cmd");
Packit b3426c
		local *{"${cbclass}::format_linker_cmd"} = sub {
Packit b3426c
			use strict "refs";
Packit b3426c
			my($self, %spec) = @_;
Packit b3426c
			my @cmds = &$orig_cb_flk;
Packit b3426c
			my $cf = $self->{config};
Packit b3426c
			my $norm_libfile = $libfile;
Packit b3426c
			my $norm_impfile = $impfile;
Packit b3426c
			$self->normalize_filespecs(
Packit b3426c
				\$norm_libfile, \$norm_impfile);
Packit b3426c
			push @cmds, [
Packit b3426c
				$cf->{dlltool} || "dlltool",
Packit b3426c
				"--def", $spec{def_file},
Packit b3426c
				"--output-lib", $norm_impfile,
Packit b3426c
				"--dllname", $spec{basename}.".".$cf->{dlext},
Packit b3426c
				$spec{output},
Packit b3426c
			] if $spec{output} eq $norm_libfile;
Packit b3426c
			return @cmds;
Packit b3426c
		} if $cb->isa("ExtUtils::CBuilder::Platform::Windows::GCC");
Packit b3426c
		$self->SUPER::link_c($spec);
Packit b3426c
		if($^O eq "MSWin32") {
Packit b3426c
			die "failed to generate import library"
Packit b3426c
				unless -e $impfile;
Packit b3426c
			$self->add_to_cleanup($impfile);
Packit b3426c
		}
Packit b3426c
	}
Packit b3426c
})->new(
Packit b3426c
	module_name => "Devel::CallChecker",
Packit b3426c
	license => "perl",
Packit b3426c
	configure_requires => {
Packit b3426c
		"Module::Build" => 0,
Packit b3426c
		"perl" => "5.006",
Packit b3426c
		"strict" => 0,
Packit b3426c
		"warnings" => 0,
Packit b3426c
	},
Packit b3426c
	build_requires => {
Packit b3426c
		"DynaLoader" => 0,
Packit b3426c
		"ExtUtils::CBuilder" => "0.15",
Packit b3426c
		"ExtUtils::ParseXS" => 0,
Packit b3426c
		"File::Spec" => 0,
Packit b3426c
		"IO::File" => "1.03",
Packit b3426c
		"Module::Build" => 0,
Packit b3426c
		"Test::More" => 0,
Packit b3426c
		"perl" => "5.006",
Packit b3426c
		"strict" => 0,
Packit b3426c
		"warnings" => 0,
Packit b3426c
	},
Packit b3426c
	requires => {
Packit b3426c
		"DynaLoader" => 0,
Packit b3426c
		"DynaLoader::Functions" => "0.001",
Packit b3426c
		"Exporter" => 0,
Packit b3426c
		"parent" => 0,
Packit b3426c
		"perl" => "5.006",
Packit b3426c
		"strict" => 0,
Packit b3426c
		"warnings" => 0,
Packit b3426c
	},
Packit b3426c
	conflicts => {
Packit b3426c
		"B::Hooks::OP::Check" => "< 0.19",
Packit b3426c
	},
Packit b3426c
	dynamic_config => 0,
Packit b3426c
	meta_add => { distribution_type => "module" },
Packit b3426c
	meta_merge => {
Packit b3426c
		"meta-spec" => { version => "2" },
Packit b3426c
		resources => {
Packit b3426c
			bugtracker => {
Packit b3426c
				mailto => "bug-Devel-CallChecker\@rt.cpan.org",
Packit b3426c
				web => "https://rt.cpan.org/Public/Dist/".
Packit b3426c
					"Display.html?Name=Devel-CallChecker",
Packit b3426c
			},
Packit b3426c
		},
Packit b3426c
	},
Packit b3426c
	sign => 1,
Packit b3426c
)->create_build_script;
Packit b3426c
Packit b3426c
1;