aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/environment.py
diff options
context:
space:
mode:
authorMichael Hirsch, Ph.D <scivision@users.noreply.github.com>2019-04-10 09:32:15 -0400
committerMichael Hirsch, Ph.D <scivision@users.noreply.github.com>2019-04-27 23:19:01 -0400
commit3a75bb5259abbcae820b47f5f4633c564411893b (patch)
tree0b76a73ad5502db32137c931f9aae4f61a2e02fe /mesonbuild/environment.py
parentee40533b61ba9694e783e3333362e91fff964171 (diff)
downloadmeson-3a75bb5259abbcae820b47f5f4633c564411893b.zip
meson-3a75bb5259abbcae820b47f5f4633c564411893b.tar.gz
meson-3a75bb5259abbcae820b47f5f4633c564411893b.tar.bz2
detect Intel ICL on windows
ICL CPP working
Diffstat (limited to 'mesonbuild/environment.py')
-rw-r--r--mesonbuild/environment.py20
1 files changed, 15 insertions, 5 deletions
diff --git a/mesonbuild/environment.py b/mesonbuild/environment.py
index e0cb998..ff24795 100644
--- a/mesonbuild/environment.py
+++ b/mesonbuild/environment.py
@@ -13,7 +13,6 @@
# limitations under the License.
import os, platform, re, sys, shlex, shutil, subprocess
-from typing import List
from . import coredata
from .linkers import ArLinker, ArmarLinker, VisualStudioLinker, DLinker, CcrxLinker
@@ -61,6 +60,8 @@ from .compilers import (
IntelCCompiler,
IntelCPPCompiler,
IntelFortranCompiler,
+ IntelClCCompiler,
+ IntelClCPPCompiler,
JavaCompiler,
MonoCompiler,
CudaCompiler,
@@ -677,6 +678,7 @@ class Environment:
arg = '-v'
else:
arg = '--version'
+
try:
p, out, err = Popen_safe(compiler + [arg])
except OSError as e:
@@ -685,6 +687,11 @@ class Environment:
if 'ccrx' in compiler[0]:
out = err
+ if 'icl' in compiler[0]:
+ # https://software.intel.com/en-us/cpp-compiler-developer-guide-and-reference-alphabetical-list-of-compiler-options
+ # https://software.intel.com/en-us/fortran-compiler-developer-guide-and-reference-logo
+ # most consistent way for ICL is to just let compiler error and tell version
+ out = err
full_version = out.split('\n', 1)[0]
version = search_version(out)
@@ -784,12 +791,15 @@ class Environment:
if mesonlib.for_darwin(want_cross, self):
compiler_type = CompilerType.ICC_OSX
elif mesonlib.for_windows(want_cross, self):
- # TODO: fix ICC on Windows
- compiler_type = CompilerType.ICC_WIN
+ raise EnvironmentException('At the time of authoring, there was no ICC for Windows')
else:
compiler_type = CompilerType.ICC_STANDARD
cls = IntelCCompiler if lang == 'c' else IntelCPPCompiler
return cls(ccache + compiler, version, compiler_type, is_cross, exe_wrap, full_version=full_version)
+ if out.startswith('Intel(R) C++') and mesonlib.for_windows(want_cross, self):
+ cls = IntelClCCompiler if lang == 'c' else IntelClCPPCompiler
+ target = 'x64' if 'Intel(R) 64 Compiler' in out else 'x86'
+ return cls(compiler, version, is_cross, exe_wrap, target)
if 'ARM' in out:
compiler_type = CompilerType.ARM_WIN
cls = ArmCCompiler if lang == 'c' else ArmCPPCompiler
@@ -1053,8 +1063,8 @@ class Environment:
# up to date language version at time (2016).
if exelist is not None:
if os.path.basename(exelist[-1]).startswith(('ldmd', 'gdmd')):
- raise EnvironmentException('Meson does not support {} as it is only a DMD frontend for another compiler.'.format(exelist[-1])
- 'Please provide a valid value for DC or unset it so that Meson can resolve the compiler by itself.')
+ raise EnvironmentException('Meson does not support {} as it is only a DMD frontend for another compiler.'
+ 'Please provide a valid value for DC or unset it so that Meson can resolve the compiler by itself.'.format(exelist[-1]))
else:
for d in self.default_d:
if shutil.which(d):