Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 01 Dec 2011 13:25:23 +0800
From:      Jan Beich <jbeich@tormail.net>
To:        Max Khon <fjoe@FreeBSD.org>
Cc:        svn-src-head@freebsd.org, Alexander Best <arundel@freebsd.org>, svn-src-all@freebsd.org, src-committers@freebsd.org
Subject:   Re: svn commit: r228157 - head/usr.bin/make
Message-ID:  <1RVz9v-000LKd-TK@internal.tormail.net>
In-Reply-To: <CADe0-4=izivfmpC_w%2BahNRNrqv%2B3rwRiEbX4wEr8FaBB0q-N5A__47869.588880758$1322712390$gmane$org@mail.gmail.com> (Max Khon's message of "Thu, 1 Dec 2011 11:05:55 %2B0700")
References:  <201111301807.pAUI7cXI008371@svn.freebsd.org> <20111201001646.GA49249@freebsd.org> <CADe0-4=izivfmpC_w%2BahNRNrqv%2B3rwRiEbX4wEr8FaBB0q-N5A__47869.588880758$1322712390$gmane$org@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Max Khon <fjoe@FreeBSD.org> writes:

> On Thu, Dec 1, 2011 at 7:16 AM, Alexander Best <arundel@freebsd.org> wrote:
>> it would also be nice, if at some point, somebody could dive into the code
>> to
>> see why 'make buildkernel' will let clang produce coloured output, but
>> 'make -j(N>1) buildkernel' doesn't (and why adding a -B switch to that
>> command
>> fixes it).
>>
>
> This one is simple: job make (-jX) runs commands with stdin/stdout/stderr
> redirected to pipes.
> -B turns on compat mode for job make.
>
> This can be demonstrated by running make with -jX or -jX -B with the
> following Makefile:
> --- cut here ---
> all:
>         @if [ -t 1 ]; then echo "stdout is a tty"; else echo "stdout is not
> a tty"; fi
> --- cut here ---
>
> If you really want to see colored output in -jX case you should teach clang
> to output ANSI color sequences not only in isatty(1) case, but also
> when MAKE_JOBS_FIFO environment variable is present (it is set when make
> runs in job mode).

Any way to distinguish between `make -jX' connected to tty and `make
-jX' redirected to a file then? Otherwise, inconsistent coloring
is still there, e.g.

  $ make >&build.log
  $ make -j8 >&build.log

Index: contrib/llvm/tools/clang/lib/Driver/Tools.cpp
===================================================================
--- contrib/llvm/tools/clang/lib/Driver/Tools.cpp	(revision 228149)
+++ contrib/llvm/tools/clang/lib/Driver/Tools.cpp	(working copy)
@@ -2115,7 +2115,8 @@ void Clang::ConstructJob(Compilation &C, const Job
   // them.
   if (Args.hasFlag(options::OPT_fcolor_diagnostics,
                    options::OPT_fno_color_diagnostics,
-                   llvm::sys::Process::StandardErrHasColors()))
+                   llvm::sys::Process::StandardErrHasColors() ||
+                   ::getenv("MAKE_JOBS_FIFO")))
     CmdArgs.push_back("-fcolor-diagnostics");
 
   if (!Args.hasFlag(options::OPT_fshow_source_location,



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1RVz9v-000LKd-TK>