This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perl 5.002beta1h patch: mg.c
[perl5.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 /* This file is derived from global.sym and interp.sym */
7
8 /* (Doing namespace management portably in C is really gross.) */
9
10 #ifdef EMBED
11
12 /* globals we need to hide from the world */
13 END
14
15 open(GL, "<global.sym") || die "Can't open global.sym: $!\n";
16
17 while(<GL>) {
18         s/[ \t]*#.*//;          # Delete comments.
19         next unless /\S/;
20         s/(.*)/#define $1\t\tPerl_$1/;
21         s/(................\t)\t/$1/;
22         print EM $_;
23 }
24
25 close(GL) || warn "Can't close global.sym: $!\n";
26
27 print EM <<'END';
28
29 #endif /* EMBED */
30
31 /* Put interpreter specific symbols into a struct? */
32
33 #ifdef MULTIPLICITY
34
35 END
36
37 open(INT, "<interp.sym") || die "Can't open interp.sym: $!\n";
38 while (<INT>) {
39         s/[ \t]*#.*//;          # Delete comments.
40         next unless /\S/;
41         s/(.*)/#define $1\t\t(curinterp->I$1)/;
42         s/(................\t)\t/$1/;
43         print EM $_;
44 }
45 close(INT) || warn "Can't close interp.sym: $!\n";
46
47 print EM <<'END';
48
49 #else   /* not multiple, so translate interpreter symbols the other way... */
50
51 END
52
53 open(INT, "<interp.sym") || die "Can't open interp.sym: $!\n";
54 while (<INT>) {
55         s/[ \t]*#.*//;          # Delete comments.
56         next unless /\S/;
57         s/(.*)/#define I$1\t\t$1/;
58         s/(................\t)\t/$1/;
59         print EM $_;
60 }
61 close(INT) || warn "Can't close interp.sym: $!\n";
62
63 print EM <<'END';
64
65 #endif /* MULTIPLICITY */
66 END
67