
_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   )CPPCompiler)ClangCompilerGnuCompilerc               @   s4   e  Z d  Z d d   Z d d   Z d d   Z d S)ObjCPPCompilerc             C   s&   d |  _  t j |  | | | |  d  S)Nobjcpp)languager   __init__)selfexelistversionis_crossexe_wrap r   W/mnt/raid6/a/bak/reczko/tools/protein/utils/meson-0.42.1/mesonbuild/compilers/objcpp.pyr      s    	zObjCPPCompiler.__init__c             C   s   d S)NzObjective-C++r   )r   r   r   r   get_display_language   s    z#ObjCPPCompiler.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sanitycheckobjcpp.mmZsanitycheckobjcpplinkFwzM#import<stdio.h>
class MyClass;int main(int argc, char **argv) { return 0; }
z-or   z,ObjC++ compiler %s can not compile programs.z;Executables 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ObjCPPCompiler.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)GnuObjCPPCompilerNc             C   sn   t  j |  | | | |  t j |  | |  d d d g } i | d 6| d g d 6| d d g d 6|  _ d  S)	Nz-Wallz-Winvalid-pchz-Wnon-virtual-dtor1z-Wextra2z
-Wpedantic3)r   r   r   	warn_args)r   r   r   gcc_typer   exe_wrapperdefinesdefault_warn_argsr   r   r   r   7   s    
zGnuObjCPPCompiler.__init__)r+   r,   r-   r   r   r   r   r   r.   6   s   r.   c               @   s   e  Z d  Z d d d  Z d S)ClangObjCPPCompilerNc             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   A   s    zClangObjCPPCompiler.__init__)r+   r,   r-   r   r   r   r   r   r7   @   s   r7   )os.pathr   r   mesonlibr   cppr   	compilersr   r   r   r.   r7   r   r   r   r   <module>   s    
