|
|
|
@ -63,23 +63,25 @@ class PkgConfigModule: |
|
|
|
|
'Requires.private: {}\n'.format(' '.join(priv_reqs))) |
|
|
|
|
if len(conflicts) > 0: |
|
|
|
|
ofile.write('Conflicts: {}\n'.format(' '.join(conflicts))) |
|
|
|
|
ofile.write('Libs: -L${libdir}') |
|
|
|
|
def generate_libs_flags(libs): |
|
|
|
|
msg = 'Library target {0!r} has {1!r} set. Compilers ' \ |
|
|
|
|
'may not find it from its \'-l{2}\' linker flag in the ' \ |
|
|
|
|
'{3!r} pkg-config file.' |
|
|
|
|
for l in libraries: |
|
|
|
|
for l in libs: |
|
|
|
|
if l.custom_install_dir: |
|
|
|
|
ofile.write(' -L${prefix}/%s ' % l.custom_install_dir) |
|
|
|
|
yield '-L${prefix}/%s ' % l.custom_install_dir |
|
|
|
|
else: |
|
|
|
|
yield '-L${libdir}' |
|
|
|
|
lname = self._get_lname(l, msg, pcfile) |
|
|
|
|
# If using a custom suffix, the compiler may not be able to |
|
|
|
|
# find the library |
|
|
|
|
if l.name_suffix_set: |
|
|
|
|
mlog.log(mlog.red('WARNING:'), msg.format(l.name, 'name_suffix', lname, pcfile)) |
|
|
|
|
ofile.write(' -l{} '.format(lname)) |
|
|
|
|
ofile.write('\n') |
|
|
|
|
yield '-l%s' % lname |
|
|
|
|
if len(libraries) > 0: |
|
|
|
|
ofile.write('Libs: {}\n'.format(' '.join(generate_libs_flags(libraries)))) |
|
|
|
|
if len(priv_libs) > 0: |
|
|
|
|
ofile.write( |
|
|
|
|
'Libs.private: -L${libdir} {}\n'.format(' '.join(priv_libs))) |
|
|
|
|
ofile.write('Libs.private: {}\n'.format(' '.join(generate_libs_flags(priv_libs)))) |
|
|
|
|
ofile.write('Cflags:') |
|
|
|
|
for h in subdirs: |
|
|
|
|
if h == '.': |
|
|
|
@ -88,10 +90,7 @@ class PkgConfigModule: |
|
|
|
|
ofile.write(os.path.join('-I${includedir}', h)) |
|
|
|
|
ofile.write('\n') |
|
|
|
|
|
|
|
|
|
def generate(self, state, args, kwargs): |
|
|
|
|
if len(args) > 0: |
|
|
|
|
raise mesonlib.MesonException('Pkgconfig_gen takes no positional arguments.') |
|
|
|
|
libs = kwargs.get('libraries', []) |
|
|
|
|
def process_libs(self, libs): |
|
|
|
|
if not isinstance(libs, list): |
|
|
|
|
libs = [libs] |
|
|
|
|
processed_libs = [] |
|
|
|
@ -101,7 +100,13 @@ class PkgConfigModule: |
|
|
|
|
if not isinstance(l, (build.SharedLibrary, build.StaticLibrary)): |
|
|
|
|
raise mesonlib.MesonException('Library argument not a library object.') |
|
|
|
|
processed_libs.append(l) |
|
|
|
|
libs = processed_libs |
|
|
|
|
return processed_libs |
|
|
|
|
|
|
|
|
|
def generate(self, state, args, kwargs): |
|
|
|
|
if len(args) > 0: |
|
|
|
|
raise mesonlib.MesonException('Pkgconfig_gen takes no positional arguments.') |
|
|
|
|
libs = self.process_libs(kwargs.get('libraries', [])) |
|
|
|
|
priv_libs = self.process_libs(kwargs.get('libraries_private', [])) |
|
|
|
|
subdirs = mesonlib.stringlistify(kwargs.get('subdirs', ['.'])) |
|
|
|
|
version = kwargs.get('version', '') |
|
|
|
|
if not isinstance(version, str): |
|
|
|
@ -121,7 +126,6 @@ class PkgConfigModule: |
|
|
|
|
pub_reqs = mesonlib.stringlistify(kwargs.get('requires', [])) |
|
|
|
|
priv_reqs = mesonlib.stringlistify(kwargs.get('requires_private', [])) |
|
|
|
|
conflicts = mesonlib.stringlistify(kwargs.get('conflicts', [])) |
|
|
|
|
priv_libs = mesonlib.stringlistify(kwargs.get('libraries_private', [])) |
|
|
|
|
pcfile = filebase + '.pc' |
|
|
|
|
pkgroot = kwargs.get('install_dir',None) |
|
|
|
|
if pkgroot is None: |
|
|
|
|