[gtk+/gtk-2-24] MSVC builds: Add experimental introspection support



commit 9dbee22630dff5a2cc2ab2ba2257d41baa734119
Author: Chun-wei Fan <fanchunwei src gnome org>
Date:   Tue Apr 12 13:31:42 2016 +0800

    MSVC builds: Add experimental introspection support
    
    This adds a set of NMake Makefiles to enable introspection building
    under Visual Studio builds.  As the status of introspection of GTK+-2.24.x
    is considered experimental, this support is also considered experimental.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=765193

 build/Makefile.msvc-introspection      |  125 ++++++++++++++++++++++++++++++++
 build/win32/Makefile.am                |   31 ++++++++
 build/win32/detectenv-msvc.mak         |   76 +++++++++++++++++++
 build/win32/gtk-introspection-msvc.mak |   43 +++++++++++
 build/win32/introspection-msvc.mak     |   94 ++++++++++++++++++++++++
 gdk/Makefile.am                        |   35 +++++++++-
 gtk/Makefile.am                        |   80 ++++++++++++++++++---
 7 files changed, 473 insertions(+), 11 deletions(-)
---
diff --git a/build/Makefile.msvc-introspection b/build/Makefile.msvc-introspection
new file mode 100644
index 0000000..6c90964
--- /dev/null
+++ b/build/Makefile.msvc-introspection
@@ -0,0 +1,125 @@
+# Author: Fan, Chun-wei
+# Common autotools file for constructing the g-ir-scanner and
+# g-ir-compiler command lines for Visual Studio builds.
+
+# This is copied from $(srcroot)/build from the gobject-introspection
+# project, which may be included in projects that support both
+# Visual Studio builds and introspection.
+
+# * Input variables:
+#
+#   MSVC_INTROSPECT_GIRS - List of .gir's that should be built
+#                          in the NMake Makefiles
+#
+# * Simple tutorial
+#
+# Add this to Makefile.am where your library/program is built:
+#   (Either YourLib_1_0_gir_MSVC_LIBS or YourLib_1_0_gir_MSVC_PROGRAM
+#    is required unless --headers-only is specified in
+#    YourLib_1_0_gir__MSVC_SCANNERFLAGS)
+#
+#   include $(top_srcdir)/build/Makefile.msvc-introspection
+#   MSVC_INTROSPECT_GIRS = YourLib-1.0.gir
+#   YourLib_1_0_gir_NAMESPACE = YourLib # This is optional
+#   YourLib_1_0_gir_VERSION = 1.0 # This is optional
+#   YourLib_1_0_gir_MSVC_LIBS = yourlib-1.0
+#   YourLib_1_0_gir_MSVC_FILES = $(libyourlib_1_0_SOURCES)
+#   YourLib_1_0_gir_MSVC_PROGRAM = YourProgram
+#   YourLib_1_0_gir_MSVC_PACKAGES = (Dependent .pc files)
+#   YourLib_1_0_gir_MSVC_INCLUDE_GIRS = (Dependent external .gir's)
+#   YourLiv_1_0_gir_MSVC_EXPORT_PACKAGES = (Packages exported by this .gir)
+
+# Private functions
+
+## Transform the MSVC project filename (no filename extensions) to something which can reference through a 
variable
+## without automake/make complaining, eg Gtk-2.0 -> Gtk_2_0
+_gir_name=$(subst /,_,$(subst -,_,$(subst .,_,$(1))))
+
+# Namespace and Version is either fetched from the gir filename
+# or the _NAMESPACE/_VERSION variable combo
+_gir_namespace_msvc = $(or $($(_gir_name)_NAMESPACE),$(firstword $(subst -, ,$(notdir $(1)))))
+_gir_version_msvc = $(or $($(_gir_name)_VERSION),$(lastword $(subst -, ,$(1:.gir=))))
+_typelib_basename_msvc = $(_gir_namespace_msvc)'-'$(_gir_version_msvc)
+
+# _PROGRAM is an optional variable which needs its own --program argument
+_gir_program_msvc = $(if $($(_gir_name)_MSVC_PROGRAM),--program=$($(_gir_name)_MSVC_PROGRAM))
+
+# Deduce the sub-folder from $(srcroot) where the sources reside in
+_gir_source_path_raw_msvc:=$(subst $(abs_top_srcdir),,$(abs_srcdir))
+_gir_source_path_msvc=$(subst /,\\,$(_gir_source_path_raw_msvc))
+_gir_source_subdir_int_msvc=$(subst \\\\,\\,\\$(_gir_source_path_msvc)\\)
+_gir_source_subdir_msvc=$(subst \\.\\,\\,$(_gir_source_subdir_int_msvc))
+
+_gir_files_raw_msvc=$(subst /,\\,$($(_gir_name)_MSVC_FILES))
+_gir_files_msvc=$(subst $(srcdir)\\,,$(subst $(builddir)\\,,$(subst 
$(top_builddir)\\$(_gir_source_path_msvc)\\,\\,$(_gir_files_raw_msvc))))
+
+# Create a list of items for:
+# - Libraries
+# - Packages
+# - GIRs to include
+# - packages to export
+
+_gir_libraries_msvc = $(foreach lib,$($(_gir_name)_MSVC_LIBS),--library=$(lib))
+_gir_packages_msvc = $(foreach pkg,$($(_gir_name)_MSVC_PACKAGES),--pkg=$(pkg))
+_gir_includes_msvc = $(foreach include,$($(_gir_name)_MSVC_INCLUDE_GIRS),--include=$(include))
+_gir_export_packages_msvc = $(foreach pkg,$($(_gir_name)_MSVC_EXPORT_PACKAGES),--pkg-export=$(pkg))
+
+#
+# Create NMake Makefile Sections for Building Introspection files
+# from autotools files
+# $(1) - File Name of the .gir that is to be generated
+#
+
+define gir-nmake-builder
+
+# Basic sanity check, to make sure required variables are set
+$(if $($(_gir_name)_MSVC_FILES),,$(error Need to define $(_gir_name)_MSVC_FILES))
+$(if $(or $(findstring --header-only,$($(_gir_name)_MSVC_SCANNERFLAGS)),
+          $($(_gir_name)_MSVC_LIBS),
+          $($(_gir_name)_MSVC_PROGRAM)),,
+    $(error Need to define $(_gir_name)_MSVC_LIBS or $(_gir_name)_MSVC_PROGRAM))
+
+$(top_builddir)/build/win32/$(_gir_name)_list:
+       for F in $(_gir_files_msvc); do \
+               case $$$$F in \
+               *.c|*.cpp|*.cc|*.cxx|*.h|*.hpp|*.hh|*.hxx) \
+                       echo '..\..'$(_gir_source_subdir_msvc)$$$$F 
$(top_builddir)/build/win32/$(_gir_name)_list \
+                       ;; \
+               esac; \
+       done
+
+$(top_builddir)/build/win32/$(1).msvc.introspect:
+       -$(RM) $(top_builddir)/build/win32/$(1).msvc.introspect
+
+# Assemble the Command to Run g-ir-scanner
+       echo $(1)': '$(_gir_name)'_list 
'$($(_gir_name)_MSVC_GIR_DEPS)>>$(top_builddir)/build/win32/$(1).msvc.introspect
+       echo '  @-echo Generating $$$$    '>>$(top_builddir)/build/win32/$(1).msvc.introspect
+       echo '  $$$$(PYTHON) $$$$(G_IR_SCANNER) \'>>$(top_builddir)/build/win32/$(1).msvc.introspect
+       echo '  --verbose -no-libtool   \'>>$(top_builddir)/build/win32/$(1).msvc.introspect
+       echo '  --namespace='$(_gir_namespace_msvc)'    \'>>$(top_builddir)/build/win32/$(1).msvc.introspect
+       echo '  --nsversion='$(_gir_version_msvc)'      \'>>$(top_builddir)/build/win32/$(1).msvc.introspect
+       echo '  '$(_gir_packages_msvc)' \'>>$(top_builddir)/build/win32/$(1).msvc.introspect
+       echo '  '$(_gir_libraries_msvc)'        \'>>$(top_builddir)/build/win32/$(1).msvc.introspect
+       echo '  '$(_gir_program_msvc)'  \'>>$(top_builddir)/build/win32/$(1).msvc.introspect
+       echo '  --add-include-path=$$$$(G_IR_INCLUDEDIR)        
\'>>$(top_builddir)/build/win32/$(1).msvc.introspect
+       echo '  '$(_gir_includes_msvc)' \'>>$(top_builddir)/build/win32/$(1).msvc.introspect
+       echo '  '$(_gir_export_packages_msvc)'  \'>>$(top_builddir)/build/win32/$(1).msvc.introspect
+       echo '  --cflags-begin  \'>>$(top_builddir)/build/win32/$(1).msvc.introspect
+       echo '  '$($(_gir_name)_MSVC_CFLAGS)'   \'>>$(top_builddir)/build/win32/$(1).msvc.introspect
+       echo '  --cflags-end    \'>>$(top_builddir)/build/win32/$(1).msvc.introspect
+       echo '  '$($(_gir_name)_MSVC_SCANNERFLAGS)'     \'>>$(top_builddir)/build/win32/$(1).msvc.introspect
+       echo '  --filelist='$(_gir_name)'_list  \'>>$(top_builddir)/build/win32/$(1).msvc.introspect
+       echo '  -o $$$$@'>>$(top_builddir)/build/win32/$(1).msvc.introspect
+       echo '' >>$(top_builddir)/build/win32/$(1).msvc.introspect
+
+# Finally Assemble the Command to Compile the generated .gir
+       echo '$(_typelib_basename_msvc).typelib: 
'$(_typelib_basename_msvc)'.gir'>>$(top_builddir)/build/win32/$(1).msvc.introspect
+       echo '  @-echo Compiling $$$$    '>>$(top_builddir)/build/win32/$(1).msvc.introspect
+       echo '  $$$$(G_IR_COMPILER)     \'>>$(top_builddir)/build/win32/$(1).msvc.introspect
+       echo '  --includedir=. --debug --verbose        \'>>$(top_builddir)/build/win32/$(1).msvc.introspect
+       echo '  '$(1)'  \'>>$(top_builddir)/build/win32/$(1).msvc.introspect
+       echo '  -o $$$$@'>>$(top_builddir)/build/win32/$(1).msvc.introspect
+       echo '' >>$(top_builddir)/build/win32/$(1).msvc.introspect
+endef
+
+$(foreach gir,$(MSVC_INTROSPECT_GIRS),$(eval $(call gir-nmake-builder,$(gir))))
diff --git a/build/win32/Makefile.am b/build/win32/Makefile.am
index f57ff06..9a28fa3 100644
--- a/build/win32/Makefile.am
+++ b/build/win32/Makefile.am
@@ -1,8 +1,39 @@
 include $(top_srcdir)/Makefile.decl
 
