Index: src/dosinst.c =================================================================== --- src/dosinst.c (revision 296) +++ src/dosinst.c (working copy) @@ -1365,7 +1365,7 @@ printf("Creating \"Edit with Vim\" popup menu entry\n"); - fprintf(fd, "HKEY_CLASSES_ROOT\\CLSID\\%s\n", vim_ext_clsid); + fprintf(fd, "[HKEY_CLASSES_ROOT\\CLSID\\%s]\n", vim_ext_clsid); fprintf(fd, "@=\"%s\"\n", vim_ext_name); fprintf(fd, "[HKEY_CLASSES_ROOT\\CLSID\\%s\\InProcServer32]\n", vim_ext_clsid); Index: src/eval.c =================================================================== --- src/eval.c (revision 296) +++ src/eval.c (working copy) @@ -992,20 +992,20 @@ char_u *value; int value_len; { - size_t len; + int len; if (redir_lval == NULL) return; if (value_len == -1) - len = STRLEN(value); /* Append the entire string */ + len = (int)STRLEN(value); /* Append the entire string */ else len = value_len; /* Append only "value_len" characters */ - if (ga_grow(&redir_ga, (int)len) == OK) + if (ga_grow(&redir_ga, len) == OK) { mch_memmove((char *)redir_ga.ga_data + redir_ga.ga_len, value, len); - redir_ga.ga_len += (int)len; + redir_ga.ga_len += len; } else var_redir_stop(); Index: src/GvimExt/Makefile =================================================================== --- src/GvimExt/Makefile (revision 296) +++ src/GvimExt/Makefile (working copy) @@ -24,7 +24,7 @@ gvimext.obj: gvimext.h .cpp.obj: - $(cc) $(cflags) -DFEAT_GETTEXT $(cvarsdll) $*.cpp + $(cc) $(cflags) -DFEAT_GETTEXT $(cvarsmt) $*.cpp gvimext.res: gvimext.rc $(rc) $(rcflags) $(rcvars) gvimext.rc Index: src/if_ole.cpp =================================================================== --- src/if_ole.cpp (revision 296) +++ src/if_ole.cpp (working copy) @@ -107,7 +107,7 @@ STDMETHOD(SendKeys)(BSTR keys); STDMETHOD(Eval)(BSTR expr, BSTR *result); STDMETHOD(SetForeground)(void); - STDMETHOD(GetHwnd)(UINT *result); + STDMETHOD(GetHwnd)(UINT_PTR *result); private: // Constructor is private - create using CVim::Create() @@ -288,9 +288,9 @@ } STDMETHODIMP -CVim::GetHwnd(UINT *result) +CVim::GetHwnd(UINT_PTR *result) { - *result = (UINT) s_hwnd; + *result = (UINT_PTR) s_hwnd; return S_OK; } Index: src/if_ole.h =================================================================== --- src/if_ole.h (revision 296) +++ src/if_ole.h (working copy) @@ -79,7 +79,7 @@ virtual HRESULT STDMETHODCALLTYPE SetForeground( void) = 0; virtual HRESULT STDMETHODCALLTYPE GetHwnd( - /* [retval][out] */ UINT __RPC_FAR *result) = 0; + /* [retval][out] */ UINT_PTR __RPC_FAR *result) = 0; }; @@ -143,7 +143,7 @@ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetHwnd )( IVim __RPC_FAR * This, - /* [retval][out] */ UINT __RPC_FAR *result); + /* [retval][out] */ UINT_PTR __RPC_FAR *result); END_INTERFACE } IVimVtbl; @@ -236,7 +236,7 @@ HRESULT STDMETHODCALLTYPE IVim_GetHwnd_Proxy( IVim __RPC_FAR * This, - /* [retval][out] */ UINT __RPC_FAR *result); + /* [retval][out] */ UINT_PTR __RPC_FAR *result); void __RPC_STUB IVim_GetHwnd_Stub( Index: src/if_ole.idl =================================================================== --- src/if_ole.idl (revision 296) +++ src/if_ole.idl (working copy) @@ -20,7 +20,7 @@ HRESULT SendKeys([in]BSTR keys); HRESULT Eval([in]BSTR expr, [out, retval]BSTR* result); HRESULT SetForeground(void); - HRESULT GetHwnd([out, retval]UINT* result); + HRESULT GetHwnd([out, retval]UINT_PTR* result); }; // Component and type library definitions Index: src/INSTALLpc.txt =================================================================== --- src/INSTALLpc.txt (revision 296) +++ src/INSTALLpc.txt (working copy) @@ -82,9 +82,8 @@ |ms-platform-sdk|, |dotnet-1.1-redist|, |dotnet-1.1-sdk|, and |windbg-download|. -It's easier to download Visual C++ 2005 Express Edition, |msvc-2005-express|. -The advantage of the VC 2003 Toolkit is that it will be freely available -long after VC 2005 Express Edition stops being free in November 2006. +It's easier to download Visual C++ 2005 Express Edition, |msvc-2005-express|, +which is freely available in perpetuity. The free Code::Blocks IDE works with the VC2003 Toolkit, as described at http://wiki.codeblocks.org/index.php?title=Integrating_Microsoft_Visual_Toolkit_2003_with_Code::Blocks_IDE Index: src/Make_mvc.mak =================================================================== --- src/Make_mvc.mak (revision 296) +++ src/Make_mvc.mak (working copy) @@ -92,6 +92,8 @@ # Netbeans Debugging Support: NBDEBUG=[yes or no] (should be no, yes # doesn't work) # +# Visual C Version: MSVCVER=m.n (default derived from nmake if undefined) +# # You can combine any of these interfaces # # Example: To build the non-debug, GUI version with Perl interface: @@ -101,7 +103,7 @@ # This makefile gives a fineness of control which is not supported in # Visual C++ configuration files. Therefore, debugging requires a bit of # extra work. -# Make_dvc.mak is a Visual C++ project to access that support. +# Make_dvc.mak is a (probably badly out of date) Visual C++ project to access that support. # To use Make_dvc.mak: # 1) Build Vim with Make_mvc.mak. # Use a "DEBUG=yes" argument to build Vim with debug support. @@ -198,14 +200,12 @@ !if "$(DEBUG)" != "yes" NODEBUG = 1 !else +!undef NODEBUG MAKEFLAGS_GVIMEXT = DEBUG=yes !endif -# Get all sorts of useful, standard macros from the SDK. (Note that -# MSVC 2.2 does not install in the \msvc20\include -# directory, but you can find it in \msvc20\include on the CD-ROM. -# You may also need from the same place.) +# Get all sorts of useful, standard macros from the Platform SDK. !include @@ -272,12 +272,12 @@ # Set which version of the CRT to use !if defined(USE_MSVCRT) -CVARS = $(cvarsdll) +# CVARS = $(cvarsdll) # !elseif defined(MULTITHREADED) # CVARS = $(cvarsmt) !else # CVARS = $(cvars) -CVARS = $(cvarsmt) +# CVARS = $(cvarsmt) !endif # need advapi32.lib for GetUserName() @@ -320,7 +320,41 @@ INTDIR=$(OBJDIR) OUTDIR=$(OBJDIR) +# Derive version of VC being used from nmake if not specified +!if "$(MSVCVER)" == "" +!if "$(_NMAKE_VER)" == "" +MSVCVER = "4.0" +!endif +!if "$(_NMAKE_VER)" == "162" +MSVCVER = "5.0" +!endif +!if "$(_NMAKE_VER)" == "6.00.8168.0" +MSVCVER = "6.0" +!endif +!if "$(_NMAKE_VER)" == "7.00.9466" +MSVCVER = "7.0" +!endif +!if "$(_NMAKE_VER)" == "7.10.3077" +MSVCVER = "7.1" +!endif +!if "$(_NMAKE_VER)" == "8.00.50727.42" +MSVCVER = "8.0" +!endif +!endif + +# Abort bulding VIM if version of VC is unrecognised. +!ifndef MSVCVER +!message *** ERROR +!message Cannot determine Visual C version being used. If you are using the +!message Platform SDK then you must have the environment variable MSVCVER set to +!message your version of the VC compiler. If you are not using the Express +!message version of Visual C, you can either set MSVCVER or update this makefile +!message to handle the new value for _NMAKE_VER. +!error Make aborted. +!endif + # Convert processor ID to MVC-compatible number +!if "$(MSVCVER)" != "8.0" !if "$(CPUNR)" == "i386" CPUARG = /G3 !elseif "$(CPUNR)" == "i486" @@ -334,7 +368,16 @@ !else CPUARG = !endif +!else +# VC8 only allows specifying SSE architecture +!if "$(CPUNR)" == "pentium4" +CPUARG = /arch:SSE2 +!endif +!endif +LIBC = +DEBUGINFO = /Zi + !ifdef NODEBUG VIM = vim !if "$(OPTIMIZE)" == "SPACE" @@ -344,41 +387,40 @@ !else # MAXSPEED OPTFLAG = /Ox !endif +!if "$(MSVCVER)" == "8.0" +# Use link time code generation if not worried about size +!if "$(OPTIMIZE)" != "SPACE" +OPTFLAG = $(OPTFLAG) /GL +!endif +!endif CFLAGS = $(CFLAGS) $(OPTFLAG) -DNDEBUG $(CPUARG) RCFLAGS = $(rcflags) $(rcvars) -DNDEBUG ! ifdef USE_MSVCRT -CFLAGS = $(CFLAGS) -MD +CFLAGS = $(CFLAGS) /MD LIBC = msvcrt.lib -# CFLAGS = $(CFLAGS) $(cvarsdll) -# ! elseif defined(MULTITHREADED) -# LIBC = libcmt.lib -# CFLAGS = $(CFLAGS) $(cvarsmt) ! else -# LIBC = libc.lib LIBC = libcmt.lib -# CFLAGS = $(CFLAGS) $(cvars) +CFLAGS = $(CFLAGS) /MT ! endif !else # DEBUG VIM = vimd +! if "$(CPU)" == "i386" +DEBUGINFO = /ZI +! endif CFLAGS = $(CFLAGS) -D_DEBUG -DDEBUG /Od RCFLAGS = $(rcflags) $(rcvars) -D_DEBUG -DDEBUG # The /fixed:no is needed for Quantify. Assume not 4.? as unsupported in VC4.0. -! if "$(_NMAKE_VER)" == "" +! if "$(MSVCVER)" == "4.0" LIBC = ! else LIBC = /fixed:no ! endif ! ifdef USE_MSVCRT -CFLAGS = $(CFLAGS) -MDd +CFLAGS = $(CFLAGS) /MDd LIBC = $(LIBC) msvcrtd.lib -# CFLAGS = $(CFLAGS) $(cvarsdll) -# ! elseif defined(MULTITHREADED) -# LIBC = $(LIBC) libcmtd.lib -# CFLAGS = $(CFLAGS) $(cvarsmt) ! else -# LIBC = $(LIBC) libcd.lib LIBC = $(LIBC) libcmtd.lib -# CFLAGS = $(CFLAGS) $(cvars) +CFLAGS = $(CFLAGS) /MTd ! endif !endif # DEBUG @@ -681,16 +723,18 @@ # # Always generate the .pdb file, so that we get debug symbols that can be used # on a crash (doesn't add overhead to the executable). +# Generate edit-and-continue debug info when no optimization - allows to +# debug more conveniently (able to look at variables which are in registers) # -CFLAGS = $(CFLAGS) /Zi /Fd$(OUTDIR)/ -LINK_PDB = /PDB:$(VIM).pdb -debug # -debug:full -debugtype:cv,fixup +CFLAGS = $(CFLAGS) /Fd$(OUTDIR)/ $(DEBUGINFO) +LINK_PDB = /PDB:$(VIM).pdb -debug # # End extra feature include # !message -conflags = /nologo /subsystem:$(SUBSYSTEM) /incremental:no +conflags = /nologo /subsystem:$(SUBSYSTEM) PATHDEF_SRC = $(OUTDIR)\pathdef.c @@ -702,11 +746,20 @@ conflags = $(conflags) /map /mapinfo:lines !ENDIF -LINKARGS1 = $(linkdebug) $(conflags) /nodefaultlib:libc +LINKARGS1 = $(linkdebug) $(conflags) LINKARGS2 = $(CON_LIB) $(GUI_LIB) $(LIBC) $(OLE_LIB) user32.lib $(SNIFF_LIB) \ $(MZSCHEME_LIB) $(PERL_LIB) $(PYTHON_LIB) $(RUBY_LIB) \ $(TCL_LIB) $(NETBEANS_LIB) $(XPM_LIB) $(LINK_PDB) +# Report link time code generation progress if used. +!ifdef NODEBUG +!if "$(MSVCVER)" == "8.0" +!if "$(OPTIMIZE)" != "SPACE" +LINKARGS1 = $(LINKARGS1) /LTCG:STATUS +!endif +!endif +!endif + all: $(VIM).exe vimrun.exe install.exe uninstal.exe xxd/xxd.exe \ GvimExt/gvimext.dll @@ -794,7 +847,7 @@ # Create a default rule for transforming .c files to .obj files in $(OUTDIR) # Batch compilation is supported by nmake 1.62 (part of VS 5.0) and later) -!IF "$(_NMAKE_VER)" == "" +!IF "$(MSVCVER)" == "4.0" .c{$(OUTDIR)/}.obj: !ELSE .c{$(OUTDIR)/}.obj:: @@ -803,7 +856,7 @@ # Create a default rule for transforming .cpp files to .obj files in $(OUTDIR) # Batch compilation is supported by nmake 1.62 (part of VS 5.0) and later) -!IF "$(_NMAKE_VER)" == "" +!IF "$(MSVCVER)" == "4.0" .cpp{$(OUTDIR)/}.obj: !ELSE .cpp{$(OUTDIR)/}.obj:: Index: src/spell.c =================================================================== --- src/spell.c (revision 296) +++ src/spell.c (working copy) @@ -7829,7 +7829,7 @@ # if (_MSC_VER <= 1200) /* This line is required for VC6 without the service pack. Also see the * matching #pragma below. */ -/* # pragma optimize("", off) */ +# pragma optimize("", off) # endif #endif @@ -7859,7 +7859,7 @@ #ifdef _MSC_VER # if (_MSC_VER <= 1200) -/* # pragma optimize("", on) */ +# pragma optimize("", on) # endif #endif Index: src/testdir/Make_dos.mak =================================================================== --- src/testdir/Make_dos.mak (revision 296) +++ src/testdir/Make_dos.mak (working copy) @@ -48,22 +48,23 @@ fixff: -$(VIMPROG) -u dos.vim --noplugin "+argdo set ff=dos|upd" +q *.in *.ok + -$(VIMPROG) -u dos.vim --noplugin "+argdo set ff=unix|upd" +q test60.ok clean: -del *.out - -del test.ok + -if exist test.ok del test.ok -del small.vim -del tiny.vim -del mbyte.vim -del X* - -del viminfo + -if exist viminfo del viminfo .in.out: copy $*.ok test.ok $(VIMPROG) -u dos.vim -U NONE --noplugin -s dotest.in $*.in diff test.out $*.ok - -del $*.out + -if exist $*.out del $*.out rename test.out $*.out -del X* -del test.ok - -del viminfo + -if exist viminfo del viminfo