pkgconfig: Define libdir and includedir in -uninstalled.pc files

This fixes glib-2.0-uninstalled.pc file.
GLib does `extra_cflags : ['-I${libdir}/glib-2.0/include']` because some
of its headers gets installed there. But when used uninstalled that path
makes no sense and pkg-config aborts because ${libdir} is not defined.
This cannot be worked around by GLib because Meson does not allow
setting different `extra_cflags` for -uninstalled.pc, and does not allow
setting libdir in `uninstalled_variables`.
pull/7881/head
Xavier Claessens 4 years ago committed by Jussi Pakkanen
parent bf5bcad05f
commit 14fd1a329a
  1. 11
      mesonbuild/modules/pkgconfig.py

@ -329,18 +329,17 @@ class PkgConfigModule(ExtensionModule):
else: else:
outdir = state.environment.scratch_dir outdir = state.environment.scratch_dir
prefix = PurePath(coredata.get_builtin_option('prefix')) prefix = PurePath(coredata.get_builtin_option('prefix'))
# These always return paths relative to prefix # These always return paths relative to prefix
libdir = PurePath(coredata.get_builtin_option('libdir')) libdir = PurePath(coredata.get_builtin_option('libdir'))
incdir = PurePath(coredata.get_builtin_option('includedir')) incdir = PurePath(coredata.get_builtin_option('includedir'))
fname = os.path.join(outdir, pcfile) fname = os.path.join(outdir, pcfile)
with open(fname, 'w', encoding='utf-8') as ofile: with open(fname, 'w', encoding='utf-8') as ofile:
if not dataonly: if not dataonly:
ofile.write('prefix={}\n'.format(self._escape(prefix))) ofile.write('prefix={}\n'.format(self._escape(prefix)))
if uninstalled: if uninstalled:
ofile.write('srcdir={}\n'.format(self._escape(srcdir))) ofile.write('srcdir={}\n'.format(self._escape(srcdir)))
else: ofile.write('libdir={}\n'.format(self._escape('${prefix}' / libdir)))
ofile.write('libdir={}\n'.format(self._escape('${prefix}' / libdir))) ofile.write('includedir={}\n'.format(self._escape('${prefix}' / incdir)))
ofile.write('includedir={}\n'.format(self._escape('${prefix}' / incdir)))
if variables: if variables:
ofile.write('\n') ofile.write('\n')
for k, v in variables: for k, v in variables:

Loading…
Cancel
Save