o
    e                     @  sn   d dl mZ 	 d dlZddlmZmZmZ ejr+ddl	m
Z
 ddlmZ ddlmZ neZG dd	 d	eZdS )
    )annotationsN   )EnvironmentExceptionMesonException
is_windows)KeyedOptionDictType)Environment)Compilerc                   @  s  e Zd ZdZdZddZdd	d
dd[ddZd\ddZd]ddZd^ddZd]ddZ	d_ddZ
d`d!d"Zdad'd(Zdbd*d+Zd]d,d-Zd`d.d/Zdcd0d1Zd]d2d3Zd]d4d5Zd]d6d7Zd]d8d9Zd]d:d;Zd]d<d=ZdddDdEZdedMdNZd]dOdPZdfdRdSZdgdTdUZdhdVdWZdhdXdYZd
S )iBasicLinkerIsCompilerMixinzProvides a baseline of methods that a linker would implement.

    In every case this provides a "no" or "empty" answer. If a compiler
    implements any of these it needs a different mixin or to override that
    functionality itself.
    valuestrreturnT.List[str]c                 C     g S N )selfr   r   r   I/usr/lib/python3.10/site-packages/mesonbuild/compilers/mixins/islinker.pysanitizer_link_args1      z.BasicLinkerIsCompilerMixin.sanitizer_link_argsr   defaultN)threadsmodethinlto_cache_dirr   intr   r   T.Optional[str]c                C  r   r   r   )r   r   r   r   r   r   r   get_lto_link_args4   s   z,BasicLinkerIsCompilerMixin.get_lto_link_argsboolc                 C  s   t  S r   )r   r   r   r   r   can_linker_accept_rsp8   s   z0BasicLinkerIsCompilerMixin.can_linker_accept_rspc                 C  s
   | j  S r   )Zexelistcopyr   r   r   r   get_linker_exelist;   s   
z-BasicLinkerIsCompilerMixin.get_linker_exelist
outputnamec                 C  r   r   r   )r   r"   r   r   r   get_linker_output_args>   r   z1BasicLinkerIsCompilerMixin.get_linker_output_argsc                 C  r   r   r   r   r   r   r   get_linker_always_argsA   r   z1BasicLinkerIsCompilerMixin.get_linker_always_argsc                 C     dS )N r   r   r   r   r   get_linker_lib_prefixD   r   z0BasicLinkerIsCompilerMixin.get_linker_lib_prefixoptions'KeyedOptionDictType'c                 C  r   r   r   r   r(   r   r   r   get_option_link_argsG   r   z/BasicLinkerIsCompilerMixin.get_option_link_argsargsenv'Environment'T.Tuple[bool, bool]c                 C  r%   )N)FFr   )r   r,   r-   r   r   r   has_multi_link_argsJ   r   z.BasicLinkerIsCompilerMixin.has_multi_link_args
targetfilec                 C  r   r   r   r   r1   r   r   r   get_link_debugfile_argsM   r   z2BasicLinkerIsCompilerMixin.get_link_debugfile_argsc                 C  r   r   r   r   r   r   r   get_std_shared_lib_link_argsP   r   z7BasicLinkerIsCompilerMixin.get_std_shared_lib_link_argsc                 C  s   |   S r   )r4   r*   r   r   r   get_std_shared_module_argsS      z5BasicLinkerIsCompilerMixin.get_std_shared_module_argsc                 C     t d| j d)NLinker z does not support link_wholer   id)r   r,   r   r   r   get_link_whole_forV      z-BasicLinkerIsCompilerMixin.get_link_whole_forc                 C  r7   )Nr8   z! does not support allow undefinedr9   r   r   r   r   get_allow_undefined_link_argsY   r<   z8BasicLinkerIsCompilerMixin.get_allow_undefined_link_argsc                 C  r7   )Nr8   z1 does not support position-independent executabler9   r   r   r   r   get_pie_link_args\   r<   z,BasicLinkerIsCompilerMixin.get_pie_link_argsc                 C  r   r   r   r   r   r   r   get_undefined_link_args_   r   z2BasicLinkerIsCompilerMixin.get_undefined_link_argsc                 C  r   r   r   r   r   r   r   get_coverage_link_argsb   r   z1BasicLinkerIsCompilerMixin.get_coverage_link_argsc                 C  r   r   r   r   r   r   r   no_undefined_link_argse   r   z1BasicLinkerIsCompilerMixin.no_undefined_link_argsc                 C     t d)Nz+This linker doesn't support bitcode bundlesr   r   r   r   r   bitcode_argsh   r6   z'BasicLinkerIsCompilerMixin.bitcode_argsprefix
shlib_namesuffix	soversiondarwin_versionsT.Tuple[str, str]c                 C  rB   )Nz'This linker doesn't support soname argsrC   )r   r-   rE   rF   rG   rH   rI   r   r   r   get_soname_argsk   s   z*BasicLinkerIsCompilerMixin.get_soname_args	build_dirfrom_dirrpath_pathsT.Tuple[str, ...]build_rpathinstall_rpath"T.Tuple[T.List[str], T.Set[bytes]]c                 C  s
   g t  fS r   )set)r   r-   rL   rM   rN   rP   rQ   r   r   r   build_rpath_argsp   s   
z+BasicLinkerIsCompilerMixin.build_rpath_argsc                 C  r   r   r   r   r   r   r   get_asneeded_argsu   r   z,BasicLinkerIsCompilerMixin.get_asneeded_args	buildtypec                 C  r   r   r   )r   rV   r   r   r   get_buildtype_linker_argsx   r   z4BasicLinkerIsCompilerMixin.get_buildtype_linker_argsc                 C  s   d S r   r   r2   r   r   r   get_link_debugfile_name{   r   z2BasicLinkerIsCompilerMixin.get_link_debugfile_namec                 C  r   r   r   r   r-   r   r   r   thread_flags~   r   z'BasicLinkerIsCompilerMixin.thread_flagsc                 C  r   r   r   rY   r   r   r   thread_link_flags   r   z,BasicLinkerIsCompilerMixin.thread_link_flags)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/   )r1   r   r   r   )r,   r   r   r   )r-   r.   rE   r   rF   r   rG   r   rH   r   rI   rJ   r   r   )r-   r.   rL   r   rM   r   rN   rO   rP   r   rQ   r   r   rR   )rV   r   r   r   )r1   r   r   r   )r-   r.   r   r   )__name__
__module____qualname____doc__r   r   r   r!   r#   r$   r'   r+   r0   r3   r4   r5   r;   r=   r>   r?   r@   rA   rD   rK   rT   rU   rW   rX   rZ   r[   r   r   r   r   r
   (   s<    























r
   )
__future__r   typingTZmesonlibr   r   r   TYPE_CHECKINGZcoredatar   environmentr   Zcompilers.compilersr	   objectr
   r   r   r   r   <module>   s   