Patch for embed.pl when !EMBED && !MULTIPLICITY
[p5sagit/p5-mst-13.2.git] / embed.pl
1 #!/usr/bin/perl
2
3 open(EM, ">embed.h") || die "Can't create embed.h: $!\n";
4
5 print EM <<'END';
6 /* !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!! 
7    This file is built by embed.pl from global.sym and interp.sym.
8    Any changes made here will be lost 
9 */
10
11 /* (Doing namespace management portably in C is really gross.) */
12
13 /*  EMBED has no run-time penalty, but helps keep the Perl namespace
14     from colliding with that used by other libraries pulled in
15     by extensions or by embedding perl.  Allow a cc -DNO_EMBED
16     override, however, to keep binary compatability with previous
17     versions of perl.
18 */
19 #ifndef NO_EMBED
20 #  define EMBED 1 
21 #endif
22
23 #ifdef EMBED
24
25 /* globals we need to hide from the world */
26 END
27
28 open(GL, "<global.sym") || die "Can't open global.sym: $!\n";
29
30 while(<GL>) {
31         s/[ \t]*#.*//;          # Delete comments.
32         next unless /\S/;
33         s/^\s*(\S+).*$/#define $1\t\tPerl_$1/;
34         $global{$1} = 1; 
35         s/(................\t)\t/$1/;
36         print EM $_;
37 }
38
39 close(GL) || warn "Can't close global.sym: $!\n";
40
41 print EM <<'END';
42
43 #endif /* EMBED */
44
45 /* Put interpreter specific symbols into a struct? */
46
47 #ifdef MULTIPLICITY
48
49 END
50
51 open(INT, "<interp.sym") || die "Can't open interp.sym: $!\n";
52 while (<INT>) {
53         s/[ \t]*#.*//;          # Delete comments.
54         next unless /\S/;
55         s/^\s*(\S+).*$/#define $1\t\t(curinterp->I$1)/;
56         s/(................\t)\t/$1/;
57         print EM $_;
58 }
59 close(INT) || warn "Can't close interp.sym: $!\n";
60
61 print EM <<'END';
62
63 #else   /* not multiple, so translate interpreter symbols the other way... */
64
65 END
66
67 open(INT, "<interp.sym") || die "Can't open interp.sym: $!\n";
68 while (<INT>) {
69         s/[ \t]*#.*//;          # Delete comments.
70         next unless /\S/;
71         s/^\s*(\S+).*$/#define I$1\t\t$1/;
72         s/(................\t)\t/$1/;
73         print EM $_;
74 }
75 close(INT) || warn "Can't close interp.sym: $!\n";
76
77 print EM <<'END';
78
79 #ifdef EMBED
80
81 END
82
83 open(INT, "<interp.sym") || die "Can't open interp.sym: $!\n";
84 while (<INT>) {
85         s/[ \t]*#.*//;          # Delete comments.
86         next unless /\S/;
87         s/^\s*(\S+).*$/#define $1\t\tPerl_$1/;
88         s/(................\t)\t/$1/;
89         print EM $_;
90 }
91 close(INT) || warn "Can't close interp.sym: $!\n";
92
93 print EM <<'END';
94
95 #endif /* EMBED */
96
97 #endif /* MULTIPLICITY */
98 END
99