
    -Phr#                        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	m
Z
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 ddlmZ ddlmZ ddlmZ ddlmZ  G d de          ZdS )    )annotationsN   )mlog)mesonlib)EnvironmentExceptionversion_compareLibType)	OptionKey   )CompileCheckModeCompiler)CompilerArgs)MachineInfo)Environment)MachineChoice)
Dependency)BuildTargetc                      e Zd ZdZdZdM fdZdNdZdOdZdPdZdQdZ	dRdZ
dSdZdRdZdRdZdRdZdRdZdRdZdTd ZdRd!ZdUd#ZdVd&ZdWd+Zej        d,fdXd4ZdYd5ZdYd6ZdZd[d<Zej        fd\dBZd7d7d7dCdDd]dLZ xZ S )^ValaCompilervalavalacexelistT.List[str]versionstrfor_machiner   is_crossboolinfo'MachineInfo'c                    t                                          g |||||           || _        t          d          h| _        d| _        t          | j        d          | _        d S )N)r   
b_coloroutFz>=0.37.1)super__init__r   r
   base_options
force_linkr   _has_color_support)selfr   r   r   r   r   	__class__s         Y/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mesonbuild/compilers/vala.pyr$   zValaCompiler.__init__   sc    Wg{D8TTT&|445"1$,
"K"K    returnc                    dS )NF r(   s    r*   needs_static_linkerz ValaCompiler.needs_static_linker$   s    ur+   optimization_levelc                    g S Nr.   )r(   r1   s     r*   get_optimization_argsz"ValaCompiler.get_optimization_args'       	r+   is_debugc                    |rdgng S )Nz--debugr.   )r(   r6   s     r*   get_debug_argszValaCompiler.get_debug_args*   s    &.	{{B.r+   
outputnamec                    g S r3   r.   )r(   r9   s     r*   get_output_argszValaCompiler.get_output_args-   r5   r+   c                    g S r3   r.   r/   s    r*   get_compile_only_argsz"ValaCompiler.get_compile_only_args0   r5   r+   moder   c                    g }|t           j        u r	| j        r|S ||                                 z  }|t           j        u r||                                 z  }n%|t           j        u r||                                 z  }|S r3   )r   LINKr&   get_always_argsCOMPILEr=   
PREPROCESSget_preprocess_only_args)r(   r>   argss      r*   get_compiler_args_for_modez'ValaCompiler.get_compiler_args_for_mode3   s    #(((T_(K$$&&&#+++D..000DD%000D11333Dr+   c                    g S r3   r.   r/   s    r*   rD   z%ValaCompiler.get_preprocess_only_args>   r5   r+   c                    g S r3   r.   r/   s    r*   get_pic_argszValaCompiler.get_pic_argsA   r5   r+   c                    g S r3   r.   r/   s    r*   get_pie_argszValaCompiler.get_pie_argsD   r5   r+   c                    g S r3   r.   r/   s    r*   get_pie_link_argszValaCompiler.get_pie_link_argsG   r5   r+   c                    dgS )Nz-Cr.   r/   s    r*   rA   zValaCompiler.get_always_argsJ   s	    vr+   levelc                    g S r3   r.   )r(   rO   s     r*   get_warn_argszValaCompiler.get_warn_argsM   r5   r+   c                    dgS )Nz--fatal-warningsr.   r/   s    r*   get_werror_argszValaCompiler.get_werror_argsP   s    "##r+   	colortypec                     | j         rd|z   gS g S )Nz--color=)r'   )r(   rT   s     r*   get_colorout_argszValaCompiler.get_colorout_argsS   s     " 	,*++	r+   parameter_list	build_dirc           
     <   t          |          D ]\  }}|d d         dk    rS|d d         t          j                            t          j                            ||dd                              z   ||<   |d d         dk    rS|d d         t          j                            t          j                            ||dd                              z   ||<   |d d         dk    rS|d d         t          j                            t          j                            ||dd                              z   ||<   |d d         dk    rS|d d         t          j                            t          j                            ||dd                              z   ||<   |S )	N	   z	--girdir=
   z
