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},

Reply via email to