+
    UBi\                      ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^RIHtH	t	 ^RI
Ht ^RIHtHt ^RIHt ]P                   '       d   ^RIHt ^RIHt ^R	IHt ^R
IHt  ! R R4      t ! R R]P2                  R7      t]P                   '       d   ]t]tM];tt ! R R]4      t ! R R]]4      t ! R R]]4      t  ! R R]]4      t! ! R R]!4      t" ! R R]]4      t# ! R R]4      t$ ! R R]4      t% ! R  R!]4      t& ! R" R#]!4      t' ! R$ R%]4      t( ! R& R']4      t) ! R( R)])4      t* ! R* R+])4      t+ ! R, R-]]4      t, ! R. R/]4      t- ! R0 R1]-4      t. ! R2 R3]-4      t/ ! R4 R5]4      t0 ! R6 R7]!4      t1R8 R9 lt2R: R; lt3R< R= lt4 ! R> R?]4      t5 ! R@ RA]4      t6 ! RB RC]5]4      t7 ! RD RE]74      t8 ! RF RG]6]5]4      t9 ! RH RI]94      t: ! RJ RK]94      t; ! RL RM]94      t< ! RN RO]6]5]4      t= ! RP RQ]=4      t> ! RR RS]6]5]4      t? ! RT RU]4      t@ ! RV RW]4      tA ! RX RY]94      tB ! RZ R[]4      tC ! R\ R]]4      tD ! R^ R_]D4      tE ! R` Ra]D4      tF ! Rb Rc]5]4      tG ! Rd Re]G4      tH ! Rf Rg]=4      tI ! Rh Ri]6]5]4      tJ ! Rj Rk]5]4      tK ! Rl Rm]5]4      tL]LtM ! Rn Ro]4      tN]NtO ! Rp Rq]4      tP ! Rr Rs]P]4      tQ ! Rt Ru]P]4      tR ! Rv Rw]P]4      tS ! Rx Ry]5]4      tT ! Rz R{]5]4      tU ! R| R}]P]4      tV ! R~ R]5]4      tW ! R R]4      tX ! R R]X4      tY ! R R]X4      tZ ! R R]4      t[ ! R R]5]4      t\ ! R R]\4      t] ! R R]\4      t^R# )    )annotationsN)ArLikeLinkerRSPFileSyntax)mesonlib)EnvironmentExceptionMesonExceptionCompilerArgs)Environment)MachineChoice)BuildTarget)Compilerc                  V   ] tR t^t$ R]R&   R R ltR R ltR R ltR3R
 R lltR R lt	R R lt
R R ltR R ltR R ltR R ltR R ltR R ltR3R R lltR R ltR  R! ltR3R" R# llt]R$ R% l4       t]R& R' l4       tR( R) ltR* R+ ltR, R- ltR. R/ ltR0 R1 ltR2tR	# )4StaticLinkerstridc                    V ^8  d   QhRRRR/#    exelistT.List[str]envr    )formats   "?/usr/lib/python3.14/site-packages/mesonbuild/linkers/linkers.py__annotate__StaticLinker.__annotate__   s       +     c                	    Wn         W n        R # N)r   environment)selfr   r   s   &&&r   __init__StaticLinker.__init__   s    r   c                   V ^8  d   QhRR/# r   returnr   r   )r   s   "r   r   r              r   c                	    V P                   # r    r   r"   s   &r   get_idStaticLinker.get_id        wwr   c                   V ^8  d   QhRR/# r&   r   )r   s   "r   r   r   #          r   c                	(    V P                   ^ ,          # r   r   r+   s   &r   get_exeStaticLinker.get_exe#       ||Ar   Nc                    V ^8  d   QhRRRR/# )r   argszT.Optional[T.Iterable[str]]r'   r
   r   )r   s   "r   r   r   &   s     ( ("= ( (r   c                	    \        W4      # r    r	   r"   r8   s   &&r   compiler_argsStaticLinker.compiler_args&   s    D''r   c                   V ^8  d   QhRR/# r   r'   boolr   )r   s   "r   r   r   )   s     % %t %r   c                ,    \         P                  ! 4       # )zK
Determines whether the linker can accept arguments using the @rsp syntax.
r   
is_windowsr+   s   &r   can_linker_accept_rsp"StaticLinker.can_linker_accept_rsp)   s     ""$$r   c               (    V ^8  d   QhRRRRRRRR/# )	r   target'BuildTarget'linkerz
'Compiler'r   'Environment'r'   r   r   )r   s   "r   r   r   /   s0      #0#- !. 3>r   c                    . # )z=Like compilers.get_base_link_args, but for the static linker.r   )r"   rF   rH   r   s   &&&&r   get_base_link_argsStaticLinker.get_base_link_args/   	    
 	r   c                   V ^8  d   QhRR/# r   r'   r   r   )r   s   "r   r   r   6        # #[ #r   c                	6    V P                   P                  4       # r    r   copyr+   s   &r   get_exelistStaticLinker.get_exelist6       ||  ""r   c               $    V ^8  d   QhRRRRRR/# r   r   rI   is_thinr?   r'   r   r   )r   s   "r   r   r   9   s!      ] T k r   c                	    . # r    r   r"   r   rY   s   &&&r   get_std_link_argsStaticLinker.get_std_link_args9       	r   c                    V ^8  d   QhRRRR/# r   optimization_levelr   r'   r   r   )r   s   "r   r   r   <   s      S [ r   c                	    . # r    r   )r"   ra   s   &&r   get_optimization_link_args'StaticLinker.get_optimization_link_args<   r^   r   c                    V ^8  d   QhRRRR/# r   rF   r   r'   r   r   )r   s   "r   r   r   ?   s      c k r   c                	    . # r    r   r"   rF   s   &&r   get_output_argsStaticLinker.get_output_args?   r^   r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r   B          r   c                	    . # r    r   r+   s   &r   get_coverage_link_args#StaticLinker.get_coverage_link_argsB   r^   r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r   E          r   c                	    . # r    r   r+   s   &r   gen_vs_module_defs_args$StaticLinker.gen_vs_module_defs_argsE   r^   r   c          
     ,    V ^8  d   QhRRRRRRRRRR	/# 
r   	build_dirr   from_dirrF   r   extra_pathsT.Optional[T.List[str]]r'   z"T.Tuple[T.List[str], T.Set[bytes]]r   )r   s   "r   r   r   H   1      #  k &=@r   c                	    . \        4       3# r    setr"   rw   rx   rF   ry   s   &&&&&r   build_rpath_argsStaticLinker.build_rpath_argsH        CE{r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r   M         k r   c                	    . # r    r   r+   s   &r   thread_flagsStaticLinker.thread_flagsM   r^   r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r   P   r   r   c                	    . # r    r   r+   s   &r   openmp_flagsStaticLinker.openmp_flagsP   r^   r   c               $    V ^8  d   QhRRRRRR/# r   rF   rG   
subprojectT.Optional[str]r'   r   r   )r   s   "r   r   r   S   "      = o al r   c                	    . # r    r   r"   rF   r   s   &&&r   get_option_link_args!StaticLinker.get_option_link_argsS   r^   r   c                    V ^8  d   QhRRRR/# r   r8   r   r'   r   )r   s   "r   r   r   W         { { r   c                	    VR ,          # :NNNr   clsr8   s   &&r   unix_args_to_native StaticLinker.unix_args_to_nativeV       Awr   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r   [   r   r   c                	    VR ,          # r   r   r   s   &&r   native_args_to_unix StaticLinker.native_args_to_unixZ   r   r   c                    V ^8  d   QhRRRR/# r   
targetfiler   r'   r   r   )r   s   "r   r   r   ^   s      # / r   c                	    R # r    r   r"   r   s   &&r   get_link_debugfile_name$StaticLinker.get_link_debugfile_name^       r   c                    V ^8  d   QhRRRR/# r   r   r   r'   r   r   )r   s   "r   r   r   a   s      # + r   c                	    . # r    r   r   s   &&r   get_link_debugfile_args$StaticLinker.get_link_debugfile_argsa       	r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r   e          r   c                	    . # r    r   r+   s   &r   get_always_argsStaticLinker.get_always_argse   r^   r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r   h   rl   r   c                	    . # r    r   r+   s   &r   get_linker_always_args#StaticLinker.get_linker_always_argsh   r^   r   c                   V ^8  d   QhRR/# r   r'   r   r   )r   s   "r   r   r   k   s     j j jr   c                    V P                  4       '       d   Q V P                   R24       h\        V P                   R24      h)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)rC   r   r   r+   s   &r   rsp_file_syntaxStaticLinker.rsp_file_syntaxk   sM     --//  	HDGG9  =G  2H  	H/"dggY.g#hiir   )r!   r   r    )__name__
__module____qualname____firstlineno____annotations__r#   r,   r4   r;   rC   rK   rT   r\   rc   ri   rn   rs   r   r   r   r   classmethodr   r   r   r   r   r   r   __static_attributes__r   r   r   r   r      s    G(%#
    j jr   r   c                     ] tR t^ut$ RtR. R. R. R. R. R. R. /tR	]R
&   ]P                  R R l4       t	R R lt
RRRR/R R lltR R ltR R ltR R ltR R ltR R ltR R  ltR! R" ltR# R$ ltR% R& ltRiR( R) lltRiR* R+ lltR, R- ltR. R/ ltR0 R1 ltR2 R3 ltR4 R5 ltR6 R7 ltR8 R9 ltR: R; ltR< R= ltR> R? lt R@ RA lt!RB RC lt"RD RE lt#RF RG lt$]PJ                  RH RI l4       t&RJ RK lt'RL RM lt(]PJ                  RN RO l4       t)RP RQ lt*RR RS lt+RT RU lt,RV RW lt-RX RY lt.RZ R[ lt/R\ R] lt0R^ R_ lt1RiR` Ra llt2Rb Rc lt3Rd Re lt4Rf Rg lt5Rht6R'# )jDynamicLinkerzBase class for dynamic linkers.plain0g123sT.Dict[str, T.List[str]]_OPTIMIZATION_ARGSc                   V ^8  d   QhRR/# r&   r   )r   s   "r   r   DynamicLinker.__annotate__   s      C r   c                	    R # r    r   r+   s   &r   r   DynamicLinker.id       r   c                    V ^8  d   QhRRRR/# r   argT.Union[str, T.List[str]]r'   r   r   )r   s   "r   r   r      s     	 	!: 	{ 	r   c                	4   \        V\        4      '       d   V.MTpV P                  f   V# \        V P                  \        4      '       d#   V Uu. uF  qP                  V,           NK  	  up# . pV F  pW0P                  V.,           ,          pK  	  V# u upi r    )
isinstancer   
prefix_arg)r"   r   r8   rets   &&  r   _apply_prefixDynamicLinker._apply_prefix   s    "3,,u#??"K--59:TcOOc))T::C??cU**C 
	 ;s   Bsystemunknown systemversionunknown versionc               4    V ^8  d   QhRRRRRRRRR	RR
