§
    ƒnóc»Ù  ã                  ó   — d dl mZ d dlZd dlZd dlZd dlZddlmZ ddlm	Z	m
Z
 ddlmZ ej        rddlmZ ddlmZ dd	lmZ ej         G d
„ dej        ¦  «        ¦   «         Z G d„ d¦  «        Z G d„ d¦  «        Z G d„ dee¦  «        Z G d„ dee¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d „ d!e¦  «        Z  G d"„ d#e¦  «        Z! G d$„ d%e¦  «        Z" G d&„ d'e"¦  «        Z# G d(„ d)e¦  «        Z$dsd1„Z%dtd3„Z&dud5„Z' G d6„ d7ej(        ¬8¦  «        Z) G d9„ d:¦  «        Z* G d;„ d<¦  «        Z+ G d=„ d>e*e)¦  «        Z, G d?„ d@e,¦  «        Z- G dA„ dBe+e*e)¦  «        Z. G dC„ dDe.¦  «        Z/ G dE„ dFe.¦  «        Z0 G dG„ dHe.¦  «        Z1 G dI„ dJe+e*e)¦  «        Z2 G dK„ dLe+e*e)¦  «        Z3 G dM„ dNe)¦  «        Z4 G dO„ dPe)¦  «        Z5 G dQ„ dRe)¦  «        Z6 G dS„ dTe)¦  «        Z7 G dU„ dVe7¦  «        Z8 G dW„ dXe*e)¦  «        Z9 G dY„ dZe9¦  «        Z: G d[„ d\e2¦  «        Z; G d]„ d^e*e)¦  «        Z< G d_„ d`e*e)¦  «        Z=e=Z> G da„ dbe¦  «        Z?e?Z@ G dc„ dd¦  «        ZA G de„ dfeAe)¦  «        ZB G dg„ dheAe)¦  «        ZC G di„ djeAe)¦  «        ZD G dk„ dle*e)¦  «        ZE G dm„ dne*e)¦  «        ZF G do„ dpeAe)¦  «        ZG G dq„ dre*e)¦  «        ZHdS )vé    )ÚannotationsNé   )Úmesonlib)ÚEnvironmentExceptionÚMesonException©ÚCompilerArgs)ÚKeyedOptionDictType)ÚEnvironment)ÚMachineChoicec                  óN   — e Zd ZdZ ej        ¦   «         Z ej        ¦   «         ZdS )ÚRSPFileSyntaxz,Which RSP file syntax the compiler supports.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚenumÚautoÚMSVCÚGCC© ó    ú</usr/lib/python3/dist-packages/mesonbuild/linkers/linkers.pyr   r      s0   € € € € € ð 7Ð6àˆ4Œ9‰;Œ;€DØ
ˆ$Œ)‰+Œ+€C€C€Cr   r   c                  óÜ   — e Zd ZU ded<   d/d„Zd0d1d„Zd2d„Zd3d„Zd4d„Zd5d„Z	d6d„Z
d7d„Zd4d„Zd8d"„Zd9d#„Zd4d$„Zd3d%„Zed:d&„¦   «         Zed:d'„¦   «         Zd;d)„Zd<d*„Zd4d+„Zd4d,„Zd=d.„ZdS )>ÚStaticLinkerÚstrÚidÚexelistúT.List[str]c                ó   — || _         d S ©N)r   )Úselfr   s     r   Ú__init__zStaticLinker.__init__,   ó   € ØˆŒˆˆr   NÚargsúT.Optional[T.Iterable[str]]Úreturnr	   c                ó"   — t          | |¦  «        S r!   r   ©r"   r%   s     r   Úcompiler_argszStaticLinker.compiler_args/   s   € Ý˜D $Ñ'Ô'Ð'r   Úboolc                ó(   — t          j        ¦   «         S )z[
        Determines whether the linker can accept arguments using the @rsp syntax.
        ©r   Ú
is_windows©r"   s    r   Úcan_linker_accept_rspz"StaticLinker.can_linker_accept_rsp2   s   € õ Ô"Ñ$Ô$Ð$r   Úoptionsú'KeyedOptionDictType'c                ó   — g S )z=Like compilers.get_base_link_args, but for the static linker.r   ©r"   r1   s     r   Úget_base_link_argszStaticLinker.get_base_link_args8   ó   € àˆ	r   c                ó4   — | j                              ¦   «         S r!   ©r   Úcopyr/   s    r   Úget_exelistzStaticLinker.get_exelist<   ó   € ØŒ|× Ò Ñ"Ô"Ð"r   Úenvú'Environment'Úis_thinc                ó   — g S r!   r   ©r"   r<   r>   s      r   Úget_std_link_argszStaticLinker.get_std_link_args?   ó   € Øˆ	r   Ú	buildtypec                ó   — g S r!   r   ©r"   rC   s     r   Úget_buildtype_linker_argsz&StaticLinker.get_buildtype_linker_argsB   rB   r   Útargetc                ó   — g S r!   r   ©r"   rG   s     r   Úget_output_argszStaticLinker.get_output_argsE   rB   r   c                ó   — g S r!   r   r/   s    r   Úget_coverage_link_argsz#StaticLinker.get_coverage_link_argsH   rB   r   Ú	build_dirÚfrom_dirÚrpath_pathsúT.Tuple[str, ...]Úbuild_rpathÚinstall_rpathú"T.Tuple[T.List[str], T.Set[bytes]]c                ó"   — g t          ¦   «         fS r!   ©Úset©r"   r<   rM   rN   rO   rQ   rR   s          r   Úbuild_rpath_argszStaticLinker.build_rpath_argsK   ó   € ð •C‘E”Eˆ{Ðr   c                ó   — g S r!   r   ©r"   r<   s     r   Úthread_link_flagszStaticLinker.thread_link_flagsP   rB   r   c                ó   — g S r!   r   r/   s    r   Úopenmp_flagszStaticLinker.openmp_flagsS   rB   r   c                ó   — g S r!   r   r4   s     r   Úget_option_link_argsz!StaticLinker.get_option_link_argsV   rB   r   c                ó   — |d d …         S r!   r   ©Úclsr%   s     r   Úunix_args_to_nativez StaticLinker.unix_args_to_nativeY   ó   € à�A�A�AŒwˆr   c                ó   — |d d …         S r!   r   rb   s     r   Únative_args_to_unixz StaticLinker.native_args_to_unix]   re   r   Ú
targetfilec                ó   — d S r!   r   ©r"   rh   s     r   Úget_link_debugfile_namez$StaticLinker.get_link_debugfile_namea   ó   € Øˆtr   c                ó   — g S r!   r   rj   s     r   Úget_link_debugfile_argsz$StaticLinker.get_link_debugfile_argsd   r6   r   c                ó   — g S r!   r   r/   s    r   Úget_always_argszStaticLinker.get_always_argsh   rB   r   c                ó   — g S r!   r   r/   s    r   Úget_linker_always_argsz#StaticLinker.get_linker_always_argsk   rB   r   r   c                ó|   — |                       ¦   «         rJ | j        › d�¦   «         ‚t          | j        › d�¦  «        ‚)ú£The format of the RSP file that this compiler supports.

        If `self.can_linker_accept_rsp()` returns True, then this needs to
        be implemented
        zI linker accepts RSP, but doesn' provide a supported format, this is a bugz8 does not implement rsp format, this shouldn't be called)r0   r   r   r/   s    r   Úrsp_file_syntaxzStaticLinker.rsp_file_syntaxn   s`   € ð ×-Ò-Ñ/Ô/ð  	Hð  	H°D´Gð  2Hð  2Hð  2Hñ  	Hô  	Hð  	HÝ" d¤gÐ#hÐ#hÐ#hÑiÔiÐir   ©r   r   r!   )r%   r&   r'   r	   ©r'   r+   ©r1   r2   r'   r   ©r'   r   ©r<   r=   r>   r+   r'   r   ©rC   r   r'   r   ©rG   r   r'   r   ©r<   r=   rM   r   rN   r   rO   rP   rQ   r   rR   r   r'   rS   ©r<   r=   r'   r   ©r%   r   r'   r   ©rh   r   r'   r   ©rh   r   r'   r   ©r'   r   )r   r   r   Ú__annotations__r#   r*   r0   r5   r:   rA   rF   rJ   rL   rX   r\   r^   r`   Úclassmethodrd   rg   rk   rn   rp   rr   ru   r   r   r   r   r   (   sÒ  € € € € € € à€G€G�Gðð ð ð ð(ð (ð (ð (ð (ð%ð %ð %ð %ðð ð ð ð#ð #ð #ð #ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ð
ð ð ð ðð ð ð ðð ð ð ð ðð ð ñ „[ðð ðð ð ñ „[ððð ð ð ðð ð ð ðð ð ð ðð ð ð ðjð jð jð jð jð jr   r   c                  ól   — e Zd ZdgZdd„Zdd„Zdd„Zdd
„Zedd„¦   «         Z	edd„¦   «         Z
dd„ZdS )ÚVisualStudioLikeLinkerz/NOLOGOÚmachiner   c                ó   — || _         d S r!   ©r‡   )r"   r‡   s     r   r#   zVisualStudioLikeLinker.__init__{   r$   r   r'   r   c                ó4   — | j                              ¦   «         S r!   ©Úalways_argsr9   r/   s    r   rp   z&VisualStudioLikeLinker.get_always_args~   ó   € ØÔ×$Ò$Ñ&Ô&Ð&r   c                ó4   — | j                              ¦   «         S r!   r‹   r/   s    r   rr   z-VisualStudioLikeLinker.get_linker_always_args�   r�   r   rG   c                óF   — g }| j         r|d| j         z   gz  }|d|z   gz  }|S ©Nz	/MACHINE:ú/OUT:r‰   )r"   rG   r%   s      r   rJ   z&VisualStudioLikeLinker.get_output_args„   s<   € ØˆØŒ<ð 	1Ø�[ 4¤<Ñ/Ð0Ñ0ˆDØ�˜6Ñ!Ð"Ñ"ˆØˆr   r%   c                ó8   — ddl m} |                     |¦  «        S ©Nr   )ÚVisualStudioCCompiler)Úcompilers.cr”   rd   ©rc   r%   r”   s      r   rd   z*VisualStudioLikeLinker.unix_args_to_native‹   ó(   € à7Ð7Ð7Ð7Ð7Ð7Ø$×8Ò8¸Ñ>Ô>Ð>r   c                ó8   — ddl m} |                     |¦  «        S r“   )r•   r”   rg   r–   s      r   rg   z*VisualStudioLikeLinker.native_args_to_unix�   r—   r   r   c                ó   — t           j        S r!   ©r   r   r/   s    r   ru   z&VisualStudioLikeLinker.rsp_file_syntax•   ó   € ÝÔ!Ð!r   N)r‡   r   ry   r|   r   r‚   )r   r   r   rŒ   r#   rp   rr   rJ   r„   rd   rg   ru   r   r   r   r†   r†   x   s¿   € € € € € Ø�+€Kðð ð ð ð'ð 'ð 'ð 'ð'ð 'ð 'ð 'ðð ð ð ð ð?ð ?ð ?ñ „[ð?ð ð?ð ?ð ?ñ „[ð?ð"ð "ð "ð "ð "ð "r   r†   c                  ó   — e Zd ZdZdd„ZdS )	ÚVisualStudioLinkerzMicrosoft's lib static linker.r   r   r‡   r   c                ór   — t                                | |¦  «         t                               | |¦  «         d S r!   ©r   r#   r†   ©r"   r   r‡   s      r   r#   zVisualStudioLinker.__init__�   ó4   € Ý×Ò˜d GÑ,Ô,Ð,Ý×'Ò'¨¨gÑ6Ô6Ð6Ð6Ð6r   N©r   r   r‡   r   ©r   r   r   r   r#   r   r   r   r�   r�   ™   s.   € € € € € à(Ð(ð7ð 7ð 7ð 7ð 7ð 7r   r�   c                  ó   — e Zd ZdZdd„ZdS )	ÚIntelVisualStudioLinkerzIntel's xilib static linker.r   r   r‡   r   c                ór   — t                                | |¦  «         t                               | |¦  «         d S r!   rŸ   r    s      r   r#   z IntelVisualStudioLinker.__init__¦   r¡   r   Nr¢   r£   r   r   r   r¥   r¥   ¢   s.   € € € € € à&Ð&ð7ð 7ð 7ð 7ð 7ð 7r   r¥   c                  ó4   — e Zd ZdgZdd„Zdd	„Zdd„Zdd„ZdS )ÚArLikeLinkerú-csrr'   r+   c                ó   — dS ©NFr   r/   s    r   r0   z"ArLikeLinker.can_linker_accept_rsp¯   s	   € ð ˆur   r<   r=   r>   r   c                ó   — | j         S r!   ©Ústd_argsr@   s      r   rA   zArLikeLinker.get_std_link_args´   ó
   € ØŒ}Ðr   rG   r   c                ó   — |gS r!   r   rI   s     r   rJ   zArLikeLinker.get_output_args·   ó	   € Øˆxˆr   r   c                ó   — t           j        S r!   ©r   r   r/   s    r   ru   zArLikeLinker.rsp_file_syntaxº   s   € ÝÔ Ð r   Nrw   rz   r|   r‚   )r   r   r   r®   r0   rA   rJ   ru   r   r   r   r¨   r¨   «   sk   € € € € € àˆx€Hðð ð ð ð
