aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuillaume Poirier-Morency <guillaumepoiriermorency@gmail.com>2016-10-07 12:15:14 -0400
committerGuillaume Poirier-Morency <guillaumepoiriermorency@gmail.com>2016-10-16 11:33:11 -0400
commit9ebc140832b9a54f4c778c0a7edf84938929f419 (patch)
tree4398efa54a186a0a94d49afdd88d6a885d07268a
parent9429183c1d3ba6f41eb0d5f84b0ca6ed35363b9d (diff)
downloadmeson-9ebc140832b9a54f4c778c0a7edf84938929f419.zip
meson-9ebc140832b9a54f4c778c0a7edf84938929f419.tar.gz
meson-9ebc140832b9a54f4c778c0a7edf84938929f419.tar.bz2
pkgconfig: Process private libraries like regular ones
-rw-r--r--mesonbuild/modules/pkgconfig.py48
1 files changed, 26 insertions, 22 deletions
diff --git a/mesonbuild/modules/pkgconfig.py b/mesonbuild/modules/pkgconfig.py
index 883f2c4..e7646c9 100644
--- a/mesonbuild/modules/pkgconfig.py
+++ b/mesonbuild/modules/pkgconfig.py
@@ -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}')
- 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:
- if l.custom_install_dir:
- ofile.write(' -L${prefix}/%s ' % l.custom_install_dir)
- 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')
+ 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 libs:
+ if 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))
+ 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: