|
|
|
@ -19,6 +19,7 @@ from . import mlog |
|
|
|
|
from .compilers import * |
|
|
|
|
from .mesonlib import EnvironmentException, Popen_safe |
|
|
|
|
import configparser |
|
|
|
|
import shlex |
|
|
|
|
import shutil |
|
|
|
|
|
|
|
|
|
build_filename = 'meson.build' |
|
|
|
@ -369,7 +370,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(): |
|
|
|
@ -377,7 +380,7 @@ class Environment: |
|
|
|
|
else: |
|
|
|
|
exe_wrap = [] |
|
|
|
|
elif evar in os.environ: |
|
|
|
|
compilers = os.environ[evar].split() |
|
|
|
|
compilers = shlex.split(os.environ[evar]) |
|
|
|
|
ccache = [] |
|
|
|
|
is_cross = False |
|
|
|
|
exe_wrap = None |
|
|
|
@ -406,13 +409,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. |
|
|
|
@ -421,7 +424,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:' |
|
|
|
|