ninja: Fix build_by_default=false targets in tests

Previously, build_by_default=false targets would not be built at all
even if they were used in a test (as the exe or as a command-line
argument) which would lead to a test failure.

Now we look into all the defined tests and add all CustomTargets and
BuildTargets used in them to the list of build_by_default targets.
pull/1335/head
Nirbheek Chauhan 8 years ago
parent b98599ad96
commit 01547e8c61
  1. 23
      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 = []

Loading…
Cancel
Save