summaryrefslogtreecommitdiff
path: root/vms/writemain.pl
diff options
context:
space:
mode:
authorLarry Wall <lwall@netlabs.com>1994-10-17 23:00:00 +0000
committerLarry Wall <lwall@netlabs.com>1994-10-17 23:00:00 +0000
commita0d0e21ea6ea90a22318550944fe6cb09ae10cda (patch)
treefaca1018149b736b1142f487e44d1ff2de5cc1fa /vms/writemain.pl
parent85e6fe838fb25b257a1b363debf8691c0992ef71 (diff)
downloadperl-a0d0e21ea6ea90a22318550944fe6cb09ae10cda.tar.gz
perl 5.000perl-5.000
[editor's note: this commit combines approximate 4 months of furious releases of Andy Dougherty and Larry Wall - see pod/perlhist.pod for details. Andy notes that; Alas neither my "Irwin AccuTrack" nor my DC 600A quarter-inch cartridge backup tapes from that era seem to be readable anymore. I guess 13 years exceeds the shelf life for that backup technology :-(. ]
Diffstat (limited to 'vms/writemain.pl')
-rw-r--r--vms/writemain.pl52
1 files changed, 52 insertions, 0 deletions
diff --git a/vms/writemain.pl b/vms/writemain.pl
new file mode 100644
index 0000000000..38b6670b10
--- /dev/null
+++ b/vms/writemain.pl
@@ -0,0 +1,52 @@
+#!./miniperl
+#
+# Create perlmain.c from miniperlmain.c, adding code to boot the
+# extensions listed on the command line.
+#
+
+if (-f 'miniperlmain.c') { $dir = ''; }
+elsif (-f '../miniperlmain.c') { $dir = '../'; }
+else { die "$0: Can't find miniperlmain.c\n"; }
+
+open (IN,"${dir}miniperlmain.c")
+ || die "$0: Can't open ${dir}miniperlmain.c: $!\n";
+open (OUT,">${dir}perlmain.c")
+ || die "$0: Can't open ${dir}perlmain.c: $!\n";
+
+while (<IN>) {
+ s/INTERN\.h/EXTERN\.h/;
+ print OUT;
+ last if /Do not delete this line--writemain depends on it/;
+}
+$ok = !eof(IN);
+close IN;
+
+if (!$ok) {
+ close OUT;
+ unlink "${dir}perlmain.c";
+ die "$0: Can't find marker line in ${dir}miniperlmain.c - aborting\n";
+}
+
+
+if ($#ARGV > -1) {
+ print OUT " char *file = __FILE__;\n";
+}
+
+foreach $ext (@ARGV) {
+ print OUT "extern void boot_${ext} _((CV* cv));\n"
+}
+
+foreach $ext (@ARGV) {
+ print "Adding $ext . . .\n";
+ if ($ext eq 'DynaLoader') {
+ # Must NOT install 'DynaLoader::boot_DynaLoader' as 'bootstrap'!
+ # boot_DynaLoader is called directly in DynaLoader.pm
+ print OUT " newXS(\"${ext}::boot_${ext}\", boot_${ext}, file);\n"
+ }
+ else {
+ print OUT " newXS(\"${ext}::bootstrap\", boot_${ext}, file);\n"
+ }
+}
+
+print OUT "}\n";
+close OUT;