diff options
author | Stefano Lattarini <stefano.lattarini@gmail.com> | 2013-05-27 11:14:22 +0200 |
---|---|---|
committer | Stefano Lattarini <stefano.lattarini@gmail.com> | 2013-05-28 11:12:10 +0200 |
commit | 6d4ffd8329ce1cd52d93406be25ff77367e23178 (patch) | |
tree | f7ae2f04650db095a0f67d257bb17194944edb48 /lib/Automake | |
parent | 55f82a803e59ad68a56714ddf008b4f82baea3a3 (diff) | |
download | automake-6d4ffd8329ce1cd52d93406be25ff77367e23178.tar.gz |
suffix rules: better distinction between builtin and user-derived
Fixes automake bug#14441.
* lib/Automake/Rule.pm ($_suffix_rules_default): Remove, superseded by ...
(%suffix_rules_builtin): ... this lexical variable.
($suffix_rules): Remove, superseded by ...
(%suffix_rules): ... this lexical variable.
(suffix_rules, suffix_rules_count): Adjust.
(register_suffix_rule): Update '%suffix_rules_builtin' rather than
'%suffix_rules' if the location (as passed by the '$where' argument)
is an "internal" one (doesn't come from user-provided Makefile.am).
(reset): Simplify resetting of '%suffix_rules' to the default ones
accordingly.
* t/list-of-tests.mk (XFAIL_TESTS): Drop test 'suffix-custom-pr14441.sh'.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Diffstat (limited to 'lib/Automake')
-rw-r--r-- | lib/Automake/Rule.pm | 31 |
1 files changed, 12 insertions, 19 deletions
diff --git a/lib/Automake/Rule.pm b/lib/Automake/Rule.pm index 5f6f3a239..ed1fa24e6 100644 --- a/lib/Automake/Rule.pm +++ b/lib/Automake/Rule.pm @@ -101,10 +101,6 @@ my $_SUFFIX_RULE_PATTERN = # Suffixes found during a run. use vars '@_suffixes'; -# Same as $suffix_rules (declared below), but records only the -# default rules supplied by the languages Automake supports. -use vars '$_suffix_rules_default'; - =item C<%dependencies> Holds the dependencies of targets which dependencies are factored. @@ -154,7 +150,11 @@ C<register_suffix_rule> function. =cut -my $suffix_rules; +my %suffix_rules; + +# Same as $suffix_rules, but records only the default rules +# supplied by the languages Automake supports. +my %suffix_rules_builtin; =item C<$KNOWN_EXTENSIONS_PATTERN> @@ -317,16 +317,7 @@ sub reset() { %_rule_dict = (); @_suffixes = (); - # The first time we initialize the variables, - # we save the value of $suffix_rules. - if (defined $_suffix_rules_default) - { - $suffix_rules = $_suffix_rules_default; - } - else - { - $_suffix_rules_default = $suffix_rules; - } + %suffix_rules = %suffix_rules_builtin; %dependencies = ( @@ -393,9 +384,9 @@ XXX 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]; + 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)> @@ -410,6 +401,8 @@ This upgrades the C<$suffix_rules> variables. sub register_suffix_rule ($$$) { my ($where, $src, $dest) = @_; + my $suffix_rules = $where->{'position'} ? \%suffix_rules + : \%suffix_rules_builtin; verb "Sources ending in $src become $dest"; push @_suffixes, $src, $dest; @@ -487,7 +480,7 @@ F<Makefile> (excluding predefined suffix rules). sub suffix_rules_count () { - return (scalar keys %$suffix_rules) - (scalar keys %$_suffix_rules_default); + return (scalar keys %suffix_rules) - (scalar keys %suffix_rules_builtin); } =item C<@list = suffixes> |