ð ð ð ðð ð ð ð!ð !ð !ð !ð !ð !r   r¨   c                  ó4   ‡ — e Zd ZdZdˆ fd„Zdd	„Zdd„Zˆ xZS )ÚArLinkerÚarÚfor_machineúmesonlib.MachineChoicer   r   c                óü   •— t          ¦   «                              |¦  «         t          j        | j        dgz   ¦  «        d         }d}d}d|v r|dz  }d|v rd}|g| _        ||z   g| _        d	|v | _        || _        d S )
Nz-hé   ÚcsrÚ z[D]ÚDz[T]ÚTz@<)	Úsuperr#   r   Ú
Popen_safer   r®   Ústd_thin_argsÚcan_rspr·   )r"   r·   r   ÚstdoÚstdargsÚthinargsÚ	__class__s         €r   r#   zArLinker.__init__Á   s•   ø€ Ý‰Œ×Ò˜Ñ!Ô!Ð!ÝÔ" 4¤<°4°&Ñ#8Ñ9Ô9¸!Ô<ˆàˆØˆØ�Dˆ=ˆ=Ø�s‰NˆGØ�Dˆ=ˆ=ØˆHØ ˜	ˆŒØ%¨Ñ0Ð1ˆÔØ˜t�|ˆŒØ&ˆÔÐÐr   r'   r+   c                ó   — | j         S r!   )rÂ   r/   s    r   r0   zArLinker.can_linker_accept_rspÐ   s
   € ØŒ|Ðr   r<   r=   r>   c                ó²   — |rO|j         | j                                      ¦   «         s+|j         | j                                      ¦   «         s| j        S | j        S r!   )Úmachinesr·   Ú	is_darwinÚis_sunosrÁ   r®   r@   s      r   rA   zArLinker.get_std_link_argsÓ   sX   € ð
 ð 	!˜3œ<¨Ô(8Ô9×CÒCÑEÔEð 	!Ø”,˜tÔ/Ô0×9Ò9Ñ;Ô;ð	!àÔ%Ð%à”=Ð r   )r·   r¸   r   r   rw   rz   )r   r   r   r   r#   r0   rA   Ú__classcell__©rÆ   s   @r   rµ   rµ   ¾   sj   ø€ € € € € Ø	€Bð'ð 'ð 'ð 'ð 'ð 'ðð ð ð ð	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!r   rµ   c                  ó   — e Zd ZdZdS )ÚAppleArLinkerÚapplearN©r   r   r   r   r   r   r   rÏ   rÏ   ß   s   € € € € € ð 
€B€B€Br   rÏ   c                  ó   — e Zd ZdZdS )ÚArmarLinkerÚarmarNrÑ   r   r   r   rÓ   rÓ   æ   s   € € € € € Ø	€B€B€Br   rÓ   c                  óP   ‡ — e Zd Zej        dœdˆ fd„Zdd„Zdd„Zdd„Zdd„Z	ˆ xZ
S )ÚDLinker)Ú
rsp_syntaxr   r   Úarchr   r×   r   c               ó€   •— t          ¦   «                              |¦  «         |d         | _        || _        || _        d S )Nr   )r¿   r#   r   rØ   Ú_DLinker__rsp_syntax)r"   r   rØ   r×   rÆ   s       €r   r#   zDLinker.__init__ë   s;   ø€ Ý‰Œ×Ò˜Ñ!Ô!Ð!Ø˜!”*ˆŒØˆŒ	Ø&ˆÔÐÐr   r<   r=   r>   r+   r'   c                ó   — dgS )Nz-libr   r@   s      r   rA   zDLinker.get_std_link_argsñ   r±   r   rG   c                ó   — d|z   gS )Nz-of=r   rI   s     r   rJ   zDLinker.get_output_argsô   s   € Ø˜‘Ð Ð r   c                ó€   — t          j        ¦   «         r*| j        dk    rdgS | j        dk    r| j        dk    rdgS dgS g S )NÚx86_64z-m64Ú
x86_mscoffÚdmdz
-m32mscoffz-m32)r   r.   rØ   r   r/   s    r   rr   zDLinker.get_linker_always_args÷   sT   € ÝÔÑ Ô ð 	ØŒy˜HÒ$Ð$Ø�x�Ø”˜lÒ*Ð*¨t¬w¸%Ò/?Ð/?Ø$�~Ð%Ø�8ˆOØˆ	r   c                ó   — | j         S r!   )rÚ   r/   s    r   ru   zDLinker.rsp_file_syntax   s   € ØÔ Ð r   )r   r   rØ   r   r×   r   rz   r|   ry   r‚   )r   r   r   r   r   r#   rA   rJ   rr   ru   rÌ   rÍ   s   @r   rÖ   rÖ   ê   s�   ø€ € € € € ØWdÔWhð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ðð ð ð ð!ð !ð !ð !ðð ð ð ð!ð !ð !ð !ð !ð !ð !ð !r   rÖ   c                  ó8   ‡ — e Zd Zdˆ fd„Zdd„Zdd	„Zdd
„Zˆ xZS )Ú
CcrxLinkerr   r   c                óX   •— t          ¦   «                              |¦  «         d| _        d S )NÚrlink©r¿   r#   r   ©r"   r   rÆ   s     €r   r#   zCcrxLinker.__init__  ó&   ø€ Ý‰Œ×Ò˜Ñ!Ô!Ð!ØˆŒˆˆr   r'   r+   c                ó   — dS r«   r   r/   s    r   r0   z CcrxLinker.can_linker_accept_rsp
  ó   € Øˆur   rG   r   c                ó   — d|› �gS ©Nz-output=r   rI   s     r   rJ   zCcrxLinker.get_output_args  s   € Ø#˜6Ð#Ð#Ð$Ð$r   c                ó
   — ddgS )Nz-nologoz-form=libraryr   r/   s    r   rr   z!CcrxLinker.get_linker_always_args  s   € Ø˜?Ð+Ð+r   rv   rw   r|   ry   ©r   r   r   r#   r0   rJ   rr   rÌ   rÍ   s   @r   rã   rã     sy   ø€ € € € € ðð ð ð ð ð ðð ð ð ð%ð %ð %ð %ð,ð ,ð ,ð ,ð ,ð ,ð ,ð ,r   rã   c                  ó8   ‡ — e Zd Zdˆ fd„Zdd„Zdd	„Zdd
„Zˆ xZS )Ú
Xc16Linkerr   r   c                óX   •— t          ¦   «                              |¦  «         d| _        d S )Nzxc16-arræ   rç   s     €r   r#   zXc16Linker.__init__  s&   ø€ Ý‰Œ×Ò˜Ñ!Ô!Ð!ØˆŒˆˆr   r'   r+   c                ó   — dS r«   r   r/   s    r   r0   z Xc16Linker.can_linker_accept_rsp  rê   r   rG   r   c                ó
   — |› gS r!   r   rI   s     r   rJ   zXc16Linker.get_output_args  ó   € Ø�ˆ}Ðr   c                ó   — dgS )NÚrcsr   r/   s    r   rr   z!Xc16Linker.get_linker_always_args   s	   € Øˆwˆr   rv   rw   r|   ry   rî   rÍ   s   @r   rð   rð     sy   ø€ € € € € ðð ð ð ð ð ðð ð ð ðð ð ð ðð ð ð ð ð ð ð r   rð   c                  ó0   ‡ — e Zd Zd
ˆ fd„Zdd„Zdd	„Zˆ xZS )ÚCompCertLinkerr   r   c                óX   •— t          ¦   «                              |¦  «         d| _        d S )NÚccompræ   rç   s     €r   r#   zCompCertLinker.__init__%  rè   r   r'   r+   c                ó   — dS r«   r   r/   s    r   r0   z$CompCertLinker.can_linker_accept_rsp)  rê   r   rG   r   c                ó   — d|› �gS ©Nz-or   rI   s     r   rJ   zCompCertLinker.get_output_args,  s   € Ø�V��ˆÐr   rv   rw   r|   )r   r   r   r#   r0   rJ   rÌ   rÍ   s   @r   rø   rø   #  se   ø€ € € € € ðð ð ð ð ð ðð ð ð ðð ð ð ð ð ð ð r   rø   c                  ó8   ‡ — e Zd Zdˆ fd„Zdd„Zdd	„Zdd
„Zˆ xZS )ÚTILinkerr   r   c                óX   •— t          ¦   «                              |¦  «         d| _        d S )Nzti-arræ   rç   s     €r   r#   zTILinker.__init__2  rè   r   r'   r+   c                ó   — dS r«   r   r/   s    r   r0   zTILinker.can_linker_accept_rsp6  rê   r   rG   r   c                ó
   — |› gS r!   r   rI   s     r   rJ   zTILinker.get_output_args9  rô   r   c                ó   — dgS )Nú-rr   r/   s    r   rr   zTILinker.get_linker_always_args<  s	   € Øˆvˆr   rv   rw   r|   ry   rî   rÍ   s   @r   rÿ   rÿ   0  sy   ø€ € € € € ðð ð ð ð ð ðð ð ð ðð ð ð ðð ð ð ð ð ð ð r   rÿ   c                  ó   — e Zd ZdZdS )ÚC2000LinkerÚar2000NrÑ   r   r   r   r  r  @  ó   € € € € € à	€B€B€Br   r  c                  ó   — e Zd ZdZddgZdS )ÚAIXArLinkerÚaixarr©   z-XanyN)r   r   r   r   r®   r   r   r   r
  r
  E  s   € € € € € Ø	€BØ˜Ð €H€H€Hr   r
  Ú
raw_rpathsrP   rM   r   rN   r'   r   c                óF   ‡‡— ˆˆfd„| D ¦   «         }t          |¦  «        }|S )Nc                ó2   •— g | ]}t          |‰‰¦  «        ‘ŒS r   )Úevaluate_rpath)Ú.0ÚprM   rN   s     €€r   ú
<listcomp>z"prepare_rpaths.<locals>.<listcomp>N  s%   ø€ ÐYÐYÐYÈ�n¨Q°	¸8ÑDÔDÐYÐYÐYr   )Úorder_rpaths)r  rM   rN   Úinternal_format_rpathsÚordered_rpathss    ``  r   Úprepare_rpathsr  J  s8   øø€ ð ZÐYÐYÐYÐYÈjÐYÑYÔYÐÝ!Ð"8Ñ9Ô9€NØÐr   Ú
rpath_listc                óB   — t          | t          j        j        ¬¦  «        S )N)Úkey)ÚsortedÚosÚpathÚisabs)r  s    r   r  r  S  s   € õ �*¥"¤'¤-Ð0Ñ0Ô0Ð0r   r  c                ó  — | |k    rdS t           j                             | ¦  «        r| S t           j                             t           j                             || ¦  «        t           j                             ||¦  «        ¦  «        S ©Nr¼   )r  r  r  ÚrelpathÚjoin)r  rM   rN   s      r   r  r  _  sc   € ØˆH‚}€}ØˆrÝ	Œ�Š�qÑ	Ô	ð ^ØˆåŒw�Š�rœwŸ|š|¨I°qÑ9Ô9½2¼7¿<º<È	ÐS[Ñ;\Ô;\Ñ]Ô]Ð]r   c                  ó°  — e Zd ZdZg g g g g g dœZej        dTd„¦   «         ZdUd	„Zd
dœdVd„Z	dTd„Z
dTd„ZdTd„ZdWd„ZdXd„ZdYd„ZdWd„ZdTd„ZdZd„Zd[d$„Zd\d&„Zd]d'„ZdWd(„ZdZd)„ZdWd*„ZdWd+„Zd^d-„Zd_d/„Zd`d1„ZdWd2„Zdad3„ZdWd4„Zej         dbd6„¦   «         Z!dWd7„Z"ej         dcd9„¦   «         Z#ddd:„Z$ded<„Z%ddd=„Z&dWd>„Z'dWd?„Z(dWd@„Z)dfdA„Z*d_dB„Z+dWdC„Z,dgdK„Z-dhdR„Z.dSS )iÚDynamicLinkerzBase class for dynamic linkers.©ÚplainÚdebugÚdebugoptimizedÚreleaseÚminsizeÚcustomr'   r   c                ó   — d S r!   r   r/   s    r   r   zDynamicLinker.idt  ó   € àˆr   ÚargúT.Union[str, T.List[str]]r   c                óÈ   ‡ — t          |t          ¦  «        r|gn|}‰ j        €|S t          ‰ j        t          ¦  «        rˆ fd„|D ¦   «         S g }|D ]}|‰ j        |gz   z  }Œ|S )Nc                ó$   •— g | ]}‰j         |z   ‘ŒS r   )Ú
prefix_arg)r  r-  r"   s     €r   r  z/DynamicLinker._apply_prefix.<locals>.<listcomp>}  s    ø€ Ð:Ð:Ð:¨c�D”O cÑ)Ð:Ð:Ð:r   )Ú
isinstancer   r1  )r"   r-  r%   Úrets   `   r   Ú_apply_prefixzDynamicLinker._apply_prefixx  s†   ø€ Ý" 3­Ñ,Ô,Ð5�ˆuˆu°#ˆØŒ?Ð"ØˆKÝ˜œ­Ñ-Ô-ð 	;Ø:Ð:Ð:Ð:°TÐ:Ñ:Ô:Ð:ØˆØð 	+ð 	+ˆCØ�4”? c UÑ*Ñ*ˆCˆCØˆ
r   úunknown version©Úversionr   r·   r¸   r1  rŒ   r7  c               óZ   — || _         || _        || _        || _        || _        d | _        d S r!   )r   r·   r7  r1  rŒ   r‡   )r"   r   r·   r1  rŒ   r7  s         r   r#   zDynamicLinker.__init__ƒ  s4   € ð ˆŒØ&ˆÔØˆŒØ$ˆŒØ&ˆÔØˆŒˆˆr   c                óŽ   — d                      t          | ¦  «        j        | j        d                     | j        ¦  «        ¦  «        S )Nz<{}: v{} `{}`>ú )ÚformatÚtyper   r7  r!  r   r/   s    r   Ú__repr__zDynamicLinker.__repr__�  s5   € Ø×&Ò&¥t¨D¡z¤zÔ':¸D¼LÈ#Ï(Ê(ÐSWÔS_ÑJ`ÔJ`ÑaÔaÐar   c                ó   — | j         S r!   )r   r/   s    r   Úget_idzDynamicLinker.get_id�  s	   € ØŒwˆr   c                ó(   — d| j         › d| j        › d�S )Nú(r:  ú))r   r7  r/   s    r   Úget_version_stringz DynamicLinker.get_version_string“  s   € Ø,�4”7Ð,Ð,˜Tœ\Ð,Ð,Ð,Ð,r   c                ó4   — | j                              ¦   «         S r!   r8   r/   s    r   r:   zDynamicLinker.get_exelist–  r;   r   r+   c                ó(   — t          j        ¦   «         S r!   r-   r/   s    r   Úget_accepts_rspzDynamicLinker.get_accepts_rsp™  s   € õ Ô"Ñ$Ô$Ð$r   r   c                ó   — t           j        S )rt   r³   r/   s    r   ru   zDynamicLinker.rsp_file_syntaxž  s   € õ Ô Ð r   c                ó4   — | j                              ¦   «         S r!   r‹   r/   s    r   rp   zDynamicLinker.get_always_args¦  r�   r   c                ó   — dS r  r   r/   s    r   Úget_lib_prefixzDynamicLinker.get_lib_prefix©  ó   € Øˆrr   r1   r2   c                ó   — g S r!   r   r4   s     r   Úget_option_argszDynamicLinker.get_option_args®  rB   r   r%   r<   r=   úT.Tuple[bool, bool]c                ó2   — t          d| j        › d�¦  «        ‚)Nz	Language z+ does not support has_multi_link_arguments.©r   r   )r"   r%   r<   s      r   Úhas_multi_argumentsz!DynamicLinker.has_multi_arguments±  s   € Ý"Ð#c¨t¬wÐ#cÐ#cÐ#cÑdÔdÐdr   rh   c                ó   — dS )z*Name of debug file written out (see below)Nr   rj   s     r   Úget_debugfile_namez DynamicLinker.get_debugfile_name´  s   € àˆtr   c                ó   — g S )zëSome compilers (MSVC) write debug into a separate file.

        This method takes the target object path and returns a list of
        commands to append to the linker invocation to control where that
        file is written.
        r   rj   s     r   Úget_debugfile_argsz DynamicLinker.get_debugfile_args¸  s	   € ð ˆ	r   c                ó   — g S r!   r   r/   s    r   Úget_std_shared_lib_argsz%DynamicLinker.get_std_shared_lib_argsÁ  rB   r   c                ó*   — |                       ¦   «         S r!   )rW  r4   s     r   Úget_std_shared_module_argsz(DynamicLinker.get_std_shared_module_argsÄ  s   € Ø×+Ò+Ñ-Ô-Ð-r   c                ó2   — t          d| j        › d�¦  «        ‚)NúLinker z1 does not support position-independent executablerP  r/   s    r   Úget_pie_argszDynamicLinker.get_pie_argsÇ  s    € õ #Ð#g¨T¬WÐ#gÐ#gÐ#gÑhÔhÐhr   c                ó   — g S r!   r   r/   s    r   Úget_lto_argszDynamicLinker.get_lto_argsÍ  rB   r   r  c                ó   — g S r!   r   ©r"   r  s     r   Úget_thinlto_cache_argsz$DynamicLinker.get_thinlto_cache_argsÐ  rB   r   Úvaluec                ó   — g S r!   r   ©r"   rb  s     r   Úsanitizer_argszDynamicLinker.sanitizer_argsÓ  rB   r   rC   c                ó   — | j         |         S r!   )Ú_BUILDTYPE_ARGSrE   s     r   Úget_buildtype_argsz DynamicLinker.get_buildtype_argsÖ  s   € ð Ô# IÔ.Ð.r   c                ó   — g S r!   r   r/   s    r   Úget_asneeded_argszDynamicLinker.get_asneeded_argsÛ  rB   r   c                ó2   — t          d| j        › d�¦  «        ‚)Nr[  z does not support link_wholerP  r)   s     r   Úget_link_whole_forz DynamicLinker.get_link_whole_forÞ  s$   € Ý"Ø;�d”gÐ;Ð;Ð;ñ=ô =ð 	=r   c                ó2   — t          d| j        › d�¦  «        ‚)Nr[  z! does not support allow undefinedrP  r/   s    r   Úget_allow_undefined_argsz&DynamicLinker.get_allow_undefined_argsâ  s'   € Ý"Ø@�d”gÐ@Ð@Ð@ñBô Bð 	Br   Úoutnamec                ó   — d S r!   r   ©r"   ro  s     r   rJ   zDynamicLinker.get_output_argsæ  r,  r   c                ó2   — t          d| j        › d�¦  «        ‚)Nr[  z, doesn't implement coverage data generation.rP  r/   s    r   Úget_coverage_argszDynamicLinker.get_coverage_argsê  s   € Ý"Ð#b¨T¬WÐ#bÐ#bÐ#bÑcÔcÐcr   Údirnamec                ó   — d S r!   r   ©r"   rt  s     r   Úget_search_argszDynamicLinker.get_search_argsí  r,  r   c                ó   — g S r!   r   r[   s     r   Úexport_dynamic_argsz!DynamicLinker.export_dynamic_argsñ  rB   r   Ú
