X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=ext%2FEncode%2FMakefile.PL;h=7a78d117c28e82fd8c2f48bf985845b80f3c5b9a;hb=f9c176361812c812337c3bbb31fab20482edbede;hp=0b20c48c902584b3a6a52cfcdf1a952d170e7deb;hpb=3865e8e16e47e0d7cb9fff45bba4e84e396abd42;p=p5sagit%2Fp5-mst-13.2.git diff --git a/ext/Encode/Makefile.PL b/ext/Encode/Makefile.PL index 0b20c48..7a78d11 100644 --- a/ext/Encode/Makefile.PL +++ b/ext/Encode/Makefile.PL @@ -1,31 +1,53 @@ +# +# $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; -my %tables = (iso8859 => ['ascii.ucm', 'cp1250.ucm'], - EBCDIC => ['cp1047.ucm','cp37.ucm','posix-bc.ucm'], - Symbols => ['symbol.ucm','dingbats.ucm'], - ); +# 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}; -opendir(ENC,'Encode'); -while (defined(my $file = readdir(ENC))) - { - if ($file =~ /iso8859.*\.ucm/) - { - push(@{$tables{iso8859}},$file); - } - } -closedir(ENC); +my %tables = + ( + def_t => ['ascii.ucm', + '8859-1.ucm', + 'null.ucm', + 'ctrl.ucm', + ] + ); +my @exe_files = qw(bin/enc2xs + bin/piconv + ); +my @more_exe_files = qw( + unidump + ); +my @pmlibdirs = qw(lib Encode); + +$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", - VERSION_FROM => 'Encode.pm', - OBJECT => '$(O_FILES)', - 'dist' => { - COMPRESS => 'gzip -9f', - SUFFIX => 'gz', - DIST_DEFAULT => 'all tardist', - }, - MAN3PODS => {}, + 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; @@ -33,69 +55,81 @@ 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)) + 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; + } + # Trick case-blind filesystems. + delete $o{'encode'.$x}; + $o{'Encode'.$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 .exh .fnm)) { - push (@files,$table.$ext); + push (@files,$table.$ext); } - } - $self->{'clean'}{'FILES'} .= join(' ',@files); - return ''; + $self->{SOURCE} .= " $table.c" + if $^O eq 'MacOS' && $self->{SOURCE} !~ /\b$table\.c\b/; +} +$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}}) + my $self = shift; + my $dir = $self->catdir($self->curdir,'ucm'); + 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 .= $continuator.' '.$self->catfile($dir,$file); - if ( length($str)-$lengthsofar > 128*$numlines ) - { - $continuator .= " \\\n\t"; - $numlines++; - } else { - $continuator = ''; - } + $str .= " $table.c"; } - $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}}) + $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}}) { - print FILELIST $self->catfile($dir,$file) . "\n"; + $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); } - close(FILELIST); - } - return $str; + return $str; }