Automake::Rule: expose suffix rules as a function, not a scalar
authorStefano Lattarini <stefano.lattarini@gmail.com>
Mon, 27 May 2013 08:44:06 +0000 (10:44 +0200)
committerStefano Lattarini <stefano.lattarini@gmail.com>
Tue, 28 May 2013 09:08:53 +0000 (11:08 +0200)
This is just a preparatory refactoring in view of future patches.
No semantic change is intended.

* lib/Automake/Rule.pm ($suffix_rules): Turn from a package-level
variable to a lexical variable.
(suffix_rule): New function, expose the details of $suffix_rules
that are actually required by code outside thus modules --- and
only those details, no more.
(@EXPORT): Adjust.
* automake.in (derive_suffix): Likewise.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
automake.in
lib/Automake/Rule.pm

index ef2cf6d..7829875 100644 (file)
@@ -5990,12 +5990,11 @@ sub derive_suffix ($$)
 {
   my ($source_ext, $obj) = @_;
 
-  while (! $extension_map{$source_ext}
-        && $source_ext ne $obj
-        && exists $suffix_rules->{$source_ext}
-        && exists $suffix_rules->{$source_ext}{$obj})
+  while (!$extension_map{$source_ext} && $source_ext ne $obj)
     {
-      $source_ext = $suffix_rules->{$source_ext}{$obj}[0];
+      my $new_source_ext = suffix_rule ($source_ext, $obj);
+      last if not defined $new_source_ext;
+      $source_ext = $new_source_ext;
     }
 
   return $source_ext;
index 47f3a9d..5f6f3a2 100644 (file)
@@ -29,8 +29,8 @@ use Automake::DisjConditions;
 require Exporter;
 use vars '@ISA', '@EXPORT', '@EXPORT_OK';
 @ISA = qw/Automake::Item Exporter/;
-@EXPORT = qw (reset register_suffix_rule suffix_rules_count
-             suffixes rules $suffix_rules $KNOWN_EXTENSIONS_PATTERN
+@EXPORT = qw (reset register_suffix_rule suffix_rules_count suffix_rule
+             suffixes rules $KNOWN_EXTENSIONS_PATTERN
              depend %dependencies %actions register_action
              accept_extensions
              reject_rule msg_rule msg_cond_rule err_rule err_cond_rule
@@ -154,7 +154,7 @@ C<register_suffix_rule> function.
 
 =cut
 
-use vars '$suffix_rules';
+my $suffix_rules;
 
 =item C<$KNOWN_EXTENSIONS_PATTERN>
 
@@ -384,6 +384,20 @@ sub reset()
   %actions = ();
 }
 
+=item C<suffix_rule ($ext, $obj)>
+
+XXX
+
+=cut
+
+sub suffix_rule ($$)
+{
+  my ($source_ext, $obj) = @_;
+  return undef unless (exists $suffix_rules->{$source_ext} and
+                       exists $suffix_rules->{$source_ext}{$obj});
+  return $suffix_rules->{$source_ext}{$obj}[0];
+}
+
 =item C<register_suffix_rule ($where, $src, $dest)>
 
 Register a suffix rule defined on C<$where> that transforms