Actually submit previous change.
[p5sagit/p5-mst-13.2.git] / ext / Encode / KR / Makefile.PL
index cbcc775..e95d039 100644 (file)
@@ -1,29 +1,46 @@
 use 5.7.2;
 use strict;
 use ExtUtils::MakeMaker;
+use strict;
 
 my %tables = (euc_kr_t   => ['euc-kr.ucm',
-                            'cp949.ucm',
-                            ],
-             '5601_t'   => ['ksc5601.ucm'],
+                 'macKorean.ucm',
+                 'cp949.ucm',
+                 ],
+          '5601_t'   => ['ksc5601.ucm'],
+          johab_t    => ['johab.ucm'],
              );
 
+unless ($ENV{AGGREGATE_TABLES}){
+    my @ucm;
+    for my $k (keys %tables){
+    push @ucm, @{$tables{$k}};
+    }
+    %tables = ();
+    my $seq = 0;
+    for my $ucm (sort @ucm){
+    # 8.3 compliance !
+    my $t = sprintf ("%s_%02d_t", substr($ucm, 0, 2), $seq++);
+    $tables{$t} = [ $ucm ];
+    }
+}
+
 my $name = 'KR';
 
 WriteMakefile(
-              INC              => "-I..",
-             NAME              => 'Encode::'.$name,
-             VERSION_FROM      => "$name.pm",
-             OBJECT            => '$(O_FILES)',
-             'dist'            => {
-                 COMPRESS      => 'gzip -9f',
-                 SUFFIX        => 'gz',
-                 DIST_DEFAULT => 'all tardist',
-             },
-             MAN3PODS  => {},
-             # OS 390 winges about line numbers > 64K ???
-             XSOPT => '-nolinenumbers',
-             );
+              INC              => "-I../Encode",
+          NAME         => 'Encode::'.$name,
+          VERSION_FROM => "$name.pm",
+          OBJECT               => '$(O_FILES)',
+          'dist'               => {
+          COMPRESS     => 'gzip -9f',
+          SUFFIX       => 'gz',
+          DIST_DEFAULT => 'all tardist',
+          },
+          MAN3PODS     => {},
+          # OS 390 winges about line numbers > 64K ???
+          XSOPT => '-nolinenumbers',
+          );
 
 package MY;
 
@@ -35,21 +52,25 @@ sub post_initialize
     # Add the table O_FILES
     foreach my $e (keys %tables)
     {
-       $o{$e.$x} = 1;
+    $o{$e.$x} = 1;
     }
     $o{"$name$x"} = 1;
     $self->{'O_FILES'} = [sort keys %o];
     my @files = ("$name.xs");
     $self->{'C'} = ["$name.c"];
-    $self->{'H'} = [$self->catfile($self->updir,'encode.h')];
+    $self->{SOURCE} .= " $name.c"
+        if $^O eq 'MacOS' && $self->{SOURCE} !~ /\b$name\.c\b/;
+    $self->{'H'} = [$self->catfile($self->updir,'Encode', 'encode.h')];
     my %xs;
     foreach my $table (keys %tables) {
-       push (@{$self->{'C'}},"$table.c");
-       # Do NOT add $table.h etc. to H_FILES unless we own up as to how they
-       # get built.
-       foreach my $ext (qw($(OBJ_EXT) .c .h _def.h .fnm)) {
-           push (@files,$table.$ext);
-       }
+    push (@{$self->{'C'}},"$table.c");
+    # Do NOT add $table.h etc. to H_FILES unless we own up as to how they
+    # get built.
+    foreach my $ext (qw($(OBJ_EXT) .c .h .exh .fnm)) {
+        push (@files,$table.$ext);
+    }
+    $self->{SOURCE} .= " $table.c"
+        if $^O eq 'MacOS' && $self->{SOURCE} !~ /\b$table\.c\b/;
     }
     $self->{'XS'} = { "$name.xs" => "$name.c" };
     $self->{'clean'}{'FILES'} .= join(' ',@files);
@@ -59,10 +80,10 @@ sub post_initialize
 #include <perl.h>
 #include <XSUB.h>
 #define U8 U8
-#include "../encode.h"
+#include "encode.h"
 END
     foreach my $table (keys %tables) {
-       print XS qq[#include "${table}.h"\n];
+    print XS qq[#include "${table}.h"\n];
     }
     print XS <<"END";
 
@@ -91,7 +112,7 @@ BOOT:
 {
 END
     foreach my $table (keys %tables) {
-       print XS qq[#include "${table}_def.h"\n];
+    print XS qq[#include "${table}.exh"\n];
     }
     print XS "}\n";
     close(XS);
@@ -101,44 +122,46 @@ END
 sub postamble
 {
     my $self = shift;
-    my $dir  = $self->catdir($self->updir,'Encode');
-    my $str  = "# $name\$(OBJ_EXT) depends on .h and _def.h files not .c files - but all written by compile\n";
+    my $dir  = $self->catdir($self->updir,'ucm');
+    my $str  = "# $name\$(OBJ_EXT) depends on .h and .exh files not .c files - but all written by enc2xs\n";
     $str    .= "$name.c : $name.xs ";
     foreach my $table (keys %tables)
     {
-       $str .= " $table.c";
+    $str .= " $table.c";
     }
     $str .= "\n\n";
     $str .= "$name\$(OBJ_EXT) : $name.c\n\n";
 
-    my $compile = $self->catfile($self->updir,'compile');
+    my $enc2xs = $self->catfile($self->updir,'bin', 'enc2xs');
     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 .= $^O eq 'VMS' # In VMS quote to preserve case
-            ? qq{\n\t\$(PERL) $compile -"Q" -o \$\@ -f $table.fnm\n\n}
-            : qq{\n\t\$(PERL) $compile -Q -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);
+    my $numlines = 1;
+    my $lengthsofar = length($str);
+    my $continuator = '';
+    $str .= "$table.c : $enc2xs 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 = '';
+        }
+    }
+    my $plib   = $self->{PERL_CORE} ? '"-I$(PERL_LIB)"' : '';
+    $plib .= " -MCross=$::Cross::platform" if defined $::Cross::platform;
+    my $ucopts = '-"Q"';
+    $str .=  
+        qq{\n\t\$(PERL) $plib $enc2xs $ucopts -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;
 }