In perl.git, the branch blead has been updated

<http://perl5.git.perl.org/perl.git/commitdiff/88b13658991e60bf62462d089d8bbf592f48ce0c?hp=bdb1f1b3738d343c9d3048636256f9d44854d329>

- Log -----------------------------------------------------------------
commit 88b13658991e60bf62462d089d8bbf592f48ce0c
Author: Steve Hay <steve.m....@googlemail.com>
Date:   Thu Jun 15 14:00:29 2017 +0100

    Update gmake for VS 2017
    
    Update GNUmakefile as per:
    fe7ba59122 Fix dmake build breakage when using Visual C++
    82cad14406 Update dmake for VS 2017
    74102a88af Fix up CCINCDIR/CCLIBDIR for VC++ 14.1 (and VC++ 8.0-14.0 too!)
-----------------------------------------------------------------------

Summary of changes:
 win32/GNUmakefile | 112 ++++++++++++++++++++++++++++++++++++++----------------
 1 file changed, 79 insertions(+), 33 deletions(-)

diff --git a/win32/GNUmakefile b/win32/GNUmakefile
index d0c8279aa2..7d75f2672a 100644
--- a/win32/GNUmakefile
+++ b/win32/GNUmakefile
@@ -183,6 +183,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
 
@@ -242,11 +244,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 locations of the compiler
+# Running VCVARS32.BAT, VCVARSALL.BAT or similar is *required* when using
+# Visual C++.
 #
 #CCHOME                := C:\MinGW
 
@@ -361,30 +361,25 @@ 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).
 ifeq ($(CCHOME),)
 ifeq ($(CCTYPE),GCC)
 CCHOME         := C:\MinGW
+else ifeq ($(CCTYPE),MSVC60)
+CCHOME         := $(MSVCDir)
+else ifeq ($(CCTYPE),MSVC70)
+CCHOME         := $(MSVCDir)
+else ifeq ($(CCTYPE),MSVC70FREE)
+CCHOME         := $(MSVCDir)
+else ifeq ($(CCTYPE),MSVC141)
+CCHOME         := $(VCToolsInstallDir)
 else
-CCHOME         := $(MSVCDIR)
+CCHOME         := $(VCINSTALLDIR)
 endif
 endif
 
-#
-# Following sets $Config{incpath} and $Config{libpth}
-#
-
-ifneq ($(GCCCROSS),)
-CCINCDIR := $(CCHOME)\$(GCCCROSS)\include
-CCLIBDIR := $(CCHOME)\$(GCCCROSS)\lib
-CCDLLDIR := $(CCLIBDIR)
-ARCHPREFIX := $(GCCCROSS)-
-else
-CCINCDIR := $(CCHOME)\include
-CCLIBDIR := $(CCHOME)\lib
-CCDLLDIR := $(CCHOME)\bin
-ARCHPREFIX :=
-endif
-
 ifeq ($(CCTYPE),GCC)
 ifeq ($(GCCTARGET),x86_64-w64-mingw32)
 WIN64 := define
@@ -477,6 +472,35 @@ ifeq ($(USE_LONG_DOUBLE),define)
 ARCHNAME       := $(ARCHNAME)-ld
 endif
 
+# Set the install location of the compiler headers/libraries.
+# These are saved into $Config{incpath} and $Config{libpth}.
+ifneq ($(GCCCROSS),)
+CCINCDIR := $(CCHOME)\$(GCCCROSS)\include
+CCLIBDIR := $(CCHOME)\$(GCCCROSS)\lib
+ARCHPREFIX := $(GCCCROSS)-
+else
+CCINCDIR := $(CCHOME)\include
+ifeq ($(CCTYPE),MSVC141)
+ifeq ($(WIN64),define)
+CCLIBDIR := $(CCHOME)\lib\x64
+else
+CCLIBDIR := $(CCHOME)\lib\x86
+endif
+else
+CCLIBDIR := $(CCHOME)\lib
+endif
+ARCHPREFIX :=
+endif
+
+# Set DLL location for GCC compilers.
+ifeq ($(CCTYPE),GCC)
+ifneq ($(GCCCROSS),)
+CCDLLDIR := $(CCLIBDIR)
+else
+CCDLLDIR := $(CCHOME)\bin
+endif
+endif
+
 ARCHDIR                = ..\lib\$(ARCHNAME)
 COREDIR                = ..\lib\CORE
 AUTODIR                = ..\lib\auto
@@ -487,7 +511,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
@@ -634,6 +657,8 @@ ifeq ($(CCTYPE),MSVC140)
 LIBC           = ucrt.lib
 else ifeq ($(CCTYPE),MSVC140FREE)
 LIBC           = ucrt.lib
+else ifeq ($(CCTYPE),MSVC141)
+LIBC           = ucrt.lib
 else
 LIBC           = msvcrt.lib
 endif
@@ -649,6 +674,8 @@ ifeq ($(CCTYPE),MSVC140)
 LIBC           = ucrtd.lib
 else ifeq ($(CCTYPE),MSVC140FREE)
 LIBC           = ucrtd.lib
