Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / tools / perl-5.8.0 / man / man3 / Inline-FAQ.3
.\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13
.\"
.\" Standard preamble:
.\" ========================================================================
.de Sh \" Subsection heading
.br
.if t .Sp
.ne 5
.PP
\fB\\$1\fR
.PP
..
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Vb \" Begin verbatim text
.ft CW
.nf
.ne \\$1
..
.de Ve \" End verbatim text
.ft R
.fi
..
.\" Set up some character translations and predefined strings. \*(-- will
.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
.\" double quote, and \*(R" will give a right double quote. | will give a
.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to
.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C'
.\" expand to `' in nroff, nothing in troff, for use with C<>.
.tr \(*W-|\(bv\*(Tr
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
.ie n \{\
. ds -- \(*W-
. ds PI pi
. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
. ds L" ""
. ds R" ""
. ds C` ""
. ds C' ""
'br\}
.el\{\
. ds -- \|\(em\|
. ds PI \(*p
. ds L" ``
. ds R" ''
'br\}
.\"
.\" If the F register is turned on, we'll generate index entries on stderr for
.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
.\" entries marked with X<> in POD. Of course, you'll have to process the
.\" output yourself in some meaningful fashion.
.if \nF \{\
. de IX
. tm Index:\\$1\t\\n%\t"\\$2"
..
. nr % 0
. rr F
.\}
.\"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.hy 0
.if n .na
.\"
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
.\" Fear. Run. Save yourself. No user-serviceable parts.
. \" fudge factors for nroff and troff
.if n \{\
. ds #H 0
. ds #V .8m
. ds #F .3m
. ds #[ \f1
. ds #] \fP
.\}
.if t \{\
. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
. ds #V .6m
. ds #F 0
. ds #[ \&
. ds #] \&
.\}
. \" simple accents for nroff and troff
.if n \{\
. ds ' \&
. ds ` \&
. ds ^ \&
. ds , \&
. ds ~ ~
. ds /
.\}
.if t \{\
. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
.\}
. \" troff and (daisy-wheel) nroff accents
.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
.ds ae a\h'-(\w'a'u*4/10)'e
.ds Ae A\h'-(\w'A'u*4/10)'E
. \" corrections for vroff
.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
. \" for low resolution devices (crt and lpr)
.if \n(.H>23 .if \n(.V>19 \
\{\
. ds : e
. ds 8 ss
. ds o a
. ds d- d\h'-1'\(ga
. ds D- D\h'-1'\(hy
. ds th \o'bp'
. ds Th \o'LP'
. ds ae ae
. ds Ae AE
.\}
.rm #[ #] #H #V #F C
.\" ========================================================================
.\"
.IX Title "Inline-FAQ 3"
.TH Inline-FAQ 3 "2002-10-28" "perl v5.8.0" "User Contributed Perl Documentation"
.SH "NAME"
Inline\-FAQ \- The Inline FAQ
.SH "DESCRIPTION"
.IX Header "DESCRIPTION"
Welcome to the official Inline \s-1FAQ\s0. In this case, \fB\s-1FAQ\s0\fR means:
.PP
.Vb 1
\& Formerly Answered Questions
.Ve
.PP
This is a collection of old, long-winded emails that myself and others
have sent to the Inline mailing list. (inline@perl.org) They have been
reviewed and edited for general Inline edification. Some of them may be
related to a specific language. They are presented here in a traditional
\&\s-1FAQ\s0 layout.
.SH "General Inline"
.IX Header "General Inline"
Since there is only a handful of content so far, all FAQs are currently
under this heading.
.Sh "How disposable is a .Inline or _Inline directory?"
.IX Subsection "How disposable is a .Inline or _Inline directory?"
I probably need to be more emphatic about the roll of _Inline/ cache
directories. Since they are created automatically, they are completely
disposable. I delete them all the time. And it is fine to have a
different one for each project. In fact as long as you don't have
~/.Inline/ defined, Inline will create a new ./_Inline directory. You
can move that to ./.Inline and it will continue to work if you want to
give it more longevity and hide it from view. There is a long
complicated list of rules about how [_.]Inline/ directories are
used/created. But it was designed to give you the most
flexibility/ease\-of\-use. Never be afraid to nuke 'em. They'll just pop
right back next time. :)
.Sh "Whatever happened to the \s-1SITE_INSTALL\s0 option?"
.IX Subsection "Whatever happened to the SITE_INSTALL option?"
\&\s-1SITE_INSTALL\s0 is gone. I was going to leave it in and change the
semantics, but thought it better to remove it, so people wouldn't try to
use it the old way. There is now _INSTALL_ (but you're not supposed to
know that :). It works magically through the use of Inline::MakeMaker. I
explained this earlier but it's worth going through again because it's
the biggest change for 0.40. Here's how to 'permanently' install an
Inline extension (Inline based module) with 0.40:
.PP
.Vb 11
\& 1) Create a module with Inline.
\& 2) Test it using the normal/local _Inline/ cache.
\& 3) Create a Makefile.PL (like the one produced by h2xs)
\& 4) Change 'use ExtUtils::MakeMaker' to 'use Inline::MakeMaker'
\& 5) Change your 'use Inline C => DATA' to 'use Inline C => DATA => NAME
\& => Foo => VERSION => 1.23'
\& 6) Make sure NAME matches your package name ('Foo'), or begins with
\& 'Foo::'.
\& 7) Make sure VERSION matches $Foo::VERSION. This must be a string (not a
\& number) matching /^\ed\e.\ed\ed$/
\& 8) Do the perl/make/test/install dance (thanks binkley :)
.Ve
.PP
With Inline 0.41 (or thereabouts) you can skip steps 3 & 4, and just
say 'perl \-MInline=INSTALL ./Foo.pm'. This will work for non-Inline
modules too. It will become the defacto standard (since there is no easy
standard) way of installing a Perl module. It will allow Makefile.PL
parameters 'perl \-MInline=INSTALL ./Foo.pm \- PREFIX=/home/ingy/perl' and
things like that. It will also make use of a \s-1MANIFEST\s0 if you provide
one.
.Sh "How do I create a binary distribution using Inline?"
.IX Subsection "How do I create a binary distribution using Inline?"
I've figured out how to create and install a \s-1PPM\s0 binary distribution;
with or without distributing the C code! And I've decided to share it
with all of you :)
.PP
\&\s-1NOTE:\s0 Future versions of Inline will make this process a one line
command. But for now just use this simple recipe.
.PP
\&\-\-\-
.PP
The Inline 0.40 distribution comes with a sample extension module called
Math::Simple. Theoretically you could distribute this module on \s-1CPAN\s0. It
has all the necessary support for installation. You can find it in
Inline\-0.40/modules/Math/Simple/. Here are the steps for converting this
into a binary distribution *without* C source code.
.PP
\&\s-1NOTE:\s0 The recipient of this binary distribution will need to have the
\&\s-1PPM\s0.pm module installed. This module requires a lot of other \s-1CPAN\s0
modules. ActivePerl (available for Win32, Linux, and Solaris) has all of
these bundled. While ActivePerl isn't required, it makes things (a
lot) easier.
.PP
1) cd Inline\-0.40/Math/Simple/
.PP
2) Divide Simple.pm into two files:
.PP
.Vb 7
\& ---8<--- (Simple.pm)
\& package Math::Simple;
\& use strict;
\& require Exporter;
\& @Math::Simple::ISA = qw(Exporter);
\& @Math::Simple::EXPORT = qw(add subtract);
\& $Math::Simple::VERSION = '1.23';
.Ve
.PP
.Vb 10
\& use Inline (C => 'src/Simple.c' =>
\& NAME => 'Math::Simple',
\& VERSION => '1.23',
\& );
\& 1;
\& ---8<---
\& ---8<--- (src/Simple.c)
\& int add (int x, int y) {
\& return x + y;
\& }
.Ve
.PP
.Vb 4
\& int subtract (int x, int y) {
\& return x - y;
\& }
\& ---8<---
.Ve
.PP
So now you have the Perl in one file and the C in the other. The C code
must be in a subdirectory.
.PP
3)
Note that I also changed the term '\s-1DATA\s0' to the name of the C file. This
will work just as if the C were still inline.
.PP
4) Run 'perl Makefile.PL'
.PP
5) Run 'make test'
.PP
6) Get the \s-1MD5\s0 key from 'blib/arch/auto/Math/Simple/Simple.inl'
.PP
7)
Edit 'blib/lib/Math/Simple.pm'. Change 'src/Simple.c' to
\&'02c61710cab5b659efc343a9a830aa73' (the \s-1MD5\s0 key)
.PP
8) Run 'make ppd'
.PP
9)
Edit 'Math\-Simple.ppd'. Fill in \s-1AUTHOR\s0 and \s-1ABSTRACT\s0 if you wish. Then
change:
.PP
.Vb 1
\& <CODEBASE HREF="" />
.Ve
.PP
to
.PP
.Vb 1
\& <CODEBASE HREF="Math-Simple.tar.gz" />
.Ve
.PP
10) Run:
.PP
.Vb 2
\& tar cvf Math-Simple.tar blib
\& gzip --best Math-Simple.tar
.Ve
.PP
11)
Run:
.PP
.Vb 2
\& tar cvf Math-Simple-1.23.tar Math-Simple.ppd Math-Simple.tar.gz
\& gzip --best Math-Simple-1.23.tar
.Ve
.PP
12) Distribute Math\-Simple\-1.23.tar.gz with the following instructions:
.PP
A) Run:
.PP
.Vb 2
\& gzip -d Math-Simple-1.23.tar.gz
\& tar xvzf Math-Simple-1.23.tar
.Ve
.PP
B) Run 'ppm install Math\-Simple.ppd'
.PP
C) Delete Math\-Simple.tar and Math\-Simple.ppd.
.PP
D) Test with:
.PP
.Vb 1
\& perl -MMath::Simple -le 'print add(37, 42)'
.Ve
.PP
\&\-\-\-
.PP
That's it. The process should also work with zip instead of tar, but I
haven't tried it.
.PP
The recipient of the binary must have Perl built with a matching
architecture. Luckily, ppm will catch this.
.PP
For a binary dist *with* C source code, simply omit steps 2, 3, 6, and
7.
.PP
If this seems too hard, then in a future version you should be able to
just type:
.PP
.Vb 1
\& make ppm
.Ve