summaryrefslogtreecommitdiff
path: root/vms/writemain.pl
diff options
context:
space:
mode:
Diffstat (limited to 'vms/writemain.pl')
-rw-r--r--vms/writemain.pl41
1 files changed, 26 insertions, 15 deletions
diff --git a/vms/writemain.pl b/vms/writemain.pl
index 38b6670b10..0208313288 100644
--- a/vms/writemain.pl
+++ b/vms/writemain.pl
@@ -1,7 +1,11 @@
#!./miniperl
#
# Create perlmain.c from miniperlmain.c, adding code to boot the
-# extensions listed on the command line.
+# extensions listed on the command line. In addition, create a
+# linker options file which causes the bootstrap routines for
+# these extension to be universal symbols in PerlShr.Exe.
+#
+# Last modified 29-Nov-1994 by Charles Bailey bailey@genetics.upenn.edu
#
if (-f 'miniperlmain.c') { $dir = ''; }
@@ -28,23 +32,30 @@ if (!$ok) {
}
-if ($#ARGV > -1) {
- print OUT " char *file = __FILE__;\n";
+if (@ARGV) {
+ # Allow for multiple names in one quoted group
+ @exts = split(/\s+/, join(' ',@ARGV));
}
-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"
+if (@exts) {
+ print OUT " char *file = __FILE__;\n";
+ foreach $ext (@exts) {
+ my($subname) = $ext;
+ $subname =~ s/::/__/g;
+ print OUT "extern void boot_${subname} _((CV* cv));\n"
}
- else {
- print OUT " newXS(\"${ext}::bootstrap\", boot_${ext}, file);\n"
+ foreach $ext (@exts) {
+ my($subname) = $ext;
+ $subname =~ s/::/__/g;
+ 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_${subname}, file);\n"
+ }
+ else {
+ print OUT " newXS(\"${ext}::bootstrap\", boot_${subname}, file);\n"
+ }
}
}