diff --git a/dependencies.py b/dependencies.py index c4c046a11..3767d630c 100644 --- a/dependencies.py +++ b/dependencies.py @@ -90,6 +90,8 @@ class PkgConfigDependency(Dependency): else: pkgbin = 'pkg-config' type_string = 'Native' + + self.pkgbin = pkgbin p = subprocess.Popen([pkgbin, '--modversion', name], stdout=subprocess.PIPE, stderr=subprocess.PIPE) out = p.communicate()[0] @@ -142,6 +144,20 @@ class PkgConfigDependency(Dependency): self.libs.append(lib) + def get_variable(self, variable_name): + p = subprocess.Popen([self.pkgbin, '--variable=%s' % + variable_name, self.name], stdout=subprocess.PIPE, stderr=subprocess.PIPE) + out = p.communicate()[0] + if p.returncode != 0: + if required: + raise DependencyException('%s dependency %s not found.' % + (type_string, self.name)) + else: + variable = out.decode().strip() + mlog.debug ("return of subprocess : ", variable) + + return variable + def get_modversion(self): return self.modversion diff --git a/modules/gnome.py b/modules/gnome.py index fdcf8277e..51bd94177 100644 --- a/modules/gnome.py +++ b/modules/gnome.py @@ -95,6 +95,17 @@ class GnomeModule: scan_command += ['--pkg-export=%s' % pkg for pkg in pkgs] else: raise MesonException('Gir export packages must be str or list') + + deps = None + if 'dependencies' in kwargs: + deps = kwargs.pop('dependencies') + if not isinstance (deps, list): + deps = [deps] + for dep in deps: + girdir = dep.held_object.get_variable ("girdir") + if girdir: + scan_command += ["--add-include-path=%s" % girdir] + inc_dirs = None if kwargs.get('include_directories'): inc_dirs = kwargs.pop('include_directories') @@ -121,7 +132,14 @@ class GnomeModule: typelib_output = '%s-%s.typelib' % (ns, nsversion) typelib_cmd = ['g-ir-compiler', scan_target, '--output', '@OUTPUT@'] if inc_dirs: - typelib_cmd += ['--includedir=%s' % inc for inc in inc_dirs.held_object.get_incdirs()] + typelib_cmd += ['--includedir=%s' % inc for inc in + inc_dirs.held_object.get_incdirs()] + if deps: + for dep in deps: + girdir = dep.held_object.get_variable ("girdir") + if girdir: + typelib_cmd += ["--includedir=%s" % girdir] + kwargs['output'] = typelib_output kwargs['command'] = typelib_cmd # Note that this can't be libdir, because e.g. on Debian it points to