aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/modules/gnome.py
diff options
context:
space:
mode:
Diffstat (limited to 'mesonbuild/modules/gnome.py')
-rw-r--r--mesonbuild/modules/gnome.py108
1 files changed, 60 insertions, 48 deletions
diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py
index e85ba97..11efd58 100644
--- a/mesonbuild/modules/gnome.py
+++ b/mesonbuild/modules/gnome.py
@@ -193,42 +193,50 @@ class GnomeModule:
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:
- if isinstance(dep.held_object, dependencies.InternalDependency):
- scan_command += self.get_include_args(state, dep.held_object.include_directories)
- for lib in dep.held_object.libraries:
- scan_command += self.get_link_args(state, lib.held_object, depends)
- for source in dep.held_object.sources:
- if isinstance(source.held_object, GirTarget):
- scan_command += ["--add-include-path=%s" %
- os.path.join(state.environment.get_build_dir(),
- source.held_object.get_subdir())]
- elif isinstance(dep.held_object, dependencies.PkgConfigDependency):
- scan_command += dep.held_object.get_compile_args()
- for lib in dep.held_object.libs:
- if os.path.isabs(lib) and dep.held_object.is_libtool:
- scan_command += ["-L%s" % os.path.dirname(lib)]
- libname = os.path.basename(lib)
- if libname.startswith("lib"):
- libname = libname[3:]
- libname = libname.split(".so")[0]
- lib = "-l%s" % libname
- # Hack to avoid passing some compiler options in
- if lib.startswith("-W"):
- continue
- scan_command += [lib]
-
- girdir = dep.held_object.get_variable ("girdir")
- if girdir:
- scan_command += ["--add-include-path=%s" % girdir]
- else:
- mlog.log('dependency %s not handled to build gir files' % dep)
- continue
+ deps = kwargs.pop('dependencies', [])
+ if not isinstance(deps, list):
+ deps = [deps]
+ deps = (girtarget.get_all_link_deps() + girtarget.get_external_deps() +
+ deps)
+ for dep in deps:
+ if hasattr(dep, 'held_object'):
+ dep = dep.held_object
+ if isinstance(dep, dependencies.InternalDependency):
+ scan_command += self.get_include_args(
+ state,
+ dep.include_directories)
+ for lib in dep.libraries:
+ scan_command += self.get_link_args(state, lib.held_object,
+ depends)
+ for source in dep.sources:
+ if isinstance(source.held_object, GirTarget):
+ scan_command += [
+ "--add-include-path=%s" % (
+ os.path.join(state.environment.get_build_dir(),
+ source.held_object.get_subdir()),
+ )
+ ]
+ elif isinstance(dep, dependencies.PkgConfigDependency):
+ scan_command += dep.get_compile_args()
+ for lib in dep.libs:
+ if os.path.isabs(lib) and dep.is_libtool:
+ scan_command += ["-L%s" % os.path.dirname(lib)]
+ libname = os.path.basename(lib)
+ if libname.startswith("lib"):
+ libname = libname[3:]
+ libname = libname.split(".so")[0]
+ lib = "-l%s" % libname
+ # Hack to avoid passing some compiler options in
+ if lib.startswith("-W"):
+ continue
+ scan_command += [lib]
+
+ girdir = dep.get_variable("girdir")
+ if girdir:
+ scan_command += ["--add-include-path=%s" % (girdir, )]
+ else:
+ mlog.log('dependency %s not handled to build gir files' % dep)
+ continue
inc_dirs = None
if kwargs.get('include_directories'):
@@ -264,18 +272,22 @@ class GnomeModule:
for incd in inc_dirs:
typelib_cmd += ['--includedir=%s' % inc for inc in
incd.held_object.get_incdirs()]
- if deps:
- for dep in deps:
- if isinstance(dep.held_object, dependencies.InternalDependency):
- for source in dep.held_object.sources:
- if isinstance(source.held_object, GirTarget):
- typelib_cmd += ["--includedir=%s" %
- os.path.join(state.environment.get_build_dir(),
- source.held_object.get_subdir())]
- elif isinstance(dep.held_object, dependencies.PkgConfigDependency):
- girdir = dep.held_object.get_variable ("girdir")
- if girdir:
- typelib_cmd += ["--includedir=%s" % girdir]
+ for dep in deps:
+ if hasattr(dep, 'held_object'):
+ dep = dep.held_object
+ if isinstance(dep, dependencies.InternalDependency):
+ for source in dep.sources:
+ if isinstance(source.held_object, GirTarget):
+ typelib_cmd += [
+ "--includedir=%s" % (
+ os.path.join(state.environment.get_build_dir(),
+ source.held_object.get_subdir()),
+ )
+ ]
+ elif isinstance(dep, dependencies.PkgConfigDependency):
+ girdir = dep.get_variable("girdir")
+ if girdir:
+ typelib_cmd += ["--includedir=%s" % (girdir, )]
kwargs['output'] = typelib_output
kwargs['command'] = typelib_cmd