--vapidir=   z--includedir=   z--metadatadir=)	enumerateospathnormpathjoin)r(   rW   rX   idxis        r*   &compute_parameters_with_absolute_pathsz3ValaCompiler.compute_parameters_with_absolute_pathsX   s   // 	a 	aFC!u##&'ebg.>.>rw||IWXYZY[Y[W\?]?].^.^&^s#"v%%&'frw/?/?YXYZ\Z]Z]X^@_@_/`/`&`s#"v((&'frw/?/?YXYZ\Z]Z]X^@_@_/`/`&`s#"v)))&'frw/?/?YXYZ\Z]Z]X^@_@_/`/`&`s#r+   work_direnvironment'Environment'Nonec                   d}g }||j                             | j        | j                  z  }| j        r||                                 z  }n(||j                             | j        | j                  z  }|                     ||j         |t          j	                  5 }|j
        dk    r'd|                                 d}t          |          	 d d d            d S # 1 swxY w Y   d S )Nz#class MesonSanityCheck : Object { }
extra_argsr>   r   zVala compiler z cannot compile programs)coredataget_external_argsr   languager   r=   get_external_link_argscached_compiler   rB   
returncodename_stringr   )r(   rf   rg   codeextra_flagspmsgs          r*   sanity_checkzValaCompiler.sanity_checkf   s9   4#%{+==d>NPTP]^^^= 	h455777KK;/FFtGWY]YfgggK  {';ZjZr ss 	0wx|q  Ut'7'7'9'9UUU*3/// !	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s   3CC!$C!Tlibnameenv
extra_dirslibtyper	   lib_prefix_warningT.Optional[T.List[str]]c                *   |rt          |t                    r|g}|sd}g }||j                            | j        | j                  z  }d|g}||z  }|                     ||j        |t          j                  5 }	|	j	        dk    r|cd d d            S 	 d d d            n# 1 swxY w Y   |D ]I}
t          j                            |
|dz             }t          j                            |          r|gc S Jt          j        d|d|d           d S )	Nz#class MesonFindLibrary : Object { }z--pkgrk   r   z.vapiz	Searched z and z wasn't found)
isinstancer   rm   rn   r   ro   rq   r   rB   rr   r_   r`   rb   isfiler   debug)r(   ry   rz   r{   r|   r}   rt   rE   	vapi_argsrv   dvapis               r*   find_libraryzValaCompiler.find_librarys   s    	&*Z55 	&$J  	%8D "DCL2243CT]SSSD '*IID$$T3<DO_Og$hh %lm<1$$$% % % % % % % %$% % % % % % % % % % % % % % %  	 	A7<<7W#455Dw~~d## v
KzKK'KKKLLLts   :B!!B%(B%c                    g S r3   r.   r(   rz   s     r*   thread_flagszValaCompiler.thread_flags   r5   r+   c                    g S r3   r.   r   s     r*   thread_link_flagszValaCompiler.thread_link_flags   r5   r+   Ntarget'BuildTarget'
subprojectT.Optional[str]c                    g S r3   r.   )r(   r   rz   r   s       r*   get_option_link_argsz!ValaCompiler.get_option_link_args   r5   r+   rl   UT.Union[None, CompilerArgs, T.List[str], T.Callable[[CompileCheckMode], T.List[str]]]dependencies T.Optional[T.List['Dependency']]r   c                   t          |          r ||          }|g }|g }|                     |                     |                    }|D ]}|t          j        u r| j        r|                                }|r|d         }|t          |                    d          |                    d                    dz   d          }	|	|	                                k    s|d|	                                z   gz  }n=|d|	z   gz  }n3|d|	                                z   gz  }n||                                z  }|t          j        u r| j        s||
                                z  }|t          j        u r)||j                            | j        | j                  z  }n6|t          j        u r(||j                            | j        | j                  z  }||z  }|S )Nr   /\r   z--pkg=z--Xcc=-l)callablecompiler_argsget_compiler_check_argsr   r@   r&   get_compile_argsmaxrfindget_nameget_link_argsrB   rm   rn   r   ro   rp   )
r(   rz   rl   r   r>   rE   r   arv   ns
             r*   build_wrapper_argszValaCompiler.build_wrapper_args   s    J 	*#D))JJL !!$">">t"D"DEE 	. 	.A',,,,&&(( 8!A#aggcllAGGDMM::1<==>A

,,AJJLL!8 99A.Z!**,,677DD**,,,',,, .AOO---D#+++CL2243CT]SSSDD%***CL778H$-XXXD
r+   F)compilerrl   r   disable_cachert   'mesonlib.FileOrString'r   T.Optional['Compiler']UT.Union[None, T.List[str], CompilerArgs, T.Callable[[CompileCheckMode], T.List[str]]]r   T.Tuple[bool, bool]c          	     v   d| _         |r|                    |||d          5 }t          j                            |j                  }|                     ||||t          j        d          }	d| _         |	cd d d            S # 1 swxY w Y   |                     ||||t          j        |          }	d| _         |	S )NT)r   want_output)rl   r   r>   r   F)	r&   _build_wrapperr   Filefrom_absolute_fileoutput_namecompilesr   r@   )
r(   rt   rz   r   rl   r   r   robjfileresults
             r*   linkszValaCompiler.links   s   
  	((s[_(`` de"-::1=IIw
4@GWG\lp ' r r"'                tSZ,8?O?Tdq  s ss   ABB	B)
r   r   r   r   r   r   r   r   r   r    )r,   r   )r1   r   r,   r   )r6   r   r,   r   )r9   r   r,   r   )r,   r   )r>   r   r,   r   )rO   r   r,   r   )rT   r   r,   r   )rW   r   rX   r   r,   r   )rf   r   rg   rh   r,   ri   )ry   r   rz   rh   r{   r   r|   r	   r}   r   r,   r~   )rz   rh   r,   r   r3   )r   r   rz   rh   r   r   r,   r   )
rz   rh   rl   r   r   r   r>   r   r,   r   )rt   r   rz   rh   r   r   rl   r   r   r   r   r   r,   r   )!__name__
__module____qualname__ro   idr$   r0   r4   r8   r;   r=   rF   rD   rI   rK   rM   rA   rQ   rS   rV   re   rx   r	   PREFER_SHAREDr   r   r   r   r   rB   r   r   __classcell__)r)   s   @r*   r   r      sA       H	BL L L L L L      / / / /      	 	 	 	                  $ $ $ $   
   0 0 0 0 )0(=Z^    .           5E4L* * * * *Z 26rv?C$)	         r+   r   )
__future__r   os.pathr_   typingT r   r   r   r   r	   optionsr
   	compilersr   r   TYPE_CHECKINGarglistr   	envconfigr   rg   r   r   r   r   buildr   r   r.   r+   r*   <module>r      sN   # " " " " "                  E E E E E E E E E E       1 1 1 1 1 1 1 1? $&&&&&&''''''))))))(((((())))))######x x x x x8 x x x x xr+   