summaryrefslogtreecommitdiff
path: root/build/gen-cairo-gir.py
diff options
context:
space:
mode:
Diffstat (limited to 'build/gen-cairo-gir.py')
-rw-r--r--build/gen-cairo-gir.py59
1 files changed, 59 insertions, 0 deletions
diff --git a/build/gen-cairo-gir.py b/build/gen-cairo-gir.py
new file mode 100644
index 00000000..a4b4fff4
--- /dev/null
+++ b/build/gen-cairo-gir.py
@@ -0,0 +1,59 @@
+#!/usr/bin/python
+#
+# Expand the bundled cairo-1.0.gir.in files
+# for use in Visual C++ builds of G-I
+#
+# Author: Fan, Chun-wei
+# Date: January 20, 2014
+#
+# (Adapted from setup.py in
+# $(glib_src_root)/build/win32/setup.py written by Shixin Zeng)
+
+import os
+import sys
+import re
+import string
+import subprocess
+import optparse
+
+def process_in(src, dest, vars):
+ RE_VARS = re.compile(r'%(\w+?)%')
+ with open(src, 'r') as s:
+ with open(dest, 'w') as d:
+ for i in s:
+ i = RE_VARS.sub(lambda x: str(vars[x.group(1)]), i)
+ d.write(i)
+
+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 setup_vars_cairo(src, dest, dllname):
+ vars = {}
+ vars['CAIRO_GIR_PACKAGE'] = 'cairo-gobject'
+ vars['CAIRO_SHARED_LIBRARY'] = '%s' % dllname
+ process_in (src, dest, vars)
+
+def main(argv):
+ parser = optparse.OptionParser()
+ parser.add_option('--dllname', dest='dllname', action='store', help='Full file name of the Cairo-GObject DLL for the Cairo Introspection File')
+ 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')
+ opt, args = parser.parse_args(argv)
+ if opt.dllname is None:
+ print ('dllname must be specified. Please refer to %s -h for more information' % os.path.basename(__file__))
+ sys.exit()
+
+ # Get the srcroot and the path where the bundled .gir files reside in the package
+ srcroot = parent_dir(__file__)
+ preset_gir_path = os.path.join(srcroot, 'gir')
+
+ # Set up variables in cairo-1.0.gir.in to produce cairo-1.0.gir
+ setup_vars_cairo(os.path.join(preset_gir_path, 'cairo-1.0.gir.in'),
+ os.path.join(preset_gir_path, 'cairo-1.0.gir'),
+ opt.dllname)
+
+if __name__ == '__main__':
+ sys.exit(main(sys.argv))