§
    öÜÚcÕ+  ã                  óJ  — U d dl mZ ddlmZ ddlmZmZmZmZ ddl	m
Z
mZmZmZmZmZmZmZmZmZmZmZ d dlZd dlZd dlZej        rddl	mZmZ dd	lmZ dd
lm Z  ddlm!Z! i Z"de#d<   ddge"d<   dge"d<   dge"d<   dge"d<   dge"d<   dge"d<   d6d#„Z$d$d$dd%œd7d3„Z%dd4œd8d5„Z&dS )9é    )Úannotationsé   )Úmlog)ÚEnvironmentExceptionÚ
Popen_safeÚ	join_argsÚsearch_versioné   )ÚAppleDynamicLinkerÚLLVMLD64DynamicLinkerÚGnuGoldDynamicLinkerÚGnuBFDDynamicLinkerÚMoldDynamicLinkerÚLLVMDynamicLinkerÚQualcommLLVMDynamicLinkerÚMSVCDynamicLinkerÚClangClDynamicLinkerÚSolarisDynamicLinkerÚAIXDynamicLinkerÚOptlinkDynamicLinkerN)ÚDynamicLinkerÚGnuDynamicLinker)ÚEnvironment)ÚCompiler)ÚMachineChoicezT.Dict[str, T.List[str]]ÚdefaultsÚarÚgarÚstatic_linkerÚlibÚvs_static_linkerzllvm-libÚclang_cl_static_linkerÚnvlinkÚcuda_static_linkerzgcc-arÚgcc_static_linkerzllvm-arÚclang_static_linkerÚcompilerúT.List[str]ÚargsÚstdoutÚstrÚstderrÚreturnú'T.NoReturn'c                ón   — d                      t          | |z   ¦  «        ||¦  «        }t          |¦  «        ‚)Nz?Unable to detect linker for compiler `{}`
stdout: {}
stderr: {})Úformatr   r   )r'   r)   r*   r,   Úmsgs        ú;/usr/lib/python3/dist-packages/mesonbuild/linkers/detect.pyÚ__failed_to_detect_linkerr3   7   s8   € Ø
M×
TÒ
TÝ�(˜T‘/Ñ"Ô" F¨Fñ4ô 4€Cå
˜sÑ
#Ô
#Ð#ó    T)Úuse_linker_prefixÚinvoked_directlyÚ
extra_argsÚenvú'Environment'Ú
comp_classúT.Type['Compiler']Úcomp_versionÚfor_machiner   r5   Úboolr6   r7   úT.Optional[T.List[str]]ú'DynamicLinker'c          
     ó   — | j                              |j        ||| ¦  «         |r|j        €ddg}n`t	          |j        t
          ¦  «        r|j        dz   |j        dz   g}n1t	          |j        t          ¦  «        r|j        dgz   |j        z   dgz   }|| j                              ||j        ¦  «        z  }g }	|                      ||j        dz   ¦  «        }
|
�!| 	                    |
d         |¦  «        }	||	z  }|�| 
                    |¦  «         t          ||z   ¦  «        \  }}}d|                     dd¬¦  «        d         v rTd	|v r&t          |||j        |	t          |¦  «        ¬
¦  «        S |s(t          ||	||j        t          |¦  «        dd ¬¦  «        S |
�|r|
}t          ||z   ¦  «        \  }}}d|                     dd¬¦  «        d         v r+t          |g |r|j        ng |t          |¦  «        |¬¦  «        S d|v rt!          ||t          |¦  «        ¬
¦  «        S |                     d¦  «        s|                     d¦  «        rl|p|}t%          j        d|¦  «        }|r#t          |                     d¦  «        ¦  «        }nd}t+          |g |||r|j        ng t          |¦  «        |¬¦  «        S d|v r2dd l}|                     |d         ¦  «        }t1          d|› d�¦  «        ‚t3          ||||¦  «         d S )Nz/logoú	--versionÚ_ldr   ÚLLDú
r
   ©Úmaxsplitz(compatible with GNU linkers)©ÚversionF)ÚexelistÚprefixrI   ÚdirectÚmachine)rK   rJ   rI   rL   ÚOPTLINKÚ	Microsoftz.*(X86|X64|ARM|ARM64).*Úx86)rM   rJ   rK   rI   rL   zGNU coreutilsz/Found GNU link.exe instead of MSVC link.exe in zi.
This link.exe is not a linker.
You may need to reorder entries to your %PATH% variable to resolve this.)ÚcoredataÚadd_lang_argsÚlanguageÚLINKER_PREFIXÚ
isinstancer+   ÚlistÚget_external_link_argsÚlookup_binary_entryÚuse_linker_argsÚextendr   Úsplitr   r	   r   r   Ú
startswithÚreÚsearchÚgroupr   ÚshutilÚwhichr   r3   )r8   r'   r:   r<   r=   r5   r6   r7   Ú
check_argsÚoverrideÚvalueÚpÚoÚ_ÚeÚoutÚmatchÚtargetr`   Úfullpaths                       r2   Úguess_win_linkerrm   =   s¹  € ð „L×Ò˜zÔ2°JÀÈSÑQÔQÐQð ð e 
Ô 8Ð @Ø˜{Ð+ˆ
ˆ
Ý	�JÔ,­cÑ	2Ô	2ð eØ Ô.°Ñ8¸*Ô:RÐU`Ñ:`Ðaˆ
ˆ
Ý	�JÔ,­dÑ	3Ô	3ð eØÔ-°°	Ñ9¸JÔ<TÑTÐXcÐWdÑdˆ
à�#”,×5Ò5°kÀ:ÔCVÑWÔWÑW€Jà€HØ×#Ò# K°Ô1DÀuÑ1LÑMÔM€EØÐØ×-Ò-¨e°A¬h¸ÑEÔEˆØ�hÑˆ
àÐØ×Ò˜*Ñ%Ô%Ð%å˜ JÑ.Ñ/Ô/�G€A€qˆ!Ø�—’˜ q�Ñ)Ô)¨!Ô,Ð,Ð,Ø*¨aÐ/Ð/Ý$Ø˜+ zÔ'?Ø¥.°Ñ"3Ô"3ð5ñ 5ô 5ð 5ð "ð 	GÝ'Ø˜X¨xÀ
Ô@XÝ& qÑ)Ô)°%ÀðGñ Gô Gð Gð ÐÐ-ÐØˆõ ˜ JÑ.Ñ/Ô/�G€A€qˆ!Ø�—’˜ q�Ñ)Ô)¨!Ô,Ð,Ð,Ý#Ø˜Ø/@ÐH�:Ô+Ð+ÀbØ¥n°QÑ&7Ô&7Ð@PðRñ Rô Rð 	Rð 
�aˆˆå# H¨kÅ>ÐRSÑCTÔCTÐUÑUÔUÐUØ	
�Š�kÑ	"Ô	"ð X a§l¢l°;Ñ&?Ô&?ð XØˆf�1ˆÝ”	Ð4°cÑ:Ô:ˆØð 	Ý˜Ÿš Q™œÑ(Ô(ˆFˆFàˆFå Ø˜ V°XØ/@ÐH�:Ô+Ð+ÀbÝ" 3Ñ'Ô'Ð0@ðBñ Bô Bð 	Bð 
˜AÐ	Ð	ØˆˆˆØ—<’< ¨¤Ñ,Ô,ˆÝ"ðW¸hð Wð Wð WñXô Xð 	Xõ ˜h¨
°A°qÑ9Ô9Ð9Ð9Ð9r4   )r7   c          	     óÆ  — | j                              |j        ||| ¦  «         |pg }| j                              ||j        ¦  «        }||                     || j        |         ¦  «        z  }t          |j        t          ¦  «        r|j        dz   g|z   }n|j        dgz   |z   }g }|  	                    ||j        dz   ¦  «        }	|	�!| 
                    |	d         |¦  «        }||z  }t          j        d¦  «         t          j        dt          ||z   ¦  «        › �¦  «         t          ||z   ¦  «        \  }
}}t          j        d|
› �¦  «         t          j        d|› �¦  «         t          j        d	|› �¦  «         t          ||z   ¦  «        }d
|                     dd¬¦  «        d         v ræt          |j        t          ¦  «        r||z   |j        dz   gz   |z   }n||z   |j        z   dgz   |z   }t          j        d¦  «         t          j        dt          |¦  «        › �¦  «         t          |¦  «        \  }}}t          j        d|› �¦  «         t          j        d	|› �¦  «         d|v rt"          }nt$          } ||||j        ||¬¦  «        }�nÏd|v rd|v rt'          |||j        ||¬¦  «        }�n¬|                     d¦  «        rÅt          ||z   dgz   ¦  «        \  }}}	 t+          j        d|t*          j        ¦  «                             d¦  «        }t3          j        |¦  «        d         }t          |dg¦  «        \  }}}t          |¦  «        }n# t4          t6          t8          f$ r Y nw xY wt%          |||j        ||¬¦  «        }�nÒ|                     d¦  «        s	d|v sd|v �rt          |j        t          ¦  «        r||j        dz   gz   |z   }n||j        z   dgz   |z   }t          j        d¦  «         t          j        dt          |¦  «        › �¦  «         t          |¦  «        \  }}}t          j        d|› �¦  «         t          j        d	|› �¦  «         |                     d¦  «        D ]#}d|v r|                     d¦  «        d         } nŒ$t=          ||||¦  «         t?          |||j        ||¬¦  «        }�n˜d|v sd|v r‚|                     d¦  «        s|                     d¦  «        rt@          }n9|                     d¦  «        s|                     d¦  «        rtB          }ntD          } ||||j        ||¬¦  «        }�nd|v sd|v rj||z                        d¦  «        D ]5}d |v r/|                     d!¦  «        d"          #                    ¦   «         } nŒ6d#}tI          |||j        ||¬¦  «        }nœd$|v r†t          |j        t          ¦  «        r#t          ||j        d%z   gz   |z   ¦  «        \  }}}n"t          ||j        z   d%gz   |z   ¦  «        \  }}}tK          |||j        |t          |¦  «        ¬¦  «        }nt=          ||||¦  «         |S )&aP  Helper for guessing what linker to use on Unix-Like OSes.

    :compiler: Invocation to use to get linker
    :comp_class: The Compiler Type (uninstantiated)
    :comp_version: The compiler version string
    :for_machine: which machine this linker targets
    :extra_args: Any additional arguments required (such as a source file)
    rB   rC   Nr   z-----zDetecting linker via: zlinker returned zlinker stdout:
