summaryrefslogtreecommitdiff
path: root/build
diff options
context:
space:
mode:
Diffstat (limited to 'build')
-rw-r--r--build/Makefile.am10
-rw-r--r--build/atk-introspection-msvc.mak50
-rw-r--r--build/gen-file-list-atk.py35
-rw-r--r--build/introspection-msvc.mak65
-rw-r--r--build/msvcfiles.py254
-rw-r--r--build/win32/Makefile.am29
-rw-r--r--build/win32/atk-introspection-msvc.mak34
-rw-r--r--build/win32/detectenv-msvc.mak (renamed from build/detectenv-msvc.mak)28
-rw-r--r--build/win32/introspection-msvc.mak94
9 files changed, 173 insertions, 426 deletions
diff --git a/build/Makefile.am b/build/Makefile.am
index 583966b..f5bfe80 100644
--- a/build/Makefile.am
+++ b/build/Makefile.am
@@ -1,10 +1,2 @@
-SUBDIRS = \
- win32
-
-EXTRA_DIST = \
- msvcfiles.py \
- detectenv-msvc.mak \
- introspection-msvc.mak \
- atk-introspection-msvc.mak \
- gen-file-list-atk.py
+SUBDIRS = win32
diff --git a/build/atk-introspection-msvc.mak b/build/atk-introspection-msvc.mak
deleted file mode 100644
index 0824216..0000000
--- a/build/atk-introspection-msvc.mak
+++ /dev/null
@@ -1,50 +0,0 @@
-# NMake Makefile to build Introspection Files for ATK
-
-!include detectenv-msvc.mak
-
-APIVERSION = 1.0
-
-CHECK_PACKAGE = gobject-2.0
-
-!include introspection-msvc.mak
-
-!if "$(BUILD_INTROSPECTION)" == "TRUE"
-all: Atk-$(APIVERSION).gir Atk-$(APIVERSION).typelib
-
-atk_list:
- @-echo Generating Filelist to Introspect for ATK...
- $(PYTHON2) gen-file-list-atk.py
-
-Atk-$(APIVERSION).gir: atk_list
- @-echo Generating Atk-$(APIVERSION).gir...
- @set CC=$(CC)
- @set PYTHONPATH=$(BASEDIR)\lib\gobject-introspection
- @set PATH=win32\vs$(VSVER)\$(CFG)\$(PLAT)\bin;$(BASEDIR)\bin;$(PATH)
- @set PKG_CONFIG_PATH=$(PKG_CONFIG_PATH)
- @set LIB=win32\vs$(VSVER)\$(CFG)\$(PLAT)\bin;$(BASEDIR)\lib;$(LIB)
- $(PYTHON2) $(G_IR_SCANNER) --verbose -I.. --add-include-path=.. \
- --namespace=Atk --nsversion=$(APIVERSION) --include=GObject-2.0 \
- --no-libtool --pkg=glib-2.0 --library=atk-1.0 \
- --reparse-validate --add-include-path=$(G_IR_INCLUDEDIR) \
- --pkg-export atk --warn-all --c-include "atk/atk.h" \
- -DATK_DISABLE_DEPRECATED -DATK_COMPILATION -DATK_LOCALEDIR=\"/dummy/share/locale\" \
- --filelist=atk_list -o Atk-$(APIVERSION).gir
-
-Atk-$(APIVERSION).typelib: Atk-$(APIVERSION).gir
- @-echo Compiling Atk-$(APIVERSION).typelib...
- $(G_IR_COMPILER) --includedir=. --debug --verbose Atk-1.0.gir -o Atk-1.0.typelib
-
-install-introspection: Atk-$(APIVERSION).gir Atk-$(APIVERSION).typelib
- @-copy Atk-$(APIVERSION).gir $(G_IR_INCLUDEDIR)
- @-copy /b Atk-$(APIVERSION).typelib $(G_IR_TYPELIBDIR)
-
-!else
-all:
- @-echo $(ERROR_MSG)
-!endif
-
-clean:
- @-del /f/q Atk-$(APIVERSION).typelib
- @-del /f/q Atk-$(APIVERSION).gir
- @-del /f/q atk_list
- @-del /f/q *.pyc
diff --git a/build/gen-file-list-atk.py b/build/gen-file-list-atk.py
deleted file mode 100644
index f008022..0000000
--- a/build/gen-file-list-atk.py
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/usr/bin/python
-# vim: encoding=utf-8
-# Generate the file lists for processing with g-ir-scanner
-import os
-import sys
-import re
-import string
-import subprocess
-import optparse
-
-from msvcfiles import read_vars_from_AM
-
-def gen_atk_filelist(srcroot, subdir, dest):
- vars = read_vars_from_AM(os.path.join(srcroot, subdir, 'Makefile.am'),
- vars = {'top_builddir':'.'},
- conds = {'HAVE_INTROSPECTION':True},
- filters = ['introspection_sources', 'introspection_generated_sources'])
-
- files = vars['introspection_sources'].split() + \
- vars['introspection_generated_sources'].split()
-
- with open(dest, 'w') as d:
- for i in files:
- if (i.startswith('./atk/')):
- i = i.replace('./atk/','')
- d.write(srcroot + '\\' + subdir + '\\' + i.replace('/', '\\') + '\n')
-
-def main(argv):
- srcroot = os.path.join('..')
- subdir = 'atk'
- gen_atk_filelist(srcroot, subdir, 'atk_list')
- return 0
-
-if __name__ == '__main__':
- sys.exit(main(sys.argv))
diff --git a/build/introspection-msvc.mak b/build/introspection-msvc.mak
deleted file mode 100644
index 55eec45..0000000
--- a/build/introspection-msvc.mak
+++ /dev/null
@@ -1,65 +0,0 @@
-# Common Utility NMake Makefile Template
-# Used to Generate Introspection files for various Projects
-
-# 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
-
-BASEDIR = ..\..\vs$(VSVER)\$(PLAT)
-GIR_SUBDIR = share\gir-1.0
-GIR_TYPELIBDIR = lib\girepository-1.0
-G_IR_SCANNER = $(BASEDIR)\bin\g-ir-scanner
-G_IR_COMPILER = $(BASEDIR)\bin\g-ir-compiler.exe
-G_IR_INCLUDEDIR = $(BASEDIR)\$(GIR_SUBDIR)
-G_IR_TYPELIBDIR = $(BASEDIR)\$(GIR_TYPELIBDIR)
-
-# Note: The PYTHON2 must be a Python 2.6.x or 2.7.x Interpretor!
-# Either having python.exe from Python 2.6.x/2.7.x in your PATH will work
-# or passing in PYTHON2=<full path to your Python 2.6.x/2.7.x interpretor> will do
-
-# This is required, and gobject-introspection needs to be built
-# before this can be successfully run.
-PYTHON2=python
-
-# Don't change anything following this line!
-VALID_PKG_CONFIG_PATH = FALSE
-VALID_GCC_INSTPATH = 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 ![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"
-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/build/msvcfiles.py b/build/msvcfiles.py
deleted file mode 100644
index 05957ac..0000000
--- a/build/msvcfiles.py
+++ /dev/null
@@ -1,254 +0,0 @@
-#!/usr/bin/python
-# vim: encoding=utf-8
-#expand *.in files
-import os
-import sys
-import re
-import optparse
-
-def parent_dir(path):
- if not os.path.isabs(path):
- path = os.path.abspath(path)
- if os.path.isfile(path):
- path = os.path.dirname(path)
- return os.path.split(path)[0]
-
-def check_output_type (btype):
- print_bad_type = False
- output_type = -1
- if (btype is None):
- output_type = -1
- print_bad_type = False
- elif (btype == "vs9"):
- output_type = 1
- elif (btype == "vs10"):
- output_type = 2
- elif (btype == "nmake-exe"):
- output_type = 3
- else:
- output_type = -1
- print_bad_type = True
- if (output_type == -1):
- if (print_bad_type is True):
- print ("The entered output build file type '%s' is not valid" % btype)
- else:
- print ("Output build file type is not specified.\nUse -t <type> to specify the output build file type.")
- print ("Valid output build file types are: nmake-exe, vs9 , vs10")
- return output_type
-
-def read_vars_from_AM(path, vars = {}, conds = {}, filters = None):
- '''
- path: path to the Makefile.am
- vars: predefined variables
- conds: condition variables for Makefile
- filters: if None, all variables defined are returned,
- otherwise, it is a list contains that variables should be returned
- '''
- cur_vars = vars.copy()
- RE_AM_VAR_REF = re.compile(r'\$\((\w+?)\)')
- RE_AM_VAR = re.compile(r'^\s*(\w+)\s*=(.*)$')
- RE_AM_INCLUDE = re.compile(r'^\s*include\s+(\w+)')
- RE_AM_VAR_ADD = re.compile(r'^\s*(\w+)\s*\+=(.*)$')
- RE_AM_CONTINUING = re.compile(r'\\\s*$')
- RE_AM_IF = re.compile(r'^\s*if\s+(\w+)')
- RE_AM_ELSE = re.compile(r'^\s*else')
- RE_AM_ENDIF = re.compile(r'^\s*endif')
- def am_eval(cont):
- return RE_AM_VAR_REF.sub(lambda x: cur_vars.get(x.group(1), ''), cont)
- with open(path, 'r') as f:
- contents = f.readlines()
- #combine continuing lines
- i = 0
- ncont = []
- while i < len(contents):
- line = contents[i]
- if RE_AM_CONTINUING.search(line):
- line = RE_AM_CONTINUING.sub('', line)
- j = i + 1
- while j < len(contents) and RE_AM_CONTINUING.search(contents[j]):
- line += RE_AM_CONTINUING.sub('', contents[j])
- j += 1
- else:
- if j < len(contents):
- line += contents[j]
- i = j
- else:
- i += 1
- ncont.append(line)
-
- #include, var define, var evaluation
- i = -1
- skip = False
- oldskip = []
- while i < len(ncont) - 1:
- i += 1
- line = ncont[i]
- mo = RE_AM_IF.search(line)
- if mo:
- oldskip.append(skip)
- skip = False if mo.group(1) in conds and conds[mo.group(1)] \
- else True
- continue
- mo = RE_AM_ELSE.search(line)
- if mo:
- skip = not skip
- continue
- mo = RE_AM_ENDIF.search(line)
- if mo:
- if oldskip:
- skip = oldskip.pop()
- continue
- if not skip:
- mo = RE_AM_INCLUDE.search(line)
- if mo:
- cur_vars.update(read_vars_from_AM(am_eval(mo.group(1)), cur_vars, conds, None))
- continue
- mo = RE_AM_VAR.search(line)
- if mo:
- cur_vars[mo.group(1)] = am_eval(mo.group(2).strip())
- continue
- mo = RE_AM_VAR_ADD.search(line)
- if mo:
- try:
- cur_vars[mo.group(1)] += ' '
- except KeyError:
- cur_vars[mo.group(1)] = ''
- cur_vars[mo.group(1)] += am_eval(mo.group(2).strip())
- continue
-
- #filter:
- if filters != None:
- ret = {}
- for i in filters:
- ret[i] = cur_vars.get(i, '')
- return ret
- else:
- return cur_vars
-
-def process_include(src, dest, includes):
- RE_INCLUDE = re.compile(r'^\s*#include\s+"(.*)"')
- with open(src, 'r') as s:
- with open(dest, 'w') as d:
- for i in s:
- mo = RE_INCLUDE.search(i)
- if mo:
- target = ''
- for j in includes:
- #print "searching in ", j
- if mo.group(1) in os.listdir(j):
- target = os.path.join(j, mo.group(1))
- break
- if not target:
- raise Exception("Couldn't find include file %s" % mo.group(1))
- else:
- with open(target, 'r') as t:
- for inc in t.readlines():
- d.write(inc)
- else:
- d.write(i)
-
-#Generate the source files listing that is used
-def generate_src_list (srcroot, srcdir, filters_src, filter_conds, filter_c, mk_am_file):
- mkfile = ''
- if mk_am_file is None or mk_am_file == '':
- mkfile = 'Makefile.am'
- else:
- mkfile = mk_am_file
- vars = read_vars_from_AM(os.path.join(srcdir, mkfile),
- vars = {'top_srcdir': srcroot},
- conds = filter_conds,
- filters = filters_src)
- files = []
- for src_filters_item in filters_src:
- files += vars[src_filters_item].split()
- if filter_c is True:
- sources = [i for i in files if i.endswith('.c') ]
- return sources
- else:
- return files
-
-# Generate the Visual Studio 2008 Project Files from the templates
-def gen_vs9_project (projname, srcroot, srcdir_name, sources_list):
- vs_file_list_dir = os.path.join (srcroot, 'build', 'win32')
-
- with open (os.path.join (vs_file_list_dir,
- projname + '.sourcefiles'), 'w') as vs9srclist:
- for i in sources_list:
- vs9srclist.write ('\t\t\t<File RelativePath="..\\..\\..\\' + srcdir_name + '\\' + i.replace('/', '\\') + '" />\n')
-
- process_include (os.path.join(srcroot, 'build', 'win32', 'vs9', projname + '.vcprojin'),
- os.path.join(srcroot, 'build', 'win32', 'vs9', projname + '.vcproj'),
- includes = [vs_file_list_dir])
-
- os.unlink(os.path.join(srcroot, 'build', 'win32', projname + '.sourcefiles'))
-
-# Generate the Visual Studio 2010 Project Files from the templates
-def gen_vs10_project (projname, srcroot, srcdir_name, sources_list):
- vs_file_list_dir = os.path.join (srcroot, 'build', 'win32')
-
- with open (os.path.join (vs_file_list_dir,
- projname + '.vs10.sourcefiles'), 'w') as vs10srclist:
- for j in sources_list:
- vs10srclist.write (' <ClCompile Include="..\\..\\..\\' + srcdir_name + '\\' + j.replace('/', '\\') + '" />\n')
-
- with open (os.path.join (vs_file_list_dir,
- projname + '.vs10.sourcefiles.filters'), 'w') as vs10srclist_filter:
- for k in sources_list:
- vs10srclist_filter.write (' <ClCompile Include="..\\..\\..\\' + srcdir_name + '\\' + k.replace('/', '\\') + '"><Filter>Source Files</Filter></ClCompile>\n')
-
- process_include (os.path.join(srcroot, 'build', 'win32', 'vs10', projname + '.vcxprojin'),
- os.path.join(srcroot, 'build', 'win32', 'vs10', projname + '.vcxproj'),
- includes = [vs_file_list_dir])
- process_include (os.path.join(srcroot, 'build', 'win32', 'vs10', projname + '.vcxproj.filtersin'),
- os.path.join(srcroot, 'build', 'win32', 'vs10', projname + '.vcxproj.filters'),
- includes = [vs_file_list_dir])
-
- os.unlink(os.path.join(srcroot, 'build', 'win32', projname + '.vs10.sourcefiles'))
- os.unlink(os.path.join(srcroot, 'build', 'win32', projname + '.vs10.sourcefiles.filters'))
-
-def gen_vs_inst_list (projname, srcroot, srcdirs, inst_lists, destdir_names, isVS9):
- vs_file_list_dir = os.path.join (srcroot, 'build', 'win32')
- vsver = ''
- vsprops_line_ending = ''
- vsprops_file_ext = ''
- if isVS9 is True:
- vsver = '9'
- vsprops_line_ending = '&#x0D;&#x0A;\n'
- vsprops_file_ext = '.vsprops'
- else:
- vsver = '10'
- vsprops_line_ending = '\n\n'
- vsprops_file_ext = '.props'
-
- with open (os.path.join (vs_file_list_dir,
- projname + '.vs' + vsver + 'instfiles'), 'w') as vsinstlist:
-
- for file_list, srcdir, dir_name in zip (inst_lists, srcdirs, destdir_names):
- for i in file_list:
- vsinstlist.write ('copy ..\\..\\..\\' +
- srcdir + '\\' +
- i.replace ('/', '\\') +
- ' $(CopyDir)\\' +
- dir_name +
- vsprops_line_ending)
- process_include (os.path.join(srcroot, 'build', 'win32', 'vs' + vsver, projname + '-install' + vsprops_file_ext + 'in'),
- os.path.join(srcroot, 'build', 'win32', 'vs' + vsver, projname + '-install' + vsprops_file_ext),
- includes = [vs_file_list_dir])
-
- os.unlink(os.path.join (vs_file_list_dir, projname + '.vs' + vsver + 'instfiles'))
-
-def generate_nmake_makefiles(srcroot, srcdir, base_name, makefile_name, progs_list):
- file_list_dir = os.path.join (srcroot, 'build', 'win32')
-
- with open (os.path.join (file_list_dir,
- base_name + '_progs'), 'w') as proglist:
- for i in progs_list:
- proglist.write ('\t' + i + '$(EXEEXT)\t\\\n')
-
-
- process_include (os.path.join(srcdir, makefile_name + 'in'),
- os.path.join(srcdir, makefile_name),
- includes = [file_list_dir])
-
- os.unlink(os.path.join (file_list_dir, base_name + '_progs'))
-
diff --git a/build/win32/Makefile.am b/build/win32/Makefile.am
index 897dc8b..39eca58 100644
--- a/build/win32/Makefile.am
+++ b/build/win32/Makefile.am
@@ -1,6 +1,33 @@
-SUBDIRS = \
+if HAVE_INTROSPECTION
+GENERATED_ITEMS = \
+ introspection.body.mak \
+ Atk_1_0_gir_list
+
+introspection.body.mak: Atk-1.0.gir.msvc.introspect
+ -$(RM) introspection.body.mak
+ for F in `ls *.msvc.introspect`; do \
+ case $$F in \
+ *) cat $(top_builddir)/build/win32/$$F >>$@ \
+ ;; \
+ esac; \
+ done
+ $(RM) Atk-1.0.gir.msvc.introspect
+
+DISTCLEANFILES = $(GENERATED_ITEMS)
+
+else
+GENERATED_ITEMS =
+endif
+
+SUBDIRS = \
vs9 \
vs10 \
vs11 \
vs12 \
vs14
+
+EXTRA_DIST = \
+ detectenv-msvc.mak \
+ introspection-msvc.mak \
+ atk-introspection-msvc.mak \
+ $(GENERATED_ITEMS)
diff --git a/build/win32/atk-introspection-msvc.mak b/build/win32/atk-introspection-msvc.mak
new file mode 100644
index 0000000..8bc734f
--- /dev/null
+++ b/build/win32/atk-introspection-msvc.mak
@@ -0,0 +1,34 @@
+# NMake Makefile to build Introspection Files for ATK
+
+!include detectenv-msvc.mak
+
+APIVERSION = 1.0
+
+CHECK_PACKAGE = gobject-2.0
+
+!include introspection-msvc.mak
+
+!if "$(BUILD_INTROSPECTION)" == "TRUE"
+all: setgirbuildenv Atk-$(APIVERSION).gir Atk-$(APIVERSION).typelib
+
+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 Atk-$(APIVERSION).gir $(G_IR_INCLUDEDIR)
+ @-copy /b Atk-$(APIVERSION).typelib $(G_IR_TYPELIBDIR)
+
+!else
+all:
+ @-echo $(ERROR_MSG)
+!endif
+
+clean:
+ @-del /f/q Atk-$(APIVERSION).typelib
+ @-del /f/q Atk-$(APIVERSION).gir
+ @-del /f/q *.pyc
diff --git a/build/detectenv-msvc.mak b/build/win32/detectenv-msvc.mak
index 06c908e..61f979d 100644
--- a/build/detectenv-msvc.mak
+++ b/build/win32/detectenv-msvc.mak
@@ -1,3 +1,8 @@
+# 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)
@@ -35,6 +40,8 @@ VSVER = 10
VSVER = 11
!elseif $(VCVERSION) > 1799 && $(VCVERSION) < 1900
VSVER = 12
+!elseif $(VCVERSION) > 1899 && $(VCVERSION) < 2000
+VSVER = 14
!else
VSVER = 0
!endif
@@ -42,20 +49,24 @@ VSVER = 0
!if "$(VSVER)" == "0"
MSG = ^
This NMake Makefile set supports Visual Studio^
-9 (2008) through 12 (2013). Your 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"
+!if "$(CFG)" == "release" || "$(CFG)" == "debug" || "$(CFG)" == "Release" || "$(CFG)" == "Debug"
VALID_CFGSET = TRUE
!endif
-!if "$(CFG)" == "release"
-CFLAGS_ADD = /MD /O2
+# 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 /Zi
+CFLAGS_ADD = /MDd /Od $(CFLAGS_BASE)
!endif
!if "$(PLAT)" == "x64"
@@ -63,10 +74,3 @@ LDFLAGS_ARCH = /machine:x64
!else
LDFLAGS_ARCH = /machine:x86
!endif
-
-LD = link.exe
-LD_CFLAGS = /link
-EXEEXT = .exe
-GLIB_LIBS = gobject-2.0.lib gmodule-2.0.lib glib-2.0.lib
-
-ATK_API_VERSION = 1.0
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