o
    uJAf)                     @  s   d dl m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mZ ejr:ddlmZ dd	lmZ G d
d deZdS )    )annotationsN   )GnuLikeCompilergnu_optimization_args   )
Popen_safe	OptionKey)Environment)KeyedOptionDictTypec                      st   e Zd ZdZd" fddZ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d&d d!Z  ZS )+ElbrusCompilerlccreturnNonec                   sL   t    dd dD | _dg}g ||dg |ddg |ddg d| _d S )Nc                 S  s   h | ]}t |qS  )r	   ).0or   r   G/usr/lib/python3.10/site-packages/mesonbuild/compilers/mixins/elbrus.py	<setcomp>(   s    z*ElbrusCompiler.__init__.<locals>.<setcomp>)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__r   r   r!   &   s   


zElbrusCompiler.__init__Nenv'Environment'	elf_classT.Optional[int]T.List[str]c                 C  sv   t j }d|d< t| jdddg |dd }|dD ]}|d	r8|d
dd }dd |dD   S qg S )NCLC_ALLFccache--print-search-dirsr(   r   
z
libraries: c                 S  s$   g | ]}t j|rt j|qS r   )ospathexistsrealpathr   pr   r   r   
<listcomp>:   s   $ z3ElbrusCompiler.get_library_dirs.<locals>.<listcomp>:r5   environcopyr   get_exelistsplit
startswith)r$   r(   r*   os_envstdolinelibstrr   r   r   get_library_dirs2      

zElbrusCompiler.get_library_dirsc                 C  sv   t j }d|d< t| jdddg |dd }|dD ]}|d	r8|d
dd }dd |dD   S qg S )Nr-   r.   Fr/   r1   r2   r   r3   z	programs:r4   c                 S  s   g | ]}t j|qS r   )r5   r6   r8   r9   r   r   r   r;   E   s    z3ElbrusCompiler.get_program_dirs.<locals>.<listcomp>r<   r=   )r$   r(   rC   rD   rE   rF   r   r   r   get_program_dirs=   rH   zElbrusCompiler.get_program_dirsc                 C  s   t j }d|d< tj| jddg d |tjtjtjd}|j	 j
ddd	}g }|d
D ]}| drG|tddtdd| q/|S )Nr-   r.   Fr/   )z-xcz-Ez-v-)r(   stdinstdoutstderrzutf-8replace)errorsr3   z--sys_includez\s*\\$ z^\s*--sys_include\s*)r5   r>   r?   
subprocessPopenr@   DEVNULLPIPErM   readdecoderA   lstriprB   appendresub)r$   rC   r:   rM   includesrE   r   r   r   get_default_include_dirsH   s   
*z'ElbrusCompiler.get_default_include_dirsoptimization_levelstrc                 C  s   t | S Nr   )r$   r]   r   r   r   get_optimization_argsS   s   z$ElbrusCompiler.get_optimization_argsprelink_nameobj_listc                 C  s   dddd|g| S )Nz-rz-nodefaultlibsz-nostartfilesz-or   )r$   ra   rb   r   r   r   get_prelink_argsV   s   zElbrusCompiler.get_prelink_argsc                 C  s   dS )Npchr   r$   r   r   r   get_pch_suffixY   s   zElbrusCompiler.get_pch_suffixoptions'KeyedOptionDictType'c                 C  s8   g }|t d| j| jd }|jdkr|d|j  |S )Nstd)langmachinenonez-std=)r	   languagefor_machinevaluerX   )r$   rg   argsri   r   r   r   get_option_compile_args]   s
   
z&ElbrusCompiler.get_option_compile_argsc                 C  s   dgS )Nz-fopenmpr   re   r   r   r   openmp_flagsd   s   zElbrusCompiler.openmp_flags)r   r   r_   )r(   r)   r*   r+   r   r,   )r(   r)   r   r,   )r   r,   )r]   r^   r   r,   )ra   r^   rb   r,   r   r,   )r   r^   )rg   rh   r   r,   )__name__
__module____qualname__idr!   rG   rI   r\   r`   rc   rf   rq   rr   __classcell__r   r   r&   r   r       s    





r   )
__future__r   r5   typingTrQ   rY   gnur   r   mesonlibr   r	   TYPE_CHECKINGenvironmentr
   coredatar   r   r   r   r   r   <module>   s   