build: Write introspection rules directly in NMake Makefiles

By doing so, we can drop the autotools rules that we use to generate the
file lists and rules for building introspection via NMake Makefiles for
Visual Studio builds via the project files.
This commit is contained in:
Chun-wei Fan 2022-05-19 11:22:12 +08:00
parent c05d21c9af
commit fe548537f9
3 changed files with 164 additions and 13 deletions

View File

@ -33,7 +33,7 @@
NULL=
# For GDK enumeration sources
# For GDK public headers and sources
!include ..\gdk\gdk-sources.inc
!if [call create-lists.bat header gdk_headers.mak GDK_PUBLIC_HEADERS]
@ -45,9 +45,36 @@ NULL=
!if [call create-lists.bat footer gdk_headers.mak]
!endif
# For GDK-Win32 public headers
!if [call create-lists.bat header gdk_headers.mak GDK_C_SRCS]
!endif
!if [for %f in ($(gdk_c_sources)) do @call create-lists.bat file gdk_headers.mak ../gdk/%f]
!endif
!if [call create-lists.bat footer gdk_headers.mak]
!endif
# For GDK-Win32 public headers and sources
!include ..\gdk\win32\gdk-win32-sources.inc
!if [call create-lists.bat header gdk_headers.mak GDK_WIN32_PUBLIC_HEADERS]
!endif
!if [for %f in ($(libgdkwin32include_HEADERS)) do @call create-lists.bat file gdk_headers.mak ../gdk/win32/%f]
!endif
!if [call create-lists.bat footer gdk_headers.mak]
!endif
!if [call create-lists.bat header gdk_headers.mak GDK_WIN32_INTROSPECTION_SRCS]
!endif
!if [for %f in ($(w32_introspection_files)) do @call create-lists.bat file gdk_headers.mak ../gdk/%f]
!endif
!if [call create-lists.bat footer gdk_headers.mak]
!endif
# For GDK-Broadway public headers
!include ..\gdk\broadway\gdk-broadway-sources.inc
@ -70,10 +97,11 @@ NULL=
!if [call create-lists.bat header resources_sources.mak GTK_RESOURCES]
!endif
# For GTK enumeration sources
# For GTK public headers and sources
!include ..\gtk\gtk-sources.inc
!include ..\gtk\a11y\Makefile.inc
!include ..\gtk\deprecated\Makefile.inc
!include ..\gtk\inspector\Makefile.inc
!if [call create-lists.bat header gtk_headers.mak GTK_PUBLIC_ENUM_HEADERS]
!endif
@ -96,6 +124,33 @@ NULL=
!if [call create-lists.bat footer gtk_headers.mak]
!endif
!if [call create-lists.bat header gtk_headers.mak GTK_SEMI_PRIVATE_HEADERS]
!endif
!if [for %f in ($(gtk_semi_private_h_sources)) do @call create-lists.bat file gtk_headers.mak ../gtk/%f]
!endif
!if [call create-lists.bat footer gtk_headers.mak]
!endif
!if [call create-lists.bat header gtk_headers.mak GTK_C_SRCS]
!endif
!if [for %f in ($(a11y_c_sources) $(gtk_deprecated_c_sources) $(inspector_c_sources)) do @call create-lists.bat file gtk_headers.mak ../gtk/%f]
!endif
!if [for %f in ($(gtk_base_c_sources_base_gtka_gtkh:.c=)) do @call create-lists.bat file gtk_headers.mak ../gtk/%f.c]
!endif
!if [for %f in ($(gtk_base_c_sources_base_gtki_gtkw:.c=)) do @call create-lists.bat file gtk_headers.mak ../gtk/%f.c]
!endif
!if [for %f in ($(gtk_os_win32_c_sources)) do @call create-lists.bat file gtk_headers.mak ../gtk/%f]
!endif
!if [call create-lists.bat footer gtk_headers.mak]
!endif
!include gtk_headers.mak
!if [del /f /q gtk_headers.mak]

View File

