aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/build.py
diff options
context:
space:
mode:
authorXavier Claessens <xavier.claessens@collabora.com>2023-02-10 12:39:12 -0500
committerXavier Claessens <xclaesse@gmail.com>2023-02-15 15:12:34 -0500
commitc2a55bfe43fae1b44cf49a083297d6755c89e1cc (patch)
tree8186d1f785861ac6b7da1e548034f05ba493472c /mesonbuild/build.py
parent04f233a80d570c90c1a152114cbf3bdad6a61607 (diff)
downloadmeson-c2a55bfe43fae1b44cf49a083297d6755c89e1cc.zip
meson-c2a55bfe43fae1b44cf49a083297d6755c89e1cc.tar.gz
meson-c2a55bfe43fae1b44cf49a083297d6755c89e1cc.tar.bz2
preprocess: Allow custom_tgt, custom_idx and generated_list
It was documented to be supported but only File and str were actually working.
Diffstat (limited to 'mesonbuild/build.py')
-rw-r--r--mesonbuild/build.py22
1 files changed, 16 insertions, 6 deletions
diff --git a/mesonbuild/build.py b/mesonbuild/build.py
index ad3b4e4..d954e43 100644
--- a/mesonbuild/build.py
+++ b/mesonbuild/build.py
@@ -2609,9 +2609,10 @@ class CompileTarget(BuildTarget):
subdir: str,
subproject: str,
environment: environment.Environment,
- sources: T.List[File],
+ sources: T.List['SourceOutputs'],
output_templ: str,
compiler: Compiler,
+ backend: Backend,
kwargs):
compilers = {compiler.get_language(): compiler}
super().__init__(name, subdir, subproject, compiler.for_machine,
@@ -2620,11 +2621,13 @@ class CompileTarget(BuildTarget):
self.compiler = compiler
self.output_templ = output_templ
self.outputs = []
- for f in sources:
- plainname = os.path.basename(f.fname)
- basename = os.path.splitext(plainname)[0]
- self.outputs.append(output_templ.replace('@BASENAME@', basename).replace('@PLAINNAME@', plainname))
- self.sources_map = dict(zip(sources, self.outputs))
+ self.sources_map: T.Dict[File, str] = {}
+ for f in self.sources:
+ self._add_output(f)
+ for gensrc in self.generated:
+ for s in gensrc.get_outputs():
+ rel_src = backend.get_target_generated_dir(self, gensrc, s)
+ self._add_output(File.from_built_relative(rel_src))
def type_suffix(self) -> str:
return "@compile"
@@ -2633,6 +2636,13 @@ class CompileTarget(BuildTarget):
def is_unity(self) -> bool:
return False
+ def _add_output(self, f: File) -> None:
+ plainname = os.path.basename(f.fname)
+ basename = os.path.splitext(plainname)[0]
+ o = self.output_templ.replace('@BASENAME@', basename).replace('@PLAINNAME@', plainname)
+ self.outputs.append(o)
+ self.sources_map[f] = o
+
class RunTarget(Target, CommandBase):