RRR/# r   r   r   r   r   for_machinemesonlib.MachineChoicer   r   always_argsr   r   r   r   )r   s   "r   r   r      sD     - - -+ -4-B[-)-69- -r   c               	h    Wn         W n        W0n        W`n        Wpn        W@n        WPn        R V n        R # r    )r   r!   r   r   r   r   r   machine)r"   r   r   r   r   r   r   r   s   &&&&&&$$r   r#   DynamicLinker.__init__   s1     &$&(,r   c                   V ^8  d   QhRR/# r&   r   )r   s   "r   r   r      s     b b# br   c                	    R P                  \        V 4      P                  V P                  RP	                  V P
                  4      4      # )z<{}: v{} `{}`> )r   typer   r   joinr   r+   s   &r   __repr__DynamicLinker.__repr__   s5    &&tDz':':DLL#((SWS_S_J`aar   c                   V ^8  d   QhRR/# r&   r   )r   s   "r   r   r      r(   r   c                	    V P                   # r    r*   r+   s   &r   r,   DynamicLinker.get_id   r.   r   c                   V ^8  d   QhRR/# r&   r   )r   s   "r   r   r      r0   r   c                	(    V P                   ^ ,          # r2   r3   r+   s   &r   r4   DynamicLinker.get_exe   r6   r   c                   V ^8  d   QhRR/# r&   r   )r   s   "r   r   r      s     - -C -r   c                	<    R V P                    RV P                   R2# )(r   ))r   r   r+   s   &r   get_version_string DynamicLinker.get_version_string   s    477)1T\\N!,,r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r      rP   r   c                	6    V P                   P                  4       # r    rR   r+   s   &r   rT   DynamicLinker.get_exelist   rV   r   c                   V ^8  d   QhRR/# r>   r   )r   s   "r   r   r      s     % % %r   c                	,    \         P                  ! 4       # r    rA   r+   s   &r   get_accepts_rspDynamicLinker.get_accepts_rsp   s     ""$$r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r      s     ! ! !r   c                "    \         P                  # )r   r   GCCr+   s   &r   r   DynamicLinker.rsp_file_syntax   s        r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r           ' ' 'r   c                	6    V P                   P                  4       # r    r   rS   r+   s   &r   r   DynamicLinker.get_always_args       $$&&r   c                   V ^8  d   QhRR/# r&   r   )r   s   "r   r   r             r   c                	    R #  r   r+   s   &r   get_lib_prefixDynamicLinker.get_lib_prefix       r   Nc               (    V ^8  d   QhRRRRRRRR/# )	r   rF   rG   r   rI   r   r   r'   r   r   )r   s   "r   r   r      s*      m - Ud p{ r   c                	    . # r    r   )r"   rF   r   r   s   &&&&r   get_option_argsDynamicLinker.get_option_args   r^   r   c               $    V ^8  d   QhRRRRRR/# r   r   )r   s   "r   r   r      r   r   c                	    . # r    r   r   s   &&&r   r   "DynamicLinker.get_option_link_args   r^   r   c                    V ^8  d   QhRRRR/# )r   r8   r   r'   zT.Tuple[bool, bool]r   )r   s   "r   r   r      s     e e e8K er   c                	4    \        R V P                   R24      h)z	Language z+ does not support has_multi_link_arguments.r   r   r:   s   &&r   has_multi_arguments!DynamicLinker.has_multi_arguments   s    "Ytwwi7b#cddr   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r      s      S _ r   c                    R# )z*Name of debug file written out (see below)Nr   r   s   &&r   get_debugfile_name DynamicLinker.get_debugfile_name   s    r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r      s      S [ r   c                    . # )zSome 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   r   s   &&r   get_debugfile_args DynamicLinker.get_debugfile_args   s	     	r   c                    V ^8  d   QhRRRR/# r`   r   )r   s   "r   r   r      s     n nS n[ nr   c                	    \         P                  ! V P                  V,           Uu. uF  q P                  V4      NK  	  up4      # u upi r    )r   listifyr   r   )r"   ra   as   && r   rc   (DynamicLinker.get_optimization_link_args   s>     @W@WXj@k l@k1!3!3A!6@k lmm ls   Ac                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r      rq   r   c                	    . # r    r   r+   s   &r   get_std_shared_lib_args%DynamicLinker.get_std_shared_lib_args   r^   r   c                    V ^8  d   QhRRRR/# )r   TargetrG   r'   r   r   )r   s   "r   r   r      s     . . .; .r   c                	"    V P                  4       # r    )r5  )r"   r8  s   &&r   get_std_shared_module_args(DynamicLinker.get_std_shared_module_args   s    ++--r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r      s     i ik ir   c                	4    \        R V P                   R24      h)Linker z1 does not support position-independent executabler#  r+   s   &r   get_pie_argsDynamicLinker.get_pie_args   s     #WTWWI5f#ghhr   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r      r   r   c                	    . # r    r   r+   s   &r   get_lto_argsDynamicLinker.get_lto_args   r^   r   c                    V ^8  d   QhRRRR/# r   pathr   r'   r   r   )r   s   "r   r   r            3 ; r   c                	    . # r    r   r"   rG  s   &&r   get_thinlto_cache_args$DynamicLinker.get_thinlto_cache_args   r^   r   c                    V ^8  d   QhRRRR/# rF  r   )r   s   "r   r   r      rH  r   c                	    . # r    r   rJ  s   &&r   get_lto_obj_cache_path$DynamicLinker.get_lto_obj_cache_path   r^   r   c                    V ^8  d   QhRRRR/# r   valuer   r'   r   )r   s   "r   r   r            K K r   c                	    . # r    r   r"   rS  s   &&r   sanitizer_argsDynamicLinker.sanitizer_args   r^   r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r            ; r   c                	    . # r    r   r+   s   &r   get_asneeded_argsDynamicLinker.get_asneeded_args   r^   r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r      s     = ={ ={ =r   c                	4    \        R V P                   R24      h)r>  z does not support link_wholer#  r:   s   &&r   get_link_whole_for DynamicLinker.get_link_whole_for   s     "dggY:;= 	=r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r      s     B B+ Br   c                	4    \        R V P                   R24      h)r>  z! does not support allow undefinedr#  r+   s   &r   get_allow_undefined_args&DynamicLinker.get_allow_undefined_args   s"    "dggY?@B 	Br   c                    V ^8  d   QhRRRR/# r   
outputnamer   r'   r   r   )r   s   "r   r   r     s      # + r   c                	    R # r    r   r"   rh  s   &&r   ri   DynamicLinker.get_output_args  r   r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r     s     d d; dr   c                	4    \        R V P                   R24      h)r>  z, doesn't implement coverage data generation.r#  r+   s   &r   get_coverage_argsDynamicLinker.get_coverage_args  s    "WTWWI5a#bccr   c                    V ^8  d   QhRRRR/# r   defsfiler   r'   r   r   )r   s   "r   r   r     s        r   c                	    . # r    r   r"   rr  s   &&r   rs   %DynamicLinker.gen_vs_module_defs_args  r^   r   c                    V ^8  d   QhRRRR/# r   dirnamer   r'   r   r   )r   s   "r   r   r     s      s { r   c                	    R # r    r   r"   rx  s   &&r   get_search_argsDynamicLinker.get_search_args  r   r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r     s      [ r   c                	    . # r    r   r+   s   &r   export_dynamic_args!DynamicLinker.export_dynamic_args  r^   r   c                    V ^8  d   QhRRRR/# r   
implibnamer   r'   r   r   )r   s   "r   r   r     s      c k r   c                    . # )ztThe name of the outputted import library.

This implementation is used only on Windows by compilers that use GNU ld
r   r"   r  s   &&r   import_library_args!DynamicLinker.import_library_args  rM   r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r     r   r   c                	    . # r    r   r+   s   &r   r   DynamicLinker.thread_flags  r^   r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r          	 	; 	r   c                    . # )zArguments 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_argsDynamicLinker.no_undefined_args  	     	r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r   '         r   c                    . # )&Arguments to make all warnings errors.r   r+   s   &r   fatal_warningsDynamicLinker.fatal_warnings'  r   r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r   +  r  r   c                	    . # r    r   r+   s   &r   headerpad_argsDynamicLinker.headerpad_args+  r   r   c                    V ^8  d   QhRRRR/# r   rS  r   r'   r   r   )r   s   "r   r   r   /  s      C K r   c                	    . # r    r   rV  s   &&r   get_win_subsystem_args$DynamicLinker.get_win_subsystem_args/  	     	r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r   4  s     M Mk Mr   c                	    \        R 4      h)z,This linker does not support bitcode bundlesr   r+   s   &r   bitcode_argsDynamicLinker.bitcode_args4  s    KLLr   c          
     ,    V ^8  d   QhRRRRRRRRRR	/# rv   r   )r   s   "r   r   r   7  r{   r   c                	    . \        4       3# r    r}   r   s   &&&&&r   r   DynamicLinker.build_rpath_args7  r   r   c               0    V ^8  d   QhRRRRRRRRRRRR	/# 
r   prefixr   
shlib_namesuffix	soversiondarwin_versionszT.Tuple[str, str]r'   r   r   )r   s   "r   r   r   <  s:      c s  #03FW\gr   c                	    . # r    r   r"   r  r  r  r  r  s   &&&&&&r   get_soname_argsDynamicLinker.get_soname_args<  r   r   c                    V ^8  d   QhRRRR/# r   filenamer   r'   r   )r   s   "r   r   r   @  s        r   c                	    \        4       # r    )r   r"   r  s   &&r   get_archive_nameDynamicLinker.get_archive_name@  s	    ur   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r   D  s      k r   c                	    . # r    r   r+   s   &r   get_command_to_archive_shlib*DynamicLinker.get_command_to_archive_shlibD  r   r   )r   r!   r   r   r   r   r   r   r    )7r   r   r   r   __doc__r   r   abcabstractpropertyr   r   r#   r   r,   r4   r   rT   r  r   r   r  r  r   r$  r(  r,  rc   r5  r:  r?  rC  rK  rO  rW  r\  r`  rd  abstractmethodri   rn  rs   r{  r  r  r   r  r  r  r  r  r   r  r  r  r   r   r   r   r   r   u   ss   ) 	RRRRRR40  	 	-<L- !2-b-#%
!'
en
.i=B 	 d 	 	
M
 r   r   )	metaclassc                      ] tR tRtR.tR R ltR R ltR R ltR	 R
 lt]	R R l4       t
]	R R l4       tR R ltRtR# )VisualStudioLikeLinkeriP  z/NOLOGOc                   V ^8  d   QhRR/# )r   r   r   r   )r   s   "r   r   #VisualStudioLikeLinker.__annotate__S  s       r   c                	    Wn         R # r    r   )r"   r   s   &&r   r#   VisualStudioLikeLinker.__init__S  s    r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r  V  r  r   c                	6    V P                   P                  4       # r    r  r+   s   &r   r   &VisualStudioLikeLinker.get_always_argsV  r  r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r  Y  s     ' ' 'r   c                	6    V P                   P                  4       # r    r  r+   s   &r   r   -VisualStudioLikeLinker.get_linker_always_argsY  r  r   c                    V ^8  d   QhRRRR/# rf   r   )r   s   "r   r   r  \  s      c k r   c                	    . pV P                   '       d   VR V P                   ,           .,          pVRV,           .,          pV# z	/MACHINE:/OUT:r  )r"   rF   r8   s   && r   ri   &VisualStudioLikeLinker.get_output_args\  s=    <<<[4<</00D6!""r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r  d       ? ?{ ?{ ?r   c                	0    ^RI Hp VP                  V4      # r   )VisualStudioCCompiler)compilers.cr  r   r   r8   r  s   && r   r   *VisualStudioLikeLinker.unix_args_to_nativec      7$88>>r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r  i  r  r   c                	0    ^RI Hp VP                  V4      # r  )r  r  r   r  s   && r   r   *VisualStudioLikeLinker.native_args_to_unixh  r  r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r  m  s     " " "r   c                	"    \         P                  # r    )r   MSVCr+   s   &r   r   &VisualStudioLikeLinker.rsp_file_syntaxm  s    !!!r   r  N)r   r   r   r   r   r#   r   r   ri   r   r   r   r   r   r   r   r   r  r  P  sO    +K'' ? ? ? ?" "r   r  c                  *    ] tR tRtRtRtR R ltRtR# )VisualStudioLinkeriq  zMicrosoft's lib static linker.libc               $    V ^8  d   QhRRRRRR/# r   r   r   r   r   r   r   r   )r   s   "r   r   VisualStudioLinker.__annotate__w  !     7 7 7+ 7 7r   c                	\    \         P                  WV4       \        P                  W4       R # r    r   r#   r  r"   r   r   r   s   &&&&r   r#   VisualStudioLinker.__init__w       dS1''6r   r   Nr   r   r   r   r  r   r#   r   r   r   r   r  r  q  s    (	B7 7r   r  c                  *    ] tR tRtRtRtR R ltRtR# )IntelVisualStudioLinkeri|  zIntel's xilib static linker.xilibc               $    V ^8  d   QhRRRRRR/# r  r   )r   s   "r   r   $IntelVisualStudioLinker.__annotate__  r  r   c                	\    \         P                  WV4       \        P                  W4       R # r    r  r  s   &&&&r   r#    IntelVisualStudioLinker.__init__  r  r   r   Nr  r   r   r   r  r  |  s    &	B7 7r   r  c                  J   a  ] tR tRtRtR V 3R lltR R ltR R ltR	tV ;t	# )
ArLinkeri  arc               $    V ^8  d   QhRRRRRR/# )r   r   r   r   r   r   r   r   )r   s   "r   r   ArLinker.__annotate__  s#     ' '$: '[ 'Wb 'r   c                	
  < \         SV `  W#4       \        P                  ! V P                  R .,           4      ^,          pRpRpRV9   d
   VR,          pRV9   d   RpV.V n        WV,           .V n        RV9   V n        Wn        R# )	z-hcsrr  z[D]Dz[T]Tz@<N)	superr#   r   
Popen_safer   std_argsstd_thin_argscan_rspr   )r"   r   r   r   stdostdargsthinargs	__class__s   &&&&   r   r#   ArLinker.__init__  s~    &""4<<4&#89!<D=sNGD=H 	%01t|&r   c                   V ^8  d   QhRR/# r>   r   )r   s   "r   r   r    s      t r   c                	    V P                   # r    )r  r+   s   &r   rC   ArLinker.can_linker_accept_rsp  s    ||r   c               $    V ^8  d   QhRRRRRR/# rX   r   )r   s   "r   r   r    s!     ! !] !T !k !r   c                	h   V'       d   VP                   V P                  ,          P                  4       '       go   VP                   V P                  ,          P                  4       '       g>   VP                   V P                  ,          P	                  4       '       g   V P
                  # V P                  # r    )machinesr   	is_darwinis_sunosis_os2r  r  r[   s   &&&r   r\   ArLinker.get_std_link_args  sv     3<<(8(89CCEE,,t//099;;,,t//07799%%%== r   )r  r   r  r  )
r   r   r   r   r   r#   rC   r\   r   __classcell__r  s   @r   r  r    s!    	B' '! !r   r  c                      ] tR tRtRtRtR# )AppleArLinkeri  applearr   Nr   r   r   r   r   r   r   r   r   r  r    s	     
Br   r  c                      ] tR tRtRtRtR# )ArmarLinkeri  armarr   Nr  r   r   r   r  r    s    	Br   r  c                  z   a  ] tR tRtR]P
                  /R V 3R llltR R ltR R ltR	 R
 lt	R R lt
RtV ;t# )DLinkeri  
rsp_syntaxc               (    V ^8  d   QhRRRRRRRR/# )	r   r   r   r   r   archr   r"  r   r   )r   s   "r   r   DLinker.__annotate__  s)     ' ' '+ 'S 'Yf 'r   c               	Z   < \         SV `  W4       V^ ,          V n        W0n        W@n        R# )r   N)r  r#   r   r$  _DLinker__rsp_syntax)r"   r   r   r$  r"  r  s   &&&&$r   r#   DLinker.__init__  s&    &!*	&r   c               $    V ^8  d   QhRRRRRR/# rX   r   )r   s   "r   r   r%    s!      ] T k r   c                	    R .# )z-libr   r[   s   &&&r   r\   DLinker.get_std_link_args  	    xr   c                    V ^8  d   QhRRRR/# rf   r   )r   s   "r   r   r%    s     ! !c !k !r   c                	    R V,           .# )z-of=r   rh   s   &&r   ri   DLinker.get_output_args  s      r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r%    s       r   c                	    \         P                  ! 4       '       d=   V P                  R 8X  d   R.# V P                  R8X  d   V P                  R8X  d   R.# R.# . # )x86_64z-m64
x86_mscoffdmdz
-m32mscoffz-m32)r   rB   r$  r   r+   s   &r   r   DLinker.get_linker_always_args  sO      yyH$xl*tww%/?$~%8O	r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r%         ! ! !r   c                	    V P                   # r    )r'  r+   s   &r   r   DLinker.rsp_file_syntax  s       r   )__rsp_syntaxr$  r   )r   r   r   r   r   r
  r#   r\   ri   r   r   r   r  r  s   @r   r!  r!    s4    'iviziz ' '!! !r   r!  c                  R   a  ] tR tRtR V 3R lltR R ltR R ltR R	 ltR
