Makefile: Fix output during parallel builds (#12991)

Replace use of separate "cmake -E cmake_progress_report" and "cmake -E
cmake_echo_color" commands to report the progress and message portions
of build output lines with --progress-* options to the latter to print
everything with a single command.  The line buffering of the stdout FILE
stream should cause the whole line to be printed with one atomic write.
This will avoid inter-mixing of line-wise messages from different
processes during a parallel build.
This commit is contained in:
Brad King
2015-02-05 16:48:16 -05:00
parent 69ac6d2755
commit 8521fdf56e
6 changed files with 133 additions and 93 deletions

View File

@@ -184,8 +184,9 @@ public:
// append an echo command
enum EchoColor { EchoNormal, EchoDepend, EchoBuild, EchoLink,
EchoGenerate, EchoGlobal };
void AppendEcho(std::vector<std::string>& commands, const char* text,
EchoColor color = EchoNormal);
struct EchoProgress { std::string Dir; std::string Arg; };
void AppendEcho(std::vector<std::string>& commands, std::string const& text,
EchoColor color = EchoNormal, EchoProgress const* = 0);
/** Get whether the makefile is to have color. */
bool GetColorMakefile() const { return this->ColorMakefile; }