1555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot/* -----------------------------------------------------------------------------
2555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot * perlmain.i
3555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot *
4555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot * Code to statically rebuild perl5.
5555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot * ----------------------------------------------------------------------------- */
6555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
7555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot#ifdef AUTODOC
8555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot%subsection "perlmain.i"
9555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot%text %{
10555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team RobotThis module provides support for building a new version of the
11555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team RobotPerl executable.  This will be necessary on systems that do
12555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robotnot support shared libraries and may be necessary with C++
13555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robotextensions.
14555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
15555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team RobotThis module may only build a stripped down version of the
16555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team RobotPerl executable.   Thus, it may be necessary (or desirable)
17555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robotto hand-edit this file for your particular application.  To
18555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robotdo this, simply copy this file from swig_lib/perl5/perlmain.i
19555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robotto your working directory and make the appropriate modifications.
20555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
21555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team RobotThis library file works with Perl 5.003.  It may work with earlier
22555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robotversions, but it hasn't been tested.  As far as I know, this
23555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robotlibrary is C++ safe.
24555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot%}
25555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot#endif
26555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
27555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot%{
28555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
29555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robotstatic void xs_init _((pTHX));
30555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robotstatic PerlInterpreter *my_perl;
31555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
32555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robotint perl_eval(char *string) {
33555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot  char *argv[2];
34555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot  argv[0] = string;
35555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot  argv[1] = (char *) 0;
36555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot  return perl_call_argv("eval",0,argv);
37555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot}
38555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
39555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robotint
40555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robotmain(int argc, char **argv, char **env)
41555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot{
42555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    int exitstatus;
43555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
44555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    my_perl = perl_alloc();
45555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    if (!my_perl)
46555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot       exit(1);
47555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    perl_construct( my_perl );
48555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
49555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    exitstatus = perl_parse( my_perl, xs_init, argc, argv, (char **) NULL );
50555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    if (exitstatus)
51555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	exit( exitstatus );
52555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
53555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    /* Initialize all of the module variables */
54555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
55555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    exitstatus = perl_run( my_perl );
56555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
57555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    perl_destruct( my_perl );
58555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    perl_free( my_perl );
59555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
60555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    exit( exitstatus );
61555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot}
62555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
63555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot/* Register any extra external extensions */
64555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
65555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot/* Do not delete this line--writemain depends on it */
66555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot/* EXTERN_C void boot_DynaLoader _((CV* cv)); */
67555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
68555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robotstatic void
69555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robotxs_init(pTHX)
70555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot{
71555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot/*  dXSUB_SYS; */
72555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    char *file = __FILE__;
73555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    {
74555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot      /*        newXS("DynaLoader::boot_DynaLoader", boot_DynaLoader, file); */
75555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	newXS(SWIG_name, SWIG_init, file);
76555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot#ifdef SWIGMODINIT
77555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	SWIGMODINIT
78555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot#endif
79555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    }
80555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot}
81555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
82555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot%}
83