aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/modules/gnome.py
diff options
context:
space:
mode:
authorThibault Saunier <tsaunier@igalia.com>2018-11-20 09:46:59 -0300
committerJussi Pakkanen <jpakkane@gmail.com>2018-12-16 21:03:58 +0200
commitb4347ca4a98b148ba7f7908c3d96f393294df122 (patch)
tree0a0ee374d2582b6fa4ae4e629068e3eaff10e4ab /mesonbuild/modules/gnome.py
parent61d462706af4998403f854b5caaa8bb3a7741700 (diff)
downloadmeson-b4347ca4a98b148ba7f7908c3d96f393294df122.zip
meson-b4347ca4a98b148ba7f7908c3d96f393294df122.tar.gz
meson-b4347ca4a98b148ba7f7908c3d96f393294df122.tar.bz2
gi: Handle new --source-top-dirs argument
This allows coherent relative paths in the gir "source-position"
Diffstat (limited to 'mesonbuild/modules/gnome.py')
-rw-r--r--mesonbuild/modules/gnome.py25
1 files changed, 15 insertions, 10 deletions
diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py
index bf49770..be99059 100644
--- a/mesonbuild/modules/gnome.py
+++ b/mesonbuild/modules/gnome.py
@@ -44,21 +44,22 @@ native_glib_version = None
girwarning_printed = False
gdbuswarning_printed = False
gresource_warning_printed = False
-_gir_has_extra_lib_arg = None
+_gir_has_option = {}
-def gir_has_extra_lib_arg(intr_obj):
- global _gir_has_extra_lib_arg
- if _gir_has_extra_lib_arg is not None:
- return _gir_has_extra_lib_arg
+def gir_has_option(intr_obj, option):
+ global _gir_has_option
+ if option in _gir_has_option:
+ return _gir_has_option[option]
- _gir_has_extra_lib_arg = False
+ _gir_has_option[option] = False
try:
g_ir_scanner = intr_obj.find_program_impl('g-ir-scanner').get_command()
opts = Popen_safe(g_ir_scanner + ['--help'], stderr=subprocess.STDOUT)[1]
- _gir_has_extra_lib_arg = '--extra-library' in opts
+ _gir_has_option[option] = option in opts
except (MesonException, FileNotFoundError, subprocess.CalledProcessError):
pass
- return _gir_has_extra_lib_arg
+
+ return _gir_has_option[option]
class GnomeModule(ExtensionModule):
gir_dep = None
@@ -308,7 +309,7 @@ class GnomeModule(ExtensionModule):
if include_rpath:
link_command.append('-Wl,-rpath,' + libdir)
depends.append(lib)
- if gir_has_extra_lib_arg(self.interpreter) and use_gir_args:
+ if gir_has_option(self.interpreter, '--extra-library') and use_gir_args:
link_command.append('--extra-library=' + lib.name)
else:
link_command.append('-l' + lib.name)
@@ -392,7 +393,7 @@ class GnomeModule(ExtensionModule):
mlog.log('dependency {!r} not handled to build gir files'.format(dep))
continue
- if gir_has_extra_lib_arg(self.interpreter) and use_gir_args:
+ if gir_has_option(self.interpreter, '--extra-library') and use_gir_args:
def fix_ldflags(ldflags):
fixed_ldflags = OrderedSet()
for ldflag in ldflags:
@@ -805,6 +806,10 @@ class GnomeModule(ExtensionModule):
scan_command += self._scan_langs(state, [lc[0] for lc in langs_compilers])
scan_command += list(external_ldflags)
+ if gir_has_option(self.interpreter, '--sources-top-dirs'):
+ scan_command += ['--sources-top-dirs', os.path.join(state.environment.get_source_dir(), self.interpreter.subproject_dir, state.subproject)]
+ scan_command += ['--sources-top-dirs', os.path.join(state.environment.get_build_dir(), self.interpreter.subproject_dir, state.subproject)]
+
scan_target = self._make_gir_target(state, girfile, scan_command, depends, kwargs)
typelib_output = '%s-%s.typelib' % (ns, nsversion)