aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormohdamerkhalidi <mohdamerkhalidi@users.noreply.github.com>2018-08-15 01:34:43 +0530
committerJussi Pakkanen <jpakkane@gmail.com>2018-08-14 23:04:43 +0300
commit28754ea621930a812f6c885d3c64cd90d95b4ce8 (patch)
treecee85c5a929d5cb0bdccacb9920528d35c03ba41
parent9b3671e711619505e9bd422cbc328c0078154bc9 (diff)
downloadmeson-28754ea621930a812f6c885d3c64cd90d95b4ce8.zip
meson-28754ea621930a812f6c885d3c64cd90d95b4ce8.tar.gz
meson-28754ea621930a812f6c885d3c64cd90d95b4ce8.tar.bz2
Adding a new AR Linker Class for the ARM Compiler. (#3949)
-rw-r--r--mesonbuild/environment.py4
-rw-r--r--mesonbuild/linkers.py14
2 files changed, 14 insertions, 4 deletions
diff --git a/mesonbuild/environment.py b/mesonbuild/environment.py
index 6688c62..c64fe59 100644
--- a/mesonbuild/environment.py
+++ b/mesonbuild/environment.py
@@ -15,7 +15,7 @@
import configparser, os, platform, re, shlex, shutil, subprocess
from . import coredata
-from .linkers import ArLinker, VisualStudioLinker
+from .linkers import ArLinker, ArmarLinker, VisualStudioLinker
from . import mesonlib
from .mesonlib import EnvironmentException, Popen_safe
from . import mlog
@@ -885,6 +885,8 @@ This is probably wrong, it should always point to the native compiler.''' % evar
continue
if '/OUT:' in out or '/OUT:' in err:
return VisualStudioLinker(linker)
+ if p.returncode == 0 and ('armar' in linker or 'armar.exe' in linker):
+ return ArmarLinker(linker)
if p.returncode == 0:
return ArLinker(linker)
if p.returncode == 1 and err.startswith('usage'): # OSX
diff --git a/mesonbuild/linkers.py b/mesonbuild/linkers.py
index 7e89de5..6e40ab4 100644
--- a/mesonbuild/linkers.py
+++ b/mesonbuild/linkers.py
@@ -83,9 +83,6 @@ class ArLinker(StaticLinker):
self.std_args = ['csrD']
else:
self.std_args = ['csr']
- # For 'armar' the options should be prefixed with '-'.
- if 'armar' in stdo:
- self.std_args = ['-csr']
def can_linker_accept_rsp(self):
return mesonlib.is_windows()
@@ -129,3 +126,14 @@ class ArLinker(StaticLinker):
def get_link_debugfile_args(self, targetfile):
return []
+
+class ArmarLinker(ArLinker):
+
+ def __init__(self, exelist):
+ self.exelist = exelist
+ self.id = 'armar'
+ self.std_args = ['-csr']
+
+ def can_linker_accept_rsp(self):
+ # armar cann't accept arguments using the @rsp syntax
+ return False