aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/compilers/detect.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2022-01-10 19:01:11 +0200
committerGitHub <noreply@github.com>2022-01-10 19:01:11 +0200
commit251d6f0f5db26b82f4f0e78f0552cd606bd8d9dd (patch)
tree924b11960206319b8b37763a1fbf776d215a0c52 /mesonbuild/compilers/detect.py
parent3ab08265c0526509ea9d5a8e8aff0ff5012f8281 (diff)
parentf30e83efd6968eacf07ebe3f1400e06a8a529778 (diff)
downloadmeson-251d6f0f5db26b82f4f0e78f0552cd606bd8d9dd.zip
meson-251d6f0f5db26b82f4f0e78f0552cd606bd8d9dd.tar.gz
meson-251d6f0f5db26b82f4f0e78f0552cd606bd8d9dd.tar.bz2
Merge pull request #9739 from mathstuf/armclang-support
Armclang support
Diffstat (limited to 'mesonbuild/compilers/detect.py')
-rw-r--r--mesonbuild/compilers/detect.py28
1 files changed, 28 insertions, 0 deletions
diff --git a/mesonbuild/compilers/detect.py b/mesonbuild/compilers/detect.py
index 03c5226..572ec35 100644
--- a/mesonbuild/compilers/detect.py
+++ b/mesonbuild/compilers/detect.py
@@ -54,6 +54,7 @@ from .c import (
AppleClangCCompiler,
ArmCCompiler,
ArmclangCCompiler,
+ ArmLtdClangCCompiler,
ClangCCompiler,
ClangClCCompiler,
GnuCCompiler,
@@ -74,6 +75,7 @@ from .cpp import (
AppleClangCPPCompiler,
ArmCPPCompiler,
ArmclangCPPCompiler,
+ ArmLtdClangCPPCompiler,
ClangCPPCompiler,
ClangClCPPCompiler,
GnuCPPCompiler,
@@ -97,6 +99,7 @@ from .d import (
from .cuda import CudaCompiler
from .fortran import (
FortranCompiler,
+ ArmLtdFlangFortranCompiler,
G95FortranCompiler,
GnuFortranCompiler,
ElbrusFortranCompiler,
@@ -462,6 +465,20 @@ def _detect_c_or_cpp_compiler(env: 'Environment', lang: str, for_machine: Machin
ccache + compiler, version, for_machine, is_cross, info,
exe_wrap, linker=linker, full_version=full_version)
+ if 'Arm C/C++/Fortran Compiler' in out:
+ arm_ver_match = re.search('version (\d+)\.(\d+) \(build number (\d+)\)', out)
+ arm_ver_major = arm_ver_match.group(1)
+ arm_ver_minor = arm_ver_match.group(2)
+ arm_ver_build = arm_ver_match.group(3)
+ version = '.'.join([arm_ver_major, arm_ver_minor, arm_ver_build])
+ if lang == 'c':
+ cls = ArmLtdClangCCompiler
+ elif lang == 'cpp':
+ cls = ArmLtdClangCPPCompiler
+ linker = guess_nix_linker(env, compiler, cls, for_machine)
+ return cls(
+ ccache + compiler, version, for_machine, is_cross, info,
+ exe_wrap, linker=linker)
if 'armclang' in out:
# The compiler version is not present in the first line of output,
# instead it is present in second line, startswith 'Component:'.
@@ -711,6 +728,17 @@ def detect_fortran_compiler(env: 'Environment', for_machine: MachineChoice) -> C
compiler, version, for_machine, is_cross, info,
exe_wrap, defines, full_version=full_version, linker=linker)
+ if 'Arm C/C++/Fortran Compiler' in out:
+ cls = ArmLtdFlangFortranCompiler
+ arm_ver_match = re.search('version (\d+)\.(\d+) \(build number (\d+)\)', out)
+ arm_ver_major = arm_ver_match.group(1)
+ arm_ver_minor = arm_ver_match.group(2)
+ arm_ver_build = arm_ver_match.group(3)
+ version = '.'.join([arm_ver_major, arm_ver_minor, arm_ver_build])
+ linker = guess_nix_linker(env, compiler, cls, for_machine)
+ return cls(
+ ccache + compiler, version, for_machine, is_cross, info,
+ exe_wrap, linker=linker)
if 'G95' in out:
cls = G95FortranCompiler
linker = guess_nix_linker(env, compiler, cls, for_machine)