dslinux/user/perl/ext/Encode/Byte Byte.pm Makefile.PL

cayenne dslinux_cayenne at user.in-berlin.de
Tue Dec 5 05:26:36 CET 2006


Update of /cvsroot/dslinux/dslinux/user/perl/ext/Encode/Byte
In directory antilope:/tmp/cvs-serv7729/ext/Encode/Byte

Added Files:
	Byte.pm Makefile.PL 
Log Message:
Adding fresh perl source to HEAD to branch from

--- NEW FILE: Makefile.PL ---
use 5.7.2;
use strict;
use ExtUtils::MakeMaker;
use File::Spec::Functions;

my $name = 'Byte';
my %tables = (
	      byte_t => 
	      [
	       # misc. vendors
	       'gsm0338.ucm',
	       'nextstep.ucm',
	       'hp-roman8.ucm',
	       'viscii.ucm',
	       'adobeStdenc.ucm',
	       # koi8
	       'koi8-f.ucm', 'koi8-r.ucm', 'koi8-u.ucm', 
	       # Mac
	       qw(
		  macArabic.ucm
		  macCentEuro.ucm
		  macCroatian.ucm
		  macCyrillic.ucm
		  macFarsi.ucm
		  macGreek.ucm
		  macHebrew.ucm
		  macIceland.ucm
		  macRoman.ucm
		  macROMnn.ucm
		  macRUMnn.ucm
		  macSami.ucm
		  macThai.ucm
		  macTurkish.ucm
		  macUkraine.ucm
		  ),
	      ],
             );

my %not_here = 
    map {$_ => 1} 
(
 '8859-1.ucm', # default
 qw(cp037.ucm cp1026.ucm cp1047.ucm cp500.ucm cp875.ucm), # EBCDIC
 qw(cp932.ucm cp936.ucm cp949.ucm cp950.ucm),  # CJK
 );

opendir(ENC,catdir(updir(),'ucm')) or die $!;
while (defined(my $file = readdir(ENC)))
{
    $file =~ /^(8859|cp).*\.ucm$/io or next;
    $not_here{$file} and next;
    push(@{$tables{byte_t}},$file);
}
closedir(ENC);

WriteMakefile(
              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;

sub post_initialize
{
    my ($self) = @_;
    my %o;
    my $x = $self->{'OBJ_EXT'};
    # Add the table O_FILES
    foreach my $e (keys %tables)
    {
	$o{$e.$x} = 1;
    }
    $o{"$name$x"} = 1;
    $self->{'O_FILES'} = [sort keys %o];
    my @files = ("$name.xs");
    $self->{'C'} = ["$name.c"];
    $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 .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(' ', at files);
    open(XS,">$name.xs") || die "Cannot open $name.xs:$!";
    print XS <<'END';
#include <EXTERN.h>
#include <perl.h>
#include <XSUB.h>
#define U8 U8
#include "encode.h"
END
    foreach my $table (keys %tables) {
	print XS qq[#include "${table}.h"\n];
    }
    print XS <<"END";

static void
Encode_XSEncoding(pTHX_ encode_t *enc)
{
 dSP;
 HV *stash = gv_stashpv("Encode::XS", TRUE);
 SV *sv    = sv_bless(newRV_noinc(newSViv(PTR2IV(enc))),stash);
 int i = 0;
 PUSHMARK(sp);
 XPUSHs(sv);
 while (enc->name[i])
  {
   const char *name = enc->name[i++];
   XPUSHs(sv_2mortal(newSVpvn(name,strlen(name))));
  }
 PUTBACK;
 call_pv("Encode::define_encoding",G_DISCARD);
 SvREFCNT_dec(sv);
}

MODULE = Encode::$name	PACKAGE = Encode::$name
PROTOTYPES: DISABLE
BOOT:
{
END
    foreach my $table (keys %tables) {
	print XS qq[#include "${table}.exh"\n];
    }
    print XS "}\n";
    close(XS);
    return "# Built $name.xs\n\n";
}

sub postamble
{
    my $self = shift;
    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 .= "\n\n";
    $str .= "$name\$(OBJ_EXT) : $name.c\n\n";

    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 : $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;
}


--- NEW FILE: Byte.pm ---
package Encode::Byte;
use Encode;
our $VERSION = do { my @r = (q$Revision: 1.1 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };

use XSLoader;
XSLoader::load(__PACKAGE__,$VERSION);

1;
__END__

=head1 NAME

Encode::Byte - Single Byte Encodings

=head1 SYNOPSIS

    use Encode qw/encode decode/; 
    $greek = encode("iso-8859-7", $utf8);  # loads Encode::Byte implicitly
    $utf8  = decode("iso-8859-7", $greek); # ditto

=head1 ABSTRACT

This module implements various single byte encodings.  For most cases it uses
\x80-\xff (upper half) to map non-ASCII characters.  Encodings
supported are as follows.   

  Canonical      Alias		                      Description
  --------------------------------------------------------------------
  # ISO 8859 series
  (iso-8859-1	is in built-in)
  iso-8859-2	latin2					     [ISO]
  iso-8859-3	latin3					     [ISO]
  iso-8859-4	latin4					     [ISO]
  iso-8859-5						     [ISO]
  iso-8859-6						     [ISO]
  iso-8859-7						     [ISO]
  iso-8859-8						     [ISO]
  iso-8859-9	latin5					     [ISO]
  iso-8859-10	latin6					     [ISO]
  iso-8859-11
  (iso-8859-12 is nonexistent)
  iso-8859-13   latin7					     [ISO]
  iso-8859-14	latin8					     [ISO]
  iso-8859-15	latin9					     [ISO]
  iso-8859-16	latin10					     [ISO]

  # Cyrillic
  koi8-f					
  koi8-r        cp878					 [RFC1489]
  koi8-u						 [RFC2319]

  # Vietnamese
  viscii

  # all cp* are also available as ibm-*, ms-*, and windows-*
  # also see L<http://msdn.microsoft.com/workshop/author/dhtml/reference/charsets/charset4.asp>

  cp424  
  cp437  
  cp737  
  cp775  
  cp850  
  cp852  
  cp855  
  cp856  
  cp857  
  cp860  
  cp861  
  cp862  
  cp863  
  cp864  
  cp865  
  cp866  
  cp869  
  cp874  
  cp1006  
  cp1250	WinLatin2
  cp1251	WinCyrillic
  cp1252	WinLatin1
  cp1253	WinGreek
  cp1254	WinTurkish
  cp1255	WinHebrew
  cp1256	WinArabic
  cp1257	WinBaltic
  cp1258	WinVietnamese

  # Macintosh
  # Also see L<http://developer.apple.com/technotes/tn/tn1150.html>
  MacArabic  
  MacCentralEurRoman  
  MacCroatian  
  MacCyrillic  
  MacFarsi  
  MacGreek  
  MacHebrew  
  MacIcelandic  
  MacRoman  
  MacRomanian  
  MacRumanian  
  MacSami  
  MacThai  
  MacTurkish  
  MacUkrainian  

  # More vendor encodings
  AdobeStandardEncoding
  nextstep
  gsm0338	# used in GSM handsets
  hp-roman8

=head1 DESCRIPTION

To find how to use this module in detail, see L<Encode>.

=head1 SEE ALSO

L<Encode>

=cut




More information about the dslinux-commit mailing list