aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNirbheek Chauhan <nirbheek@centricular.com>2016-10-21 07:02:25 +0530
committerNirbheek Chauhan <nirbheek@centricular.com>2016-10-21 07:11:11 +0530
commit6f4406928bd7c6beeb85502153c13841af4e3239 (patch)
tree39d3f832b2498999a98b75376854308470f4c44a
parent93035fd1121dc3701e89ce50477f4523e4e03560 (diff)
downloadmeson-6f4406928bd7c6beeb85502153c13841af4e3239.zip
meson-6f4406928bd7c6beeb85502153c13841af4e3239.tar.gz
meson-6f4406928bd7c6beeb85502153c13841af4e3239.tar.bz2
BuildTarget: Add compilers needed by generated sources
-rw-r--r--mesonbuild/build.py18
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: