diff options
Diffstat (limited to 'mesonbuild/linkers/linkers.py')
-rw-r--r-- | mesonbuild/linkers/linkers.py | 27 |
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]: |