
    eW                       d dl m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 dd	lmZmZmZ dd
l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  G d dee	      Z G d dee      Z G d dee      Z G d de      Zy)    )annotationsN   )coredata)	OptionKey   )Compiler)CLikeCompiler)GnuCompilergnu_common_warning_argsgnu_objc_warning_args)ClangCompiler)ExternalProgram)MachineInfo)Environment)DynamicLinker)MachineChoicec                  J    e Zd ZdZ	 	 d	 	 	 	 	 	 	 	 	 ddZedd       Zd	dZy)
ObjCCompilerobjcNc
                l    t        j                  | |||||||	|	       t        j                  | |       y )N)is_crossfull_versionlinker)r   __init__r	   )
selfccacheexelistversionfor_machiner   infoexe_wrapr   r   s
             ;/usr/lib/python3/dist-packages/mesonbuild/compilers/objc.pyr   zObjCCompiler.__init__&   s8    
 	$+t#+,!'	) 	tX.    c                      y)NzObjective-C r%   r#   r"   get_display_languagez!ObjCCompiler.get_display_language0   s    r#   c                .    d}| j                  ||d|      S )Nz/#import<stddef.h>
int main(void) { return 0; }
zsanitycheckobjc.m)_sanity_check_impl)r   work_direnvironmentcodes       r"   sanity_checkzObjCCompiler.sanity_check4   s     B&&x>QSWXXr#   )NN)r   T.List[str]r   r-   r   strr   r   r   boolr    'MachineInfo'r!   T.Optional['ExternalProgram']r   T.Optional['DynamicLinker']r   T.Optional[str])returnr.   )r)   r.   r*   z'Environment'r4   None)__name__
__module____qualname__languager   staticmethodr&   r,   r%   r#   r"   r   r   "   sZ    H
 8<15	//'4/8/ 5/  /	/  Yr#   r   c                  4    e Zd Z	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 ddZy)GnuObjCCompilerNc                   t         j                  | ||||||||	|

       t        j                  | |       ddg}g ||dgz   |ddgz   |ddgz   | j                  t              z   | j                  t
              z   d| _        y )Nr   r   -Wall-Winvalid-pch-Wextra
-Wpedantic0123
everything)r   r   r
   supported_warn_argsr   r   	warn_argsr   r   r   r   r   r   r    exe_wrapperdefinesr   r   default_warn_argss               r"   r   zGnuObjCCompiler.__init__:   s     	dFGWk8"K\ 	 	[T7+$o6!00I;>0I|3LL):i=V)V)-)A)ABY)Z*[)-)A)ABW)X*Y	[r#   NNNNr   r-   r   r-   r   r.   r   r   r   r/   r    r0   rL   r1   rM   zT.Optional[T.Dict[str, str]]r   r2   r   r3   )r6   r7   r8   r   r%   r#   r"   r<   r<   9   sS     ?C9=7;15[['4[;[ 7[ 5	[
  /[r#   r<   c                  P     e Zd Z	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 ddZd fdZddZ xZS )ClangObjCCompilerc                    t         j                  | ||||||||	|

       t        j                  | |       ddg}g ||dgz   |ddgz   dgd| _        y )Nr>   r?   r@   rA   rB   z-WeverythingrC   )r   r   r   rJ   rK   s               r"   r   zClangObjCCompiler.__init__N   st     	dFGWk8"K\ 	 	[tW-$o6!00I;>0I|3LL)7(8	:r#   c                    t         |          }|j                  t        d| j                  d      t        j                  dg dd      i       |S )NstdcmachinelangzC language standard to use)	nonec89c99c11c17gnu89gnu99gnu11gnu17rZ   )superget_optionsupdater   r   r   UserComboOption)r   opts	__class__s     r"   rd   zClangObjCCompiler.get_options^   sQ    w"$eT%5%5C@(BZBZ,XC
 	 r#   c                    g }|t        d| j                  d         }|j                  dk7  r|j                  d|j                  z          |S )NrU   rV   rW   rZ   z-std=)r   r   valueappend)r   optionsargsrU   s       r"   get_option_compile_argsz)ClangObjCCompiler.get_option_compile_argsi   sF    it/?/?cJK99KK#))+,r#   rO   rP   )r4   z%'coredata.MutableKeyedOptionDictType')rl   z'coredata.KeyedOptionDictType'r4   r-   )r6   r7   r8   r   rd   rn   __classcell__)rh   s   @r"   rR   rR   M   sW     ?C9=7;15::'4:;: 7: 5	:
  /: 	r#   rR   c                      e Zd ZdZy)AppleClangObjCCompilerz?Handle the differences between Apple's clang and vanilla clang.N)r6   r7   r8   __doc__r%   r#   r"   rq   rq   p   s    Ir#   rq   ) 
__future__r   typingT r   mesonlibr   	compilersr   mixins.cliker	   
mixins.gnur
   r   r   mixins.clangr   TYPE_CHECKINGprogramsr   	envconfigr   r*   r   linkers.linkersr   r   r   r<   rR   rq   r%   r#   r"   <module>r      sv    #      ' S S '??*')/(Y=( Y.[k< [(!| !FJ. Jr#   