Tony Mechelynck wrote: > Guopeng Wen wrote: >> On 9/29/07, Bram Moolenaar <[EMAIL PROTECTED]> wrote: >>> Guopeng Wen - >>> >>>> On 8/11/07, Bram Moolenaar <[EMAIL PROTECTED]> wrote: >>>>> Chris Sutcliffe wrote: >>>>> >>>>>>> Thanks for taking the effort to verify what works. >>>>>> No problem at all, I like to contribute where I can! >>>>>> >>>>>>> I'm a bit confused though. In the last part of the patch >>>>>>> __IID_DEFINED__ if it wasn't defined yet. Why the extra complicated #if >>>>>>> to define it above this? Was it defined before but to something else? >>>>>> __IID_DEFINED__ was originally passed by the MinGW makefile because >>>>>> the w32api didn't explicitly define it, despite the fact that w32api >>>>>> did have a definition for IID (used in the OLE stuff). As a result, >>>>>> the compile would error out because of the duplicate IID definition. >>>>>> With the latest w32api (3.10), __IID_DEFINED__ is now properly defined >>>>>> along with IID itself. As a result, when the Makefile ran, it caused >>>>>> a duplicate definition of __IID_DEFINED__. >>>>>> >>>>>> Basically what I've done is that in iid_ole.c (where IID is defined, >>>>>> but guarded by __IID_DEFINED__), I've added an extra check to >>>>>> essentially accomplish what the Makefile was previously doing with the >>>>>> -D__IID_DEFINED__ option for previous versions of the w32api. >>>>> Ah, I missed that after the #ifdef __IID_DEFINED__ the structure was >>>>> declared. I'll include the patch now, thanks. >>>>> >>>> I found the same problem with Make_cyg.mak on the latest cygwin when >>>> I try to build windows binary. Here's related cygwin package versions: >>>> gcc 3.4.4-3 >>>> gcc-mingw 20040810-1 >>>> gcc-mingw-core 20050522-1 >>>> w32api 3.10-1 >>>> >>>> And my build command: >>>> cd vim/src && \ >>>> make ARCH=i686 GUI=yes OLE=yes USEDLL=no \ >>>> WINVER=0x0500 -f Make_cyg.mak >>>> >>>> It seems the same w32api problem has already hit cygwin release. >>>> Here's the fix following 7.1.065: >>>> >>>> *** ../vim-7.1.123/src/Make_cyg.mak Sun Apr 30 23:28:40 2006 >>>> --- ./src/Make_cyg.mak Fri Sep 28 13:25:30 2007 >>>> *************** >>>> *** 502,509 **** >>>> $(OUTDIR)/if_cscope.o: if_cscope.c $(INCL) if_cscope.h >>>> $(CC) -c $(CFLAGS) if_cscope.c -o $(OUTDIR)/if_cscope.o >>>> >>>> $(OUTDIR)/if_ole.o: if_ole.cpp $(INCL) >>>> ! $(CC) -c $(CFLAGS) -D__IID_DEFINED__ if_ole.cpp -o $(OUTDIR)/if_ole.o >>>> >>>> if_perl.c: if_perl.xs typemap >>>> $(PERL)/bin/perl `cygpath -d $(PERL)/lib/ExtUtils/xsubpp` \ >>>> --- 502,510 ---- >>>> $(OUTDIR)/if_cscope.o: if_cscope.c $(INCL) if_cscope.h >>>> $(CC) -c $(CFLAGS) if_cscope.c -o $(OUTDIR)/if_cscope.o >>>> >>>> + # Remove -D__IID_DEFINED__ for newer versions of the w32api >>>> $(OUTDIR)/if_ole.o: if_ole.cpp $(INCL) >>>> ! $(CC) -c $(CFLAGS) if_ole.cpp -o $(OUTDIR)/if_ole.o >>>> >>>> if_perl.c: if_perl.xs typemap >>>> $(PERL)/bin/perl `cygpath -d $(PERL)/lib/ExtUtils/xsubpp` \ >>>> >>> I don't use Cygwin, but I guess for this to work both with old and new >>> versions of the API we also need a change in iid_ole.c. Similar to the >>> change for MingW. >> Hi, Bram, >> >> I believe the MingW patch has already solved the backward >> compatibility problem. I checked macro definition when I built VIM >> with Make_cyg.mak under cygwin, __MINGW32__ is defined, it looks >> like MingW is used when build under cygwin. I don't know the detail >> though. If that's true, backward compatibility should have already >> been solved. >> >> In order to be sure, I managed to find an old cygwin installation >> with w32api-3.2-1, this version is announced on 2005-1-2, according >> to the announcement e-mail here: >> http://sourceware.org/ml/cygwin-announce/2005-01/msg00003.html >> >> It should be old enough :) I can build VIM successfully with the >> above patch. I also tried w32api-3.7-1, no problem found. >> >> I remember the build problem begins about a month ago (about the >> same time when build problem with ActivePerl 5.8.8 happened). After >> I check my cygwin update log, I think the failure should happen >> after upgrade to w32api-3.10-1. w32api release announcement also >> confirmed my guess: >> http://sourceware.org/ml/cygwin-announce/2007-08/msg00002.html >> >> One of the change is: >> [mingw-Bugs-1751565] >> * include/basetyps.h (IID); Guard with __IID_DEFINED__. >> >> Hope that helps. >> >> My Best Regards! >> > > I don't know the details either, but yes, the Cygwin cross-compiler (which > runs under Cygwin and produces native-Windows executables) is a "MinGW" > compiler. >
Great! I think it should be. Thanks for the confirmation. -- Guopeng --~--~---------~--~----~------------~-------~--~----~ You received this message from the "vim_dev" maillist. For more information, visit http://www.vim.org/maillist.php -~----------~----~----~----~------~----~------~--~---