Commit | Line | Data |
---|---|---|
918c0b2d CB |
1 | # Do not remove the following line; MakeMaker relies on it to identify |
2 | # this file as a template for defsubs.h | |
3 | # Extracting defsubs.h (with variable substitutions) | |
b7254abc NC |
4 | #!perl -w |
5 | use File::Spec; | |
6 | my (undef, $headerpath) = @ARGV; | |
32882678 | 7 | my ($out) = __FILE__ =~ /(^.*)\.PL/i; |
93804878 | 8 | $out =~ s/_h$/.h/; |
fd40a117 | 9 | unlink $out if -l $out; |
4c1f658f | 10 | open(OUT,">$out") || die "Cannot open $file:$!"; |
cc50ac46 | 11 | print "Extracting $out...\n"; |
651aa52e AE |
12 | print OUT <<"END"; |
13 | /* | |
14 | !!! Don't modify this file - it's autogenerated from $0 !!! | |
15 | */ | |
16 | END | |
17 | ||
059a8bb7 | 18 | foreach my $const (qw( |
7386c4fb | 19 | CVf_ANON |
7386c4fb JH |
20 | CVf_CLONE |
21 | CVf_CLONED | |
22 | CVf_CONST | |
7386c4fb JH |
23 | CVf_LVALUE |
24 | CVf_METHOD | |
25 | CVf_NODEBUG | |
7386c4fb JH |
26 | CVf_UNIQUE |
27 | CVf_WEAKOUTSIDE | |
28 | GVf_IMPORTED_AV | |
29 | GVf_IMPORTED_CV | |
30 | GVf_IMPORTED_HV | |
31 | GVf_IMPORTED_SV | |
b874ff32 | 32 | HEf_SVKEY |
7386c4fb JH |
33 | SVTYPEMASK |
34 | SVf_FAKE | |
35 | SVf_IOK | |
36 | SVf_IVisUV | |
37 | SVf_NOK | |
38 | SVf_POK | |
39 | SVf_READONLY | |
40 | SVf_ROK | |
41 | SVp_IOK | |
42 | SVp_NOK | |
43 | SVp_POK | |
44 | SVpad_OUR | |
45 | SVs_RMG | |
46 | SVs_SMG | |
47 | SVt_PVGV | |
48 | SVt_PVHV | |
077a3fa2 NC |
49 | PAD_FAKELEX_ANON |
50 | PAD_FAKELEX_MULTI | |
059a8bb7 | 51 | )) |
4c1f658f NIS |
52 | { |
53 | doconst($const); | |
54 | } | |
e6663653 NC |
55 | |
56 | if ($] < 5.009) { | |
57 | # This is only present in 5.10, but it's useful to B::Deparse to be able | |
58 | # to import a dummy value from B | |
59 | doconst(OPpPAD_STATE); | |
60 | } | |
61 | ||
e412117e NC |
62 | if ($] >= 5.009) { |
63 | # Constant not present in 5.8.x | |
64 | doconst(CVf_ISXSUB); | |
f7192a3f NC |
65 | } else { |
66 | # Constant not present after 5.8.x | |
67 | doconst(AVf_REAL); | |
68 | } | |
e412117e | 69 | |
aa381260 NC |
70 | if ($] < 5.011) { |
71 | # Constant not present after 5.10.x | |
72 | doconst(CVf_LOCKED); | |
73 | } | |
74 | ||
c737faaf | 75 | foreach my $tuple (['op.h'],['cop.h'],['regexp.h','RXf_']) |
4c1f658f | 76 | { |
c737faaf YO |
77 | my $file = $tuple->[0]; |
78 | my $pfx = $tuple->[1] || ''; | |
b7254abc | 79 | my $path = File::Spec->catfile($headerpath, $file); |
db5fd395 | 80 | open(OPH,"$path") || die "Cannot open $path:$!"; |
4c1f658f NIS |
81 | while (<OPH>) |
82 | { | |
c737faaf | 83 | doconst($1) if (/#define\s+($pfx\w+)\s+([\(\)\|\dx]+)\s*(?:$|\/\*)/); |
4c1f658f NIS |
84 | } |
85 | close(OPH); | |
86 | } | |
87 | close(OUT); | |
88 | ||
89 | sub doconst | |
90 | { | |
91 | my $sym = shift; | |
92 | my $l = length($sym); | |
93 | print OUT <<"END"; | |
94 | newCONSTSUB(stash,"$sym",newSViv($sym)); | |
79cb57f6 | 95 | av_push(export_ok,newSVpvn("$sym",$l)); |
4c1f658f NIS |
96 | END |
97 | } |