mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-11-11 11:56:16 +01:00
374a61f245
Add a generic script, pc_base.py, which can be utilized to obtain path info, along with user-input version info, which can be used to generate pkg-config .pc files. Also enhance replace.py a bit so that it can also be used in the future to replace multiple items in a file in one shot. This is done to make building introspection files easier, as it depends much on the pkg-config .pc files to work. Update the project files so that when Python is available, we can generate the full, usable .pc files when we complete and 'install' the builds, and copy them to appropriate locations so that pkg-config can be set to find them easily.
108 lines
4.4 KiB
Python
108 lines
4.4 KiB
Python
#!/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)/build/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 = 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)
|
|
|
|
# check and setup the exec_prefix
|
|
if getattr(args, 'exec_prefix', None) is None:
|
|
input_exec_prefix = args.prefix
|
|
else:
|
|
input_exec_prefix = args.exec_prefix
|
|
if not os.path.exists(input_exec_prefix):
|
|
raise SystemExit('Specified exec-prefix \'%s\' is invalid' %
|
|
input_exec_prefix)
|
|
|
|
|
|
# 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:
|
|
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:
|
|
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('\\','/')
|
|
|
|
# use absolute paths for prefix and exec_prefix
|
|
self.prefix = os.path.abspath(args.prefix).replace('\\','/')
|
|
self.exec_prefix = os.path.abspath(input_exec_prefix).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})
|