diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 19:43:11 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 19:43:11 +0000 |
commit | fc22b3d6507c6745911b9dfcc68f1e665ae13dbc (patch) | |
tree | ce1e3bce06471410239a6f41282e328770aa404a /upstream/mageia-cauldron/man3pm/ExtUtils::Embed.3pm | |
parent | Initial commit. (diff) | |
download | manpages-l10n-fc22b3d6507c6745911b9dfcc68f1e665ae13dbc.tar.xz manpages-l10n-fc22b3d6507c6745911b9dfcc68f1e665ae13dbc.zip |
Adding upstream version 4.22.0.upstream/4.22.0
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'upstream/mageia-cauldron/man3pm/ExtUtils::Embed.3pm')
-rw-r--r-- | upstream/mageia-cauldron/man3pm/ExtUtils::Embed.3pm | 273 |
1 files changed, 273 insertions, 0 deletions
diff --git a/upstream/mageia-cauldron/man3pm/ExtUtils::Embed.3pm b/upstream/mageia-cauldron/man3pm/ExtUtils::Embed.3pm new file mode 100644 index 00000000..e801dd9f --- /dev/null +++ b/upstream/mageia-cauldron/man3pm/ExtUtils::Embed.3pm @@ -0,0 +1,273 @@ +.\" -*- mode: troff; coding: utf-8 -*- +.\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43) +.\" +.\" Standard preamble: +.\" ======================================================================== +.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 +.. +.\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. +.ie n \{\ +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is >0, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" ======================================================================== +.\" +.IX Title "ExtUtils::Embed 3pm" +.TH ExtUtils::Embed 3pm 2023-11-28 "perl v5.38.2" "Perl Programmers Reference Guide" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH NAME +ExtUtils::Embed \- Utilities for embedding Perl in C/C++ applications +.SH SYNOPSIS +.IX Header "SYNOPSIS" +.Vb 3 +\& perl \-MExtUtils::Embed \-e xsinit +\& perl \-MExtUtils::Embed \-e ccopts +\& perl \-MExtUtils::Embed \-e ldopts +.Ve +.SH DESCRIPTION +.IX Header "DESCRIPTION" +\&\f(CW\*(C`ExtUtils::Embed\*(C'\fR provides utility functions for embedding a Perl interpreter +and extensions in your C/C++ applications. +Typically, an application \fIMakefile\fR will invoke \f(CW\*(C`ExtUtils::Embed\*(C'\fR +functions while building your application. +.ie n .SH @EXPORT +.el .SH \f(CW@EXPORT\fP +.IX Header "@EXPORT" +\&\f(CW\*(C`ExtUtils::Embed\*(C'\fR exports the following functions: +.PP +\&\fBxsinit()\fR, \fBldopts()\fR, \fBccopts()\fR, \fBperl_inc()\fR, \fBccflags()\fR, +\&\fBccdlflags()\fR, \fBxsi_header()\fR, \fBxsi_protos()\fR, \fBxsi_body()\fR +.SH FUNCTIONS +.IX Header "FUNCTIONS" +.IP \fBxsinit()\fR 4 +.IX Item "xsinit()" +Generate C/C++ code for the XS initializer function. +.Sp +When invoked as \f(CW\`perl \-MExtUtils::Embed \-e xsinit \-\-\`\fR +the following options are recognized: +.Sp +\&\fB\-o\fR <output filename> (Defaults to \fBperlxsi.c\fR) +.Sp +\&\fB\-o STDOUT\fR will print to STDOUT. +.Sp +\&\fB\-std\fR (Write code for extensions that are linked with the current Perl.) +.Sp +Any additional arguments are expected to be names of modules +to generate code for. +.Sp +When invoked with parameters the following are accepted and optional: +.Sp +\&\f(CW\*(C`xsinit($filename,$std,[@modules])\*(C'\fR +.Sp +Where, +.Sp +\&\fR\f(CB$filename\fR\fB\fR is equivalent to the \fB\-o\fR option. +.Sp +\&\fR\f(CB$std\fR\fB\fR is boolean, equivalent to the \fB\-std\fR option. +.Sp +\&\fB[@modules]\fR is an array ref, same as additional arguments mentioned above. +.IP Examples 4 +.IX Item "Examples" +.Vb 1 +\& perl \-MExtUtils::Embed \-e xsinit \-\- \-o xsinit.c Socket +.Ve +.Sp +This will generate code with an \f(CW\*(C`xs_init\*(C'\fR function that glues the perl \f(CW\*(C`Socket::bootstrap\*(C'\fR function +to the C \f(CW\*(C`boot_Socket\*(C'\fR function and writes it to a file named \fIxsinit.c\fR. +.Sp +Note that DynaLoader is a special case where it must call \f(CW\*(C`boot_DynaLoader\*(C'\fR directly. +.Sp +.Vb 1 +\& perl \-MExtUtils::Embed \-e xsinit +.Ve +.Sp +This will generate code for linking with \f(CW\*(C`DynaLoader\*(C'\fR and +each static extension found in \f(CW$Config{static_ext}\fR. +The code is written to the default file name \fIperlxsi.c\fR. +.Sp +.Vb 2 +\& perl \-MExtUtils::Embed \-e xsinit \-\- \-o xsinit.c \e +\& \-std DBI DBD::Oracle +.Ve +.Sp +Here, code is written for all the currently linked extensions along with code +for \f(CW\*(C`DBI\*(C'\fR and \f(CW\*(C`DBD::Oracle\*(C'\fR. +.Sp +If you have a working \f(CW\*(C`DynaLoader\*(C'\fR then there is rarely any need to statically link in any +other extensions. +.IP \fBldopts()\fR 4 +.IX Item "ldopts()" +Output arguments for linking the Perl library and extensions to your +application. +.Sp +When invoked as \f(CW\`perl \-MExtUtils::Embed \-e ldopts \-\-\`\fR +the following options are recognized: +.Sp +\&\fB\-std\fR +.Sp +Output arguments for linking the Perl library and any extensions linked +with the current Perl. +.Sp +\&\fB\-I\fR <path1:path2> +.Sp +Search path for ModuleName.a archives. +Default path is \f(CW@INC\fR. +Library archives are expected to be found as +\&\fI/some/path/auto/ModuleName/ModuleName.a\fR +For example, when looking for \fISocket.a\fR relative to a search path, +we should find \fIauto/Socket/Socket.a\fR +.Sp +When looking for \f(CW\*(C`DBD::Oracle\*(C'\fR relative to a search path, +we should find \fIauto/DBD/Oracle/Oracle.a\fR +.Sp +Keep in mind that you can always supply \fI/my/own/path/ModuleName.a\fR +as an additional linker argument. +.Sp +\&\fB\-\-\fR <list of linker args> +.Sp +Additional linker arguments to be considered. +.Sp +Any additional arguments found before the \fB\-\-\fR token +are expected to be names of modules to generate code for. +.Sp +When invoked with parameters the following are accepted and optional: +.Sp +\&\f(CW\*(C`ldopts($std,[@modules],[@link_args],$path)\*(C'\fR +.Sp +Where: +.Sp +\&\fR\f(CB$std\fR\fB\fR is boolean, equivalent to the \fB\-std\fR option. +.Sp +\&\fB[@modules]\fR is equivalent to additional arguments found before the \fB\-\-\fR token. +.Sp +\&\fB[@link_args]\fR is equivalent to arguments found after the \fB\-\-\fR token. +.Sp +\&\fR\f(CB$path\fR\fB\fR is equivalent to the \fB\-I\fR option. +.Sp +In addition, when ldopts is called with parameters, it will return the argument string +rather than print it to STDOUT. +.IP Examples 4 +.IX Item "Examples" +.Vb 1 +\& perl \-MExtUtils::Embed \-e ldopts +.Ve +.Sp +This will print arguments for linking with \f(CW\*(C`libperl\*(C'\fR and +extensions found in \f(CW$Config{static_ext}\fR. This includes libraries +found in \f(CW$Config{libs}\fR and the first ModuleName.a library +for each extension that is found by searching \f(CW@INC\fR or the path +specified by the \fB\-I\fR option. +In addition, when ModuleName.a is found, additional linker arguments +are picked up from the \fIextralibs.ld\fR file in the same directory. +.Sp +.Vb 1 +\& perl \-MExtUtils::Embed \-e ldopts \-\- \-std Socket +.Ve +.Sp +This will do the same as the above example, along with printing additional +arguments for linking with the \f(CW\*(C`Socket\*(C'\fR extension. +.Sp +.Vb 2 +\& perl \-MExtUtils::Embed \-e ldopts \-\- \-std Msql \-\- \e +\& \-L/usr/msql/lib \-lmsql +.Ve +.Sp +Any arguments after the second '\-\-' token are additional linker +arguments that will be examined for potential conflict. If there is no +conflict, the additional arguments will be part of the output. +.IP \fBperl_inc()\fR 4 +.IX Item "perl_inc()" +For including perl header files this function simply prints: +.Sp +.Vb 1 +\& \-I$Config{archlibexp}/CORE +.Ve +.Sp +So, rather than having to say: +.Sp +.Vb 1 +\& perl \-MConfig \-e \*(Aqprint "\-I$Config{archlibexp}/CORE"\*(Aq +.Ve +.Sp +Just say: +.Sp +.Vb 1 +\& perl \-MExtUtils::Embed \-e perl_inc +.Ve +.IP "\fBccflags()\fR, \fBccdlflags()\fR" 4 +.IX Item "ccflags(), ccdlflags()" +These functions simply print \f(CW$Config\fR{ccflags} and \f(CW$Config\fR{ccdlflags} +.IP \fBccopts()\fR 4 +.IX Item "ccopts()" +This function combines \f(CWperl_inc()\fR, \f(CWccflags()\fR and \f(CWccdlflags()\fR into one. +.IP \fBxsi_header()\fR 4 +.IX Item "xsi_header()" +This function simply returns a string defining the same \f(CW\*(C`EXTERN_C\*(C'\fR macro as +\&\fIperlmain.c\fR along with #including \fIperl.h\fR and \fIEXTERN.h\fR. +.IP xsi_protos(@modules) 4 +.IX Item "xsi_protos(@modules)" +This function returns a string of \f(CW\*(C`boot_$ModuleName\*(C'\fR prototypes for each \f(CW@modules\fR. +.IP xsi_body(@modules) 4 +.IX Item "xsi_body(@modules)" +This function returns a string of calls to \f(CWnewXS()\fR that glue the module \fIbootstrap\fR +function to \fIboot_ModuleName\fR for each \f(CW@modules\fR. +.Sp +\&\f(CWxsinit()\fR uses the xsi_* functions to generate most of its code. +.SH EXAMPLES +.IX Header "EXAMPLES" +For examples on how to use \f(CW\*(C`ExtUtils::Embed\*(C'\fR for building C/C++ applications +with embedded perl, see perlembed. +.SH "SEE ALSO" +.IX Header "SEE ALSO" +perlembed +.SH AUTHOR +.IX Header "AUTHOR" +Doug MacEachern <\f(CW\*(C`dougm@osf.org\*(C'\fR> +.PP +Based on ideas from Tim Bunce <\f(CW\*(C`Tim.Bunce@ig.co.uk\*(C'\fR> and +\&\fIminimod.pl\fR by Andreas Koenig <\f(CW\*(C`k@anna.in\-berlin.de\*(C'\fR> and Tim Bunce. |