diff options
author | Nirbheek Chauhan <nirbheek@centricular.com> | 2016-10-21 07:02:25 +0530 |
---|---|---|
committer | Nirbheek Chauhan <nirbheek@centricular.com> | 2016-10-21 07:11:11 +0530 |
commit | 6f4406928bd7c6beeb85502153c13841af4e3239 (patch) | |
tree | 39d3f832b2498999a98b75376854308470f4c44a | |
parent | 93035fd1121dc3701e89ce50477f4523e4e03560 (diff) | |
download | meson-6f4406928bd7c6beeb85502153c13841af4e3239.zip meson-6f4406928bd7c6beeb85502153c13841af4e3239.tar.gz meson-6f4406928bd7c6beeb85502153c13841af4e3239.tar.bz2 |
BuildTarget: Add compilers needed by generated sources
-rw-r--r-- | mesonbuild/build.py | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/mesonbuild/build.py b/mesonbuild/build.py index e16f118..20b4425 100644 --- a/mesonbuild/build.py +++ b/mesonbuild/build.py @@ -313,6 +313,13 @@ class BuildTarget(): raise InvalidArguments(msg) @staticmethod + def can_compile_sources(compiler, sources): + for s in sources: + if compiler.can_compile(s): + return True + return False + + @staticmethod def can_compile_remove_sources(compiler, sources): removed = False for s in sources[:]: @@ -322,16 +329,23 @@ class BuildTarget(): return removed def process_compilers(self): - if len(self.sources) == 0: + if len(self.sources) + len(self.generated) == 0: return sources = list(self.sources) + for gensrc in self.generated: + sources += gensrc.get_outputs() + # Populate list of compilers if self.is_cross: compilers = self.environment.coredata.cross_compilers else: compilers = self.environment.coredata.compilers for lang, compiler in compilers.items(): - if self.can_compile_remove_sources(compiler, sources): + if self.can_compile_sources(compiler, sources): self.compilers[lang] = compiler + # If all our sources are Vala, our target also needs the C compiler but + # it won't get added above. + if 'vala' in self.compilers and 'c' not in self.compilers: + self.compilers['c'] = compilers['c'] def validate_sources(self): if len(self.sources) == 0: |