aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/compilers
diff options
context:
space:
mode:
authorJon Turney <jon.turney@dronecode.org.uk>2018-10-30 20:25:50 +0000
committerJon Turney <jon.turney@dronecode.org.uk>2018-12-06 13:25:16 +0000
commita872b925ea41be3e6beffeb934030068c0d83be9 (patch)
treec7a51c46a30202cb4109570a7c7c032be4e133f5 /mesonbuild/compilers
parent4db1b3a09f8e1f9faf7747beca2bc77ae0e5a6a5 (diff)
downloadmeson-a872b925ea41be3e6beffeb934030068c0d83be9.zip
meson-a872b925ea41be3e6beffeb934030068c0d83be9.tar.gz
meson-a872b925ea41be3e6beffeb934030068c0d83be9.tar.bz2
Store the target architecture for CL-like compilers
Store the MSVC compiler target architecture ('x86', 'x64' or 'ARM' (this is ARM64, I believe)), rather than just if it's x64 or not. The regex used for target architecture should be ok, based on this list of [1] version outputs, but we assume x86 if no match, for safety's sake. [1] https://stackoverflow.com/a/1233332/1951600 Also detect arch even if cl outputs version to stdout. Ditto for clang-cl Future work: is_64 is now only used in get_instruction_set_args()
Diffstat (limited to 'mesonbuild/compilers')
-rw-r--r--mesonbuild/compilers/c.py9
-rw-r--r--mesonbuild/compilers/cpp.py8
2 files changed, 9 insertions, 8 deletions
diff --git a/mesonbuild/compilers/c.py b/mesonbuild/compilers/c.py
index b009645..46f4181 100644
--- a/mesonbuild/compilers/c.py
+++ b/mesonbuild/compilers/c.py
@@ -1290,7 +1290,7 @@ class VisualStudioCCompiler(CCompiler):
'mtd': ['/MTd'],
}
- def __init__(self, exelist, version, is_cross, exe_wrap, is_64):
+ def __init__(self, exelist, version, is_cross, exe_wrap, target):
CCompiler.__init__(self, exelist, version, is_cross, exe_wrap)
self.id = 'msvc'
# /showIncludes is needed for build dependency tracking in Ninja
@@ -1300,7 +1300,8 @@ class VisualStudioCCompiler(CCompiler):
'2': ['/W3'],
'3': ['/W4']}
self.base_options = ['b_pch', 'b_ndebug', 'b_vscrt'] # FIXME add lto, pgo and the like
- self.is_64 = is_64
+ self.target = target
+ self.is_64 = ('x64' in target) or ('x86_64' in target)
# Override CCompiler.get_always_args
def get_always_args(self):
@@ -1588,8 +1589,8 @@ class VisualStudioCCompiler(CCompiler):
class ClangClCCompiler(VisualStudioCCompiler):
- def __init__(self, exelist, version, is_cross, exe_wrap, is_64):
- super().__init__(exelist, version, is_cross, exe_wrap, is_64)
+ def __init__(self, exelist, version, is_cross, exe_wrap, target):
+ super().__init__(exelist, version, is_cross, exe_wrap, target)
self.id = 'clang-cl'
diff --git a/mesonbuild/compilers/cpp.py b/mesonbuild/compilers/cpp.py
index 87371c0..d702e83 100644
--- a/mesonbuild/compilers/cpp.py
+++ b/mesonbuild/compilers/cpp.py
@@ -308,9 +308,9 @@ class IntelCPPCompiler(IntelCompiler, CPPCompiler):
class VisualStudioCPPCompiler(VisualStudioCCompiler, CPPCompiler):
- def __init__(self, exelist, version, is_cross, exe_wrap, is_64):
+ def __init__(self, exelist, version, is_cross, exe_wrap, target):
CPPCompiler.__init__(self, exelist, version, is_cross, exe_wrap)
- VisualStudioCCompiler.__init__(self, exelist, version, is_cross, exe_wrap, is_64)
+ VisualStudioCCompiler.__init__(self, exelist, version, is_cross, exe_wrap, target)
self.base_options = ['b_pch', 'b_vscrt'] # FIXME add lto, pgo and the like
def get_options(self):
@@ -387,8 +387,8 @@ class VisualStudioCPPCompiler(VisualStudioCCompiler, CPPCompiler):
return VisualStudioCCompiler.get_compiler_check_args(self)
class ClangClCPPCompiler(VisualStudioCPPCompiler, ClangClCCompiler):
- def __init__(self, exelist, version, is_cross, exe_wrap, is_64):
- VisualStudioCPPCompiler.__init__(self, exelist, version, is_cross, exe_wrap, is_64)
+ def __init__(self, exelist, version, is_cross, exe_wrap, target):
+ VisualStudioCPPCompiler.__init__(self, exelist, version, is_cross, exe_wrap, target)
self.id = 'clang-cl'
class ArmCPPCompiler(ArmCompiler, CPPCompiler):