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
