
    -Ph                        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 ddlmZ neZ G d	 d
e          ZdS )    )annotationsN   )EnvironmentExceptionMesonException
is_windows)Environment)Compiler)BuildTarget)OptionStorec                      e Zd ZdZdDdZdddd	dEdZdFdZdGdZdHdZdGdZ	dIdZ
dJdKdZdLd!ZdMd#ZdGd$ZdNd'ZdOd(ZdGd)ZdGd*ZdGd+ZdGd,ZdGd-ZdGd.ZdPd5ZdQd=ZdGd>ZdRd@ZdSdAZdTdBZdTdCZdS )U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T.List[str]returnc                    g S N )selfr   s     d/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mesonbuild/compilers/mixins/islinker.pysanitizer_link_argsz.BasicLinkerIsCompilerMixin.sanitizer_link_args)       	    r   defaultN)threadsmodethinlto_cache_dirr   intr   strr   T.Optional[str]c                   g S r   r   )r   r   r   r   s       r   get_lto_link_argsz,BasicLinkerIsCompilerMixin.get_lto_link_args,   s    	r   boolc                    t                      S r   )r   r   s    r   can_linker_accept_rspz0BasicLinkerIsCompilerMixin.can_linker_accept_rsp0   s    ||r   c                4    | j                                         S r   )exelistcopyr$   s    r   get_linker_exelistz-BasicLinkerIsCompilerMixin.get_linker_exelist3   s    |  """r   
outputnamec                    g S r   r   )r   r*   s     r   get_linker_output_argsz1BasicLinkerIsCompilerMixin.get_linker_output_args6   r   r   c                    g S r   r   r$   s    r   get_linker_always_argsz1BasicLinkerIsCompilerMixin.get_linker_always_args9   r   r   c                    dS )N r   r$   s    r   get_linker_lib_prefixz0BasicLinkerIsCompilerMixin.get_linker_lib_prefix<   s    rr   targetr
   envr   
subprojectc                    g S r   r   )r   r2   r3   r4   s       r   get_option_link_argsz/BasicLinkerIsCompilerMixin.get_option_link_args?   r   r   args'Environment'T.Tuple[bool, bool]c                    dS )N)FFr   )r   r7   r3   s      r   has_multi_link_argsz.BasicLinkerIsCompilerMixin.has_multi_link_argsB   s    |r   
targetfilec                    g S r   r   r   r<   s     r   get_link_debugfile_argsz2BasicLinkerIsCompilerMixin.get_link_debugfile_argsE   r   r   c                    g S r   r   r$   s    r   get_std_shared_lib_link_argsz7BasicLinkerIsCompilerMixin.get_std_shared_lib_link_argsH   r   r   optionsr   c                *    |                                  S r   )rA   )r   rB   s     r   get_std_shared_module_argsz5BasicLinkerIsCompilerMixin.get_std_shared_module_argsK   s    00222r   c                2    t          d| j         d          )NLinker z does not support link_wholer   id)r   r7   s     r   get_link_whole_forz-BasicLinkerIsCompilerMixin.get_link_whole_forN   s    "#RTW#R#R#RSSSr   c                2    t          d| j         d          )NrF   z! does not support allow undefinedrG   r$   s    r   get_allow_undefined_link_argsz8BasicLinkerIsCompilerMixin.get_allow_undefined_link_argsQ   s    "#WTW#W#W#WXXXr   c                2    t          d| j         d          )NrF   z1 does not support position-independent executablerG   r$   s    r   get_pie_link_argsz,BasicLinkerIsCompilerMixin.get_pie_link_argsT   s    "#gTW#g#g#ghhhr   c                    g S r   r   r$   s    r   get_undefined_link_argsz2BasicLinkerIsCompilerMixin.get_undefined_link_argsW   r   r   c                    g S r   r   r$   s    r   get_coverage_link_argsz1BasicLinkerIsCompilerMixin.get_coverage_link_argsZ   r   r   c                    g S r   r   r$   s    r   no_undefined_link_argsz1BasicLinkerIsCompilerMixin.no_undefined_link_args]   r   r   c                     t          d          )Nz+This linker doesn't support bitcode bundlesr   r$   s    r   bitcode_argsz'BasicLinkerIsCompilerMixin.bitcode_args`   s    JKKKr   prefix
shlib_namesuffix	soversiondarwin_versionsT.Tuple[str, str]c                     t          d          )Nz'This linker doesn't support soname argsrU   )r   r3   rW   rX   rY   rZ   r[   s          r   get_soname_argsz*BasicLinkerIsCompilerMixin.get_soname_argsc   s     FGGGr   	build_dirfrom_dirrpath_pathsT.Tuple[str, ...]build_rpathinstall_rpath"T.Tuple[T.List[str], T.Set[bytes]]c                "    g t                      fS r   )set)r   r3   r_   r`   ra   rc   rd   s          r   build_rpath_argsz+BasicLinkerIsCompilerMixin.build_rpath_argsh   s     CEE{r   c                    g S r   r   r$   s    r   get_asneeded_argsz,BasicLinkerIsCompilerMixin.get_asneeded_argsm   r   r   optimization_levelc                    g S r   r   )r   rk   s     r   get_optimization_link_argsz5BasicLinkerIsCompilerMixin.get_optimization_link_argsp   r   r   c                    d S r   r   r>   s     r   get_link_debugfile_namez2BasicLinkerIsCompilerMixin.get_link_debugfile_names   s    tr   c                    g S r   r   r   r3   s     r   thread_flagsz'BasicLinkerIsCompilerMixin.thread_flagsv   r   r   c                    g S r   r   rq   s     r   thread_link_flagsz,BasicLinkerIsCompilerMixin.thread_link_flagsy   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   )r2   r
   r3   r   r4   r   r   r   )r7   r   r3   r8   r   r9   )r<   r   r   r   )rB   r   r   r   )r7   r   r   r   )r3   r8   rW   r   rX   r   rY   r   rZ   r   r[   r\   r   r   )r3   r8   r_   r   r`   r   ra   rb   rc   r   rd   r   r   re   )rk   r   r   r   )r<   r   r   r   )r3   r8   r   r   )__name__
__module____qualname____doc__r   r!   r%   r)   r,   r.   r1   r6   r;   r?   rA   rD   rI   rK   rM   rO   rQ   rS   rV   r^   rh   rj   rm   ro   rr   rt   r   r   r   r   r       sS            34?C        # # # #                      3 3 3 3T T T TY Y Y Yi i i i         L L L LH H H H
   
                 r   r   )
__future__r   typingTmesonlibr   r   r   TYPE_CHECKINGenvironmentr   compilers.compilersr	   buildr
   rB   r   objectr   r   r   r   <module>r      s   
 # " " " " "     H H H H H H H H H H? 
******//////$$$$$$&&&&&&& HZ Z Z Z Z Z Z Z Z Zr   