In perl.git, the branch blead has been updated <http://perl5.git.perl.org/perl.git/commitdiff/3aa3d69ac5e208c16829ec576c5f16f90681d60c?hp=bb152a4b442f7718fd37d32cc558be675e8ae1ae>
- Log ----------------------------------------------------------------- commit 3aa3d69ac5e208c16829ec576c5f16f90681d60c Author: Steve Hay <[email protected]> Date: Fri Jun 16 08:49:52 2017 +0100 Remove unnecessary MSVC*FREE CCTYPEs from Windows makefiles As was pointed out recently in perl #131487, there is little point in most of these since the Express (now Community) versions are so close to the full versions anyway these days. MSVC70FREE is retained since it was the only one that was actually being made use of. M README.win32 M win32/GNUmakefile M win32/Makefile M win32/makefile.mk commit d8efeb4672ed789e8b5d885676607ec8487984d5 Author: Steve Hay <[email protected]> Date: Fri Jun 16 08:46:23 2017 +0100 We now support building with Visual Studio 2017 (VC++ 14.1) (Support was added by commits 58998b2a91, 82cad14406, 74102a88af and 88b1365899.) M README.win32 M pod/perldelta.pod ----------------------------------------------------------------------- Summary of changes: README.win32 | 21 +++++++++--------- pod/perldelta.pod | 11 ++++++++-- win32/GNUmakefile | 64 +++++++------------------------------------------------ win32/Makefile | 45 ++++++++++++-------------------------- win32/makefile.mk | 45 ++++++++++++-------------------------- 5 files changed, 56 insertions(+), 130 deletions(-) diff --git a/README.win32 b/README.win32 index d32f5289f2..56acf1882c 100644 --- a/README.win32 +++ b/README.win32 @@ -63,10 +63,10 @@ that are also supported by perl's makefile. =back The Microsoft Visual C++ compilers are also now being given away free. They are -available as "Visual C++ Toolkit 2003" or "Visual C++ 2005-2015 Express -Edition" (and also as part of the ".NET Framework SDK") and are the same -compilers that ship with "Visual C++ .NET 2003 Professional" or "Visual C++ -2005-2015 Professional" respectively. +available as "Visual C++ Toolkit 2003" or "Visual C++ 2005-2017 Express [or +Community, from 2017] Edition" (and also as part of the ".NET Framework SDK") +and are the same compilers that ship with "Visual C++ .NET 2003 Professional" +or "Visual C++ 2005-2017 Professional" respectively. This port can also be built on IA64/AMD64 using: @@ -139,9 +139,9 @@ console already set up for your target architecture (x86-32 or x86-64 or IA64). With the newer compilers, you may also use the older batch files if you choose so. -=item Microsoft Visual C++ 2008-2015 Express Edition +=item Microsoft Visual C++ 2008-2017 Express/Community Edition -These free versions of Visual C++ 2008-2015 Professional contain the same +These free versions of Visual C++ 2008-2017 Professional contain the same compilers and linkers that ship with the full versions, and also contain everything necessary to build Perl, rather than requiring a separate download of the Windows SDK like previous versions did. @@ -151,14 +151,15 @@ L<http://www.microsoft.com/downloads/search.aspx?displaylang=en>. (Providing ex links to these packages has proven a pointless task because the links keep on changing so often.) -Install Visual C++ 2008-2015 Express, then setup your environment using, e.g. +Install Visual C++ 2008-2017 Express/Community, then setup your environment +using, e.g. C:\Program Files\Microsoft Visual Studio 12.0\Common7\Tools\vsvars32.bat (assuming the default installation location was chosen). Perl should now build using the win32/Makefile. You will need to edit that -file to set CCTYPE to one of MSVC90FREE-MSVC140FREE first. +file to set CCTYPE to one of MSVC90-MSVC141 first. =item Microsoft Visual C++ 2005 Express Edition @@ -200,7 +201,7 @@ while the latest versions install into version-specific locations such as Perl should now build using the win32/Makefile. You will need to edit that file to set - CCTYPE = MSVC80FREE + CCTYPE = MSVC80 and to set CCHOME, CCINCDIR and CCLIBDIR as per the environment setup above. @@ -950,6 +951,6 @@ Win9x support was added in 5.6 (Benjamin Stuhl). Support for 64-bit Windows added in 5.8 (ActiveState Corp). -Last updated: 19 February 2017 +Last updated: 16 June 2017 =cut diff --git a/pod/perldelta.pod b/pod/perldelta.pod index 73894e09a6..a9e013409c 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -431,9 +431,16 @@ XXX List any platforms that this version of perl no longer compiles on. =over 4 -=item XXX-some-platform +=item Windows -XXX +=over 4 + +=item * + +Support for compiling perl on Windows using Microsoft Visual Studio 2017 +(containing Visual C++ 14.1) has been added. + +=back =back diff --git a/win32/GNUmakefile b/win32/GNUmakefile index 7d75f2672a..2f2f1e962c 100644 --- a/win32/GNUmakefile +++ b/win32/GNUmakefile @@ -159,31 +159,19 @@ DEFAULT_INC_EXCLUDES_DOT := define #CCTYPE := MSVC70FREE # Windows Server 2003 SP1 Platform SDK (April 2005) #CCTYPE := SDK2003SP1 -# Visual C++ 2005 (aka Visual C++ 8.0) (full version) +# Visual C++ 2005 (aka Visual C++ 8.0) (full version or Express Edition) #CCTYPE := MSVC80 -# Visual C++ 2005 Express Edition (aka Visual C++ 8.0) (free version) -#CCTYPE := MSVC80FREE -# Visual C++ 2008 (aka Visual C++ 9.0) (full version) +# Visual C++ 2008 (aka Visual C++ 9.0) (full version or Express Edition) #CCTYPE := MSVC90 -# Visual C++ 2008 Express Edition (aka Visual C++ 9.0) (free version) -#CCTYPE := MSVC90FREE -# Visual C++ 2010 (aka Visual C++ 10.0) (full version) +# Visual C++ 2010 (aka Visual C++ 10.0) (full version or Express Edition) #CCTYPE := MSVC100 -# Visual C++ 2010 Express Edition (aka Visual C++ 10.0) (free version) -#CCTYPE := MSVC100FREE -# Visual C++ 2012 (aka Visual C++ 11.0) (full version) +# Visual C++ 2012 (aka Visual C++ 11.0) (full version or Express Edition) #CCTYPE := MSVC110 -# Visual C++ 2012 Express Edition (aka Visual C++ 11.0) (free version) -#CCTYPE := MSVC110FREE -# Visual C++ 2013 (aka Visual C++ 12.0) (full version) +# Visual C++ 2013 (aka Visual C++ 12.0) (full version or Express Edition) #CCTYPE := MSVC120 -# Visual C++ 2013 Express Edition (aka Visual C++ 12.0) (free version) -#CCTYPE := MSVC120FREE -# Visual C++ 2015 (aka Visual C++ 14.0) (full version) +# Visual C++ 2015 (aka Visual C++ 14.0) (full version or Express Edition) #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) +# Visual C++ 2017 (aka Visual C++ 14.1) (full version or Community Edition) #CCTYPE := MSVC141 # MinGW or mingw-w64 with gcc-3.4.5 or later #CCTYPE := GCC @@ -655,8 +643,6 @@ CXX_FLAG = -TP -EHsc ifeq ($(CCTYPE),MSVC140) LIBC = ucrt.lib -else ifeq ($(CCTYPE),MSVC140FREE) -LIBC = ucrt.lib else ifeq ($(CCTYPE),MSVC141) LIBC = ucrt.lib else @@ -672,8 +658,6 @@ LINK_DBG = -debug else ifeq ($(CFG),DebugFull) ifeq ($(CCTYPE),MSVC140) LIBC = ucrtd.lib -else ifeq ($(CCTYPE),MSVC140FREE) -LIBC = ucrtd.lib else ifeq ($(CCTYPE),MSVC141) LIBC = ucrtd.lib else @@ -711,11 +695,9 @@ ifeq ($(PREMSVC80),undef) DEFINES += -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE endif -# Likewise for deprecated Winsock APIs in VC++ 14.0 for now. +# Likewise for deprecated Winsock APIs in VC++ 14.0 onwards for now. ifeq ($(CCTYPE),MSVC140) DEFINES += -D_WINSOCK_DEPRECATED_NO_WARNINGS -else ifeq ($(CCTYPE),MSVC140FREE) -DEFINES += -D_WINSOCK_DEPRECATED_NO_WARNINGS else ifeq ($(CCTYPE),MSVC141) DEFINES += -D_WINSOCK_DEPRECATED_NO_WARNINGS endif @@ -745,12 +727,6 @@ LIBBASEFILES += msvcrtd.lib vcruntimed.lib else LIBBASEFILES += msvcrt.lib vcruntime.lib endif -else ifeq ($(CCTYPE),MSVC140FREE) -ifeq ($(CFG),DebugFull) -LIBBASEFILES += msvcrtd.lib vcruntimed.lib -else -LIBBASEFILES += msvcrt.lib vcruntime.lib -endif else ifeq ($(CCTYPE),MSVC141) ifeq ($(CFG),DebugFull) LIBBASEFILES += msvcrtd.lib vcruntimed.lib @@ -820,13 +796,6 @@ else LINK_FLAGS += -subsystem:console,"5.01" endif -else ifeq ($(CCTYPE),MSVC120FREE) -ifeq ($(WIN64),define) -LINK_FLAGS += -subsystem:console,"5.02" -else -LINK_FLAGS += -subsystem:console,"5.01" -endif - else ifeq ($(CCTYPE),MSVC140) ifeq ($(WIN64),define) LINK_FLAGS += -subsystem:console,"5.02" @@ -834,13 +803,6 @@ else LINK_FLAGS += -subsystem:console,"5.01" endif -else ifeq ($(CCTYPE),MSVC140FREE) -ifeq ($(WIN64),define) -LINK_FLAGS += -subsystem:console,"5.02" -else -LINK_FLAGS += -subsystem:console,"5.01" -endif - else ifneq ($(CCTYPE),GCC) PRIV_LINK_FLAGS += -subsystem:console endif @@ -1331,16 +1293,6 @@ ifeq ($(CCTYPE),MSVC140) 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 I_STDBOOL)>> config.h else ifeq ($(CCTYPE),MSVC141) @(echo #undef FILE_ptr&& \ echo #undef FILE_cnt&& \ diff --git a/win32/Makefile b/win32/Makefile index 802ef405b2..51e2c27b14 100644 --- a/win32/Makefile +++ b/win32/Makefile @@ -119,31 +119,19 @@ CCTYPE = MSVC60 #CCTYPE = MSVC70FREE # Windows Server 2003 SP1 Platform SDK (April 2005) #CCTYPE = SDK2003SP1 -# Visual C++ 2005 (aka Visual C++ 8.0) (full version) +# Visual C++ 2005 (aka Visual C++ 8.0) (full version or Express Edition) #CCTYPE = MSVC80 -# Visual C++ 2005 Express Edition (aka Visual C++ 8.0) (free version) -#CCTYPE = MSVC80FREE -# Visual C++ 2008 (aka Visual C++ 9.0) (full version) +# Visual C++ 2008 (aka Visual C++ 9.0) (full version or Express Edition) #CCTYPE = MSVC90 -# Visual C++ 2008 Express Edition (aka Visual C++ 9.0) (free version) -#CCTYPE = MSVC90FREE -# Visual C++ 2010 (aka Visual C++ 10.0) (full version) +# Visual C++ 2010 (aka Visual C++ 10.0) (full version or Express Edition) #CCTYPE = MSVC100 -# Visual C++ 2010 Express Edition (aka Visual C++ 10.0) (free version) -#CCTYPE = MSVC100FREE -# Visual C++ 2012 (aka Visual C++ 11.0) (full version) +# Visual C++ 2012 (aka Visual C++ 11.0) (full version or Express Edition) #CCTYPE = MSVC110 -# Visual C++ 2012 Express Edition (aka Visual C++ 11.0) (free version) -#CCTYPE = MSVC110FREE -# Visual C++ 2013 (aka Visual C++ 12.0) (full version) +# Visual C++ 2013 (aka Visual C++ 12.0) (full version or Express Edition) #CCTYPE = MSVC120 -# Visual C++ 2013 Express Edition (aka Visual C++ 12.0) (free version) -#CCTYPE = MSVC120FREE -# Visual C++ 2015 (aka Visual C++ 14.0) (full version) +# Visual C++ 2015 (aka Visual C++ 14.0) (full version or Express Edition) #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) +# Visual C++ 2017 (aka Visual C++ 14.1) (full version or Community Edition) #CCTYPE = MSVC141 # @@ -502,8 +490,7 @@ DEFINES = -DWIN32 -D_CONSOLE -DNO_STRICT LOCDEFS = -DPERLDLL -DPERL_CORE CXX_FLAG = -TP -EHsc -!IF "$(CCTYPE)" == "MSVC140" || "$(CCTYPE)" == "MSVC140FREE" \ - || "$(CCTYPE)" == "MSVC141" +!IF "$(CCTYPE)" == "MSVC140" || "$(CCTYPE)" == "MSVC141" LIBC = ucrt.lib !ELSE LIBC = msvcrt.lib @@ -518,8 +505,7 @@ OPTIMIZE = -Od -MD -Zi LINK_DBG = -debug !ELSE !IF "$(CFG)" == "DebugFull" -!IF "$(CCTYPE)" == "MSVC140" || "$(CCTYPE)" == "MSVC140FREE" \ - || "$(CCTYPE)" == "MSVC141" +!IF "$(CCTYPE)" == "MSVC140" || "$(CCTYPE)" == "MSVC141" LIBC = ucrtd.lib !ELSE LIBC = msvcrtd.lib @@ -558,9 +544,8 @@ OPTIMIZE = $(OPTIMIZE) -fp:precise 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" \ - || "$(CCTYPE)" == "MSVC141" +# Likewise for deprecated Winsock APIs in VC++ 14.0 onwards for now. +!IF "$(CCTYPE)" == "MSVC140" || "$(CCTYPE)" == "MSVC141" DEFINES = $(DEFINES) -D_WINSOCK_DEPRECATED_NO_WARNINGS !ENDIF @@ -584,8 +569,7 @@ 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" \ - || "$(CCTYPE)" == "MSVC141" +!IF "$(CCTYPE)" == "MSVC140" || "$(CCTYPE)" == "MSVC141" ! IF "$(CFG)" == "DebugFull" LIBBASEFILES = $(LIBBASEFILES) msvcrtd.lib vcruntimed.lib ! ELSE @@ -642,8 +626,7 @@ RSC_FLAGS = -DINCLUDE_MANIFEST # 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 # building cmd lines -!IF "$(CCTYPE)" == "MSVC120" || "$(CCTYPE)" == "MSVC120FREE" \ - || "$(CCTYPE)" == "MSVC140" || "$(CCTYPE)" == "MSVC140FREE" +!IF "$(CCTYPE)" == "MSVC120" || "$(CCTYPE)" == "MSVC140" ! IF "$(WIN64)" == "define" LINK_FLAGS = $(LINK_FLAGS) -subsystem:console,"5.02" ! ELSE @@ -991,7 +974,7 @@ perlglob$(o) : perlglob.c @echo.>>$@ @echo #ifndef _config_h_footer_>>$@ @echo #define _config_h_footer_>>$@ -!IF "$(CCTYPE)" == "MSVC140" || "$(CCTYPE)" == "MSVC140FREE" || "$(CCTYPE)" == "MSVC141" +!IF "$(CCTYPE)" == "MSVC140" || "$(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 0e2f4630be..65aefa10d2 100644 --- a/win32/makefile.mk +++ b/win32/makefile.mk @@ -131,31 +131,19 @@ DEFAULT_INC_EXCLUDES_DOT *= define #CCTYPE *= MSVC70FREE # Windows Server 2003 SP1 Platform SDK (April 2005) #CCTYPE = SDK2003SP1 -# Visual C++ 2005 (aka Visual C++ 8.0) (full version) +# Visual C++ 2005 (aka Visual C++ 8.0) (full version or Express Edition) #CCTYPE *= MSVC80 -# Visual C++ 2005 Express Edition (aka Visual C++ 8.0) (free version) -#CCTYPE *= MSVC80FREE -# Visual C++ 2008 (aka Visual C++ 9.0) (full version) +# Visual C++ 2008 (aka Visual C++ 9.0) (full version or Express Edition) #CCTYPE *= MSVC90 -# Visual C++ 2008 Express Edition (aka Visual C++ 9.0) (free version) -#CCTYPE *= MSVC90FREE -# Visual C++ 2010 (aka Visual C++ 10.0) (full version) +# Visual C++ 2010 (aka Visual C++ 10.0) (full version or Express Edition) #CCTYPE = MSVC100 -# Visual C++ 2010 Express Edition (aka Visual C++ 10.0) (free version) -#CCTYPE = MSVC100FREE -# Visual C++ 2012 (aka Visual C++ 11.0) (full version) +# Visual C++ 2012 (aka Visual C++ 11.0) (full version or Express Edition) #CCTYPE = MSVC110 -# Visual C++ 2012 Express Edition (aka Visual C++ 11.0) (free version) -#CCTYPE = MSVC110FREE -# Visual C++ 2013 (aka Visual C++ 12.0) (full version) +# Visual C++ 2013 (aka Visual C++ 12.0) (full version or Express Edition) #CCTYPE = MSVC120 -# Visual C++ 2013 Express Edition (aka Visual C++ 12.0) (free version) -#CCTYPE = MSVC120FREE -# Visual C++ 2015 (aka Visual C++ 14.0) (full version) +# Visual C++ 2015 (aka Visual C++ 14.0) (full version or Express Edition) #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) +# Visual C++ 2017 (aka Visual C++ 14.1) (full version or Community Edition) #CCTYPE = MSVC141 # MinGW or mingw-w64 with gcc-3.4.5 or later #CCTYPE = GCC @@ -636,8 +624,7 @@ DEFINES = -DWIN32 -D_CONSOLE -DNO_STRICT LOCDEFS = -DPERLDLL -DPERL_CORE CXX_FLAG = -TP -EHsc -.IF "$(CCTYPE)" == "MSVC140" || "$(CCTYPE)" == "MSVC140FREE" \ - || "$(CCTYPE)" == "MSVC141" +.IF "$(CCTYPE)" == "MSVC140" || "$(CCTYPE)" == "MSVC141" LIBC = ucrt.lib .ELSE LIBC = msvcrt.lib @@ -650,8 +637,7 @@ LINK_DBG = -debug OPTIMIZE = -Od -MD -Zi LINK_DBG = -debug .ELIF "$(CFG)" == "DebugFull" -.IF "$(CCTYPE)" == "MSVC140" || "$(CCTYPE)" == "MSVC140FREE" \ - || "$(CCTYPE)" == "MSVC141" +.IF "$(CCTYPE)" == "MSVC140" || "$(CCTYPE)" == "MSVC141" LIBC = ucrtd.lib .ELSE LIBC = msvcrtd.lib @@ -688,9 +674,8 @@ OPTIMIZE += -fp:precise 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" \ - || "$(CCTYPE)" == "MSVC141" +# Likewise for deprecated Winsock APIs in VC++ 14.0 onwards for now. +.IF "$(CCTYPE)" == "MSVC140" || "$(CCTYPE)" == "MSVC141" DEFINES += -D_WINSOCK_DEPRECATED_NO_WARNINGS .ENDIF @@ -713,8 +698,7 @@ 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" \ - || "$(CCTYPE)" == "MSVC141" +.IF "$(CCTYPE)" == "MSVC140" || "$(CCTYPE)" == "MSVC141" .IF "$(CFG)" == "DebugFull" LIBBASEFILES += msvcrtd.lib vcruntimed.lib .ELSE @@ -775,8 +759,7 @@ RSC_FLAGS = -DINCLUDE_MANIFEST # 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 # building cmd lines -.IF "$(CCTYPE)" == "MSVC120" || "$(CCTYPE)" == "MSVC120FREE" \ - || "$(CCTYPE)" == "MSVC140" || "$(CCTYPE)" == "MSVC140FREE" +.IF "$(CCTYPE)" == "MSVC120" || "$(CCTYPE)" == "MSVC140" .IF "$(WIN64)" == "define" LINK_FLAGS += -subsystem:console,"5.02" .ELSE @@ -1265,7 +1248,7 @@ $(MINIDIR)\.exists : $(CFGH_TMPL) echo #undef NVgf&& \ echo #undef USE_LONG_DOUBLE&& \ echo #undef USE_CPLUSPLUS)>> config.h -.IF "$(CCTYPE)" == "MSVC140" || "$(CCTYPE)" == "MSVC140FREE" || "$(CCTYPE)" == "MSVC141" +.IF "$(CCTYPE)" == "MSVC140" || "$(CCTYPE)" == "MSVC141" @(echo #undef FILE_ptr&& \ echo #undef FILE_cnt&& \ echo #undef FILE_base&& \ -- Perl5 Master Repository
