In perl.git, the branch blead has been updated

<http://perl5.git.perl.org/perl.git/commitdiff/74102a88afc9d8f1973892ce66cf9a83e79d043a?hp=10b7d799552114aa02a7f10b31d6d42d37a8caba>

- Log -----------------------------------------------------------------
commit 74102a88afc9d8f1973892ce66cf9a83e79d043a
Author: Steve Hay <[email protected]>
Date:   Wed Jun 14 17:44:22 2017 +0100

    Fix up CCINCDIR/CCLIBDIR for VC++ 14.1 (and VC++ 8.0-14.0 too!)
    
    These settings just end up in $Config{incpath}/$Config{libpth} and don't
    otherwise affect the build, but we might as well get them right if we can.

M       win32/Makefile
M       win32/makefile.mk

commit 82cad14406dfff5f5a8b6b67da3ce16840f06274
Author: Steve Hay <[email protected]>
Date:   Sat Jun 3 17:09:35 2017 -0500

    Update dmake for VS 2017
    
    Patch by Eric Lindblad, who asked for his email address not to be
    published. [perl #131487]

M       win32/makefile.mk

commit 58998b2a913ef6f390e2e9c38e455a3ff8473960
Author: Steve Hay <[email protected]>
Date:   Sat Jun 3 12:17:37 2017 -0500

    Update nmake for VS 2017
    
    Patch by Eric Lindblad, who asked for his email address not to be
    published. [perl #131487]

M       win32/Makefile
-----------------------------------------------------------------------

Summary of changes:
 win32/Makefile    | 55 +++++++++++++++++++++++++++++----------
 win32/makefile.mk | 78 ++++++++++++++++++++++++++++++++++++-------------------
 2 files changed, 92 insertions(+), 41 deletions(-)

diff --git a/win32/Makefile b/win32/Makefile
index 59d991828c..802ef405b2 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
@@ -217,16 +219,23 @@ CCTYPE            = MSVC60
 #ALL_STATIC    = define
 
 #
+# set the install location of the compiler
+# Running VCVARS32.BAT, VCVARSALL.BAT or similar is *required* when using
+# Visual C++.
+# Versions of Visual C++ up to VC++ 7.1 define $(MSVCDir); versions since then
+# define $(VCINSTALLDIR) instead, but for VC++ 14.1 we need the subfolder given
+# by $(VCToolsInstallDir).
 #
-# set the install locations of the compiler include/libraries
-# 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)
-#
+!IF "$(CCTYPE)" == "MSVC60" || \
+    "$(CCTYPE)" == "MSVC70" || "$(CCTYPE)" == "MSVC70FREE"
 CCHOME         = $(MSVCDIR)
-CCINCDIR       = $(CCHOME)\include
-CCLIBDIR       = $(CCHOME)\lib
+!ELSE
+!  IF "$(CCTYPE)" == "MSVC141"
+CCHOME         = $(VCTOOLSINSTALLDIR)
+!  ELSE
+CCHOME         = $(VCINSTALLDIR)
+!  ENDIF
+!ENDIF
 
 #
 # Additional compiler flags can be specified here.
@@ -439,6 +448,19 @@ EMBED_EXE_MANI     = if exist [email protected] mt -nologo 
-manifest [email protected] -outputre
 EMBED_DLL_MANI = if exist [email protected] mt -nologo -manifest [email protected] 
-outputresource:$@;2 && \
                  if exist [email protected] del [email protected]
 
+# Set the install location of the compiler headers/libraries.
+# These are saved into $Config{incpath} and $Config{libpth}.
+CCINCDIR       = $(CCHOME)\include
+!IF "$(CCTYPE)" == "MSVC141"
+!  IF "$(WIN64)" == "define"
+CCLIBDIR       = $(CCHOME)\lib\x64
+!  ELSE
+CCLIBDIR       = $(CCHOME)\lib\x86
+!  ENDIF
+!ELSE
+CCLIBDIR       = $(CCHOME)\lib
+!ENDIF
+
 ARCHDIR                = ..\lib\$(ARCHNAME)
 COREDIR                = ..\lib\CORE
 AUTODIR                = ..\lib\auto
@@ -449,7 +471,6 @@ CPANDIR             = ..\cpan
 PODDIR         = ..\pod
 HTMLDIR                = .\html
 
-#
 INST_SCRIPT    = $(INST_TOP)$(INST_VER)\bin
 INST_BIN       = $(INST_SCRIPT)$(INST_ARCH)
 INST_LIB       = $(INST_TOP)$(INST_VER)\lib
@@ -481,7 +502,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 +518,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 +559,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 +584,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 +636,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 +991,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>>$@
diff --git a/win32/makefile.mk b/win32/makefile.mk
index 7af03b05f0..0e2f4630be 100644
--- a/win32/makefile.mk
+++ b/win32/makefile.mk
@@ -155,6 +155,8 @@ DEFAULT_INC_EXCLUDES_DOT *= define
 #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
 # MinGW or mingw-w64 with gcc-3.4.5 or later
 #CCTYPE                = GCC
 
@@ -237,11 +239,9 @@ DEFAULT_INC_EXCLUDES_DOT *= define
 #ALL_STATIC    *= define
 
 #
-# set the install locations of the compiler include/libraries
-# 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)
+# set the install location of the compiler
+# Running VCVARS32.BAT, VCVARSALL.BAT or similar is *required* when using
+# Visual C++.
 #
 
 #CCHOME                *= C:\MinGW
@@ -364,29 +364,22 @@ CCTYPE            := MSVC$(MSVCVER)0
 .ENDIF
 .ENDIF
 
-
+# Versions of Visual C++ up to VC++ 7.1 define $(MSVCDir); versions since then
+# define $(VCINSTALLDIR) instead, but for VC++ 14.1 we need the subfolder given
+# by $(VCToolsInstallDir).
 .IF "$(CCHOME)" == ""
 .IF "$(CCTYPE)" == "GCC"
 CCHOME         *= C:\MinGW
+.ELIF "$(CCTYPE)" == "MSVC60" || \
+    "$(CCTYPE)" == "MSVC70" || "$(CCTYPE)" == "MSVC70FREE"
+CCHOME         *= $(MSVCDir)
+.ELIF "$(CCTYPE)" == "MSVC141"
+CCHOME         *= $(VCToolsInstallDir)
 .ELSE
-CCHOME         *= $(MSVCDIR)
+CCHOME         *= $(VCINSTALLDIR)
 .ENDIF
 .ENDIF
 
-#
-# Following sets $Config{incpath} and $Config{libpth}
-#
-
-.IF "$(GCCCROSS)" == "define"
-CCINCDIR *= $(CCHOME)\x86_64-w64-mingw32\include
-CCLIBDIR *= $(CCHOME)\x86_64-w64-mingw32\lib
-CCDLLDIR *= $(CCLIBDIR)
-.ELSE
-CCINCDIR *= $(CCHOME)\include
-CCLIBDIR *= $(CCHOME)\lib
-CCDLLDIR *= $(CCHOME)\bin
-.ENDIF
-
 PROCESSOR_ARCHITECTURE *= x86
 
 .IF "$(WIN64)" == "undef"
@@ -458,6 +451,33 @@ ARCHNAME   !:= $(ARCHNAME)-64int
 ARCHNAME       !:= $(ARCHNAME)-ld
 .ENDIF
 
+# Set the install location of the compiler headers/libraries.
+# These are saved into $Config{incpath} and $Config{libpth}.
+.IF "$(GCCCROSS)" == "define"
+CCINCDIR *= $(CCHOME)\x86_64-w64-mingw32\include
+CCLIBDIR *= $(CCHOME)\x86_64-w64-mingw32\lib
+.ELSE
+CCINCDIR *= $(CCHOME)\include
+.IF "$(CCTYPE)" == "MSVC141"
+.IF "$(WIN64)" == "define"
+CCLIBDIR *= $(CCHOME)\lib\x64
+.ELSE
+CCLIBDIR *= $(CCHOME)\lib\x86
+.ENDIF
+.ELSE
+CCLIBDIR *= $(CCHOME)\lib
+.ENDIF
+.ENDIF
+
+# Set DLL location for GCC compilers.
+.IF "$(CCTYPE)" == "GCC"
+.IF "$(GCCCROSS)" == "define"
+CCDLLDIR *= $(CCLIBDIR)
+.ELSE
+CCDLLDIR *= $(CCHOME)\bin
+.ENDIF
+.ENDIF
+
 ARCHDIR                = ..\lib\$(ARCHNAME)
 COREDIR                = ..\lib\CORE
 AUTODIR                = ..\lib\auto
@@ -468,7 +488,6 @@ CPANDIR             = ..\cpan
 PODDIR         = ..\pod
 HTMLDIR                = .\html
 
-#
 INST_SCRIPT    = $(INST_TOP)$(INST_VER)\bin
 INST_BIN       = $(INST_SCRIPT)$(INST_ARCH)
 INST_LIB       = $(INST_TOP)$(INST_VER)\lib
@@ -617,7 +636,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
@@ -630,7 +650,8 @@ LINK_DBG    = -debug
 OPTIMIZE       = -Od -MD -Zi
 LINK_DBG       = -debug
 .ELIF  "$(CFG)" == "DebugFull"
-.IF "$(CCTYPE)" == "MSVC140" || "$(CCTYPE)" == "MSVC140FREE"
+.IF "$(CCTYPE)" == "MSVC140" || "$(CCTYPE)" == "MSVC140FREE" \
+    || "$(CCTYPE)" == "MSVC141"
 LIBC           = ucrtd.lib
 .ELSE
 LIBC           = msvcrtd.lib
@@ -668,7 +689,8 @@ 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                += -D_WINSOCK_DEPRECATED_NO_WARNINGS
 .ENDIF
 
@@ -691,7 +713,8 @@ LIBBASEFILES        = oldnames.lib kernel32.lib user32.lib 
gdi32.lib winspool.lib \
        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   += msvcrtd.lib vcruntimed.lib
 .ELSE
@@ -746,6 +769,7 @@ PRIV_LINK_FLAGS     += "/manifestdependency:type='Win32' 
name='Microsoft.Windows.Com
 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
@@ -1241,7 +1265,7 @@ $(MINIDIR)\.exists : $(CFGH_TMPL)
        echo #undef NVgf&& \
        echo #undef USE_LONG_DOUBLE&& \
        echo #undef USE_CPLUSPLUS)>> config.h
-.IF "$(CCTYPE)" == "MSVC140" || "$(CCTYPE)" == "MSVC140FREE"
+.IF "$(CCTYPE)" == "MSVC140" || "$(CCTYPE)" == "MSVC140FREE" || "$(CCTYPE)" == 
"MSVC141"
        @(echo #undef FILE_ptr&& \
        echo #undef FILE_cnt&& \
        echo #undef FILE_base&& \

--
Perl5 Master Repository

Reply via email to