summaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
authorPaul Smith <psmith@gnu.org>2013-04-28 01:19:19 -0400
committerPaul Smith <psmith@gnu.org>2013-04-28 01:19:19 -0400
commit7f01830927969a8386050617385e59070fe9f34b (patch)
treeb211c33f53be418ea4bf051b503aea10607f6d49 /main.c
parent30843dea3a17f84b7456f68d75e5cd6bd5c5e11b (diff)
downloadgunmake-7f01830927969a8386050617385e59070fe9f34b.tar.gz
Add support for per-job output sync.
A new flag to the -O/--output-sync, "job", selects a per-job (that is, per line of a recipe) output synchronization. To support this move the close of the temp file out of the sync_output() function and don't do it until we free the child, since we may call sync_output() multiple times in a given recipe. When we set up for a new temp file, if we're in per-job mode we truncate the file and seek to the beginning to re-use it for every job.
Diffstat (limited to 'main.c')
-rw-r--r--main.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/main.c b/main.c
index 0037587..be3d190 100644
--- a/main.c
+++ b/main.c
@@ -695,7 +695,11 @@ decode_output_sync_flags (void)
{
const char *p = *pp;
- if (streq (p, "target"))
+ if (streq (p, "none"))
+ output_sync = OUTPUT_SYNC_NONE;
+ else if (streq (p, "job"))
+ output_sync = OUTPUT_SYNC_JOB;
+ else if (streq (p, "target"))
output_sync = OUTPUT_SYNC_TARGET;
else if (streq (p, "make"))
output_sync = OUTPUT_SYNC_MAKE;