o
    uJAfi  ã                   @  sr   d dl m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 G d
d„ de
ƒZG dd„ deƒZdS )é    )ÚannotationsNé   )Úmesonlibé   )ÚCompileCheckModeé   )ÚGnuLikeCompiler)ÚVisualStudioLikeCompilerc                      sÚ   e Zd ZU dZg ddgddgg g g dœZded< g dgdgdgd	gd
gdgdœZded< dZd0‡ fdd„Zd1dd„Z	d2dd„Z
d3dd„Zd4dd„Zd5‡ fd"d#„Zd4d$d%„Zd4d&d'„Zd6d)d*„Zd7d,d-„Zd8d.d/„Z‡  ZS )9ÚIntelGnuLikeCompilerzƒ
    Tested on linux for ICC 14.0.3, 15.0.6, 16.0.4, 17.0.1, 19.0
    debugoptimized: -g -O2
    release: -O3
    minsize: -O2
    z-gz
-traceback©ÚplainÚdebugÚdebugoptimizedÚreleaseÚminsizeÚcustomúT.Dict[str, T.List[str]]Ú
BUILD_ARGSz-O0z-O1z-O2z-O3z-Os©r   Ú0ÚgÚ1Ú2Ú3ÚsÚ
OPTIM_ARGSZintelÚreturnÚNonec                   s$   t ƒ  ¡  dd„ dD ƒ| _d| _d S )Nc                 S  s   h | ]}t  |¡’qS © )r   Ú	OptionKey)Ú.0Úor   r   úF/usr/lib/python3.10/site-packages/mesonbuild/compilers/mixins/intel.pyÚ	<setcomp>P   s    z0IntelGnuLikeCompiler.__init__.<locals>.<setcomp>)Úb_pchÚb_lundefÚ
b_asneededÚb_pgoÚ
b_coverageÚb_ndebugÚb_staticpicÚb_pieÚnone)ÚsuperÚ__init__Úbase_optionsÚlang_header©Úself©Ú	__class__r   r"   r.   I   s   

zIntelGnuLikeCompiler.__init__Ústrc                 C  s   dS )NZpchir   r1   r   r   r"   Úget_pch_suffixU   s   z#IntelGnuLikeCompiler.get_pch_suffixÚpch_dirÚheaderúT.List[str]c              	   C  s    ddt j |¡d| jd|ddg	S )Nz-pchz-pch_dirz-xz-includer,   )ÚosÚpathÚjoinr0   )r2   r7   r8   r   r   r"   Úget_pch_use_argsX   s   ÿz%IntelGnuLikeCompiler.get_pch_use_argsÚnamec                 C  s   t j |¡d |  ¡  S )NÚ.)r:   r;   Úbasenamer6   ©r2   r>   r   r   r"   Úget_pch_name\   s   z!IntelGnuLikeCompiler.get_pch_namec                 C  s   t  | jd¡r
dgS dgS )Nz>=15.0.0z-qopenmpz-openmp)r   Úversion_compareÚversionr1   r   r   r"   Úopenmp_flags_   s   z!IntelGnuLikeCompiler.openmp_flagsÚmoder   c                   s   g d¢}t ƒ  |¡| S )N)ú-diag-errorZ10006rG   Z10148rG   Z10155rG   Z10156rG   Z10157rG   Z10158)r-   Úget_compiler_check_args)r2   rF   Ú
extra_argsr3   r   r"   rH   e   s   z,IntelGnuLikeCompiler.get_compiler_check_argsc                 C  ó   dgS )Nz-prof-gen=threadsafer   r1   r   r   r"   Úget_profile_generate_argsp   ó   z.IntelGnuLikeCompiler.get_profile_generate_argsc                 C  rJ   )Nz	-prof-user   r1   r   r   r"   Úget_profile_use_argss   rL   z)IntelGnuLikeCompiler.get_profile_use_argsÚ	buildtypec                 C  ó
   | j | S ©N©r   ©r2   rN   r   r   r"   Úget_buildtype_argsv   ó   
z'IntelGnuLikeCompiler.get_buildtype_argsÚoptimization_levelc                 C  rO   rP   ©r   ©r2   rU   r   r   r"   Úget_optimization_argsy   rT   z*IntelGnuLikeCompiler.get_optimization_argsc                 C  s   ddgS )NrG   Z1292r   rA   r   r   r"   Ú!get_has_func_attribute_extra_args|   s   z6IntelGnuLikeCompiler.get_has_func_attribute_extra_args)r   r   )r   r5   )r7   r5   r8   r5   r   r9   )r>   r5   r   r5   ©r   r9   ©rF   r   r   r9   ©rN   r5   r   r9   ©rU   r5   r   r9   )r>   r5   r   r9   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ú__annotations__r   Úidr.   r6   r=   rB   rE   rH   rK   rM   rS   rX   rY   Ú__classcell__r   r   r3   r"   r
   -   s:   
 ú
ù	







r
   c                      s¤   e Zd ZU dZg ddgddgg g g dœZded< g dgdgdgd	gd
gdgdœZded< dZd$‡ f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 )*ÚIntelVisualStudioLikeCompilerz4Abstractions for ICL, the Intel compiler on Windows.z/Ziz
/tracebackr   r   r   z/Odz/O1z/O2z/O3z/Osr   r   zintel-clrF   r   r   r9   c                   s(   t ƒ  |¡}|tjur| g d¢¡ |S )N)z/Qdiag-error:10006z/Qdiag-error:10148z/Qdiag-error:10155z/Qdiag-error:10156z/Qdiag-error:10157z/Qdiag-error:10158)r-   rH   r   ÚLINKÚextend)r2   rF   Úargsr3   r   r"   rH   ™   s   
z5IntelVisualStudioLikeCompiler.get_compiler_check_argsúT.Optional[str]c                 C  s>   t  dg¡\}}}t  |¡ d¡^}}}t|| ƒ}|  |¡S )Nzcl.exer?   )r   Ú
Popen_safeÚsearch_versionÚsplitÚintÚ_calculate_toolset_version)r2   Ú_ÚerrÚv1Úv2rD   r   r   r"   Úget_toolset_version¦   s   
z1IntelVisualStudioLikeCompiler.get_toolset_versionc                 C  rJ   )Nz/Qopenmpr   r1   r   r   r"   rE   ¯   rL   z*IntelVisualStudioLikeCompiler.openmp_flagsrN   r5   c                 C  rO   rP   rQ   rR   r   r   r"   rS   ²   rT   z0IntelVisualStudioLikeCompiler.get_buildtype_argsrU   c                 C  rO   rP   rV   rW   r   r   r"   rX   µ   rT   z3IntelVisualStudioLikeCompiler.get_optimization_argsr8   c                 C  s   t j |¡S rP   )r:   r;   r@   )r2   r8   r   r   r"   Úget_pch_base_name¸   s   z/IntelVisualStudioLikeCompiler.get_pch_base_namer[   )r   ri   rZ   r\   r]   )r8   r5   r   r5   )r^   r_   r`   ra   r   rb   r   rc   rH   rs   rE   rS   rX   rt   rd   r   r   r3   r"   re   €   s0   
 ú
ù


	

re   )Ú
__future__r   r:   ÚtypingÚTÚ r   Ú	compilersr   Úgnur   Úvisualstudior	   r
   re   r   r   r   r"   Ú<module>   s   S