… | |
… | |
729 | #include <XSUB.h> |
729 | #include <XSUB.h> |
730 | |
730 | |
731 | /* public API */ |
731 | /* public API */ |
732 | EXTERN_C PerlInterpreter *staticperl; |
732 | EXTERN_C PerlInterpreter *staticperl; |
733 | EXTERN_C void staticperl_xs_init (pTHX); |
733 | EXTERN_C void staticperl_xs_init (pTHX); |
734 | EXTERN_C void staticperl_init (void); |
734 | EXTERN_C void staticperl_init (XSINIT_t xs_init); /* argument can be 0 */ |
735 | EXTERN_C void staticperl_cleanup (void); |
735 | EXTERN_C void staticperl_cleanup (void); |
736 | |
736 | |
737 | EOF |
737 | EOF |
738 | } |
738 | } |
739 | |
739 | |
… | |
… | |
939 | print $fh " newXS (\"$pname\::$bootstrap\", boot_$cname, file);\n"; |
939 | print $fh " newXS (\"$pname\::$bootstrap\", boot_$cname, file);\n"; |
940 | } |
940 | } |
941 | |
941 | |
942 | print $fh <<EOF; |
942 | print $fh <<EOF; |
943 | Perl_av_create_and_unshift_one (&PL_preambleav, newSVpv (bootstrap, sizeof (bootstrap) - 1)); |
943 | Perl_av_create_and_unshift_one (&PL_preambleav, newSVpv (bootstrap, sizeof (bootstrap) - 1)); |
|
|
944 | |
|
|
945 | if (PL_oldname) |
|
|
946 | ((XSINIT_t)PL_oldname)(aTHX); |
944 | } |
947 | } |
945 | EOF |
948 | EOF |
946 | |
949 | |
947 | ############################################################################# |
950 | ############################################################################# |
948 | # optional perl_init/perl_destroy |
951 | # optional perl_init/perl_destroy |
… | |
… | |
1011 | EOF |
1014 | EOF |
1012 | } else { |
1015 | } else { |
1013 | print $fh <<EOF; |
1016 | print $fh <<EOF; |
1014 | |
1017 | |
1015 | EXTERN_C void |
1018 | EXTERN_C void |
1016 | staticperl_init (void) |
1019 | staticperl_init (XSINIT_t xs_init) |
1017 | { |
1020 | { |
1018 | static char *args[] = { |
1021 | static char *args[] = { |
1019 | "staticperl", |
1022 | "staticperl", |
1020 | "-e", |
1023 | "-e", |
1021 | "0" |
1024 | "0" |
… | |
… | |
1028 | PERL_SYS_INIT3 (&argc, &argv, &environ); |
1031 | PERL_SYS_INIT3 (&argc, &argv, &environ); |
1029 | staticperl = perl_alloc (); |
1032 | staticperl = perl_alloc (); |
1030 | perl_construct (staticperl); |
1033 | perl_construct (staticperl); |
1031 | PL_origalen = 1; |
1034 | PL_origalen = 1; |
1032 | PL_exit_flags |= PERL_EXIT_DESTRUCT_END; |
1035 | PL_exit_flags |= PERL_EXIT_DESTRUCT_END; |
|
|
1036 | PL_oldname = (char *)xs_init; |
1033 | perl_parse (staticperl, staticperl_xs_init, argc, argv, environ); |
1037 | perl_parse (staticperl, staticperl_xs_init, argc, argv, environ); |
1034 | |
1038 | |
1035 | perl_run (staticperl); |
1039 | perl_run (staticperl); |
1036 | } |
1040 | } |
1037 | |
1041 | |