diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2024-05-09 09:03:29 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2024-05-09 09:06:49 +0200 |
commit | 2f191a6c6cf1c7802c31fc73e01c5bac17a7f4f1 (patch) | |
tree | f9caac734b256a8e02d1392315f2f48596569415 /libbuild2/diagnostics.cxx | |
parent | fa7501ac8723648991ba05539732bbba2902f8d9 (diff) |
Fixes and tweaks to diagnostics color support on Windows (GH issue #312)
Specifically:
- Pass -fansi-escape-codes for Clang on Windows.
- Enable diagnostics color by default if already enabled on the terminal.
Only try to enable it ourselves with explicit --diag-color.
Diffstat (limited to 'libbuild2/diagnostics.cxx')
-rw-r--r-- | libbuild2/diagnostics.cxx | 31 |
1 files changed, 12 insertions, 19 deletions
diff --git a/libbuild2/diagnostics.cxx b/libbuild2/diagnostics.cxx index 4a46756..1fd1139 100644 --- a/libbuild2/diagnostics.cxx +++ b/libbuild2/diagnostics.cxx @@ -55,31 +55,24 @@ namespace build2 if (st) { - // @@ TMP: eventually we want to enable on Windows by default. + // Only attempt to enable if explicitly requested by the user. Note that + // while we may enable color for our process, who knows if this gets + // inherited by other processes we start (e.g., compilers) and/or + // whether they will do something sensible about any of this. // -#ifdef _WIN32 - if (c && *c) - { -#endif - stderr_term_color = fdterm_color (stderr_fd (), !c || *c /* enable */); + stderr_term_color = fdterm_color (stderr_fd (), c && *c /* enable */); - // If the user specified --diag-color on POSIX we will trust the color - // is supported (e.g., wrong TERM value, etc). - // - if (!stderr_term_color && c && *c) - { + // If the user specified --diag-color on POSIX we will trust the color + // is supported (e.g., wrong TERM value, etc). + // + if (!stderr_term_color && c && *c) + { #ifdef _WIN32 - fail << "unable to enable diagnostics color support for stderr"; + fail << "unable to enable diagnostics color support for stderr"; #else - stderr_term_color = true; + stderr_term_color = true; #endif - } - -#ifdef _WIN32 } - else - stderr_term_color = false; -#endif } else stderr_term_color = false; |