summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChun-wei Fan <fanchunwei@src.gnome.org>2017-03-09 16:46:29 +0800
committerChun-wei Fan <fanchunwei@src.gnome.org>2017-03-09 16:46:29 +0800
commit6e1b26b78510e52b5546feb37f1fa8c1b324e7ab (patch)
tree2d029a6e3ab30ac3671c59fd3a11e141bf2ac9c9
parente7b0e744e2dd60585452c510563800012fae7828 (diff)
downloadlibsoup-6e1b26b78510e52b5546feb37f1fa8c1b324e7ab.tar.gz
Visual Studio builds: Add scripts to generate .pc files
This adds scripts to generate the .pc files that are suitable for use on Visual Studio builds, which will become useful when one wants to: -Generate introspection files on items that depend on libsoup. -Using libsoup in build systems such as Meson. Integration with the Visual Studio projects will be added shortly.
-rw-r--r--win32/Makefile.am2
-rw-r--r--win32/pc_base.py124
-rw-r--r--win32/souppc.py32
3 files changed, 158 insertions, 0 deletions
diff --git a/win32/Makefile.am b/win32/Makefile.am
index f13ab339..e1d5759d 100644
--- a/win32/Makefile.am
+++ b/win32/Makefile.am
@@ -25,7 +25,9 @@ GENERATED_ITEMS =
endif
EXTRA_DIST = \
+ pc_base.py \
replace.py \
+ souppc.py \
soup_version_h.py \
detectenv-msvc.mak \
introspection-msvc.mak \
diff --git a/win32/pc_base.py b/win32/pc_base.py
new file mode 100644
index 00000000..f7976e8d
--- /dev/null
+++ b/win32/pc_base.py
@@ -0,0 +1,124 @@
+#!/usr/bin/python
+#
+# Simple utility script to generate the basic info
+# needed in a .pc (pkg-config) file, used especially
+# for introspection purposes
+
+# This can be used in various projects where
+# there is the need to generate .pc files,
+# and is copied from GLib's $(srcroot)/win32
+
+# Author: Fan, Chun-wei
+# Date: March 10, 2016
+
+import os
+import sys
+import argparse
+
+class BasePCItems:
+ def __init__(self):
+ self.base_replace_items = {}
+ self.exec_prefix = ''
+ self.includedir = ''
+ self.libdir = ''
+ self.prefix = ''
+ self.srcdir = os.path.dirname(__file__)
+ self.top_srcdir = self.srcdir + '\\..'
+ self.version = ''
+
+ def setup(self, argv, parser=None):
+ if parser is None:
+ parser = argparse.ArgumentParser(description='Setup basic .pc file info')
+ parser.add_argument('--prefix', help='prefix of the installed library',
+ required=True)
+ parser.add_argument('--exec-prefix',
+ help='prefix of the installed programs, \
+ if different from the prefix')
+ parser.add_argument('--includedir',
+ help='includedir of the installed library, \
+ if different from ${prefix}/include')
+ parser.add_argument('--libdir',
+ help='libdir of the installed library, \
+ if different from ${prefix}/lib')
+ parser.add_argument('--version', help='Version of the package',
+ required=True)
+ args = parser.parse_args()
+
+ self.version = args.version
+
+ # check whether the prefix and exec_prefix are valid
+ if not os.path.exists(args.prefix):
+ raise SystemExit('Specified prefix \'%s\' is invalid' % args.prefix)
+
+ # use absolute paths for prefix
+ self.prefix = os.path.abspath(args.prefix).replace('\\','/')
+
+ # check and setup the exec_prefix
+ if getattr(args, 'exec_prefix', None) is None:
+ exec_prefix_use_shorthand = True
+ self.exec_prefix = '${prefix}'
+ else:
+ if args.exec_prefix.startswith('${prefix}'):
+ exec_prefix_use_shorthand = True
+ input_exec_prefix = args.prefix + args.exec_prefix[len('${prefix}'):]
+ else:
+ exec_prefix_use_shorthand = False
+ input_exec_prefix = args.exec_prefix
+ if not os.path.exists(input_exec_prefix):
+ raise SystemExit('Specified exec_prefix \'%s\' is invalid' %
+ args.exec_prefix)
+ if exec_prefix_use_shorthand is True:
+ self.exec_prefix = args.exec_prefix.replace('\\','/')
+ else:
+ self.exec_prefix = os.path.abspath(input_exec_prefix).replace('\\','/')
+
+ # check and setup the includedir
+ if getattr(args, 'includedir', None) is None:
+ self.includedir = '${prefix}/include'
+ else:
+ if args.includedir.startswith('${prefix}'):
+ includedir_use_shorthand = True
+ input_includedir = args.prefix + args.includedir[len('${prefix}'):]
+ else:
+ if args.includedir.startswith('${exec_prefix}'):
+ includedir_use_shorthand = True
+ input_includedir = input_exec_prefix + args.includedir[len('${exec_prefix}'):]
+ else:
+ includedir_use_shorthand = False
+ input_includedir = args.includedir
+ if not os.path.exists(input_includedir):
+ raise SystemExit('Specified includedir \'%s\' is invalid' %
+ args.includedir)
+ if includedir_use_shorthand is True:
+ self.includedir = args.includedir.replace('\\','/')
+ else:
+ self.includedir = os.path.abspath(input_includedir).replace('\\','/')
+
+ # check and setup the libdir
+ if getattr(args, 'libdir', None) is None:
+ self.libdir = '${prefix}/lib'
+ else:
+ if args.libdir.startswith('${prefix}'):
+ libdir_use_shorthand = True
+ input_libdir = args.prefix + args.libdir[len('${prefix}'):]
+ else:
+ if args.libdir.startswith('${exec_prefix}'):
+ libdir_use_shorthand = True
+ input_libdir = input_exec_prefix + args.libdir[len('${exec_prefix}'):]
+ else:
+ libdir_use_shorthand = False
+ input_libdir = args.libdir
+ if not os.path.exists(input_libdir):
+ raise SystemExit('Specified libdir \'%s\' is invalid' %
+ args.libdir)
+ if libdir_use_shorthand is True:
+ self.libdir = args.libdir.replace('\\','/')
+ else:
+ self.libdir = os.path.abspath(input_libdir).replace('\\','/')
+
+ # setup dictionary for replacing items in *.pc.in
+ self.base_replace_items.update({'@VERSION@': self.version})
+ self.base_replace_items.update({'@prefix@': self.prefix})
+ self.base_replace_items.update({'@exec_prefix@': self.exec_prefix})
+ self.base_replace_items.update({'@libdir@': self.libdir})
+ self.base_replace_items.update({'@includedir@': self.includedir})
diff --git a/win32/souppc.py b/win32/souppc.py
new file mode 100644
index 00000000..e5e85e84
--- /dev/null
+++ b/win32/souppc.py
@@ -0,0 +1,32 @@
+#!/usr/bin/python
+#
+# Utility script to generate .pc files for libsoup
+# for Visual Studio builds, to be used for
+# building introspection files
+
+# Author: Fan, Chun-wei
+# Date: March 10, 2016
+
+import os
+import sys
+
+from replace import replace_multi
+from pc_base import BasePCItems
+
+def main(argv):
+ base_pc = BasePCItems()
+
+ base_pc.setup(argv)
+
+ # Generate libsoup-2.4.pc
+ replace_multi(base_pc.top_srcdir + '/libsoup-2.4.pc.in',
+ base_pc.srcdir + '/libsoup-2.4.pc',
+ base_pc.base_replace_items)
+
+ # Generate libsoup-gnome-2.4.pc
+ replace_multi(base_pc.top_srcdir + '/libsoup-gnome-2.4.pc.in',
+ base_pc.srcdir + '/libsoup-gnome-2.4.pc',
+ base_pc.base_replace_items)
+
+if __name__ == '__main__':
+ sys.exit(main(sys.argv))