The attached patch replaces the _cbuilder method with a public cbuilder
method, as discussed.
-zefram
--- Module-Build-0.2808_01.mod0/lib/Module/Build/Base.pm 2007-10-25
19:22:56.264034077 +0100
+++ Module-Build-0.2808_01.mod1/lib/Module/Build/Base.pm 2007-10-25
19:30:46.107001947 +0100
@@ -3907,13 +3907,14 @@
AutoSplit::autosplit($file, $dir);
}
-sub _cbuilder {
+sub cbuilder {
# Returns a CBuilder object
my $self = shift;
my $p = $self->{properties};
return $p->{_cbuilder} if $p->{_cbuilder};
- return unless $self->_mb_feature('C_support');
+ die "Module::Build is not configured with C_support"
+ unless $self->_mb_feature('C_support');
require ExtUtils::CBuilder;
return $p->{_cbuilder} = ExtUtils::CBuilder->new(config => $self->config);
@@ -3926,7 +3927,7 @@
return $p->{have_compiler} if defined $p->{have_compiler};
$self->log_verbose("Checking if compiler tools configured... ");
- my $b = $self->_cbuilder;
+ my $b = eval { $self->cbuilder };
my $have = $b && $b->have_compiler;
$self->log_verbose($have ? "ok.\n" : "failed.\n");
return $p->{have_compiler} = $have;
@@ -3934,8 +3935,7 @@
sub compile_c {
my ($self, $file, %args) = @_;
- my $b = $self->_cbuilder
- or die "Module::Build is not configured with C_support";
+ my $b = $self->cbuilder;
my $obj_file = $b->object_file($file);
$self->add_to_cleanup($obj_file);
@@ -3968,9 +3968,7 @@
my $module_name = $self->module_name;
$module_name ||= $spec->{module_name};
- my $b = $self->_cbuilder
- or die "Module::Build is not configured with C_support";
- $b->link(
+ $self->cbuilder->link(
module_name => $module_name,
objects => [$spec->{obj_file}, @$objects],
lib_file => $spec->{lib_file},