implibnamec                ó   — g S )z„The name of the outputted import library.

        This implementation is used only on Windows by compilers that use GNU ld
        r   ©r"   rz  s     r   Úimport_library_argsz!DynamicLinker.import_library_argsô  s	   € ð
 ˆ	r   c                ó   — g S r!   r   r[   s     r   Úthread_flagszDynamicLinker.thread_flagsû  rB   r   c                ó   — g S )a  Arguments to error if there are any undefined symbols at link time.

        This is the inverse of get_allow_undefined_args().

        TODO: A future cleanup might merge this and
              get_allow_undefined_args() into a single method taking a
              boolean
        r   r/   s    r   Úno_undefined_argszDynamicLinker.no_undefined_argsþ  s	   € ð ˆ	r   c                ó   — g S )z&Arguments to make all warnings errors.r   r/   s    r   Úfatal_warningszDynamicLinker.fatal_warnings	  r6   r   c                ó   — g S r!   r   r/   s    r   Úheaderpad_argszDynamicLinker.headerpad_args  r6   r   c                ó   — g S r!   r   rd  s     r   Úget_gui_app_argszDynamicLinker.get_gui_app_args  r6   r   c                ó   — g S r!   r   rd  s     r   Úget_win_subsystem_argsz$DynamicLinker.get_win_subsystem_args  s	   € ð ˆ	r   c                ó    — t          d¦  «        ‚)Nz,This linker does not support bitcode bundles©r   r/   s    r   Úbitcode_argszDynamicLinker.bitcode_args  s   € ÝÐKÑLÔLÐLr   rM   rN   rO   rP   rQ   rR   rS   c                ó"   — g t          ¦   «         fS r!   rU   rW   s          r   rX   zDynamicLinker.build_rpath_args  rY   r   ÚprefixÚ
shlib_nameÚsuffixÚ	soversionÚdarwin_versionsúT.Tuple[str, str]c                ó   — g S r!   r   ©r"   r<   rŽ  r�  r�  r‘  r’  s          r   Úget_soname_argszDynamicLinker.get_soname_args"  r6   r   N©r'   r   ©r-  r.  r'   r   ©
r   r   r·   r¸   r1  r.  rŒ   r   r7  r   ry   rw   r‚   rx   )r%   r   r<   r=   r'   rN  r€   r�   ©r  r   r'   r   ©rb  r   r'   r   r{   r   ©ro  r   r'   r   ©rt  r   r'   r   r~   ©rz  r   r'   r   ©rb  r+   r'   r   r}   ©r<   r=   rŽ  r   r�  r   r�  r   r‘  r   r’  r“  r'   r   )/r   r   r   r   rg  ÚabcÚabstractpropertyr   r4  r#   r=  r?  rC  r:   rF  ru   rp   rJ  rM  rQ  rS  rU  rW  rY  r\  r^  ra  re  rh  rj  rl  rn  ÚabstractmethodrJ   rs  rw  ry  r}  r  r�  rƒ  r…  r‡  r‰  rŒ  rX   r–  r   r   r   r#  r#  g  sž  € € € € € à)Ð)ð ØØØØØðð €Oð 	Ôðð ð ñ Ôðð	ð 	ð 	ð 	ð >Oðð ð ð ð ð ðbð bð bð bðð ð ð ð-ð -ð -ð -ð#ð #ð #ð #ð%ð %ð %ð %ð
!ð !ð !ð !ð'ð 'ð 'ð 'ðð ð ð ð
ð ð ð ðeð eð eð eðð ð ð ðð ð ð ðð ð ð ð.ð .ð .ð .ðið ið ið iðð ð ð ðð ð ð ðð ð ð ð/ð /ð /ð /ð
ð ð ð ð=ð =ð =ð =ðBð Bð Bð Bð 	Ôðð ð ñ Ôððdð dð dð dð 	Ôðð ð ñ Ôððð ð ð ðð ð ð ðð ð ð ð	ð 	ð 	ð 	ðð ð ð ðð ð ð ðð ð ð ðð ð ð ð
Mð Mð Mð Mðð ð ð ð
ð ð ð ð ð r   r#  )Ú	metaclassc                  ó*   — e Zd ZdZdd„Zdd„Zdd	„Zd
S )ÚPosixDynamicLinkerMixinzëMixin class for POSIX-ish linkers.

    This is obviously a pretty small subset of the linker interface, but
    enough dynamic linkers that meson supports are POSIX-like but not
    GNU-like that it makes sense to split this out.
    ro  r   r'   r   c                ó
   — d|gS rý   r   rq  s     r   rJ   z'PosixDynamicLinkerMixin.get_output_args0  s   € Ø�gˆÐr   c                ó   — dgS )Nú-sharedr   r/   s    r   rW  z/PosixDynamicLinkerMixin.get_std_shared_lib_args3  s
   € Øˆ{Ðr   rt  c                ó   — d|z   gS ©Nz-Lr   rv  s     r   rw  z'PosixDynamicLinkerMixin.get_search_args6  s   € Ø�w‘ÐÐr   Nrœ  ry   r�  )r   r   r   r   rJ   rW  rw  r   r   r   r¦  r¦  '  sZ   € € € € € ðð ðð ð ð ðð ð ð ð ð  ð  ð  ð  ð  r   r¦  c            
      óâ   — e Zd ZdZej        rej        Zd8d„Z	g g g dgg g dœZ
d	d
ddddddddœ	Zd9d„Zd:d„Zd:d„Zd;d„Zd:d„Zd:d„Zd<d„Zd:d„Zd=d!„Zd>d#„Zd=d$„Zd:d%„Zd:d&„Zd?d-„Zd@d5„Zd<d6„Zd7S )AÚGnuLikeDynamicLinkerMixinz²Mixin class for dynamic linkers that provides gnu-like interface.

    This acts as a base for the GNU linkers (bfd and gold), LLVM's lld, and
    other linkers like GNU-ld.
    r-  r.  r'   r   c                ó   — d S r!   r   ©r"   r-  s     r   r4  z'GnuLikeDynamicLinkerMixin._apply_prefixD  ó   € € € r   z-O1r$  Ú1ÚwindowsÚconsoleÚ7Ú10Ú11Ú12Ú13Ú16)	Únativer²  r³  ÚposixÚefi_applicationÚefi_boot_service_driverÚefi_runtime_driverÚefi_romÚboot_applicationrC   r   c                óZ   ‡ — t          j        ˆ fd„‰ j        |         D ¦   «         ¦  «        S )Nc                ó:   •— g | ]}‰                      |¦  «        ‘ŒS r   ©r4  ©r  Úar"   s     €r   r  z@GnuLikeDynamicLinkerMixin.get_buildtype_args.<locals>.<listcomp>^  ó'   ø€ Ð `Ð `Ð `¸1 ×!3Ò!3°AÑ!6Ô!6Ð `Ð `Ð `r   ©r   Úlistifyrg  rE   s   ` r   rh  z,GnuLikeDynamicLinkerMixin.get_buildtype_args[  s4   ø€ õ ÔÐ `Ð `Ð `Ð `ÀÔ@TÐU^Ô@_Ð `Ñ `Ô `ÑaÔaÐar   c                ó   — dgS )Nz-pier   r/   s    r   r\  z&GnuLikeDynamicLinkerMixin.get_pie_args`  r±   r   c                ó,   — |                       d¦  «        S )Nz--as-neededrÃ  r/   s    r   rj  z+GnuLikeDynamicLinkerMixin.get_asneeded_argsc  s   € Ø×!Ò! -Ñ0Ô0Ð0r   r%   c                óf   — |s|S |                       d¦  «        |z   |                       d¦  «        z   S ©Nz--whole-archivez--no-whole-archiverÃ  r)   s     r   rl  z,GnuLikeDynamicLinkerMixin.get_link_whole_forf  ó=   € Øð 	ØˆKØ×!Ò!Ð"3Ñ4Ô4°tÑ;¸d×>PÒ>PÐQeÑ>fÔ>fÑfÐfr   c                ó,   — |                       d¦  «        S ©Nú--allow-shlib-undefinedrÃ  r/   s    r   rn  z2GnuLikeDynamicLinkerMixin.get_allow_undefined_argsk  s   € Ø×!Ò!Ð";Ñ<Ô<Ð<r   c                ó   — dgS )Nz-fltor   r/   s    r   r^  z&GnuLikeDynamicLinkerMixin.get_lto_argsn  s
   € ØˆyÐr   rb  c                ó   — |dk    rg S d|z   gS ©NÚnonez-fsanitize=r   rd  s     r   re  z(GnuLikeDynamicLinkerMixin.sanitizer_argsq  ó   € Ø�FŠ?ˆ?ØˆIØ Ñ%Ð&Ð&r   c                ó   — dgS ©Nz
--coverager   r/   s    r   rs  z+GnuLikeDynamicLinkerMixin.get_coverage_argsv  ó
   € Øˆ~Ðr   r<   r=   c                óÊ   — |j         | j                 }|                     ¦   «         s|                     ¦   «         r|                      d¦  «        S |                      d¦  «        S )Nz--export-all-symbolsz-export-dynamic©rÉ   r·   r.   Ú	is_cygwinr4  )r"   r<   Úms      r   ry  z-GnuLikeDynamicLinkerMixin.export_dynamic_argsy  sZ   € ØŒL˜Ô)Ô*ˆØ�<Š<‰>Œ>ð 	>˜QŸ[š[™]œ]ð 	>Ø×%Ò%Ð&<Ñ=Ô=Ð=Ø×!Ò!Ð"3Ñ4Ô4Ð4r   rz  c                ó2   — |                       d|z   ¦  «        S )Nz--out-implib=rÃ  r|  s     r   r}  z-GnuLikeDynamicLinkerMixin.import_library_args  s   € Ø×!Ò! /°JÑ">Ñ?Ô?Ð?r   c                óT   — |j         | j                                      ¦   «         rg S dgS ©Nz-pthread)rÉ   r·   Úis_haikur[   s     r   r  z&GnuLikeDynamicLinkerMixin.thread_flags‚  s-   € ØŒ<˜Ô(Ô)×2Ò2Ñ4Ô4ð 	ØˆIØˆ|Ðr   c                ó,   — |                       d¦  «        S )Nz--no-undefinedrÃ  r/   s    r   r�  z+GnuLikeDynamicLinkerMixin.no_undefined_args‡  s   € Ø×!Ò!Ð"2Ñ3Ô3Ð3r   c                ó,   — |                       d¦  «        S )Nz--fatal-warningsrÃ  r/   s    r   rƒ  z(GnuLikeDynamicLinkerMixin.fatal_warningsŠ  ó   € Ø×!Ò!Ð"4Ñ5Ô5Ð5r   rŽ  r�  r�  r‘  r’  r“  c                óÊ   — |j         | j                 }|                     ¦   «         s|                     ¦   «         rg S |€dnd|z   }|                      d|› |› d|› |› �¦  «        S ©Nr¼   ú.z-soname,rÚ  )	r"   r<   rŽ  r�  r�  r‘  r’  rÜ  Úsostrs	            r   r–  z)GnuLikeDynamicLinkerMixin.get_soname_args�  sv   € àŒL˜Ô)Ô*ˆØ�<Š<‰>Œ>ð 	˜QŸ[š[™]œ]ð 	àˆIØÐ'��¨S°9©_ˆØ×!Ò!Ð"Q¨VÐ"Q°ZÐ"QÐ"QÀ&Ð"QÈ%Ð"QÐ"QÑRÔRÐRr   rM   rN   rO   rP   rQ   rR   rS   c           
     óæ  ‡— |j         | j                 }|                     ¦   «         s|                     ¦   «         rg t	          ¦   «         fS |s|s|sg t	          ¦   «         fS g }dŠt          |||¦  «        }	t          j        ˆfd„|	D ¦   «         ¦  «        }
