X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=win32%2Frunperl.c;h=3947f9ef377299c322f34302611eec034dcfddd4;hb=4651cd973dc1927af3b5d1c108970bc03fc01bb1;hp=6f84c601eaaa3985eac55e5ee86b804dd34193cd;hpb=390b85e7c411323845dca16b7882a5a5754a433e;p=p5sagit%2Fp5-mst-13.2.git diff --git a/win32/runperl.c b/win32/runperl.c index 6f84c60..3947f9e 100644 --- a/win32/runperl.c +++ b/win32/runperl.c @@ -1,4 +1,73 @@ -/* Say NO to CPP! Hallelujah! */ + +#ifdef PERL_OBJECT +#define USE_SOCKETS_AS_HANDLES +#include "EXTERN.h" +#include "perl.h" + +#define NO_XSLOCKS +#include "XSUB.H" +#include "win32iop.h" + +#include +#include "perlhost.h" + + +char *staticlinkmodules[] = { + "DynaLoader", + NULL, +}; + +EXTERN_C void boot_DynaLoader _((CV* cv _CPERLarg)); + +static void +xs_init(CPERLarg) +{ + char *file = __FILE__; + dXSUB_SYS; + newXS("DynaLoader::boot_DynaLoader", boot_DynaLoader, file); +} + +CPerlObj *pPerl; + +#undef PERL_SYS_INIT +#define PERL_SYS_INIT(a, c) + +int +main(int argc, char **argv, char **env) +{ + CPerlHost host; + int exitstatus = 1; + + if(!host.PerlCreate()) + exit(exitstatus); + + exitstatus = host.PerlParse(xs_init, argc, argv, NULL); + + if (!exitstatus) + exitstatus = host.PerlRun(); + + host.PerlDestroy(); + + return exitstatus; +} + +#else /* PERL_OBJECT */ + +#ifdef __GNUC__ +/* + * GNU C does not do __declspec() + */ +#define __declspec(foo) + +/* Mingw32 defaults to globing command line + * This is inconsistent with other Win32 ports and + * seems to cause trouble with passing -DXSVERSION=\"1.6\" + * So we turn it off like this: + */ +int _CRT_glob = 0; + +#endif + __declspec(dllimport) int RunPerl(int argc, char **argv, char **env, void *ios); @@ -7,3 +76,5 @@ main(int argc, char **argv, char **env) { return RunPerl(argc, argv, env, (void*)0); } + +#endif /* PERL_OBJECT */