Hi again,
Attached is a new version of the VC makefile that uses MSVCVER if
defined or derives a value from nmake. This should allow the file to be
used straight from a source download without any environment variables
having to be set.
If anyone has other values for _NMAKE_VER (just run nmake with no args
and it will be on the first line where the MS version is reported), can
they report them along with which version (and any service packs
applied) of VC they are using.
Enjoy.
Mike
--
Computer malfunction, nut loose in operator's chair.
*** Make_mvc.mak.orig Wed Apr 26 10:30:22 2006
--- Make_mvc.mak Mon Jan 22 13:59:43 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:
***************
*** 320,326 ****
--- 322,362 ----
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 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 ****
--- 370,381 ----
!else
CPUARG =
!endif
+ !else
+ # VC8 only allows specifying SSE architecture
+ !if "$(CPUNR)" == "pentium4"
+ CPUARG = /arch:SSE2
+ !endif
+ !endif
!ifdef NODEBUG
VIM = vim
***************
*** 344,349 ****
--- 386,397 ----
!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
***************
*** 363,369 ****
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
--- 411,417 ----
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
***************
*** 707,712 ****
--- 755,769 ----
$(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
***************
*** 795,801 ****
# 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::
--- 852,858 ----
# 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::
***************
*** 804,810 ****
# 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::
--- 861,867 ----
# 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::