+if HAVE_INTROSPECTION
+GENERATED_ITEMS =              \
+       introspection.body.mak  \
+       Gdk_2_0_gir_list        \
+       Gtk_2_0_gir_list
+
+MSVC_INTROSPECTION_INTERMEDIATE_FILES = Gdk-2.0.gir.msvc.introspect Gtk-2.0.gir.msvc.introspect
+
+introspection.body.mak: $(MSVC_INTROSPECTION_INTERMEDIATE_FILES)
+       -$(RM) introspection.body.mak
+       for F in `ls *.msvc.introspect`; do \
+               case $$F in \
+                       *)      cat $(top_builddir)/build/win32/$$F >>introspection.body.mak \
+                       ;; \
+               esac; \
+       done
+       $(RM) $(MSVC_INTROSPECTION_INTERMEDIATE_FILES)
+
+DISTCLEANFILES = $(GENERATED_ITEMS)
+
+else
+GENERATED_ITEMS =
+DISTCLEANFILES =
+endif
+
 SUBDIRS =      \
        vs9     \
        vs10    \
        vs11    \
        vs12    \
        vs14
+
+EXTRA_DIST +=  \
+       detectenv-msvc.mak              \
+       introspection-msvc.mak          \
+       gtk-introspection-msvc.mak      \
+       $(GENERATED_ITEMS)
diff --git a/build/win32/detectenv-msvc.mak b/build/win32/detectenv-msvc.mak
new file mode 100644
index 0000000..61f979d
--- /dev/null
+++ b/build/win32/detectenv-msvc.mak
@@ -0,0 +1,76 @@
+# Common NMake Makefile module for checking the build environment
+# This can be copied from $(glib_srcroot)\build\win32 for GNOME items
+# that support MSVC builds and introspection under MSVC, and can be used
+# for building test programs as well.
+
+# Check to see we are configured to build with MSVC (MSDEVDIR, MSVCDIR or
+# VCINSTALLDIR) or with the MS Platform SDK (MSSDK or WindowsSDKDir)
+!if !defined(VCINSTALLDIR) && !defined(WINDOWSSDKDIR)
+MSG = ^
+This Makefile is only for Visual Studio 2008 and later.^
+You need to ensure that the Visual Studio Environment is properly set up^
+before running this Makefile.
+!error $(MSG)
+!endif
+
+ERRNUL  = 2>NUL
+_HASH=^#
+
+!if ![echo VCVERSION=_MSC_VER > vercl.x] \
+    && ![echo $(_HASH)if defined(_M_IX86) >> vercl.x] \
+    && ![echo PLAT=Win32 >> vercl.x] \
+    && ![echo $(_HASH)elif defined(_M_AMD64) >> vercl.x] \
+    && ![echo PLAT=x64 >> vercl.x] \
+    && ![echo $(_HASH)endif >> vercl.x] \
+    && ![cl -nologo -TC -P vercl.x $(ERRNUL)]
+!include vercl.i
+!if ![echo VCVER= ^\> vercl.vc] \
+    && ![set /a $(VCVERSION) / 100 - 6 >> vercl.vc]
+!include vercl.vc
+!endif
+!endif
+!if ![del $(ERRNUL) /q/f vercl.x vercl.i vercl.vc]
+!endif
+
+!if $(VCVERSION) > 1499 && $(VCVERSION) < 1600
+VSVER = 9
+!elseif $(VCVERSION) > 1599 && $(VCVERSION) < 1700
+VSVER = 10
+!elseif $(VCVERSION) > 1699 && $(VCVERSION) < 1800
+VSVER = 11
+!elseif $(VCVERSION) > 1799 && $(VCVERSION) < 1900
+VSVER = 12
+!elseif $(VCVERSION) > 1899 && $(VCVERSION) < 2000
+VSVER = 14
+!else
+VSVER = 0
+!endif
+
+!if "$(VSVER)" == "0"
+MSG = ^
+This NMake Makefile set supports Visual Studio^
+9 (2008) through 14 (2015).  Your Visual Studio^
+version is not supported.
+!error $(MSG)
+!endif
+
+VALID_CFGSET = FALSE
+!if "$(CFG)" == "release" || "$(CFG)" == "debug" || "$(CFG)" == "Release" || "$(CFG)" == "Debug"
+VALID_CFGSET = TRUE
+!endif
+
+# We want debugging symbols logged for all builds,
+# using .pdb files for release builds
+CFLAGS_BASE = /Zi
+
+!if "$(CFG)" == "release" || "$(CFG)" == "Release"
+CFLAGS_ADD = /MD /O2 $(CFLAGS_BASE)
+!else
+CFLAGS_ADD = /MDd /Od $(CFLAGS_BASE)
+!endif
+
+!if "$(PLAT)" == "x64"
+LDFLAGS_ARCH = /machine:x64
+!else
+LDFLAGS_ARCH = /machine:x86
+!endif
diff --git a/build/win32/gtk-introspection-msvc.mak b/build/win32/gtk-introspection-msvc.mak
new file mode 100644
index 0000000..e711b11
--- /dev/null
+++ b/build/win32/gtk-introspection-msvc.mak
@@ -0,0 +1,43 @@
+# NMake Makefile to build Introspection Files for GTK+
+
+!include detectenv-msvc.mak
+
+APIVERSION = 2.0
+
+CHECK_PACKAGE = gdk-pixbuf-2.0 atk pangocairo gio-2.0
+
+built_install_girs = Gdk-$(APIVERSION).gir Gtk-$(APIVERSION).gir
+built_install_typelibs = Gdk-$(APIVERSION).typelib Gtk-$(APIVERSION).typelib
+
+!include introspection-msvc.mak
+
+!if "$(BUILD_INTROSPECTION)" == "TRUE"
+
+!if "$(PLAT)" == "x64"
+AT_PLAT=x86_64
+!else
+AT_PLAT=i686
+!endif
+
+all: setgirbuildenv $(built_install_girs) $(built_install_typelibs)
+
+setgirbuildenv:
+       @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)
+
+!include introspection.body.mak
+
+install-introspection: all 
+       @-copy *.gir $(G_IR_INCLUDEDIR)
+       @-copy /b *.typelib $(G_IR_TYPELIBDIR)
+
+!else
+all:
+       @-echo $(ERROR_MSG)
+!endif
+
+clean:
+       @-del /f/q *.typelib
+       @-del /f/q *.gir
diff --git a/build/win32/introspection-msvc.mak b/build/win32/introspection-msvc.mak
new file mode 100644
index 0000000..8739844
--- /dev/null
+++ b/build/win32/introspection-msvc.mak
@@ -0,0 +1,94 @@
+# Common NMake Makefile module for checking the build environment is sane
+# for building introspection files under MSVC/NMake.
+# This can be copied from $(gi_srcroot)\build\win32 for GNOME items
+# that support MSVC builds and introspection under MSVC.
+
+# Can override with env vars as needed
+# You will need to have built gobject-introspection for this to work.
+# Change or pass in or set the following to suit your environment
+
+!if "$(PREFIX)" == ""
+PREFIX = ..\..\..\vs$(VSVER)\$(PLAT)
+!endif
+
+!if ![setlocal]                && \
+    ![set PFX=$(PREFIX)]       && \
+    ![for %P in (%PFX%) do @echo PREFIX_FULL=%~dpnfP > pfx.x]
+!endif
+!include pfx.x
+
+!if "$(PKG_CONFIG_PATH)" == ""
+PKG_CONFIG_PATH=$(PREFIX_FULL)\lib\pkgconfig
+!else
+PKG_CONFIG_PATH=$(PREFIX_FULL)\lib\pkgconfig;$(PKG_CONFIG_PATH)
+!endif
+
+!if ![del $(ERRNUL) /q/f pfx.x]
+!endif
+
+# Note: The PYTHON must be the Python release series that was used to build
+# the GObject-introspection scanner Python module!
+# Either having python.exe your PATH will work or passing in
+# PYTHON=<full path to your Python interpretor> will do
+
+# This is required, and gobject-introspection needs to be built
+# before this can be successfully run.
+!if "$(PYTHON)" == ""
+PYTHON=python
+!endif
+
+# Path to the pkg-config tool, if not already in the PATH
+!if "$(PKG_CONFIG)" == ""
+PKG_CONFIG=pkg-config
+!endif
+
+# Don't change anything following this line!
+
+GIR_SUBDIR = share\gir-1.0
+GIR_TYPELIBDIR = lib\girepository-1.0
+G_IR_SCANNER = $(PREFIX)\bin\g-ir-scanner
+G_IR_COMPILER = $(PREFIX)\bin\g-ir-compiler.exe
+G_IR_INCLUDEDIR = $(PREFIX)\$(GIR_SUBDIR)
+G_IR_TYPELIBDIR = $(PREFIX)\$(GIR_TYPELIBDIR)
+
+VALID_PKG_CONFIG_PATH = FALSE
+
+MSG_INVALID_PKGCONFIG = You must set or specifiy a valid PKG_CONFIG_PATH
+MSG_INVALID_CFG = You need to specify or set CFG to be release or debug to use this Makefile to build the 
Introspection Files
+
+ERROR_MSG =
+
+BUILD_INTROSPECTION = TRUE
+
+!if ![set PKG_CONFIG_PATH=$(PKG_CONFIG_PATH)]  \
+       && ![$(PKG_CONFIG) --print-errors --errors-to-stdout $(CHECK_PACKAGE) > pkgconfig.x]    \
+       && ![setlocal]  \
+       && ![set file="pkgconfig.x"]    \
+       && ![FOR %A IN (%file%) DO @echo PKG_CHECK_SIZE=%~zA > pkgconfig.chksize]       \
+       && ![del $(ERRNUL) /q/f pkgconfig.x]
+!endif
+
+!include pkgconfig.chksize
+!if "$(PKG_CHECK_SIZE)" == "0"
+VALID_PKG_CONFIG_PATH = TRUE
+!else
+VALID_PKG_CONFIG_PATH = FALSE
+!endif
+
+!if ![del $(ERRNUL) /q/f pkgconfig.chksize]
+!endif
+
+VALID_CFGSET = FALSE
+!if "$(CFG)" == "release" || "$(CFG)" == "debug" || "$(CFG)" == "Release" || "$(CFG)" == "Debug"
+VALID_CFGSET = TRUE
+!endif
+
+!if "$(VALID_PKG_CONFIG_PATH)" != "TRUE"
+BUILD_INTROSPECTION = FALSE
+ERROR_MSG = $(MSG_INVALID_PKGCONFIG)
+!endif
+
+!if "$(VALID_CFGSET)" != "TRUE"
+BUILD_INTROSPECTION = FALSE
+ERROR_MSG = $(MSG_INVALID_CFG)
+!endif
diff --git a/gdk/Makefile.am b/gdk/Makefile.am
index da1702f..170eed2 100644
--- a/gdk/Makefile.am
+++ b/gdk/Makefile.am
@@ -192,13 +192,15 @@ libgdk_win32_2_0_la_LDFLAGS = -Wl,win32/rc/gdk-win32-res.o -export-symbols $(src
 
 if HAVE_INTROSPECTION
 
-introspection_files =          \
+base_introspection_files =             \
        $(filter-out gdkkeysyms-compat.h, $(gdk_public_h_sources))      \
        $(gdk_c_sources)        \
        gdkkeynames.c           \
         gdkenumtypes.c         \
         gdkenumtypes.h
 
+introspection_files = $(base_introspection_files)
+
 Gdk-2.0.gir: $(gdktargetlib) Makefile
 Gdk_2_0_gir_SCANNERFLAGS = --c-include="gdk/gdk.h"
 Gdk_2_0_gir_INCLUDES = Gio-2.0 GdkPixbuf-2.0 Pango-1.0 cairo-1.0
@@ -384,7 +386,36 @@ gdk_HEADERS_EXCLUDES = gdkdummy
 
 include $(top_srcdir)/build/Makefile.msvcproj
 
-dist-hook: $(top_builddir)/build/win32/vs9/gdk.vcproj $(top_builddir)/build/win32/vs9/gdk.headers
+if HAVE_INTROSPECTION
+# Introspection Items for MSVC
+MSVC_INTROSPECT_GIRS = Gdk-2.0.gir
+
+BASE_MSVC_GIR_CFLAGS =                 \
+       -DG_LOG_DOMAIN=\"Gdk\"          \
+       -DGDK_COMPILATION               \
+       -I../.. -I../../gdk -I.../../gdk/win32
+
+INTROSPECTION_INTERMEDIATE_ITEMS = \
+       $(top_builddir)/build/win32/Gdk-2.0.gir.msvc.introspect \
+       $(top_builddir)/build/win32/Gdk_2_0_gir_list
+
+Gdk_2_0_gir_MSVC_FILES = $(filter-out gdkmedialib.c, $(base_introspection_files))
+Gdk_2_0_gir_MSVC_EXPORT_PACKAGES = $(Gdk_2_0_gir_EXPORT_PACKAGES)
+Gdk_2_0_gir_MSVC_INCLUDE_GIRS = $(Gdk_2_0_gir_INCLUDES)
+Gdk_2_0_gir_MSVC_LIBS = gdk-win32-2.0
+Gdk_2_0_gir_MSVC_CFLAGS = $(BASE_MSVC_GIR_CFLAGS)
+Gdk_2_0_gir_MSVC_SCANNERFLAGS = $(Gdk_2_0_gir_SCANNERFLAGS)
+
+include $(top_srcdir)/build/Makefile.msvc-introspection
+
+else
+INTROSPECTION_INTERMEDIATE_ITEMS =
+endif
+
+dist-hook:     \
+       $(top_builddir)/build/win32/vs9/gdk.vcproj      \
+       $(top_builddir)/build/win32/vs9/gdk.headers     \
+       $(INTROSPECTION_INTERMEDIATE_ITEMS)
 
 DISTCLEANFILES = gdkconfig.h stamp-gc-h
 
diff --git a/gtk/Makefile.am b/gtk/Makefile.am
index 747c9f1..8cc4536 100644
--- a/gtk/Makefile.am
+++ b/gtk/Makefile.am
@@ -33,25 +33,31 @@ endif
 endif
 endif
 
-INCLUDES =                                             \
+GTK_BASE_CFLAGS_DEFINES =                              \
        -DG_LOG_DOMAIN=\"Gtk\"                          \
+       -DGTK_VERSION=\"$(GTK_VERSION)\"                \
+       -DGTK_BINARY_VERSION=\"$(GTK_BINARY_VERSION)\"  \
+       -DGTK_COMPILATION                               \
+       -DGTK_DISABLE_DEPRECATED                        \
+       -DGTK_FILE_SYSTEM_ENABLE_UNSUPPORTED            \
+       -DGTK_PRINT_BACKEND_ENABLE_UNSUPPORTED
+
+GTK_PLAT_CFLAGS_DEFINES =                              \
        -DGTK_LIBDIR=\"$(libdir)\"                      \
        -DGTK_DATADIR=\"$(datadir)\"                    \
        -DGTK_DATA_PREFIX=\"$(prefix)\"                 \
        -DGTK_SYSCONFDIR=\"$(sysconfdir)\"              \
-       -DGTK_VERSION=\"$(GTK_VERSION)\"                \
-       -DGTK_BINARY_VERSION=\"$(GTK_BINARY_VERSION)\"  \
        -DGTK_HOST=\"$(host)\"                          \
-       -DGTK_COMPILATION                               \
        -DGTK_PRINT_BACKENDS=\"$(GTK_PRINT_BACKENDS)\"  \
-       -DGTK_PRINT_PREVIEW_COMMAND=\"$(GTK_PRINT_PREVIEW_COMMAND)\"    \
+       -DGTK_PRINT_PREVIEW_COMMAND=\"$(GTK_PRINT_PREVIEW_COMMAND)\"
+
+INCLUDES =                                             \
+       $(GTK_BASE_CFLAGS_DEFINES)                      \
+       $(GTK_PLAT_CFLAGS_DEFINES)                      \
        -I$(top_builddir)                               \
        -I$(top_builddir)/gtk                           \
        -I$(top_srcdir) -I../gdk                        \
        -I$(top_srcdir)/gdk                             \
-       -DGTK_DISABLE_DEPRECATED                        \
-       -DGTK_FILE_SYSTEM_ENABLE_UNSUPPORTED            \
-       -DGTK_PRINT_BACKEND_ENABLE_UNSUPPORTED          \
        $(GMODULE_CFLAGS)                               \
        $(GTK_DEBUG_FLAGS)                              \
        $(GTK_DEP_CFLAGS)                               \
@@ -957,7 +963,63 @@ gtk_HEADERS_EXCLUDES = gtkdummy
 
 include $(top_srcdir)/build/Makefile.msvcproj
 
-dist-hook: $(top_builddir)/build/win32/vs9/gtk.vcproj $(top_builddir)/build/win32/vs9/gtk.headers
+if HAVE_INTROSPECTION
+# Introspection Items for MSVC
+MSVC_INTROSPECT_GIRS = Gtk-2.0.gir
+
+GTK_MSVC_GIR_CFLAGS =                          \
+       $(GTK_BASE_CFLAGS_DEFINES)                              \
+       -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                       \
+       -UGDK_DISABLE_DEPRECATED                \
+       -UGTK_DISABLE_DEPRECATED                \
+       -DGTK_TEXT_USE_INTERNAL_UNSUPPORTED_API \
+       -I../.. -I../../gtk -I../../gdk
+
+INTROSPECTION_INTERMEDIATE_ITEMS = \
+       $(top_builddir)/build/win32/Gtk-2.0.gir.msvc.introspect         \
+       $(top_builddir)/build/win32/Gtk_2_0_gir_list
+
+Gtk_2_0_gir_MSVC_FILES =               \
+       $(gtkinclude_HEADERS)           \
+       $(gtk_base_c_sources)           \
+       $(gtk_os_win32_c_sources)       \
+       $(gtk_use_win32_c_sources)      \
+       gtktypebuiltins.h               \
+       gtktypebuiltins.c
+
+Gtk_2_0_gir_MSVC_EXPORT_PACKAGES = $(Gtk_2_0_gir_EXPORT_PACKAGES)
+Gtk_2_0_gir_MSVC_INCLUDE_GIRS = Atk-1.0
+Gtk_2_0_gir_MSVC_LIBS = gtk-win32-2.0 gdk-win32-2.0
+Gtk_2_0_gir_MSVC_CFLAGS = $(GTK_MSVC_GIR_CFLAGS)
+Gtk_2_0_gir_MSVC_SCANNERFLAGS = --warn-all --add-include-path=. --include-uninstalled=./Gdk-2.0.gir
+
+include $(top_srcdir)/build/Makefile.msvc-introspection
+
+else
+INTROSPECTION_INTERMEDIATE_ITEMS =
+
+endif
+
+dist-hook:     \
+       $(top_builddir)/build/win32/vs9/gtk.vcproj      \
+       $(top_builddir)/build/win32/vs9/gtk.headers     \
+       $(INTROSPECTION_INTERMEDIATE_ITEMS)
 
 # Install a RC file for the default GTK+ theme, and key themes
 install-data-local: install-ms-lib install-def-file install-mac-key-theme


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]