diff options
author | Perl 5 Porters <perl5-porters@africa.nicoh.com> | 1996-09-20 15:08:33 +0100 |
---|---|---|
committer | Andy Dougherty <doughera@lafcol.lafayette.edu> | 1996-09-20 15:08:33 +0100 |
commit | b73edd974ff6de4630341da3b93d562a24ff05d7 (patch) | |
tree | 1d1a12fcb3c4f33d0e16d65fce4938f5fde35922 /utils/h2xs.PL | |
parent | ef7eada97d38df1b9c81d49b74fc03e83a8de518 (diff) | |
download | perl-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.PL | 59 |
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]} |