t	          ¦   «         }|
D ]*}|                     | 	                    d¦  «        ¦  «         Œ+|dk    rU|
                     |¦  «         | 
                    d¦  «        D ]*}|                     | 	                    d¦  «        ¦  «         Œ+t          j        ¦   «         st          j        ¦   «         r(|                     |                      d¦  «        ¦  «         d                     |
¦  «        }t!          |¦  «        t!          |¦  «        k     r/dt!          |¦  «        t!          |¦  «        z
  z  }|s|}n|dz   |z   }|                     |                      d|z   ¦  «        ¦  «         t          j        ¦   «         r||fS |D ]K}|                     |                      d	t$          j                             ||¦  «        z   ¦  «        ¦  «         ŒL||fS )
Nú$ORIGINc                óP   •— g | ]"}t           j                             ‰|¦  «        ‘Œ#S r   ©r  r  r!  ©r  r  Úorigin_placeholders     €r   r  z>GnuLikeDynamicLinkerMixin.build_rpath_args.<locals>.<listcomp>¤  ó+   ø€ Ð(gÐ(gÐ(gÐQR­¬¯ªÐ6HÈ!Ñ)LÔ)LÐ(gÐ(gÐ(gr   Úutf8r¼   ú:z	-z,originÚXú-rpath,z-rpath-link,)rÉ   r·   r.   rÛ  rV   r  r   Ú
OrderedSetÚaddÚencodeÚsplitÚis_dragonflybsdÚ
is_openbsdÚextendr4  r!  ÚlenrË   r  r  )r"   r<   rM   rN   rO   rQ   rR   rÜ  r%   Úprocessed_rpathsÚ	all_pathsÚrpath_dirs_to_remover  ÚpathsÚpaddingrí  s                  @r   rX   z*GnuLikeDynamicLinkerMixin.build_rpath_args–  sŠ  ø€ ð ŒL˜Ô)Ô*ˆØ�<Š<‰>Œ>ð 	˜QŸ[š[™]œ]ð 	Ø�™œ�;ÐØð 	 =ð 	¸ð 	Ø�™œ�;ÐØˆØ&ÐÝ)¨+°yÀ(ÑKÔKÐõ Ô'Ð(gÐ(gÐ(gÐ(gÐVfÐ(gÑ(gÔ(gÑhÔhˆ	Ý"™uœuÐØð 	7ð 	7ˆAØ ×$Ò$ Q§X¢X¨fÑ%5Ô%5Ñ6Ô6Ð6Ð6à˜"ÒÐØ�MŠM˜+Ñ&Ô&Ð&Ø ×&Ò& sÑ+Ô+ð ;ð ;�Ø$×(Ò(¨¯ª°&Ñ)9Ô)9Ñ:Ô:Ð:Ð:õ Ô#Ñ%Ô%ð 	9­Ô)<Ñ)>Ô)>ð 	9ð �KŠK˜×*Ò*¨;Ñ7Ô7Ñ8Ô8Ð8ð —’˜Ñ#Ô#ˆÝˆu‰:Œ:�˜MÑ*Ô*Ò*Ð*Ø�S Ñ/Ô/µ#°e±*´*Ñ<Ñ=ˆGØð .Ø��à ™ gÑ-�Ø�Š�D×&Ò& y°5Ñ'8Ñ9Ô9Ñ:Ô:Ð:õ ÔÑÔð 	0ØÐ.Ð/Ð/ð" ð 	Yð 	YˆAØ�KŠK˜×*Ò*¨>½B¼G¿LºLÈÐTUÑ<VÔ<VÑ+VÑWÔWÑXÔXÐXÐXàÐ*Ð+Ð+r   c                óô   — d }d|v r|                      dd¦  «        \  }}| j                             |¦  «        }|�|�|d|› �z  }d|› �g}nt          j        d|›d�¦  «        ‚|                      |¦  «        S )Nú,rº   rð  ú--subsystem,úwin_subsystem: z: not handled in MinGW linker. This should not be possible.)rö  Ú_SUBSYSTEMSÚgetr   ÚMesonBugExceptionr4  )r"   rb  ÚversionsuffixÚnewvaluer%   s        r   r‰  z0GnuLikeDynamicLinkerMixin.get_win_subsystem_argsÚ  s·   € ð ˆØ�%ˆ<ˆ<Ø#(§;¢;¨s°AÑ#6Ô#6Ñ ˆE�=ØÔ#×'Ò'¨Ñ.Ô.ˆØÐØÐ(ØÐ/ Ð/Ð/Ñ/�Ø- 8Ð-Ð-Ð.ˆDˆDåÔ,ð  .C¸uð  .Cð  .Cð  .Cñ  Dô  Dð  Dà×!Ò! $Ñ'Ô'Ð'r   Nr˜  r{   ry   r   r›  r~   rž  r   r}   )r   r   r   r   r¾   ÚTYPE_CHECKINGr   ÚHOSTr·   r4  rg  r  rh  r\  rj  rl  rn  r^  re  rs  ry  r}  r  r�  rƒ  r–  rX   r‰  r   r   r   r­  r­  :  sß  € € € € € ðð ð 	„ð TØ#Ô(ˆØSÐSÐSÐSð ØØØ�7ØØðð €Oð ØØØØØ#'Ø"ØØ ð
ð 
€Kðbð bð bð bð
ð ð ð ð1ð 1ð 1ð 1ðgð gð gð gð
=ð =ð =ð =ðð ð ð ð'ð 'ð 'ð 'ð
ð ð ð ð5ð 5ð 5ð 5ð@ð @ð @ð @ðð ð ð ð
4ð 4ð 4ð 4ð6ð 6ð 6ð 6ðSð Sð Sð SðB,ð B,ð B,ð B,ðH(ð (ð (ð (ð (ð (r   r­  c                  ó†   — e Zd ZdZdZd)d„Zd)d„Zd*d	„Zd)d
„Zd+d„Z	d)d„Z
d,d„Zd)d„Zd)d„Zd)d„Zd)d„Zd-d„Zd.d%„Zd/d'„Zd(S )0ÚAppleDynamicLinkerzApple's ld implementation.Úld64r'   r   c                ó,   — |                       d¦  «        S )Nz-dead_strip_dylibsrÃ  r/   s    r   rj  z$AppleDynamicLinker.get_asneeded_argsô  s   € Ø×!Ò!Ð"6Ñ7Ô7Ð7r   c                ó,   — |                       d¦  «        S )Nú-undefined,dynamic_lookuprÃ  r/   s    r   rn  z+AppleDynamicLinker.get_allow_undefined_args÷  s   € Ø×!Ò!Ð"=Ñ>Ô>Ð>r   r1   r2   c                ó4   — dg|                       d¦  «        z   S )Nz-bundler  rÃ  r4   s     r   rY  z-AppleDynamicLinker.get_std_shared_module_argsú  s   € Øˆ{˜T×/Ò/Ð0KÑLÔLÑLÐLr   c                ó   — g S r!   r   r/   s    r   r\  zAppleDynamicLinker.get_pie_argsý  rB   r   r%   c                óŽ   — g }|D ]?}|                      |                      d¦  «        ¦  «         |                     |¦  «         Œ@|S )Nz-force_load)rù  r4  Úappend)r"   r%   ÚresultrÅ  s       r   rl  z%AppleDynamicLinker.get_link_whole_for   sP   € ØˆØð 	ð 	ˆAØ�MŠM˜$×,Ò,¨]Ñ;Ô;Ñ<Ô<Ð<Ø�MŠM˜!ÑÔÐÐØˆr   c                ó   — dgS r×  r   r/   s    r   rs  z$AppleDynamicLinker.get_coverage_args  rØ  r   rb  r   c                ó   — |dk    rg S d|z   gS rÓ  r   rd  s     r   re  z!AppleDynamicLinker.sanitizer_args
  rÕ  r   c                ó,   — |                       d¦  «        S )Nz-undefined,errorrÃ  r/   s    r   r�  z$AppleDynamicLinker.no_undefined_args  rã  r   c                ó,   — |                       d¦  «        S )Nz-headerpad_max_install_namesrÃ  r/   s    r   r…  z!AppleDynamicLinker.headerpad_args  s   € Ø×!Ò!Ð"@ÑAÔAÐAr   c                ó,   — |                       d¦  «        S )Nz-bitcode_bundlerÃ  r/   s    r   rŒ  zAppleDynamicLinker.bitcode_args  ó   € Ø×!Ò!Ð"3Ñ4Ô4Ð4r   c                ó,   — |                       d¦  «        S )Nz-fatal_warningsrÃ  r/   s    r   rƒ  z!AppleDynamicLinker.fatal_warnings  r  r   r<   r=   rŽ  r�  r�  r‘  r’  r“  c                óê   — d||g}|�|                      d|z   ¦  «         |                      d¦  «         dd                     |¦  «        g}|r%|                     d|d         d|d	         g¦  «         |S )