@ -39,6 +39,8 @@ GDK_GENERATED_SOURCES = \
.\vs$(VSVER)\$(CFG)\$(PLAT)\obj\gdk-3\gdk\gdkresources.c \
.\vs$(VSVER)\$(CFG)\$(PLAT)\obj\gdk-3\gdk\gdkversionmacros.h
GTK_VERSION_H = .\vs$(VSVER)\$(CFG)\$(PLAT)\obj\gtk-3\gtk\gtkversion.h
GTK_TYPEBUILTIN_SOURCES = \
.\vs$(VSVER)\$(CFG)\$(PLAT)\obj\gtk-3\gtk\gtktypebuiltins.h \
.\vs$(VSVER)\$(CFG)\$(PLAT)\obj\gtk-3\gtk\gtktypebuiltins.c
@ -54,7 +56,7 @@ GTK_GENERATED_SOURCES = \
.\vs$(VSVER)\$(CFG)\$(PLAT)\obj\gtk-3\gtk\gtkmarshalers.c \
.\vs$(VSVER)\$(CFG)\$(PLAT)\obj\gtk-3\gtk\gtkresources.h \
.\vs$(VSVER)\$(CFG)\$(PLAT)\obj\gtk-3\gtk\gtkresources.c \
.\vs$(VSVER)\$(CFG)\$(PLAT)\obj\gtk-3\gtk\gtkversion.h
$(GTK_VERSION_H)
generate-base-sources: \
.\vs$(VSVER)\$(CFG)\$(PLAT)\obj\gdk-3\config.h \

View File

