Author: dagolden
Date: Tue Mar 16 17:07:08 2010
New Revision: 13863

Modified:
   Module-Build/trunk/Changes
   Module-Build/trunk/lib/Module/Build/API.pod
   Module-Build/trunk/lib/Module/Build/Base.pm

Log:
Support anonymous array of directories for c_source



Modified: Module-Build/trunk/Changes
==============================================================================
--- Module-Build/trunk/Changes  (original)
+++ Module-Build/trunk/Changes  Tue Mar 16 17:07:08 2010
@@ -13,6 +13,8 @@
 
  - For VMS: fixed prefix handling plus other test fixes [Craig Berry]
 
+ - Support anonymous array of directories for c_source [Alberto Simões]
+
 0.3603 - Mon Jan 18 22:28:59 EST 2010
 
 (Oops, I released the last one before I realized this should have been

Modified: Module-Build/trunk/lib/Module/Build/API.pod
==============================================================================
--- Module-Build/trunk/lib/Module/Build/API.pod (original)
+++ Module-Build/trunk/lib/Module/Build/API.pod Tue Mar 16 17:07:08 2010
@@ -181,6 +181,11 @@
 directory will be added to the search path during the compilation and
 linking phases of any C or XS files.
 
+[version 0.3604]
+
+A list of directories can be supplied using an anonymous array
+reference of strings.
+
 =item conflicts
 
 [version 0.07]

Modified: Module-Build/trunk/lib/Module/Build/Base.pm
==============================================================================
--- Module-Build/trunk/lib/Module/Build/Base.pm (original)
+++ Module-Build/trunk/lib/Module/Build/Base.pm Tue Mar 16 17:07:08 2010
@@ -2728,11 +2728,19 @@
   my $p = $self->{properties};
   return unless $p->{c_source};
 
-  push @{$p->{include_dirs}}, $p->{c_source};
+  my $files;
+  if (ref($p->{c_source}) eq "ARRAY") {
+      push @{$p->{include_dirs}}, @{$p->{c_source}};
+      for my $path (@{$p->{c_source}}) {
+          push @$files, @{ $self->rscan_dir($path, 
file_qr('\.c(c|p|pp|xx|\+\+)?$')) };
+      }
+  } else {
+      push @{$p->{include_dirs}}, $p->{c_source};
+      $files = $self->rscan_dir($p->{c_source}, 
file_qr('\.c(c|p|pp|xx|\+\+)?$'));
+  }
 
-  my $files = $self->rscan_dir($p->{c_source}, 
file_qr('\.c(c|p|pp|xx|\+\+)?$'));
   foreach my $file (@$files) {
-    push @{$p->{objects}}, $self->compile_c($file);
+      push @{$p->{objects}}, $self->compile_c($file);
   }
 }
 

Reply via email to