summaryrefslogtreecommitdiff
path: root/utils/h2xs.PL
diff options
context:
space:
mode:
authorPerl 5 Porters <perl5-porters@africa.nicoh.com>1996-09-20 15:08:33 +0100
committerAndy Dougherty <doughera@lafcol.lafayette.edu>1996-09-20 15:08:33 +0100
commitb73edd974ff6de4630341da3b93d562a24ff05d7 (patch)
tree1d1a12fcb3c4f33d0e16d65fce4938f5fde35922 /utils/h2xs.PL
parentef7eada97d38df1b9c81d49b74fc03e83a8de518 (diff)
downloadperl-b73edd974ff6de4630341da3b93d562a24ff05d7.tar.gz
perl 5.003_06: utils/h2xs.PL
Date: Sat, 21 Sep 1996 16:38:24 -0500 From: Dean Roehrich <roehrich@cray.com> Subject: h2xs bug fix The h2xs that is in perl5.003_05 has a regexp bug which prevents it from finding #define statements and filling the constant() function. This patch fixes that. The h2xs_test program found this--maybe people who are modifying h2xs should get a copy of the test program. This also adds a -d to enable debugging messages (there's just one for now). I've also placed some of the doc-related things in alphabetical order. h2xs_test can be found in my directory on CPAN. Those of you modifying xsubpp should know there's a test suite for that, too, called XSTEST which can also be found in my directory on CPAN. Date: Fri, 20 Sep 1996 15:08:33 +0100 (BST) From: "Joseph S. Myers" <jsm28@hermes.cam.ac.uk> Subject: Pod typos, pod2man bugs, and miscellaneous installation comments Here is a patch for various typos and other defects in the Perl 5.003_05 pods, including the pods embedded in library modules.
Diffstat (limited to 'utils/h2xs.PL')
-rw-r--r--utils/h2xs.PL59
1 files changed, 31 insertions, 28 deletions
diff --git a/utils/h2xs.PL b/utils/h2xs.PL
index 78f9647372..96f6421a28 100644
--- a/utils/h2xs.PL
+++ b/utils/h2xs.PL
@@ -40,7 +40,7 @@ h2xs - convert .h C header files to Perl extensions
=head1 SYNOPSIS
-B<h2xs> [B<-AOPXcf>] [B<-v> version] [B<-n> module_name] [B<-p> prefix] [B<-s> sub] [headerfile [extra_libraries]]
+B<h2xs> [B<-AOPXcdf>] [B<-v> version] [B<-n> module_name] [B<-p> prefix] [B<-s> sub] [headerfile [extra_libraries]]
B<h2xs> B<-h>
@@ -72,6 +72,11 @@ in the extra-libraries argument.
Omit all autoload facilities. This is the same as B<-c> but also removes the
S<C<require AutoLoader>> statement from the .pm file.
+=item B<-F>
+
+Additional flags to specify to C preprocessor when scanning header for
+function declarations. Should not be used without B<-x>.
+
=item B<-O>
Allows a pre-existing extension directory to be overwritten.
@@ -80,11 +85,20 @@ Allows a pre-existing extension directory to be overwritten.
Omit the autogenerated stub POD section.
+=item B<-X>
+
+Omit the XS portion. Used to generate templates for a module which is not
+XS-based.
+
=item B<-c>
Omit C<constant()> from the .xs file and corresponding specialised
C<AUTOLOAD> from the .pm file.
+=item B<-d>
+
+Turn on debugging messages.
+
=item B<-f>
Allows an extension to be created for a header even if that header is
@@ -114,29 +128,19 @@ These macros are assumed to have a return type of B<char *>, e.g., S<-s sec_rgy_
Specify a version number for this extension. This version number is added
to the templates. The default is 0.01.
-=item B<-X>
-
-Omit the XS portion. Used to generate templates for a module which is not
-XS-based.
-
=item B<-x>
Automatically generate XSUBs basing on function declarations in the
header file. The package C<C::Scan> should be installed. If this
option is specified, the name of the header file may look like
C<NAME1,NAME2>. In this case NAME1 is used instead of the specified string,
-but XSUBS are emited only for the declarations included from file NAME2.
+but XSUBs are emitted only for the declarations included from file NAME2.
Note that some types of arguments/return-values for functions may
result in XSUB-declarations/typemap-entries which need
hand-editing. Such may be objects which cannot be converted from/to a
pointer (like C<long long>), pointers to functions, or arrays.
-=item B<-F>
-
-Additional flags to specify to C preprocessor when scanning header for
-function declarations. Should not be used without B<-x>.
-
=back
=head1 EXAMPLES
@@ -206,28 +210,29 @@ The usual warnings if it cannot read or write the files involved.
=cut
-my( $H2XS_VERSION ) = ' $Revision: 1.16 $ ' =~ /\$Revision:\s+([^\s]+)/;
+my( $H2XS_VERSION ) = ' $Revision: 1.18 $ ' =~ /\$Revision:\s+([^\s]+)/;
my $TEMPLATE_VERSION = '0.01';
use Getopt::Std;
sub usage{
warn "@_\n" if @_;
- die "h2xs [-AOPXcfh] [-v version] [-n module_name] [-p prefix] [-s subs] [headerfile [extra_libraries]]
+ die "h2xs [-AOPXcdfh] [-v version] [-n module_name] [-p prefix] [-s subs] [headerfile [extra_libraries]]
version: $H2XS_VERSION
- -f Force creation of the extension even if the C header does not exist.
- -n Specify a name to use for the extension (recommended).
- -c Omit the constant() function and specialised AUTOLOAD from the XS file.
- -p Specify a prefix which should be removed from the Perl function names.
- -s Create subroutines for specified macros.
-A Omit all autoloading facilities (implies -c).
+ -F Additional flags for C preprocessor (used with -x).
-O Allow overwriting of a pre-existing extension directory.
-P Omit the stub POD section.
-X Omit the XS portion.
+ -c Omit the constant() function and specialised AUTOLOAD from the XS file.
+ -d Turn on debugging messages.
+ -f Force creation of the extension even if the C header does not exist.
+ -h Display this help message
+ -n Specify a name to use for the extension (recommended).
+ -p Specify a prefix which should be removed from the Perl function names.
+ -s Create subroutines for specified macros.
-v Specify a version number for this extension.
-x Autogenerate XSUBs using C::Scan.
- -F Additional flags for C preprocessor (used with -x).
- -h Display this help message
extra_libraries
are any libraries that might be needed for loading the
extension, e.g. -lm would try to link in the math library.
@@ -235,7 +240,7 @@ extra_libraries
}
-getopts("AOPXcfhxv:n:p:s:F:") || usage;
+getopts("AF:OPXcdfhn:p:s:v:x") || usage;
usage if $opt_h;
@@ -287,8 +292,8 @@ if( $path_h ){
# Function prototypes are not (currently) processed.
open(CH, "<$path_h") || die "Can't open $path_h: $!\n";
while (<CH>) {
- if (/^ #[ \t]*define\s+([\$\w]+)\b\s*[^("]/) {
- print "Matched $_ ($1)\n";
+ if (/^#[ \t]*define\s+([\$\w]+)\b\s*[^("]/) {
+ print "Matched $_ ($1)\n" if $opt_d;
$_ = $1;
next if /^_.*_h_*$/i; # special case, but for what?
if (defined $opt_p) {
@@ -518,8 +523,7 @@ my $const_doc = '';
my $fdecl_doc = '';
if (@const_names and not $opt_P) {
$const_doc = <<EOD;
-
-=head1 Exported constants
+\n=head1 Exported constants
@{[join "\n ", @const_names]}
@@ -527,8 +531,7 @@ EOD
}
if (defined $fdecls and @$fdecls and not $opt_P) {
$fdecl_doc = <<EOD;
-
-=head1 Exported functions
+\n=head1 Exported functions
@{[join "\n ", @$fdecls]}