--output-sync feature no longer mangles the output from multiple recipes run in parallel, which is great. However, tools will then typically stop to generate ANSI color codes, which is not so great.
But as I usually need to specify my local Clang trunk build in my LibreOffice
autogen.input anyway, there is little trouble adding the
-fcolor-diagnostics switch to force color codes back on:
CC=…/clang -fcolor-diagnostics CXX=…/clang++ -fcolor-diagnostics
That solves the problem when running
make from a terminal, but in turn spoils Emacs’s
M-x compile. To fix that, add
(defun my-filter-ansi-color-codes-hook () (goto-char compilation-filter-start) (while (re-search-forward "\e\\[\\([0-9]+\\(;[0-9]+\\)*\\)?m" nil t) (replace-match "" nil nil))) (add-hook 'compilation-filter-hook 'my-filter-ansi-color-codes-hook)
.emacs. And while you’re at it, also add
(setq compilation-error-regexp-alist (append '(("^\\([^:\n]+\\):\\([1-9][0-9]*\\): recipe for target '[^'\n]+' failed$" 1 2 nil 0 1)) compilation-error-regexp-alist))
to demote that (apparently new?)
make error to a warning, so that, in combination with
(setq compilation-skip-threshold 2),
M-x next-error will skip it over.