From 3f67955ffafb59534a77f80e61776e7b8a850c32 Mon Sep 17 00:00:00 2001
From: Florent Pruvost <florent.pruvost@inria.fr>
Date: Fri, 9 Mar 2018 10:38:16 +0100
Subject: [PATCH] add an option to colorize output messages

---
 modules/ColorizeMessage.cmake | 92 +++++++++++++++++------------------
 modules/MorseInit.cmake       | 25 ++++++----
 2 files changed, 61 insertions(+), 56 deletions(-)

diff --git a/modules/ColorizeMessage.cmake b/modules/ColorizeMessage.cmake
index e0e4d2b..cc49f86 100644
--- a/modules/ColorizeMessage.cmake
+++ b/modules/ColorizeMessage.cmake
@@ -3,7 +3,7 @@
 # @copyright (c) 2009-2014 The University of Tennessee and The University
 #                          of Tennessee Research Foundation.
 #                          All rights reserved.
-# @copyright (c) 2012-2014 Inria. All rights reserved.
+# @copyright (c) 2012-2018 Inria. All rights reserved.
 # @copyright (c) 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
 #
 ###
@@ -18,7 +18,7 @@
 #     Univ. of California Berkeley,
 #     Univ. of Colorado Denver.
 #
-#  @version 0.9.0
+#  @version 1.0.0
 #  @author Cedric Castagnede
 #  @author Emmanuel Agullo
 #  @author Mathieu Faverge
@@ -28,51 +28,51 @@
 ###
 
 # Set some colors
-#if(NOT WIN32)
-#    string(ASCII 27 Esc)
-#    set(ColourReset "${Esc}[m")
-#    set(ColourBold  "${Esc}[1m")
-#    set(Red         "${Esc}[31m")
-#    set(Green       "${Esc}[32m")
-#    set(Yellow      "${Esc}[33m")
-#    set(Blue        "${Esc}[34m")
-#    set(Magenta     "${Esc}[35m")
-#    set(Cyan        "${Esc}[36m")
-#    set(White       "${Esc}[37m")
-#    set(BoldRed     "${Esc}[1;31m")
-#    set(BoldGreen   "${Esc}[1;32m")
-#    set(BoldYellow  "${Esc}[1;33m")
-#    set(BoldBlue    "${Esc}[1;34m")
-#    set(BoldMagenta "${Esc}[1;35m")
-#    set(BoldCyan    "${Esc}[1;36m")
-#    set(BoldWhite   "${Esc}[1;37m")
-#endif()
+if(NOT WIN32)
+    string(ASCII 27 Esc)
+    set(ColourReset "${Esc}[m")
+    set(ColourBold  "${Esc}[1m")
+    set(Red         "${Esc}[31m")
+    set(Green       "${Esc}[32m")
+    set(Yellow      "${Esc}[33m")
+    set(Blue        "${Esc}[34m")
+    set(Magenta     "${Esc}[35m")
+    set(Cyan        "${Esc}[36m")
+    set(White       "${Esc}[37m")
+    set(BoldRed     "${Esc}[1;31m")
+    set(BoldGreen   "${Esc}[1;32m")
+    set(BoldYellow  "${Esc}[1;33m")
+    set(BoldBlue    "${Esc}[1;34m")
+    set(BoldMagenta "${Esc}[1;35m")
+    set(BoldCyan    "${Esc}[1;36m")
+    set(BoldWhite   "${Esc}[1;37m")
 
