summaryrefslogtreecommitdiff
path: root/gnu/usr.bin/perl/win32/makemain.pl
blob: 740b6a212a0d4b64e732b2759ba0731055a00987 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
open (MINIMAIN, "<../miniperlmain.c") || die "failed to open miniperlmain.c" . $!;

while (<MINIMAIN>) {
	if (/Do not delete this line--writemain depends on it/) {
		last;
		}
	else {
		print $_;
		}
	};

close(MINIMAIN);

print "char *staticlinkmodules[]={\n";
foreach (@ARGV) {
	print "\t\"".$_."\",\n";
	}
print "\tNULL,\n";
print "\t};\n";
print "\n";
foreach (@ARGV) {
	print "EXTERN_C void boot_$_ _((CV* cv));\n"
	}

print <<EOP;

static void
xs_init()
{
	dXSUB_SYS;
	char *file = __FILE__;
EOP

foreach (@ARGV) {
	if (/DynaLoader/) {
	    print "\tnewXS(\"$_\:\:boot_$_\", boot_$_, file);\n";
		}
	else {
	    print "\tnewXS(\"$_\:\:bootstrap\", boot_$_, file);\n";
		};
	}

print <<EOP;
}
EOP