tV ;t	# )
CcrxLinkeri  c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   CcrxLinker.__annotate__         + r   c                	4   < \         SV `  W4       R V n        R# )rlinkNr  r#   r   r"   r   r   r  s   &&&r   r#   CcrxLinker.__init__      &r   c                   V ^8  d   QhRR/# r>   r   )r   s   "r   r   r>          t r   c                	    R # Fr   r+   s   &r   rC    CcrxLinker.can_linker_accept_rsp      r   c                    V ^8  d   QhRRRR/# rf   r   )r   s   "r   r   r>    s     % %c %k %r   c                	    R V 2.# z-output=r   rh   s   &&r   ri   CcrxLinker.get_output_args  s    6(#$$r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r>    s     , , ,r   c                	
    R R.# )z-nologoz-form=libraryr   r+   s   &r   r   !CcrxLinker.get_linker_always_args  s    ?++r   r*   
r   r   r   r   r#   rC   ri   r   r   r  r  s   @r   r<  r<    s!     %, ,r   r<  c                  R   a  ] tR tRtR V 3R lltR R ltR R ltR R	 ltR
tV ;t	# )
Xc16Linkeri  c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   Xc16Linker.__annotate__  s       + r   c                	4   < \         SV `  W4       R V n        R# )zxc16-arNrB  rC  s   &&&r   r#   Xc16Linker.__init__  s    &r   c                   V ^8  d   QhRR/# r>   r   )r   s   "r   r   rW    rG  r   c                	    R # rI  r   r+   s   &r   rC    Xc16Linker.can_linker_accept_rsp  rK  r   c                    V ^8  d   QhRRRR/# rf   r   )r   s   "r   r   rW          c k r   c                	
    V .# r    r   rh   s   &&r   ri   Xc16Linker.get_output_args      (}r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   rW    s       r   c                	    R .# )rcsr   r+   s   &r   r   !Xc16Linker.get_linker_always_args  	    wr   r*   rS  r  s   @r   rU  rU    s!      r   rU  c                      ] tR tRtRtRtRtR# )Xc32ArLinkeri  z*Static linker for Microchip XC32 compiler.zxc32-arr   Nr   r   r   r   r  r   r   r   r   r   rh  rh    s
    4	Br   rh  c                  F   a  ] tR tRtR V 3R lltR R ltR R ltRtV ;t# )	CompCertLinkeri  c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   CompCertLinker.__annotate__  r?  r   c                	4   < \         SV `  W4       R V n        R# )ccompNrB  rC  s   &&&r   r#   CompCertLinker.__init__  rE  r   c                   V ^8  d   QhRR/# r>   r   )r   s   "r   r   rm    rG  r   c                	    R # rI  r   r+   s   &r   rC   $CompCertLinker.can_linker_accept_rsp  rK  r   c                    V ^8  d   QhRRRR/# rf   r   )r   s   "r   r   rm    s      c k r   c                	    R V 2.# z-or   rh   s   &&r   ri   CompCertLinker.get_output_args  s    VHr   r*   )	r   r   r   r   r#   rC   ri   r   r  r  s   @r   rk  rk    s      r   rk  c                  R   a  ] tR tRtR V 3R lltR R ltR R ltR R	 ltR
tV ;t	# )TILinkeri  c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   TILinker.__annotate__  r?  r   c                	4   < \         SV `  W4       R V n        R# )zti-arNrB  rC  s   &&&r   r#   TILinker.__init__  rE  r   c                   V ^8  d   QhRR/# r>   r   )r   s   "r   r   r{  	  rG  r   c                	    R # rI  r   r+   s   &r   rC   TILinker.can_linker_accept_rsp	  rK  r   c                    V ^8  d   QhRRRR/# rf   r   )r   s   "r   r   r{    r^  r   c                	
    V .# r    r   rh   s   &&r   ri   TILinker.get_output_args  ra  r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r{           r   c                	    R .# -rr   r+   s   &r   r   TILinker.get_linker_always_args  	    vr   r*   rS  r  s   @r   ry  ry    s!      r   ry  c                      ] tR tRtRtRtR# )C2000Linkeri  ar2000r   Nr  r   r   r   r  r        	Br   r  c                      ] tR tRtRtRtR# )C6000Linkeri  ar6000r   Nr  r   r   r   r  r        	Br   r  c                  "    ] tR tRtRtRR.tRtR# )AIXArLinkeri  aixarz-csrz-Xanyr   N)r   r   r   r   r   r  r   r   r   r   r  r    s    	B Hr   r  c                  F    ] tR tRtR R ltR R ltR R ltR R	 ltR
tR# )MetrowerksStaticLinkeri   c                   V ^8  d   QhRR/# r>   r   )r   s   "r   r   #MetrowerksStaticLinker.__annotate__"        t r   c                	    R # Tr   r+   s   &r   rC   ,MetrowerksStaticLinker.can_linker_accept_rsp"  r   r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r  %  s       r   c                	    R .# )z-libraryr   r+   s   &r   r   -MetrowerksStaticLinker.get_linker_always_args%  
    |r   c                    V ^8  d   QhRRRR/# rf   r   )r   s   "r   r   r  (        c k r   c                	
    R V.# rv  r   rh   s   &&r   ri   &MetrowerksStaticLinker.get_output_args(      f~r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r  +  r7  r   c                	"    \         P                  # r    r	  r+   s   &r   r   &MetrowerksStaticLinker.rsp_file_syntax+  s       r   r   N)	r   r   r   r   rC   r   ri   r   r   r   r   r   r  r     s    ! !r   r  c                      ] tR tRtRtRtR# )MetrowerksStaticLinkerARMi/  mwldarmr   Nr  r   r   r   r  r  /      	Br   r  c                      ] tR tRtRtRtR# )%MetrowerksStaticLinkerEmbeddedPowerPCi3  mwldeppcr   Nr  r   r   r   r  r  3      	Br   r  c                  b   a  ] tR tRtRtR V 3R lltR R ltR R ltR	 R
 ltR R lt	Rt
V ;t# )TaskingStaticLinkeri6  taskingc                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r    TaskingStaticLinker.__annotate__9  s     ' ' '+ 'r   c                	&   < \         SV `  W4       R # r    r  r#   rC  s   &&&r   r#   TaskingStaticLinker.__init__9  s    &r   c                   V ^8  d   QhRR/# r>   r   )r   s   "r   r   r  <  r  r   c                	    R # r  r   r+   s   &r   rC   )TaskingStaticLinker.can_linker_accept_rsp<  r   r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r  ?       % % %r   c                	"    \         P                  # r    r   TASKINGr+   s   &r   r   #TaskingStaticLinker.rsp_file_syntax?      $$$r   c                    V ^8  d   QhRRRR/# rf   r   )r   s   "r   r   r  B  r  r   c                	
    R V.# )z-nr   rh   s   &&r   ri   #TaskingStaticLinker.get_output_argsB  r  r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r  E  r  r   c                	    R .# r  r   r+   s   &r   r   *TaskingStaticLinker.get_linker_always_argsE  r  r   r   )r   r   r   r   r   r#   rC   r   ri   r   r   r  r  s   @r   r  r  6  s+    	B' '% r   r  c                  &    ] tR tRtRtR R ltRtR# )EmxomfArLinkeriI  emxomfarc               $    V ^8  d   QhRRRRRR/# rX   r   )r   s   "r   r   EmxomfArLinker.__annotate__L  s!      ] T k r   c                	    R .# )crr   r[   s   &&&r   r\    EmxomfArLinker.get_std_link_argsL  r  r   r   N)r   r   r   r   r   r\   r   r   r   r   r  r  I  s    	B r   r  c               (    V ^8  d   QhRRRRRRRR/# )r   
raw_rpathszT.Tuple[str, ...]rw   r   rx   r'   r   r   )r   s   "r   r   r   O  s*      0 S C T_ r   c                \    V  Uu. uF  p\        W1V4      NK  	  pp\        V4      pV# u upi r    )evaluate_rpathorder_rpaths)r  rw   rx   pinternal_format_rpathsordered_rpathss   &&&   r   prepare_rpathsr  O  s9     OYYjnQ8DjY!"89N Zs   )c                    V ^8  d   QhRRRR/# )r   
rpath_listr   r'   r   )r   s   "r   r   r   X  s     	1 	1[ 	1[ 	1r   c                L    \        V \        P                  P                  R 7      # ))key)sortedosrG  isabs)r  s   &r   r  r  X  s     *"''--00r   c               (    V ^8  d   QhRRRRRRRR/# )r   r  r   rw   rx   r'   r   )r   s   "r   r   r   d  s.     ^ ^c ^c ^S ^S ^r   c                   W8X  d   R # \         P                  P                  V 4      '       d   V # \         P                  P                  \         P                  P	                  W4      \         P                  P	                  W4      4      # r  )r  rG  r  relpathr   )r  rw   rx   s   &&&r   r  r  d  sQ    }	q		wwrww||I9277<<	;\]]r   c                  J    ] tR tRtRtR R ltR R ltR R ltR	 R
 ltRt	R# )PosixDynamicLinkerMixinim  zMixin 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.
c                    V ^8  d   QhRRRR/# rg  r   )r   s   "r   r   $PosixDynamicLinkerMixin.__annotate__v       " "# "+ "r   c                	
    R V.# rv  r   rj  s   &&r   ri   'PosixDynamicLinkerMixin.get_output_argsv      j!!r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r  y  s       r   c                	    R .# )-sharedr   r+   s   &r   r5  /PosixDynamicLinkerMixin.get_std_shared_lib_argsy  s
    {r   c                    V ^8  d   QhRRRR/# rw  r   )r   s   "r   r   r  |          s  {  r   c                	    R V,           .# z-Lr   rz  s   &&r   r{  'PosixDynamicLinkerMixin.get_search_args|  s    wr   c                    V ^8  d   QhRRRR/# rR  r   )r   s   "r   r   r    rT  r   c                	    . # r    r   rV  s   &&r   rW  &PosixDynamicLinkerMixin.sanitizer_args  r^   r   r   N)
r   r   r   r   r  ri   r5  r{  rW  r   r   r   r   r  r  m  s     "  r   r  c                     ] tR tRt$ Rt]P                  '       d   ]P                  t	R R lt
R. R. R. R. R	. R
R.R. /tR]R&   RRRRRRRRRRRRRRRRRR/	tR]R&   R  R! ltR" R# ltR$ R% ltR& R' ltR( R) ltR* R+ ltR, R- ltR. R/ ltR0 R1 ltR2 R3 ltR4 R5 ltR6 R7 ltR8 R9 ltR: R; ltR< R= ltRDR? R@ lltRA RB ltRCtR># )EGnuLikeDynamicLinkerMixini  zMixin 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.
c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   &GnuLikeDynamicLinkerMixin.__annotate__      SS%>S;Sr   c                	    R # r    r   r"   r   s   &&r   r   'GnuLikeDynamicLinkerMixin._apply_prefix      PSr   r   r   r   r   r   r   -O1r   r   r   nativewindowsconsoleposix7efi_application10efi_boot_service_driver11efi_runtime_driver12efi_rom13boot_application16zT.Dict[str, str]_SUBSYSTEMSc                   V ^8  d   QhRR/# r>   r   )r   s   "r   r   r           r   c                	    R # r  r   r+   s   &r   r  )GnuLikeDynamicLinkerMixin.get_accepts_rsp  r   r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r    s      k r   c                	    R .# )z-pier   r+   s   &r   r?  &GnuLikeDynamicLinkerMixin.get_pie_args  r,  r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r         1 1; 1r   c                	$    V P                  R 4      # --as-neededr   r+   s   &r   r\  +GnuLikeDynamicLinkerMixin.get_asneeded_args  s    !!-00r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r         g g{ g{ gr   c                	r    V'       g   V# V P                  R 4      V,           V P                  R4      ,           # z--whole-archivez--no-whole-archiver  r:   s   &&r   r`  ,GnuLikeDynamicLinkerMixin.get_link_whole_for  2    K!!"34t;d>P>PQe>fffr   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r    s     = =+ =r   c                	$    V P                  R 4      # --allow-shlib-undefinedr  r+   s   &r   rd  2GnuLikeDynamicLinkerMixin.get_allow_undefined_args  s    !!";<<r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r    s      k r   c                	    R .# )z-fltor   r+   s   &r   rC  &GnuLikeDynamicLinkerMixin.get_lto_args  
    yr   c                    V ^8  d   QhRRRR/# rR  r   )r   s   "r   r   r         1 1K 1K 1r   c                	@    V'       g   V# R RP                  V4       2.# z-fsanitize=,r   rV  s   &&r   rW  (GnuLikeDynamicLinkerMixin.sanitizer_args  #    Lchhuo./00r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r          ; r   c                	    R .# z