-# Colorize cmake messages during configure
-function(message)
-  list(GET ARGV 0 MessageType)
-  if(MessageType STREQUAL FATAL_ERROR OR MessageType STREQUAL SEND_ERROR)
-    list(REMOVE_AT ARGV 0)
-    string (REPLACE ";" " " ARGV_STR "${ARGV}")
-    _message(${MessageType} "${BoldRed}${ARGV_STR}${ColourReset}")
-  elseif(MessageType STREQUAL WARNING)
-    list(REMOVE_AT ARGV 0)
-    string (REPLACE ";" " " ARGV_STR "${ARGV}")
-    _message(${MessageType} "${BoldYellow}${ARGV_STR}${ColourReset}")
-  elseif(MessageType STREQUAL AUTHOR_WARNING)
-    list(REMOVE_AT ARGV 0)
-    string (REPLACE ";" " " ARGV_STR "${ARGV}")
-    _message(${MessageType} "${BoldCyan}${ARGV_STR}${ColourReset}")
-  elseif(MessageType STREQUAL STATUS)
-    list(REMOVE_AT ARGV 0)
-    string (REPLACE ";" " " ARGV_STR "${ARGV}")
-    _message(${MessageType} "${Green}${ARGV_STR}${ColourReset}")
-  else()
-    string (REPLACE ";" " " ARGV_STR "${ARGV}")
-    string (REPLACE "${Esc}[1 " "${Esc}[1;" ARGV_STR "${ARGV_STR}")
-    _message("${ARGV_STR}")
-  endif()
-endfunction()
+    # Colorize cmake messages during configure
+    function(message)
+      list(GET ARGV 0 MessageType)
+      if(MessageType STREQUAL FATAL_ERROR OR MessageType STREQUAL SEND_ERROR)
+        list(REMOVE_AT ARGV 0)
+        string (REPLACE ";" " " ARGV_STR "${ARGV}")
+        _message(${MessageType} "${BoldRed}${ARGV_STR}${ColourReset}")
+      elseif(MessageType STREQUAL WARNING)
+        list(REMOVE_AT ARGV 0)
+        string (REPLACE ";" " " ARGV_STR "${ARGV}")
+        _message(${MessageType} "${BoldYellow}${ARGV_STR}${ColourReset}")
+      elseif(MessageType STREQUAL AUTHOR_WARNING)
+        list(REMOVE_AT ARGV 0)
+        string (REPLACE ";" " " ARGV_STR "${ARGV}")
+        _message(${MessageType} "${BoldCyan}${ARGV_STR}${ColourReset}")
+      elseif(MessageType STREQUAL STATUS)
+        list(REMOVE_AT ARGV 0)
+        string (REPLACE ";" " " ARGV_STR "${ARGV}")
+        _message(${MessageType} "${Green}${ARGV_STR}${ColourReset}")
+      else()
+        string (REPLACE ";" " " ARGV_STR "${ARGV}")
+        string (REPLACE "${Esc}[1 " "${Esc}[1;" ARGV_STR "${ARGV_STR}")
+        _message("${ARGV_STR}")
+      endif()
+    endfunction()
+endif()
 
 ##
 ## @end file ColorizeMessage.cmake
diff --git a/modules/MorseInit.cmake b/modules/MorseInit.cmake
index 23b6d6c..675a481 100644
--- a/modules/MorseInit.cmake
+++ b/modules/MorseInit.cmake
@@ -3,7 +3,7 @@
 # @copyright (c) 2009-2014 The University of Tennessee and The University
 #                          of Tennessee Research Foundation.
 #                          All rights reserved.
-# @copyright (c) 2012-2016 Inria. All rights reserved.
+# @copyright (c) 2012-2018 Inria. All rights reserved.
 # @copyright (c) 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
 #
 ###
@@ -18,7 +18,7 @@
 #     Univ. of California Berkeley,
 #     Univ. of Colorado Denver.
 #
-#  @version 0.9.0
+#  @version 1.0.0
 #  @author Cedric Castagnede
 #  @author Emmanuel Agullo
 #  @author Mathieu Faverge
@@ -27,14 +27,25 @@
 #
 ###
 
+# Global Morse options
+option(MORSE_ENABLE_WARNING       "Enable warning messages" OFF)
+option(MORSE_ENABLE_COVERAGE      "Enable flags for coverage test" OFF)
+option(MORSE_ENABLE_COLOR_MESSAGE "Enable colors in messages" OFF)
+#option(MORSE_VERBOSE_FIND_PACKAGE "Add additional messages concerning packages not found" OFF)
+#message(STATUS "MORSE_VERBOSE_FIND_PACKAGE is set to OFF, turn it ON to get"
+#        "   information about packages not found")
+
+
 # This include is required to check symbols of libs in the main CMakeLists.txt
 include(CheckFunctionExists)
 
 # This include is required to check defines in headers
 include(CheckIncludeFiles)
 
-# To colorize messages
-#include(ColorizeMessage)
+if (MORSE_ENABLE_COLOR_MESSAGE)
+  # colorize messages
+  include(ColorizeMessage)
+endif()
 
 # To find headers and libs
 include(FindHeadersAndLibs)
@@ -52,12 +63,6 @@ include(Ressources)
 # Add the path where we handle our FindFOO.cmake to seek for liraries
 list(APPEND CMAKE_MODULE_PATH ${MORSE_CMAKE_MODULE_PATH}/find)
 
-option(MORSE_ENABLE_WARNING       "Enable warning messages" OFF)
-option(MORSE_ENABLE_COVERAGE      "Enable flags for coverage test" OFF)
-#option(MORSE_VERBOSE_FIND_PACKAGE "Add additional messages concerning packages not found" OFF)
-#message(STATUS "MORSE_VERBOSE_FIND_PACKAGE is set to OFF, turn it ON to get"
-#        "   information about packages not found")
-
 ##
 ## @end file MorseInit.cmake
 ##
-- 
GitLab