Nz@rpath/ræ  z.dylibz-install_namer¼   z-compatibility_versionr   z-current_versionrº   )r  r!  rù  )	r"   r<   rŽ  r�  r�  r‘  r’  Úinstall_namer%   s	            r   r–  z"AppleDynamicLinker.get_soname_args  s—   € à! 6¨:Ð6ˆØÐ Ø×Ò  i¡Ñ0Ô0Ð0Ø×Ò˜HÑ%Ô%Ð%Ø §¢¨Ñ!6Ô!6Ð7ˆØð 	BØ�KŠKÐ1°?À1Ô3EØ+¨_¸QÔ-?ðAñ Bô Bð Bàˆr   rM   rN   rO   rP   rQ   rR   rS   c                óP  ‡— |s|s|sg t          ¦   «         fS g }dŠt          |||¦  «        }t          j        ˆfd„|D ¦   «         ¦  «        }	|dk    r|	                     |¦  «         |	D ]-}
|                     |                      d|
z   ¦  «        ¦  «         Œ.|t          ¦   «         fS )Nz@loader_pathc                óP   •— g | ]"}t           j                             ‰|¦  «        ‘Œ#S r   rë  rì  s     €r   r  z7AppleDynamicLinker.build_rpath_args.<locals>.<listcomp>1  rî  r   r¼   rò  ©rV   r  r   ró  rô  rù  r4  ©r"   r<   rM   rN   rO   rQ   rR   r%   rû  rü  Úrprí  s              @r   rX   z#AppleDynamicLinker.build_rpath_args'  sÏ   ø€ ð ð 	 =ð 	¸ð 	Ø�™œ�;ÐØˆð ,ÐÝ)¨+°yÀ(ÑKÔKÐÝÔ'Ð(gÐ(gÐ(gÐ(gÐVfÐ(gÑ(gÔ(gÑhÔhˆ	Ø˜"ÒÐØ�MŠM˜+Ñ&Ô&Ð&Øð 	<ð 	<ˆBØ�KŠK˜×*Ò*¨9°r©>Ñ:Ô:Ñ;Ô;Ð;Ð;à•c‘e”eˆ}Ðr   r  c                ó   — d|z   gS )Nz-Wl,-cache_path_lto,r   r`  s     r   ra  z)AppleDynamicLinker.get_thinlto_cache_args9  s   € Ø&¨Ñ-Ð.Ð.r   Nry   rx   r   r›  r   r}   rš  )r   r   r   r   r   rj  rn  rY  r\  rl  rs  re  r�  r…  rŒ  rƒ  r–  rX   ra  r   r   r   r  r  î  s?  € € € € € à$Ð$à	€Bð8ð 8ð 8ð 8ð?ð ?ð ?ð ?ðMð Mð Mð Mðð ð ð ðð ð ð ðð ð ð ð'ð 'ð 'ð 'ð
6ð 6ð 6ð 6ðBð Bð Bð Bð5ð 5ð 5ð 5ð5ð 5ð 5ð 5ð
ð 
ð 
ð 
ðð ð ð ð$/ð /ð /ð /ð /ð /r   r  c                  ó   — e Zd ZdZdS )ÚLLVMLD64DynamicLinkerzld64.lldNrÑ   r   r   r   r&  r&  =  s   € € € € € à	€B€B€Br   r&  c                  ó   — e Zd ZdZdd„ZdS )ÚGnuDynamicLinkerz)Representation of GNU ld.bfd and ld.gold.r'   r+   c                ó   — dS )NTr   r/   s    r   rF  z GnuDynamicLinker.get_accepts_rspF  rl   r   Nrw   )r   r   r   r   rF  r   r   r   r(  r(  B  s.   € € € € € à3Ð3ðð ð ð ð ð r   r(  c                  ó   — e Zd ZdZdd„ZdS )	ÚGnuGoldDynamicLinkerzld.goldr  r   r'   r   c                ó   — d|z   gS )Nz-Wl,-plugin-opt,cache-dir=r   r`  s     r   ra  z+GnuGoldDynamicLinker.get_thinlto_cache_argsN  s   € Ø,¨tÑ3Ð4Ð4r   Nrš  ©r   r   r   r   ra  r   r   r   r+  r+  J  s-   € € € € € à	€Bð5ð 5ð 5ð 5ð 5ð 5r   r+  c                  ó   — e Zd ZdZdS )ÚGnuBFDDynamicLinkerzld.bfdNrÑ   r   r   r   r/  r/  R  r  r   r/  c                  ó   — e Zd ZdZdd„ZdS )	ÚMoldDynamicLinkerzld.moldr  r   r'   r   c                ó   — d|z   gS ©Nz-Wl,--thinlto-cache-dir=r   r`  s     r   ra  z(MoldDynamicLinker.get_thinlto_cache_args[  ó   € Ø*¨TÑ1Ð2Ð2r   Nrš  r-  r   r   r   r1  r1  W  s-   € € € € € à	€Bð3ð 3ð 3ð 3ð 3ð 3r   r1  c                  óF   ‡ — e Zd ZdZdZddœdˆ fd„Zdd„Zdd„Zdd„Zˆ xZ	S )ÚLLVMDynamicLinkerz„Representation of LLVM's ld.lld linker.

    This is only the gnu-like linker, not the apple like or link.exe like
    linkers.
    zld.lldr5  r6  r   r   r·   r¸   r1  r.  rŒ   r7  r   c               óÚ   •— t          ¦   «                              |||||¬¦  «         t          j        | j        |z   |                      d¦  «        z   ¦  «        \  }}}d|vod|v| _        d S )Nr6  rÐ  z)unknown argument: --allow-shlib-undefinedz+unknown argument: '--allow-shlib-undefined')r¿   r#   r   rÀ   r   r4  Úhas_allow_shlib_undefined)	r"   r   r·   r1  rŒ   r7  Ú_ÚerÆ   s	           €r   r#   zLLVMDynamicLinker.__init__i  s‹   ø€ õ 	‰Œ×Ò˜ +¨z¸;ÐPWÐÑXÔXÐXõ Ô% d¤l°[Ñ&@À4×CUÒCUÐVoÑCpÔCpÑ&pÑqÔq‰ˆˆ1ˆaà*UÐ]^Ð*^ð  *]ð  fSð  [\ð  f\ˆÔ&Ð&Ð&r   r'   c                ó>   — | j         r|                      d¦  «        S g S rÏ  )r8  r4  r/   s    r   rn  z*LLVMDynamicLinker.get_allow_undefined_argss  s(   € ØÔ)ð 	AØ×%Ò%Ð&?Ñ@Ô@Ð@Øˆ	r   r  c                ó   — d|z   gS r3  r   r`  s     r   ra  z(LLVMDynamicLinker.get_thinlto_cache_argsx  r4  r   rb  c                óÈ   — d }d|v r|                      dd¦  «        \  }}|| j        v r#|�|d|› �z  }|                      d|› �g¦  «        S t          j        d|› d�¦  «        ‚)Nr  rº   rð  r  r  z8 not handled in lld linker. This should not be possible.)rö  r  r4  r   r  )r"   rb  r7  s      r   r‰  z(LLVMDynamicLinker.get_win_subsystem_args{  sˆ   € àˆØ�%ˆ<ˆ<Ø"Ÿ[š[¨¨aÑ0Ô0‰NˆE�7Ø�DÔ$Ð$Ð$ØÐ"Ø˜˜W˜˜Ñ&�Ø×%Ò%Ð'=°eÐ'=Ð'=Ð&>Ñ?Ô?Ð?åÔ,Ð-~¸uÐ-~Ð-~Ð-~ÑÔÐr   r™  ry   rš  r›  )
r   r   r   r   r   r#   rn  ra  r‰  rÌ   rÍ   s   @r   r6  r6  _  sª   ø€ € € € € ðð ð 
€Bð >Oð]ð ]ð ]ð ]ð ]ð ]ð ]ð ]ðð ð ð ð
3ð 3ð 3ð 3ð
@ð 
@ð 
@ð 
@ð 
@ð 
@ð 
@ð 
@r   r6  c                  ó>   — e Zd ZdZdZdd„Zdd„Zdd„Zdd„Zdd„Z	dS )ÚWASMDynamicLinkerzEmscripten's wasm-ld.zld.wasmr'   r   c                ó   — dgS )Nz-sERROR_ON_UNDEFINED_SYMBOLS=0r   r/   s    r   rn  z*WASMDynamicLinker.get_allow_undefined_argsŽ  ó   € Ø0Ð1Ð1r   c                ó   — dgS )Nz-sERROR_ON_UNDEFINED_SYMBOLS=1r   r/   s    r   r�  z#WASMDynamicLinker.no_undefined_args‘  rA  r   r<   r=   rŽ  r   r�  r�  r‘  r’  r“  c                ó0   — t          | j        › d�¦  «        ‚©Nz# does not support shared libraries.©r   r   r•  s          r   r–  z!WASMDynamicLinker.get_soname_args”  ó   € å ¤ÐLÐLÐLÑMÔMÐMr   c                ó   — g S r!   r   r/   s    r   rj  z#WASMDynamicLinker.get_asneeded_args˜  rB   r   rM   rN   rO   rP   rQ   rR   rS   c                ó"   — g t          ¦   «         fS r!   rU   rW   s          r   rX   z"WASMDynamicLinker.build_rpath_args›  rY   r   Nry   r   r}   )
r   r   r   r   r   rn  r�  r–  rj  rX   r   r   r   r?  r?  ˆ  s‡   € € € € € àÐà	€Bð2ð 2ð 2ð 2ð2ð 2ð 2ð 2ðNð Nð Nð Nðð ð ð ðð ð ð ð ð r   r?  c                  óf   ‡ — e Zd ZdZdZddœdˆ fd	„Zd d„Zd!d„Zd"d„Zd#d„Z	d$d„Z
d"d„Zd%d„Zˆ xZS )&ÚCcrxDynamicLinkerz!Linker for Renesis CCrx compiler.rå   r5  r6  r·   r¸   r7  r   c               óV   •— t          ¦   «                              dg|dg |¬¦  «         d S )Nz	rlink.exer¼   r6  ©r¿   r#   ©r"   r·   r7  rÆ   s      €r   r#   zCcrxDynamicLinker.__init__§  s;   ø€ å‰Œ×Ò˜+˜¨°R¸Ø!(ð 	ñ 	*ô 	*ð 	*ð 	*ð 	*r   r'   r+   c                ó   — dS r«   r   r/   s    r   rF  z!CcrxDynamicLinker.get_accepts_rsp¬  rê   r   c                ó   — dS )Nz-lib=r   r/   s    r   rJ  z CcrxDynamicLinker.get_lib_prefix¯  s   € Øˆwr   r   c                ó   — g S r!   r   r/   s    r   rW  z)CcrxDynamicLinker.get_std_shared_lib_args²  rB   r   Ú
outputnamec                ó   — d|› �gS rì   r   ©r"   rQ  s     r   rJ   z!CcrxDynamicLinker.get_output_argsµ  s   € Ø'˜:Ð'Ð'Ð(Ð(r   rt  ú'T.NoReturn'c                ó    — t          d¦  «        ‚)Nz-rlink.exe does not have a search dir argument©ÚOSErrorrv  s     r   rw  z!CcrxDynamicLinker.get_search_args¸  s   € ÝÐEÑFÔFÐFr   c                ó   — g S r!   r   r/   s    r   rn  z*CcrxDynamicLinker.get_allow_undefined_args»  rB   r   r<   r=   rŽ  r�  r�  r‘  r’  r“  c                ó   — g S r!   r   r•  s          r   r–  z!CcrxDynamicLinker.get_soname_args¾  r6   r   ©r·   r¸   r7  r   rw   r—  ry   ©rQ  r   r'   r   ©rt  r   r'   rT  r   )r   r   r   r   r   r#   rF  rJ  rW  rJ   rw  rn  r–  rÌ   rÍ   s   @r   rJ  rJ  ¡  sç   ø€ € € € € à+Ð+à	€Bð $5ð*ð *ð *ð *ð *ð *ð *ð *ð
ð ð ð ðð ð ð ðð ð ð ð)ð )ð )ð )ðGð Gð Gð Gðð ð ð ðð ð ð ð ð ð ð r   rJ  c                  óv   ‡ — e Zd ZdZdZddœd)ˆ fd	„Zd*d„Zd+d„Zd,d„Zd-d„Z	d.d„Z
d/d„Zd-d„Zd0d „Zd1d(„Zˆ xZS )2ÚXc16DynamicLinkerz#Linker for Microchip XC16 compiler.úxc16-gccr5  r6  r·   r¸   r7  r   c               óV   •— t          ¦   «                              dg|dg |¬¦  «         d S )Nr_  r¼   r6  rL  rM  s      €r   r#   zXc16DynamicLinker.__init__É  s;   ø€ å‰Œ×Ò˜*˜ {°B¸Ø!(ð 	ñ 	*ô 	*ð 	*ð 	*ð 	*r   r%   r   r'   c                óf   — |s|S |                       d¦  «        |z   |                       d¦  «        z   S ©Nz--start-groupz--end-grouprÃ  r)   s     r   rl  z$Xc16DynamicLinker.get_link_whole_forÎ  ó;   € Øð 	ØˆKØ×!Ò! /Ñ2Ô2°TÑ9¸D×<NÒ<NÈ}Ñ<]Ô<]Ñ]Ð]r   r+   c                ó   — dS r«   r   r/   s    r   rF  z!Xc16DynamicLinker.get_accepts_rspÓ  rê   r   c                ó   — dS r  r   r/   s    r   rJ  z Xc16DynamicLinker.get_lib_prefixÖ  rK  r   c                ó   — g S r!   r   r/   s    r   rW  z)Xc16DynamicLinker.get_std_shared_lib_argsÙ  rB   r   rQ  c                ó   — d|› �gS rý   r   rS  s     r   rJ   z!Xc16DynamicLinker.get_output_argsÜ  ó   € Ø!�ZÐ!Ð!Ð"Ð"r   rt  rT  c                ó    — t          d¦  «        ‚)Nz,xc16-gcc does not have a search dir argumentrV  rv  s     r   rw  z!Xc16DynamicLinker.get_search_argsß  s   € ÝÐDÑEÔEÐEr   c                ó   — g S r!   r   r/   s    r   rn  z*Xc16DynamicLinker.get_allow_undefined_argsâ  rB   r   r<   r=   rŽ  r�  r�  r‘  r’  r“  c                ó   — g S r!   r   r•  s          r   r–  z!Xc16DynamicLinker.get_soname_argså  r6   r   rM   rN   rO   rP   rQ   rR   rS   c                ó"   — g t          ¦   «         fS r!   rU   rW   s          r   rX   z"Xc16DynamicLinker.build_rpath_argsé  rY   r   rZ  r   rw   r—  ry   r[  r\  r   r}   ©r   r   r   r   r   r#   rl  rF  rJ  rW  rJ   rw  rn  r–  rX   rÌ   rÍ   s   @r   r^  r^  Ã  s  ø€ € € € € à-Ð-à	€Bð $5ð*ð *ð *ð *ð *ð *ð *ð *ð
^ð ^ð ^ð ^ð
ð ð ð ðð ð ð ðð ð ð ð#ð #ð #ð #ðFð Fð Fð Fðð ð ð ðð ð ð ðð ð ð ð ð ð ð r   r^  c                  óv   ‡ — e Zd ZdZdZddœd(ˆ fd	„Zd)d„Zd*d„Zd+d„Zd,d„Z	d-d„Z
d.d„Zd,d„Zd/d„Zd0d'„Zˆ xZS )1ÚCompCertDynamicLinkerzLinker for CompCert C compiler.rú   r5  r6  r·   r¸   r7  r   c               óV   •— t          ¦   «                              dg|dg |¬¦  «         d S )Nrú   r¼   r6  rL  rM  s      €r   r#   zCompCertDynamicLinker.__init__ô  s;   ø€ å‰Œ×Ò˜'˜ K°°RØ!(ð 	ñ 	*ô 	*ð 	*ð 	*ð 	*r   r%   r   r'   c                óf   — |s|S |                       d¦  «        |z   |                       d¦  «        z   S )Nz-Wl,--whole-archivez-Wl,--no-whole-archiverÃ  r)   s     r   rl  z(CompCertDynamicLinker.get_link_whole_forù  s=   € Øð 	ØˆKØ×!Ò!Ð"7Ñ8Ô8¸4Ñ?À$×BTÒBTÐUmÑBnÔBnÑnÐnr   r+   c                ó   — dS r«   r   r/   s    r   rF  z%CompCertDynamicLinker.get_accepts_rspþ  rê   r   c                ó   — dS r  r   r/   s    r   rJ  z$CompCertDynamicLinker.get_lib_prefix  rK  r   c                ó   — g S r!   r   r/   s    r   rW  z-CompCertDynamicLinker.get_std_shared_lib_args  rB   r   rQ  c                ó   — d|› �gS rý   r   rS  s     r   rJ   z%CompCertDynamicLinker.get_output_args  rh  r   rt  c                ó   — d|› �gS r«  r   rv  s     r   rw  z%CompCertDynamicLinker.get_search_args
  s   € Ø�W��ÐÐr   c                ó   — g S r!   r   r/   s    r   rn  z.CompCertDynamicLinker.get_allow_undefined_args  rB   r   r<   r=   rŽ  r�  r�  r‘  r’  r“  c                ó0   — t          | j        › d�¦  «        ‚rD  rE  r•  s          r   r–  z%CompCertDynamicLinker.get_soname_args  rF  r   rM   rN   rO   rP   rQ   rR   rS   c                ó"   — g t          ¦   «         fS r!   rU   rW   s          r   rX   z&CompCertDynamicLinker.build_rpath_args  rY   r   rZ  r   rw   r—  ry   r[  r�  r   r}   rm  rÍ   s   @r   ro  ro  î  s  ø€ € € € € à)Ð)à	€Bð $5ð*ð *ð *ð *ð *ð *ð *ð *ð
oð oð oð oð
ð ð ð ðð ð ð ðð ð ð ð#ð #ð #ð #ð ð  ð  ð  ðð ð ð ðNð Nð Nð Nðð ð ð ð ð ð ð r   ro  c                  ón   ‡ — e Zd ZdZdZddœdˆ fd„Zdd„Zdd„Zdd„Zdd„Z	dd„Z
d d„Zdd„Zdd„Zˆ xZS )!ÚTIDynamicLinkerz-Linker for Texas Instruments compiler family.Útir5  r6  r   r   r·   r¸   r7  r   c               óT   •— t          ¦   «                              ||dg |¬¦  «         d S ©Nr¼   r6  rL  ©r"   r   r·   r7  rÆ   s       €r   r#   zTIDynamicLinker.__init__  s9   ø€ å‰Œ×Ò˜ +¨r°2Ø!(ð 	ñ 	*ô 	*ð 	*ð 	*ð 	*r   r%   r'   c                óf   — |s|S |                       d¦  «        |z   |                       d¦  «        z   S rb  rÃ  r)   s     r   rl  z"TIDynamicLinker.get_link_whole_for$  rc  r   r+   c                ó   — dS r«   r   r/   s    r   rF  zTIDynamicLinker.get_accepts_rsp)  rê   r   c                ó   — dS )Nz-l=r   r/   s    r   rJ  zTIDynamicLinker.get_lib_prefix,  rê   r   c                ó   — g S r!   r   r/   s    r   rW  z'TIDynamicLinker.get_std_shared_lib_args/  rB   r   rQ  c                ó   — dd|› �gS )Nú-zz--output_file=r   rS  s     r   rJ   zTIDynamicLinker.get_output_args2  s   € ØÐ3 zÐ3Ð3Ð4Ð4r   rt  rT  c                ó    — t          d¦  «        ‚)Nz.TI compilers do not have a search dir argumentrV  rv  s     r   rw  zTIDynamicLinker.get_search_args5  s   € ÝÐFÑGÔGÐGr   c                ó   — g S r!   r   r/   s    r   rn  z(TIDynamicLinker.get_allow_undefined_args8  rB   r   c                ó   — g S r!   r   r/   s    r   rp   zTIDynamicLinker.get_always_args;  rB   r   ©r   r   r·   r¸   r7  r   r   rw   r—  ry   r[  r\  )r   r   r   r   r   r#   rl  rF  rJ  rW  rJ   rw  rn  rp   rÌ   rÍ   s   @r   r{  r{    sÿ   ø€ € € € € à7Ð7à	€Bð $5ð*ð *ð *ð *ð *ð *ð *ð *ð
^ð ^ð ^ð ^ð
ð ð ð ðð ð ð ðð ð ð ð5ð 5ð 5ð 5ðHð Hð Hð Hðð ð ð ðð ð ð ð ð ð ð r   r{  c                  ó   — e Zd ZdZdS )ÚC2000DynamicLinkerÚcl2000NrÑ   r   r   r   r‹  r‹  ?  r  r   r‹  c                  óF   ‡ — e Zd ZdZdZddœdˆ fd	„Zdd„Zdd„Zdd„Zˆ xZ	S )ÚArmDynamicLinkerzLinker for the ARM compiler.Úarmlinkr5  r6  r·   r¸   r7  r   c               óV   •— t          ¦   «                              dg|dg |¬¦  «         d S )Nr�  r¼   r6  rL  rM  s      €r   r#   zArmDynamicLinker.__init__J  s;   ø€ å‰Œ×Ò˜)˜ k°2°rØ!(ð 	ñ 	*ô 	*ð 	*ð 	*ð 	*r   r'   r+   c                ó   — dS r«   r   r/   s    r   rF  z ArmDynamicLinker.get_accepts_rspO  rê   r   rT  c                ó    — t          d¦  «        ‚)Nz/The Arm Linkers do not support shared librariesr‹  r/   s    r   rW  z(ArmDynamicLinker.get_std_shared_lib_argsR  s   € ÝÐNÑOÔOÐOr   r   c                ó   — g S r!   r   r/   s    r   rn  z)ArmDynamicLinker.get_allow_undefined_argsU  rB   r   rZ  rw   )r'   rT  ry   )
r   r   r   r   r   r#   rF  rW  rn  rÌ   rÍ   s   @r   rŽ  rŽ  D  s—   ø€ € € € € à&Ð&à	€Bð $5ð*ð *ð *ð *ð *ð *ð *ð *ð
ð ð ð ðPð Pð Pð Pðð ð ð ð ð ð ð r   rŽ  c                  ó"   — e Zd ZdZdd„Zdd	„Zd
S )ÚArmClangDynamicLinkerz—Linker used with ARM's clang fork.

    The interface is similar enough to the old ARM ld that it inherits and
    extends a few things as needed.
    r<   r=   r'   r   c                ó   — dgS )Nz--export_dynamicr   r[   s     r   ry  z)ArmClangDynamicLinker.export_dynamic_argsa  s   € Ø"Ð#Ð#r   rz  r   c                ó   — d|z   gS )Nz
