Blame Build.PL

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