This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Bump version numbers
[perl5.git] / ext / B / defsubs_h.PL
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)
4 #!perl
5 my ($out) = __FILE__ =~ /(^.*)\.PL/i;
6 $out =~ s/_h$/.h/;
7 open(OUT,">$out") || die "Cannot open $file:$!";
8 print "Extracting $out...\n";
9 print OUT <<"END";
10 /*
11  !!! Don't modify this file - it's autogenerated from $0 !!!
12  */
13 END
14
15 foreach my $const (qw(
16                       AVf_REAL
17                       CVf_ANON
18                       CVf_ASSERTION
19                       CVf_CLONE
20                       CVf_CLONED
21                       CVf_CONST
22                       CVf_LOCKED
23                       CVf_LVALUE
24                       CVf_METHOD
25                       CVf_NODEBUG
26                       CVf_OLDSTYLE
27                       CVf_UNIQUE
28                       CVf_WEAKOUTSIDE
29                       GVf_IMPORTED_AV
30                       GVf_IMPORTED_CV
31                       GVf_IMPORTED_HV
32                       GVf_IMPORTED_SV
33                       HEf_SVKEY
34                       SVTYPEMASK
35                       SVf_FAKE
36                       SVf_IOK
37                       SVf_IVisUV
38                       SVf_NOK
39                       SVf_POK
40                       SVf_READONLY
41                       SVf_ROK
42                       SVp_IOK
43                       SVp_NOK
44                       SVp_POK
45                       SVpad_OUR
46                       SVs_RMG
47                       SVs_SMG
48                       SVt_PVGV
49                       SVt_PVHV
50                       ))
51  {
52   doconst($const);
53  }
54 foreach my $file (qw(op.h cop.h))
55  {
56   my $path = $^O eq 'MacOS' ? ":::$file" : "../../$file";
57   open(OPH,"$path") || die "Cannot open $path:$!";
58   while (<OPH>)
59    {  
60     doconst($1) if (/#define\s+(\w+)\s+([\(\)\|\dx]+)\s*(?:$|\/\*)/);
61    }  
62   close(OPH);
63  }
64 close(OUT);
65                
66 sub doconst
67 {
68  my $sym = shift;
69  my $l = length($sym);
70  print OUT <<"END";
71  newCONSTSUB(stash,"$sym",newSViv($sym)); 
72  av_push(export_ok,newSVpvn("$sym",$l));
73 END
74 }