From: J. Eric Ivancich Date: Mon, 6 Jun 2016 15:32:01 +0000 (-0400) Subject: Change implementation to use a documented CACHE variable, and allow X-Git-Tag: v11.0.0~275^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F9487%2Fhead;p=ceph.git 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 --- diff --git a/README.cmake.md b/README.cmake.md index 0ecba08a384b..347f2ed09d4e 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 fa21662c7d5e..3abf8a493729 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()