@ -29,19 +29,113 @@ AT_PLAT=aarch64
AT_PLAT=i686
!endif
introspect: setgirbuildenv $(built_install_girs) $(built_install_typelibs)
vs$(VSVER)\$(CFG)\$(PLAT)\obj\gdk-3\Gdk-$(APIVERSION).gir.filelist: $(GDK_PUBLIC_HEADERS) $(GDK_C_SRCS) $(GDK_GENERATED_SOURCES)
@if exist $@ del $@
@for %f in ($(gdk_h_sources:/=\) $(gdk_c_sources:/=\)) do @if not "%f" == "gdkkeysyms-compat.h" echo ..\gdk\%f>>$@
@for %f in ($(GDK_GENERATED_SOURCES)) do @if not "%~nxf" == "gdkconfig.h" echo %f>>$@
setgirbuildenv:
vs$(VSVER)\$(CFG)\$(PLAT)\obj\gdk3-win32\GdkWin32-$(APIVERSION).gir.filelist: $(GDK_WIN32_INTROSPECTION_SRCS)
@if exist $@ del $@
@for %f in ($(w32_introspection_files:/=\)) do @echo ..\gdk\%f>>$@
vs$(VSVER)\$(CFG)\$(PLAT)\obj\gtk-3\Gtk-$(APIVERSION).gir.filelist: \
$(GTK_PUBLIC_ENUM_HEADERS) $(GTK_SEMI_PRIVATE_HEADERS) \
$(GTK_GENERATED_PUB_HDRS) $(GTK_C_SRCS)
@if exist $@ del $@
@for %f in ($(GTK_PUB_HDRS:.h=)) do @if not "%f" == "gtktextdisplay" if not "%f" == "gtkx" echo ..\gtk\%f.h>>$@
@for %f in ($(a11y_h_sources:/=\) $(gtk_deprecated_h_sources:/=\) $(gtk_semi_private_h_sources)) do @if not "%f" == "gtktextlayout.h" echo ..\gtk\%f>>$@
@for %f in ($(a11y_c_sources:/=\) $(gtk_deprecated_c_sources:/=\) $(inspector_c_sources:/=\)) do @echo ..\gtk\%f>>$@
@for %f in ($(gtk_base_c_sources_base_gtka_gtkh:.c=)) do @echo ..\gtk\%f.c>>$@
@for %f in ($(gtk_base_c_sources_base_gtki_gtkw:.c=)) do @echo ..\gtk\%f.c>>$@
@for %f in ($(gtk_clipboard_dnd_c_sources_generic) $(gtk_os_win32_c_sources)) do @echo ..\gtk\%f>>$@
@for %f in ($(GTK_TYPEBUILTIN_SOURCES) $(GTK_VERSION_H)) do @echo %f>>$@
vs$(VSVER)\$(CFG)\$(PLAT)\bin\Gdk-$(APIVERSION).gir: vs$(VSVER)\$(CFG)\$(PLAT)\obj\gdk-3\Gdk-$(APIVERSION).gir.filelist
@-echo Generating $@...
@set PYTHONPATH=$(PREFIX)\lib\gobject-introspection
@set PATH=vs$(VSVER)\$(CFG)\$(PLAT)\bin;$(PREFIX)\bin;$(PATH)
@set PKG_CONFIG_PATH=$(PKG_CONFIG_PATH)
@set LIB=vs$(VSVER)\$(CFG)\$(PLAT)\bin;$(LIB)
@$(PYTHON) $(G_IR_SCANNER) --verbose -no-libtool \
--namespace=Gdk --nsversion=$(APIVERSION) \
--library=gdk-$(APIVERSION) \
--add-include-path=./vs$(VSVER)/$(CFG)/$(PLAT)/bin \
--add-include-path=$(G_IR_INCLUDEDIR) \
--include=Gio-2.0 --include=GdkPixbuf-2.0 --include=Pango-1.0 --include=cairo-1.0 \
--cflags-begin \
-DG_LOG_USE_STRUCTURED=1 -DGDK_COMPILATION -I./vs$(VSVER)/$(CFG)/$(PLAT)/obj/gdk-3 \
-I.. -I./vs$(VSVER)/$(CFG)/$(PLAT)/obj/gdk-3/gdk -I../gdk -I../gdk/win32 \
--cflags-end \
--c-include=gdk/gdk.h \
--filelist=$** \
-L.\vs$(VSVER)\$(CFG)\$(PLAT)\bin \
-o $@
!include introspection.body.mak
vs$(VSVER)\$(CFG)\$(PLAT)\bin\GdkWin32-$(APIVERSION).gir: \
./vs$(VSVER)/$(CFG)/$(PLAT)/bin/Gdk-$(APIVERSION).gir \
vs$(VSVER)\$(CFG)\$(PLAT)\obj\gdk3-win32\GdkWin32-$(APIVERSION).gir.filelist
@-echo Generating $@...
@set PYTHONPATH=$(PREFIX)\lib\gobject-introspection
@set PATH=vs$(VSVER)\$(CFG)\$(PLAT)\bin;$(PREFIX)\bin;$(PATH)
@set PKG_CONFIG_PATH=$(PKG_CONFIG_PATH)
@set LIB=vs$(VSVER)\$(CFG)\$(PLAT)\bin;$(LIB)
$(PYTHON) $(G_IR_SCANNER) --verbose -no-libtool \
--namespace=GdkWin32 --nsversion=$(APIVERSION) \
--library=gdk-$(APIVERSION) \
--add-include-path=./vs$(VSVER)/$(CFG)/$(PLAT)/bin \
--add-include-path=$(G_IR_INCLUDEDIR) \
--cflags-begin \
-DG_LOG_USE_STRUCTURED=1 -DGDK_COMPILATION -I./vs$(VSVER)/$(CFG)/$(PLAT)/obj/gdk-3 \
-I.. -I./vs$(VSVER)/$(CFG)/$(PLAT)/obj/gdk-3/gdk -I../gdk -I../gdk/win32 \
--cflags-end \
--identifier-prefix=Gdk --c-include=gdk/gdkwin32.h \
--include-uninstalled=./vs$(VSVER)/$(CFG)/$(PLAT)/bin/Gdk-$(APIVERSION).gir \
--filelist=vs$(VSVER)\$(CFG)\$(PLAT)\obj\gdk3-win32\GdkWin32-$(APIVERSION).gir.filelist \
-L.\vs$(VSVER)\$(CFG)\$(PLAT)\bin \
-o $@
install-introspection: introspect
@-copy vs$(VSVER)\$(CFG)\$(PLAT)\bin\*.gir "$(G_IR_INCLUDEDIR)"
@-copy /b vs$(VSVER)\$(CFG)\$(PLAT)\bin\*.typelib "$(G_IR_TYPELIBDIR)"
vs$(VSVER)\$(CFG)\$(PLAT)\bin\Gtk-$(APIVERSION).gir: \
./vs$(VSVER)/$(CFG)/$(PLAT)/bin/Gdk-$(APIVERSION).gir \
vs$(VSVER)\$(CFG)\$(PLAT)\obj\gtk-3\Gtk-$(APIVERSION).gir.filelist
@-echo Generating $@...
@set PYTHONPATH=$(PREFIX)\lib\gobject-introspection
@set PATH=vs$(VSVER)\$(CFG)\$(PLAT)\bin;$(PREFIX)\bin;$(PATH)
@set PKG_CONFIG_PATH=$(PKG_CONFIG_PATH)
@set LIB=vs$(VSVER)\$(CFG)\$(PLAT)\bin;$(LIB)
$(PYTHON) $(G_IR_SCANNER) --verbose -no-libtool \
--namespace=Gtk --nsversion=$(APIVERSION) \
--library=gtk-$(APIVERSION) --library=gdk-$(APIVERSION) \
--add-include-path=./vs$(VSVER)/$(CFG)/$(PLAT)/bin \
--add-include-path=$(G_IR_INCLUDEDIR) \
--include=Atk-1.0 \
--pkg-export=gtk+-$(APIVERSION) \
--cflags-begin \
-DG_LOG_USE_STRUCTURED=1 -DGTK_VERSION="$(GTK_VERSION)" -DGTK_BINARY_VERSION="3.0.0" -DGTK_COMPILATION \
-DGTK_PRINT_BACKEND_ENABLE_UNSUPPORTED -DGTK_LIBDIR=\"/dummy/lib\" -DGTK_DATADIR=\"/dummy/share\" \
-DGTK_DATA_PREFIX=\"/dummy\" -DGTK_SYSCONFDIR=\"/dummy/etc\" -DGTK_HOST=\"$(AT_PLAT)-pc-vs$(VSVER)\" \
-DGTK_PRINT_BACKENDS=\"file\" -DINCLUDE_IM_am_et -DINCLUDE_IM_cedilla -DINCLUDE_IM_cyrillic_translit \
-DINCLUDE_IM_ime -DINCLUDE_IM_inuktitu -DINCLUDE_IM_ipa -DINCLUDE_IM_multipress -DINCLUDE_IM_thai \
-DINCLUDE_IM_ti_er -DINCLUDE_IM_ti_et -DINCLUDE_IM_viqr \
-DGTK_TEXT_USE_INTERNAL_UNSUPPORTED_API \
-I./vs$(VSVER)/$(CFG)/$(PLAT)/obj/gtk-3 \
-I./vs$(VSVER)/$(CFG)/$(PLAT)/obj/gdk-3 \
-I.. -I./vs$(VSVER)/$(CFG)/$(PLAT)/obj/gtk-3/gtk -I../gtk \
-I./vs$(VSVER)/$(CFG)/$(PLAT)/obj/gdk-3/gdk -I../gdk \
--cflags-end \
--warn-all --include-uninstalled=./vs$(VSVER)/$(CFG)/$(PLAT)/bin/Gdk-$(APIVERSION).gir \
--filelist=vs$(VSVER)\$(CFG)\$(PLAT)\obj\gtk-3\Gtk-$(APIVERSION).gir.filelist \
-L.\vs$(VSVER)\$(CFG)\$(PLAT)\bin \
-o $@
vs$(VSVER)\$(CFG)\$(PLAT)\bin\Gdk-$(APIVERSION).typelib: vs$(VSVER)\$(CFG)\$(PLAT)\bin\Gdk-$(APIVERSION).gir
vs$(VSVER)\$(CFG)\$(PLAT)\bin\GdkWin32-$(APIVERSION).typelib: vs$(VSVER)\$(CFG)\$(PLAT)\bin\GdkWin32-$(APIVERSION).gir
vs$(VSVER)\$(CFG)\$(PLAT)\bin\Gtk-$(APIVERSION).typelib: vs$(VSVER)\$(CFG)\$(PLAT)\bin\Gtk-$(APIVERSION).gir
$(built_install_typelibs):
@-echo Compiling $@...
$(G_IR_COMPILER) --includedir=$(@D:\=/) --debug --verbose $(@R:\=/).gir -o $@
introspect: $(built_install_girs) $(built_install_typelibs)
!else
introspect:
@ -49,8 +143,8 @@ introspect:
!endif
introspect-clean:
@-del /f/q Gtk_3_0_gir_list_final
@-del /f/q GdkWin32_3_0_gir_list_final
@-del /f/q Gdk_3_0_gir_list_final
@-del /f/q vs$(VSVER)\$(CFG)\$(PLAT)\obj\gtk-3\Gtk-$(APIVERSION).gir.filelist
@-del /f/q vs$(VSVER)\$(CFG)\$(PLAT)\obj\gdk3-win32\GdkWin32-$(APIVERSION).gir.filelist
@-del /f/q vs$(VSVER)\$(CFG)\$(PLAT)\obj\gdk-3\Gdk-$(APIVERSION).gir.filelist
@-del /f/q vs$(VSVER)\$(CFG)\$(PLAT)\bin\*.typelib
@-del /f/q vs$(VSVER)\$(CFG)\$(PLAT)\bin\*.gir