Upon further inspection, it appears that enum handling in h2xs is broken
altogether. The attached patch seems to fix it.
Daniel
--- h2xs.orig 2005-06-09 01:14:29.000000000 +1000
+++ h2xs 2005-07-28 16:22:26.000000000 +1000
@@ -730,7 +730,7 @@
}
my @path_h_ini = @path_h;
-my ($name, %fullpath, %prefix, %seen_define, %prefixless, %const_names);
+my ($name, %fullpath, %prefix, %seen_define, %prefixless, %const_names,
%enum_names);
my $module = $opt_n;
@@ -860,10 +860,11 @@
# Remove C and C++ comments
$src =~
s#/\*[^*]*\*+([^/*][^*]*\*+)*/|("(\\.|[^"\\])*"|'(\\.|[^'\\])*'|.[^/"'\\]*)#$2#gs;
+ $src =~ s#//.*\n#\n#g;
- while ($src =~ /(\benum\s*([\w_]*)\s*\{\s([\s\w=,]+)\})/gsc) {
+ while ($src =~ /(\benum\s*([\w_]*)\s*\{\s([\s\w=,-]+)\})/gsc) {
my ($enum_name, $enum_body) =
- $1 =~ /enum\s*([\w_]*)\s*\{\s([\s\w=,]+)\}/gs;
+ $1 =~ /enum\s*([\w_]*)\s*\{\s([\s\w=,-]+)\}/gs;
# skip enums matching $opt_e
next if $opt_e && $enum_name =~ /$opt_e/;
my $val = 0;
@@ -872,6 +873,7 @@
$val = defined($declared_val) && length($declared_val) ?
$declared_val : 1 + $val;
$seen_define{$key} = $val;
$const_names{$key}++;
+ $enum_names{$key}++;
}
} # while (...)
} # if (!defined $opt_e or $opt_e)
@@ -1902,12 +1904,13 @@
} # ' # Grr
print PL ");\n";
if (!$opt_c) {
+ my @names = map { $enum_names{$_}? { name => $_, macro => 1 }: $_} (sort
keys %const_names);
my $generate_code =
WriteMakefileSnippet ( C_FILE => $constscfname,
XS_FILE => $constsxsfname,
DEFAULT_TYPE => $opt_t,
NAME => $module,
- NAMES => [EMAIL PROTECTED],
+ NAMES => [EMAIL PROTECTED],
);
print PL <<"END";
if (eval {require ExtUtils::Constant; 1}) {