aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/environment.py
diff options
context:
space:
mode:
authorDylan Baker <dylan@pnwbakers.com>2019-08-21 13:21:49 -0700
committerDylan Baker <dylan@pnwbakers.com>2019-10-07 10:44:56 -0700
commitff4a17dbef08a1d8afd075f57dbab0f5c76951ab (patch)
tree5c0e08f3150679fd0e220ca1006b7ddee3a08e40 /mesonbuild/environment.py
parent1ea3182f827db7c038ac20089437a6202eec02c0 (diff)
downloadmeson-ff4a17dbef08a1d8afd075f57dbab0f5c76951ab.zip
meson-ff4a17dbef08a1d8afd075f57dbab0f5c76951ab.tar.gz
meson-ff4a17dbef08a1d8afd075f57dbab0f5c76951ab.tar.bz2
compilers: Add a specific type for AppleClangC
This allows us to detect use classes rather than methods to determine what C standards are available.
Diffstat (limited to 'mesonbuild/environment.py')
-rw-r--r--mesonbuild/environment.py23
1 files changed, 15 insertions, 8 deletions
diff --git a/mesonbuild/environment.py b/mesonbuild/environment.py
index 03c6568..d488f77 100644
--- a/mesonbuild/environment.py
+++ b/mesonbuild/environment.py
@@ -65,6 +65,8 @@ from .compilers import (
ArmCPPCompiler,
ArmclangCCompiler,
ArmclangCPPCompiler,
+ AppleClangCCompiler,
+ AppleClangCPPCompiler,
ClangCCompiler,
ClangCPPCompiler,
ClangObjCCompiler,
@@ -947,20 +949,25 @@ class Environment:
return cls(compiler, version, for_machine, is_cross, exe_wrap, target, linker=linker)
if 'clang' in out:
linker = None
- cls = ClangCCompiler if lang == 'c' else ClangCPPCompiler
- if 'Apple' in out or self.machines[for_machine].is_darwin():
- compiler_type = CompilerType.CLANG_OSX
- elif 'windows' in out or self.machines[for_machine].is_windows():
- compiler_type = CompilerType.CLANG_MINGW
- # If we're in a MINGW context this actually will use a gnu style ld
+
+ # Even if the for_machine is darwin, we could be using vanilla
+ # clang.
+ if 'Apple' in out:
+ cls = AppleClangCCompiler if lang == 'c' else AppleClangCPPCompiler
+ else:
+ cls = ClangCCompiler if lang == 'c' else ClangCPPCompiler
+
+ if 'windows' in out or self.machines[for_machine].is_windows():
+ # If we're in a MINGW context this actually will use a gnu
+ # style ld, but for clang on "real" windows we'll use
+ # either link.exe or lld-link.exe
try:
linker = self._guess_win_linker(compiler, for_machine, cls.LINKER_PREFIX)
except MesonException:
pass
- else:
- compiler_type = CompilerType.CLANG_STANDARD
if linker is None:
linker = self._guess_nix_linker(compiler, for_machine, cls.LINKER_PREFIX)
+
return cls(ccache + compiler, version, compiler_type, for_machine, is_cross, exe_wrap, full_version=full_version, linker=linker)
if 'Intel(R) C++ Intel(R)' in err:
version = search_version(err)