summaryrefslogtreecommitdiff
path: root/ext/Encode/Makefile.PL
blob: 6a0e1c59b009b0f837926fde156cfac891f28bd7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
use ExtUtils::MakeMaker;

my %tables = (iso8859 => ['ascii.enc', 'cp1250.enc'],
              EBCDIC  => ['cp1047.enc','cp37.enc','posix-bc.enc'],
              Symbols => ['symbol.enc','dingbats.enc'],
             );

opendir(ENC,'Encode');
while (defined(my $file = readdir(ENC)))
 {
  if ($file =~ /iso8859.*\.enc/)
   {
    push(@{$tables{iso8859}},$file);
   }
 }
closedir(ENC);


WriteMakefile(
	NAME		=> "Encode",
	VERSION_FROM	=> 'Encode.pm',
	OBJECT		=> '$(O_FILES)',
	'dist'		=> {
			     COMPRESS	=> 'gzip -9f',
	      		     SUFFIX	=> 'gz',
	      		     DIST_DEFAULT => 'all tardist',
			   },
	MAN3PODS	=> {},
);

package MY;


sub post_initialize
{
 my ($self) = @_;
 my %o;
 # Find existing O_FILES
 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
 $self->{'O_FILES'} = [sort keys %o];
 my @files;
 foreach my $table (keys %tables)
  {
   foreach my $ext (qw($(OBJ_EXT) .c .h .def .fnm))
    {
     push (@files,$table.$ext);
    }
  }
 $self->{'clean'}{'FILES'} .= join(' ',@files);
 return '';
}

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";
 $str  .= 'Encode$(OBJ_EXT) :';
 foreach my $table (keys %tables)
  {
   $str .= " $table.c";
  }
 $str .= "\n\n";
 foreach my $table (keys %tables)
  {
   my $numlines = 1;
   my $lengthsofar = length($str);
   my $continuator = '';
   $str .= "$table.c : compile Makefile.PL";
   foreach my $file (@{$tables{$table}})
    {
     $str .= $continuator.' '.$self->catfile($dir,$file);
     if ( length($str)-$lengthsofar > 128*$numlines )
      {
       $continuator .= " \\\n\t";
       $numlines++;
      } else {
       $continuator = '';
      }
    }
   $str .= "\n\t\$(PERL) compile -o \$\@ -F $table.fnm\n\n";
   open (FILELIST, ">$table.fnm")
       || die "Could not open $table.fnm: $!";
   foreach my $file (@{$tables{$table}})
    {
     print FILELIST $self->catfile($dir,$file) . "\n";
    }
   close(FILELIST);
  }
 return $str;
}