From b73edd974ff6de4630341da3b93d562a24ff05d7 Mon Sep 17 00:00:00 2001 From: Perl 5 Porters Date: Fri, 20 Sep 1996 15:08:33 +0100 Subject: [PATCH] perl 5.003_06: utils/h2xs.PL Date: Sat, 21 Sep 1996 16:38:24 -0500 From: Dean Roehrich 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" 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. --- utils/h2xs.PL | 59 +++++++++++++++++++++++++++++++---------------------------- 1 file changed, 31 insertions(+), 28 deletions(-) diff --git a/utils/h2xs.PL b/utils/h2xs.PL index 78f9647..96f6421 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 [B<-AOPXcf>] [B<-v> version] [B<-n> module_name] [B<-p> prefix] [B<-s> sub] [headerfile [extra_libraries]] +B [B<-AOPXcdf>] [B<-v> version] [B<-n> module_name] [B<-p> prefix] [B<-s> sub] [headerfile [extra_libraries]] B 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> 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 from the .xs file and corresponding specialised C 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, 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 should be installed. If this option is specified, the name of the header file may look like C. 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), 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 () { - 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 = <