From ba4e2a775cb41d3c1bf09d95bcee0add725aa510 Mon Sep 17 00:00:00 2001 From: Chun-wei Fan Date: Wed, 15 Feb 2017 14:43:15 +0800 Subject: [PATCH] Visual Studio builds: Support Visual Studio 2017 Update the autotools scripts to support Visual Studio 2017 builds by copying the Visual Studio 2013 projects and updateing the items as necessary to obtain the Visual Studio 2017 projects. Note that the format of the toolset string changed, so allow one to pass in and thus use a custom toolset string, otherwise the default toolset string will be generated as it was before. Note also the Visual Studio 2017 aims to be compatible with Visual Studio 2015 on the CRT level, so binaries built with 2017 should work without problems with the binaries built with 2015. --- configure.ac | 7 ++++++ win32/Makefile-newvs.am | 25 +++++++++++++++------- win32/Makefile.am | 3 ++- win32/vs12/Makefile.am | 1 + win32/vs14/Makefile.am | 1 - win32/vs15/Makefile.am | 47 +++++++++++++++++++++++++++++++++++++++++ 6 files changed, 74 insertions(+), 10 deletions(-) create mode 100644 win32/vs15/Makefile.am diff --git a/configure.ac b/configure.ac index c902f57084..8f41e77520 100644 --- a/configure.ac +++ b/configure.ac @@ -1969,6 +1969,12 @@ if test "x${enable_Bsymbolic}" = "xyes" ; then fi AC_SUBST(GTK_LINK_FLAGS) +dnl +dnl Check whether MSVC toolset is explicitly set +dnl +AM_CONDITIONAL(MSVC_BASE_NO_TOOLSET_SET, [test x$MSVC_BASE_TOOLSET = x]) +AM_CONDITIONAL(MSVC_NO_TOOLSET_SET, [test x$MSVC_TOOLSET = x]) + AC_CONFIG_FILES([ README INSTALL @@ -2025,6 +2031,7 @@ win32/Makefile win32/vs12/Makefile win32/vs12/gtk4-version-paths.props win32/vs14/Makefile +win32/vs15/Makefile gdk/Makefile gdk/broadway/Makefile gdk/x11/Makefile diff --git a/win32/Makefile-newvs.am b/win32/Makefile-newvs.am index ecdf3b5568..3a91862b6d 100644 --- a/win32/Makefile-newvs.am +++ b/win32/Makefile-newvs.am @@ -8,14 +8,23 @@ # Author: Fan, Chun-wei # November 05, 2012 -# MSVC_BASE_VER: Baseline MSVC 201x version to copy/process project files from (10 for 2010, 11 for 2012, 12 for 2013, 14 for 2015 and so on) -# MSVC_BASE_VER_LONG: Long Version of baseline Visual Studio 201x version (2010, 2012, 2013, 14 and so on) -# MSVC_VER_LONG: Long Version of Visual Studio (2012, 2013, 14 and so on) -# MSVC_VER: Short Version of Visual Studio (11 for 2012, 12 for 2013, 14 for 2015 and so on) -# MSVC_FORMAT_VER: Use 12 for MSVC 2012 through 2015 +# MSVC_BASE_VER: Baseline MSVC 201x version to copy/process project files from (100 for 2010, 120 for 2013) +# MSVC_BASE_VER_LONG: Long Version of baseline Visual Studio 201x version (2010, 2012, 2013, 14, 15) +# MSVC_BASE_TOOLSET: Use if baseline MSVC toolset is not in the form v$(MSVC_BASE_VER)0, meaning v$(MSVC_BASE_TOOLSET) +# MSVC_VER_LONG: Long Version of target Visual Studio (2012, 2013, 14 and so on) +# MSVC_VER: Short Version of target Visual Studio (110 for 2012, 120 for 2013, 140 for 2015, 141 for 2017) +# MSVC_TOOLSET: Use if target MSVC toolsett is not in the form v $(MSVC_VER)0, meaning v$(MSVC_TOOLSET) + +if MSVC_BASE_NO_TOOLSET_SET +MSVC_BASE_TOOLSET = $(MSVC_BASE_VER)0 +endif + +if MSVC_NO_TOOLSET_SET +MSVC_TOOLSET = $(MSVC_VER)0 +endif %.sln: - sed 's/11\.00/$(MSVC_FORMAT_VER)\.00/g' < $(top_srcdir)/win32/vs$(MSVC_BASE_VER)/$@ > $(top_builddir)/win32/vs$(MSVC_VER)/$@.tmp + sed 's/11\.00/12\.00/g' < $(top_srcdir)/win32/vs$(MSVC_BASE_VER)/$@ > $(top_builddir)/win32/vs$(MSVC_VER)/$@.tmp sed 's/$(MSVC_BASE_VER_LONG)/$(MSVC_VER_LONG)/g' < $(top_builddir)/win32/vs$(MSVC_VER)/$@.tmp > $(top_builddir)/win32/vs$(MSVC_VER)/$@ rm $(top_builddir)/win32/vs$(MSVC_VER)/$@.tmp @@ -26,9 +35,9 @@ %.vcxproj: if test -e $(top_srcdir)/win32/vs$(MSVC_BASE_VER)/$@; then \ - sed 's/v$(MSVC_BASE_VER)0/v$(MSVC_VER)0/g' < $(top_srcdir)/win32/vs$(MSVC_BASE_VER)/$@ > $(top_builddir)/win32/vs$(MSVC_VER)/$@; \ + sed 's/v$(MSVC_BASE_TOOLSET)/v$(MSVC_TOOLSET)/g' < $(top_srcdir)/win32/vs$(MSVC_BASE_VER)/$@ > $(top_builddir)/win32/vs$(MSVC_VER)/$@; \ else \ - sed 's/v$(MSVC_BASE_VER)0/v$(MSVC_VER)0/g' < $(top_builddir)/win32/vs$(MSVC_BASE_VER)/$@ > $(top_builddir)/win32/vs$(MSVC_VER)/$@; \ + sed 's/v$(MSVC_BASE_TOOLSET)/v$(MSVC_TOOLSET)/g' < $(top_builddir)/win32/vs$(MSVC_BASE_VER)/$@ > $(top_builddir)/win32/vs$(MSVC_VER)/$@; \ fi %.props: $(top_builddir)/win32/vs$(MSVC_BASE_VER)/Makefile diff --git a/win32/Makefile.am b/win32/Makefile.am index c1d0750b6c..987f2d8e88 100644 --- a/win32/Makefile.am +++ b/win32/Makefile.am @@ -35,7 +35,8 @@ gen-enums.bat: $(srcdir)/gen-enums.batin gsk.enum.headers SUBDIRS = \ vs12 \ - vs14 + vs14 \ + vs15 EXTRA_DIST += \ detectenv-msvc.mak \ diff --git a/win32/vs12/Makefile.am b/win32/vs12/Makefile.am index b6bf35ac7b..2535417f9f 100644 --- a/win32/vs12/Makefile.am +++ b/win32/vs12/Makefile.am @@ -64,6 +64,7 @@ DISTCLEANFILES = \ gtk4-install.props: $(top_srcdir)/win32/vs12/gtk4-install.propsin $(MSVC12_HEADERS_LISTS) -$(RM) $(top_builddir)/win32/vs14/gtk4-install.props + -$(RM) $(top_builddir)/win32/vs15/gtk4-install.props $(CPP) -P - <$(top_srcdir)/win32/vs12/gtk4-install.propsin >$@ rm $(MSVC12_HEADERS_LISTS) diff --git a/win32/vs14/Makefile.am b/win32/vs14/Makefile.am index d23b1477d5..82944b8170 100644 --- a/win32/vs14/Makefile.am +++ b/win32/vs14/Makefile.am @@ -39,7 +39,6 @@ DISTCLEANFILES = $(EXTRA_DIST) MSVC_BASE_VER = 12 MSVC_BASE_VER_LONG = 2013 MSVC_VER = 14 -MSVC_FORMAT_VER = 12 MSVC_VER_LONG = 14 include $(top_srcdir)/win32/Makefile-newvs.am diff --git a/win32/vs15/Makefile.am b/win32/vs15/Makefile.am new file mode 100644 index 0000000000..807427897c --- /dev/null +++ b/win32/vs15/Makefile.am @@ -0,0 +1,47 @@ +include $(top_srcdir)/Makefile.decl + +EXTRA_DIST += \ + README.txt \ + gtk+-4.sln \ + gtk4-prebuild.vcxproj \ + gtk4-prebuild.vcxproj.filters \ + gdk4-win32.vcxproj \ + gdk4-win32.vcxproj.filters \ + gdk-4.vcxproj \ + gdk-4.vcxproj.filters \ + gsk-4.vcxproj \ + gsk-4.vcxproj.filters \ + gtk-4.vcxproj \ + gtk-4.vcxproj.filters \ + gtk4-builder-tool.vcxproj \ + gtk4-builder-tool.vcxproj.filters \ + gtk4-encode-symbolic-svg.vcxproj \ + gtk4-encode-symbolic-svg.vcxproj.filters \ + gtk4-query-settings.vcxproj \ + gtk4-query-settings.vcxproj.filters \ + gtk4-update-icon-cache.vcxproj \ + gtk4-update-icon-cache.vcxproj.filters \ + gtk4-demo.vcxproj \ + gtk4-demo.vcxproj.filters \ + gtk4-demo-application.vcxproj \ + gtk4-demo-application.vcxproj.filters \ + gtk4-icon-browser.vcxproj \ + gtk4-icon-browser.vcxproj.filters \ + gtk4-install.vcxproj \ + gtk4-install.vcxproj.filters \ + gtk4-build-defines.props \ + gtk4-gen-srcs.props \ + gtk4-install.props \ + gtk4-version-paths.props + +DISTCLEANFILES = $(EXTRA_DIST) + +MSVC_BASE_VER = 12 +MSVC_BASE_VER_LONG = 2013 +MSVC_VER = 15 +MSVC_VER_LONG = 15 +MSVC_TOOLSET = 141 + +include $(top_srcdir)/win32/Makefile-newvs.am + +-include $(top_srcdir)/git.mk