|
|
|
@ -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) |
|
|
|
|