# Do not remove the following line; MakeMaker relies on it to identify # this file as a template for defsubs.h # Extracting defsubs.h (with variable substitutions) #!perl my ($out) = __FILE__ =~ /(^.*)\.PL/i; $out =~ s/_h$/.h/; open(OUT,">$out") || die "Cannot open $file:$!"; print "Extracting $out...\n"; print OUT <<"END"; /* !!! Don't modify this file - it's autogenerated from $0 !!! */ END foreach my $const (qw( AVf_REAL CVf_ANON CVf_ASSERTION CVf_CLONE CVf_CLONED CVf_CONST CVf_LOCKED CVf_LVALUE CVf_METHOD CVf_NODEBUG CVf_OLDSTYLE CVf_UNIQUE CVf_WEAKOUTSIDE GVf_IMPORTED_AV GVf_IMPORTED_CV GVf_IMPORTED_HV GVf_IMPORTED_SV HEf_SVKEY SVTYPEMASK SVf_FAKE SVf_IOK SVf_IVisUV SVf_NOK SVf_POK SVf_READONLY SVf_ROK SVp_IOK SVp_NOK SVp_POK SVpad_OUR SVs_RMG SVs_SMG SVt_PVGV SVt_PVHV )) { doconst($const); } foreach my $file (qw(op.h cop.h)) { my $path = $^O eq 'MacOS' ? ":::$file" : "../../$file"; open(OPH,"$path") || die "Cannot open $path:$!"; while () { doconst($1) if (/#define\s+(\w+)\s+([\(\)\|\dx]+)\s*(?:$|\/\*)/); } close(OPH); } close(OUT); sub doconst { my $sym = shift; my $l = length($sym); print OUT <<"END"; newCONSTSUB(stash,"$sym",newSViv($sym)); av_push(export_ok,newSVpvn("$sym",$l)); END }