home *** CD-ROM | disk | FTP | other *** search
/ PC Professionell 2004 December / PCpro_2004_12.ISO / files / webserver / tsw / TSW_3.4.0.exe / Apache2 / perl / xsubpp < prev    next >
Encoding:
Text File  |  2003-12-29  |  3.9 KB  |  156 lines

  1. #!./miniperl
  2.  
  3. require 5.002;
  4. use ExtUtils::ParseXS qw(process_file);
  5. use Getopt::Long;
  6.  
  7. my %args = ();
  8.  
  9. my $usage = "Usage: xsubpp [-v] [-except] [-prototypes] [-noversioncheck] [-nolinenumbers] [-nooptimize] [-noinout] [-noargtypes] [-s pattern] [-typemap typemap]... file.xs\n";
  10.  
  11. Getopt::Long::Configure qw(no_auto_abbrev no_ignore_case);
  12.  
  13. @ARGV = grep {$_ ne '-C++'} @ARGV;  # Allow -C++ for backward compatibility
  14. GetOptions(\%args, qw(hiertype!
  15.               prototypes!
  16.               versioncheck!
  17.               linenumbers!
  18.               optimize!
  19.               inout!
  20.               argtypes!
  21.               object_capi!
  22.               except!
  23.               v
  24.               typemap=s@
  25.               output=s
  26.               s=s
  27.              ))
  28.   or die $usage;
  29.  
  30. if ($args{v}) {
  31.   print "xsubpp version $ExtUtils::ParseXS::VERSION\n";
  32.   exit;
  33. }
  34.  
  35. @ARGV == 1 or die $usage;
  36.  
  37. $args{filename} = shift @ARGV;
  38.  
  39. process_file(%args);
  40. exit( ExtUtils::ParseXS::errors() ? 1 : 0 );
  41.  
  42. __END__
  43.  
  44. =head1 NAME
  45.  
  46. xsubpp - compiler to convert Perl XS code into C code
  47.  
  48. =head1 SYNOPSIS
  49.  
  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
  51.  
  52. =head1 DESCRIPTION
  53.  
  54. This compiler is typically run by the makefiles created by L<ExtUtils::MakeMaker>.
  55.  
  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.
  60.  
  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.
  64.  
  65.     ../../../typemap:../../typemap:../typemap:typemap
  66.  
  67. It will also use a default typemap installed as C<ExtUtils::typemap>.
  68.  
  69. =head1 OPTIONS
  70.  
  71. Note that the C<XSOPT> MakeMaker option may be used to add these options to
  72. any makefiles generated by MakeMaker.
  73.  
  74. =over 5
  75.  
  76. =item B<-hiertype>
  77.  
  78. Retains '::' in type names so that C++ hierachical types can be mapped.
  79.  
  80. =item B<-except>
  81.  
  82. Adds exception handling stubs to the C code.
  83.  
  84. =item B<-typemap typemap>
  85.  
  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.
  89.  
  90. =item B<-output filename>
  91.  
  92. Specifies the name of the output file to generate.  If no file is
  93. specified, output will be written to standard output.
  94.  
  95. =item B<-v>
  96.  
  97. Prints the I<xsubpp> version number to standard output, then exits.
  98.  
  99. =item B<-prototypes>
  100.  
  101. By default I<xsubpp> will not automatically generate prototype code for
  102. all xsubs. This flag will enable prototypes.
  103.  
  104. =item B<-noversioncheck>
  105.  
  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
  108. number.
  109.  
  110. =item B<-nolinenumbers>
  111.  
  112. Prevents the inclusion of `#line' directives in the output.
  113.  
  114. =item B<-nooptimize>
  115.  
  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.
  120.  
  121. =item B<-noinout>
  122.  
  123. Disable recognition of C<IN>, C<OUT_LIST> and C<INOUT_LIST> declarations.
  124.  
  125. =item B<-noargtypes>
  126.  
  127. Disable recognition of ANSI-like descriptions of function signature.
  128.  
  129. =item B<-C++>
  130.  
  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.
  134.  
  135. =back
  136.  
  137. =head1 ENVIRONMENT
  138.  
  139. No environment variables are used.
  140.  
  141. =head1 AUTHOR
  142.  
  143. Originally by Larry Wall.  Turned into the C<ExtUtils::ParseXS> module
  144. by Ken Williams.
  145.  
  146. =head1 MODIFICATION HISTORY
  147.  
  148. See the file F<Changes>.
  149.  
  150. =head1 SEE ALSO
  151.  
  152. perl(1), perlxs(1), perlxstut(1), ExtUtils::ParseXS
  153.  
  154. =cut
  155.  
  156.