
    -Ph                        d dl mZ 	 d dlZd dlZd dlZd dlZd dlZddlm	Z	 ddlm
Z
 ddlmZ ddlmZ ej        rdd	lmZ dd
lmZ  G d de	          ZdS )    )annotationsN   )GnuLikeCompilergnu_optimization_args   )
Popen_safe	OptionKey)Environment)BuildTargetc                       e Zd ZdZd fdZdd dZd!dZ ej        d          d"d            Z	d#dZ
d$dZd%dZdd&dZd'dZ xZS )(ElbrusCompilerlccreturnNonec                    t                                                       d dD             | _        dg}g ||dgz   |ddgz   |ddgz   d| _        d S )Nc                ,    h | ]}t          |          S  r
   ).0os     b/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mesonbuild/compilers/mixins/elbrus.py	<setcomp>z*ElbrusCompiler.__init__.<locals>.<setcomp>    s0      A  A  AaYq\\  A  A  A    )b_pgo
b_coverageb_ndebugb_staticpicb_lundef
b_asneededz-Wallz-Wextraz
-Wpedantic)0123
everything)super__init__base_options	warn_args)selfdefault_warn_args	__class__s     r   r'   zElbrusCompiler.__init__   s     A  A3  A  A  A$I!00I;>0I|3LL(9Y<U(U	W Wr   Nenv'Environment'	elf_classT.Optional[int]T.List[str]c                ~   t           j                                        }d|d<   t          |                     d          dgz   |          d         }|                    d          D ]T}|                    d	          r=|                    d
d          d         }d |                    d          D             c S Ug S )NCLC_ALLFccache--print-search-dirsr-   r   
z
libraries: c                    g | ]@}t           j                            |          !t           j                            |          AS r   )ospathexistsrealpathr   ps     r   
<listcomp>z3ElbrusCompiler.get_library_dirs.<locals>.<listcomp>2   s<    \\\"'..YZJ[J[\((++\\\r   :r<   environcopyr	   get_exelistsplit
startswith)r*   r-   r/   os_envstdolinelibstrs          r   get_library_dirszElbrusCompiler.get_library_dirs*   s    ""x$**%*88<Q;RRX^___`abJJt$$ 	] 	]D|,, ]C++A.\\V\\#5F5F\\\\\\] 	r   c                ~   t           j                                        }d|d<   t          |                     d          dgz   |          d         }|                    d          D ]T}|                    d	          r=|                    d
d          d         }d |                    d          D             c S Ug S )Nr3   r4   Fr5   r7   r8   r   r9   z	programs:r:   c                L    g | ]!}t           j                            |          "S r   )r<   r=   r?   r@   s     r   rB   z3ElbrusCompiler.get_program_dirs.<locals>.<listcomp>=   s(    GGG((++GGGr   rC   rD   )r*   r-   rJ   rK   rL   rM   s         r   get_program_dirszElbrusCompiler.get_program_dirs5   s    ""x$**%*88<Q;RRX^___`abJJt$$ 	H 	HD{++ HC++A.GGV\\#5F5FGGGGGGH 	r   )maxsizec                D   t           j                                        }d|d<   t          j        |                     d          g dz   |t          j        t          j        t          j                  }|j        	                                
                    dd	          }g }|                    d
          D ]f}|                                                    d          r=|                    t          j        ddt          j        dd|                               g|S )Nr3   r4   Fr5   )z-xcz-Ez-v-)r-   stdinstdoutstderrzutf-8replace)errorsr9   z--sys_includez\s*\\$ z^\s*--sys_include\s*)r<   rE   rF   
subprocessPopenrG   DEVNULLPIPErW   readdecoderH   lstriprI   appendresub)r*   rJ   rA   rW   includesrL   s         r   get_default_include_dirsz'ElbrusCompiler.get_default_include_dirs@   s   ""xT--U-;;>V>V>VV\bjtj|  FP  FU  ^h  ^m  n  n  n''	'BB "LL&& 	b 	bD{{}}''88 by"bf=TVXZ^6_6_ ` `aaar   optimization_levelstrc                    t           |         S Nr   )r*   rg   s     r   get_optimization_argsz$ElbrusCompiler.get_optimization_argsL   s    $%788r   prelink_nameobj_list!T.Tuple[T.List[str], T.List[str]]c                    |gdddd|g|z   fS )Nz-rz-nodefaultlibsz-nostartfilesz-or   )r*   rl   rm   s      r   get_prelink_argszElbrusCompiler.get_prelink_argsO   s!    ~&6|\_ggggr   c                    dS )Npchr   )r*   s    r   get_pch_suffixzElbrusCompiler.get_pch_suffixR   s    ur   targetr   r   
subprojectT.Optional[str]c                ,   g }t          | j         d|| j                  }|r|j                            ||          }n|j        j                            |          }t          |t                    sJ |dk    r|	                    d|z              |S )N_std)ru   machinenonez-std=)
r   languagefor_machinecoredataget_option_for_targetoptstoreget_value_for
isinstancerh   rb   )r*   rt   r-   ru   argskeystds          r   get_option_std_argsz"ElbrusCompiler.get_option_std_argsV   s    4=...:tO_``` 	;,44VSAACC,'55c::C#s#####&==KK#&&&r   c                    dgS )Nz-fopenmpr   )r*   r-   s     r   openmp_flagszElbrusCompiler.openmp_flagsb   s
    |r   )r   r   rj   )r-   r.   r/   r0   r   r1   )r-   r.   r   r1   )r   r1   )rg   rh   r   r1   )rl   rh   rm   r1   r   rn   )r   rh   )rt   r   r-   r   ru   rv   r   r1   )r-   r   r   r1   )__name__
__module____qualname__idr'   rN   rQ   	functools	lru_cacherf   rk   rp   rs   r   r   __classcell__)r,   s   @r   r   r      s        
BW W W W W W	 	 	 	 		 	 	 	 Y&&&	 	 	 '&	9 9 9 9h h h h   
 
 
 
 
       r   r   )
__future__r   r   r<   typingTr[   rc   gnur   r   mesonlibr	   optionsr   TYPE_CHECKINGenvironmentr   buildr   r   r   r   r   <module>r      s   # " " " " " 6     				         				             & & & & & & " " " " " "            ? %******$$$$$$K K K K K_ K K K K Kr   