To: vim-dev@vim.org Subject: patch 7.1.134 (extra) Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit ------------ Patch 7.1.134 (extra) Problem: Win32: Can't build with VC8 Solution: Detect the MSVC version instead of using NMAKE_VER. (Mike Williams) Files: src/Make_mvc.mak *** ../vim-7.1.133/src/Make_mvc.mak Tue Feb 20 03:15:08 2007 --- src/Make_mvc.mak Mon Oct 1 21:37:20 2007 *************** *** 92,97 **** --- 92,99 ---- # 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,107 **** # 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. # To use Make_dvc.mak: # 1) Build Vim with Make_mvc.mak. # Use a "DEBUG=yes" argument to build Vim with debug support. --- 103,110 ---- # 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. It may be ! # badly out of date for the Visual C++ you are using... # To use Make_dvc.mak: # 1) Build Vim with Make_mvc.mak. # Use a "DEBUG=yes" argument to build Vim with debug support. *************** *** 198,211 **** !if "$(DEBUG)" != "yes" NODEBUG = 1 !else 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.) !include --- 201,212 ---- !if "$(DEBUG)" != "yes" NODEBUG = 1 !else + !undef NODEBUG MAKEFLAGS_GVIMEXT = DEBUG=yes !endif ! # Get all sorts of useful, standard macros from the Platform SDK. !include *************** *** 272,283 **** # Set which version of the CRT to use !if defined(USE_MSVCRT) ! CVARS = $(cvarsdll) # !elseif defined(MULTITHREADED) # CVARS = $(cvarsmt) !else # CVARS = $(cvars) ! CVARS = $(cvarsmt) !endif # need advapi32.lib for GetUserName() --- 273,284 ---- # Set which version of the CRT to use !if defined(USE_MSVCRT) ! # CVARS = $(cvarsdll) # !elseif defined(MULTITHREADED) # CVARS = $(cvarsmt) !else # CVARS = $(cvars) ! # CVARS = $(cvarsmt) !endif # need advapi32.lib for GetUserName() *************** *** 320,326 **** --- 321,364 ---- 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 + !if "$(_NMAKE_VER)" == "8.00.50727.762" + 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 Windows 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 van 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,339 **** --- 372,386 ---- !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 *************** *** 344,384 **** !else # MAXSPEED OPTFLAG = /Ox !endif CFLAGS = $(CFLAGS) $(OPTFLAG) -DNDEBUG $(CPUARG) RCFLAGS = $(rcflags) $(rcvars) -DNDEBUG ! ifdef USE_MSVCRT ! 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) ! endif !else # DEBUG VIM = vimd 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)" == "" LIBC = ! else LIBC = /fixed:no ! endif ! ifdef USE_MSVCRT ! 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) ! endif !endif # DEBUG --- 391,430 ---- !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 LIBC = msvcrt.lib ! else LIBC = libcmt.lib ! 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 "$(MSVCVER)" == "4.0" LIBC = ! else LIBC = /fixed:no ! endif ! ifdef USE_MSVCRT ! CFLAGS = $(CFLAGS) /MDd LIBC = $(LIBC) msvcrtd.lib ! else LIBC = $(LIBC) libcmtd.lib ! CFLAGS = $(CFLAGS) /MTd ! endif !endif # DEBUG *************** *** 681,696 **** # # 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). # ! CFLAGS = $(CFLAGS) /Zi /Fd$(OUTDIR)/ ! LINK_PDB = /PDB:$(VIM).pdb -debug # -debug:full -debugtype:cv,fixup # # End extra feature include # !message ! conflags = /nologo /subsystem:$(SUBSYSTEM) /incremental:no PATHDEF_SRC = $(OUTDIR)\pathdef.c --- 727,744 ---- # # 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) /Fd$(OUTDIR)/ $(DEBUGINFO) ! LINK_PDB = /PDB:$(VIM).pdb -debug # # End extra feature include # !message ! conflags = /nologo /subsystem:$(SUBSYSTEM) PATHDEF_SRC = $(OUTDIR)\pathdef.c *************** *** 702,712 **** conflags = $(conflags) /map /mapinfo:lines !ENDIF ! LINKARGS1 = $(linkdebug) $(conflags) /nodefaultlib:libc 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) all: $(VIM).exe vimrun.exe install.exe uninstal.exe xxd/xxd.exe \ GvimExt/gvimext.dll --- 750,769 ---- conflags = $(conflags) /map /mapinfo:lines !ENDIF ! 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,800 **** # 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)" == "" .c{$(OUTDIR)/}.obj: !ELSE .c{$(OUTDIR)/}.obj:: --- 851,857 ---- # 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 "$(MSVCVER)" == "4.0" .c{$(OUTDIR)/}.obj: !ELSE .c{$(OUTDIR)/}.obj:: *************** *** 803,809 **** # 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)" == "" .cpp{$(OUTDIR)/}.obj: !ELSE .cpp{$(OUTDIR)/}.obj:: --- 860,866 ---- # 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 "$(MSVCVER)" == "4.0" .cpp{$(OUTDIR)/}.obj: !ELSE .cpp{$(OUTDIR)/}.obj:: *** ../vim-7.1.133/src/version.c Wed Oct 3 12:49:24 2007 --- src/version.c Wed Oct 3 13:23:51 2007 *************** *** 668,669 **** --- 668,671 ---- { /* Add new patch number below this line */ + /**/ + 134, /**/ -- BLACK KNIGHT: The Black Knight always triumphs. Have at you! ARTHUR takes his last leg off. The BLACK KNIGHT's body lands upright. BLACK KNIGHT: All right, we'll call it a draw. "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD /// Bram Moolenaar -- Bram@Moolenaar.net -- 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 ///