diff options
author | Chun-wei Fan <fanchunwei@src.gnome.org> | 2017-03-13 15:54:21 +0800 |
---|---|---|
committer | Chun-wei Fan <fanchunwei@src.gnome.org> | 2017-03-13 15:54:21 +0800 |
commit | 3cd26ec77f775a547c458092ea9e68ff60edbd59 (patch) | |
tree | 512372579c27b5176bef9a51c05e9d2e3d43ceb9 /win32 | |
parent | c2ec7a07672cae10fdf3dfe7323b67def0b6320a (diff) | |
download | adwaita-icon-theme-3cd26ec77f775a547c458092ea9e68ff60edbd59.tar.gz |
Visual Studio builds: Generate .pc files
Generate the .pc files upon "nmake install"
Diffstat (limited to 'win32')
-rw-r--r-- | win32/Makefile.am | 2 | ||||
-rw-r--r-- | win32/adwaitapc.py | 32 | ||||
-rw-r--r-- | win32/pc_base.py | 124 |
3 files changed, 158 insertions, 0 deletions
diff --git a/win32/Makefile.am b/win32/Makefile.am index 990d1d16e..176a0d8df 100644 --- a/win32/Makefile.am +++ b/win32/Makefile.am @@ -1,6 +1,8 @@ EXTRA_DIST = \ adwaita-msvc.mak \ + adwaitapc.py \ apply_dirs.py \ detectenv-msvc.mak \ README.txt \ + pc_base.py \ replace.py diff --git a/win32/adwaitapc.py b/win32/adwaitapc.py new file mode 100644 index 000000000..21de437fb --- /dev/null +++ b/win32/adwaitapc.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 + '/adwaita-icon-theme.pc.in', + base_pc.srcdir + '/adwaita-icon-theme.pc', + base_pc.base_replace_items) + + # Generate libsoup-gnome-2.4.pc + replace_multi(base_pc.top_srcdir + '/gnome-icon-theme-symbolic.pc.in', + base_pc.srcdir + '/gnome-icon-theme-symbolic.pc', + base_pc.base_replace_items) + +if __name__ == '__main__': + sys.exit(main(sys.argv)) diff --git a/win32/pc_base.py b/win32/pc_base.py new file mode 100644 index 000000000..f7976e8d2 --- /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}) |