4 use ExtUtils::ParseXS qw(process_file);
9 my $usage = "Usage: xsubpp [-v] [-except] [-prototypes] [-noversioncheck] [-nolinenumbers] [-nooptimize] [-noinout] [-noargtypes] [-s pattern] [-typemap typemap]... file.xs\n";
11 Getopt::Long::Configure qw(no_auto_abbrev no_ignore_case);
13 @ARGV = grep {$_ ne '-C++'} @ARGV; # Allow -C++ for backward compatibility
14 GetOptions(\%args, qw(hiertype!
31 print "xsubpp version $ExtUtils::ParseXS::VERSION\n";
35 @ARGV == 1 or die $usage;
37 $args{filename} = shift @ARGV;
40 exit( ExtUtils::ParseXS::errors() ? 1 : 0 );
46 xsubpp - compiler to convert Perl XS code into C code
50 B<xsubpp> [B<-v>] [B<-except>] [B<-s pattern>] [B<-prototypes>] [B<-noversioncheck>] [B<-nolinenumbers>] [B<-nooptimize>] [B<-typemap typemap>] [B<-output filename>]... file.xs
54 This compiler is typically run by the makefiles created by L<ExtUtils::MakeMaker>.
56 I<xsubpp> will compile XS code into C code by embedding the constructs
57 necessary to let C functions manipulate Perl values and creates the glue
58 necessary to let Perl access those functions. The compiler uses typemaps to
59 determine how to map C function parameters and variables to Perl values.
61 The compiler will search for typemap files called I<typemap>. It will use
62 the following search path to find default typemaps, with the rightmost
63 typemap taking precedence.
65 ../../../typemap:../../typemap:../typemap:typemap
67 It will also use a default typemap installed as C<ExtUtils::typemap>.
71 Note that the C<XSOPT> MakeMaker option may be used to add these options to
72 any makefiles generated by MakeMaker.
78 Retains '::' in type names so that C++ hierachical types can be mapped.
82 Adds exception handling stubs to the C code.
84 =item B<-typemap typemap>
86 Indicates that a user-supplied typemap should take precedence over the
87 default typemaps. This option may be used multiple times, with the last
88 typemap having the highest precedence.
90 =item B<-output filename>
92 Specifies the name of the output file to generate. If no file is
93 specified, output will be written to standard output.
97 Prints the I<xsubpp> version number to standard output, then exits.
101 By default I<xsubpp> will not automatically generate prototype code for
102 all xsubs. This flag will enable prototypes.
104 =item B<-noversioncheck>
106 Disables the run time test that determines if the object file (derived
107 from the C<.xs> file) and the C<.pm> files have the same version
110 =item B<-nolinenumbers>
112 Prevents the inclusion of `#line' directives in the output.
116 Disables certain optimizations. The only optimization that is currently
117 affected is the use of I<target>s by the output C code (see L<perlguts>).
118 This may significantly slow down the generated code, but this is the way
119 B<xsubpp> of 5.005 and earlier operated.
123 Disable recognition of C<IN>, C<OUT_LIST> and C<INOUT_LIST> declarations.
127 Disable recognition of ANSI-like descriptions of function signature.
131 Currently doesn't do anything at all. This flag has been a no-op for
132 many versions of perl, at least as far back as perl5.003_07. It's
133 allowed here for backwards compatibility.
139 No environment variables are used.
143 Originally by Larry Wall. Turned into the C<ExtUtils::ParseXS> module
146 =head1 MODIFICATION HISTORY
148 See the file F<Changes>.
152 perl(1), perlxs(1), perlxstut(1), ExtUtils::ParseXS