From 504b17e0003e4a4393eaf3b7745f4857d4569b78 Mon Sep 17 00:00:00 2001 From: "J. Eric Ivancich" Date: Mon, 6 Jun 2016 11:32:01 -0400 Subject: [PATCH] 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 --- README.cmake.md | 10 +++++++--- src/CMakeLists.txt | 23 +++++++++-------------- 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/README.cmake.md b/README.cmake.md index 0ecba08a384bc..347f2ed09d4e2 100644 --- a/README.cmake.md +++ b/README.cmake.md @@ -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.** diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index fa21662c7d5eb..3abf8a4937293 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -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) - -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() + COMPILER_SUPPORTS_DIAGNOSTICS_COLOR) + +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() -- 2.39.5