zlinker stderr:
rD   rE   r
   rF   z-vzDetecting LLD linker via: zld64.lldrH   Ú
SnapdragonÚLLVMz
lld-link: z.*\n(.*?)\nlld-link: z(use -v to see invocation)
Úmacosx_versionzld: unknown option:zDetecting Apple linker via: z
PROJECT:ldú-ÚGNUzGNU goldÚmoldÚSolarisz!ld: Software Generation Utilitiesú:r   zunknown versionz*ld: 0706-012 The -- flag is not recognizedz-V)&rQ   rR   rS   rW   Ú_unix_args_to_nativeÚmachinesrU   rT   r+   rX   rY   r   Údebugr   r   r	   r[   r   r   r   r\   r]   rj   ÚDOTALLr_   ÚshlexÚAttributeErrorÚ
IndexErrorÚ
ValueErrorÚendswithr3   r   r   r   r   Úlstripr   r   )r8   r'   r:   r<   r=   r7   Úldflagsrb   rc   rd   re   rf   rh   ÚvÚcmdrg   ÚnewoÚnewerrÚlld_clsÚlinkerÚ
linker_cmdÚlineÚgnu_clss                          r2   Úguess_nix_linkerr‹   ƒ   s/  € ð „L×Ò˜zÔ2°JÀÈSÑQÔQÐQØÐ!˜r€JàŒl×1Ò1°+¸zÔ?RÑSÔS€GØ�*×1Ò1°'¸3¼<ÈÔ;TÑUÔUÑU€Jå�*Ô*­CÑ0Ô0ð KØ Ô.°Ñ<Ð=À
ÑJˆ
ˆ
àÔ-°°Ñ=À
ÑJˆ
à€HØ×#Ò# K°Ô1DÀuÑ1LÑMÔM€EØÐØ×-Ò-¨e°A¬h¸ÑEÔEˆØ�hÑˆ
å„JˆwÑÔÐÝ„JÐJ­	°(¸ZÑ2GÑ(HÔ(HÐJÐJÑKÔKÐKÝ˜ JÑ.Ñ/Ô/�G€A€qˆ!Ý„JÐ% !Ð%Ð%Ñ&Ô&Ð&Ý„JÐ% !Ð%Ð%Ñ&Ô&Ð&Ý„JÐ% !Ð%Ð%Ñ&Ô&Ð&å�q˜1‘uÑÔ€Aà�—’˜ q�Ñ)Ô)¨!Ô,Ð,Ð,Ý�jÔ.µÑ4Ô4ð 	WØ˜XÑ%¨Ô)AÀDÑ)HÐ(IÑIÈJÑVˆCˆCà˜XÑ%¨
Ô(@Ñ@ÀDÀ6ÑIÈJÑVˆCÝŒ
�7ÑÔÐÝŒ
Ð@µ	¸#±´Ð@Ð@ÑAÔAÐAÝ$ S™/œ/‰ˆˆ4�ÝŒ
Ð, dÐ,Ð,Ñ-Ô-Ð-ÝŒ
Ð. fÐ.Ð.Ñ/Ô/Ð/ð ˜ÐÐÝ+ˆGˆGå'ˆGà�Ø�k :Ô#;¸XÈqðRñ Rô Rˆ‰à	˜Ð	Ð	˜v¨˜{˜{Ý*Ø�k :Ô#;¸XÈqðRñ Rô Rˆ‰à	
�Š�lÑ	#Ô	#ð C>õ ˜X¨
Ñ2°d°VÑ;Ñ<Ô<‰ˆˆ1ˆað	"ÝœÐ":¸A½r¼yÑIÔI×OÒOÐPQÑRÔRˆJÝœ ZÑ0Ô0°Ô3ˆJõ ! *¨kÐ!:Ñ;Ô;‰GˆAˆq�!Ý˜qÑ!Ô!ˆAˆAøõ	 ¥
­JÐ7ð 	ð 	ð 	ØˆDð	øøøõ # 8¨[¸*Ô:RÐT\ÐfgÐhÑhÔhˆ‰à	
�ŠÐ2Ñ	3Ô	3ð 0>Ð7GÈ1Ð7LÐ7LÐPeÐijÐPjÑPjÝ�jÔ.µÑ4Ô4ð 	LØ˜jÔ6¸Ñ=Ð>Ñ>ÀÑKˆCˆCà˜ZÔ5Ñ5¸¸Ñ>ÀÑKˆCÝŒ
�7ÑÔÐÝŒ
ÐBµ)¸C±.´.ÐBÐBÑCÔCÐCÝ$ S™/œ/‰ˆˆ4�ÝŒ
Ð, dÐ,Ð,Ñ-Ô-Ð-ÝŒ
Ð. fÐ.Ð.Ñ/Ô/Ð/à—L’L Ñ&Ô&ð 	Bð 	BˆDØ˜tÐ#Ð#Ø—J’J˜s‘O”O AÔ&�Ø�ð $õ & h°
¸A¸qÑAÔAÐAÝ# H¨k¸:Ô;SÐU]ÐghÐiÑiÔiˆ‰Ø	�!ˆˆ�u �z�zð �<Š<˜
Ñ#Ô#ð 	* q§|¢|°JÑ'?Ô'?ð 	*Ý*ˆGˆGØ�\Š\˜&Ñ!Ô!ð 	* Q§\¢\°&Ñ%9Ô%9ð 	*Ý'ˆGˆGå)ˆGØ�˜ ;°
Ô0HÈ(Ð\]Ð^Ñ^Ô^ˆ‰Ø	�aˆˆ˜9¨˜>˜>Ø�q‘S—K’K Ñ%Ô%ð 	"ð 	"ˆDØ2°dÐ:Ð:Ø—J’J˜s‘O”O AÔ&×-Ò-Ñ/Ô/�Ø�ð ;ð "ˆAÝ%Ø�k :Ô#;¸XØðñ ô ˆˆð 
6¸Ð	:Ð	:Ý�jÔ.µÑ4Ô4ð 	\Ý  ¨ZÔ-EÈÑ-LÐ,MÑ!MÐPZÑ!ZÑ[Ô[‰GˆAˆq�!�!å  ¨JÔ,DÑ!DÈÀvÑ!MÐPZÑ!ZÑ[Ô[‰GˆAˆq�!Ý!Ø�k :Ô#;¸XÝ" 1Ñ%Ô%ð'ñ 'ô 'ˆˆõ 	" (¨J¸¸1Ñ=Ô=Ð=Ø€Ms   Ë%AM ÍM1Í0M1)
r'   r(   r)   r(   r*   r+   r,   r+   r-   r.   )r8   r9   r'   r(   r:   r;   r<   r+   r=   r   r5   r>   r6   r>   r7   r?   r-   r@   )r8   r9   r'   r(   r:   r;   r<   r+   r=   r   r7   r?   r-   r@   )'Ú
__future__r   Ú r   Úmesonlibr   r   r   r	   Úlinkersr   r   r   r   r   r   r   r   r   r   r   r   r]   r{   ÚtypingÚTÚTYPE_CHECKINGr   r   Úenvironmentr   Ú	compilersr   r   r   Ú__annotations__r3   rm   r‹   © r4   r2   ú<module>r—      sG  ðð #Ð "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð 
€	€	€	Ø €€€Ø Ð Ð Ð à„?ð )Ø8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ø)Ð)Ð)Ð)Ð)Ð)Ø$Ð$Ð$Ð$Ð$Ð$Ø(Ð(Ð(Ð(Ð(Ð(à%'€Ð 'Ð 'Ð 'Ñ 'Ø! 5˜M€ˆÑ Ø %˜w€Ð	Ñ Ø&0 \€Ð	!Ñ "Ø"* €Ð	Ñ Ø!) 
€Ð	Ñ Ø#, +€Ð	Ñ ð$ð $ð $ð $ð 04ÈdØ;?ðD:ð D:ð D:ð D:ð D:ð D:ðP <@ðð ð ð ð ð ð ð r4   