MSVC builds: Generate most of the built sources in gdk/

With the exception of the enumeration sources (gdkenumtypes.h and
gdkenumtypes.c), the generared sources in gdk/ (gdkversionmacros.h,
gdkresources.[c|h], gdkmarshalers.[c|h] are now generated in the
gtk3-prebuild projects with the NMake Makefiles.

Make build/win32/config-msvc.mak filled with the version info from
autotools, too.
This commit is contained in:
Chun-wei Fan 2019-07-25 18:04:58 +08:00
parent 7fb9cddf1a
commit 58ee7adc29
9 changed files with 144 additions and 63 deletions

View File

@ -37,6 +37,7 @@ SUBDIRS = \
EXTRA_DIST += \
config-msvc.mak \
config-msvc.mak.in \
detectenv-msvc.mak \
generate-msvc.mak \
gtk-introspection-msvc.mak \

View File

@ -29,6 +29,4 @@ GDBUS_CODEGEN = $(PREFIX)\bin\gdbus-codegen
!endif
# Please do not change anything beneath this line unless maintaining the NMake Makefiles
GTK_MAJOR_VERSION = 3
GTK_MINOR_VERSION = 24
GTK_MICRO_VERSION = 10
GTK_VERSION = @GTK_VERSION@

View File

@ -0,0 +1,33 @@
#!/usr/bin/python3
# Generate gdk/gdkversionmacros.h
# Author: Fan, Chun-wei
# Date: July 25, 2019
import os
import sys
import argparse
from replace import replace_multi, replace
def main(argv):
srcdir = os.path.dirname(__file__)
top_srcdir = os.path.join(srcdir, os.pardir, os.pardir)
parser = argparse.ArgumentParser(description='Generate gdkversionmacros.h')
parser.add_argument('--version', help='Version of the package',
required=True)
args = parser.parse_args()
gdk_sourcedir = os.path.join(top_srcdir, 'gdk')
version_parts = args.version.split('.')
gdkversionmacro_replace_items = {'@GTK_MAJOR_VERSION@': version_parts[0],
'@GTK_MINOR_VERSION@': version_parts[1],
'@GTK_MICRO_VERSION@': version_parts[2]}
replace_multi(os.path.join(gdk_sourcedir, 'gdkversionmacros.h.in'),
os.path.join(gdk_sourcedir, 'gdkversionmacros.h'),
gdkversionmacro_replace_items)
if __name__ == '__main__':
sys.exit(main(sys.argv))

View File

@ -5,12 +5,17 @@
!include config-msvc.mak
all: \
..\..\config.h \
..\..\gdk\gdkconfig.h
!if [echo GDK_RESOURCES = \>> resources_sources.mak ]
!endif
# Copy the pre-defined config.h.win32
..\..\config.h: ..\..\config.h.win32
!if [for %f in (..\..\gdk\resources\glsl\*.glsl) do @echo %f \>> resources_sources.mak]
!endif
!if [echo.>> resources_sources.mak]
!endif
!if [del /f /q resources_sources.mak]
!endif
# Copy the pre-defined gdkconfig.h.[win32|win32_broadway]
!if "$(CFG)" == "release" || "$(CFG)" == "Release"
@ -29,6 +34,21 @@ GDK_DEL_CONFIG = broadway
GDK_CONFIG_TEMPLATE = ..\..\gdk\gdkconfig.h.win32
!endif
GDK_MARSHALERS_FLAGS = --prefix=_gdk_marshal --valist-marshallers
GDK_RESOURCES_ARGS = $** --target=$@ --sourcedir=..\..\gdk --c-name _gdk --manual-register
all: \
..\..\config.h \
..\..\gdk\gdkconfig.h \
..\..\gdk\gdkversionmacros.h \
..\..\gdk\gdkmarshalers.h \
..\..\gdk\gdkmarshalers.c \
..\..\gdk\gdkresources.h \
..\..\gdk\gdkresources.c
# Copy the pre-defined config.h.win32
..\..\config.h: ..\..\config.h.win32
..\..\gdk-$(CFG)-$(GDK_CONFIG)-build: $(GDK_CONFIG_TEMPLATE)
@if exist ..\..\gdk-$(GDK_OLD_CFG)-$(GDK_DEL_CONFIG)-build del ..\..\gdk-$(GDK_OLD_CFG)-$(GDK_DEL_CONFIG)-build
@if exist ..\..\gdk-$(GDK_OLD_CFG)-$(GDK_CONFIG)-build del ..\..\gdk-$(GDK_OLD_CFG)-$(GDK_CONFIG)-build
@ -41,11 +61,42 @@ GDK_CONFIG_TEMPLATE = ..\..\gdk\gdkconfig.h.win32
..\..\gdk\gdkconfig.h:
@copy $** $@
..\..\gdk\gdkversionmacros.h: ..\..\gdk\gdkversionmacros.h.in
$(PYTHON) gen-gdkversionmacros-h.py --version=$(GTK_VERSION)
..\..\gdk\gdkmarshalers.h: ..\..\gdk\gdkmarshalers.list
$(PYTHON) $(GLIB_GENMARSHAL) $(GDK_MARSHALERS_FLAGS) --header $** > $@.tmp
@move $@.tmp $@
..\..\gdk\gdkmarshalers.c: ..\..\gdk\gdkmarshalers.list
$(PYTHON) $(GLIB_GENMARSHAL) $(GDK_MARSHALERS_FLAGS) --body $** > $@.tmp
@move $@.tmp $@
..\..\gdk\gdk.gresource.xml:
@echo ^<?xml version='1.0' encoding='UTF-8'?^> >$@
@echo ^<gresources^> >> $@
@echo ^<gresource prefix='/org/gtk/libgdk'^> >> $@
@for %%f in (..\..\gdk\resources\glsl\*.glsl) do @echo ^<file alias='glsl/%%~nxf'^>resources/glsl/%%~nxf^</file^> >> $@
@echo ^</gresource^> >> $@
@echo ^</gresources^> >> $@
..\..\gdk\gdkresources.h: ..\..\gdk\gdk.gresource.xml
$(GLIB_COMPILE_RESOURCES) $(GDK_RESOURCES_ARGS) --generate-header
..\..\gdk\gdkresources.c: ..\..\gdk\gdk.gresource.xml $(GDK_RESOURCES)
$(GLIB_COMPILE_RESOURCES) $(GDK_RESOURCES_ARGS) --generate-source
# Remove the generated files
clean:
@-del ..\..\gdk\gdkconfig.h
@-del /f /q ..\..\gdk\gdkresources.c
@-del /f /q ..\..\gdk\gdkresources.h
@-del /f /q ..\..\gdk\gdk.gresource.xml
@-del /f /q ..\..\gdk\gdkmarshalers.c
@-del /f /q ..\..\gdk\gdkmarshalers.h
@-del /f /q ..\..\gdk\gdkversionmacros.h
@-del /f /q ..\..\gdk\gdkconfig.h
@if exist ..\..\gdk-$(CFG)-$(GDK_CONFIG)-build del ..\..\gdk-$(CFG)-$(GDK_CONFIG)-build
@if exist ..\..\gdk-$(GDK_OLD_CFG)-$(GDK_DEL_CONFIG)-build del ..\..\gdk-$(GDK_OLD_CFG)-$(GDK_DEL_CONFIG)-build
@if exist ..\..\gdk-$(GDK_OLD_CFG)-$(GDK_CONFIG)-build del ..\..\gdk-$(GDK_OLD_CFG)-$(GDK_CONFIG)-build
@if exist ..\..\gdk-$(CFG)-$(GDK_DEL_CONFIG)-build del ..\..\gdk-$(CFG)-$(GDK_DEL_CONFIG)-build
@-del ..\..\config.h
@-del /f /q ..\..\config.h

View File

@ -7,7 +7,7 @@
<GenerateRequiredSourcesBase>cd ..
set VCInstallDir=$(VCInstallDir)
nmake -f generate-msvc.mak PREFIX=$(GlibEtcInstallRoot)</GenerateRequiredSourcesBase>
<GeneratedSources>..\..\..\config.h;..\..\..\gdk\gdkconfig.h</GeneratedSources>
<GeneratedGdkSources>..\..\..\config.h;..\..\..\gdk\gdkconfig.h;..\..\gdk\gdkversionmacros.h;..\..\..\gdk\gdkmarshalers.h;..\..\..\gdk\gdkmarshalers.c;..\..\..\gdk\gdkresources.h;..\..\..\gdk\gdkresources.c</GeneratedGdkSources>
<GDbusCodeGenCmd>c:\vs$(VSVer).0\$(Platform)\bin\gdbus-codegen --interface-prefix org.Gtk. --c-namespace _Gtk --generate-c-code gtkdbusgenerated ./gtkdbusinterfaces.xml</GDbusCodeGenCmd>
<GenerateGtkDbusBuiltSources>cd ..\..\..\gtk &amp; $(PythonDir)\python $(GDbusCodeGenCmd) &amp; cd $(SolutionDir)</GenerateGtkDbusBuiltSources>
<CopyGtkWin32RC>copy ..\..\..\gtk\gtk-win32.rc.body ..\..\..\gtk\gtk-win32.rc</CopyGtkWin32RC>
@ -28,8 +28,8 @@ del ..\..\..\gtk\gtktypefuncs.combined.c ..\..\..\gtk\gtktypefuncs.preproc.c
<BuildMacro Include="GenerateRequiredSourcesBase">
<Value>$(GenerateRequiredSourcesBase)</Value>
</BuildMacro>
<BuildMacro Include="GeneratedSources">
<Value>$(GeneratedSources)</Value>
<BuildMacro Include="GeneratedGdkSources">
<Value>$(GeneratedGdkSources)</Value>
</BuildMacro>
<BuildMacro Include="GDbusCodeGenCmd">
<Value>$(GDbusCodeGenCmd)</Value>

View File

@ -121,19 +121,19 @@
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<NMakeBuildCommandLine Condition="'$(Configuration)' == 'Debug_Broadway'">$(GenerateRequiredSourcesBase) CFG=Debug BROADWAY=1</NMakeBuildCommandLine>
<NMakeBuildCommandLine Condition="'$(Configuration)' == 'Release_Broadway'">$(GenerateRequiredSourcesBase) CFG=Release BROADWAY=1</NMakeBuildCommandLine>
<NMakeBuildCommandLine Condition="'$(Configuration)' == 'Debug'">$(GenerateRequiredSourcesBase) CFG=$(Configuration)</NMakeBuildCommandLine>
<NMakeBuildCommandLine Condition="'$(Configuration)' == 'Release'">$(GenerateRequiredSourcesBase) CFG=$(Configuration)</NMakeBuildCommandLine>
<NMakeReBuildCommandLine Condition="'$(Configuration)' == 'Debug_Broadway'">$(GenerateRequiredSourcesBase) CFG=Debug BROADWAY=1 clean all</NMakeReBuildCommandLine>
<NMakeReBuildCommandLine Condition="'$(Configuration)' == 'Release_Broadway'">$(GenerateRequiredSourcesBase) CFG=Release BROADWAY=1 clean all</NMakeReBuildCommandLine>
<NMakeReBuildCommandLine Condition="'$(Configuration)' == 'Debug'">$(GenerateRequiredSourcesBase) CFG=$(Configuration) clean all</NMakeReBuildCommandLine>
<NMakeReBuildCommandLine Condition="'$(Configuration)' == 'Release'">$(GenerateRequiredSourcesBase) CFG=$(Configuration) clean all</NMakeReBuildCommandLine>
<NMakeCleanCommandLine Condition="'$(Configuration)' == 'Debug_Broadway'">$(GenerateRequiredSourcesBase) CFG=Debug BROADWAY=1 clean</NMakeCleanCommandLine>
<NMakeCleanCommandLine Condition="'$(Configuration)' == 'Release_Broadway'">$(GenerateRequiredSourcesBase) CFG=Release BROADWAY=1 clean</NMakeCleanCommandLine>
<NMakeCleanCommandLine Condition="'$(Configuration)' == 'Debug'">$(GenerateRequiredSourcesBase) CFG=$(Configuration) clean</NMakeCleanCommandLine>
<NMakeCleanCommandLine Condition="'$(Configuration)' == 'Release_Broadway'">$(GenerateRequiredSourcesBase) CFG=$(Configuration) clean</NMakeCleanCommandLine>
<NMakeOutput>$(GeneratedSources)</NMakeOutput>
<NMakeBuildCommandLine Condition="'$(Configuration)' == 'Debug_Broadway'">$(GenerateRequiredSourcesBase) CFG=Debug BROADWAY=1 $(IntrospectPythonParam)</NMakeBuildCommandLine>
<NMakeBuildCommandLine Condition="'$(Configuration)' == 'Release_Broadway'">$(GenerateRequiredSourcesBase) CFG=Release BROADWAY=1 $(IntrospectPythonParam)</NMakeBuildCommandLine>
<NMakeBuildCommandLine Condition="'$(Configuration)' == 'Debug'">$(GenerateRequiredSourcesBase) CFG=$(Configuration) $(IntrospectPythonParam)</NMakeBuildCommandLine>
<NMakeBuildCommandLine Condition="'$(Configuration)' == 'Release'">$(GenerateRequiredSourcesBase) CFG=$(Configuration) $(IntrospectPythonParam)</NMakeBuildCommandLine>
<NMakeReBuildCommandLine Condition="'$(Configuration)' == 'Debug_Broadway'">$(GenerateRequiredSourcesBase) CFG=Debug BROADWAY=1 $(IntrospectPythonParam) clean all</NMakeReBuildCommandLine>
<NMakeReBuildCommandLine Condition="'$(Configuration)' == 'Release_Broadway'">$(GenerateRequiredSourcesBase) CFG=Release BROADWAY=1 $(IntrospectPythonParam) clean all</NMakeReBuildCommandLine>
<NMakeReBuildCommandLine Condition="'$(Configuration)' == 'Debug'">$(GenerateRequiredSourcesBase) CFG=$(Configuration) $(IntrospectPythonParam) clean all</NMakeReBuildCommandLine>
<NMakeReBuildCommandLine Condition="'$(Configuration)' == 'Release'">$(GenerateRequiredSourcesBase) CFG=$(Configuration) $(IntrospectPythonParam) clean all</NMakeReBuildCommandLine>
<NMakeCleanCommandLine Condition="'$(Configuration)' == 'Debug_Broadway'">$(GenerateRequiredSourcesBase) CFG=Debug BROADWAY=1 $(IntrospectPythonParam) clean</NMakeCleanCommandLine>
<NMakeCleanCommandLine Condition="'$(Configuration)' == 'Release_Broadway'">$(GenerateRequiredSourcesBase) CFG=Release BROADWAY=1 $(IntrospectPythonParam) clean</NMakeCleanCommandLine>
<NMakeCleanCommandLine Condition="'$(Configuration)' == 'Debug'">$(GenerateRequiredSourcesBase) CFG=$(Configuration) $(IntrospectPythonParam) clean</NMakeCleanCommandLine>
<NMakeCleanCommandLine Condition="'$(Configuration)' == 'Release'">$(GenerateRequiredSourcesBase) CFG=$(Configuration) $(IntrospectPythonParam) clean</NMakeCleanCommandLine>
<NMakeOutput>$(GeneratedGdkSources)</NMakeOutput>
</PropertyGroup>
<ItemGroup>
</ItemGroup>

View File

@ -10,8 +10,8 @@
Value="cd ..&#x0D;&#x0A;set VCInstallDir=$(VCInstallDir)&#x0D;&#x0A;nmake -f generate-msvc.mak PREFIX=$(GlibEtcInstallRoot)"
/>
<UserMacro
Name="GeneratedSources"
Value="..\..\..\config.h;..\..\..\gdk\gdkconfig.h"
Name="GeneratedGdkSources"
Value="..\..\..\config.h;..\..\..\gdk\gdkconfig.h;..\..\gdk\gdkversionmacros.h;..\..\..\gdk\gdkmarshalers.h;..\..\..\gdk\gdkmarshalers.c;..\..\..\gdk\gdkresources.h;..\..\..\gdk\gdkresources.c"
/>
<UserMacro
Name="GDbusCodeGenCmd"

View File

@ -28,10 +28,10 @@
>
<Tool
Name="VCNMakeTool"
BuildCommandLine="$(GenerateRequiredSourcesBase) CFG=$(ConfigurationName)"
ReBuildCommandLine="$(GenerateRequiredSourcesBase) CFG=$(ConfigurationName) clean all"
CleanCommandLine="$(GenerateRequiredSourcesBase) CFG=$(ConfigurationName) clean"
Output="$(GtkIntrospectBuiltFiles)"
BuildCommandLine="$(GenerateRequiredSourcesBase) CFG=$(ConfigurationName) $(IntrospectPythonParam)"
ReBuildCommandLine="$(GenerateRequiredSourcesBase) CFG=$(ConfigurationName) $(IntrospectPythonParam) clean all"
CleanCommandLine="$(GenerateRequiredSourcesBase) CFG=$(ConfigurationName) $(IntrospectPythonParam) clean"
Output="$(GeneratedGdkSources)"
/>
</Configuration>
<Configuration
@ -43,15 +43,14 @@
>
<Tool
Name="VCNMakeTool"
BuildCommandLine="$(GenerateRequiredSourcesBase) CFG=$(ConfigurationName)"
ReBuildCommandLine="$(GenerateRequiredSourcesBase) CFG=$(ConfigurationName) clean all"
CleanCommandLine="$(GenerateRequiredSourcesBase) CFG=$(ConfigurationName) clean"
Output="$(GtkIntrospectBuiltFiles)"
BuildCommandLine="$(GenerateRequiredSourcesBase) CFG=$(ConfigurationName) $(IntrospectPythonParam)"
ReBuildCommandLine="$(GenerateRequiredSourcesBase) CFG=$(ConfigurationName) $(IntrospectPythonParam) clean all"
CleanCommandLine="$(GenerateRequiredSourcesBase) CFG=$(ConfigurationName) $(IntrospectPythonParam) clean"
Output="$(GeneratedGdkSources)"
/>
</Configuration>
<Configuration
Name="Debug_Broadway|Win32"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="0"
InheritedPropertySheets=".\gtk3-gen-srcs.vsprops"
CharacterSet="2"
@ -59,10 +58,10 @@
>
<Tool
Name="VCNMakeTool"
BuildCommandLine="$(GenerateRequiredSourcesBase) CFG=Debug BROADWAY=1"
ReBuildCommandLine="$(GenerateRequiredSourcesBase) CFG=Debug BROADWAY=1 clean all"
CleanCommandLine="$(GenerateRequiredSourcesBase) CFG=Debug BROADWAY=1 clean"
Output="$(GtkIntrospectBuiltFiles)"
BuildCommandLine="$(GenerateRequiredSourcesBase) CFG=Debug BROADWAY=1 $(IntrospectPythonParam)"
ReBuildCommandLine="$(GenerateRequiredSourcesBase) CFG=Debug BROADWAY=1 $(IntrospectPythonParam) clean all"
CleanCommandLine="$(GenerateRequiredSourcesBase) CFG=Debug BROADWAY=1 $(IntrospectPythonParam) clean"
Output="$(GeneratedGdkSources)"
/>
</Configuration>
<Configuration
@ -74,15 +73,14 @@
>
<Tool
Name="VCNMakeTool"
BuildCommandLine="$(GenerateRequiredSourcesBase) CFG=Debug BROADWAY=1"
ReBuildCommandLine="$(GenerateRequiredSourcesBase) CFG=Debug BROADWAY=1 clean all"
CleanCommandLine="$(GenerateRequiredSourcesBase) CFG=Debug BROADWAY=1 clean"
Output="$(GtkIntrospectBuiltFiles)"
BuildCommandLine="$(GenerateRequiredSourcesBase) CFG=Debug BROADWAY=1 $(IntrospectPythonParam)"
ReBuildCommandLine="$(GenerateRequiredSourcesBase) CFG=Debug BROADWAY=1 $(IntrospectPythonParam) clean all"
CleanCommandLine="$(GenerateRequiredSourcesBase) CFG=Debug BROADWAY=1 $(IntrospectPythonParam) clean"
Output="$(GeneratedGdkSources)"
/>
</Configuration>
<Configuration
Name="Release|Win32"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="0"
InheritedPropertySheets=".\gtk3-gen-srcs.vsprops"
CharacterSet="2"
@ -91,10 +89,10 @@
>
<Tool
Name="VCNMakeTool"
BuildCommandLine="$(GenerateRequiredSourcesBase) CFG=$(ConfigurationName)"
ReBuildCommandLine="$(GenerateRequiredSourcesBase) CFG=$(ConfigurationName) clean all"
CleanCommandLine="$(GenerateRequiredSourcesBase) CFG=$(ConfigurationName) clean"
Output="$(GtkIntrospectBuiltFiles)"
BuildCommandLine="$(GenerateRequiredSourcesBase) CFG=$(ConfigurationName) $(IntrospectPythonParam)"
ReBuildCommandLine="$(GenerateRequiredSourcesBase) CFG=$(ConfigurationName) $(IntrospectPythonParam) clean all"
CleanCommandLine="$(GenerateRequiredSourcesBase) CFG=$(ConfigurationName) $(IntrospectPythonParam) clean"
Output="$(GeneratedGdkSources)"
/>
</Configuration>
<Configuration
@ -107,15 +105,14 @@
>
<Tool
Name="VCNMakeTool"
BuildCommandLine="$(GenerateRequiredSourcesBase) CFG=$(ConfigurationName)"
ReBuildCommandLine="$(GenerateRequiredSourcesBase) CFG=$(ConfigurationName) clean all"
CleanCommandLine="$(GenerateRequiredSourcesBase) CFG=$(ConfigurationName) clean"
Output="$(GtkIntrospectBuiltFiles)"
BuildCommandLine="$(GenerateRequiredSourcesBase) CFG=$(ConfigurationName) $(IntrospectPythonParam)"
ReBuildCommandLine="$(GenerateRequiredSourcesBase) CFG=$(ConfigurationName) $(IntrospectPythonParam) clean all"
CleanCommandLine="$(GenerateRequiredSourcesBase) CFG=$(ConfigurationName) $(IntrospectPythonParam) clean"
Output="$(GeneratedGdkSources)"
/>
</Configuration>
<Configuration
Name="Release_Broadway|Win32"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="0"
InheritedPropertySheets=".\gtk3-gen-srcs.vsprops"
CharacterSet="2"
@ -124,10 +121,10 @@
>
<Tool
Name="VCNMakeTool"
BuildCommandLine="$(GenerateRequiredSourcesBase) CFG=Release BROADWAY=1"
ReBuildCommandLine="$(GenerateRequiredSourcesBase) CFG=Release BROADWAY=1 clean all"
CleanCommandLine="$(GenerateRequiredSourcesBase) CFG=Release BROADWAY=1 clean"
Output="$(GtkIntrospectBuiltFiles)"
BuildCommandLine="$(GenerateRequiredSourcesBase) CFG=Release BROADWAY=1 $(IntrospectPythonParam)"
ReBuildCommandLine="$(GenerateRequiredSourcesBase) CFG=Release BROADWAY=1 $(IntrospectPythonParam) clean all"
CleanCommandLine="$(GenerateRequiredSourcesBase) CFG=Release BROADWAY=1 $(IntrospectPythonParam) clean"
Output="$(GeneratedGdkSources)"
/>
</Configuration>
<Configuration
@ -140,10 +137,10 @@
>
<Tool
Name="VCNMakeTool"
BuildCommandLine="$(GenerateRequiredSourcesBase) CFG=Release BROADWAY=1"
ReBuildCommandLine="$(GenerateRequiredSourcesBase) CFG=Release BROADWAY=1 clean all"
CleanCommandLine="$(GenerateRequiredSourcesBase) CFG=Release BROADWAY=1 clean"
Output="$(GtkIntrospectBuiltFiles)"
BuildCommandLine="$(GenerateRequiredSourcesBase) CFG=Release BROADWAY=1 $(IntrospectPythonParam)"
ReBuildCommandLine="$(GenerateRequiredSourcesBase) CFG=Release BROADWAY=1 $(IntrospectPythonParam) clean all"
CleanCommandLine="$(GenerateRequiredSourcesBase) CFG=Release BROADWAY=1 $(IntrospectPythonParam) clean"
Output="$(GeneratedGdkSources)"
/>
</Configuration>
</Configurations>

View File

@ -1963,6 +1963,7 @@ docs/reference/libgail-util/version.xml
docs/tools/Makefile
build/Makefile
build/win32/Makefile
build/win32/config-msvc.mak.in
build/win32/vs9/Makefile
build/win32/vs9/gtk3-version-paths.vsprops
build/win32/vs10/Makefile