--coverager   r+   s   &r   rn  +GnuLikeDynamicLinkerMixin.get_coverage_args  
    ~r   c                    V ^8  d   QhRRRR/# rq  r   )r   s   "r   r   r    s        r   c                	    V P                   P                  V P                  ,          pVP                  4       '       g   VP	                  4       '       d   V.# . # r    )r!   r  r   rB   	is_cygwin)r"   rr  ms   && r   rs   1GnuLikeDynamicLinkerMixin.gen_vs_module_defs_args  sB     %%d&6&67<<>>Q[[]]:	r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r    s     5 5[ 5r   c                	    V P                   P                  V P                  ,          pVP                  4       '       g   VP	                  4       '       d   V P                  R 4      # V P                  R4      # )z--export-all-symbolsz-export-dynamicr!   r  r   rB   r@  r   )r"   rA  s   & r   r  -GnuLikeDynamicLinkerMixin.export_dynamic_args  sW    %%d&6&67<<>>Q[[]]%%&<==!!"344r   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   r    s     @ @c @k @r   c                	2    V P                  R V,           4      # )z--out-implib=r  r  s   &&r   r  -GnuLikeDynamicLinkerMixin.import_library_args  s    !!/J">??r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r    s      k r   c                	    V P                   P                  V P                  ,          P                  4       '       d   . # R .# z-pthread)r!   r  r   is_haikur+   s   &r   r   &GnuLikeDynamicLinkerMixin.thread_flags  s5    $$T%5%56??AAI|r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r         4 4; 4r   c                	$    V P                  R 4      # --no-undefinedr  r+   s   &r   r  +GnuLikeDynamicLinkerMixin.no_undefined_args  s    !!"233r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r    s     6 6 6r   c                	$    V P                  R 4      # )z--fatal-warningsr  r+   s   &r   r  (GnuLikeDynamicLinkerMixin.fatal_warnings  s    !!"455r   c               0    V ^8  d   QhRRRRRRRRRRRR	/# r  r   )r   s   "r   r   r    sA     S Sc Ss SC S#&S9JS(Sr   c                	    V P                   P                  V P                  ,          pVP                  4       '       g   VP	                  4       '       d   . # Vf   RMRV,           pV P                  RV V RV V 24      # Nr  .z-soname,rE  )r"   r  r  r  r  r  rA  sostrs   &&&&&&  r   r  )GnuLikeDynamicLinkerMixin.get_soname_args  sp     %%d&6&67<<>>Q[[]]I'S9_!!HVHZL&%"QRRr   Nc          
     ,    V ^8  d   QhRRRRRRRRRR	/# rv   r   )r   s   "r   r   r    s8     O, O,# O, O,k O,&=O,@O,r   c           
     	   V P                   P                  V P                  ,          pVP                  4       '       g   VP	                  4       '       d   . \        4       3# VP                  4       pV'       g9   VP                  '       g'   VP                  '       g   V'       g   . \        4       3# . pR p\        WaV4      p	\        P                  ! V	 U
u. uF"  p
\        P                  P                  W4      NK$  	  up
4      p\        4       pV F#  p
VP                  V
P!                  R4      4       K%  	  VP                  R8w  d^   VP                  VP                  4       VP                  P#                  R4       F#  p
VP                  V
P!                  R4      4       K%  	  V'       d   VP%                  V4       \        P&                  ! 4       '       g   \        P(                  ! 4       '       d!   VP+                  V P-                  R4      4       RP                  V4      p\/        VP!                  R4      4      p\/        VP                  P!                  R4      4      pW8  d+   RW,
          ,          pV'       g   TpMVR,           V,           pVP+                  V P-                  RV,           4      4       \        P0                  ! 4       '       g   V P2                  R8X  d   W|3# V P2                  R9   du   \        P4                  ! V P6                  R	4      '       dN   V FG  p
VP+                  V P-                  R
\        P                  P                  W4      ,           4      4       KI  	  W|3# u up
i )$ORIGINutf8r  :z	-z,originutf-8X-rpath,ld.zigccz<2.28z-rpath-link,>   ld.bfdld.gold)r!   r  r   rB   r@  r~   determine_rpath_dirsinstall_rpathbuild_rpathr  r   
OrderedSetr  rG  r   addencodesplitupdateis_dragonflybsd
is_openbsdextendr   lenr  r   version_comparer   )r"   rw   rx   rF   ry   rA  rpath_pathsr8   origin_placeholderprocessed_rpathsr  	all_pathsrpath_dirs_to_removepathspaths_lengthinstall_rpath_lengthpaddings   &&&&&            r   r   *GnuLikeDynamicLinkerMixin.build_rpath_args  s    %%d&6&67<<>>Q[[]];1136#7#7#7@R@R@R[f;&)+(K ''Vf(gVfQR6H)LVf(gh	-0UA $$QXXf%56  #MM&,,-''--c2$((&)9: 3[) ##%%)<)<)>)> KK**;78 #5<<01"6#7#7#>#>w#GH.1@AGg-D&&y5'89:
 $''Z"7//, 77++0H0HW^0_0_ D..~Y@Z/Z[\ ! ++A )hs   (M0c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   r  9  s     ( (C (K (r   c                	    R pRV9   d   VP                  R^4      w  rV P                  P                  V4      pVe   Ve   VRV 2,          pRV 2.pM\        P                  ! RV: R24      hV P                  V4      # )Nr4  rb  --subsystem,win_subsystem: z: not handled in MinGW linker. This should not be possible.)ro  r  getr   MesonBugExceptionr   )r"   rS  versionsuffixnewvaluer8   s   &&   r   r  0GnuLikeDynamicLinkerMixin.get_win_subsystem_args9  s     %<#(;;sA#6 E##''.(a//"8*-.D,,ui  HB  .C  D  D!!$''r   r   r    ) r   r   r   r   r  r  TYPE_CHECKINGr   HOSTr   r   r   r   r  r  r?  r\  r`  rd  rC  rW  rn  rs   r  r  r   r  r  r  r   r  r   r   r   r   r  r    s     	#((S 	RRRReWR40  	#994!4d4D
%K! 
1g
=1
5@
46SO,b( (r   r  c                      ] tR tRtRtRtR R ltR R ltR R	 ltR
 R lt	R R lt
R R ltR R ltR R ltR R ltR R ltR R ltR R ltR&R R lltR R  ltR! R" ltR# R$ ltR%tR# )'AppleDynamicLinkeriM  zApple's ld implementation.ld64c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   AppleDynamicLinker.__annotate__S  s     8 8; 8r   c                	$    V P                  R 4      # )z-dead_strip_dylibsr  r+   s   &r   r\  $AppleDynamicLinker.get_asneeded_argsS  s    !!"677r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r  V  s     C C+ Cr   c                	J    V P                   R 8X  d   . # V P                  R4      # )iosz-undefined,dynamic_lookup)r   r   r+   s   &r   rd  +AppleDynamicLinker.get_allow_undefined_argsV  s%    ;;%I%%&ABBr   c                    V ^8  d   QhRRRR/# )r   rF   rG   r'   r   r   )r   s   "r   r   r  ]  s     A A A; Ar   c                	Z    V P                   R 8X  d   R.# R.V P                  4       ,           # )r  z-dynamiclibz-bundle)r   rd  rh   s   &&r   r:  -AppleDynamicLinker.get_std_shared_module_args]  s,    ;;%!?";!>!>!@@@r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r  c  r   r   c                	    . # r    r   r+   s   &r   r?  AppleDynamicLinker.get_pie_argsc  r^   r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r  f  s      { { r   c                	~    . pV F4  pVP                  V P                  R 4      4       VP                  V4       K6  	  V# )z-force_load)rs  r   append)r"   r8   resultr1  s   &&  r   r`  %AppleDynamicLinker.get_link_whole_forf  s;     AMM$,,];<MM!  r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r  m  r9  r   c                	    R .# r;  r   r+   s   &r   rn  $AppleDynamicLinker.get_coverage_argsm  r=  r   c                    V ^8  d   QhRRRR/# rR  r   )r   s   "r   r   r  p  r1  r   c                	@    V'       g   V# R RP                  V4       2.# r3  r5  rV  s   &&r   rW  !AppleDynamicLinker.sanitizer_argsp  r7  r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r  u  r  r   c                	    . # r    r   r+   s   &r   r  $AppleDynamicLinker.no_undefined_argsu  r  r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r    s     B B Br   c                	$    V P                  R 4      # )z-headerpad_max_install_namesr  r+   s   &r   r  !AppleDynamicLinker.headerpad_args  s    !!"@AAr   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r    s     5 5k 5r   c                	$    V P                  R 4      # )z-bitcode_bundler  r+   s   &r   r  AppleDynamicLinker.bitcode_args  s    !!"344r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r    s     j j jr   c                	P    V P                  R 4      V P                  R4      ,           # )z-fatal_warningsz-no_warn_duplicate_librariesr  r+   s   &r   r  !AppleDynamicLinker.fatal_warnings  s'     !!"34t7I7IJh7iiir   c               0    V ^8  d   QhRRRRRRRRRRRR	/# r  r   )r   s   "r   r   r    s9      c s C #&9J(r   c                	    R W.pVe   VP                  RV,           4       VP                  RV,           4       RRP                  V4      .pV'       d$   VP                  RV^ ,          RV^,          .4       V# )z@rpath/r[  z-install_namer  z-compatibility_versionz-current_version)r  r   rs  )r"   r  r  r  r  r  install_namer8   s   &&&&&&  r   r  "AppleDynamicLinker.get_soname_args  sz     "66 i0C&L)!67KK1?13E+_Q-?A Br   Nc          
     ,    V ^8  d   QhRRRRRRRRRR	/# rv   r   )r   s   "r   r   r    s1     , ,# , ,k ,&=,@,r   c           	     	   VP                  4       pV'       g9   VP                  '       g'   VP                  '       g   V'       g   . \        4       3# . p\        4       pR p\	        WQV4      p	\
        P                  ! V	 U
u. uF"  p
\        P                  P                  W4      NK$  	  up
4      pVP                  R8w  d+   VP                  VP                  P                  R4      4       V'       d   VP                  V4       V FJ  pVP                  VP                  R4      4       VP                  V P                  RV,           4      4       KL  	  Wg3# u up
i )z@loader_pathr  rb  ra  re  )ri  rj  rk  r~   r  r   rl  r  rG  r   rp  ro  rm  rn  rs  r   )r"   rw   rx   rF   ry   rv  r8   rz  rw  rx  r  ry  rps   &&&&&        r   r   #AppleDynamicLinker.build_rpath_args  s    1136#7#7#7@R@R@R[f;-0U ,)+(K''Vf(gVfQR6H)LVf(gh	#V//55c:;[)B $$RYYv%67KK**9r>:;  ++ )hs   ?(Ec                    V ^8  d   QhRRRR/# rF  r   )r   s   "r   r   r    s     / /3 /; /r   c                	    R V,           .# )z-Wl,-cache_path_lto,r   rJ  s   &&r   rK  )AppleDynamicLinker.get_thinlto_cache_args  s    &-..r   c                    V ^8  d   QhRRRR/# rF  r   )r   s   "r   r   r    s     0 03 0; 0r   c                	    R V,           .# )z-Wl,-object_path_lto,r   rJ  s   &&r   rO  )AppleDynamicLinker.get_lto_obj_cache_path  s    '$.//r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r    s      [ r   c                	v    \         P                  ! V P                  R 4      '       d   V P                  R4      # . # )z>=224.1z-export_dynamic)r   ru  r   r   r+   s   &r   r  &AppleDynamicLinker.export_dynamic_args  s0    ##DLL)<<%%&788	r   r   r    )r   r   r   r   r  r   r\  rd  r:  r?  r`  rn  rW  r  r  r  r  r  r   rK  rO  r  r   r   r   r   r  r  M  sc    $	B8CA1
	B5j
