Tue Oct 16 14:21:15 2012: Request 80217 was acted upon.
Transaction: Correspondence added by BULKDD
       Queue: Win32-API
     Subject: Build failure under Cygwin on Windows
   Broken in: 0.72
    Severity: Critical
       Owner: Nobody
  Requestors: jdhed...@cpan.org
      Status: new
 Ticket <URL: https://rt.cpan.org/Ticket/Display.html?id=80217 >


On Tue Oct 16 08:53:50 2012, JDHEDDEN wrote:
> If you need more information, just holler.  (And, if possible, it might 
> be good to fix those warnings.)
> 


> Makefile:444: recipe for target 
> `../blib/arch/auto/Win32/API/Callback/Callback.dll' failed
> make[1]: [../blib/arch/auto/Win32/API/Callback/Callback.dll] Error 1 
> (ignored)
> make[1]: Leaving directory `/var/perl/cpan/build/Win32-API-
> 0.72/Callback'

Why did Callback.dll fail to build? Other than the 32 to 64 cast
warnings, I dont see anything else in the compiler log.

> API.c:123:55: error: expected declaration specifiers or '...' before 
> '__int32'
> API.c: In function 'w32sv_setwstr':
> API.c:131:22: error: 'wlenparam' undeclared (first use in this function)
> API.c:131:22: note: each undeclared identifier is reported only once for 
> each function it appears in
> API.c:150:15: error: 'WC_NO_BEST_FIT_CHARS' undeclared (first use in 
> this function)

WC_NO_BEST_FIT_CHARS is defined in Cygwin
http://cygwin.com/cgi-bin/cvsweb.cgi/src/winsup/w32api/include/winnls.h?rev=1.10&content-type=text/x-cvsweb-markup&cvsroot=src
in a WINVER conditional and it also is in a WINVER conditional on Visual
C. But Win32:: has
___________________________________________________
#ifndef WC_NO_BEST_FIT_CHARS
#  define WC_NO_BEST_FIT_CHARS 0x00000400
#endif
___________________________________________________
in it. Strawberry does not keep WC_NO_BEST_FIT_CHARS in a conditional
http://mingw-w64.svn.sourceforge.net/viewvc/mingw-w64/trunk/mingw-w64-headers/include/winnls.h?revision=5147&view=markup
. I'll guess Cygwin Perl does not set WINVER but native Win32 Perl does.

Strawberry defines __int3264 in
http://mingw-w64.svn.sourceforge.net/viewvc/mingw-w64/trunk/mingw-w64-headers/include/basetsd.h?revision=5316&view=markup
and __int32 in
http://mingw-w64.svn.sourceforge.net/viewvc/mingw-w64/trunk/mingw-w64-headers/crt/_mingw.h.in?revision=5431&view=markup
. Cygwin defines __int3264 in
http://cygwin.com/cgi-bin/cvsweb.cgi/src/winsup/w32api/include/basetsd.h?rev=1.6&content-type=text/x-cvsweb-markup&cvsroot=src
but I dont have Cygwin's headers to grep to see if __int32 is defined. I
think I will try INT_PTR instead of __int3264.

Getting Win32::API working on your 32 bit with quads Cygwin will take a
couple trys since once it compiles, I bet a 32 bit with 64 ivs bug will
come up. Can you try my github version (not right now, no changes are up
right now) at https://github.com/bulk88/perl5-win32-api in the future as
part of this ticket? IDK if Cosimo has time to make new CPAN releases
which may or may not work on Cygwin, and I really wouldn't want
Win32::API to hit 1.00 any time soon.

Reply via email to