Patch 8.0.0638
Problem:    Cannot build with new MSVC version VS2017.
Solution:   Change the compiler arguments. (Leonardo Manera, closes #1731,
            closes #1747)
Files:      src/GvimExt/Makefile, src/Make_mvc.mak


*** ../vim-8.0.0637/src/GvimExt/Makefile        2016-10-12 14:19:55.734357838 
+0200
--- src/GvimExt/Makefile        2017-06-13 15:18:43.024087680 +0200
***************
*** 1,11 ****
  # Makefile for GvimExt, using MSVC
  # Options:
  #   DEBUG=yes         Build debug version (for VC7 and maybe later)
  #
  
! TARGETOS=WINNT
  !ifndef APPVER
! APPVER=5.0
  !endif
  
  !if "$(DEBUG)" != "yes"
--- 1,14 ----
  # Makefile for GvimExt, using MSVC
  # Options:
  #   DEBUG=yes         Build debug version (for VC7 and maybe later)
+ #   CPUARG=           /arch:IA32/AVX/etc, call from main makefile to set
+ #                     automatically from CPUNR
  #
  
! TARGETOS = WINNT
! 
  !ifndef APPVER
! APPVER = 5.01
  !endif
  
  !if "$(DEBUG)" != "yes"
***************
*** 37,42 ****
--- 40,48 ----
  !include <Win32.mak>
  !endif
  
+ # include CPUARG
+ cflags = $(cflags) $(CPUARG)
+ 
  all: gvimext.dll
  
  gvimext.dll:    gvimext.obj   \
*** ../vim-8.0.0637/src/Make_mvc.mak    2017-02-01 13:02:43.794603926 +0100
--- src/Make_mvc.mak    2017-06-13 15:18:43.024087680 +0200
***************
*** 1,7 ****
  # Makefile for Vim on Win32 (Windows XP/2003/Vista/7/8/10) and Win64,
  # using the Microsoft Visual C++ compilers. Known to work with VC5, VC6 
(VS98),
  # VC7.0 (VS2002), VC7.1 (VS2003), VC8 (VS2005), VC9 (VS2008), VC10 (VS2010),
! # VC11 (VS2012), VC12 (VS2013) and VC14 (VS2015)
  #
  # To build using other Windows compilers, see INSTALLpc.txt
  #
--- 1,7 ----
  # Makefile for Vim on Win32 (Windows XP/2003/Vista/7/8/10) and Win64,
  # using the Microsoft Visual C++ compilers. Known to work with VC5, VC6 
(VS98),
  # VC7.0 (VS2002), VC7.1 (VS2003), VC8 (VS2005), VC9 (VS2008), VC10 (VS2010),
! # VC11 (VS2012), VC12 (VS2013), VC14 (VS2015) and VC15 (VS2017)
  #
  # To build using other Windows compilers, see INSTALLpc.txt
  #
***************
*** 108,117 ****
  #
  #     Optimization: OPTIMIZE=[SPACE, SPEED, MAXSPEED] (default is MAXSPEED)
  #
! #     Processor Version: CPUNR=[i386, i486, i586, i686, pentium4] (default is
! #     i386)
! #
! #     Version Support: WINVER=[0x0501, 0x0600] (default is 0x0501)
  #
  #     Debug version: DEBUG=yes
  #     Mapfile: MAP=[no, yes or lines] (default is yes)
--- 108,122 ----
  #
  #     Optimization: OPTIMIZE=[SPACE, SPEED, MAXSPEED] (default is MAXSPEED)
  #
! #     Processor Version: CPUNR=[any, i586, i686, sse, sse2, avx, avx2] 
(default is
! #     any)
! #       avx is available on Visual C++ 2010 and after.
! #       avx2 is available on Visual C++ 2013 Update 2 and after.
! #
! #     Version Support: WINVER=[0x0501, 0x0502, 0x0600, 0x0601, 0x0602,
! #     0x0603, 0x0A00] (default is 0x0501)
! #     Supported versions depends on your target SDK, check SDKDDKVer.h
! #     See 
https://docs.microsoft.com/en-us/cpp/porting/modifying-winver-and-win32-winnt
  #
  #     Debug version: DEBUG=yes
  #     Mapfile: MAP=[no, yes or lines] (default is yes)
***************
*** 270,280 ****
--- 275,305 ----
  !if $(MSVCVER) < 1900
  MSVC_MAJOR = ($(MSVCVER) / 100 - 6)
  MSVCRT_VER = ($(MSVCVER) / 10 - 60)
+ # Visual C++ 2017 needs special handling
+ # it has an _MSC_VER of 1910->14.1, but is actually v15 with runtime v140
+ !elseif $(MSVCVER) == 1910
+ MSVC_MAJOR = 15
+ MSVCRT_VER = 140
  !else
  MSVC_MAJOR = ($(MSVCVER) / 100 - 5)
  MSVCRT_VER = ($(MSVCVER) / 10 - 50)
  !endif
  
+ # Calculate MSVC_FULL for Visual C++ 8 and up.
+ !if $(MSVC_MAJOR) >= 8
+ ! if [echo MSVC_FULL=_MSC_FULL_VER> msvcfullver.c && $(CC) /EP msvcfullver.c 
> msvcfullver.~ 2> nul]
+ !  message *** ERROR
+ !  message Cannot run Visual C to determine its version. Make sure cl.exe is 
in your PATH.
+ !  message This can usually be done by running "vcvarsall.bat", located in 
the bin directory where Visual Studio was installed.
+ !  error Make aborted.
+ ! else
+ !  include msvcfullver.~
+ !  if [del msvcfullver.c msvcfullver.~]
+ !  endif
+ ! endif
+ !endif
+ 
+ 
  # Calculate MSVCRT_VER
  !if [(set /a MSVCRT_VER="$(MSVCRT_VER)" > nul) && set MSVCRT_VER > 
msvcrtver.~] == 0
  !include msvcrtver.~
***************
*** 446,472 ****
  INTDIR=$(OBJDIR)
  OUTDIR=$(OBJDIR)
  
  # Convert processor ID to MVC-compatible number
  !if $(MSVC_MAJOR) < 8
! !if "$(CPUNR)" == "i386"
! CPUARG = /G3
! !elseif "$(CPUNR)" == "i486"
! CPUARG = /G4
! !elseif "$(CPUNR)" == "i586"
  CPUARG = /G5
! !elseif "$(CPUNR)" == "i686"
  CPUARG = /G6
! !elseif "$(CPUNR)" == "pentium4"
  CPUARG = /G7 /arch:SSE2
! !else
  CPUARG =
! !endif
  !else
! # VC8/9/10 only allows specifying SSE architecture but only for 32bit
! !if "$(ASSEMBLY_ARCHITECTURE)" == "i386" && "$(CPUNR)" == "pentium4"
  CPUARG = /arch:SSE2
  !endif
! !endif
  
  LIBC =
  DEBUGINFO = /Zi
--- 471,565 ----
  INTDIR=$(OBJDIR)
  OUTDIR=$(OBJDIR)
  
+ ### Validate CPUNR
+ !ifndef CPUNR
+ # default to untargeted code
+ CPUNR = any
+ !elseif "$(CPUNR)" == "i386" || "$(CPUNR)" == "i486"
+ # alias i386 and i486 to i586
+ ! message *** WARNING CPUNR=$(CPUNR) is not a valid target architecture.
+ ! message Windows XP is the minimum target OS, with a minimum target
+ ! message architecture of i586.
+ ! message Retargeting to i586
+ CPUNR = i586
+ !elseif "$(CPUNR)" == "pentium4"
+ # alias pentium4 to sse2
+ ! message *** WARNING CPUNR=pentium4 is deprecated in favour of sse2.
+ ! message Retargeting to sse2.
+ CPUNR = sse2
+ !elseif "$(CPUNR)" != "any" && "$(CPUNR)" != "i586" && "$(CPUNR)" != "i686" 
&& "$(CPUNR)" != "sse" && "$(CPUNR)" != "sse2" && "$(CPUNR)" != "avx" && 
"$(CPUNR)" != "avx2"
+ ! error *** ERROR Unknown target architecture "$(CPUNR)". Make aborted.
+ !endif
+ 
  # Convert processor ID to MVC-compatible number
  !if $(MSVC_MAJOR) < 8
! ! if "$(CPUNR)" == "i586"
  CPUARG = /G5
! ! elseif "$(CPUNR)" == "i686"
  CPUARG = /G6
! ! elseif "$(CPUNR)" == "sse"
! CPUARG = /G6 /arch:SSE
! ! elseif "$(CPUNR)" == "sse2"
  CPUARG = /G7 /arch:SSE2
! ! elseif "$(CPUNR)" == "avx" || "$(CPUNR)" == "avx2"
! !  message AVX/AVX2 Instruction Sets are not supported by Visual C++ 
v$(MSVC_MAJOR)
! !  message Falling back to SSE2
! CPUARG = /G7 /arch:SSE2
! ! elseif "$(CPUNR)" == "any"
  CPUARG =
! ! endif
  !else
! # IA32/SSE/SSE2 are only supported on x86
! ! if "$(ASSEMBLY_ARCHITECTURE)" == "i386" && ("$(CPUNR)" == "i586" || 
"$(CPUNR)" == "i686" || "$(CPUNR)" == "any")
! # VC<11 generates fp87 code by default
! !  if $(MSVC_MAJOR) < 11
! CPUARG =
! # VC>=11 needs explicit insturctions to generate fp87 code
! !  else
! CPUARG = /arch:IA32
! !  endif
! ! elseif "$(ASSEMBLY_ARCHITECTURE)" == "i386" && "$(CPUNR)" == "sse"
! CPUARG = /arch:SSE
! ! elseif "$(ASSEMBLY_ARCHITECTURE)" == "i386" && "$(CPUNR)" == "sse2"
  CPUARG = /arch:SSE2
+ ! elseif "$(CPUNR)" == "avx"
+ # AVX is only supported by VC 10 and up
+ !  if $(MSVC_MAJOR) < 10
+ !   message AVX Instruction Set is not supported by Visual C++ v$(MSVC_MAJOR)
+ !   if "$(ASSEMBLY_ARCHITECTURE)" == "i386"
+ !    message Falling back to SSE2
+ CPUARG = /arch:SSE2
+ !   else
+ CPUARG =
+ !   endif
+ !  else
+ CPUARG = /arch:AVX
+ !  endif
+ ! elseif "$(CPUNR)" == "avx2"
+ # AVX is only supported by VC 10 and up
+ !  if $(MSVC_MAJOR) < 10
+ !   message AVX2 Instruction Set is not supported by Visual C++ v$(MSVC_MAJOR)
+ !   if "$(ASSEMBLY_ARCHITECTURE)" == "i386"
+ !    message Falling back to SSE2
+ CPUARG = /arch:SSE2
+ !   else
+ CPUARG =
+ !   endif
+ # AVX2 is only supported by VC 12U2 and up
+ # 180030501 is the full version number for Visual Studio 2013/VC 12 Update 2
+ !  elseif $(MSVC_FULL) < 180030501
+ !   message AVX2 Instruction Set is not supported by Visual C++ 
v$(MSVC_MAJOR)-$(MSVC_FULL)
+ !   message Falling back to AVX
+ CPUARG = /arch:AVX
+ !  else
+ CPUARG = /arch:AVX2
+ !  endif
+ ! endif
  !endif
! 
! # Pass CPUARG to GVimExt, to avoid using version-dependent defaults
! MAKEFLAGS_GVIMEXT = $(MAKEFLAGS_GVIMEXT) CPUARG="$(CPUARG)"
! 
  
  LIBC =
  DEBUGINFO = /Zi
*** ../vim-8.0.0637/src/version.c       2017-06-13 14:33:58.033066683 +0200
--- src/version.c       2017-06-13 15:21:02.499194381 +0200
***************
*** 766,767 ****
--- 766,769 ----
  {   /* Add new patch number below this line */
+ /**/
+     638,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
30. Even though you died last week, you've managed to retain OPS on your
    favorite IRC channel.

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui