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