+else ifeq ($(CCTYPE),MSVC141)
+LIBC           = ucrtd.lib
 else
 LIBC           = msvcrtd.lib
 endif
@@ -686,9 +713,11 @@ endif
 
 # Likewise for deprecated Winsock APIs in VC++ 14.0 for now.
 ifeq ($(CCTYPE),MSVC140)
-DEFINES                = $(DEFINES) -D_WINSOCK_DEPRECATED_NO_WARNINGS
+DEFINES                += -D_WINSOCK_DEPRECATED_NO_WARNINGS
 else ifeq ($(CCTYPE),MSVC140FREE)
-DEFINES                = $(DEFINES) -D_WINSOCK_DEPRECATED_NO_WARNINGS
+DEFINES                += -D_WINSOCK_DEPRECATED_NO_WARNINGS
+else ifeq ($(CCTYPE),MSVC141)
+DEFINES                += -D_WINSOCK_DEPRECATED_NO_WARNINGS
 endif
 
 # In VS 2005 (VC++ 8.0) Microsoft changes time_t from 32-bit to
@@ -722,6 +751,12 @@ LIBBASEFILES       += msvcrtd.lib vcruntimed.lib
 else
 LIBBASEFILES   += msvcrt.lib vcruntime.lib
 endif
+else ifeq ($(CCTYPE),MSVC141)
+ifeq ($(CFG),DebugFull)
+LIBBASEFILES   += msvcrtd.lib vcruntimed.lib
+else
+LIBBASEFILES   += msvcrt.lib vcruntime.lib
+endif
 endif
 
 # Avoid __intel_new_proc_init link error for libircmt.
@@ -771,6 +806,7 @@ else
 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
@@ -1290,20 +1326,30 @@ ifeq ($(CCTYPE),MSVC140)
        echo #undef FILE_cnt&& \
        echo #undef FILE_base&& \
        echo #undef FILE_bufsiz&& \
-       echo #define FILE_ptr(fp) PERLIO_FILE_ptr(fp)&& \
-       echo #define FILE_cnt(fp) PERLIO_FILE_cnt(fp)&& \
-       echo #define FILE_base(fp) PERLIO_FILE_base(fp)&& \
-       echo #define FILE_bufsiz(fp) (PERLIO_FILE_cnt(fp) + PERLIO_FILE_ptr(fp) 
- PERLIO_FILE_base(fp))&& \
+       echo #define FILE_ptr^(fp^) PERLIO_FILE_ptr^(fp^)&& \
+       echo #define FILE_cnt^(fp^) PERLIO_FILE_cnt^(fp^)&& \
+       echo #define FILE_base^(fp^) PERLIO_FILE_base^(fp^)&& \
+       echo #define FILE_bufsiz^(fp^) ^(PERLIO_FILE_cnt^(fp^) + 
PERLIO_FILE_ptr^(fp^) - PERLIO_FILE_base^(fp^)^)&& \
        echo #define I_STDBOOL)>> config.h
 else ifeq ($(CCTYPE),MSVC140FREE)
        @(echo #undef FILE_ptr&& \
        echo #undef FILE_cnt&& \
        echo #undef FILE_base&& \
        echo #undef FILE_bufsiz&& \
-       echo #define FILE_ptr(fp) PERLIO_FILE_ptr(fp)&& \
-       echo #define FILE_cnt(fp) PERLIO_FILE_cnt(fp)&& \
-       echo #define FILE_base(fp) PERLIO_FILE_base(fp)&& \
-       echo #define FILE_bufsiz(fp) (PERLIO_FILE_cnt(fp) + PERLIO_FILE_ptr(fp) 
- PERLIO_FILE_base(fp))&& \
+       echo #define FILE_ptr^(fp^) PERLIO_FILE_ptr^(fp^)&& \
+       echo #define FILE_cnt^(fp^) PERLIO_FILE_cnt^(fp^)&& \
+       echo #define FILE_base^(fp^) PERLIO_FILE_base^(fp^)&& \
+       echo #define FILE_bufsiz^(fp^) ^(PERLIO_FILE_cnt^(fp^) + 
PERLIO_FILE_ptr^(fp^) - PERLIO_FILE_base^(fp^)^)&& \
+       echo #define I_STDBOOL)>> config.h
+else ifeq ($(CCTYPE),MSVC141)
+       @(echo #undef FILE_ptr&& \
+       echo #undef FILE_cnt&& \
+       echo #undef FILE_base&& \
+       echo #undef FILE_bufsiz&& \
+       echo #define FILE_ptr^(fp^) PERLIO_FILE_ptr^(fp^)&& \
+       echo #define FILE_cnt^(fp^) PERLIO_FILE_cnt^(fp^)&& \
+       echo #define FILE_base^(fp^) PERLIO_FILE_base^(fp^)&& \
+       echo #define FILE_bufsiz^(fp^) ^(PERLIO_FILE_cnt^(fp^) + 
PERLIO_FILE_ptr^(fp^) - PERLIO_FILE_base^(fp^)^)&& \
        echo #define I_STDBOOL)>> config.h
 endif
 ifeq ($(USE_LARGE_FILES),define)

--
Perl5 Master Repository

Reply via email to