Blob Blame History Raw
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    ///