]> git.ipfire.org Git - thirdparty/automake.git/commitdiff
Change signature of 'Automake::Options::_process_option_list()'.
authorStefano Lattarini <stefano.lattarini@gmail.com>
Mon, 20 Dec 2010 15:59:08 +0000 (16:59 +0100)
committerStefano Lattarini <stefano.lattarini@gmail.com>
Sat, 15 Jan 2011 14:26:55 +0000 (15:26 +0100)
This only modifies internal details in the automake implementation,
bearing no externally visible effect, but preparing the way for the
final fix of Automake bug#7669 a.k.a. PR/547.

* lib/Automake/Options.pm (_process_option_list): Now accepts as
arguments a list of hash references with keys 'option' and 'where',
where 'option' is an option as might occur in AUTOMAKE_OPTIONS or
M_INIT_AUTOMAKE, and 'where' is the location where that occurred.
(process_option_list, process_global_option_list): Update.
* automake.in (handle_options, scan_autoconf_traces): Update.

ChangeLog
automake.in
lib/Automake/Options.pm

index fbe930ac27b715722f120cc50d60f33ba6384793..6c65edf380cf0eb2804f8a12508f539c17cac135 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,17 @@
 2011-01-15  Stefano Lattarini  <stefano.lattarini@gmail.com>
 
+       For PR automake/547:
+       Change signature of 'Automake::Options::_process_option_list()'.
+       This only modifies internal details in the automake implementation,
+       bearing no externally visible effect, but preparing the way for the
+       final fix of Automake bug#7669 a.k.a. PR/547.
+       * lib/Automake/Options.pm (_process_option_list): Accept as
+       arguments a list of hash references with keys 'option' and 'where',
+       where 'option' is an option as might occur in AUTOMAKE_OPTIONS or
+       AM_INIT_AUTOMAKE, and 'where' is the location where it occurred.
+       (process_option_list, process_global_option_list): Updated.
+       * automake.in (handle_options, scan_autoconf_traces): Update.
+
        Add more tests about AUTOMAKE_OPTIONS.
        In view of soon-to-follow refactorings (still in the pursuit of a
        fix for Automake bug#7669 a.k.a. PR/547), add some more tests on
index e80a7361bc02b651af5e3ce8664207ff4bc8aa99..5d5af933dbeacea9b7f83b24de072f06b415463e 100644 (file)
@@ -1247,8 +1247,9 @@ sub handle_options
       foreach my $locvals ($var->value_as_list_recursive (cond_filter => TRUE,
                                                          location => 1))
        {
-         my ($loc, $value) = @$locvals;
-         return 1 if (process_option_list ($loc, $value))
+         my ($where, $value) = @$locvals;
+         return 1 if process_option_list ({ option => $value,
+                                              where => $where});
        }
     }
 
@@ -5469,9 +5470,9 @@ sub scan_autoconf_traces ($)
            }
          elsif (defined $args[1])
            {
-             exit $exit_code
-               if (process_global_option_list ($where,
-                                               split (' ', $args[1])));
+             my @opts = split (' ', $args[1]);
+             @opts = map { { option => $_, where => $where } } @opts;
+             exit $exit_code if process_global_option_list (@opts);
            }
        }
       elsif ($macro eq 'AM_MAINTAINER_MODE')
index a3607c3f7dc7f099bd6251a7ce06ce8ef1131f66..9f221784add0bf35f087406d6b80da5de30f9caa 100644 (file)
@@ -222,12 +222,14 @@ sub unset_global_option ($)
 }
 
 
-=item C<process_option_list ($where, @options)>
+=item C<process_option_list (@list)>
 
-=item C<process_global_option_list ($where, @options)>
+=item C<process_global_option_list (@list)>
 
-Process Automake's option lists.  C<@options> should be a list of
-words, as they occur in C<AUTOMAKE_OPTIONS> or C<AM_INIT_AUTOMAKE>.
+Process Automake's option lists.  C<@list> should be a list of hash
+references with keys C<option> and C<where>, where C<option> is an
+option as they occur in C<AUTOMAKE_OPTIONS> or C<AM_INIT_AUTOMAKE>,
+and C<where> is the location where that option occurred.
 
 These functions should be called at most once for each set of options
 having the same precedence; i.e., do not call it twice for two options
@@ -238,18 +240,21 @@ Return 1 on error, 0 otherwise.
 =cut
 
 # $BOOL
-# _process_option_list (\%OPTIONS, $WHERE, @OPTIONS)
-# --------------------------------------------------
-# Process a list of options.  Return 1 on error, 0 otherwise.
-# \%OPTIONS is the hash to fill with options data, $WHERE is
-# the location where @OPTIONS occurred.
-sub _process_option_list (\%$@)
+# _process_option_list (\%OPTIONS, @LIST)
+# ------------------------------------------
+# Process a list of options.  \%OPTIONS is the hash to fill with options
+# data.  @LIST is a list of options as get passed to public subroutines
+# process_option_list() and process_global_option_list() (see POD
+# documentation above).
+sub _process_option_list (\%@)
 {
-  my ($options, $where, @list) = @_;
+  my ($options, @list) = @_;
   my @warnings = ();
 
-  foreach (@list)
+  foreach my $h (@list)
     {
+      my $_ = $h->{'option'};
+      my $where = $h->{'where'};
       $options->{$_} = $where;
       if ($_ eq 'gnits' || $_ eq 'gnu' || $_ eq 'foreign')
        {
@@ -318,7 +323,8 @@ sub _process_option_list (\%$@)
        }
       elsif (/^(?:--warnings=|-W)(.*)$/)
        {
-         push @warnings, split (',', $1);
+         my @w = map { { cat => $_, loc => $where} } split (',', $1);
+         push @warnings, @w;
        }
       else
        {
@@ -330,24 +336,23 @@ sub _process_option_list (\%$@)
   # We process warnings here, so that any explicitly-given warning setting
   # will take precedence over warning settings defined implicitly by the
   # strictness.
-  foreach my $cat (@warnings)
+  foreach my $w (@warnings)
     {
-      msg 'unsupported', $where, "unknown warning category `$cat'"
-       if switch_warning $cat;
+      msg 'unsupported', $w->{'loc'},
+          "unknown warning category `$w->{'cat'}'"
+       if switch_warning $w->{cat};
     }
   return 0;
 }
 
-sub process_option_list ($@)
+sub process_option_list (@)
 {
-  my ($where, @list) = @_;
-  return _process_option_list (%_options, $where, @list);
+  return _process_option_list (%_options, @_);
 }
 
-sub process_global_option_list ($@)
+sub process_global_option_list (@)
 {
-  my ($where, @list) = @_;
-  return _process_option_list (%_global_options, $where, @list);
+  return _process_option_list (%_global_options, @_);
 }
 
 =item C<set_strictness ($name)>