diff options
author | Elliott Sales de Andrade <quantum.analyst@gmail.com> | 2016-08-30 04:02:25 -0400 |
---|---|---|
committer | Elliott Sales de Andrade <quantum.analyst@gmail.com> | 2016-09-14 16:57:38 -0400 |
commit | 3ae327a2ac4724ad9dd7b0d8d663962733faa2e1 (patch) | |
tree | ef6adebb63775d0026a92443ab7cd55cebe2c1b7 | |
parent | d0b6f0b7a4b5266c63ea7914eb5cc4db187bd752 (diff) | |
download | meson-3ae327a2ac4724ad9dd7b0d8d663962733faa2e1.zip meson-3ae327a2ac4724ad9dd7b0d8d663962733faa2e1.tar.gz meson-3ae327a2ac4724ad9dd7b0d8d663962733faa2e1.tar.bz2 |
Pull dependency directly from GIR's target library.
-rw-r--r-- | mesonbuild/modules/gnome.py | 108 |
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 |