ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/App-Staticperl/mkbundle
(Generate patch)

Comparing App-Staticperl/mkbundle (file contents):
Revision 1.17 by root, Wed Feb 9 09:52:27 2011 UTC vs.
Revision 1.21 by root, Thu Feb 10 11:46:02 2011 UTC

266} 266}
267 267
268############################################################################# 268#############################################################################
269 269
270sub cmd_boot { 270sub cmd_boot {
271 $pm{"//boot"} = $_[0]; 271 $pm{"&&boot"} = $_[0];
272} 272}
273 273
274sub cmd_add { 274sub cmd_add {
275 $_[0] =~ /^(.*)(?:\s+(\S+))$/ 275 $_[0] =~ /^(.*?)(?:\s+(\S+))?$/
276 or die "$_[0]: cannot parse"; 276 or die "$_[0]: cannot parse";
277 277
278 my $file = $1; 278 my $file = $1;
279 my $as = defined $2 ? $2 : "/$1"; 279 my $as = defined $2 ? $2 : "&$1";
280
281 warn "<$file,$as>\n";#d#
280 282
281 $pm{$as} = $file; 283 $pm{$as} = $file;
282 $pmbin{$as} = 1 if $_[1]; 284 $pmbin{$as} = 1 if $_[1];
283} 285}
284 286
729#include <XSUB.h> 731#include <XSUB.h>
730 732
731/* public API */ 733/* public API */
732EXTERN_C PerlInterpreter *staticperl; 734EXTERN_C PerlInterpreter *staticperl;
733EXTERN_C void staticperl_xs_init (pTHX); 735EXTERN_C void staticperl_xs_init (pTHX);
734EXTERN_C void staticperl_init (void); 736EXTERN_C void staticperl_init (XSINIT_t xs_init); /* argument can be 0 */
735EXTERN_C void staticperl_cleanup (void); 737EXTERN_C void staticperl_cleanup (void);
736 738
737EOF 739EOF
738} 740}
739 741
808 $fh 810 $fh
809 }; 811 };
810} 812}
811'; 813';
812 814
813$bootstrap .= "require '//boot';" 815$bootstrap .= "require '&&boot';"
814 if exists $pm{"//boot"}; 816 if exists $pm{"&&boot"};
815 817
816$bootstrap =~ s/\s+/ /g; 818$bootstrap =~ s/\s+/ /g;
817$bootstrap =~ s/(\W) /$1/g; 819$bootstrap =~ s/(\W) /$1/g;
818$bootstrap =~ s/ (\W)/$1/g; 820$bootstrap =~ s/ (\W)/$1/g;
819 821
939 print $fh " newXS (\"$pname\::$bootstrap\", boot_$cname, file);\n"; 941 print $fh " newXS (\"$pname\::$bootstrap\", boot_$cname, file);\n";
940} 942}
941 943
942print $fh <<EOF; 944print $fh <<EOF;
943 Perl_av_create_and_unshift_one (&PL_preambleav, newSVpv (bootstrap, sizeof (bootstrap) - 1)); 945 Perl_av_create_and_unshift_one (&PL_preambleav, newSVpv (bootstrap, sizeof (bootstrap) - 1));
946
947 if (PL_oldname)
948 ((XSINIT_t)PL_oldname)(aTHX);
944} 949}
945EOF 950EOF
946 951
947############################################################################# 952#############################################################################
948# optional perl_init/perl_destroy 953# optional perl_init/perl_destroy
1011EOF 1016EOF
1012} else { 1017} else {
1013 print $fh <<EOF; 1018 print $fh <<EOF;
1014 1019
1015EXTERN_C void 1020EXTERN_C void
1016staticperl_init (void) 1021staticperl_init (XSINIT_t xs_init)
1017{ 1022{
1018 static char *args[] = { 1023 static char *args[] = {
1019 "staticperl", 1024 "staticperl",
1020 "-e", 1025 "-e",
1021 "0" 1026 "0"
1028 PERL_SYS_INIT3 (&argc, &argv, &environ); 1033 PERL_SYS_INIT3 (&argc, &argv, &environ);
1029 staticperl = perl_alloc (); 1034 staticperl = perl_alloc ();
1030 perl_construct (staticperl); 1035 perl_construct (staticperl);
1031 PL_origalen = 1; 1036 PL_origalen = 1;
1032 PL_exit_flags |= PERL_EXIT_DESTRUCT_END; 1037 PL_exit_flags |= PERL_EXIT_DESTRUCT_END;
1038 PL_oldname = (char *)xs_init;
1033 perl_parse (staticperl, staticperl_xs_init, argc, argv, environ); 1039 perl_parse (staticperl, staticperl_xs_init, argc, argv, environ);
1034 1040
1035 perl_run (staticperl); 1041 perl_run (staticperl);
1036} 1042}
1037 1043

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines