lang, suffix rules: don't require C stuff needlessly
[platform/upstream/automake.git] / automake.in
index 7829875..835d3bd 100644 (file)
@@ -1572,10 +1572,11 @@ sub handle_languages
     # If the project is entirely C++ or entirely Fortran 77 (i.e., 1
     # suffix rule was learned), don't bother with the C stuff.  But if
     # anything else creeps in, then use it.
-    $needs_c = 1
-      if $need_link || suffix_rules_count > 1;
-
-    if ($needs_c)
+    my @languages_seen = map { $languages{$extension_map{$_}}->name }
+                             (keys %extension_seen);
+    @languages_seen = uniq (@languages_seen);
+    $needs_c = 1 if @languages_seen > 1;
+    if ($need_link || $needs_c)
       {
        &define_compiler_variable ($languages{'c'})
          unless defined $done{$languages{'c'}};
@@ -5972,7 +5973,7 @@ sub register_language (%)
   # Update the pattern of known extensions.
   accept_extensions (@{$lang->extensions});
 
-  # Update the $suffix_rule map.
+  # Update the suffix rules map.
   foreach my $suffix (@{$lang->extensions})
     {
       foreach my $dest (&{$lang->output_extensions} ($suffix))
@@ -5992,7 +5993,7 @@ sub derive_suffix ($$)
 
   while (!$extension_map{$source_ext} && $source_ext ne $obj)
     {
-      my $new_source_ext = suffix_rule ($source_ext, $obj);
+      my $new_source_ext = next_in_suffix_chain ($source_ext, $obj);
       last if not defined $new_source_ext;
       $source_ext = $new_source_ext;
     }