VMS friendly patch to Encode compile process
Nick Ing-Simmons [Sat, 13 Jan 2001 11:31:55 +0000 (11:31 +0000)]
p4raw-id: //depot/perlio@8433

ext/Encode/Makefile.PL
ext/Encode/compile

index 4b1ec95..c86dacf 100644 (file)
@@ -39,19 +39,19 @@ sub post_initialize
  foreach my $f (@{$self->{'O_FILES'}})
   {
    $o{$f} = 1;
-  } 
+  }
  my $x = $self->{'OBJ_EXT'};
  # Add the table O_FILES
  foreach my $e (keys %tables)
   {
    $o{$e.$x} = 1;
-  }  
- # Reset the variable 
+  }
+ # Reset the variable
  $self->{'O_FILES'} = [sort keys %o];
  my @files;
  foreach my $table (keys %tables)
   {
-   foreach my $ext (qw($(OBJ_EXT) .c .h .def))
+   foreach my $ext (qw($(OBJ_EXT) .c .h .def .fnm))
     {
      push (@files,$table.$ext);
     }
@@ -64,9 +64,8 @@ sub postamble
 {
  my $self = shift;
  my $dir  = $self->catdir($self->curdir,'Encode');
- my $str  = "# Encode$(OBJ_EXT) depends on .h and .def files not .c files - but all written by compile\n";
+ my $str  = "# Encode\$(OBJ_EXT) depends on .h and .def files not .c files - but all written by compile\n";
  $str  .= 'Encode$(OBJ_EXT) :';
- my @rules;
  foreach my $table (keys %tables)
   {
    $str .= " $table.c";
@@ -89,22 +88,14 @@ sub postamble
        $continuator = '';
       }
     }
-   $numlines = 1;
-   $lengthsofar = length($str);
-   $continuator = '';
-   $str .= "\n\t\$(PERL) compile \$\@";
+   $str .= "\n\t\$(PERL) compile \$\@ $table.fnm\n\n";
+   open (FILELIST, ">$table.fnm")
+       || die "Could not open $table.fnm: $!";
    foreach my $file (@{$tables{$table}})
     {
-     $str .= $continuator.' '.$self->catfile($dir,$file);
-     if ( length($str)-$lengthsofar > 128*$numlines )
-      {
-       $continuator .= "\n\t\$(PERL) compile \$\@";
-       $numlines++;
-      } else {
-       $continuator = '';
-      }
+     print FILELIST $self->catfile($dir,$file) . "\n";
     }
-   $str .= "\n\n";
+   close(FILELIST);
   }
  return $str;
 }
index b890a04..03cea19 100755 (executable)
@@ -92,6 +92,12 @@ elsif ($cname =~ /\.ucm$/)
   $doUcm = 1;
  }
 
+# 2nd argument is file containing list of filenames
+my $flist = shift(@ARGV);
+open(FLIST,$flist) || die "Cannot open $flist:$!";
+chomp(my @encfiles = <FLIST>);
+close(FLIST);
+
 my %encoding;
 my %strings;
 
@@ -109,7 +115,7 @@ sub cmp_name
  return $a cmp $b;
 }
 
-foreach my $enc (sort cmp_name @ARGV)
+foreach my $enc (sort cmp_name @encfiles)
  {
   my ($name,$sfx) = $enc =~ /^.*?([\w-]+)\.(enc|ucm)$/;
   if (open(E,$enc))