aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mesonbuild/backend/ninjabackend.py23
1 files changed, 20 insertions, 3 deletions
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py
index 628718f..49ccfca 100644
--- a/mesonbuild/backend/ninjabackend.py
+++ b/mesonbuild/backend/ninjabackend.py
@@ -2161,11 +2161,28 @@ rule FORTRAN_DEP_HACK
elem.write(outfile)
def get_build_by_default_targets(self):
- result = []
+ result = {}
+ # Get all build and custom targets that must be built by default
for t in self.build.get_targets().values():
if t.build_by_default or t.install or t.build_always:
- result.append(t)
- return result
+ result[t] = True
+ # Get all targets used as test executables and arguments. These must
+ # also be built by default. XXX: Sometime in the future these should be
+ # built only before running tests.
+ for t in self.build.get_tests():
+ exe = t.exe
+ if hasattr(exe, 'held_object'):
+ exe = exe.held_object
+ if isinstance(exe, (build.CustomTarget, build.BuildTarget)) and exe not in result:
+ result[exe] = True
+ for arg in t.cmd_args:
+ if hasattr(arg, 'held_object'):
+ arg = arg.held_object
+ if not isinstance(arg, (build.CustomTarget, build.BuildTarget)):
+ continue
+ if arg not in result:
+ result[arg] = True
+ return result.keys()
def generate_ending(self, outfile):
targetlist = []