Skip Menu |

This queue is for tickets about the Event CPAN distribution.

Report information
The Basics
Id: 4463
Status: resolved
Priority: 0/
Queue: Event

People
Owner: Nobody in particular
Requestors: corion [...] corion.net
Cc:
AdminCc:

Bug Information
Severity: (no value)
Broken in: (no value)
Fixed in: (no value)



Date: Sun, 23 Nov 2003 12:09:24 +0100
From: Max Maischein <corion [...] corion.net>
To: bug-Event [...] rt.cpan.org
Subject: Event v0.87 dosen't compile under MSVC 6
Hello, the latest version of Event dosen't compile out of the box, it stops with a syntax error in signal.h(102). I copied my signal.h to the C/ directory and commented out line 102, and after that it compiled and all tests passed. I don't understand what caused this, nor do I understand what I did, but if the tests pass, I take this as a sign that everything is fine... I guess that the error is caused by some includefile weirdness that deep down redefines something leading to this syntax error - but I don't know how to coerce MSVC to show me the complete expanded macros etc. (You should see by now that my C knowledge goes only slightly beyond typing "make" and praying). -max (Corion on CPAN) Summary of my perl5 (revision 5 version 8 subversion 2) configuration: Platform: osname=MSWin32, osvers=4.0, archname=MSWin32-x86-multi-thread uname='' config_args='undef' hint=recommended, useposix=true, d_sigaction=undef usethreads=undef use5005threads=undef useithreads=define usemultiplicity=def ine useperlio=define d_sfio=undef uselargefiles=define usesocks=undef use64bitint=undef use64bitall=undef uselongdouble=undef usemymalloc=n, bincompat5005=undef Compiler: cc='cl', ccflags ='-nologo -Gf -W3 -MD -DNDEBUG -O1 -DWIN32 -D_CONSOLE -DNO_ STRICT -DHAVE_DES_FCRYPT -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERL IO -DPERL_MSVCRT_READFIX', optimize='-MD -DNDEBUG -O1', cppflags='-DWIN32' ccversion='', gccversion='', gccosandvers='' intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234 d_longlong=undef, longlongsize=8, d_longdbl=define, longdblsize=10 ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='__int64', lseeksi ze=8 alignbytes=8, prototype=define Linker and Libraries: ld='link', ldflags ='-nologo -nodefaultlib -release -libpath:"d:\perl\5.8.2 \lib\CORE" -machine:x86' libpth=C:\PROGRA~1\MICROS~3\VC98\lib libs= oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32 .lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid.lib wsoc k32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib msvcrt.lib perllibs= oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib comd lg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid.lib wsock32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib msvcrt.lib libc=msvcrt.lib, so=dll, useshrplib=yes, libperl=perl58.lib gnulibc_version='undef' Dynamic Linking: dlsrc=dl_win32.xs, dlext=dll, d_dlsymun=undef, ccdlflags=' ' cccdlflags=' ', lddlflags='-dll -nologo -nodefaultlib -release -libpath:"d: \perl\5.8.2\lib\CORE" -machine:x86' Characteristics of this binary (from libperl): Compile-time options: MULTIPLICITY USE_ITHREADS USE_LARGE_FILES PERL_IMPLICIT_ CONTEXT PERL_IMPLICIT_SYS Built under MSWin32 Compiled at Nov 6 2003 12:48:55 @INC: D:/perl/5.8.2/lib D:/perl/site/5.8.2/lib . --- my patched signal.h: #line 100 /* Function prototypes */ /* _CRTIMP void (__cdecl * __cdecl signal(int, void (__cdecl *)(int)))(int); */ _CRTIMP int __cdecl raise(int);
Show quoted text
> > my patched signal.h: > > #line 100 > /* Function prototypes */ > > /* _CRTIMP void (__cdecl * __cdecl signal(int, void (__cdecl > *)(int)))(int); */ > _CRTIMP int __cdecl raise(int); > > >
You shouldn't do that, do not change the sources of the compiler! To fix that, fix signal.c that comes with Event: #if !defined(NSIG) || defined(M_UNIX) || defined(M_XENIX) #ifdef WIN32 #define signal win32_signal #endif #include <signal.h> #ifdef WIN32 #define signal PerlProc_signal #endif #endif This will compile fine now.
[GMPASSOS - Sat Jan 29 18:31:29 2005]: Show quoted text
>
> > > > my patched signal.h: > > > > #line 100 > > /* Function prototypes */ > > > > /* _CRTIMP void (__cdecl * __cdecl signal(int, void (__cdecl > > *)(int)))(int); */ > > _CRTIMP int __cdecl raise(int); > > > > > >
> > You shouldn't do that, do not change the sources of the compiler! To > fix that, fix signal.c that comes with Event: > > #if !defined(NSIG) || defined(M_UNIX) || defined(M_XENIX) > > #ifdef WIN32 > #define signal win32_signal > #endif > > #include <signal.h> > > #ifdef WIN32 > #define signal PerlProc_signal > #endif > > #endif > > This will compile fine now.
actually that isn't neccessary. The real solution is to not include signal.h under win32 #ifndef WIN32 #include <signal.h> #endif as it will be already included by XSUB.h(or EXTERN.h or perl.h) on windows