
    <hP-                    b   % S SK Jr  SSKJr  SSKJr  SSKJrJrJ	r	J
r
Jr  S SKrS SKrS SKr\R                   (       a  SSKJrJr  SS	KJr  SS
KJr  SSKJr  0 rS\S'   SS/\S'   S/\S'   S/\S'   S/\S'   S/\S'   S/\S'   S!S jrSSSS.           S"S jjrSS.       S#S  jjrg)$    )annotations   )RSPFileSyntax   )mlog)EnvironmentException
Popen_safePopen_safe_logged	join_argssearch_versionN)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_linkerc                R    SR                  [        X-   5      X#5      n[        U5      e)Nz?Unable to detect linker for compiler `{}`
stdout: {}
stderr: {})formatr   r   )compilerargsstdoutstderrmsgs        z/mnt/mint/home/seanl/mnt/public/Repos/ladybird/Build/vcpkg/downloads/tools/meson-1.9.0-d1fcc2/mesonbuild/linkers/detect.py__failed_to_detect_linkerr%      s)    
M
T
T(/"F4C
s
##    T)use_linker_prefixinvoked_directly
extra_argsc                  SSK Jn  U R                  UR                  X$5        U(       d  UR	                  5       S:X  a  [
        R                  n	O[
        R                  n	U(       a  UR                  c  SS/n
O_[        UR                  [        5      (       a  UR                  S-   UR                  S-   /n
O!UR                  S/-   UR                  -   S/-   n
XR                  R                  XBR                  5      -  n
/ nU R                  XBR                  S-   5      nUb  UR                  US   U5      nX-  n
OSU;   a  UR                  SU5      nX-  n
Ub  U
R                  U5        [!        X-   5      u  pnS	UR#                  S
SS9S   ;   aY  SU;   a%  UR%                  XUR                  U['        U5      S9$ U(       d'  UR)                  XKXR                  ['        U5      SS U	S9$ Ub	  U(       a  Un[!        X-   5      u  pnS	UR#                  S
SS9S   ;   a1  UR)                  U/ U(       a  UR                  O/ U['        U5      UU	S9$ SU;   a  UR+                  X['        U5      S9$ UR-                  S5      (       d  UR-                  S5      (       ax  U=(       d    Un[.        R0                  " SU5      nU(       a  [        UR3                  S5      5      nOSnUR5                  U/ UUU(       a  UR                  O/ ['        U5      UU	S9$ SU;   a'  SS KnUR9                  US   5      n[;        SU S35      e[=        XUU5        g )Nr   linkersmsvcz/logo	--version_ldr   zlld-linkLLD
maxsplitzcompatible with GNU linkersversionF)exelistprefixr5   directmachine
rsp_syntax)r7   r6   r5   r8   r:   OPTLINK	Microsoftz.*(X86|X64|ARM|ARM64).*x86)r9   r6   r7   r5   r8   r:   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.) r,   add_lang_argslanguageget_argument_syntaxr   MSVCGCCLINKER_PREFIX
isinstancestrcoredataget_external_link_argslookup_binary_entryuse_linker_argsextendr	   splitLLVMDynamicLinkerr   ClangClDynamicLinkerOptlinkDynamicLinker
startswithresearchgroupMSVCDynamicLinkershutilwhichr   r%   )envr   
comp_classcomp_versionfor_machiner'   r(   r)   r,   r:   
check_argsoverridevaluepo_eoutmatchtargetrU   fullpaths                         r$   guess_win_linkerrf   %   sa    j)):C:99;vE"''
"&&
 
 8 8 @{+
	J,,c	2	2 ..8*:R:RU`:`a
--	9J<T<TTXcWdd
,,55kCVCVWWJH##K1D1Du1LME--eAhE
	x	--j,G
*%./GA!q)!,,(A-,,z'?'?."3 - 5 5 "//x@X@X&q)%% 0 ' '
 - ./GA!q)!,,++/@:++bnQ&7@P!	 , # 	#
 
a++H>Z[K\+]]	
k	"	"all;&?&?f1		4c:Q(FF((VX/@:++b"3'0@!	 ) # 	#
 
A	<<,"=hZ HW WX 	X hAq9r&   )r)   c          	     b   SSK Jn  U R                  UR                  X$5        U=(       d    / nU R                  U   R
                  nU R                  R                  XBR                  5      nXRR                  XR                  U   5      -  n[        UR                  [        5      (       a  UR                  S-   /U-   n	OUR                  S/-   U-   n	/ n
U R                  XBR                  S-   5      nUb  UR                  US   U5      n
X-  n	[        R                  " S5        [!        X-   SS9u  pn[#        X-   5      nS	UR%                  S
SS9S   ;   d  SU;   a  [        UR                  [        5      (       a  X-   UR                  S-   /-   U-   nOX-   UR                  -   S/-   U-   n[!        USS9u  nnnSU;   a  UR&                  nOUR(                  nU" XUR                  XUS9nU$ UR+                  S5      (       a  UR-                  XUR                  XS9nU$ SU;   a#  SU;   a  UR/                  XUR                  XS9nU$ UR+                  S5      (       a  [1        X-   S/-   5      u  np [2        R4                  " SU[2        R6                  5      R9                  S5      n[:        R$                  " U5      S   n[1        US/5      u  np[#        U5      nUR)                  XUR                  XS9nU$ SU;   d  SU;   a  UR+                  S5      (       d  UR+                  S5      (       a  URB                  nOEUR+                  S5      (       d  UR+                  S5      (       a  URD                  nOURF                  nU" XUR                  XS9nU$ SU;   d  SU;   ad  X-   R%                  S
5       H-  nSU;   d  M  UR%                  S5      S   RI                  5       n  O   SnURK                  XUR                  U
US9nU$ SU;   a  [        UR                  [        5      (       a#  [1        XR                  S -   /-   U-   5      u    nnO"[1        XR                  -   S /-   U-   5      u    nnURM                  XUR                  U
[#        U5      S9nU$ UR+                  S!5      (       a  URO                  XUR                  XS9nU$ S"UR%                  S
SS9S   ;   aD  UR%                  S#SS9S   nUR%                  S$SS9S   nURQ                  XUR                  U
XS9nU$ URS                  S%5      (       d  S&U;   d  S'U;   a  [        UR                  [        5      (       a  XR                  S-   /-   U-   nOXR                  -   S/-   U-   n[!        US(S9u  nnnUR%                  S
5       H%  nS)U;   d  S*U;   d  M  UR%                  S$5      S   n  O   [U        XX5        URQ                  XUR                  U
XS9nU$ [U        XX5        W$ ! [<        [>        [@        4 a     GNNf = f)+a8  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)
r   r+   r.   r/   r   z-----zDetecting linker via)r#   r0   r1   r2   tiarmlnkz-vzDetecting LLD linker viazld64.lld)systemr5   eldr4   
SnapdragonLLVMz
lld-link: z.*\n(.*?)\nlld-link: GNUzGNU goldmoldSolarisz!ld: Software Generation Utilities:r   zunknown versionz*ld: 0706-012 The -- flag is not recognizedz-Vzzig ldzxtools- -z(use -v to see invocation)
macosx_versionzld: unknown optionzDetecting Apple linker viaz
PROJECT:ldzPROJECT:dyld)+r>   r,   r?   r@   machinesri   rG   rH   _unix_args_to_nativerE   rD   rF   rI   rJ   r   debugr
   r   rL   LLVMLD64DynamicLinkerrM   rP   ELDDynamicLinkerQualcommLLVMDynamicLinkerr	   rQ   rc   DOTALLrS   shlexAttributeError
IndexError
ValueErrorGnuGoldDynamicLinkerMoldDynamicLinkerGnuBFDDynamicLinkerlstripSolarisDynamicLinkerAIXDynamicLinkerZigCCDynamicLinkerAppleDynamicLinkerendswithr%   )rW   r   rX   rY   rZ   r)   r,   ri   ldflagsr[   r\   r]   r^   r_   ra   vcmdr`   newonewerrlld_clslinker
linker_cmdgnu_clslinextoolss                             r$   guess_nix_linkerr   w   s    j)):C!rJ\\+&--Fll11+?R?RSG11'<<;TUUJ***C00 ..<=
J
--=
J
H##K1D1Du1LME--eAhE
JJw 5;QRGA!quAq)!,,
aj..44%)A)AD)H(IIJVC%
(@(@@D6IJVC+C5OP4 33G//G:#;#;X^_at Mq 
e		)):#;#;X * Rn Mk 
	v{22:#;#;X 3 Rh Me 
l	#	# X2dV;<1	"":AryyIOOPQRJZ03J !*k!:;GAqq!A**8*BZBZ\d*pB MA 
!uz <<
##q||J'?'?22G\\&!!Q\\&%9%9//G11G
0H0H(^l Mk 
a9>SKK%D2d:JJsOA&--/ &
 "A--:#;#;X . \ MW 
6	:j..44 -E-E-L,M!MPZ!Z[GAq! ,D,D!Dv!MPZ!Z[GAq!)):#;#;X"1% * 'L MG 
h		++:#;#;X , RD M? 
aggdQg/2	2q)!,LLqL)!,++:#;#;X , 
8 M' 
2	3	37G17LPdhiPij..4466=>>KC555>KC+C5QR4LL&Dt#~'=JJsOA& '
 &hAA++:#;#;X , 
 M 	"(=MO 
J7 		s   6AX X.-X.)
r   T.List[str]r    r   r!   rF   r"   rF   returnz'T.NoReturn')rW   'Environment'r   r   rX   T.Type['Compiler']rY   rF   rZ   r   r'   boolr(   r   r)   T.Optional[T.List[str]]r   'DynamicLinker')rW   r   r   r   rX   r   rY   rF   rZ   r   r)   r   r   r   )
__future__r   baser   r>   r   mesonlibr   r	   r
   r   r   rQ   r{   typingTTYPE_CHECKINGr,   r   r   environmentr   	compilersr   r   r   __annotations__r%   rf   r    r&   r$   <module>r      s   #   
 
  ??8)$(%'
" '!5M  %w	 &0\	! ""*	 !)
	 #,+	 $ 04d;?P:#&P:5BP:(,P:GKP: "9P: ETP:h <@J#&J5BJ!8JDSJr&   