,./0 r   r  c                      ] tR tRtRtRtR# )LLVMLD64DynamicLinkeri  zld64.lldr   Nr  r   r   r   r  r    s    	Br   r  c                      ] tR tRtRtRtR# )GnuDynamicLinkeri  z)Representation of GNU ld.bfd and ld.gold.r   N)r   r   r   r   r  r   r   r   r   r  r    s    3r   r  c                  &    ] tR tRtRtR R ltRtR# )GnuGoldDynamicLinkeri  rh  c                    V ^8  d   QhRRRR/# rF  r   )r   s   "r   r   !GnuGoldDynamicLinker.__annotate__  s     5 53 5; 5r   c                	    R V,           .# )z-Wl,-plugin-opt,cache-dir=r   rJ  s   &&r   rK  +GnuGoldDynamicLinker.get_thinlto_cache_args  s    ,t344r   r   Nr   r   r   r   r   rK  r   r   r   r   r  r    s    	B5 5r   r  c                      ] tR tRtRtRtR# )GnuBFDDynamicLinkeri  rg  r   Nr  r   r   r   r  r    r  r   r  c                  &    ] tR tRtRtR R ltRtR# )MoldDynamicLinkeri  zld.moldc                    V ^8  d   QhRRRR/# rF  r   )r   s   "r   r   MoldDynamicLinker.__annotate__       3 33 3; 3r   c                	    R V,           .# z-Wl,--thinlto-cache-dir=r   rJ  s   &&r   rK  (MoldDynamicLinker.get_thinlto_cache_args      *T122r   r   Nr  r   r   r   r  r    s    	B3 3r   r  c                     a  ] tR tRtRtRtRRRR/R V 3R	 llltR
 R ltR R ltR R lt	R R lt
R R ltR R ltRtV ;t# )LLVMDynamicLinkeri  zxRepresentation of LLVM's ld.lld linker.

This is only the gnu-like linker, not the apple like or link.exe like
linkers.
zld.lldr   r   r   r   c               4    V ^8  d   QhRRRRRRRRR	RR
RRR/# r   r   )r   s   "r   r   LLVMDynamicLinker.__annotate__  sM     
S 
S 
S+ 
S4
SB[
S)
S69
S 
Sr   c          
     	   < \         SV `  WW4WVVR 7       V P                  RV4      V n        V P                  RV4      V n        V P                  RV4      V n        R# ))r   r   r*  r  rS  N)r  r#   _supports_flaghas_allow_shlib_undefinedhas_as_neededhas_no_undefined)	r"   r   r   r   r   r   r   r   r  s	   &&&&&&$$r   r#   LLVMDynamicLinker.__init__  s`     	{dkl *.)<)<=VXc)d&!00L $ 3 34Dk Rr   c               $    V ^8  d   QhRRRRRR/# )r   flagr   r   r   r'   r?   r   )r   s   "r   r   r    s!     
 
3 
[ 
T 
r   c                	    \         P                  ! V P                  V,           V P                  V4      ,           4      w   r4R V 2V9  ;'       d    RV R2V9  ;'       d	    RV 2V9  # )zunknown argument: zunknown argument: ''zinvalid option:  )r   r  r   r   )r"   r  r   _es   &&&  r   r   LLVMDynamicLinker._supports_flag  s|    %%dll[&@4CUCUVZC[&[\1 "$(1 2 2"4&*!32 2 !'q0	
r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r    s      + r   c                	L    V P                   '       d   V P                  R 4      # . # r)  )r  r   r+   s   &r   rd  *LLVMDynamicLinker.get_allow_undefined_args  s%    )))%%&?@@	r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r           ; r   c                	L    V P                   '       d   V P                  R 4      # . # r  )r  r   r+   s   &r   r\  #LLVMDynamicLinker.get_asneeded_args   s$    %%m44	r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r    r  r   c                	L    V P                   '       d   V P                  R 4      # . # rR  )r  r   r+   s   &r   r  #LLVMDynamicLinker.no_undefined_args  s%       %%&677	r   c                    V ^8  d   QhRRRR/# rF  r   )r   s   "r   r   r  
  r  r   c                	    R V,           .# r  r   rJ  s   &&r   rK  (LLVMDynamicLinker.get_thinlto_cache_args
  r  r   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   r    s     
@ 
@C 
@K 
@r   c                	    R pRV9   d   VP                  R^4      w  rWP                  9   d&   Ve   VRV 2,          pV P                  RV 2.4      # \        P                  ! RV R24      h)Nr4  rb  r  r  z8 not handled in lld linker. This should not be possible.)ro  r  r   r   r  )r"   rS  r   s   && r   r  (LLVMDynamicLinker.get_win_subsystem_args  sx    %<"[[a0NE$$$"1WI&%%eW'=&>??,,ugE}-~r   )r  r  r  )r   r   r   r   r  r   r#   r  rd  r\  r  rK  r  r   r  r  s   @r   r  r    sT     
B
S<L
S !2
S 
S



3
@ 
@r   r  c                  &    ] tR tRtRtR R ltRtR# )ZigCCDynamicLinkeri  rf  c                    V ^8  d   QhRRRR/# rF  r   )r   s   "r   r   ZigCCDynamicLinker.__annotate__  rH  r   c                	    . # r    r   rJ  s   &&r   rK  )ZigCCDynamicLinker.get_thinlto_cache_args  r^   r   r   Nr  r   r   r   r  r    s    	B r   r  c                  ^    ] tR tRtRtRtR R ltR R ltR R	 ltR
 R lt	RR R llt
RtR# )WASMDynamicLinkeri!  zEmscripten's wasm-ld.zld.wasmc                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   WASMDynamicLinker.__annotate__'  s     2 2+ 2r   c                	    R .# )z-sERROR_ON_UNDEFINED_SYMBOLS=0r   r+   s   &r   rd  *WASMDynamicLinker.get_allow_undefined_args'      011r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r  *  s     2 2; 2r   c                	    R .# )z-sERROR_ON_UNDEFINED_SYMBOLS=1r   r+   s   &r   r  #WASMDynamicLinker.no_undefined_args*  r  r   c               0    V ^8  d   QhRRRRRRRRRRRR	/# r  r   )r   s   "r   r   r  -  A     N Nc Ns NC N#&N9JN(Nr   c                	2    \        V P                   R 24      hz# does not support shared libraries.r   r   r  s   &&&&&&r   r  !WASMDynamicLinker.get_soname_args-       y(KLMMr   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r  2  rZ  r   c                	    . # r    r   r+   s   &r   r\  #WASMDynamicLinker.get_asneeded_args2  r^   r   Nc          
     ,    V ^8  d   QhRRRRRRRRRR	/# rv   r   )r   s   "r   r   r  5  r{   r   c                	    . \        4       3# r    r}   r   s   &&&&&r   r   "WASMDynamicLinker.build_rpath_args5  r   r   r   r    )r   r   r   r   r  r   rd  r  r  r\  r   r   r   r   r   r  r  !  s)    	B22N
 r   r  c                     a  ] tR tRtRtRtRR/R V 3R llltR R	 ltR
 R ltR R lt	R R lt
R R ltR R ltR R ltRtV ;t# )CcrxDynamicLinkeri;  z!Linker for Renesas CCrx compiler.rA  r   r   c               $    V ^8  d   QhRRRRRR/# r   r   r   r   r   r   r   r   )r   s   "r   r   CcrxDynamicLinker.__annotate__A  #     * *K *6L * *r   c          	     	2   < \         SV `  R .WR. VR7       R# )z	rlink.exer  r   Nr  r"   r   r   r   r  s   &&&$r   r#   CcrxDynamicLinker.__init__A  s"    +"b!( 	 	*r   c                   V ^8  d   QhRR/# r>   r   )r   s   "r   r   r  F         r   c                	    R # rI  r   r+   s   &r   r  !CcrxDynamicLinker.get_accepts_rspF  rK  r   c                   V ^8  d   QhRR/# r&   r   )r   s   "r   r   r  I  s       r   c                	    R # )z-lib=r   r+   s   &r   r   CcrxDynamicLinker.get_lib_prefixI  s    r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r  L  rq   r   c                	    . # r    r   r+   s   &r   r5  )CcrxDynamicLinker.get_std_shared_lib_argsL  r^   r   c                    V ^8  d   QhRRRR/# rg  r   )r   s   "r   r   r  O  s     ) )# )+ )r   c                	    R V 2.# rN  r   rj  s   &&r   ri   !CcrxDynamicLinker.get_output_argsO  s    :,'((r   c                    V ^8  d   QhRRRR/# r   rx  r   r'   'T.NoReturn'r   )r   s   "r   r   r  R  s     G Gs G| Gr   c                	    \        R 4      h)z-rlink.exe does not have a search dir argumentOSErrorrz  s   &&r   r{  !CcrxDynamicLinker.get_search_argsR  s    EFFr   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r  U        + r   c                	    . # r    r   r+   s   &r   rd  *CcrxDynamicLinker.get_allow_undefined_argsU  r^   r   c               0    V ^8  d   QhRRRRRRRRRRRR	/# r  r   )r   s   "r   r   r  X  9      c s C #&9J(r   c                	    . # r    r   r  s   &&&&&&r   r  !CcrxDynamicLinker.get_soname_argsX  r  r   r   )r   r   r   r   r  r   r#   r  r  r5  ri   r{  rd  r  r   r  r  s   @r   r  r  ;  sF    +	B*#4* *
)G r   r  c                     a  ] tR tRtRtRtRR/R V 3R llltR R	 ltR
 R ltR R lt	R R lt
R R ltR R ltR R ltR R ltRR R lltRtV ;t# )Xc16DynamicLinkeri^  z#Linker for Microchip XC16 compiler.xc16-gccr   r   c               $    V ^8  d   QhRRRRRR/# r  r   )r   s   "r   r   Xc16DynamicLinker.__annotate__d  r  r   c          	     	2   < \         SV `  R .WR. VR7       R# )r@  r  r  Nr  r   s   &&&$r   r#   Xc16DynamicLinker.__init__d  s"    *sR!( 	 	*r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   rB  i       ^ ^{ ^{ ^r   c                	    \        V4      ^8  d   V# V P                  R4      V,           V P                  R4      ,           # r   z--start-groupz--end-grouprt  r   r:   s   &&r   r`  $Xc16DynamicLinker.get_link_whole_fori  8    t9q=K!!/2T9D<N<N}<]]]r   c                   V ^8  d   QhRR/# r>   r   )r   s   "r   r   rB  n  r#  r   c                	    R # rI  r   r+   s   &r   r  !Xc16DynamicLinker.get_accepts_rspn  rK  r   c                   V ^8  d   QhRR/# r&   r   )r   s   "r   r   rB  q  r  r   c                	    R # r  r   r+   s   &r   r   Xc16DynamicLinker.get_lib_prefixq  r  r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   rB  t  rq   r   c                	    . # r    r   r+   s   &r   r5  )Xc16DynamicLinker.get_std_shared_lib_argst  r^   r   c                    V ^8  d   QhRRRR/# rg  r   )r   s   "r   r   rB  w       # ## #+ #r   c                	    R V 2.# rv  r   rj  s   &&r   ri   !Xc16DynamicLinker.get_output_argsw      ZL!""r   c                    V ^8  d   QhRRRR/# r0  r   )r   s   "r   r   rB  z  s     F Fs F| Fr   c                	    \        R 4      h)z,xc16-gcc does not have a search dir argumentr3  rz  s   &&r   r{  !Xc16DynamicLinker.get_search_argsz  s    DEEr   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   rB  }  r7  r   c                	    . # r    r   r+   s   &r   rd  *Xc16DynamicLinker.get_allow_undefined_args}  r^   r   c               0    V ^8  d   QhRRRRRRRRRRRR	/# r  r   )r   s   "r   r   rB    r;  r   c                	    . # r    r   r  s   &&&&&&r   r  !Xc16DynamicLinker.get_soname_args  r  r   c          
     ,    V ^8  d   QhRRRRRRRRRR	/# rv   r   )r   s   "r   r   rB    r{   r   c                	    . \        4       3# r    r}   r   s   &&&&&r   r   "Xc16DynamicLinker.build_rpath_args  r   r   r   r    )r   r   r   r   r  r   r#   r`  r  r  r5  ri   r{  rd  r  r   r   r  r  s   @r   r?  r?  ^  sQ    -	B*#4* *
^
#F
 r   r?  c                  N    ] tR tRtRtRtR R ltR R ltR R	 ltR
 R lt	Rt
R# )Xc32DynamicLinkeri  z#Linker for Microchip XC32 compiler.zld.xc32c                    V ^8  d   QhRRRR/# rR  r   )r   s   "r   r   Xc32DynamicLinker.__annotate__  rT  r   c                	    . # r    r   rV  s   &&r   rW   Xc32DynamicLinker.sanitizer_args  r^   r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   ri    s     5 5; 5r   c                	,    \         P                  V 4      # r    )r   rn  r+   s   &r   rn  #Xc32DynamicLinker.get_coverage_args  s    ..t44r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   ri    s     0 0k 0r   c                	,    \         P                  V 4      # r    )r   r?  r+   s   &r   r?  Xc32DynamicLinker.get_pie_args  s    ))$//r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   ri    r   r   c                	    . # r    r   r+   s   &r   r   Xc32DynamicLinker.thread_flags  r^   r   r   N)r   r   r   r   r  r   rW  rn  r?  r   r   r   r   r   rg  rg    s#    -	B50 r   rg  c                     a  ] tR tRtRtRtRR/R V 3R llltR R	 ltR
 R ltR R lt	R R lt
