@@ -161,6 +161,8 @@ DEFAULT_INC_EXCLUDES_DOT *= define
161161# CCTYPE = MSVC140
162162# Visual C++ 2015 Express Edition (aka Visual C++ 14.0) (free version)
163163# CCTYPE = MSVC140FREE
164+ # Visual C++ 2017 (aka Visual C++ 14.1) (all versions)
165+ # CCTYPE = MSVC141
164166# MinGW or mingw-w64 with gcc-3.4.5 or later
165167# CCTYPE = GCC
166168
@@ -247,7 +249,7 @@ DEFAULT_INC_EXCLUDES_DOT *= define
247249# Running VCVARS32.BAT is *required* when using Visual C.
248250# Some versions of Visual C don't define MSVCDIR in the environment,
249251# so you may have to set CCHOME explicitly (spaces in the path name should
250- # not be quoted)
252+ # not be quoted), for MSVC141 the value for %VCToolsInstallDir%
251253#
252254
253255# CCHOME *= C:\MinGW
@@ -631,7 +633,8 @@ DEFINES = -DWIN32 -D_CONSOLE -DNO_STRICT
631633LOCDEFS = -DPERLDLL -DPERL_CORE
632634CXX_FLAG = -TP -EHsc
633635
634- .IF "$(CCTYPE)" == "MSVC140" || "$(CCTYPE)" == "MSVC140FREE"
636+ .IF "$(CCTYPE)" == "MSVC140" || "$(CCTYPE)" == "MSVC140FREE" \
637+ || "$(CCTYPE)" == "MSVC141"
635638LIBC = ucrt.lib
636639.ELSE
637640LIBC = msvcrt.lib
@@ -644,7 +647,8 @@ LINK_DBG = -debug
644647OPTIMIZE = -Od -MD -Zi
645648LINK_DBG = -debug
646649.ELIF "$(CFG)" == "DebugFull"
647- .IF "$(CCTYPE)" == "MSVC140" || "$(CCTYPE)" == "MSVC140FREE"
650+ .IF "$(CCTYPE)" == "MSVC140" || "$(CCTYPE)" == "MSVC140FREE" \
651+ || "$(CCTYPE)" == "MSVC141"
648652LIBC = ucrtd.lib
649653.ELSE
650654LIBC = msvcrtd.lib
@@ -682,7 +686,8 @@ DEFINES += -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE
682686.ENDIF
683687
684688# Likewise for deprecated Winsock APIs in VC++ 14.0 for now.
685- .IF "$(CCTYPE)" == "MSVC140" || "$(CCTYPE)" == "MSVC140FREE"
689+ .IF "$(CCTYPE)" == "MSVC140" || "$(CCTYPE)" == "MSVC140FREE" \
690+ || "$(CCTYPE)" == "MSVC141"
686691DEFINES += -D_WINSOCK_DEPRECATED_NO_WARNINGS
687692.ENDIF
688693
@@ -705,7 +710,8 @@ LIBBASEFILES = oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib \
705710 netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib version.lib \
706711 odbc32.lib odbccp32.lib comctl32.lib
707712
708- .IF "$(CCTYPE)" == "MSVC140" || "$(CCTYPE)" == "MSVC140FREE"
713+ .IF "$(CCTYPE)" == "MSVC140" || "$(CCTYPE)" == "MSVC140FREE" \
714+ || "$(CCTYPE)" == "MSVC141"
709715.IF "$(CFG)" == "DebugFull"
710716LIBBASEFILES += msvcrtd.lib vcruntimed.lib
711717.ELSE
@@ -760,6 +766,7 @@ PRIV_LINK_FLAGS += "/manifestdependency:type='Win32' name='Microsoft.Windows.Com
760766RSC_FLAGS = -DINCLUDE_MANIFEST
761767.ENDIF
762768
769+ # VS 2017 (VC++ 14.1) requires at minimum Windows 7 SP1 (with latest Windows Updates)
763770
764771# For XP support in >= VS 2013 (VC++ 12.0), subsystem is always in Config.pm
765772# LINK_FLAGS else subsystem is only needed for EXE building, not XS DLL building
@@ -1263,7 +1270,7 @@ $(MINIDIR)\.exists : $(CFGH_TMPL)
12631270 echo #undef NVgf&& \
12641271 echo #undef USE_LONG_DOUBLE&& \
12651272 echo #undef USE_CPLUSPLUS)>> config.h
1266- .IF "$(CCTYPE)" == "MSVC140" || "$(CCTYPE)" == "MSVC140FREE"
1273+ .IF "$(CCTYPE)" == "MSVC140" || "$(CCTYPE)" == "MSVC140FREE" || "$(CCTYPE)" == "MSVC141"
12671274 @(echo # undef FILE_ptr&& \
12681275 echo #undef FILE_cnt&& \
12691276 echo #undef FILE_base&& \
0 commit comments