summaryrefslogtreecommitdiff
path: root/win32
diff options
context:
space:
mode:
authorSteve Hay <steve.m.hay@googlemail.com>2017-06-03 12:17:37 -0500
committerSteve Hay <steve.m.hay@googlemail.com>2017-08-29 08:17:54 +0100
commitfcd6e175358bd2b06f1319441ad9e05c915c06df (patch)
treef8c7a0c3a2828b3fd55407099bb658fc0f8eb07b /win32
parent5ce6a1b99b029a36f9ea39f272b9527b538b3cae (diff)
downloadperl-fcd6e175358bd2b06f1319441ad9e05c915c06df.tar.gz
Update nmake for VS 2017
Patch by Eric Lindblad, who asked for his email address not to be published. [perl #131487] (cherry picked from commit 58998b2a913ef6f390e2e9c38e455a3ff8473960)
Diffstat (limited to 'win32')
-rw-r--r--win32/Makefile20
1 files changed, 14 insertions, 6 deletions
diff --git a/win32/Makefile b/win32/Makefile
index f6aefeb985..eefc584b13 100644
--- a/win32/Makefile
+++ b/win32/Makefile
@@ -143,6 +143,8 @@ CCTYPE = MSVC60
#CCTYPE = MSVC140
# Visual C++ 2015 Express Edition (aka Visual C++ 14.0) (free version)
#CCTYPE = MSVC140FREE
+# Visual C++ 2017 (aka Visual C++ 14.1) (all versions)
+#CCTYPE = MSVC141
#
# If you are using Intel C++ Compiler uncomment this
@@ -222,7 +224,7 @@ CCTYPE = MSVC60
# Running VCVARS32.BAT is *required* when using Visual C.
# Some versions of Visual C don't define MSVCDIR in the environment,
# so you may have to set CCHOME explicitly (spaces in the path name should
-# not be quoted)
+# not be quoted), for MSVC141 replace $(MSVCDIR) with $(VCToolsInstallDir)
#
CCHOME = $(MSVCDIR)
CCINCDIR = $(CCHOME)\include
@@ -481,7 +483,8 @@ DEFINES = -DWIN32 -D_CONSOLE -DNO_STRICT
LOCDEFS = -DPERLDLL -DPERL_CORE
CXX_FLAG = -TP -EHsc
-!IF "$(CCTYPE)" == "MSVC140" || "$(CCTYPE)" == "MSVC140FREE"
+!IF "$(CCTYPE)" == "MSVC140" || "$(CCTYPE)" == "MSVC140FREE" \
+ || "$(CCTYPE)" == "MSVC141"
LIBC = ucrt.lib
!ELSE
LIBC = msvcrt.lib
@@ -496,7 +499,8 @@ OPTIMIZE = -Od -MD -Zi
LINK_DBG = -debug
!ELSE
!IF "$(CFG)" == "DebugFull"
-!IF "$(CCTYPE)" == "MSVC140" || "$(CCTYPE)" == "MSVC140FREE"
+!IF "$(CCTYPE)" == "MSVC140" || "$(CCTYPE)" == "MSVC140FREE" \
+ || "$(CCTYPE)" == "MSVC141"
LIBC = ucrtd.lib
!ELSE
LIBC = msvcrtd.lib
@@ -536,7 +540,8 @@ DEFINES = $(DEFINES) -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE
!ENDIF
# Likewise for deprecated Winsock APIs in VC++ 14.0 for now.
-!IF "$(CCTYPE)" == "MSVC140" || "$(CCTYPE)" == "MSVC140FREE"
+!IF "$(CCTYPE)" == "MSVC140" || "$(CCTYPE)" == "MSVC140FREE" \
+ || "$(CCTYPE)" == "MSVC141"
DEFINES = $(DEFINES) -D_WINSOCK_DEPRECATED_NO_WARNINGS
!ENDIF
@@ -560,7 +565,8 @@ LIBBASEFILES = \
netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib \
version.lib odbc32.lib odbccp32.lib comctl32.lib
-!IF "$(CCTYPE)" == "MSVC140" || "$(CCTYPE)" == "MSVC140FREE"
+!IF "$(CCTYPE)" == "MSVC140" || "$(CCTYPE)" == "MSVC140FREE" \
+ || "$(CCTYPE)" == "MSVC141"
! IF "$(CFG)" == "DebugFull"
LIBBASEFILES = $(LIBBASEFILES) msvcrtd.lib vcruntimed.lib
! ELSE
@@ -611,6 +617,8 @@ PRIV_LINK_FLAGS = $(PRIV_LINK_FLAGS) "/manifestdependency:type='Win32' name='Mic
RSC_FLAGS = -DINCLUDE_MANIFEST
!ENDIF
+# VS 2017 (VC++ 14.1) requires at minimum Windows 7 SP1 (with latest Windows Updates)
+
# For XP support in >= VS 2013 (VC++ 12.0), subsystem is always in Config.pm
# LINK_FLAGS else subsystem is only needed for EXE building, not XS DLL building
# Console vs GUI makes no difference for DLLs, so use default for cleaner
@@ -964,7 +972,7 @@ perlglob$(o) : perlglob.c
@echo.>>$@
@echo #ifndef _config_h_footer_>>$@
@echo #define _config_h_footer_>>$@
-!IF "$(CCTYPE)" == "MSVC140" || "$(CCTYPE)" == "MSVC140FREE"
+!IF "$(CCTYPE)" == "MSVC140" || "$(CCTYPE)" == "MSVC140FREE" || "$(CCTYPE)" == "MSVC141"
@echo #undef FILE_ptr>>$@
@echo #define FILE_ptr(fp) PERLIO_FILE_ptr(fp)>>$@
@echo #undef FILE_cnt>>$@