R R ltR R ltR R ltRR R lltRtV ;t# )CompCertDynamicLinkeri  zLinker for CompCert C compiler.ro  r   r   c               $    V ^8  d   QhRRRRRR/# r  r   )r   s   "r   r   "CompCertDynamicLinker.__annotate__  r  r   c          	     	2   < \         SV `  R .WR. VR7       R# )ro  r  r  Nr  r   s   &&&$r   r#   CompCertDynamicLinker.__init__  s"    'Cb"!( 	 	*r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   rx    s     o o{ o{ or   c                	r    V'       g   V# V P                  R 4      V,           V P                  R4      ,           # )z-Wl,--whole-archivez-Wl,--no-whole-archiver  r:   s   &&r   r`  (CompCertDynamicLinker.get_link_whole_for  s2    K!!"784?$BTBTUmBnnnr   c                   V ^8  d   QhRR/# r>   r   )r   s   "r   r   rx    r#  r   c                	    R # rI  r   r+   s   &r   r  %CompCertDynamicLinker.get_accepts_rsp  rK  r   c                   V ^8  d   QhRR/# r&   r   )r   s   "r   r   rx    r  r   c                	    R # r  r   r+   s   &r   r  $CompCertDynamicLinker.get_lib_prefix  r  r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   rx    rq   r   c                	    . # r    r   r+   s   &r   r5  -CompCertDynamicLinker.get_std_shared_lib_args  r^   r   c                    V ^8  d   QhRRRR/# rg  r   )r   s   "r   r   rx    rV  r   c                	    R V 2.# rv  r   rj  s   &&r   ri   %CompCertDynamicLinker.get_output_args  rY  r   c                    V ^8  d   QhRRRR/# rw  r   )r   s   "r   r   rx    r  r   c                	    R V 2.# r  r   rz  s   &&r   r{  %CompCertDynamicLinker.get_search_args  s    WIr   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   rx    r7  r   c                	    . # r    r   r+   s   &r   rd  .CompCertDynamicLinker.get_allow_undefined_args  r^   r   c          
     ,    V ^8  d   QhRRRRRRRRRR	/# rv   r   )r   s   "r   r   rx    r{   r   c                	    . \        4       3# r    r}   r   s   &&&&&r   r   &CompCertDynamicLinker.build_rpath_args  r   r   r   r    )r   r   r   r   r  r   r#   r`  r  r  r5  ri   r{  rd  r   r   r  r  s   @r   rv  rv    sK    )	B*#4* *
o
#  r   rv  c                     a  ] tR tRtRtRtRR/R V 3R llltR R	 ltR
 R ltR R lt	R R lt
R R ltR R ltR R ltR R ltRtV ;t# )TIDynamicLinkeri  z-Linker for Texas Instruments compiler family.tir   r   c               (    V ^8  d   QhRRRRRRRR/# 	r   r   r   r   r   r   r   r   r   r   )r   s   "r   r   TIDynamicLinker.__annotate__  *     * * *+ *Lb * *r   c          	     	0   < \         SV `  WVR . VR7       R# r  r  Nr  r"   r   r   r   r   r  s   &&&&$r   r#   TIDynamicLinker.__init__       {B!( 	 	*r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r    rF  r   c                	    \        V4      ^8  d   V# V P                  R4      V,           V P                  R4      ,           # rH  rI  r:   s   &&r   r`  "TIDynamicLinker.get_link_whole_for  rK  r   c                   V ^8  d   QhRR/# r>   r   )r   s   "r   r   r    r#  r   c                	    R # rI  r   r+   s   &r   r  TIDynamicLinker.get_accepts_rsp  rK  r   c                   V ^8  d   QhRR/# r&   r   )r   s   "r   r   r    s       r   c                	    R # )z-l=r   r+   s   &r   r  TIDynamicLinker.get_lib_prefix  rK  r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r    rq   r   c                	    . # r    r   r+   s   &r   r5  'TIDynamicLinker.get_std_shared_lib_args  r^   r   c                    V ^8  d   QhRRRR/# rg  r   )r   s   "r   r   r    s     5 5# 5+ 5r   c                	    R RV 2.# )-zz--output_file=r   rj  s   &&r   ri   TIDynamicLinker.get_output_args  s    zl344r   c                    V ^8  d   QhRRRR/# r0  r   )r   s   "r   r   r    s     H Hs H| Hr   c                	    \        R 4      h)z.TI compilers do not have a search dir argumentr3  rz  s   &&r   r{  TIDynamicLinker.get_search_args  s    FGGr   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r    r7  r   c                	    . # r    r   r+   s   &r   rd  (TIDynamicLinker.get_allow_undefined_args  r^   r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r    r   r   c                	    . # r    r   r+   s   &r   r   TIDynamicLinker.get_always_args  r^   r   r   )r   r   r   r   r  r   r#   r`  r  r  r5  ri   r{  rd  r   r   r  r  s   @r   r  r    sL    7	B*#4* *
^
5H r   r  c                      ] tR tRtRtRtR# )C2000DynamicLinkeri  cl2000r   Nr  r   r   r   r  r    r  r   r  c                      ] tR tRtRtRtR# )C6000DynamicLinkeri  cl6000r   Nr  r   r   r   r  r    r  r   r  c                  b   a  ] tR tRtRtRtRR/R V 3R llltR R	 ltR
 R ltR R lt	Rt
V ;t# )ArmDynamicLinkeri  zLinker for the ARM compiler.armlinkr   r   c               $    V ^8  d   QhRRRRRR/# r  r   )r   s   "r   r   ArmDynamicLinker.__annotate__  r  r   c          	     	2   < \         SV `  R .WR. VR7       R# )r  r  r  Nr  r   s   &&&$r   r#   ArmDynamicLinker.__init__  s"    )cB!( 	 	*r   c                   V ^8  d   QhRR/# r>   r   )r   s   "r   r   r    r#  r   c                	    R # rI  r   r+   s   &r   r   ArmDynamicLinker.get_accepts_rsp  rK  r   c                   V ^8  d   QhRR/# )r   r'   r1  r   )r   s   "r   r   r    s     P P Pr   c                	    \        R 4      h)z/The Arm Linkers do not support shared librariesr  r+   s   &r   r5  (ArmDynamicLinker.get_std_shared_lib_args  s    NOOr   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r    r7  r   c                	    . # r    r   r+   s   &r   rd  )ArmDynamicLinker.get_allow_undefined_args  r^   r   r   )r   r   r   r   r  r   r#   r  r5  rd  r   r  r  s   @r   r  r    s2    &	B*#4* *
P r   r  c                  2    ] tR tRtRtR R ltR R ltRtR# )	ArmClangDynamicLinkeri  zLinker 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.
c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   "ArmClangDynamicLinker.__annotate__  s     $ $[ $r   c                	    R .# )z--export_dynamicr   r+   s   &r   r  )ArmClangDynamicLinker.export_dynamic_args  s    "##r   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   r    s     + +c +k +r   c                	    R V,           .# )z
--symdefs=r   r  s   &&r   r  )ArmClangDynamicLinker.import_library_args  s    z)**r   r   N)r   r   r   r   r  r  r  r   r   r   r   r  r    s    $+ +r   r  c                      ] tR tRtRtRtRtR# )QualcommLLVMDynamicLinkeri  z-ARM Linker from Snapdragon LLVM ARM Compiler.zld.qcldr   Nri  r   r   r   r  r    s
    7	Br   r  c                      ] tR tRtRtRtRtR# )ELDDynamicLinkeri  z%Qualcomm's opensource embedded linkerzld.eldr   Nri  r   r   r   r  r    s
    /	Br   r  c                  F    ] tR tRtRtRtRR R lltR R ltR	 R
 ltRt	R# )NAGDynamicLinkeri#  a#  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
nagNc          
     ,    V ^8  d   QhRRRRRRRRRR	/# rv   r   )r   s   "r   r   NAGDynamicLinker.__annotate__0  s1      #  k &=@r   c           	     	T   VP                  4       pV'       g9   VP                  '       g'   VP                  '       g   V'       g   . \        4       3# . pR p\	        WQV4      p\
        P                  ! V U	u. uF"  p	\        P                  P                  Wy4      NK$  	  up	4      p
VP                  R8w  d   V
P                  VP                  4       V'       d   V
P                  V4       V
 F*  pVP                  V P                  RV,           4      4       K,  	  V\        4       3# u up	i )r`  r  z-Wl,-Wl,,-rpath,,)ri  rj  rk  r~   r  r   rl  r  rG  r   rm  rp  rs  r   )r"   rw   rx   rF   ry   rv  r8   rw  rx  r  ry  r  s   &&&&&       r   r   !NAGDynamicLinker.build_rpath_args0  s     1136#7#7#7@R@R@R[f;&)+(K''Vf(gVfQR6H)LVf(gh	#MM&,,-[)BKK**+>+CDE  ce} )hs   5(D%c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r  C  r7  r   c                	    . # r    r   r+   s   &r   rd  )NAGDynamicLinker.get_allow_undefined_argsC  r^   r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r  F  s     S S Sr   c                	T    ^RI Hp VP                  V P                  4      R.,           # )r   )NAGFortranCompilerz-Wl,-shared)compilers.fortranr  get_nagfor_quietr   )r"   r  s   & r   r5  (NAGDynamicLinker.get_std_shared_lib_argsF  s!    :!224<<@M?RRr   r   r    )
r   r   r   r   r  r   r   rd  r5  r   r   r   r   r  r  #  s$     
B&S Sr   r  c                  R    ] tR tRtRtRtR R ltR R ltR R	 ltRR R llt	Rt
R
# )PGIDynamicLinkeriK  zPGI linker.pgic                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   PGIDynamicLinker.__annotate__Q  r7  r   c                	    . # r    r   r+   s   &r   rd  )PGIDynamicLinker.get_allow_undefined_argsQ  r^   r   c               0    V ^8  d   QhRRRRRRRRRRRR	/# r  r   )r   s   "r   r   r  T  r;  r   c                	    . # r    r   r  s   &&&&&&r   r   PGIDynamicLinker.get_soname_argsT  r  r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r  Y  s       r   c                	    \         P                  ! 4       '       d   R R.# \         P                  ! 4       '       d   R.# . # )z	-Bdynamicz	-Mmakedllr  )r   rB   is_linuxr+   s   &r   r5  (PGIDynamicLinker.get_std_shared_lib_argsY  s8      --  ;	r   Nc          
     ,    V ^8  d   QhRRRRRRRRRR	/# rv   r   )r   s   "r   r   r  a  s1      #  k &=@r   c                	:   V P                   P                  V P                  ,          P                  4       '       gQ   VP	                  4       pV Uu. uF)  pR \
        P                  P                  W4      ,           NK+  	  up\        4       3# . \        4       3# u upi )z-R)	r!   r  r   rB   ri  r  rG  r   r~   )r"   rw   rx   rF   ry   rv  r  s   &&&&&  r   r   !PGIDynamicLinker.build_rpath_argsa  s{     (()9)9:EEGG 557K@KL1TBGGLL666LceTTCE{ Ms   /Br   r    )r   r   r   r   r  r   rd  r  r5  r   r   r   r   r   r  r  K  s#    	B
 r   r  c                  F   a  ] tR tRtR V 3R lltR R ltR R ltRtV ;t# )	PGIStaticLinkeril  c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   PGIStaticLinker.__annotate__m  s       + r   c                	D   < \         SV `  W4       R V n        R.V n        R# )r  r  N)r  r#   r   r  rC  s   &&&r   r#   PGIStaticLinker.__init__m  s     &r   c               $    V ^8  d   QhRRRRRR/# rX   r   )r   s   "r   r   r  r  s!      ] T k r   c                	    V P                   # r    )r  r[   s   &&&r   r\   !PGIStaticLinker.get_std_link_argsr  s    }}r   c                    V ^8  d   QhRRRR/# rf   r   )r   s   "r   r   r  u  s      c k r   c                	    V.# r    r   rh   s   &&r   ri   PGIStaticLinker.get_output_argsu  r,  r   )r   r  )	r   r   r   r   r#   r\   ri   r   r  r  s   @r   r  r  l  s     
 r   r  c                    a  ] tR tRt$ Rt]P                  '       d   ]P                  t	R R lt
