Change implementation to use a documented CACHE variable, and allow

any of the three values supported by GCC to be used. Just as the GCC
default is 'auto', so is the default within the cmake file.

Signed-off-by: J. Eric Ivancich <ivancich@redhat.com>
This commit is contained in:
J. Eric Ivancich 2016-06-06 11:32:01 -04:00
parent be585d271d
commit 504b17e000
2 changed files with 15 additions and 16 deletions

View File

@ -50,15 +50,19 @@ external dependencies:
..
If you often pipe `make`to `less` and would like to maintain the
diagnostic colors for errors and warnings, you can invoke `cmake`
with:
diagnostic colors for errors and warnings (and if your compiler
supports it), you can invoke `cmake` with:
$ cmake -DDIAG_COLOR_ALWAYS=yes [...]
$ cmake -DDIAGNOSTICS_COLOR=always [...]
Then you'll get the diagnostic colors when you execute:
$ make | less -R
Other available values for DIAGNOSTICS_COLOR are 'auto' (default) and
'never'.
**More options will be implemented in the future.**

View File

@ -91,22 +91,17 @@ else()
endif()
# if compiler allows it and if -DDIAG_COLOR_ALWAYS=yes is provided to
# cmake, turn on diagnostic colors, even when compiler output does not
# go to terminal (e.g., when piped to less)
## Handle diagnostics color if compiler supports them.
CHECK_C_COMPILER_FLAG("-fdiagnostics-color=always"
COMPILER_SUPPORTS_DIAG_COLOR_ALWAYS)
COMPILER_SUPPORTS_DIAGNOSTICS_COLOR)
if(DIAG_COLOR_ALWAYS)
if(COMPILER_SUPPORTS_DIAG_COLOR_ALWAYS)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fdiagnostics-color=always")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fdiagnostics-color=always")
message(STATUS "C and C++ compilers will always show diagnostic colors")
else()
message(WARNING
"Unable to turn on DIAG_COLOR_ALWAYS, because this compiler does not support -fdiagnostics-color=always flag.")
endif()
set(DIAGNOSTICS_COLOR "auto"
CACHE STRING "Used if the C/C++ compiler supports the -fdiagnostics-color option. May have one of three values -- 'auto' (default), 'always', or 'never'. If set to 'always' and the compiler supports the option, 'make [...] | less -R' will make visible diagnostics colorization of compiler output.")
if(COMPILER_SUPPORTS_DIAGNOSTICS_COLOR)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fdiagnostics-color=${DIAGNOSTICS_COLOR}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fdiagnostics-color=${DIAGNOSTICS_COLOR}")
endif()