[libcxx] r229707 - [libcxx] Tired of colorless compile errors? Enable color diagnostics today!

Eric Fiselier eric at efcs.ca
Wed Feb 18 09:39:45 PST 2015


Author: ericwf
Date: Wed Feb 18 11:39:45 2015
New Revision: 229707

URL: http://llvm.org/viewvc/llvm-project?rev=229707&view=rev
Log:
[libcxx] Tired of colorless compile errors? Enable color diagnostics today!

Summary:
This patch adds a lit option to enable color diagnostics when either `--param=color_diagnostics` is passed to LIT or `LIBCXX_COLOR_DIAGNOSTICS` is present in the environment.

My only concern with this patch is that GCC and Clang take different flags and that only GCC 4.9 and greater support `-fdiagnostics-color=always`

Does anybody have objections to this going in?

Reviewers: jroelofs, danalbert

Reviewed By: danalbert

Subscribers: cfe-commits

Differential Revision: http://reviews.llvm.org/D7729

Modified:
    libcxx/trunk/test/libcxx/test/config.py
    libcxx/trunk/www/lit_usage.html

Modified: libcxx/trunk/test/libcxx/test/config.py
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/libcxx/test/config.py?rev=229707&r1=229706&r2=229707&view=diff
==============================================================================
--- libcxx/trunk/test/libcxx/test/config.py (original)
+++ libcxx/trunk/test/libcxx/test/config.py Wed Feb 18 11:39:45 2015
@@ -91,6 +91,7 @@ class Configuration(object):
         self.configure_env()
         self.configure_compile_flags()
         self.configure_link_flags()
+        self.configure_color_diagnostics()
         self.configure_debug_mode()
         self.configure_warnings()
         self.configure_sanitizer()
@@ -469,6 +470,25 @@ class Configuration(object):
         else:
             self.lit_config.fatal("unrecognized system: %r" % target_platform)
 
+    def configure_color_diagnostics(self):
+        use_color = self.get_lit_conf('color_diagnostics')
+        if use_color is None:
+            use_color = os.environ.get('LIBCXX_COLOR_DIAGNOSTICS')
+        if use_color is None:
+            return
+        if use_color != '':
+            self.lit_config.fatal('Invalid value for color_diagnostics "%s".'
+                                  % use_color)
+        cxx_type = self.cxx.type
+        if cxx_type is None:
+            self.lit_config.warning(
+                'Unable to force color output for unknown compiler "%s"'
+                % cxx.path)
+        elif cxx_type in ['clang', 'apple-clang']:
+            self.cxx.flags += ['-fcolor-diagnostics']
+        elif cxx_type == 'gcc':
+            self.cxx.flags += ['-fdiagnostics-color=always']
+
     def configure_debug_mode(self):
         debug_level = self.get_lit_conf('debug_level', None)
         if not debug_level:

Modified: libcxx/trunk/www/lit_usage.html
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/www/lit_usage.html?rev=229707&r1=229706&r2=229707&view=diff
==============================================================================
--- libcxx/trunk/www/lit_usage.html (original)
+++ libcxx/trunk/www/lit_usage.html Wed Feb 18 11:39:45 2015
@@ -192,6 +192,16 @@ was given when building libc++ then that
 </blockquote>
 </p>
 
+<p>
+<h3 class="lit-option">color_diagnostics</h3>
+<blockquote class="lit-option-desc">
+Enable the use of colorized compile diagnostics. If the
+<code>color_diagnostics</code> option is specified or the enviroment variable
+<code>LIBCXX_COLOR_DIAGNOSTICS</code> is present then color diagnostics will be
+enabled.
+</blockquote>
+</p>
+
 </div>
 </body>
 </html>





More information about the cfe-commits mailing list