To: vim-dev@vim.org
Subject: patch 7.1.134 (extra)
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
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 <ntwin32.mak> in the \msvc20\include
! # directory, but you can find it in \msvc20\include on the CD-ROM.
! # You may also need <win32.mak> from the same place.)
!include <Win32.mak>
--- 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 <Win32.mak>
***************
*** 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 ///