aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNirbheek Chauhan <nirbheek@centricular.com>2016-10-15 04:28:13 +0530
committerNirbheek Chauhan <nirbheek@centricular.com>2016-10-19 20:42:11 +0530
commit092c593acd4b514b23bcb7380156a0dde09b284a (patch)
treeb6ae1b10f659b170b1ea2b0fba3479717db971d9
parent419b84784f2051981e1c24e33256de972a8e3485 (diff)
downloadmeson-092c593acd4b514b23bcb7380156a0dde09b284a.zip
meson-092c593acd4b514b23bcb7380156a0dde09b284a.tar.gz
meson-092c593acd4b514b23bcb7380156a0dde09b284a.tar.bz2
Process dependencies for all targets not just C/C++
This isn't useful yet because we currently only have dependencies for C/C++ targets (the rest all use link deps), but we will need this for Vala, Rust, and more.
-rw-r--r--mesonbuild/backend/ninjabackend.py18
1 files changed, 13 insertions, 5 deletions
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py
index 00b1750..7a7b681 100644
--- a/mesonbuild/backend/ninjabackend.py
+++ b/mesonbuild/backend/ninjabackend.py
@@ -236,6 +236,11 @@ int dummy;
vala_gen_sources = []
if name in self.processed_targets:
return
+ self.processed_targets[name] = True
+ # Generate rules for all dependency targets
+ self.process_target_dependencies(target, outfile)
+ # If target uses a language that cannot link to C objects,
+ # just generate for that language and return.
if isinstance(target, build.Jar):
self.generate_jar_target(target, outfile)
return
@@ -251,8 +256,10 @@ int dummy;
if 'vala' in target.compilers:
vala_gen_sources = self.generate_vala_compile(target, outfile)
self.scan_fortran_module_outputs(target)
- self.process_target_dependencies(target, outfile)
- self.generate_custom_generator_rules(target, outfile)
+ # Generate rules for GeneratedLists
+ self.generate_generator_list_rules(target, outfile)
+
+ # Generate rules for building the remaining source files in this target
outname = self.get_target_filename(target)
obj_list = []
use_pch = self.environment.coredata.base_options.get('b_pch', False)
@@ -355,7 +362,6 @@ int dummy;
elem = self.generate_link(target, outfile, outname, obj_list, linker, pch_objects)
self.generate_shlib_aliases(target, self.get_target_dir(target))
elem.write(outfile)
- self.processed_targets[name] = True
def process_target_dependencies(self, target, outfile):
for t in target.get_dependencies():
@@ -1395,10 +1401,12 @@ rule FORTRAN_DEP_HACK
self.generate_pch_rule_for(langname, compiler, qstr, True, outfile)
outfile.write('\n')
- def generate_custom_generator_rules(self, target, outfile):
+ def generate_generator_list_rules(self, target, outfile):
+ # CustomTargets have already written their rules,
+ # so write rules for GeneratedLists here
for genlist in target.get_generated_sources():
if isinstance(genlist, build.CustomTarget):
- continue # Customtarget has already written its output rules
+ continue
self.generate_genlist_for_target(genlist, target, outfile)
def generate_genlist_for_target(self, genlist, target, outfile):