
_rY                 @   s   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	 Gd d   d e  Z
 Gd	 d
   d
 e	 e
  Z Gd d   d e e  Z d S)    N   )EnvironmentException   )	CCompiler)ClangCompilerGnuCompilerc               @   s4   e  Z d  Z d d   Z d d   Z d d   Z d S)ObjCCompilerc             C   s&   d |  _  t j |  | | | |  d  S)Nobjc)languager   __init__)selfexelistversionis_crossexe_wrap r   U/mnt/raid6/a/bak/reczko/tools/protein/utils/meson-0.42.1/mesonbuild/compilers/objc.pyr      s    	zObjCCompiler.__init__c             C   s   d S)NzObjective-Cr   )r   r   r   r   get_display_language   s    z!ObjCCompiler.get_display_languagec       	      C   s'  t  j j | d  } t  j j | d  } |  j | d d } |  j r[ | |  j   7} n  t | d   } | j d  Wd  QXt j	 |  j
 | | d | g  } | j   | j d k r t d	 |  j     n  |  j r d  St j	 |  } | j   | j d k r#t d
 |  j     n  d  S)Nzsanitycheckobjc.mZsanitycheckobjclinkFwz?#import<stdio.h>
int main(int argc, char **argv) { return 0; }
z-or   z*ObjC compiler %s can not compile programs.z9Executables created by ObjC compiler %s are not runnable.)ospathjoinget_cross_extra_flagsr   get_compile_only_argsopenwrite
subprocessPopenr   wait
returncoder   name_string)	r   work_direnvironmentsource_namebinary_nameextra_flagsofilepcper   r   r   sanity_check   s"    	#
	
zObjCCompiler.sanity_checkN)__name__
__module____qualname__r   r   r*   r   r   r   r   r      s   r   c               @   s"   e  Z d  Z d d d d  Z d S)GnuObjCCompilerNc             C   sk   t  j |  | | | |  t j |  | |  d d g } i | d 6| d g d 6| d d g d 6|  _ d  S)Nz-Wallz-Winvalid-pch1z-Wextra2z
-Wpedantic3)r   r   r   	warn_args)r   r   r   gcc_typer   exe_wrapperdefinesdefault_warn_argsr   r   r   r   6   s    
zGnuObjCCompiler.__init__)r+   r,   r-   r   r   r   r   r   r.   5   s   r.   c               @   s   e  Z d  Z d d d  Z d S)ClangObjCCompilerNc             C   sH   t  j |  | | | | |  t j |  |  d d d d d g |  _ d  S)Nb_pchb_ltob_pgo
b_sanitize
b_coverage)r.   r   r   base_options)r   r   r   cltyper   r4   r   r   r   r   @   s    zClangObjCCompiler.__init__)r+   r,   r-   r   r   r   r   r   r7   ?   s   r7   )os.pathr   r   mesonlibr   cr   	compilersr   r   r   r.   r7   r   r   r   r   <module>   s   