R. R. R. R. R	. R
R.RRR./tR]R&   RRRRRRR]P                  /R V 3R llltR R ltR R ltR V 3R lltR R  ltR! R" ltR# R$ ltR% R& ltR' R( ltR) R* ltR+ R, ltR- R. ltR/ R0 ltR1 R2 ltR3 R4 ltR5tV ;t# )6VisualStudioLikeLinkerMixini{  zCMixin class for dynamic linkers that act like Microsoft's link.exe.c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   (VisualStudioLikeLinkerMixin.__annotate__  r  r   c                	    R # r    r   r  s   &&r   r   )VisualStudioLikeLinkerMixin._apply_prefix  r  r   r   r   r   r   r   r   z/OPT:REFr   z/INCREMENTAL:NOr   r   r   r   directTr   x86r"  c               <    V ^8  d   QhRRRRRRRRR	RR
RRRRRRR/	# )r   r   r   r   r   r   r   r   r   r   r   r   r  r?   r   r"  r   r   )r   s   "r   r   r    sX     % % %+ %4%B[%)%7:% % 03% 	%r   c          	     	P   < \         S
V `  WW4WVR 7       Wn        Wpn        Wn        R# )r  N)r  r#   r   r  r"  )r"   r   r   r   r   r   r   r  r   r"  r  s   &&&&&&$$$$r   r#   $VisualStudioLikeLinkerMixin.__init__  s(    
 	{]$r   c                   V ^8  d   QhRR/# r>   r   )r   s   "r   r   r    s      T r   c                	$    V P                   '       * # r    )r  r+   s   &r   invoked_by_compiler/VisualStudioLikeLinkerMixin.invoked_by_compiler  s    ;;r   c                    V ^8  d   QhRRRR/# rg  r   )r   s   "r   r   r    s     V V# V+ Vr   c                	X    V P                  R V P                  ,           RV,           .4      # r  )r   r   rj  s   &&r   ri   +VisualStudioLikeLinkerMixin.get_output_args  s&    !!;#=w?S"TUUr   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r    s     6 6 6r   c                	P   < \         SV `  4       pV P                  R 4      V,           # )z/nologo)r  r   r   )r"   parentr  s   & r   r   +VisualStudioLikeLinkerMixin.get_always_args  s&    (*!!),v55r   c                    V ^8  d   QhRRRR/# rw  r   )r   s   "r   r   r    s     9 9s 9{ 9r   c                	2    V P                  R V,           4      # )z	/LIBPATH:r  rz  s   &&r   r{  +VisualStudioLikeLinkerMixin.get_search_args  s    !!+"788r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r    s     * * *r   c                	$    V P                  R 4      # )z/DLLr  r+   s   &r   r5  3VisualStudioLikeLinkerMixin.get_std_shared_lib_args  s    !!&))r   c                    V ^8  d   QhRRRR/# )r   r   r   r'   r   )r   s   "r   r   r    s      S S r   c                	    V# r    r   r   s   &&r   r(  .VisualStudioLikeLinkerMixin.get_debugfile_name  s    r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r    s     ] ]S ][ ]r   c                	T    V P                  R RV P                  V4      ,           .4      # )z/DEBUGz/PDB:)r   r(  r   s   &&r   r,  .VisualStudioLikeLinkerMixin.get_debugfile_args  s(    !!8Wt7N7Nz7Z-Z"[\\r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r    s      { { r   c                	    \         P                  ! V4      p. pV F*  pVP                  V P                  R V,           4      4       K,  	  V# )z/WHOLEARCHIVE:r   r0  rs  r   r"   r8   lr1  s   &&  r   r`  .VisualStudioLikeLinkerMixin.get_link_whole_for  sC    %AHHT''(81(<=> r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r    r7  r   c                	    . # r    r   r+   s   &r   rd  4VisualStudioLikeLinkerMixin.get_allow_undefined_args  r^   r   c                    V ^8  d   QhRRRR/# rq  r   )r   s   "r   r   r    s     $ $ $ $r   c                	    R V,           .# )z/DEF:r   rt  s   &&r   rs   3VisualStudioLikeLinkerMixin.gen_vs_module_defs_args  s     ("##r   c               0    V ^8  d   QhRRRRRRRRRRRR	/# r  r   )r   s   "r   r   r    r;  r   c                	    . # r    r   r  s   &&&&&&r   r  +VisualStudioLikeLinkerMixin.get_soname_args  r  r   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   r    s     = =c =k =r   c                4    V P                  RV,           .4      # )z+The command to generate the import library.z/IMPLIB:r  r  s   &&r   r  /VisualStudioLikeLinkerMixin.import_library_args  s    !!:
#:";<<r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r    s       r   c                	    V P                   # r    )r"  r+   s   &r   r   +VisualStudioLikeLinkerMixin.rsp_file_syntax  s    r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r    r   r   c                	    . # r    r   r+   s   &r   r?  (VisualStudioLikeLinkerMixin.get_pie_args  r^   r   )r  r   r"  ) r   r   r   r   r  r  r  r   r  r   r   r   r   r   r  r#   r  ri   r   r{  r5  r(  r,  r`  rd  rs   r  r  r   r?  r   r  r  s   @r   r	  r	  {  s    M#((S 	RRRR 	j\,
40 
%=N% !%% 6;% "/!3!3	% %V6 69*]$

= r   r	  c                     a  ] tR tRtRtRtRRRRRR	R
RRRR]P                  /R V 3R llltR V 3R llt	R R lt
R R ltRtV ;t# )MSVCDynamicLinkeri  zMicrosoft's Link.exe.linkr   Nr  r  r   r  r   r   r  Tr"  c               <    V ^8  d   QhRRRRRRRRR	R
RRRRRRRR/	# r   r   r   r   r   r   r   r   rz   r  r   r   r   r   r  r?   r"  r   r   )r   s   "r   r   MSVCDynamicLinker.__annotate__  ^     0 0K 06L 0)010 30 	0 14	0
 0
 3@0r   c               	H   < \         S
T `  T;'       g    R .WWSWgVV	R7	       R# )zlink.exer   r   r  r"  Nr  r"   r   r   r   r   r  r   r   r  r"  r  s   &&&&$$$$$$r   r#   MSVCDynamicLinker.__init__  s0     	00ZL#gW]$. 	 	0r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   rG    s     L L Lr   c                	N   < V P                  R .4      \        SV `	  4       ,           # )z/releaser   r  r   r"   r  s   &r   r   !MSVCDynamicLinker.get_always_args  s#    !!:,/%'2I2KKKr   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   rG         C CC CK Cr   c                	H    V P                  R VP                  4        2.4      # z/SUBSYSTEM:r   upperrV  s   &&r   r  (MSVCDynamicLinker.get_win_subsystem_args  #    !![#@"ABBr   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   rG           r   c                	    R .# z-WXr   r+   s   &r   r   MSVCDynamicLinker.fatal_warnings  rf  r   r   )r   r   r   r   r  r   r   r  r#   r   r  r  r   r  r  s   @r   rC  rC    st    	B0480 680 !&	0 7H	0
 !%0
 CPBTBT0 0L LC r   rC  c                     a  ] tR tRtRtRtRRRRRR	R
RRRR]P                  /R V 3R llltR V 3R llt	R R lt
R R ltR R ltRtV ;t# )ClangClDynamicLinkeri  zClang's lld-link.exe.zlld-linkr   Nr  r  r   r  r   r   r  Tr"  c               <    V ^8  d   QhRRRRRRRRR	R
RRRRRRRR/	# rF  r   )r   s   "r   r   !ClangClDynamicLinker.__annotate__  rH  r   c               	H   < \         S
T `  T;'       g    R .WWSWgVV	R7	       R# )zlld-link.exerJ  Nr  rK  s   &&&&$$$$$$r   r#   ClangClDynamicLinker.__init__  s1     	44^$4cgW]$. 	 	0r   c                    V ^8  d   QhRRRR/# rg  r   )r   s   "r   r   rb    s     3 3# 3+ 3r   c                	h   < V P                   f   V P                  RV 2.4      # \        SV `  V4      # )Nr  )r   r   r  ri   )r"   rh  r  s   &&r   ri   $ClangClDynamicLinker.get_output_args  s:     <<%%zl';&<==w&z22r   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   rb    rS  r   c                	H    V P                  R VP                  4        2.4      # rU  rV  rV  s   &&r   r  +ClangClDynamicLinker.get_win_subsystem_args  rY  r   c                    V ^8  d   QhRRRR/# rF  r   )r   s   "r   r   rb    s     ( (3 (; (r   c                	    R V,           .# )z/lldltocache:r   rJ  s   &&r   rK  +ClangClDynamicLinker.get_thinlto_cache_args  s    $&''r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   rb    r[  r   c                	    R .# r]  r   r+   s   &r   r  #ClangClDynamicLinker.fatal_warnings  rf  r   r   )r   r   r   r   r  r   r   r  r#   ri   r  rK  r  r   r  r  s   @r   r`  r`    sw    	B0480 680 !&	0 7H	0
 !%0
 CPBTBT0 03 3C( r   r`  c            
      Z   a  ] tR tRtRtRtRRRRRR	R
RRR/R V 3R llltR R ltRtV ;t	# )XilinkDynamicLinkeri  zIntel's Xilink.exe.xilinkr   Nr  r  r   r  r   r   r  Tc               8    V ^8  d   QhRRRRRRRRR	R
RRRRRR/# )r   r   r   r   r   r   r   r   rz   r  r   r   r   r   r  r?   r   )r   s   "r   r    XilinkDynamicLinker.__annotate__  s]     ] ]K ]6L ])]1] 3] 	] 14	]
 ]r   c          	     	0   < \         S	V `  R .WRW7R7       R# )z
xilink.exer  r  Nr  )
r"   r   r   r   r   r  r   r   r  r  s
   &&&&$$$$$r   r#   XilinkDynamicLinker.__init__  s     	,2{\r   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   ru    rS  r   c                	H    V P                  R VP                  4        2.4      # rU  rV  rV  s   &&r   r  *XilinkDynamicLinker.get_win_subsystem_args  rY  r   r   )
r   r   r   r   r  r   r#   r  r   r  r  s   @r   rr  rr    sY    	B]48] 68] !&	] 7H	]
 !%] ]C Cr   rr  c                      ] tR tRtRtRtR R ltR R ltR R	 ltR
 R lt	R R lt
R R ltRR R lltR R ltRtR# )SolarisDynamicLinkeri  z5Sys-V derived linker used on Solaris and OpenSolaris.z
ld.solarisc                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   !SolarisDynamicLinker.__annotate__#  r"  r   c                	r    V'       g   V# V P                  R 4      V,           V P                  R4      ,           # r$  r  r:   s   &&r   r`  'SolarisDynamicLinker.get_link_whole_for#  r&  r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r~  (  s      k r   c                	    \         P                  ! V P                  V P                  R 4      ,           4      w  rpW#,           P	                  R4       F  pRV9   g   K  RV9   d   RR.u #  . # 	  . # )z-zhelp
z-z typepier  ztype=pie)r   r  r   r   ro  )r"   pcr  stdelines   &    r   r?  !SolarisDynamicLinker.get_pie_args(  sj    !,,T\\D<N<Nx<X-XY$[''-DD D= *--	 .
 	r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r~  2  rP  r   c                	(    V P                  R R.4      # )r  ignorer  r+   s   &r   r\  &SolarisDynamicLinker.get_asneeded_args2  s    !!4"233r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r~  5  r9  r   c                	
    R R.# )r  defsr   r+   s   &r   r  &SolarisDynamicLinker.no_undefined_args5  r  r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r~  8  s        +  r   c                	
    R R.# )r  nodefsr   r+   s   &r   rd  -SolarisDynamicLinker.get_allow_undefined_args8  s    hr   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r~  ;  s     ( ( (r   c                	
    R R.# )r  zfatal-warningsr   r+   s   &r   r  #SolarisDynamicLinker.fatal_warnings;  s    &''r   Nc          
     ,    V ^8  d   QhRRRRRRRRRR	/# rv   r   )r   s   "r   r   r~  >  s8     M M# M Mk M&=M@Mr   c           	     	   VP                  4       pV'       g9   VP                  '       g'   VP                  '       g   V'       g   . \        4       3# \	        WQV4      p\
        P                  ! V Uu. uF#  p\        P                  P                  R V4      NK%  	  up4      p\        4       p	V F#  pV	P                  VP                  R4      4       K%  	  VP                  R8w  d^   VP                  VP                  4       VP                  P                  R4       F#  pV	P                  VP                  R4      4       K%  	  V'       d   VP                  V4       RP                  V4      p
\        V
P                  R4      4      p\        VP                  P                  R4      4      pW8  d+   RW,
          ,          pV
'       g   Tp
MV
R,           V,           p
V P                  RV
 24      V	3# u upi )r`  ra  r  rb  rc  rd  re  )ri  rj  rk  r~   r  r   rl  r  rG  r   rm  rn  ro  rp  rt  r   )r"   rw   rx   rF   ry   rv  rx  r  ry  rz  r{  r|  r}  r~  s   &&&&&         r   r   %SolarisDynamicLinker.build_rpath_args>  s    1136#7#7#7@R@R@R[f;)+(K''M](^M]i)CM](^_	-0UA $$QXXf%56 #MM&,,-''--c2$((&)9: 3[) #5<<01"6#7#7#>#>w#GH.1@AGg-""WUG#457KLL- )_s   1)G0c               0    V ^8  d   QhRRRRRRRRRRRR	/# r  r   )r   s   "r   r   r~  ]  sA     S Sc Ss SC S#&S9JS(Sr   c                	V    Vf   RMRV,           pV P                  RV V RV V 24      # rZ  r  )r"   r  r  r  r  r  r\  s   &&&&&& r   r  $SolarisDynamicLinker.get_soname_args]  s:      'S9_!!HVHZL&%"QRRr   r   r    )r   r   r   r   r  r   r`  r?  r\  r  rd  r  r   r  r   r   r   r   r|  r|    s;    ?	Bg
4 (M>S Sr   r|  c                     a  ] tR tRtRtRtR V 3R lltR R ltR R	 ltR
 R lt	R R lt
R R ltRR R lltR R ltRtV ;t# )AIXDynamicLinkerid  z Sys-V derived linker used on AIXzld.aixc                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   AIXDynamicLinker.__annotate__j  s     Y Y Yr   c                	P   < V P                  R R.4      \        SV `	  4       ,           # )z	-bnoipathz-bbigtocrO  rP  s   &r   r    AIXDynamicLinker.get_always_argsj  s&    !!;
";<uw?V?XXXr   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r  m  r  r   c                	&    V P                  R .4      # )z	-bernotokr  r+   s   &r   r  "AIXDynamicLinker.no_undefined_argsm  s    !!;-00r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r  p  s     . .+ .r   c                	&    V P                  R .4      # )z-berokr  r+   s   &r   rd  )AIXDynamicLinker.get_allow_undefined_argsp  s    !!8*--r   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   r  s  s        r   c                	V    \         P                  ! R RVP                  RR4      4      pV# )z$[.][a]([.]?([0-9]+))*([.]?([a-z]+))*z.az.so)resubreplacer  s   &&r   r  !AIXDynamicLinker.get_archive_names  s+     66@$HXHXY^`dHefr   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r  |  s      k r   c                	    . ROpV# )r  )
r  r  z-sz-vz$out$inz&&rmz-fr  r   )r"   commands   & r   r  -AIXDynamicLinker.get_command_to_archive_shlib|  s     Sr   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r    s      { { r   c                	    V# r    r   r:   s   &&r   r`  #AIXDynamicLinker.get_link_whole_for  s	     r   c          
     ,    V ^8  d   QhRRRRRRRRRR	/# rv   r   )r   s   "r   r   r    s8     O O# O Ok O&=O@Or   c                	   \         P                  ! 4       pVP                  R 8w  d   VP                  VP                  4       VP                  R 8w  d   VP                  VP                  4       VP                  4        F1  pVP                  \        P                  P                  W4      4       K3  	  V P                  P                  V P                  4      p\        V4      ^ 8X  d   VP                  RR.4       MAV F;  p\        P                  P                  V4      '       g   K*  VP                  V4       K=  	  V'       d   VP                  V4       V P                  RRP                  V4      ,           4      \!        4       3# )r  z/usr/libz/libz
