diff options
author | Fabio Porcedda <fabio.porcedda@gmail.com> | 2017-02-17 16:35:03 +0100 |
---|---|---|
committer | Fabio Porcedda <fabio.porcedda@gmail.com> | 2017-02-17 17:11:17 +0100 |
commit | 16d4c466fc39d1331e4c9b48d0af7602772faa50 (patch) | |
tree | f020e94bb2f430c095d3936523dc6f831b8dfcf5 /mesonbuild/environment.py | |
parent | aa7f496144f69fdda4bfaa3cb9f5136c171a15b8 (diff) | |
download | meson-16d4c466fc39d1331e4c9b48d0af7602772faa50.zip meson-16d4c466fc39d1331e4c9b48d0af7602772faa50.tar.gz meson-16d4c466fc39d1331e4c9b48d0af7602772faa50.tar.bz2 |
detect_c_compiler(): support extra commands and arguments in the string
- Hanlde correctly a multi command string in evironment variable, e.g.:
CC="ccache gcc" meson
- Handle correctly a list for the cross-file option, e.g:
[binaries]
c = ['ccache', '/usr/local/bin/mips-linuc-gcc']
This commit fixes #1392.
Diffstat (limited to 'mesonbuild/environment.py')
-rw-r--r-- | mesonbuild/environment.py | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/mesonbuild/environment.py b/mesonbuild/environment.py index 47ab918..a7d1750 100644 --- a/mesonbuild/environment.py +++ b/mesonbuild/environment.py @@ -349,7 +349,9 @@ class Environment: def detect_c_compiler(self, want_cross): evar = 'CC' if self.is_cross_build() and want_cross: - compilers = [self.cross_info.config['binaries']['c']] + compilers = self.cross_info.config['binaries']['c'] + if not isinstance(compilers, list): + compilers = [compilers] ccache = [] is_cross = True if self.cross_info.need_exe_wrapper(): @@ -386,13 +388,13 @@ class Environment: continue gtype = self.get_gnu_compiler_type(defines) version = self.get_gnu_version_from_defines(defines) - return GnuCCompiler(ccache + [compiler], version, gtype, is_cross, exe_wrap, defines) + return GnuCCompiler(ccache + compilers, version, gtype, is_cross, exe_wrap, defines) if 'clang' in out: if 'Apple' in out or for_darwin(want_cross, self): cltype = CLANG_OSX else: cltype = CLANG_STANDARD - return ClangCCompiler(ccache + [compiler], version, cltype, is_cross, exe_wrap) + return ClangCCompiler(ccache + compilers, version, cltype, is_cross, exe_wrap) if 'Microsoft' in out or 'Microsoft' in err: # Visual Studio prints version number to stderr but # everything else to stdout. Why? Lord only knows. @@ -401,7 +403,7 @@ class Environment: if '(ICC)' in out: # TODO: add microsoft add check OSX inteltype = ICC_STANDARD - return IntelCCompiler(ccache + [compiler], version, inteltype, is_cross, exe_wrap) + return IntelCCompiler(ccache + compilers, version, inteltype, is_cross, exe_wrap) errmsg = 'Unknown compiler(s): "' + ', '.join(compilers) + '"' if popen_exceptions: errmsg += '\nThe follow exceptions were encountered:' |