automake
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

78-lang-autodep.patch


From: Akim Demaille
Subject: 78-lang-autodep.patch
Date: Fri, 23 Mar 2001 11:20:38 +0100

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  <address@hidden>
        * 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);
+         }
     }
 }



reply via email to

[Prev in Thread] Current Thread [Next in Thread]