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. -- Why is "abbreviation" such a long word? /// Bram Moolenaar -- [EMAIL PROTECTED] -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ download, build and distribute -- http://www.A-A-P.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org /// --~--~---------~--~----~------------~-------~--~----~ You received this message from the "vim_dev" maillist. For more information, visit http://www.vim.org/maillist.php -~----------~----~----~----~------~----~------~--~---
