On Mon, 2015-10-26 at 21:36 -0400, Ben Boeckel wrote: > The way Ninja has solved this is with the "console" pool which > indicates that the rule should not run with any other rule in parallel > and that it needs exclusive access to the terminal.
It's not possible to have an indication that the rule should not run with any other rule in parallel: the output sync only manages output, not runtime. It would be possible to add a facility where a job takes the output stream lock BEFORE the rule runs, and relinquishes it only after the rule completes (normally the job runs first and only takes the output stream lock after the job completes, in order to dump the output, then relinquishes it). This would ensure that only that job was using the terminal and it wouldn't get interrupted. It would have the effect of causing all other jobs to pause after they were completed and new jobs to not be able to start because they can't dump their output, until the terminal is freed up. Note that ninja can do this kind of thing much more easily because it doesn't need to worry about recursive invocations so one ninja process has a total view of all jobs in the build system and they can easily be coordinated. > It also seems that MAKE_TERMERR and MAKE_TERMOUT are kind-of lies with > -O. I don't know what this means. _______________________________________________ Bug-make mailing list Bug-make@gnu.org https://lists.gnu.org/mailman/listinfo/bug-make