--- /dev/null
+#!/usr/bin/python\r
+#\r
+# Expand the bundled *.gir.in files\r
+# for use in Visual C++ builds of G-I\r
+#\r
+# Author: Fan, Chun-wei\r
+# Date: January 21, 2013\r
+#\r
+# (Adapted from setup.py in\r
+# $(glib_src_root)/build/win32/setup.py written by Shixin Zeng)\r
+\r
+import os\r
+import sys\r
+import re\r
+import string\r
+import subprocess\r
+import optparse\r
+\r
+def process_in(src, dest, vars):\r
+ RE_VARS = re.compile(r'%(\w+?)%')\r
+ with open(src, 'r') as s:\r
+ with open(dest, 'w') as d:\r
+ for i in s:\r
+ i = RE_VARS.sub(lambda x: str(vars[x.group(1)]), i)\r
+ d.write(i)\r
+\r
+def get_vsver(vsver):\r
+ return {\r
+ '9': '9',\r
+ '10': '10',\r
+ '11': '11',\r
+ '2008': '9',\r
+ '2010': '10',\r
+ '2012': '11',\r
+ }.get(vsver, '0')\r
+\r
+def parent_dir(path):\r
+ if not os.path.isabs(path):\r
+ path = os.path.abspath(path)\r
+ if os.path.isfile(path):\r
+ path = os.path.dirname(path)\r
+ return os.path.split(path)[0]\r
+\r
+def setup_vars_cairo(src, dest, vsver):\r
+ vars = {}\r
+ vars['CAIRO_GIR_PACKAGE'] = 'cairo-gobject'\r
+ vars['CAIRO_SHARED_LIBRARY'] = '%s-vs%s.dll' % (vars['CAIRO_GIR_PACKAGE'], vsver)\r
+ process_in (src, dest, vars)\r
+\r
+def main(argv):\r
+ parser = optparse.OptionParser()\r
+ parser.add_option('--vsver', dest='vsver', action='store', help='Version of Visual Studio used, 9 or 2008 for VS 2008, 10 or 2010 for VS2010, 11 or 2012 for VS2012')\r
+ opt, args = parser.parse_args(argv)\r
+ if opt.vsver is None:\r
+ print ('vsver must be specified. Please use %s -h to see the valid values' % os.path.basename(__file__))\r
+ sys.exit()\r
+ vsver = get_vsver(opt.vsver)\r
+ if vsver is '0':\r
+ print ('You must specify a valid vsver. Please use %s -h to see the valid values' % os.path.basename(__file__))\r
+ sys.exit()\r
+\r
+ # Get the srcroot and the path where the bundled .gir files reside in the package\r
+ srcroot = parent_dir(parent_dir(__file__))\r
+ preset_gir_path = os.path.join(srcroot, 'gir')\r
+\r
+ # Set up variables in cairo-1.0.gir.in to produce cairo-1.0.gir\r
+ setup_vars_cairo(os.path.join(preset_gir_path, 'cairo-1.0.gir.in'),\r
+ os.path.join(preset_gir_path, 'cairo-1.0.gir'),\r
+ vsver)\r
+\r
+if __name__ == '__main__':\r
+ sys.exit(main(sys.argv))\r