aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2016-07-01 23:18:06 +0300
committerJussi Pakkanen <jpakkane@gmail.com>2016-07-01 23:18:06 +0300
commit4f63fe498314c385de2d3b6a3a953d15985914d2 (patch)
tree65f5ab3224d7f6c7c0aaf0a7246cab54bb85dc76
parentcc775d64c9ca73e9a02710a84ac9f0a5fc01c593 (diff)
downloadmeson-4f63fe498314c385de2d3b6a3a953d15985914d2.zip
meson-4f63fe498314c385de2d3b6a3a953d15985914d2.tar.gz
meson-4f63fe498314c385de2d3b6a3a953d15985914d2.tar.bz2
Enable colored output with GCC. Ninja redirects stdout/stderr so by default GCC thinks it is not talking to a terminal.
-rw-r--r--mesonbuild/compilers.py26
1 files changed, 24 insertions, 2 deletions
diff --git a/mesonbuild/compilers.py b/mesonbuild/compilers.py
index 5d94182..30cd2bc 100644
--- a/mesonbuild/compilers.py
+++ b/mesonbuild/compilers.py
@@ -129,6 +129,10 @@ msvc_winlibs = ['kernel32.lib', 'user32.lib', 'gdi32.lib',
'winspool.lib', 'shell32.lib', 'ole32.lib', 'oleaut32.lib',
'uuid.lib', 'comdlg32.lib', 'advapi32.lib']
+gnu_color_args = {'auto' : ['-fdiagnostics-color=auto'],
+ 'always': ['-fdiagnostics-color=always'],
+ 'never' : ['-fdiagnostics-color=never'],
+ }
base_options = {
'b_pch': coredata.UserBooleanOption('b_pch', 'Use precompiled headers', True),
@@ -144,6 +148,9 @@ base_options = {
'b_coverage': coredata.UserBooleanOption('b_coverage',
'Enable coverage tracking.',
False),
+ 'b_colorout' : coredata.UserComboOption('b_colorout', 'Use colored output',
+ ['auto', 'always', 'never'],
+ 'always'),
}
def sanitizer_compile_args(value):
@@ -169,6 +176,10 @@ def get_base_compile_args(options, compiler):
except KeyError:
pass
try:
+ args += compiler.get_colorout_args(options['b_colorout'].value)
+ except KeyError:
+ pass
+ try:
args += sanitizer_compile_args(options['b_sanitize'].value)
except KeyError:
pass
@@ -325,6 +336,9 @@ class Compiler():
extra_flags += environment.cross_info.config['properties'].get(lang_link_args_key, [])
return extra_flags
+ def get_colorout_args(self, colortype):
+ return []
+
class CCompiler(Compiler):
def __init__(self, exelist, version, is_cross, exe_wrapper=None):
super().__init__(exelist, version)
@@ -1624,10 +1638,14 @@ class GnuCCompiler(CCompiler):
self.warn_args = {'1': ['-Wall', '-Winvalid-pch'],
'2': ['-Wall', '-Wextra', '-Winvalid-pch'],
'3' : ['-Wall', '-Wpedantic', '-Wextra', '-Winvalid-pch']}
- self.base_options = ['b_pch', 'b_lto', 'b_pgo', 'b_sanitize', 'b_coverage']
+ self.base_options = ['b_pch', 'b_lto', 'b_pgo', 'b_sanitize', 'b_coverage',
+ 'b_colorout']
if self.gcc_type != GCC_OSX:
self.base_options.append('b_lundef')
+ def get_colorout_args(self, colortype):
+ return gnu_color_args[colortype][:]
+
def get_pic_args(self):
if self.gcc_type == GCC_MINGW:
return [] # On Window gcc defaults to fpic being always on.
@@ -1807,10 +1825,14 @@ class GnuCPPCompiler(CPPCompiler):
self.warn_args = {'1': ['-Wall', '-Winvalid-pch', '-Wnon-virtual-dtor'],
'2': ['-Wall', '-Wextra', '-Winvalid-pch', '-Wnon-virtual-dtor'],
'3': ['-Wall', '-Wpedantic', '-Wextra', '-Winvalid-pch', '-Wnon-virtual-dtor']}
- self.base_options = ['b_pch', 'b_lto', 'b_pgo', 'b_sanitize', 'b_coverage']
+ self.base_options = ['b_pch', 'b_lto', 'b_pgo', 'b_sanitize', 'b_coverage',
+ 'b_colorout']
if self.gcc_type != GCC_OSX:
self.base_options.append('b_lundef')
+ def get_colorout_args(self, colortype):
+ return gnu_color_args[colortype][:]
+
def get_always_args(self):
return ['-pipe']