aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mesonbuild/backend/backends.py35
-rw-r--r--mesonbuild/backend/ninjabackend.py5
-rw-r--r--mesonbuild/modules/gnome.py3
3 files changed, 30 insertions, 13 deletions
diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py
index 48dfb11..a489d04 100644
--- a/mesonbuild/backend/backends.py
+++ b/mesonbuild/backend/backends.py
@@ -504,19 +504,13 @@ class Backend():
libs.append(os.path.join(self.get_target_dir(t), f))
return libs
- def eval_custom_target_command(self, target, absolute_paths=False):
- if not absolute_paths:
- ofilenames = [os.path.join(self.get_target_dir(target), i) for i in target.output]
- else:
- ofilenames = [os.path.join(self.environment.get_build_dir(), self.get_target_dir(target), i) \
- for i in target.output]
+ def get_custom_target_sources(self, target, absolute_paths=False):
+ '''
+ Custom target sources can be of various object types; strings, File,
+ BuildTarget, even other CustomTargets.
+ Returns the path to them relative to the build root directory.
+ '''
srcs = []
- outdir = self.get_target_dir(target)
- # Many external programs fail on empty arguments.
- if outdir == '':
- outdir = '.'
- if absolute_paths:
- outdir = os.path.join(self.environment.get_build_dir(), outdir)
for i in target.get_sources():
if hasattr(i, 'held_object'):
i = i.held_object
@@ -531,8 +525,23 @@ class Backend():
else:
fname = [i.rel_to_builddir(self.build_to_src)]
if absolute_paths:
- fname =[os.path.join(self.environment.get_build_dir(), f) for f in fname]
+ fname = [os.path.join(self.environment.get_build_dir(), f) for f in fname]
srcs += fname
+ return srcs
+
+ def eval_custom_target_command(self, target, absolute_paths=False):
+ if not absolute_paths:
+ ofilenames = [os.path.join(self.get_target_dir(target), i) for i in target.output]
+ else:
+ ofilenames = [os.path.join(self.environment.get_build_dir(), self.get_target_dir(target), i) \
+ for i in target.output]
+ srcs = self.get_custom_target_sources(target, absolute_paths)
+ outdir = self.get_target_dir(target)
+ # Many external programs fail on empty arguments.
+ if outdir == '':
+ outdir = '.'
+ if absolute_paths:
+ outdir = os.path.join(self.environment.get_build_dir(), outdir)
cmd = []
for i in target.command:
if isinstance(i, build.Executable):
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py
index 0516829..fa71ae5 100644
--- a/mesonbuild/backend/ninjabackend.py
+++ b/mesonbuild/backend/ninjabackend.py
@@ -1032,6 +1032,11 @@ int dummy;
args += ['--pkg', d.name]
elif isinstance(d, dependencies.ExternalLibrary):
args += d.get_lang_args('vala')
+ # Detect gresources and add --gresources arguments for each
+ for (gres, gensrc) in other_src[1].items():
+ if hasattr(gensrc, 'gresource_c_output'):
+ gres_xml, = self.get_custom_target_sources(gensrc)
+ args += ['--gresources=' + gres_xml]
extra_args = []
for a in target.extra_args.get('vala', []):
diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py
index 6d05b4e..af3073f 100644
--- a/mesonbuild/modules/gnome.py
+++ b/mesonbuild/modules/gnome.py
@@ -162,6 +162,9 @@ can not be used with the current version of glib-compiled-resources, due to
kwargs['depfile'] = depfile
kwargs['command'] = copy.copy(cmd) + ['--dependency-file', '@DEPFILE@']
target_c = build.CustomTarget(name, state.subdir, kwargs)
+ # Used in backend/ninjabackend.py:generate_vala_compile() to pass
+ # --gresources to valac when GResources are used in Vala targets
+ target_c.gresource_c_output = True
if gresource: # Only one target for .gresource files
return [target_c]