NAME
Inline::Module - Support for Inline-based CPAN Extension Modules
SYNOPSIS
In your module (say Acme::Math::XS
):
use Acme::Math::XS::Inline C =>
"long add(long a, long b) { return a + b; }";
In Makefile.PL
:
use lib 'inc';
use ExtUtils::MakeMaker;
use Inline::Module;
WriteMakefile(
NAME => 'Acme::Math::XS',
postamble => {
inline => {
module => 'Acme::Math::XS',
},
},
);
DESCRIPTION
This module provides support and documentation for creating and maintaining CPAN extension modules. ie Writing XS modules without having to learn XS.
The Inline::Module::Tutorial explains the simple processes involved.
When used from a Makefile.PL
, this module provides support for modifying the Makefile generated by ExtUtils::MakeMaker.
You just need to provide a postamble
section. See below.
You also need to make sure that the inc/
directory is in @INC
. This is where the build tools will be when your module is shipped to CPAN.
postamble Section
Arguments are key/value pairs.
module
-
module => 'My::Module',
Required. This is the module that contains inline
C
orC++
code. It can be an array ref of multiple modules. stub
-
stub => 'My::Module::Inline',
Optional. This is the name of the Inline::Module generated stub module. It's value defaults to the
module
argument with '::Inline' appended. It can be an array ref of multiple modules. ilsm
-
ilsm => 'Inline::CPP',
Optional. This is the Inline Language Support Module (ilsm) that you are using. It defaults to Inline::C. It can be an array ref of multiple ilsm-s.
STUB MODULE GENERATION
During development, Inline::Module needs to generate stub modules. For the case in the synopsis, it would need to generate Acme::Math::XS::Inline
. There a few similar but different ways to do this:
perl -MInline::Module=makestub,Acme::Math::XS::Inline
or:
export PERL5OPT='-MInline::Module=autostub'
prove -lv t/
or:
perl Makefile.PL
TPF GRANT
This module was written as the major portion of the work for a 2014 Perl Foundation grant:
http://news.perlfoundation.org/2014/09/grant-proposal-inlinecpp-modul.html
SEE
NOTE
When this module was first created in November 2014, we belatedly realized that there was already an Inline::Module on CPAN, by Ingy. The other one is to "inline" one module inside another. It appears that nobody uses the old one, but if that is not the case, contact INGY and he'll redo that one under another name.
AUTHORS
Ingy döt Net <ingy@cpan.org>
David Oswald <davido@cpan.org>
COPYRIGHT
Copyright 2014. Ingy döt Net.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.