Re: Help setting up appveyor for Windows continuous integration testing
[email protected] Mon, 25 Apr 2016 10:05:05 +1000
| Newsgroups | perl.xs |
|---|---|
| Message-ID | <DC772C73929B42069081F7FF7E35362A@OwnerPC311012> |
From: David Mertens Sent: Monday, April 25, 2016 7:16 AM To: [email protected] Subject: Help setting up appveyor for Windows continuous integration testing Hello everyone, > The specific tcc error (given at > https://ci.appveyor.com/project/run4flat/c-blocks/build/1.0.17#L47) is: > > C:/STRAWB~1/perl/lib/CORE/perl.h:2708: error: ';' expected (got > "perl_os_thread") What does line 2708 of perl.h contain ? I get a very similar type of error when building C-Blocks-0.03 on Windows (perl-5.16, mingw.org build of gcc-4.7.0): Building C-Blocks Creating lib/C/Blocks/PerlAPI.xs In file included from perl_h_QSJqVkp1.c:15: In file included from C:/Mingw/perl516/lib/CORE/perl.h:610: C:/MinGW/include/sys/types.h:27: error: ';' expected (got "__time32_t") where line 27 is: typedef __int32 __time32_t; My first thought was that perl might be doing something incompatible with the __int32 symbol, as there's no problem with a C program that #includes sys/types.h. But #including sys/types.h into an Inline::C script is also fine, so I think it's unlikely that perl is the culprit Moving on .... I don't get that error when I switch to perl-522, which uses the gcc-4.9.2 compiler provided by mingw-w64 project (different vendor). Indeed, this compiler doesn't typedef __int32 at all. However, with this combo, the C-Blocks-0.03 build fails with: Building C-Blocks Creating lib/C/Blocks/PerlAPI.xs In file included from perl_h_Xd9p6ge7.c:15: In file included from C:/MinGW/perl522_64int/lib/CORE/perl.h:699: In file included from C:/_32/gcc-straw-492/i686-w64-mingw32/include/sys/types.h:13: In file included from C:/_32/gcc-straw-492/i686-w64-mingw32/include/crtdefs.h:10: In file included from C:/_32/gcc-straw-492/i686-w64-mingw32/include/_mingw.h:275: C:/_32/gcc-straw-492/i686-w64-mingw32/include/vadefs.h:35: error: #error VARARGS not implemented for this compiler Unable to serialize the header file The error implies that the symbol __WIDL__ has not been defined. It looks to me (not entirely certain) that __WIDL__ is normally *not* defined for me. > Does anybody know what's going on? Not me. Note that these errors are being obtained just running "cpan -i C::Blocks". Appveyor is not involved (unless, of course, it's being called in as part of the cpan build). One other odd thing: I had to set the CPATH environment variable to the location of winsock2.h - otherwise that header could not be located. In both C and Inline::C scripts that header is in the default search path - and gets #included fine. Here's the error: Building C-Blocks Creating lib/C/Blocks/PerlAPI.xs In file included from perl_h_Yryks05Z.c:15: In file included from C:/MinGW/perl522_64int/lib/CORE/perl.h:3060: In file included from C:/MinGW/perl522_64int/lib/CORE/win32thread.h:4: C:/MinGW/perl522_64int/lib/CORE/win32.h:131: warning: WIN32_LEAN_AND_MEAN redefined In file included from perl_h_Yryks05Z.c:15: In file included from C:/MinGW/perl522_64int/lib/CORE/perl.h:3060: In file included from C:/MinGW/perl522_64int/lib/CORE/win32thread.h:4: In file included from C:/MinGW/perl522_64int/lib/CORE/win32.h:419: C:/MinGW/perl522_64int/lib/CORE/sys/socket.h:21: error: include file 'winsock2.h' not found Unable to serialize the header file lib/C/Blocks/PerlAPI.xs.PL failed at C:/MinGW/perl522_64int/site/lib/Module/Build/Base.pm line 2930. I just noticed that setting CPATH also removes the "WIN32_LEAN_AND_MEAN" redefinition warning. Also, win32.h #includes windows.h - and I *think* (could check if it's important) that should be enough to get winsock2.h #included. Something is not quite right. Cheers, Rob