aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/backend/ninjabackend.py
diff options
context:
space:
mode:
authorElliott Sales de Andrade <quantum.analyst@gmail.com>2016-08-24 04:35:15 -0400
committerElliott Sales de Andrade <quantum.analyst@gmail.com>2016-08-26 20:46:42 -0400
commit70d94a555004563178878b73274e345adff5b4e8 (patch)
treea5944eecebc2992e322e42364148d63ba73acda8 /mesonbuild/backend/ninjabackend.py
parentdcaf2d7b3d010526eb5035fec788f1b9a854262c (diff)
downloadmeson-70d94a555004563178878b73274e345adff5b4e8.zip
meson-70d94a555004563178878b73274e345adff5b4e8.tar.gz
meson-70d94a555004563178878b73274e345adff5b4e8.tar.bz2
Allow capturing command output of a custom target.
For commands that always output to stdout and don't have a "-o" or "--output" or some other similar option, this 'capture' setting allows the build to capture the result and place it in the output file.
Diffstat (limited to 'mesonbuild/backend/ninjabackend.py')
-rw-r--r--mesonbuild/backend/ninjabackend.py10
1 files changed, 7 insertions, 3 deletions
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py
index 15f298b..7855729 100644
--- a/mesonbuild/backend/ninjabackend.py
+++ b/mesonbuild/backend/ninjabackend.py
@@ -379,15 +379,19 @@ int dummy;
tmp = [tmp]
for fname in tmp:
elem.add_dep(os.path.join(self.get_target_dir(d), fname))
+ # If the target requires capturing stdout, then use the serialized
+ # executable wrapper to capture that output and save it to a file.
+ #
# Windows doesn't have -rpath, so for EXEs that need DLLs built within
# the project, we need to set PATH so the DLLs are found. We use
# a serialized executable wrapper for that and check if the
# CustomTarget command needs extra paths first.
- if mesonlib.is_windows() and \
- self.determine_windows_extra_paths(target.command[0]):
+ if target.capture or (mesonlib.is_windows() and
+ self.determine_windows_extra_paths(target.command[0])):
exe_data = self.serialise_executable(target.command[0], cmd[1:],
# All targets are built from the build dir
- self.environment.get_build_dir())
+ self.environment.get_build_dir(),
+ capture=ofilenames[0] if target.capture else None)
cmd = [sys.executable, self.environment.get_build_command(),
'--internal', 'exe', exe_data]
cmd_type = 'meson_exe.py custom'