2 # minimod.pl writes the contents of miniperlmain.c into the module
3 # ExtUtils::Miniperl for later perusal (when the perl source is
6 # It also writes the subroutine writemain(), which takes as its
7 # arguments module names that shall be statically linked into perl.
9 # Authors: Andreas Koenig <k@franz.ww.TU-Berlin.DE>, Tim Bunce
10 # <Tim.Bunce@ig.co.uk>
12 # Version 1.0, Feb 2nd 1995 by Andreas Koenig
14 BEGIN { unshift @INC, "lib" }
19 # This File keeps the contents of miniperlmain.c.
21 # It was generated automatically by minimod.PL from the contents
22 # of miniperlmain.c. Don't edit this file!
24 # ANY CHANGES MADE HERE WILL BE LOST!
28 package ExtUtils::Miniperl;
31 @EXPORT = qw(&writemain);
36 open MINI, "miniperlmain.c";
38 last if /Do not delete this line--writemain depends on it/;
48 print unless /dXSUB_SYS/;
59 my($dl) = canon('/','DynaLoader');
63 my($pname) = canon('/', $_);
65 ($mname = $pname) =~ s!/!::!g;
66 ($cname = $pname) =~ s!/!__!g;
67 print "EXTERN_C void boot_${cname} (pTHX_ CV* cv);\n";
70 my ($tail1,$tail2) = ( $tail =~ /\A(.*\n)(\s*\}.*)\Z/s );
73 print "\tconst char file[] = __FILE__;\n";
74 print "\tdXSUB_SYS;\n" if $] > 5.002;
77 my($pname) = canon('/', $_);
78 my($mname, $cname, $ccode);
79 ($mname = $pname) =~ s!/!::!g;
80 ($cname = $pname) =~ s!/!__!g;
83 # Must NOT install 'DynaLoader::boot_DynaLoader' as 'bootstrap'!
84 # boot_DynaLoader is called directly in DynaLoader.pm
85 $ccode = "\t/* DynaLoader is a special case */\n
86 \tnewXS(\"${mname}::boot_${cname}\", boot_${cname}, file);\n";
87 print $ccode unless $SEEN{$ccode}++;
89 $ccode = "\tnewXS(\"${mname}::bootstrap\", boot_${cname}, file);\n";
90 print $ccode unless $SEEN{$ccode}++;
100 # might be X::Y or lib/auto/X/Y/Y.a
102 s:^(lib|ext)/(auto/)?::;
105 grep(s:/:$as:, @ext) if ($as ne '/');
114 ExtUtils::Miniperl, writemain - write the C code for perlmain.c
118 C<use ExtUtils::Miniperl;>
120 C<writemain(@directories);>
124 This whole module is written when perl itself is built from a script
125 called minimod.PL. In case you want to patch it, please patch
126 minimod.PL in the perl distribution instead.
128 writemain() takes an argument list of directories containing archive
129 libraries that relate to perl modules and should be linked into a new
130 perl binary. It writes to STDOUT a corresponding perlmain.c file that
131 is a plain C file containing all the bootstrap code to make the
132 modules associated with the libraries available from within perl.
134 The typical usage is from within a Makefile generated by
135 ExtUtils::MakeMaker. So under normal circumstances you won't have to
136 deal with this module directly.
140 L<ExtUtils::MakeMaker>