automake
[Top][All Lists]
Advanced

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

77-language-class.patch


From: Akim Demaille
Subject: 77-language-class.patch
Date: Fri, 23 Mar 2001 11:20:43 +0100

Index: ChangeLog
from  Akim Demaille  <address@hidden>

        * automake.in (Language): New package, temporarily in this file.
        Use Class::Struct.
        (Automake): New package.
        (%languages): New.
        (&handle_single_transform_list): Use the language object's `ansi'
        attribute instead of `$language_map{"$lang-ansi-p"}'.
        (&register_language): Build and register the language too.

Index: automake.in
--- automake.in Sun, 18 Mar 2001 20:59:31 +0100 akim (am/f/39_automake.i 1.200 
755)
+++ automake.in Wed, 21 Mar 2001 01:31:42 +0100 akim (am/f/39_automake.i 1.200 
755)
@@ -27,6 +27,17 @@
 # Originally written by David Mackenzie <address@hidden>.
 # Perl reimplementation by Tom Tromey <address@hidden>.

+package Language;
+use Class::Struct;
+struct ('ansi'    => '$',
+       'autodep' => '$',
+       'derived_autodep' => '$',
+        'linker' => '$',
+       'pure'   => '$');
+
+
+package Automake;
+
 require 5.005;
 use strict 'vars', 'subs';
 use File::Basename;
@@ -390,6 +401,8 @@

 # This maps languages names onto properties.
 my %language_map = ();
+# This maps languages names onto objects.
+my %languages = ();

 # List of targets we must always output.
 # FIXME: Complete, and remove falsely required targets.
@@ -1442,6 +1455,8 @@ 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)
         {
             &saw_extension ($extension);
@@ -1456,7 +1471,10 @@ sub handle_single_transform_list ($$$@)
             $linker = $language_map{"$lang-linker"};

             my $this_obj_ext;
-            if ($language_map{"$lang-ansi-p"})
+           prog_error ("$lang-ansi-p = " . $language_map{"$lang-ansi-p"}
+                       . " != ". $lang_obj->ansi)
+             if $language_map{"$lang-ansi-p"} != $lang_obj->ansi;
+            if ($lang_obj->ansi)
             {
                 $object = $base . $obj;
                 $this_obj_ext = $obj;
@@ -5206,6 +5224,15 @@ sub register_language
            $extension_map{$iter} = $lang;
        }
     }
+
+    my $obj = new Language;
+    $obj->ansi ($language_map{"$lang-ansi-p"});
+    $obj->autodep ($language_map{"$lang-autodep"});
+    $obj->derived_autodep ($language_map{"$lang-derived-autodep"});
+    $obj->linker ($language_map{"$lang-linker"});
+    $obj->pure ($language_map{"$lang-pure"});
+
+    $languages{$lang} = $obj;
 }

 # This function is used to find a path from a user-specified suffix to



reply via email to

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