New XS::APItest's for sv_peek based on my DDumper work
[p5sagit/p5-mst-13.2.git] / ext / Encode / Encode / Makefile_PL.e2x
index 59b5149..1d83a2f 100644 (file)
@@ -6,30 +6,56 @@
 use 5.7.2;
 use strict;
 use ExtUtils::MakeMaker;
+use Config;
 
 # Please edit the following to the taste!
 my $name = '$_Name_';
 my %tables = (
-            $_Name__t   => [ $_TableFiles_ ],
-            );
+         $_Name__t   => [ $_TableFiles_ ],
+         );
 
 #### DO NOT EDIT BEYOND THIS POINT!
-my $enc2xs = '$_Enc2xs_';
+require File::Spec;
+my ($enc2xs, $encode_h) = ();
+PATHLOOP:
+for my $d (@Config{qw/bin sitebin vendorbin/}, 
+       (split /$Config{path_sep}/o, $ENV{PATH})){
+    for my $f (qw/enc2xs enc2xs5.7.3/){
+        my $path = File::Spec->catfile($d, $f);
+        -r $path and $enc2xs = $path and last PATHLOOP;
+    }
+}
+$enc2xs or die "enc2xs not found!";
+print "enc2xs is $enc2xs\n";
+my %encode_h = ();
+for my $d (@INC){
+    my $dir = File::Spec->catfile($d, "Encode");
+    my $file =  File::Spec->catfile($dir, "encode.h");
+    -f $file and $encode_h{$dir} = -M $file;
+}
+%encode_h or die "encode.h not found!";
+# find the latest one
+($encode_h) = sort {$encode_h{$b} <=> $encode_h{$a}} keys %encode_h;
+print "encode.h is at $encode_h\n";
+
 WriteMakefile(
-              INC              => "-I$_Inc_",
+              INC              => "-I$encode_h",
 #### END_OF_HEADER -- DO NOT EDIT THIS LINE BY HAND! ####
-             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',
-             );
+          NAME         => 'Encode::'.$name,
+          VERSION_FROM => "$name.pm",
+          OBJECT               => '$(O_FILES)',
+          'dist'               => {
+          COMPRESS     => 'gzip -9f',
+          SUFFIX       => 'gz',
+          DIST_DEFAULT => 'all tardist',
+          },
+          MAN3PODS     => {},
+          PREREQ_PM => {
+                'Encode'     => "1.41",
+                           },
+          # OS 390 winges about line numbers > 64K ???
+          XSOPT => '-nolinenumbers',
+          );
 
 package MY;
 
@@ -41,21 +67,24 @@ 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"];
+    # The next two lines to make MacPerl Happy -- dankogai via pudge
+    $self->{SOURCE} .= " $name.c"
+        if $^O eq 'MacOS' && $self->{SOURCE} !~ /\b$name\.c\b/;
     # $self->{'H'} = [$self->catfile($self->updir,'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 .exh .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->{'XS'} = { "$name.xs" => "$name.c" };
     $self->{'clean'}{'FILES'} .= join(' ',@files);
@@ -68,7 +97,7 @@ sub post_initialize
 #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";
 
@@ -97,7 +126,7 @@ BOOT:
 {
 END
     foreach my $table (keys %tables) {
-       print XS qq[#include "${table}.exh"\n];
+    print XS qq[#include "${table}.exh"\n];
     }
     print XS "}\n";
     close(XS);
@@ -112,39 +141,39 @@ sub postamble
     $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";
 
     foreach my $table (keys %tables)
     {
-       my $numlines = 1;
-       my $lengthsofar = length($str);
-       my $continuator = '';
-       $str .= "$table.c : 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)"' : '';
-       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);
+    my $numlines = 1;
+    my $lengthsofar = length($str);
+    my $continuator = '';
+    $str .= "$table.c : 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)"' : '';
+    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;
 }