aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/linkers/linkers.py
diff options
context:
space:
mode:
Diffstat (limited to 'mesonbuild/linkers/linkers.py')
-rw-r--r--mesonbuild/linkers/linkers.py27
1 files changed, 19 insertions, 8 deletions
diff --git a/mesonbuild/linkers/linkers.py b/mesonbuild/linkers/linkers.py
index bbd6c46..9332baa 100644
--- a/mesonbuild/linkers/linkers.py
+++ b/mesonbuild/linkers/linkers.py
@@ -59,7 +59,7 @@ class StaticLinker:
def get_exelist(self) -> T.List[str]:
return self.exelist.copy()
- def get_std_link_args(self) -> T.List[str]:
+ def get_std_link_args(self, is_thin: bool) -> T.List[str]:
return []
def get_buildtype_linker_args(self, buildtype: str) -> T.List[str]:
@@ -176,7 +176,7 @@ class ArLikeLinker(StaticLinker):
# in fact, only the 'ar' id can
return False
- def get_std_link_args(self) -> T.List[str]:
+ def get_std_link_args(self, is_thin: bool) -> T.List[str]:
return self.std_args
def get_output_args(self, target: str) -> T.List[str]:
@@ -193,17 +193,28 @@ class ArLinker(ArLikeLinker):
super().__init__(exelist)
stdo = mesonlib.Popen_safe(self.exelist + ['-h'])[1]
# Enable deterministic builds if they are available.
+ stdargs = 'csr'
+ thinargs = ''
if '[D]' in stdo:
- self.std_args = ['csrD']
- else:
- self.std_args = ['csrD']
+ stdargs += 'D'
+ if '[T]' in stdo:
+ thinargs = 'T'
+ self.std_args = [stdargs]
+ self.std_thin_args = [stdargs + thinargs]
self.can_rsp = '@<' in stdo
def can_linker_accept_rsp(self) -> bool:
return self.can_rsp
+ def get_std_link_args(self, is_thin: bool) -> T.List[str]:
+ # FIXME: osx ld rejects this: "file built for unknown-unsupported file format"
+ if is_thin and not mesonlib.is_osx():
+ return self.std_thin_args
+ else:
+ return self.std_args
+
-class ArmarLinker(ArLikeLinker): # lgtm [py/missing-call-to-init]
+class ArmarLinker(ArLikeLinker):
id = 'armar'
@@ -214,7 +225,7 @@ class DLinker(StaticLinker):
self.arch = arch
self.__rsp_syntax = rsp_syntax
- def get_std_link_args(self) -> T.List[str]:
+ def get_std_link_args(self, is_thin: bool) -> T.List[str]:
return ['-lib']
def get_output_args(self, target: str) -> T.List[str]:
@@ -1114,7 +1125,7 @@ class PGIStaticLinker(StaticLinker):
self.id = 'ar'
self.std_args = ['-r']
- def get_std_link_args(self) -> T.List[str]:
+ def get_std_link_args(self, is_thin: bool) -> T.List[str]:
return self.std_args
def get_output_args(self, target: str) -> T.List[str]: