X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=ext%2FEncode%2FMakefile.PL;h=7a78d117c28e82fd8c2f48bf985845b80f3c5b9a;hb=f9c176361812c812337c3bbb31fab20482edbede;hp=71bc5fbdbe0218e45633d5dd0cbdd9d125b674ca;hpb=3ef515df8b968e34c050cfc9602902de0efbefd6;p=p5sagit%2Fp5-mst-13.2.git diff --git a/ext/Encode/Makefile.PL b/ext/Encode/Makefile.PL index 71bc5fb..7a78d11 100644 --- a/ext/Encode/Makefile.PL +++ b/ext/Encode/Makefile.PL @@ -1,43 +1,54 @@ +# +# $Id: Makefile.PL,v 2.7 2008/07/01 20:56:17 dankogai Exp dankogai $ +# use 5.007003; +use strict; +use warnings; use ExtUtils::MakeMaker; +use File::Spec; + +# Just for sure :) +my %ARGV = map { my @r = split /=/,$_; defined $r[1] or $r[1]=1; @r } @ARGV; +$ARGV{DEBUG} and warn "$_ => $ARGV{$_}\n" for keys %ARGV; +$ENV{PERL_CORE} ||= $ARGV{PERL_CORE} if $ARGV{PERL_CORE}; my %tables = ( def_t => ['ascii.ucm', - '8859-1.ucm', - ] + '8859-1.ucm', + 'null.ucm', + 'ctrl.ucm', + ] ); my @exe_files = qw(bin/enc2xs - bin/piconv - ); + bin/piconv + ); my @more_exe_files = qw( - ucm2table - ); + unidump + ); my @pmlibdirs = qw(lib Encode); -for my $arg (@ARGV){ - if ($arg eq "MORE_SCRIPTS"){ - push @exe_files, @more_exe_files; - } - if ($arg eq "INSTALL_UCM"){ - push @pmlibdirs, "ucm"; - } -} + +$ARGV{MORE_SCRIPTS} and push @exe_files, @more_exe_files; +$ARGV{INSTALL_UCM} and push @pmlibdirs, "ucm"; +my @man = (); +@man = ( MAN1PODS => {}, MAN3PODS => {} ) if $ENV{PERL_CORE}; WriteMakefile( - NAME => "Encode", - EXE_FILES => \@exe_files, - VERSION_FROM => 'Encode.pm', - OBJECT => '$(O_FILES)', - 'dist' => { - COMPRESS => 'gzip -9f', - SUFFIX => 'gz', - DIST_DEFAULT => 'all tardist', - }, - MAN3PODS => {}, - INC => "-I./Encode", - PMLIBDIRS => \@pmlibdirs, - ); + NAME => "Encode", + EXE_FILES => \@exe_files, + VERSION_FROM => 'Encode.pm', + OBJECT => '$(O_FILES)', + 'dist' => { + COMPRESS => 'gzip -9f', + SUFFIX => 'gz', + DIST_DEFAULT => 'all tardist', + }, + @man, + INC => '-I' . File::Spec->catfile( '.', 'Encode' ), + PMLIBDIRS => \@pmlibdirs, + INSTALLDIRS => 'perl', +); package MY; @@ -49,13 +60,13 @@ sub post_initialize # Find existing O_FILES foreach my $f (@{$self->{'O_FILES'}}) { - $o{$f} = 1; + $o{$f} = 1; } my $x = $self->{'OBJ_EXT'}; # Add the table O_FILES foreach my $e (keys %tables) { - $o{$e.$x} = 1; + $o{$e.$x} = 1; } # Trick case-blind filesystems. delete $o{'encode'.$x}; @@ -65,10 +76,12 @@ sub post_initialize my @files; foreach my $table (keys %tables) { - foreach my $ext (qw($(OBJ_EXT) .c .h _def.h .fnm)) + foreach my $ext (qw($(OBJ_EXT) .c .h .exh .fnm)) { - push (@files,$table.$ext); + push (@files,$table.$ext); } + $self->{SOURCE} .= " $table.c" + if $^O eq 'MacOS' && $self->{SOURCE} !~ /\b$table\.c\b/; } $self->{'clean'}{'FILES'} .= join(' ',@files); return ''; @@ -78,41 +91,45 @@ sub postamble { my $self = shift; my $dir = $self->catdir($self->curdir,'ucm'); - my $str = "# Encode\$(OBJ_EXT) depends on .h and _def.h files not .c files - but all written by enc2xs\n"; - $str .= 'Encode$(OBJ_EXT) :'; + my $str = "# Encode\$(OBJ_EXT) does not depend on .c files directly\n"; + $str .= "# (except Encode.c), but on .h and .exh files written by enc2xs\n"; + $str .= $^O eq 'MacOS' ? 'Encode.c.{$(MACPERL_BUILD_EXT_STATIC)}.o :' : 'Encode$(OBJ_EXT) :'; + $str .= ' Encode.c'; foreach my $table (keys %tables) { - $str .= " $table.c"; + $str .= " $table.c"; } $str .= "\n\n"; foreach my $table (keys %tables) { - my $numlines = 1; - my $lengthsofar = length($str); - my $continuator = ''; - my $enc2xs = $self->catfile('bin', 'enc2xs'); - $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 = ''; - } - } - $str .= $^O eq 'VMS' # In VMS quote to preserve case - ? qq{\n\t\$(PERL) $enc2xs -"Q" -"O" -o \$\@ -f $table.fnm\n\n} - : qq{\n\t\$(PERL) $enc2xs -Q -O -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 = ''; + my $enc2xs = $self->catfile('bin', 'enc2xs'); + $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" -"O"'; + $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; }