diff options
author | Larry Wall <lwall@netlabs.com> | 1994-10-17 23:00:00 +0000 |
---|---|---|
committer | Larry Wall <lwall@netlabs.com> | 1994-10-17 23:00:00 +0000 |
commit | a0d0e21ea6ea90a22318550944fe6cb09ae10cda (patch) | |
tree | faca1018149b736b1142f487e44d1ff2de5cc1fa /vms/writemain.pl | |
parent | 85e6fe838fb25b257a1b363debf8691c0992ef71 (diff) | |
download | perl-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.pl | 52 |
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; |