There is one significant semantic difference, but I doubt it was
meant, hence was insignificant :) Have a look at:
$language_map{"$lang-autodep"} = 'no';
$language_map{"$lang-derived-autodep"} = 'no';
and
foreach my $key (sort keys %language_map)
{
next unless $key =~ /^(.*)-autodep$/;
next if $language_map{$key} eq 'no';
&add_depend2 ($1);
}
it result in `add_depend2 (c-derived)' and so on. And it's
extraordinary to see add_depend2 being robust to these nasty calls!
For instance yacc.test exhibits:
=== Running test ./yacc.test
add_depend2 (c)
add_depend2 (cxx)
add_depend2 (lex-derived)
add_depend2 (lexxx-derived)
add_depend2 (objc)
add_depend2 (yacc-derived)
add_depend2 (yaccxx-derived)
depcomp install-sh missing mkinstalldirs zardoz.c
-test -z "zardoz.c" || rm -f zardoz.c
PASS: yacc.test
With this patch it no longer does.
Actually I'm realizing it does make a significant difference! With my
patch you get:
add_depend2 (cxx)
add_depend2 (c)
add_depend2 (objc)
where I would have expected to see lex, yacc etc.
The patch makes no difference on the Makefile.ins. I'm not sure I
understand well everything. Help...
Index: ChangeLog
from Akim Demaille <[EMAIL PROTECTED]>
* automake.in (&handle_single_transform_list, &finish_languages)
(&handle_dist, &handle_dependencies): Use the language object for
autodep and derived-autodep too.
Index: automake.in
--- automake.in Wed, 21 Mar 2001 01:38:53 +0100 akim (am/f/39_automake.i 1.201 755)
+++ automake.in Wed, 21 Mar 2001 01:48:58 +0100 akim (am/f/39_automake.i 1.201 755)
@@ -1255,13 +1255,14 @@ sub finish_languages
foreach my $ext (sort keys %extension_seen)
{
my $lang = $extension_map{$ext};
+ my $lang_obj = $languages{$lang};
# Generate the appropriate rules for this extension. If
# dependency tracking was requested, and this extension
# supports it, then we don't generate the rule here.
my $comp = '';
- if ($use_dependencies && $language_map{"$lang-autodep"} ne 'no')
+ if ($use_dependencies && $lang_obj->autodep ne 'no')
{
# Don't generate the rule, but still generate the variables.
if (exists $language_map{"$lang-compile"})
@@ -1455,7 +1456,6 @@ sub handle_single_transform_list ($$$@)
$extension = &derive_suffix ($extension);
my $lang = $extension_map{$extension};
- # Extract the language object.
my $lang_obj = $languages{$lang};
if ($lang)
{
@@ -1551,7 +1551,7 @@ sub handle_single_transform_list ($$$@)
# generated later, by add_depend2.
if (($use_dependencies
&& $rule ne ''
- && $language_map{"$lang-autodep"} ne 'no')
+ && $lang_obj->autodep ne 'no')
|| $directory ne '')
{
$rule = '';
@@ -1665,8 +1665,8 @@ sub handle_single_transform_list ($$$@)
# Transform .o or $o file into .P file (for automatic
# dependency code).
if ($lang
- && ($language_map{"$lang-autodep"} ne 'no'
- || $language_map{"$lang-derived-autodep"} eq 'yes'))
+ && ($lang_obj->autodep ne 'no'
+ || $lang_obj->derived_autodep eq 'yes'))
{
my $depfile = $object;
$depfile =~ s/\.([^.]*)$/.P$1/;
@@ -2990,9 +2990,9 @@ sub handle_dist
sub add_depend2
{
my ($lang) = @_;
-
+ my $lang_obj = $languages{$lang};
# Get information on $LANG.
- my $pfx = $language_map{"$lang-autodep"};
+ my $pfx = $lang_obj->autodep;
my $fpfx = ($pfx eq '') ? 'CC' : $pfx;
my $flag = $language_map{"$lang-flags"} || '';
@@ -3116,11 +3116,12 @@ sub handle_dependencies
&define_variable ('depcomp', '');
}
- foreach my $key (sort keys %language_map)
+ while (my ($lang, $lang_obj) = each %languages)
{
- next unless $key =~ /^(.*)-autodep$/;
- next if $language_map{$key} eq 'no';
- &add_depend2 ($1);
+ if ($lang_obj->autodep ne 'no')
+ {
+ add_depend2 ($lang);
+ }
}
}