This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
op.h: add blank line for grouping
[perl5.git] / minimod.pl
index 2300a7f..a5bd172 100644 (file)
@@ -1,4 +1,5 @@
-# minimod.PL writes the contents of miniperlmain.c into the module
+#./miniperl -w
+# minimod.pl writes the contents of miniperlmain.c into the module
 # ExtUtils::Miniperl for later perusal (when the perl source is
 # deleted)
 #
 #
 # Version 1.0, Feb 2nd 1995 by Andreas Koenig
 
+BEGIN { unshift @INC, "lib" }
+
+use strict;
+
 print <<'END';
 # This File keeps the contents of miniperlmain.c.
 #
@@ -32,6 +37,7 @@ open MINI, "miniperlmain.c";
 while (<MINI>) {
     last if /Do not delete this line--writemain depends on it/;
     print;
+    /#include "perl.h"/ and print qq/#include "XSUB.h"\n/;
 }
 
 print <<'END';
@@ -40,7 +46,7 @@ $tail=<<'EOF!TAIL';
 END
 
 while (<MINI>) {
-    print;
+    print unless /dXSUB_SYS/;
 }
 close MINI;
 
@@ -59,13 +65,16 @@ sub writemain{
        my($mname, $cname);
        ($mname = $pname) =~ s!/!::!g;
        ($cname = $pname) =~ s!/!__!g;
-       print "EXTERN_C void boot_${cname} _((CV* cv));\n";
+        print "EXTERN_C void boot_${cname} (pTHX_ CV* cv);\n";
     }
 
-    my ($tail1,$tail2) = ( $tail =~ /\A(.*\n)(\s*\}.*)\Z/s );
+    my ($tail1,$tail2,$tail3) = ( $tail =~ /\A(.*{\s*\n)(.*\n)(\s*\}.*)\Z/s );
+
     print $tail1;
+    print "\tconst char file[] = __FILE__;\n";
+    print "\tdXSUB_SYS;\n" if $] > 5.002;
+    print $tail2;
 
-    print "    char *file = __FILE__;\n";
     foreach $_ (@exts){
        my($pname) = canon('/', $_);
        my($mname, $cname, $ccode);
@@ -84,7 +93,7 @@ sub writemain{
        }
        print "\t}\n";
     }
-    print $tail2;
+    print $tail3;
 }
 
 sub canon{
@@ -101,9 +110,10 @@ sub canon{
 
 1;
 __END__
+
 =head1 NAME
 
-ExtUtils::Miniperl.PL
+ExtUtils::Miniperl, writemain - write the C code for perlmain.c
 
 =head1 SYNOPSIS