--symdefs=r   r|  s     r   r}  z)ArmClangDynamicLinker.import_library_argsd  s   € Ø˜zÑ)Ð*Ð*r   Nr~   rž  )r   r   r   r   ry  r}  r   r   r   r•  r•  Y  sF   € € € € € ðð ð$ð $ð $ð $ð+ð +ð +ð +ð +ð +r   r•  c                  ó   — e Zd ZdZdZdS )ÚQualcommLLVMDynamicLinkerz-ARM Linker from Snapdragon LLVM ARM Compiler.zld.qcldN)r   r   r   r   r   r   r   r   r™  r™  g  s   € € € € € à7Ð7à	€B€B€Br   r™  c                  ó.   — e Zd ZdZdZdd„Zdd„Zdd„ZdS )ÚNAGDynamicLinkera;  NAG Fortran linker, ld via gcc indirection.

    Using nagfor -Wl,foo passes option foo to a backend gcc invocation.
    (This linking gathers the correct objects needed from the nagfor runtime
    system.)
    To pass gcc -Wl,foo options (i.e., to ld) one must apply indirection
    again: nagfor -Wl,-Wl,,foo
    Únagr<   r=   rM   r   rN   rO   rP   rQ   rR   r'   rS   c                óP  ‡— |s|s|sg t          ¦   «         fS g }dŠt          |||¦  «        }t          j        ˆfd„|D ¦   «         ¦  «        }	|dk    r|	                     |¦  «         |	D ]-}
|                     |                      d|
z   ¦  «        ¦  «         Œ.|t          ¦   «         fS )Nré  c                óP   •— g | ]"}t           j                             ‰|¦  «        ‘Œ#S r   rë  rì  s     €r   r  z5NAGDynamicLinker.build_rpath_args.<locals>.<listcomp>ƒ  rî  r   r¼   z-Wl,-Wl,,-rpath,,r!  r"  s              @r   rX   z!NAGDynamicLinker.build_rpath_args{  sÑ   ø€ ð ð 	 =ð 	¸ð 	Ø�™œ�;ÐØˆØ&ÐÝ)¨+°yÀ(ÑKÔKÐÝÔ'Ð(gÐ(gÐ(gÐ(gÐVfÐ(gÑ(gÔ(gÑhÔhˆ	Ø˜"ÒÐØ�MŠM˜+Ñ&Ô&Ð&Øð 	Fð 	FˆBØ�KŠK˜×*Ò*Ð+>ÀÑ+CÑDÔDÑEÔEÐEÐEà•c‘e”eˆ}Ðr   r   c                ó   — g S r!   r   r/   s    r   rn  z)NAGDynamicLinker.get_allow_undefined_args‹  rB   r   c                óJ   — ddl m} |                     | j        ¦  «        dgz   S )Nr   )ÚNAGFortranCompilerz-Wl,-shared)Úcompilers.fortranr¡  Úget_nagfor_quietr7  )r"   r¡  s     r   rW  z(NAGDynamicLinker.get_std_shared_lib_argsŽ  s1   € Ø:Ð:Ð:Ð:Ð:Ð:Ø!×2Ò2°4´<Ñ@Ô@ÀMÀ?ÑRÐRr   Nr}   ry   )r   r   r   r   r   rX   rn  rW  r   r   r   r›  r›  n  sg   € € € € € ðð ð 
€Bðð ð ð ð ð ð ð ðSð Sð Sð Sð Sð Sr   r›  c                  ó6   — e Zd ZdZdZdd„Zdd„Zdd„Zdd„ZdS )ÚPGIDynamicLinkerzPGI linker.Úpgir'   r   c                ó   — g S r!   r   r/   s    r   rn  z)PGIDynamicLinker.get_allow_undefined_args™  rB   r   r<   r=   rŽ  r   r�  r�  r‘  r’  r“  c                ó   — g S r!   r   r•  s          r   r–  z PGIDynamicLinker.get_soname_argsœ  r6   r   c                ó`   — t          j        ¦   «         rddgS t          j        ¦   «         rdgS g S )Nz	-Bdynamicz	-Mmakedllr©  )r   r.   Úis_linuxr/   s    r   rW  z(PGIDynamicLinker.get_std_shared_lib_args   s<   € åÔÑ Ô ð 	Ø Ð-Ð-ÝÔÑ Ô ð 	Ø�;ÐØˆ	r   rM   rN   rO   rP   rQ   rR   rS   c                ó¤   ‡— |j         | j                                      ¦   «         sˆfd„|D ¦   «         t          ¦   «         fS g t          ¦   «         fS )Nc                óV   •— g | ]%}d t           j                             ‰|¦  «        z   ‘Œ&S )z-Rrë  )r  r  rM   s     €r   r  z5PGIDynamicLinker.build_rpath_args.<locals>.<listcomp>¬  s.   ø€ ÐLÐLÐL¸1�T�BœGŸLšL¨°AÑ6Ô6Ñ6ÐLÐLÐLr   )rÉ   r·   r.   rV   rW   s     `    r   rX   z!PGIDynamicLinker.build_rpath_args¨  sU   ø€ ð Œ|˜DÔ,Ô-×8Ò8Ñ:Ô:ð 	UØLÐLÐLÐLÀÐLÑLÔLÍcÉeÌeÐTÐTØ•C‘E”Eˆ{Ðr   Nry   r   r}   )	r   r   r   r   r   rn  r–  rW  rX   r   r   r   r¥  r¥  “  so   € € € € € àÐà	€Bðð ð ð ðð ð ð ðð ð ð ðð ð ð ð ð r   r¥  c                  ó0   ‡ — e Zd Zdˆ fd„Zdd	„Zdd„Zˆ xZS )ÚPGIStaticLinkerr   r   c                óh   •— t          ¦   «                              |¦  «         d| _        dg| _        d S )Nr¶   r  )r¿   r#   r   r®   rç   s     €r   r#   zPGIStaticLinker.__init__³  s/   ø€ Ý‰Œ×Ò˜Ñ!Ô!Ð!ØˆŒØ˜ˆŒˆˆr   r<   r=   r>   r+   r'   c                ó   — | j         S r!   r­   r@   s      r   rA   z!PGIStaticLinker.get_std_link_args¸  r¯   r   rG   r   c                ó   — |gS r!   r   rI   s     r   rJ   zPGIStaticLinker.get_output_args»  r±   r   rv   rz   r|   )r   r   r   r#   rA   rJ   rÌ   rÍ   s   @r   r®  r®  ²  se   ø€ € € € € ðð ð ð ð ð ð
ð ð ð ðð ð ð ð ð ð ð r   r®  c                  óÖ   ‡ — e Zd ZdZej        rej        Zd5d„Z	g g g dgddgg d	œZ
d
dddœd6ˆ fd„Zd7d„Zd8d„Zd9d„Zd:ˆ fd„Zd;d „Zd:d!„Zd<d#„Zd=d$„Zd>d&„Zd:d'„Zd?d0„Zd@d2„ZdAd4„Zˆ xZS )BÚVisualStudioLikeLinkerMixinzGMixin class for for dynamic linkers that act like Microsoft's link.exe.r-  r.  r'   r   c                ó   — d S r!   r   r¯  s     r   r4  z)VisualStudioLikeLinkerMixin._apply_prefixÇ  r°  r   z/OPT:REFz/INCREMENTAL:NOr$  r5  TÚx86)r7  Údirectr‡   r   r·   r¸   r1  rŒ   r7  r   r¶  r+   r‡   c               óp   •— t          ¦   «                              |||||¬¦  «         || _        || _        d S )Nr6  )r¿   r#   r‡   r¶  )	r"   r   r·   r1  rŒ   r7  r¶  r‡   rÆ   s	           €r   r#   z$VisualStudioLikeLinkerMixin.__init__Ô  s;   ø€ õ 	‰Œ×Ò˜ +¨z¸;ÐPWÐÑXÔXÐXØˆŒØˆŒˆˆr   rC   c                óZ   ‡ — t          j        ˆ fd„‰ j        |         D ¦   «         ¦  «        S )Nc                ó:   •— g | ]}‰                      |¦  «        ‘ŒS r   rÃ  rÄ  s     €r   r  zBVisualStudioLikeLinkerMixin.get_buildtype_args.<locals>.<listcomp>Ý  rÆ  r   rÇ  rE   s   ` r   rh  z.VisualStudioLikeLinkerMixin.get_buildtype_argsÜ  s2   ø€ ÝÔÐ `Ð `Ð `Ð `ÀÔ@TÐU^Ô@_Ð `Ñ `Ô `ÑaÔaÐar   c                ó   — | j          S r!   )r¶  r/   s    r   Úinvoked_by_compilerz/VisualStudioLikeLinkerMixin.invoked_by_compilerß  s   € Ø”;ˆÐr   rQ  c                óF   — |                       d| j        z   d|z   g¦  «        S r�   )r4  r‡   rS  s     r   rJ   z+VisualStudioLikeLinkerMixin.get_output_argsâ  s'   € Ø×!Ò! ;°´Ñ#=¸wÈÑ?SÐ"TÑUÔUÐUr   c                óš   •— t          ¦   «                              ¦   «         }|                      d¦  «        t          j        d|¦  «        z   S )Nú/nologor   )r¿   rp   r4  r¾   Úcast)r"   ÚparentrÆ   s     €r   rp   z+VisualStudioLikeLinkerMixin.get_always_argså  s=   ø€ Ý‘”×(Ò(Ñ*Ô*ˆØ×!Ò! )Ñ,Ô,­q¬v°mÀVÑ/LÔ/LÑLÐLr   rt  c                ó2   — |                       d|z   ¦  «        S )Nz	/LIBPATH:rÃ  rv  s     r   rw  z+VisualStudioLikeLinkerMixin.get_search_argsé  s   € Ø×!Ò! +°Ñ"7Ñ8Ô8Ð8r   c                ó,   — |                       d¦  «        S )Nz/DLLrÃ  r/   s    r   rW  z3VisualStudioLikeLinkerMixin.get_std_shared_lib_argsì  s   € Ø×!Ò! &Ñ)Ô)Ð)r   rh   c                óF   — |                      dd¬¦  «        d         }|dz   S )Nræ  rº   ©Úmaxsplitr   z.pdb)Úrsplit)r"   rh   Úbasenames      r   rS  z.VisualStudioLikeLinkerMixin.get_debugfile_nameï  s*   € Ø×$Ò$ S°1Ð$Ñ5Ô5°aÔ8ˆØ˜&Ñ Ð r   c                ó\   — |                       dd|                      |¦  «        z   g¦  «        S )Nz/DEBUGz/PDB:)r4  rS  rj   s     r   rU  z.VisualStudioLikeLinkerMixin.get_debugfile_argsó  s.   € Ø×!Ò! 8¨W°t×7NÒ7NÈzÑ7ZÔ7ZÑ-ZÐ"[Ñ\Ô\Ð\r   r%   c                ó’   — t          j        |¦  «        }g }|D ]-}|                     |                      d|z   ¦  «        ¦  «         Œ.|S )Nz/WHOLEARCHIVE:)r   rÈ  rù  r4  )r"   r%   ÚlrÅ  s       r   rl  z.VisualStudioLikeLinkerMixin.get_link_whole_forö  sT   € åÔ Ñ%Ô%ˆØˆØð 	?ð 	?ˆAØ�HŠH�T×'Ò'Ð(8¸1Ñ(<Ñ=Ô=Ñ>Ô>Ð>Ð>Øˆr   c                ó   — g S r!   r   r/   s    r   rn  z4VisualStudioLikeLinkerMixin.get_allow_undefined_argsþ  rB   r   r<   r=   rŽ  r�  r�  r‘  r’  r“  c                ó   — g S r!   r   r•  s          r   r–  z+VisualStudioLikeLinkerMixin.get_soname_args  r6   r   rz  c                ó4   — |                       d|z   g¦  «        S )z+The command to generate the import library.z/IMPLIB:rÃ  r|  s     r   r}  z/VisualStudioLikeLinkerMixin.import_library_args  s   € à×!Ò! :°
Ñ#:Ð";Ñ<Ô<Ð<r   r   c                ó   — t           j        S r!   rš   r/   s    r   ru   z+VisualStudioLikeLinkerMixin.rsp_file_syntax	  r›   r   r˜  )r   r   r·   r¸   r1  r.  rŒ   r   r7  r   r¶  r+   r‡   r   r{   rw   r[  ry   r�  r€   r�   r   r   rž  r‚   )r   r   r   r   r¾   r	  r   r
  r·   r4  rg  r#   rh  r»  rJ   rp   rw  rW  rS  rU  rl  rn  r–  r}  ru   rÌ   rÍ   s   @r   r³  r³  Á  s¿  ø€ € € € € àQÐQà„ð TØ#Ô(ˆØSÐSÐSÐSð ØØð �<Ø% zÐ2Øð	ð 	€Oð !2À$ÐW\ðð ð ð ð ð ð ð ðbð bð bð bðð ð ð ðVð Vð Vð VðMð Mð Mð Mð Mð Mð9ð 9ð 9ð 9ð*ð *ð *ð *ð!ð !ð !ð !ð]ð ]ð ]ð ]ðð ð ð ðð ð ð ðð ð ð ð=ð =ð =ð =ð"ð "ð "ð "ð "ð "ð "ð "r   r³  c                  óR   ‡ — e Zd ZdZdZddddddœdˆ fd„Zdˆ fd„Zdd„Zdd„Zˆ xZ	S ) ÚMSVCDynamicLinkerzMicrosoft's Link.exe.ÚlinkNr¼   rµ  r5  T©r   rŽ  r‡   r7  r¶  r·   r¸   rŒ   r   r   úT.Optional[T.List[str]]rŽ  r.  r‡   r   r7  r¶  r+   c          	     ó^   •— t          ¦   «                              |pdg||||||¬¦  «         d S )Nzlink.exe©r‡   r7  r¶  rL  ©	r"   r·   rŒ   r   rŽ  r‡   r7  r¶  rÆ   s	           €r   r#   zMSVCDynamicLinker.__init__  sL   ø€ õ
 	‰Œ×Ò˜Ð0 Z L°+Ø °gÀwÐW]ð 	ñ 	_ô 	_ð 	_ð 	_ð 	_r   r'   c                ót   •— |                       ddg¦  «        t          ¦   «                              ¦   «         z   S )Nr¾  z/release©r4  r¿   rp   ©r"   rÆ   s    €r   rp   z!MSVCDynamicLinker.get_always_args  s1   ø€ Ø×!Ò! 9¨jÐ"9Ñ:Ô:½U¹W¼W×=TÒ=TÑ=VÔ=VÑVÐVr   rb  c                ó4   — |                       |rdnd¦  «        S ©Nr²  r³  ©r‰  rd  s     r   r‡  z"MSVCDynamicLinker.get_gui_app_args  ó   € Ø×*Ò*¸Ð+L¨9¨9À9ÑMÔMÐMr   c                óX   — |                       d|                     ¦   «         › �g¦  «        S ©Nz/SUBSYSTEM:©r4  Úupperrd  s     r   r‰  z(MSVCDynamicLinker.get_win_subsystem_args!  ó*   € Ø×!Ò!Ð#@°·²±´Ð#@Ð#@Ð"AÑBÔBÐBr   ©r·   r¸   rŒ   r   r   rÓ  rŽ  r.  r‡   r   r7  r   r¶  r+   ry   rŸ  r›  )
