X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=ext%2FEncode%2FMakefile.PL;h=c442095ceec5a4399e3a26e2405c06482734159c;hb=b88803e823f645fd01dcf24d2878f5e842ce1092;hp=754a326c7eaa2edc0e945cfcc26c758db5091cfd;hpb=8d7e77d666ed754d5cd34909a5f2a7dd48814e28;p=p5sagit%2Fp5-mst-13.2.git diff --git a/ext/Encode/Makefile.PL b/ext/Encode/Makefile.PL index 754a326..c442095 100644 --- a/ext/Encode/Makefile.PL +++ b/ext/Encode/Makefile.PL @@ -1,90 +1,125 @@ +use 5.007003; use ExtUtils::MakeMaker; -my %tables = (iso8859 => ['ascii.enc', 'cp1250.enc'], - EBCDIC => ['cp1047.enc','cp37.enc','posix-bc.enc'], - Symbols => ['symbol.enc','dingbats.enc'], - ); +# Just for sure :) +unless($ENV{PERL_CORE}) { + $ENV{PERL_CORE} = 1 if ($^X =~ m{\bminiperl[^/\\\]>:]*$}o); +} -opendir(ENC,'Encode'); -while (defined(my $file = readdir(ENC))) - { - if ($file =~ /iso8859.*\.enc/) - { - push(@{$tables{iso8859}},$file); - } - } -closedir(ENC); +my %tables = + ( + def_t => ['ascii.ucm', + '8859-1.ucm', + ] + ); +my @exe_files = qw(bin/enc2xs + bin/piconv + ); +my @more_exe_files = qw( + 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"; + } +} 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', + }, + MAN3PODS => {}, + INC => "-I./Encode", + PMLIBDIRS => \@pmlibdirs, + ); 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)) + 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) { - push (@files,$table.$ext); + $o{$e.$x} = 1; } - } - $self->{'clean'}{'FILES'} .= join(' ',@files); - return ''; + # 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); + } +} +$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) :'; - my @rules; - foreach my $table (keys %tables) - { - $str .= " $table.c"; - } - $str .= "\n\n"; - foreach my $table (keys %tables) - { - $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) depends on .h and .exh files not .c files - but all written by enc2xs\n"; + $str .= 'Encode$(OBJ_EXT) :'; + foreach my $table (keys %tables) { - $str .= ' '.$self->catfile($dir,$file); + $str .= " $table.c"; } - $str .= "\n\t\$(PERL) compile \$\@"; - foreach my $file (@{$tables{$table}}) + $str .= "\n\n"; + foreach my $table (keys %tables) { - $str .= ' '.$self->catfile($dir,$file); + 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); } - $str .= "\n\n"; - } - return $str; + return $str; }