automake
[Top][All Lists]
Advanced

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

82-lang-finish.patch


From: Akim Demaille
Subject: 82-lang-finish.patch
Date: Fri, 23 Mar 2001 11:20:48 +0100

Index: ChangeLog
from  Akim Demaille  <address@hidden>
        * automake.in: (Language): Add attribute `_finish'.
        (&finish): New.
        (Automake): Adjust.
        (&lang_header_finish, &lang_yaccxx_finish, &lang_lexxx_finish)
        (&lang_asm_finish): Remove.
        
        
Index: automake.in
--- automake.in Fri, 23 Mar 2001 01:29:33 +0100 akim (am/f/39_automake.i 1.206 
755)
+++ automake.in Fri, 23 Mar 2001 01:55:52 +0100 akim (am/f/39_automake.i 1.206 
755)
@@ -38,7 +38,15 @@
         'flags' => '$',
         'linker' => '$',
         'output_arg' => '$',
-       'pure'   => '$');
+       'pure'   => '$',
+        '_finish' => '$');
+
+
+sub finish ($)
+{
+  my ($self) = @_;
+  &{$self->_finish} ();
+}
 
 
 package Automake;
@@ -739,7 +747,8 @@ sub initialize_per_input ()
                    'compile' => '$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) 
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)',
                    'compiler' => 'COMPILE',
                    'output-arg' => '-c',
-                   'extensions' => ['c']));
+                   'extensions' => ['c'],
+                   '_finish' => \&lang_c_finish));
 register_language ('cxx',
                   ('linker' => 'CXXLINK',
                    'autodep' => 'CXX',
@@ -748,7 +757,8 @@ sub initialize_per_input ()
                    'compiler' => 'CXXCOMPILE',
                    'output-arg' => '-c -o $@',
                    'pure' => 'yes',
-                   'extensions' => ['c++', 'cc', 'cpp', 'cxx', 'C']));
+                   'extensions' => ['c++', 'cc', 'cpp', 'cxx', 'C'],
+                   '_finish' => \&lang_cxx_finish));
 register_language ('objc',
                   ('linker' => 'OBJCLINK',
                    'autodep' => 'OBJC',
@@ -757,26 +767,33 @@ sub initialize_per_input ()
                    'compiler' => 'OBJCCOMPILE',
                    'output-arg' => '-c -o $@',
                    'pure' => 'yes',
-                   'extensions' => ['m']));
+                   'extensions' => ['m'],
+                   '_finish' => \&lang_objc_finish));
 register_language ('header',
-                  ('extensions' => ['h', 'H', 'hxx', 'h++', 'hh', 'hpp', 
'inc']));
+                  ('extensions' => ['h', 'H', 'hxx', 'h++', 'hh', 'hpp', 
'inc'],
+                   # Nothing to do.
+                   '_finish' => sub { }));
 # For now, yacc and lex can't be handled on a per-exe basis.
 register_language ('yacc',
                   ('ansi' => '1',
                    'derived-autodep' => 'yes',
-                   'extensions' => ['y']));
+                   'extensions' => ['y'],
+                   '_finish' => \&lang_yacc_finish));
 register_language ('yaccxx',
                   ('linker' => 'CXXLINK',
                    'derived-autodep' => 'yes',
-                   'extensions' => ['y++', 'yy', 'yxx', 'ypp']));
+                   'extensions' => ['y++', 'yy', 'yxx', 'ypp'],
+                   '_finish' => \&lang_yacc_finish));
 register_language ('lex',
                   ('ansi' => '1',
                    'derived-autodep' => 'yes',
-                   'extensions' => ['l']));
+                   'extensions' => ['l'],
+                   '_finish' => \&lang_lex_finish));
 register_language ('lexxx',
                   ('linker' => 'CXXLINK',
                    'derived-autodep' => 'yes',
-                   'extensions' => ['l++', 'll', 'lxx', 'lpp']));
+                   'extensions' => ['l++', 'll', 'lxx', 'lpp'],
+                   '_finish' => \&lang_lex_finish));
 register_language ('asm',
                   ('flags' => 'CFLAGS',
                    # FIXME: asmflags?
@@ -784,7 +801,9 @@ sub initialize_per_input ()
                    # FIXME: a different compiler?
                    'compiler' => 'COMPILE',
                    'output-arg' => '-c',
-                   'extensions' => ['s', 'S']));
+                   'extensions' => ['s', 'S'],
+                   # We need the C code for assembly.
+                   '_finish' => \&lang_c_finish));
 
 register_language ('f77',
                   ('linker' => 'F77LINK',
@@ -793,7 +812,8 @@ sub initialize_per_input ()
                    'compiler' => 'F77COMPILE',
                    'output-arg' => '-c -o $@',
                    'pure' => 'yes',
-                   'extensions' => ['f', 'for', 'f90']));
+                   'extensions' => ['f', 'for', 'f90'],
+                   '_finish' => \&lang_f77_finish));
 register_language ('ppf77',
                   ('linker' => 'F77LINK',
                    'flags' => 'FFLAGS',
@@ -801,7 +821,8 @@ sub initialize_per_input ()
                    'compiler' => 'PPF77COMPILE',
                    'output-arg' => '-c -o $@',
                    'pure' => 'yes',
-                   'extensions' => ['F']));
+                   'extensions' => ['F'],
+                   '_finish' => \&lang_ppf77_finish));
 register_language ('ratfor',
                   ('linker' => 'F77LINK',
                    'flags' => 'RFLAGS',
@@ -810,7 +831,8 @@ sub initialize_per_input ()
                    'compiler' => 'RCOMPILE',
                    'output-arg' => '-c -o $@',
                    'pure' => 'yes',
-                   'extensions' => ['r']));
+                   'extensions' => ['r'],
+                   '_finish' => \&lang_ratfor_finish));
 # FIXME: for now we can't do dependency tracking for Java.
 # autodep=GCJ
 register_language ('java',
@@ -820,7 +842,8 @@ sub initialize_per_input ()
                    'compiler' => 'GCJCOMPILE',
                    'output-arg' => '-c -o $@',
                    'pure' => 'yes',
-                   'extensions' => ['java', 'class', 'zip', 'jar']));
+                   'extensions' => ['java', 'class', 'zip', 'jar'],
+                   '_finish' => \&lang_java_finish));
 
 ################################################################
 
@@ -1345,8 +1368,9 @@ sub finish_languages
        }
 
        # Compute the function name of the finisher and then call it.
-       my $name = 'lang_' . $lang . '_finish';
-       & $name ();
+       $lang_obj->finish;
+       #my $name = 'lang_' . $lang . '_finish';
+       #& $name ();
     }
 
     # If the project is entirely C++ or entirely Fortran 77 (i.e., 1
@@ -4920,11 +4944,6 @@ sub lang_cxx_finish
     }
 }
 
-sub lang_header_finish
-{
-    # Nothing to do.
-}
-
 # This is a helper for both lex and yacc.
 sub yacc_lex_finish_helper
 {
@@ -5005,10 +5024,6 @@ sub lang_yacc_finish
     }
 }
 
-sub lang_yaccxx_finish
-{
-    &lang_yacc_finish;
-}
 
 sub lang_lex_finish
 {
@@ -5051,16 +5066,6 @@ sub lang_lex_finish
     }
 }
 
-sub lang_lexxx_finish
-{
-    &lang_lex_finish;
-}
-
-sub lang_asm_finish
-{
-    # We need the C code for assembly.
-    &lang_c_finish;
-}
 
 sub lang_f77_finish
 {
@@ -5254,6 +5259,16 @@ sub register_language ($%)
        {
          $lang_obj->derived_autodep ($value);
        }
+      elsif ($attr eq 'extensions')
+       {
+         # This array accessor is stupid...
+         my $cnt = 0;
+         foreach (@{$value})
+           {
+             $lang_obj->extensions ($cnt, $_);
+             ++$cnt;
+           }
+       }
       elsif ($attr eq 'flags')
        {
          $lang_obj->flags ($value);
@@ -5270,19 +5285,13 @@ sub register_language ($%)
        {
          $lang_obj->pure ($value);
        }
-      elsif ($attr eq 'extensions')
+      elsif ($attr eq '_finish')
        {
-         # This array accessor is stupid...
-         my $cnt = 0;
-         foreach (@{$value})
-           {
-             $lang_obj->extensions ($cnt, $_);
-             ++$cnt;
-           }
+         $lang_obj->_finish ($value);
        }
       else
        {
-         prog_error ("register_language: invalid attribute: $attr");
+         prog_error ("register_language: $lang: invalid attribute: $attr");
        }
     }
 



reply via email to

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