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.
This commit is contained in:
Chun-wei Fan 2017-02-15 14:43:15 +08:00
parent 5d390526d3
commit ba4e2a775c
6 changed files with 74 additions and 10 deletions

View File

@ -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

View File

@ -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

View File

@ -35,7 +35,8 @@ gen-enums.bat: $(srcdir)/gen-enums.batin gsk.enum.headers
SUBDIRS = \
vs12 \
vs14
vs14 \
vs15
EXTRA_DIST += \
detectenv-msvc.mak \

View File

@ -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)

View File

@ -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

47
win32/vs15/Makefile.am Normal file
View File

@ -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