diff options
-rw-r--r-- | ext/Win32CORE/Makefile.PL | 12 | ||||
-rw-r--r-- | ext/Win32CORE/Win32CORE.c | 8 |
2 files changed, 19 insertions, 1 deletions
diff --git a/ext/Win32CORE/Makefile.PL b/ext/Win32CORE/Makefile.PL index 0fec3061be..77c1f327af 100644 --- a/ext/Win32CORE/Makefile.PL +++ b/ext/Win32CORE/Makefile.PL @@ -4,3 +4,15 @@ WriteMakefile( 'NAME' => 'Win32CORE', 'VERSION_FROM' => 'Win32CORE.pm', ); + +# undef USEIMPORTLIB for static compilation +sub MY::cflags { + package MY; # so that "SUPER" works right + my ($self, $libperl)=@_; + return '' unless $self->needs_linking(); + my $base = $self->SUPER::cflags($libperl); + if ($self->{LINKTYPE} eq 'static') { + $base =~ s/CCFLAGS =(.*)$/CCFLAGS =\1 -UUSEIMPORTLIB /m; + } + return $base; +} diff --git a/ext/Win32CORE/Win32CORE.c b/ext/Win32CORE/Win32CORE.c index 7769c7464d..9863b5b51a 100644 --- a/ext/Win32CORE/Win32CORE.c +++ b/ext/Win32CORE/Win32CORE.c @@ -10,7 +10,13 @@ #define WIN32_LEAN_AND_MEAN #include <windows.h> +#if defined(__CYGWIN__) && !defined(USEIMPORTLIB) + #undef WIN32 +#endif #include "EXTERN.h" +#if defined(__CYGWIN__) && !defined(USEIMPORTLIB) + #define EXTCONST extern const +#endif #include "perl.h" #include "XSUB.h" @@ -62,7 +68,7 @@ XS(boot_Win32CORE) * should never be called though, as Win32CORE.pm doesn't use DynaLoader. */ } -#ifdef __CYGWIN__ +#if defined(__CYGWIN__) && defined(USEIMPORTLIB) __declspec(dllexport) #endif void |