r   r   r   r   r   r#   rp   r‡  r‰  rÌ   rÍ   s   @r   rÐ  rÐ    sÃ   ø€ € € € € àÐà	€Bð 59Ø57Ø %Ð6GØ $ð	_ð _ð _ð _ð _ð _ð _ð _ðWð Wð Wð Wð Wð WðNð Nð Nð NðCð Cð Cð Cð Cð Cð Cð Cr   rÐ  c                  óZ   ‡ — e Zd ZdZdZddddddœdˆ fd„Zd ˆ fd„Zd!d„Zd"d„Zd#d„Z	ˆ xZ
S )$ÚClangClDynamicLinkerzClang's lld-link.exe.zlld-linkNr¼   rµ  r5  TrÒ  r·   r¸   rŒ   r   r   rÓ  rŽ  r.  r‡   r   r7  r¶  r+   c          	     ó^   •— t          ¦   «                              |pdg||||||¬¦  «         d S )Nzlld-link.exerÕ  rL  rÖ  s	           €r   r#   zClangClDynamicLinker.__init__+  sM   ø€ õ
 	‰Œ×Ò˜Ð4 ^Ð$4°kØ °gÀwÐW]ð 	ñ 	_ô 	_ð 	_ð 	_ð 	_r   rQ  r'   c                ó†   •— | j         €|                      d|› �g¦  «        S t          ¦   «                              |¦  «        S )Nr‘   )r‡   r4  r¿   rJ   )r"   rQ  rÆ   s     €r   rJ   z$ClangClDynamicLinker.get_output_args3  sE   ø€ ð Œ<ÐØ×%Ò%Ð';¨zÐ';Ð';Ð&<Ñ=Ô=Ð=å‰wŒw×&Ò& zÑ2Ô2Ð2r   rb  c                ó4   — |                       |rdnd¦  «        S rÛ  rÜ  rd  s     r   r‡  z%ClangClDynamicLinker.get_gui_app_args;  rÝ  r   c                óX   — |                       d|                     ¦   «         › �g¦  «        S rß  rà  rd  s     r   r‰  z+ClangClDynamicLinker.get_win_subsystem_args>  râ  r   r  c                ó   — d|z   gS )Nz/lldltocache:r   r`  s     r   ra  z+ClangClDynamicLinker.get_thinlto_cache_argsA  s   € Ø $Ñ&Ð'Ð'r   rã  r[  rŸ  r›  rš  )r   r   r   r   r   r#   rJ   r‡  r‰  ra  rÌ   rÍ   s   @r   rå  rå  %  sÍ   ø€ € € € € àÐà	€Bð 59Ø57Ø %Ð6GØ $ð	_ð _ð _ð _ð _ð _ð _ð _ð3ð 3ð 3ð 3ð 3ð 3ðNð Nð Nð NðCð Cð Cð Cð(ð (ð (ð (ð (ð (ð (ð (r   rå  c                  óF   ‡ — e Zd ZdZdZddddddœdˆ fd„Zdd„Zdd„Zˆ xZS )ÚXilinkDynamicLinkerzIntel's Xilink.exe.ÚxilinkNr¼   rµ  r5  TrÒ  r·   r¸   rŒ   r   r   rÓ  rŽ  r.  r‡   r   r7  r¶  r+   c               óV   •— t          ¦   «                              dg|d||¬¦  «         d S )Nz
xilink.exer¼   r6  rL  rÖ  s	           €r   r#   zXilinkDynamicLinker.__init__K  s0   ø€ õ
 	‰Œ×Ò˜,˜¨°b¸+ÈwÐÑWÔWÐWÐWÐWr   rb  r'   c                ó4   — |                       |rdnd¦  «        S rÛ  rÜ  rd  s     r   r‡  z$XilinkDynamicLinker.get_gui_app_argsR  rÝ  r   c                óX   — |                       d|                     ¦   «         › �g¦  «        S rß  rà  rd  s     r   r‰  z*XilinkDynamicLinker.get_win_subsystem_argsU  râ  r   rã  rŸ  r›  )	r   r   r   r   r   r#   r‡  r‰  rÌ   rÍ   s   @r   rì  rì  E  sŸ   ø€ € € € € àÐà	€Bð 59Ø57Ø %Ð6GØ $ð	Xð Xð Xð Xð Xð Xð Xð XðNð Nð Nð NðCð Cð Cð Cð Cð Cð Cð Cr   rì  c                  óV   — e Zd ZdZdZdd„Zd d„Zd d„Zd d	„Zd d
„Z	d d„Z
d!d„Zd"d„ZdS )#ÚSolarisDynamicLinkerz5Sys-V derived linker used on Solaris and OpenSolaris.z
ld.solarisr%   r   r'   c                óf   — |s|S |                       d¦  «        |z   |                       d¦  «        z   S rÌ  rÃ  r)   s     r   rl  z'SolarisDynamicLinker.get_link_whole_for_  rÍ  r   c                óÂ   — t          j        | j        |                      d¦  «        z   ¦  «        \  }}}||z                        d¦  «        D ]}d|v rd|v rddgc S  nŒg S )Nz-zhelpú
z-z typeÚpier…  ztype=pie)r   rÀ   r   r4  rö  )r"   ÚpcrÃ   ÚstdeÚlines        r   r\  z!SolarisDynamicLinker.get_pie_argsd  s„   € å!Ô,¨T¬\¸D×<NÒ<NÈxÑ<XÔ<XÑ-XÑYÔY‰ˆˆD�$Ø˜D‘[×'Ò'¨Ñ-Ô-ð 	ð 	ˆDØ˜DÐ Ð Ø˜D�=�=Ø  *Ð-Ð-Ð-Ð-Ø�ð !ð ˆ	r   c                ó0   — |                       ddg¦  «        S )Nr…  ÚignorerÃ  r/   s    r   rj  z&SolarisDynamicLinker.get_asneeded_argsn  s   € Ø×!Ò! 4¨Ð"2Ñ3Ô3Ð3r   c                ó
   — ddgS )Nr…  Údefsr   r/   s    r   r�  z&SolarisDynamicLinker.no_undefined_argsq  s   € Ø�fˆ~Ðr   c                ó
   — ddgS )Nr…  Únodefsr   r/   s    r   rn  z-SolarisDynamicLinker.get_allow_undefined_argst  s   € Ø�hÐÐr   c                ó
   — ddgS )Nr…  zfatal-warningsr   r/   s    r   rƒ  z#SolarisDynamicLinker.fatal_warningsw  s   € ØÐ&Ð'Ð'r   r<   r=   rM   r   rN   rO   rP   rQ   rR   rS   c                ó´  — |s|s|sg t          ¦   «         fS t          |||¦  «        }t          j        d„ |D ¦   «         ¦  «        }t          ¦   «         }	|D ]*}
|	                     |
                     d¦  «        ¦  «         Œ+|dk    rU|                     |¦  «         |                     d¦  «        D ]*}
|	                     |
                     d¦  «        ¦  «         Œ+d                     |¦  «        }t          |¦  «        t          |¦  «        k     r/dt          |¦  «        t          |¦  «        z
  z  }|s|}n|dz   |z   }|  	                    d|› �¦  «        |	fS )Nc                óN   — g | ]"}t           j                             d |¦  «        ‘Œ#S )ré  rë  )r  r  s     r   r  z9SolarisDynamicLinker.build_rpath_args.<locals>.<listcomp>€  s(   € Ð(^Ð(^Ð(^È­¬¯ª°iÀÑ)CÔ)CÐ(^Ð(^Ð(^r   rï  r¼   rð  rñ  rò  )
rV   r  r   ró  rô  rõ  rö  r!  rú  r4  )r"   r<   rM   rN   rO   rQ   rR   rû  rü  rý  r  rþ  rÿ  s                r   rX   z%SolarisDynamicLinker.build_rpath_argsz  s|  € ð ð 	 =ð 	¸ð 	Ø�™œ�;ÐÝ)¨+°yÀ(ÑKÔKÐÝÔ'Ð(^Ð(^ÐM]Ð(^Ñ(^Ô(^Ñ_Ô_ˆ	Ý"™uœuÐØð 	7ð 	7ˆAØ ×$Ò$ Q§X¢X¨fÑ%5Ô%5Ñ6Ô6Ð6Ð6Ø˜"ÒÐØ�MŠM˜+Ñ&Ô&Ð&Ø ×&Ò& sÑ+Ô+ð ;ð ;�Ø$×(Ò(¨¯ª°&Ñ)9Ô)9Ñ:Ô:Ð:Ð:ð —’˜Ñ#Ô#ˆÝˆu‰:Œ:�˜MÑ*Ô*Ò*Ð*Ø�S Ñ/Ô/µ#°e±*´*Ñ<Ñ=ˆGØð .Ø��à ™ gÑ-�Ø×"Ò"Ð#4¨UÐ#4Ð#4Ñ5Ô5Ð7KÐLÐLr   rŽ  r�  r�  r‘  r’  r“  c                óR   — |€dnd|z   }|                       d|› |› d|› |› �¦  «        S rå  rÃ  )r"   r<   rŽ  r�  r�  r‘  r’  rç  s           r   r–  z$SolarisDynamicLinker.get_soname_args”  sC   € àÐ'��¨S°9©_ˆØ×!Ò!Ð"Q¨VÐ"Q°ZÐ"QÐ"QÀ&Ð"QÈ%Ð"QÐ"QÑRÔRÐRr   Nr   ry   r}   r   )r   r   r   r   r   rl  r\  rj  r�  rn  rƒ  rX   r–  r   r   r   rò  rò  Y  sÍ   € € € € € à?Ð?à	€Bðgð gð gð gð
ð ð ð ð4ð 4ð 4ð 4ðð ð ð ð ð  ð  ð  ð(ð (ð (ð (ðMð Mð Mð Mð4Sð Sð Sð Sð Sð Sr   rò  c                  óP   ‡ — e Zd ZdZdZdˆ fd„Zdd„Zdd„Zdd	„Zdd„Z	dd„Z
ˆ xZS )ÚAIXDynamicLinkerz Sys-V derived linker used on AIXzld.aixr'   r   c                ót   •— |                       ddg¦  «        t          ¦   «                              ¦   «         z   S )Nz	-bnoipathz-bbigtocrØ  rÙ  s    €r   rp   z AIXDynamicLinker.get_always_args   s1   ø€ Ø×!Ò! ;°
Ð";Ñ<Ô<½u¹w¼w×?VÒ?VÑ?XÔ?XÑXÐXr   c                ó.   — |                       dg¦  «        S )Nz	-bernotokrÃ  r/   s    r   r�  z"AIXDynamicLinker.no_undefined_args£  s   € Ø×!Ò! ; -Ñ0Ô0Ð0r   c                ó.   — |                       dg¦  «        S )Nz-berokrÃ  r/   s    r   rn  z)AIXDynamicLinker.get_allow_undefined_args¦  s   € Ø×!Ò! 8 *Ñ-Ô-Ð-r   r%   c                ó   — |S r!   r   r)   s     r   rl  z#AIXDynamicLinker.get_link_whole_for©  s	   € ð ˆr   r<   r=   rM   r   rN   rO   rP   rQ   rR   rS   c                ór  — t          j        ¦   «         }|dk    r|                     |¦  «         |dk    r|                     |¦  «         |D ]5}|                     t          j                             ||¦  «        ¦  «         Œ6|                     | j        ¦  «        }	t          |	¦  «        dk    r| 	                    ddg¦  «         n9|	D ]6}t          j         
                    |¦  «        r|                     |¦  «         Œ7|                      dd                     |¦  «        z   ¦  «        t          ¦   «         fS )Nr¼   r   z/usr/libz/libz
-blibpath:rð  )r   ró  rô  r  r  r!  Úget_compiler_system_dirsr·   rú  ÚupdateÚisdirr4  rV   )
r"   r<   rM   rN   rO   rQ   rR   rü  r  Úsys_paths
             r   rX   z!AIXDynamicLinker.build_rpath_args¯  s/  € õ Ô'Ñ)Ô)ˆ	à˜BÒÐØ�MŠM˜-Ñ(Ô(Ð(Ø˜"ÒÐØ�MŠM˜+Ñ&Ô&Ð&Øð 	6ð 	6ˆAØ�MŠM�"œ'Ÿ,š, y°!Ñ4Ô4Ñ5Ô5Ð5Ð5ð ×/Ò/°Ô0@ÑAÔAˆÝˆx‰=Œ=˜AÒÐð ×Ò˜j¨&Ð1Ñ2Ô2Ð2Ð2ð ð %ð %�Ý”7—=’= Ñ#Ô#ð %Ø—M’M !Ñ$Ô$Ð$øØ×"Ò" <°#·(²(¸9Ñ2EÔ2EÑ#EÑFÔFÍÉÌÐNÐNr   c                ó   — dgS rß  r   r[   s     r   r  zAIXDynamicLinker.thread_flagsÈ  s
   € Øˆ|Ðr   ry   r   r}   r~   )r   r   r   r   r   rp   r�  rn  rl  rX   r  rÌ   rÍ   s   @r   r  r  š  s¶   ø€ € € € € à*Ð*à	€BðYð Yð Yð Yð Yð Yð1ð 1ð 1ð 1ð.ð .ð .ð .ðð ð ð ðOð Oð Oð Oð2ð ð ð ð ð ð ð r   r  c                  óF   ‡ — e Zd ZdZdZddœdˆ fd„Zdd„Zdd„Zdd„Zˆ xZ	S )ÚOptlinkDynamicLinkerz(Digital Mars dynamic linker for windows.Úoptlinkr5  r6  r   r   r·   r¸   r7  r   c               óT   •— t          ¦   «                              ||dg |¬¦  «         d S r~  rL  r  s       €r   r#   zOptlinkDynamicLinker.__init__Ò  s.   ø€ õ 	‰Œ×Ò˜ +¨r°2¸wÐÑGÔGÐGÐGÐGr   r'   c                ó   — g S r!   r   r/   s    r   rn  z-OptlinkDynamicLinker.get_allow_undefined_argsØ  rB   r   rh   c                ó   — g S r!   r   rj   s     r   rU  z'OptlinkDynamicLinker.get_debugfile_argsÛ  r6   r   c                ó   — g S r!   r   r/   s    r   rp   z$OptlinkDynamicLinker.get_always_argsß  rB   r   r‰  ry   r�   )
r   r   r   r   r   r#   rn  rU  rp   rÌ   rÍ   s   @r   r  r  Ì  s›   ø€ € € € € à2Ð2à	€Bð $5ðHð Hð Hð Hð Hð Hð Hð Hðð ð ð ðð ð ð ðð ð ð ð ð ð ð r   r  c                  óV   — e Zd ZdZdZedd„¦   «         Zdd„Zdd„Zdd
„Z	dd„Z
dd„ZdS )Ú
CudaLinkerzCuda linker (nvlink)Únvlinkr'   r   c                 ó¾   — ddg} 	 t          j        | ¦  «        \  }}}n# t          $ r Y dS w xY w|                     ¦   «                              dd¬¦  «        d         S )Nr  z	--versionr5  ÚVrº   rÄ  éÿÿÿÿ)r   rÀ   rW  ÚstriprÆ  )Úversion_cmdr9  Úouts      r   Úparse_versionzCudaLinker.parse_versionè  su   € à Ð-ˆð	%Ý Ô+¨KÑ8Ô8‰IˆAˆs�A�AøÝð 	%ð 	%ð 	%Ø$Ð$Ð$ð	%øøøð �yŠy‰{Œ{×!Ò! #°Ð!Ñ2Ô2°2Ô6Ð6s   † Ÿ
-¬-r+   c                ó   — dS r«   r   r/   s    r   rF  zCudaLinker.get_accepts_rsp÷  s   € àˆur   c                ó   — ddl m} |j        S )Nr   )ÚCudaCompiler)Úcompilers.cudar#  ÚLINKER_PREFIX)r"   r#  s     r   rJ  zCudaLinker.get_lib_prefixû  s   € ð 	2Ð1Ð1Ð1Ð1Ð1ØÔ)Ð)r   r   c                ó   — dgS )Nz--warning-as-errorr   r/   s    r   rƒ  zCudaLinker.fatal_warnings  s   € Ø$Ð%Ð%r   c                ó   — g S r!   r   r/   s    r   rn  z#CudaLinker.get_allow_undefined_args  rB   r   r<   r=   rŽ  r�  r�  r‘  r’  r“  c                ó   — g S r!   r   r•  s          r   r–  zCudaLinker.get_soname_args  r6   r   Nr—  rw   ry   r   )r   r   r   r   r   Ústaticmethodr   rF  rJ  rƒ  rn  r–  r   r   r   r  r  ã  s¡   € € € € € ØÐà	€Bàð7ð 7ð 7ñ „\ð7ðð ð ð ð*ð *ð *ð *ð"&ð &ð &ð &ðð ð ð ðð ð ð ð ð r   r  )r  rP   rM   r   rN   r   r'   r   )r  r   r'   r   )r  r   rM   r   rN   r   r'   r   )IÚ
__future__r   r¡  r   r  Útypingr¾   r¼   r   r   r   Úarglistr	   r	  Úcoredatar
   Úenvironmentr   r   ÚuniqueÚEnumr   r   r†   r�   r¥   r¨   rµ   rÏ   rÓ   rÖ   rã   rð   rø   rÿ   r  r
  r  r  r  ÚABCMetar#  r¦  r­  r  r&  r(  r+  r/  r1  r6  r?  rJ  r^  ro  r{  r‹  rŽ  r•  r™  r›  r¥  ÚNvidiaHPC_DynamicLinkerr®  ÚNvidiaHPC_StaticLinkerr³  rÐ  rå  rì  rò  r  r  r  r   r   r   ú<module>r4     sW	  ðð #Ð "Ð "Ð "Ð "Ð "à 
€
€
€
Ø €€€Ø 	€	€	€	Ø Ð Ð Ð à Ð Ð Ð Ð Ð Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø "Ð "Ð "Ð "Ð "Ð "à„?ð )Ø.Ð.Ð.Ð.Ð.Ð.Ø)Ð)Ð)Ð)Ð)Ð)Ø(Ð(Ð(Ð(Ð(Ð(ð „ðð ð ð ð �D”Iñ ô ñ „ððMjð Mjð Mjð Mjð Mjñ Mjô Mjð Mjð`"ð "ð "ð "ð "ñ "ô "ð "ðB7ð 7ð 7ð 7ð 7Ð/°ñ 7ô 7ð 7ð7ð 7ð 7ð 7ð 7Ð4°lñ 7ô 7ð 7ð!ð !ð !ð !ð !�<ñ !ô !ð !ð&!ð !ð !ð !ð !ˆ|ñ !ô !ð !ðBð ð ð ð �Hñ ô ð ðð ð ð ð �,ñ ô ð ð!ð !ð !ð !ð !ˆlñ !ô !ð !ð4,ð ,ð ,ð ,ð ,�ñ ,ô ,ð ,ð ð ð ð ð �ñ ô ð ð
ð 
ð 
ð 
ð 
�\ñ 
ô 
ð 
ðð ð ð ð ˆ|ñ ô ð ð ð ð ð ð �(ñ ô ð ð
!ð !ð !ð !ð !�,ñ !ô !ð !ð
ð ð ð ð	1ð 	1ð 	1ð 	1ð^ð ^ð ^ð ^ð}ð }ð }ð }ð }˜cœkð }ñ }ô }ð }ð@ ð  ð  ð  ð  ñ  ô  ð  ð&q(ð q(ð q(ð q(ð q(ñ q(ô q(ð q(ðhL/ð L/ð L/ð L/ð L/Ð0°-ñ L/ô L/ð L/ð^ð ð ð ð Ð.ñ ô ð ð
ð ð ð ð Ð0Ð2IÈ=ñ ô ð ð5ð 5ð 5ð 5ð 5Ð+ñ 5ô 5ð 5ðð ð ð ð Ð*ñ ô ð ð
3ð 3ð 3ð 3ð 3Ð(ñ 3ô 3ð 3ð&@ð &@ð &@ð &@ð &@Ð1Ð3JÈMñ &@ô &@ð &@ðRð ð ð ð Ð1Ð3JÈMñ ô ð ð2ð ð ð ð ˜ñ ô ð ðD)ð )ð )ð )ð )˜ñ )ô )ð )ðV)ð )ð )ð )ð )˜Mñ )ô )ð )ðV#ð #ð #ð #ð #�mñ #ô #ð #ðLð ð ð ð ˜ñ ô ð ð
ð ð ð ð Ð.°ñ ô ð ð*+ð +ð +ð +ð +Ð,ñ +ô +ð +ðð ð ð ð Ð 1ñ ô ð ð"Sð "Sð "Sð "Sð "SÐ.°ñ "Sô "Sð "SðJð ð ð ð Ð.°ñ ô ð ð8 +Ð ð
ð 
ð 
ð 
ð 
�lñ 
ô 
ð 
ð )Ð ðI"ð I"ð I"ð I"ð I"ñ I"ô I"ð I"ðXCð Cð Cð Cð CÐ3°]ñ Cô Cð Cð0(ð (ð (ð (ð (Ð6¸ñ (ô (ð (ð@Cð Cð Cð Cð CÐ5°}ñ Cô Cð Cð(>Sð >Sð >Sð >Sð >SÐ2°Mñ >Sô >Sð >SðB/ð /ð /ð /ð /Ð.°ñ /ô /ð /ðdð ð ð ð Ð6¸ñ ô ð ð.1ð 1ð 1ð 1ð 1Ð(¨-ñ 1ô 1ð 1ð 1ð 1r   