-blibpath:rb  )r   rl  rj  rm  rk  ri  r  rG  r   r!   get_compiler_system_lib_dirsr   rt  rp  isdirr   r~   )r"   rw   rx   rF   ry   ry  r  sys_paths   &&&&&   r   r   !AIXDynamicLinker.build_rpath_args  s!    /7.A.A.C	2%MM&../#MM&,,-,,.AMM"'',,y45 / ##@@AQAQRx=A j&12 77==##MM!$  [)""<#((92E#EFNNr   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r    s      k r   c                	    R .# rL  r   r+   s   &r   r   AIXDynamicLinker.thread_flags  r  r   r   r    )r   r   r   r   r  r   r   r  rd  r  r  r`  r   r   r   r  r  s   @r   r  r  d  s@    *	BY Y1.O6 r   r  c                  b   a  ] tR tRtRtRtRR/R V 3R llltR R	 ltR
 R ltR R lt	Rt
V ;t# )OptlinkDynamicLinkeri  z(Digital Mars dynamic linker for windows.optlinkr   r   c               (    V ^8  d   QhRRRRRRRR/# r  r   )r   s   "r   r   !OptlinkDynamicLinker.__annotate__  s0     M M M+ MLb M Mr   c          	     	0   < \         SV `  WVR . VR7       R# r  r  r  s   &&&&$r   r#   OptlinkDynamicLinker.__init__  s     	{BGLr   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r    r7  r   c                	    . # r    r   r+   s   &r   rd  -OptlinkDynamicLinker.get_allow_undefined_args  r^   r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r    s      S [ r   c                	    . # r    r   r   s   &&r   r,  'OptlinkDynamicLinker.get_debugfile_args  r   r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r    r   r   c                	    . # r    r   r+   s   &r   r   $OptlinkDynamicLinker.get_always_args  r^   r   r   )r   r   r   r   r  r   r#   rd  r,  r   r   r  r  s   @r   r  r    s4    2	BM#4M M r   r  c                  p    ] tR tRtRtRt]R R l4       tR R ltR R	 lt	R
 R lt
R R ltR R ltRtR# )
CudaLinkeri  zCuda linker (nvlink)nvlinkc                   V ^8  d   QhRR/# r&   r   )r   s   "r   r   CudaLinker.__annotate__  s     7 73 7r   c                 	    R R.p  \         P                  ! V 4      w  rpTP                  4       P	                  R^R7      R,          #   \         d     R# i ; i)r  z	--versionr   V)maxsplit)r   r  r4  striprsplit)version_cmdr  outs      r   parse_versionCudaLinker.parse_version  s\    -	% ++K8IAA yy{!!#!2266  	%$	%s   A AAc                   V ^8  d   QhRR/# r>   r   )r   s   "r   r   r    s       r   c                	    R # rI  r   r+   s   &r   r  CudaLinker.get_accepts_rsp  s    r   c                   V ^8  d   QhRR/# r&   r   )r   s   "r   r   r    s     * * *r   c                	&    ^RI Hp VP                  # )r   )CudaCompiler)compilers.cudar  LINKER_PREFIX)r"   r  s   & r   r  CudaLinker.get_lib_prefix  s     	2)))r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r    s     & & &r   c                	    R .# )z--warning-as-errorr   r+   s   &r   r  CudaLinker.fatal_warnings  s    $%%r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r    r7  r   c                	    . # r    r   r+   s   &r   rd  #CudaLinker.get_allow_undefined_args  r^   r   c               0    V ^8  d   QhRRRRRRRRRRRR	/# r  r   )r   s   "r   r   r    r;  r   c                	    . # r    r   r  s   &&&&&&r   r  CudaLinker.get_soname_args  r  r   r   N)r   r   r   r   r  r   staticmethodr  r  r  r  rd  r  r   r   r   r   r  r    s:    	B7 7*"& r   r  c                     a  ] tR tRtRR/R V 3R llltR R ltR R	 ltR
 R ltR R ltR R lt	R R lt
R R ltR R ltRtV ;t# )MetrowerksLinkeri  r   r   c               (    V ^8  d   QhRRRRRRRR/# r  r   )r   s   "r   r   MetrowerksLinker.__annotate__  r  r   c          	     	0   < \         SV `  WVR . VR7       R# r  r  r  s   &&&&$r   r#   MetrowerksLinker.__init__  r  r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r    s       r   c                	
    R R.# )z-werrorr   r+   s   &r   r  MetrowerksLinker.fatal_warnings  s    gr   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r    r7  r   c                	    . # r    r   r+   s   &r   rd  )MetrowerksLinker.get_allow_undefined_args  r^   r   c                   V ^8  d   QhRR/# r>   r   )r   s   "r   r   r     r  r   c                	    R # r  r   r+   s   &r   r   MetrowerksLinker.get_accepts_rsp   r   r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r    rl   r   c                	    . # r    r   r+   s   &r   r   'MetrowerksLinker.get_linker_always_args  r^   r   c                    V ^8  d   QhRRRR/# rg  r   )r   s   "r   r   r    r  r   c                	
    R V.# rv  r   rj  s   &&r   ri    MetrowerksLinker.get_output_args  r  r   c                    V ^8  d   QhRRRR/# rw  r   )r   s   "r   r   r  	       2 2s 2{ 2r   c                	2    V P                  R V,           4      # r  r  rz  s   &&r   r{   MetrowerksLinker.get_search_args	      !!$.11r   c                   V ^8  d   QhRR/# r>   r   )r   s   "r   r   r    s      T r   c                	    R # rI  r   r+   s   &r   r  $MetrowerksLinker.invoked_by_compiler  rK  r   c               0    V ^8  d   QhRRRRRRRRRRRR	/# r  r   )r   s   "r   r   r    r  r   c                	2    \        V P                   R 24      hr  r  r  s   &&&&&&r   r   MetrowerksLinker.get_soname_args  r  r   r   )r   r   r   r   r#   r  rd  r  r   ri   r{  r  r  r   r  r  s   @r   r  r    sD    *#4* *
"2N Nr   r  c                      ] tR tRtRtRtR# )MetrowerksLinkerARMi  r  r   Nr  r   r   r   r  r    r  r   r  c                      ] tR tRtRtRtR# )MetrowerksLinkerEmbeddedPowerPCi  r  r   Nr  r   r   r   r  r    r  r   r  c                     a  ] tR tRt$ RtR. RR.RR.RR.R	R
.RR
.RR./tR]R&   RR/R V 3R llltR R ltR R lt	R R lt
R R ltR R ltR R ltR  R! ltR" R# ltR$ R% ltR& R' ltR(tV ;t# ))TaskingLinkeri  r  r   r   z-O0r   r  r   r   z-O2r   r   z-Osr   r   r   r   c               (    V ^8  d   QhRRRRRRRR/# r  r   )r   s   "r   r   TaskingLinker.__annotate__)  r  r   c          	     	0   < \         SV `  WVR . VR7       R# r  r  r  s   &&&&$r   r#   TaskingLinker.__init__)  r  r   c                   V ^8  d   QhRR/# r>   r   )r   s   "r   r   r  .  r  r   c                	    R # r  r   r+   s   &r   r  TaskingLinker.get_accepts_rsp.  r   r   c                   V ^8  d   QhRR/# r&   r   )r   s   "r   r   r  1  r  r   c                	    R # r  r   r+   s   &r   r  TaskingLinker.get_lib_prefix1  r  r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r  4  r7  r   c                	    . # r    r   r+   s   &r   rd  &TaskingLinker.get_allow_undefined_args4  r^   r   c                   V ^8  d   QhRR/# r>   r   )r   s   "r   r   r  7  s      T r   c                	    R # r  r   r+   s   &r   r  !TaskingLinker.invoked_by_compiler7  r   r   c                    V ^8  d   QhRRRR/# rw  r   )r   s   "r   r   r  :  r  r   c                	2    V P                  R V,           4      # r  r  rz  s   &&r   r{  TaskingLinker.get_search_args:  r  r   c                    V ^8  d   QhRRRR/# rg  r   )r   s   "r   r   r  =  r  r   c                	
    R V.# rv  r   rj  s   &&r   ri   TaskingLinker.get_output_args=  r  r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r  @  s      k r   c                	    R .# )z
--mil-linkr   r+   s   &r   rC  TaskingLinker.get_lto_args@  r=  r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r  C  r  r   c                	"    \         P                  # r    r  r+   s   &r   r   TaskingLinker.rsp_file_syntaxC  r  r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r  F  s     : : :r   c                $    V P                  R4      # )r  z--warnings-as-errorsr  r+   s   &r   r  TaskingLinker.fatal_warningsF  s    !!"899r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r  J  s      { { r   c                	    \         P                  ! V4      p. pV F*  pVP                  V P                  R V,           4      4       K,  	  V# )z-Wl--whole-archive=r,  r-  s   &&  r   r`   TaskingLinker.get_link_whole_forJ  sC    %AHHT''(=(ABC r   r   )r   r   r   r   r   r   r   r#   r  r  rd  r  r{  ri   rC  r   r  r`  r   r  r  s   @r   r  r    s    	B 	eWeWeWeWeWeW40 *#4* *
2"%: r   r  c                  V    ] tR tRtRtR R ltR R ltR R ltR	 R
 ltR R lt	Rt
R# )OS2DynamicLinkeriR  zld and emxomfldc                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   OS2DynamicLinker.__annotate__U  r7  r   c                	    . # r    r   r+   s   &r   rd  )OS2DynamicLinker.get_allow_undefined_argsU  r^   r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r@  X  s      k r   c                	    R .# )z	-lpthreadr   r+   s   &r   r   OS2DynamicLinker.thread_flagsX  s
    }r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r@  [  s       r   c                	    R .# )z-Zdllr   r+   s   &r   r5  (OS2DynamicLinker.get_std_shared_lib_args[  r/  r   c               0    V ^8  d   QhRRRRRRRRRRRR	/# r  r   )r   s   "r   r   r@  ^  r;  r   c                	    . # r    r   r  s   &&&&&&r   r   OS2DynamicLinker.get_soname_args^  r  r   c                   V ^8  d   QhRR/# rO   r   )r   s   "r   r   r@  c  s       r   c                	    R .# )z-Zomfr   r+   s   &r   r    OS2DynamicLinker.get_always_argsc  r/  r   r   N)r   r   r   r   r  rd  r   r5  r  r   r   r   r   r   r>  r>  R  s#    
 r   r>  c                      ] tR tRtRtRtR# )OS2AoutDynamicLinkerig  zld.os2r   Nr  r   r   r   rP  rP  g  r  r   rP  c                      ] tR tRtRtRtR# )OS2OmfDynamicLinkerik  emxomfldr   Nr  r   r   r   rR  rR  k  r  r   rR  )_
__future__r   r  r  typingr  r  baser   r   r  r   r   r   arglistr
   r  r!   r   r   buildr   	compilersr   r   ABCMetar   StaticLinkerBaseDynamicLinkerBaseobjectr  r  r  r  r  r  r!  r<  rU  rh  rk  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r?  rg  rv  r  r  r  r  r  r  r  r  r  NvidiaHPC_DynamicLinkerr  NvidiaHPC_StaticLinkerr	  rC  r`  rr  r|  r  r  r  r  r  r  r  r>  rP  rR  r   r   r   <module>r`     s  
 # 
 	  	 -  ; "???)(#$Zj ZjzQckk Qh ???#%+11("- "B7/ 774l 7 !|\  !FH , !l !4, ,   8 
\ 
|  ( ( !, !
!\ ! 6 ,B , &X 	1^/ ,G( 1 G(Tl0- l^. 
402I= 4
5+ 5* 
3( 3<@13JM <@~* 13JM 4   F* *Z( &%M %N#m #L  . *+, + 1 02I= %S. %SP. < + 
l 
 ) Q"3 Qh3] 46 DC5} C$DS2M DSN@. @F6 .2(- 2jN} ND* &6 3M 3l. *+ * r   