38b6670b10f81fc6807ece69c7c66be041ed8195
[p5sagit/p5-mst-13.2.git] / vms / writemain.pl
1 #!./miniperl
2 #
3 # Create perlmain.c from miniperlmain.c, adding code to boot the
4 # extensions listed on the command line.
5 #
6
7 if (-f 'miniperlmain.c') { $dir = ''; }
8 elsif (-f '../miniperlmain.c') { $dir = '../'; }
9 else { die "$0: Can't find miniperlmain.c\n"; }
10
11 open (IN,"${dir}miniperlmain.c")
12   || die "$0: Can't open ${dir}miniperlmain.c: $!\n";
13 open (OUT,">${dir}perlmain.c")
14   || die "$0: Can't open ${dir}perlmain.c: $!\n";
15
16 while (<IN>) {
17   s/INTERN\.h/EXTERN\.h/;
18   print OUT;
19   last if /Do not delete this line--writemain depends on it/;
20 }
21 $ok = !eof(IN);
22 close IN;
23
24 if (!$ok) {
25   close OUT;
26   unlink "${dir}perlmain.c";
27   die "$0: Can't find marker line in ${dir}miniperlmain.c - aborting\n";
28 }
29
30
31 if ($#ARGV > -1) {
32   print OUT "    char *file = __FILE__;\n";
33 }
34
35 foreach $ext (@ARGV) {
36   print OUT "extern void        boot_${ext} _((CV* cv));\n"
37 }
38
39 foreach $ext (@ARGV) {
40   print "Adding $ext . . .\n";
41   if ($ext eq 'DynaLoader') {
42     # Must NOT install 'DynaLoader::boot_DynaLoader' as 'bootstrap'!
43     # boot_DynaLoader is called directly in DynaLoader.pm
44     print OUT "    newXS(\"${ext}::boot_${ext}\", boot_${ext}, file);\n"
45   }
46   else {
47     print OUT "    newXS(\"${ext}::bootstrap\", boot_${ext}, file);\n"
48   }
49 }
50
51 print OUT "}\n";
52 close OUT;